I got the solution! You need to setup your ZKTeco device (My device is ZKteco F18) for Log Type status issue.
Prerequisite:
- Create Shift Type and check the Enable Auto Attendance option.
- Assign Default Shift Type for all Employees.
- Assign Biometric/RF tag ID number (like 1, 2, 3 or 1001, 1002, 1003…) in application(
Employee > Attendance and Leave Details > Attendance Device ID (Biometric/RF tag ID)
) and also for the device as well for all employees.
ZKTeco device Setup Guide for Punch States Settings:
Step 1: In the initial interface, press [M/OK]. If you are an Administrator of this device, punch your ID Card or fingerprint to access the device menu.
Step 2: Go Personalize > Punch State Options from Menu
Step 3: First enable the Punch State Required by ON/OFF button (After enabling this button, you will see Log Type In/Out status in your ERPNext application). Then you need to choose an option from Punch State Mode according to your access control setup.
Step 4: Go Anti-passback Setup option from the Access Control menu. Then select Anti-passback Direction and Device Status options as per your need.
In my case, I am using ERPNext v14 in Oracle VM VirtualBox. I have a ZKTeco F18 device as a master unit for Check-In and ZKTeco FR1200 device as a slave unit for Check-Out. It is a Master-Slave configuration. According to my Access Control setup, I am using Normal Fixed Mode for Punch State Mode option. Then enabled the Anti-passback Setup option from the Access Control menu. Then chose the In for Device Status option and IN/OUT Anti-passback for the Anti-passback Direction option for strict access control configuration. Strict means, if you Check-In then you have to Check-Out when you exit or vice versa. No multiple/duplicate punch allowed here. If you don’t want the strict configuration then chose the OUT Anti-passback option. In this option there will be no restriction for multiple/duplicate Check-In and Check-Out at a time.
After everything is done, You have to run the erpnext_sync.py by just pressing ENTER key after configuring the local_config.py file as per the Author’s Instruction. After that Everythihg should work!
Note: If your are using ERPNext v14, then you have to edit “frappe/biometric-attendance-sync-tool” - erpnext_sync.py file to work with ERPNext v14 otherwise Auto Attendance for Employee Checking will not work.
Edit line 180: Replace …/erpnext.hr.doctype… text with …/hrms.hr.doctype…
like this:
url = config.ERPNEXT_URL + "/api/method/erpnext.hr.doctype.employee_checkin.employee_checkin.add_log_based_on_employee_field"
to
url = config.ERPNEXT_URL + "/api/method/hrms.hr.doctype.employee_checkin.employee_checkin.add_log_based_on_employee_field"
Because, In ERPNext v14, HR module is a separate application(HRMS).
But there is still one problem which I am facing right now is Auto Attendance. Attendances not mark automatically. I have to press the Mark Attendance button for manual attendance everyday in Shift Type page. If anyone have any solution for this, please share it.
Reference manual link for ZKTeco F18 (Follow page no: 33 & 43): User manual ZKTeco F18 (English - 70 pages)