ZKTeco Attendance machine integration

by
Odoo

87.08

v 13.0 Third Party 54
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies Attendances (hr_attendance)
Employees (hr)
Discuss (mail)
Lines of code 2540
Technical Name azk_zkteco_attendance
LicenseAGPL-3
Websitehttps://azka.tech
Versions 15.0 13.0 14.0 16.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies Attendances (hr_attendance)
Employees (hr)
Discuss (mail)
Lines of code 2540
Technical Name azk_zkteco_attendance
LicenseAGPL-3
Websitehttps://azka.tech
Versions 15.0 13.0 14.0 16.0

Important Note:
Users in each machines must be different from other machine users, i.e : user cant not use multiple machine to check-in, out
This addon Supports the integration with fingerprint machines of ZKTeco Biopro MV30. This integration of Odoo attendance with ZKTeco attendance machine will help in managing your HR work more efficiently, from tracking the worked hours along with automated and dynamic creation of the employees into the ability to download the attendance data and check in/out of your employees in a few clicks with its multiple verification modes and access features.

NOTE: this modules works on PaaS (aka Odoo.sh) or on-premises and does not work on the SaaS version. It depends on pyzk which installs automatically. If it didn't install then copy the content of requirements.txt into the main requirements file


NOTE: Before purchasing this module, make sure that your machine is compatible via this ZKTeco Compatibility tester
https://drive.google.com/drive/folders/1butFR0-_7lWh0OL5N63PELL2-d5UH35E?usp=sharing
If not supported get in touch with us


Process

  • Select attendance machine >> machine configuration
  • Define the machine configuration
  • Add the real IP address of the machine, the port number and password (if exists), then use the action of testing connection to make sure that the IP and port are working.
  • Note: you can use another IP which redirect to an internal IP inside your network. This IP could be obtained by Ngrok account.
  • Test the connection
  • Specify the connection time out
  • Auto Create the Employee: The application will create the employee on Odoo if the employee ID on the machine is not linked to any Employee card (Device ID)
  • Download Attendance: This action is used to synchronize the attendance from the machine to the system.
  • Clear Device Data: This action will delete the attendance records from the machine database.
  • Add Multiple Integrated Machines: User can define multiple machines to import that data from (Important Note: users in each machines must be different from other machine users, i.e : user cant not use multiple machine to check-in, out).

Configuration

  • ZKteco working hours
  • Make sure employee working hours are correctly configured.
  • The system will use the Day of week, hour from, hour to to detect checkin/checkout.
  • If no day of week found then takes by default the first one.
  • ZKTeco Attendance
  • Intelligent system that automatically detect check-in/checkout from working hours configured as per above
  • In case of conflict, a record will not be imported thus preventing errors with Odoo attendance rules.
  • Possible to re-import many times the same data, this module will detect it and skip them
  • Fast to import: it just processes the records that was not yet import (since ZKTeco machines returns all data stored on them)
  • Create / Delete machine users.
  • It just works.
  • ZKTeco Users Creation On Attendance Machine
  • If employee has device ID which not exists on machine, the user will be created successfully
  • If employee does not have device ID, the machine will assign an auto generated Device ID and the user will be created successfully
  • If employee has device ID used for another employee, an error will pop up indicating that the device ID is bound to another employee
  • If employee hase device ID and there is a machine user with same device ID and name, an error will pop up indicating that employee is already created.
  • User can select multiple employees from the list and perform creation action.
  • ZKTeco Users Deletion On Attendance Machine
  • If employee has device ID which exists on machine, the user will be deleted successfully
  • If employee has device ID which not exists on machine, an error will pop up indicating that the user does not exists.
  • If employee does not have device ID , an error will pop up indicating that device Id is not set.

Azkatech Suggested Apps

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author or have a question related to your purchase, please use the support page.
There are no ratings yet!
Hi i have purchased this module : can you please resolve this error ?
by
TEAMUP4SOLUTIONS
on 3/19/23, 7:41 AM Confirmed Purchase

Error:
Odoo Server Error

Traceback (most recent call last):
File "/opt/odoo8135/odoo/odoo/http.py", line 624, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo8135/odoo/odoo/http.py", line 310, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/opt/odoo8135/odoo/odoo/tools/pycompat.py", line 14, in reraise
raise value
File "/opt/odoo8135/odoo/odoo/http.py", line 669, in dispatch
result = self._call_function(**self.params)
File "/opt/odoo8135/odoo/odoo/http.py", line 350, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/odoo8135/odoo/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/opt/odoo8135/odoo/odoo/http.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "/opt/odoo8135/odoo/odoo/http.py", line 915, in __call__
return self.method(*args, **kw)
File "/opt/odoo8135/odoo/odoo/http.py", line 515, in response_wrap
response = f(*args, **kw)
File "/opt/odoo8135/odoo/addons/web/controllers/main.py", line 1346, in call_button
action = self._call_kw(model, method, args, kwargs)
File "/opt/odoo8135/odoo/addons/web/controllers/main.py", line 1334, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/opt/odoo8135/odoo/odoo/api.py", line 390, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/opt/odoo8135/odoo/odoo/api.py", line 377, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "", line 2, in button_immediate_install
File "/opt/odoo8135/odoo/odoo/addons/base/models/ir_module.py", line 73, in check_and_log
return method(self, *args, **kwargs)
File "/opt/odoo8135/odoo/odoo/addons/base/models/ir_module.py", line 464, in button_immediate_install
return self._button_immediate_function(type(self).button_install)
File "/opt/odoo8135/odoo/odoo/addons/base/models/ir_module.py", line 574, in _button_immediate_function
modules.registry.Registry.new(self._cr.dbname, update_module=True)
File "/opt/odoo8135/odoo/odoo/modules/registry.py", line 87, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "/opt/odoo8135/odoo/odoo/modules/loading.py", line 428, in load_modules
loaded_modules, update_module, models_to_check)
File "/opt/odoo8135/odoo/odoo/modules/loading.py", line 315, in load_marked_modules
perform_checks=perform_checks, models_to_check=models_to_check
File "/opt/odoo8135/odoo/odoo/modules/loading.py", line 182, in load_module_graph
load_openerp_module(package.name)
File "/opt/odoo8135/odoo/odoo/modules/module.py", line 404, in load_openerp_module
__import__('odoo.addons.' + module_name)
File "/opt/odoo8135/custom addons/azk_zkteco_attendance/__init__.py", line 3, in
from . import models
File "/opt/odoo8135/custom addons/azk_zkteco_attendance/models/__init__.py", line 2, in
from . import zk_machine, machine_analysis, user_wizard, hr_employee
File "/opt/odoo8135/custom addons/azk_zkteco_attendance/models/zk_machine.py", line 9, in
from zk import ZK
ModuleNotFoundError: No module named 'zk'

Re: Hi i have purchased this module : can you please resolve this error ?
by
Shadi Moadad
on 3/20/23, 3:05 AM Author

Dear,

Install pyzk via: pip install pyzk

1st Make sur you have access to the shell and activate the virtual host. (in case of odoo.sh then access the shell and install it)

2nd: run: pip3 install pyzk


by
Odoo Sydemcorp
on 8/19/22, 9:48 AM

Port 4370 is released on the router and works correctly. I would like to know what is the list of zkteco devices that work with this module.


by
Odoo Sydemcorp
on 8/18/22, 1:01 PM

Hice las pruebas de compatibilidad y me da un error.

ERNO 11001 GETADDRINFO FAILED

Me gustaría que me enviaras la lista de equipos que son compatibles con el módulo.

Re:
by
Shadi Moadad
on 8/19/22, 1:39 AM Author

Dear,

Make sure the address/IP is accessible by Odoo instance


Module information
by
Odoo Sydemcorp
on 8/17/22, 3:05 PM

Good morning, I am interested in the module, but I would like to clarify some doubts:

1.- Can I work with dynamic IP?

2.- I have three computers that are located in different cities, can I connect them?

3.- The three teams I have are different, will they work?

I await your prompt response for the purchase of the equipment.

Re: Module information
by
Shadi Moadad
on 8/18/22, 8:17 AM Author

Hello,

1- For Dynamic IP you can use a 3rd party like dyndns that creates and update the dynamic IP to the DNS or Ngrok (we hv manual for that) that creates a secure tunnel.

2- For the computers in 3 different cities yes it works. you create 3 attendance machines linked to 3 different machines

3- What do you mean by 3 different teams? It shouldn't have impact. The attendance machine link the attendance to employees without looking into teams