We have made the first release of our tool that syncs data from your Biometric Attendance System to your ERPNext instance.
This system needs to be set up separately from your ERPNext instance; Hopefully, you find the README and the Wiki adequate.
Contributions welcome
The release has two attached assets which consist of Windows binaries for 32 and 64 bit respectively. For *nix systems we recommend running directly from source*.
Trust you’re cool. I believe the LAN part refers to the local connection between your biometric device and your machine (computer). I would expect that once the tool is installed on the relevant machine, it should sync the logs to your remote ERPNext instance - regardless of where it’s hosted
In any case, I’ll also be looking forward to a confirmation from @gavindsouza on this
@olamide_shodunke, what @wale says is accurate. The tool needs to be able to communicate with your biometric device via TCP/IP. So, it is usually the case that it needs to run on the same LAN Network as the biometric device.
To sync these fetched logs to your ERPNext instance it uses API access, so if you are able to access your ERPNext instance on your browser, the tool too can access the APIs from a similar location/network.
I am also strucked here. That windows service is started and existing record are synced from device to my ERPNEXT instance(Previous month record from device for the particular date which is mention in shift type and attendance status absent too) but employee check-in is not getting created . Live punch record also not created.Kindly help to solve this issues.
@EnSeal In shift doctype i put value for Process Attendance After and Last Sync of Checkin. So from the device it takes the attendance from date to Last Sync of Checkin date.
Eg: Attendance From Date : 01.05.2020
Last Sync of Checkin : 30.05.2020
For mentioned date for all employees attdendance is marked as absent without creating Employee checkin
2020-06-29 17:51:12,336 ERROR Error during ERPNext API Call. 31498 1593430026.0 test_1 None Traceback (most recent call last):
File "/home/yumsum/frappe-bench/apps/frappe/frappe/app.py", line 62, in application
response = frappe.api.handle()
File "/home/yumsum/frappe-bench/apps/frappe/frappe/api.py", line 55, in handle
return frappe.handler.handle()
File "/home/yumsum/frappe-bench/apps/frappe/frappe/handler.py", line 22, in handle
data = execute_cmd(cmd)
File "/home/yumsum/frappe-bench/apps/frappe/frappe/handler.py", line 61, in execute_cmd
return frappe.call(method, **frappe.form_dict)
File "/home/yumsum/frappe-bench/apps/frappe/frappe/__init__.py", line 1054, in call
return fn(*args, **newargs)
File "/home/yumsum/frappe-bench/apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py", line 70, in add_log_based_on_employee_field
doc.insert()
File "/home/yumsum/frappe-bench/apps/frappe/frappe/model/document.py", line 231, in insert
self._validate()
File "/home/yumsum/frappe-bench/apps/frappe/frappe/model/document.py", line 461, in _validate
self._validate_mandatory()
File "/home/yumsum/frappe-bench/apps/frappe/frappe/model/document.py", line 747, in _validate_mandatory
name=self.name))
frappe.exceptions.MandatoryError: [Employee Checkin, EMP-CKIN-06-2020-000001]: log_type
2020-06-29 17:51:12,337 ERROR exception when calling pull_process_and_push_data function for device{"device_id": "test_1", "ip": "192.168.13.101", "punch_direction": null, "clear_from_device_on_fetch": false}
Traceback (most recent call last):
File "erpnext_sync.py", line 51, in main
pull_process_and_push_data(device, device_attendance_logs)
File "erpnext_sync.py", line 129, in pull_process_and_push_data
raise Exception('API Call to ERPNext Failed.')
Exception: API Call to ERPNext Failed.
Please any one help ! ERPNext: v12.6.0 (version-12) Frappe Framework: v12.4.1 (version-12)
After almost exactly a year to the day, I have finally been able to setup the biometric attendance using this sync tool! this is really easy to use. However, I noticed that to close the tool (for windows) you need to stop the service and when you do that you lose the configuration already set. How do you persist the existing configuration on the tool so all that is needed is to restart the service once the tool is launched?
I am also having an issue where the checkin records created have wrong dates:
@gavindsouza Hi. One quick question about this tool. How do you handle an employee who works in multiple locations on same shift at different days and must checkin and checkout in all locations. However, employee is registered with different IDs in each location’s biometric device?
Currently each employee is only allowed to register one biometric ID so how does one capture checkin/checkout data for such employee?
@flexy2ky@JayRam Yeah, you can also handle multiple biometric devices. But The tool needs to be able to communicate with your biometric device via TCP/IP. we also have a roadmap task to refactor the code. will look for enhancements and will fix the bugs regarding this. There is file local_config.py which stores the data entered through UI. the local config file looks like…
Thanks for the tip. I think this just might work. I’ll have so sync the registration ID for each employee to maintain the same data. Both locations use the same biometric device so this shouldn’t be much of a problem (I hope).
No it wasn’t fixed. I got a different model (K40) instead of the MA300 and it worked without any of the errors faced. Even though the MA300 outputs the right date in the software I just could not get it to export same to ERPNext via the biometric tool so that device has been abandoned.
Update: I am able to handle multiple biometric devices checkin using the same ID for employees as suggested by @JayRam and it’s working seamlessly. However, I am having issues pulling data from Zkteco WL10. It connects and pings device successfully but always returns zero records and there’s no error in the log to show why zero records are returned. I tried both the windows gui sync tool and installed the tool via command line and getting the same result.
Also, I am having this error when I run the windows service:
I am Having essl X990 Model and i am trying to use the biometric sync tool
but there are list of challenges I am facing can somebody pls guide with stepwise method of how to use this tool , its quiet on urgent basis.
Stuff I ahve already done:
1: Created employee added biometric id as same as provided in biometric
2: Created Auto attendance marking Shift
3:Connected Biometric Machine in Local network to script running PC
4: Added information in the GUI
5: logs are also getting created but getting following errors as well
File "C:\Users\Amit K Mehta\Downloads\biometric-attendance-sync-tool-master\erpnext_sync.py", line 51, in main
pull_process_and_push_data(device, device_attendance_logs)
File "C:\Users\Amit K Mehta\Downloads\biometric-attendance-sync-tool-master\erpnext_sync.py", line 117, in pull_process_and_push_data
erpnext_status_code, erpnext_message = send_to_erpnext(device_attendance_log['user_id'], device_attendance_log['timestamp'], device['device_id'], punch_direction)
File "C:\Users\Amit K Mehta\Downloads\biometric-attendance-sync-tool-master\erpnext_sync.py", line 181, in send_to_erpnext
response = requests.request("POST", url, headers=headers, data=data)
File "C:\Users\Amit K Mehta\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\Amit K Mehta\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\sessions.py", line 528, in request
prep = self.prepare_request(req)
File "C:\Users\Amit K Mehta\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\sessions.py", line 456, in prepare_request
p.prepare(
File "C:\Users\Amit K Mehta\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\models.py", line 316, in prepare
self.prepare_url(url, params)
File "C:\Users\Amit K Mehta\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\models.py", line 390, in prepare_url
raise MissingSchema(error)
The Biometric Device IP you are using in the local_config.py file, is it right? Double-check that as it may be the reason. Also, if you can, please share content from your local_config.py file here.