| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employee Contracts (hr_contract)
• Time Off (hr_holidays) • Employees (hr) • Discuss (mail) • Calendar (calendar) |
| Community Apps Dependencies | Show |
| Lines of code | 2694 |
| Technical Name |
hr_payroll_community |
| License | AGPL-3 |
| Website | https://www.cybrosys.com |
| Versions | 13.0 14.0 15.0 16.0 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employee Contracts (hr_contract)
• Time Off (hr_holidays) • Employees (hr) • Discuss (mail) • Calendar (calendar) |
| Community Apps Dependencies | Show |
| Lines of code | 2694 |
| Technical Name |
hr_payroll_community |
| License | AGPL-3 |
| Website | https://www.cybrosys.com |
| Versions | 13.0 14.0 15.0 16.0 17.0 18.0 19.0 |
Odoo 16 Payroll
Managing employee salary in your organization
Explore This Module
Overview
Features
Salary Rules
Salary Structure
Employee Pay Slips
Screenshots
Salary Rule Categories
Salary Rules
Salary Structures
Employee Payslips
Send Payslip through Email
Refund after confirmation
Generate Payslip
Related Products
Our Services
Odoo Customization
Odoo Implementation
Odoo Support
Hire Odoo Developer
Odoo Integration
Odoo Migration
Odoo Consultancy
Odoo Implementation
Odoo Licensing Consultancy
Our Industries
Trading
Easily procure and sell your products
POS
Easy configuration and convivial experience
Education
A platform for educational management
Manufacturing
Plan, track and schedule your operations
E-commerce & Website
Mobile friendly, awe-inspiring product pages
Service Management
Keep track of services and invoice
Restaurant
Run your bar or restaurant methodically
Hotel Management
An all-inclusive hotel management application
Support
Say hi to us on WhatsApp!
+91 86068 27707
Please log in to comment on this module
Great Module - how to create hourly based wage?
Great Module - how to create hourly based wage? Is this possible?
Re: Great Module - how to create hourly based wage?
Yes, it’s possible to create an hourly-based wage setup. However, this cannot be done using the hr_payroll_community module. Instead, it can be achieved through the hr_hourly_payslip module.
https://apps.odoo.com/apps/modules/16.0/hr_hourly_payslip
To configure hourly-based wages:
Cannot install the module
File "/Users/odoo_dev/Odoo16/odoo/odoo/addons/base/models/res_users.py", line 1407, in write res = super(UsersImplied, self).write(values) File "/Users/odoo_dev/Odoo16/odoo/odoo/addons/base/models/res_users.py", line 705, in write internal_users.write({'groups_id': [Command.link(gid) for gid in added_groups.ids]}) File "/Users/odoo_dev/Odoo16/odoo/JASINDO/ab_base/models/res_users.py", line 38, in write if self.id not in group.users.ids: File "/Users/odoo_dev/Odoo16/odoo/odoo/fields.py", line 5101, in __get__ raise ValueError("Expected singleton: %s" % record) ValueError: Expected singleton: res.users(154, 2, 84, 100, 59, 120, 51, 137, 63, 151, 126, 132, 66, 155, 40, 52, 41, 146, 62, 64, 115, 56, 72, 152, 42, 65, 148, 61, 53, 125, 75, 99, 87, 54, 109, 88, 68, 110, 113, 58, 57, 46, 70, 69, 147, 133, 60, 67, 145, 131, 149, 142) The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/Users/odoo_dev/Odoo16/odoo/odoo/http.py", line 1653, in _serve_db return service_model.retrying(self._serve_ir_http, self.env) File "/Users/odoo_dev/Odoo16/odoo/odoo/service/model.py", line 133, in retrying result = func() File "/Users/odoo_dev/Odoo16/odoo/odoo/http.py", line 1681, in _serve_ir_http response = self.dispatcher.dispatch(rule.endpoint, args) File "/Users/odoo_dev/Odoo16/odoo/odoo/http.py", line 1885, in dispatch result = self.request.registry['ir.http']._dispatch(endpoint) File "/Users/odoo_dev/Odoo16/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch result = endpoint(**request.params) File "/Users/odoo_dev/Odoo16/odoo/odoo/http.py", line 734, in route_wrapper result = endpoint(self, *args, **params_ok) File "/Users/odoo_dev/Odoo16/odoo/addons/web/controllers/dataset.py", line 46, in call_button action = self._call_kw(model, method, args, kwargs) File "/Users/odoo_dev/Odoo16/odoo/addons/web/controllers/dataset.py", line 33, in _call_kw return call_kw(request.env[model], method, args, kwargs) File "/Users/odoo_dev/Odoo16/odoo/odoo/api.py", line 468, in call_kw result = _call_kw_multi(method, model, args, kwargs) File "/Users/odoo_dev/Odoo16/odoo/odoo/api.py", line 453, in _call_kw_multi result = method(recs, *args, **kwargs) File "<decorator-gen-77>", line 2, in button_immediate_install File "/Users/odoo_dev/Odoo16/odoo/odoo/addons/base/models/ir_module.py", line 74, in check_and_log return method(self, *args, **kwargs) File "/Users/odoo_dev/Odoo16/odoo/odoo/addons/base/models/ir_module.py", line 478, in button_immediate_install return self._button_immediate_function(self.env.registry[self._name].button_install) File "/Users/odoo_dev/Odoo16/odoo/odoo/addons/base/models/ir_module.py", line 602, in _button_immediate_function registry = modules.registry.Registry.new(self._cr.dbname, update_module=True) File "<decorator-gen-16>", line 2, in new File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/func.py", line 87, in locked return func(inst, *args, **kwargs) File "/Users/odoo_dev/Odoo16/odoo/odoo/modules/registry.py", line 87, in new odoo.modules.load_modules(registry, force_demo, status, update_module) File "/Users/odoo_dev/Odoo16/odoo/odoo/modules/loading.py", line 489, in load_modules processed_modules += load_marked_modules(cr, graph, File "/Users/odoo_dev/Odoo16/odoo/odoo/modules/loading.py", line 373, in load_marked_modules loaded, processed = load_module_graph( File "/Users/odoo_dev/Odoo16/odoo/odoo/modules/loading.py", line 232, in load_module_graph load_data(cr, idref, mode, kind='data', package=package) File "/Users/odoo_dev/Odoo16/odoo/odoo/modules/loading.py", line 72, in load_data tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind) File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 763, in convert_file convert_xml_import(cr, module, fp, idref, mode, noupdate) File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 829, in convert_xml_import obj.parse(doc.getroot()) File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 749, in parse self._tag_root(de) File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 698, in _tag_root f(rec) File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 711, in _tag_root raise ParseError('while parsing %s:%s, somewhere inside\n%s' % ( odoo.tools.convert.ParseError: while parsing /Users/odoo_dev/Odoo16/odoo/JASINDO/hr_payroll_community/security/hr_payroll_security.xml:24, somewhere inside <record id="base.default_user" model="res.users"> <field name="groups_id" eval="[(4,ref('hr_payroll_community.group_hr_payroll_community_manager'))]"/> </record>
After change base.default_user to base.user_admin the error become
File "/Users/odoo_dev/Odoo16/odoo/odoo/modules/loading.py", line 72, in load_data
tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind)
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 763, in convert_file
convert_xml_import(cr, module, fp, idref, mode, noupdate)
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 829, in convert_xml_import
obj.parse(doc.getroot())
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 749, in parse
self._tag_root(de)
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 698, in _tag_root
f(rec)
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 711, in _tag_root
raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (
odoo.tools.convert.ParseError: while parsing /Users/odoo_dev/Odoo16/odoo/JASINDO/hr_payroll_community/data/hr_payroll_data.xml:180, somewhere inside
<record forcecreate="True" id="decimal_payroll" model="decimal.precision">
<field name="name">Payroll</field>
<field name="digits">2</field>
</record>
Re: Cannot install the module
The logs show that the singleton error originates from another module(ab_base), which is affecting this module. You should check the ab_base module.
Payslips Batches - Bulk Validate
The module is great and covers everything, but one major issue is that "payslips batches" can't be validated in bulk. It would be great to add such a feature
Re: Payslips Batches - Bulk Validate
Thanks for reporting. The module is updated with the option to validate payslips batches in bulk. Please check the latest version.
The package is awesome but i missing something
how to set shift price and pay workers per shift or enter the number of actual shifts they attended.
thanks a lot
Re: The package is awesome but i missing something
The app does not currently have the feature to set shift prices for workers.
Dear all, I have a when Generate Payslip for employee. When Employee creates two leave with two time off types in a day, For example: A leave with time off types is paid time off from 8:00am to 10:00am Another leave from 10:00am to 13:00am with time off type is sick time off. Both vacations are for 1 day When Generate Payslips for that employee, there is ValueError: Expected singleton: hr.leave.type(1, 7) Please hepl me! Thank you.
File "/home/developer/Desktop/tvs_project/odoo16_base_addons/addons/web/controllers/dataset.py", line 33, in _call_kw return call_kw(request.env[model], method, args, kwargs) File "/home/developer/Desktop/tvs_project/odoo16_base_addons/odoo/api.py", line 461, in call_kw result = _call_kw_multi(method, model, args, kwargs) File "/home/developer/Desktop/tvs_project/odoo16_base_addons/odoo/api.py", line 448, in _call_kw_multi result = method(recs, *args, **kwargs) File "/home/developer/Desktop/tvs_project/third_app/hr_payroll_community/wizard/hr_payroll_payslips_by_employees.py", line 13, in compute_sheet slip_data = self.env['hr.payslip'].onchange_employee_id(from_date, to_date, employee.id, contract_id=False) File "/home/developer/Desktop/tvs_project/third_app/hr_payroll_community/models/hr_payslip.py", line 402, in onchange_employee_id worked_days_line_ids = self.get_worked_day_lines(contracts, date_from, date_to) File "/home/developer/Desktop/tvs_project/third_app/hr_payroll_community/models/hr_payslip.py", line 275, in get_worked_day_lines 'name': holiday.holiday_status_id.name or _('Global Leaves'), File "/home/developer/Desktop/tvs_project/odoo16_base_addons/odoo/fields.py", line 1132, in __get__ record.ensure_one() File "/home/developer/Desktop/tvs_project/odoo16_base_addons/odoo/models.py", line 5119, in ensure_one raise ValueError("Expected singleton: %s" % self) ValueError: Expected singleton: hr.leave.type(1, 7)Re: Dear all, I have a when Generate Payslip for employee. When Employee creates two leave with two time off types in a day, For example: A leave with time off types is paid time off from 8:00am to 10:00am Another leave from 10:00am to 13:00am with time off type is sick time off. Both vacations are for 1 day When Generate Payslips for that employee, there is ValueError: Expected singleton: hr.leave.type(1, 7) Please hepl me! Thank you.
We have updated the module. Please download the latest version
send email button is not available.
we are not able to send paylips via email as send button is not visible in your version 16, also once a salary is confirmed then we are not able to cancel it.
Re: send email button is not available.
Thanks for reporting. We have updated the module.
when automatically put unpaid in timeoff its not reflected in payroll ???
Re:
Thank you for your feedback. We’ve checked the module’s workflow and confirmed that this functionality is not currently included. We are working on adding this feature to the module and will inform you once the updated version is published on the Odoo App Store.
Cannot install the module
File "/Users/odoo_dev/Odoo16/odoo/odoo/addons/base/models/res_users.py", line 1407, in write res = super(UsersImplied, self).write(values) File "/Users/odoo_dev/Odoo16/odoo/odoo/addons/base/models/res_users.py", line 705, in write internal_users.write({'groups_id': [Command.link(gid) for gid in added_groups.ids]}) File "/Users/odoo_dev/Odoo16/odoo/JASINDO/ab_base/models/res_users.py", line 38, in write if self.id not in group.users.ids: File "/Users/odoo_dev/Odoo16/odoo/odoo/fields.py", line 5101, in __get__ raise ValueError("Expected singleton: %s" % record) ValueError: Expected singleton: res.users(154, 2, 84, 100, 59, 120, 51, 137, 63, 151, 126, 132, 66, 155, 40, 52, 41, 146, 62, 64, 115, 56, 72, 152, 42, 65, 148, 61, 53, 125, 75, 99, 87, 54, 109, 88, 68, 110, 113, 58, 57, 46, 70, 69, 147, 133, 60, 67, 145, 131, 149, 142) The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/Users/odoo_dev/Odoo16/odoo/odoo/http.py", line 1653, in _serve_db return service_model.retrying(self._serve_ir_http, self.env) File "/Users/odoo_dev/Odoo16/odoo/odoo/service/model.py", line 133, in retrying result = func() File "/Users/odoo_dev/Odoo16/odoo/odoo/http.py", line 1681, in _serve_ir_http response = self.dispatcher.dispatch(rule.endpoint, args) File "/Users/odoo_dev/Odoo16/odoo/odoo/http.py", line 1885, in dispatch result = self.request.registry['ir.http']._dispatch(endpoint) File "/Users/odoo_dev/Odoo16/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch result = endpoint(**request.params) File "/Users/odoo_dev/Odoo16/odoo/odoo/http.py", line 734, in route_wrapper result = endpoint(self, *args, **params_ok) File "/Users/odoo_dev/Odoo16/odoo/addons/web/controllers/dataset.py", line 46, in call_button action = self._call_kw(model, method, args, kwargs) File "/Users/odoo_dev/Odoo16/odoo/addons/web/controllers/dataset.py", line 33, in _call_kw return call_kw(request.env[model], method, args, kwargs) File "/Users/odoo_dev/Odoo16/odoo/odoo/api.py", line 468, in call_kw result = _call_kw_multi(method, model, args, kwargs) File "/Users/odoo_dev/Odoo16/odoo/odoo/api.py", line 453, in _call_kw_multi result = method(recs, *args, **kwargs) File "<decorator-gen-77>", line 2, in button_immediate_install File "/Users/odoo_dev/Odoo16/odoo/odoo/addons/base/models/ir_module.py", line 74, in check_and_log return method(self, *args, **kwargs) File "/Users/odoo_dev/Odoo16/odoo/odoo/addons/base/models/ir_module.py", line 478, in button_immediate_install return self._button_immediate_function(self.env.registry[self._name].button_install) File "/Users/odoo_dev/Odoo16/odoo/odoo/addons/base/models/ir_module.py", line 602, in _button_immediate_function registry = modules.registry.Registry.new(self._cr.dbname, update_module=True) File "<decorator-gen-16>", line 2, in new File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/func.py", line 87, in locked return func(inst, *args, **kwargs) File "/Users/odoo_dev/Odoo16/odoo/odoo/modules/registry.py", line 87, in new odoo.modules.load_modules(registry, force_demo, status, update_module) File "/Users/odoo_dev/Odoo16/odoo/odoo/modules/loading.py", line 489, in load_modules processed_modules += load_marked_modules(cr, graph, File "/Users/odoo_dev/Odoo16/odoo/odoo/modules/loading.py", line 373, in load_marked_modules loaded, processed = load_module_graph( File "/Users/odoo_dev/Odoo16/odoo/odoo/modules/loading.py", line 232, in load_module_graph load_data(cr, idref, mode, kind='data', package=package) File "/Users/odoo_dev/Odoo16/odoo/odoo/modules/loading.py", line 72, in load_data tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind) File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 763, in convert_file convert_xml_import(cr, module, fp, idref, mode, noupdate) File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 829, in convert_xml_import obj.parse(doc.getroot()) File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 749, in parse self._tag_root(de) File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 698, in _tag_root f(rec) File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 711, in _tag_root raise ParseError('while parsing %s:%s, somewhere inside\n%s' % ( odoo.tools.convert.ParseError: while parsing /Users/odoo_dev/Odoo16/odoo/JASINDO/hr_payroll_community/security/hr_payroll_security.xml:24, somewhere inside <record id="base.default_user" model="res.users"> <field name="groups_id" eval="[(4,ref('hr_payroll_community.group_hr_payroll_community_manager'))]"/> </record>
After change base.default_user to base.user_admin the error become
File "/Users/odoo_dev/Odoo16/odoo/odoo/modules/loading.py", line 72, in load_data
tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind)
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 763, in convert_file
convert_xml_import(cr, module, fp, idref, mode, noupdate)
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 829, in convert_xml_import
obj.parse(doc.getroot())
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 749, in parse
self._tag_root(de)
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 698, in _tag_root
f(rec)
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 711, in _tag_root
raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (
odoo.tools.convert.ParseError: while parsing /Users/odoo_dev/Odoo16/odoo/JASINDO/hr_payroll_community/data/hr_payroll_data.xml:180, somewhere inside
<record forcecreate="True" id="decimal_payroll" model="decimal.precision">
<field name="name">Payroll</field>
<field name="digits">2</field>
</record>
I cannot install your module, this the following error
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 749, in parse self._tag_root(de) File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 698, in _tag_root f(rec) File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 711, in _tag_root raise ParseError('while parsing %s:%s, somewhere inside\n%s' % ( odoo.tools.convert.ParseError: while parsing /Users/odoo_dev/Odoo16/odoo/JASINDO/hr_payroll_community/security/hr_payroll_security.xml:24, somewhere inside <record id="base.default_user" model="res.users"> <field name="groups_id" eval="[(4,ref('hr_payroll_community.group_hr_payroll_community_manager'))]"/> </record> The above server error caused the following client error: RPC_ERROR: Odoo Server Error RPC_ERROR at makeErrorFromResponse (http://localhost:8069/web/assets/21525-e6df796/web.assets_backend.min.js:1002:163) at XMLHttpRequest.<anonymous> (http://localhost:8069/web/assets/21525-e6df796/web.assets_backend.min.js:1010:13)
File "/Users/odoo_dev/Odoo16/odoo/odoo/modules/loading.py", line 72, in load_data
tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind)
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 763, in convert_file
convert_xml_import(cr, module, fp, idref, mode, noupdate)
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 829, in convert_xml_import
obj.parse(doc.getroot())
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 749, in parse
self._tag_root(de)
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 698, in _tag_root
f(rec)
File "/Users/odoo_dev/Odoo16/odoo/odoo/tools/convert.py", line 711, in _tag_root
raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (
odoo.tools.convert.ParseError: while parsing /Users/odoo_dev/Odoo16/odoo/JASINDO/hr_payroll_community/data/hr_payroll_data.xml:180, somewhere inside
<record forcecreate="True" id="decimal_payroll" model="decimal.precision">
<field name="name">Payroll</field>
<field name="digits">2</field>
</record>
Had to deactivate matplot cause this error that broke the server:
"Loading module hr_payroll_community (99/211)
2023-10-04 18:40:23,356 4055 CRITICAL dbaseservername odoo.modules.module: Couldn't load module hr_payroll_community
2023-10-04 18:40:23,356 4055 CRITICAL dbaseservername odoo.modules.module: cannot import name 'seconds' from 'matplotlib.dates' (/odoo16/odoo16-server/venv/lib/python3.10/site-packages/matplotlib/dates.py)
2023-10-04 18:40:23,357 4055 WARNING dbaseservername odoo.modules.loading: Transient module states were reset
2023-10-04 18:40:23,357 4055 ERROR dbaseservername odoo.modules.registry: Failed to load registry
2023-10-04 18:40:23,357 4055 ERROR dbaseservername odoo.http: Exception during request handling. "
Luis G
Re:
Hello Luis, Thanks for reporting. We have updated the app.
last update broke the server
"Internal Server Error
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application."
"DEBUG databasename odoo.modules.loading: Loading module hr_payroll_community (98/210)
2023-10-04 01:22:09,191 440608 CRITICAL databasename odoo.modules.module: Couldn't load module hr_payroll_community
2023-10-04 01:22:09,191 440608 CRITICAL databasename odoo.modules.module: cannot import name 'seconds' from 'matplotlib.dates' (/odoo16/odoo16-server/venv/lib/python3.10/site-packages/matplotlib/dates.py)
2023-10-04 01:22:09,192 440608 WARNING databasename odoo.modules.loading: Transient module states were reset
2023-10-04 01:22:09,192 440608 ERROR databasename odoo.modules.registry: Failed to load registry
2023-10-04 01:22:09,192 440608 ERROR databasename odoo.http: Exception during request handling. "
Luis G
Re:
Hello Luis, Thanks for reporting. We have updated the app.
Dear all, I have a when Generate Payslip for employee. When Employee creates two leave with two time off types in a day, For example: A leave with time off types is paid time off from 8:00am to 10:00am Another leave from 10:00am to 13:00am with time off type is sick time off. Both vacations are for 1 day When Generate Payslips for that employee, there is ValueError: Expected singleton: hr.leave.type(1, 7) Please hepl me! Thank you.
File "/home/developer/Desktop/tvs_project/odoo16_base_addons/addons/web/controllers/dataset.py", line 33, in _call_kw return call_kw(request.env[model], method, args, kwargs) File "/home/developer/Desktop/tvs_project/odoo16_base_addons/odoo/api.py", line 461, in call_kw result = _call_kw_multi(method, model, args, kwargs) File "/home/developer/Desktop/tvs_project/odoo16_base_addons/odoo/api.py", line 448, in _call_kw_multi result = method(recs, *args, **kwargs) File "/home/developer/Desktop/tvs_project/third_app/hr_payroll_community/wizard/hr_payroll_payslips_by_employees.py", line 13, in compute_sheet slip_data = self.env['hr.payslip'].onchange_employee_id(from_date, to_date, employee.id, contract_id=False) File "/home/developer/Desktop/tvs_project/third_app/hr_payroll_community/models/hr_payslip.py", line 402, in onchange_employee_id worked_days_line_ids = self.get_worked_day_lines(contracts, date_from, date_to) File "/home/developer/Desktop/tvs_project/third_app/hr_payroll_community/models/hr_payslip.py", line 275, in get_worked_day_lines 'name': holiday.holiday_status_id.name or _('Global Leaves'), File "/home/developer/Desktop/tvs_project/odoo16_base_addons/odoo/fields.py", line 1132, in __get__ record.ensure_one() File "/home/developer/Desktop/tvs_project/odoo16_base_addons/odoo/models.py", line 5119, in ensure_one raise ValueError("Expected singleton: %s" % self) ValueError: Expected singleton: hr.leave.type(1, 7)