mirror of
https://github.com/bringout/oca-ocb-hr.git
synced 2026-04-23 08:52:09 +02:00
19.0 vanilla
This commit is contained in:
parent
a1137a1456
commit
e1d89e11e3
2789 changed files with 1093187 additions and 605897 deletions
|
|
@ -10,35 +10,14 @@ pip install odoo-bringout-oca-ocb-hr_work_entry
|
|||
|
||||
## Dependencies
|
||||
|
||||
This addon depends on:
|
||||
- hr
|
||||
|
||||
## Manifest Information
|
||||
|
||||
- **Name**: Work Entries
|
||||
- **Version**: N/A
|
||||
- **Category**: Human Resources/Employees
|
||||
- **License**: LGPL-3
|
||||
- **Installable**: True
|
||||
|
||||
## Source
|
||||
|
||||
Based on [OCA/OCB](https://github.com/OCA/OCB) branch 16.0, addon `hr_work_entry`.
|
||||
- Repository: https://github.com/OCA/OCB
|
||||
- Branch: 19.0
|
||||
- Path: addons/hr_work_entry
|
||||
|
||||
## License
|
||||
|
||||
This package maintains the original LGPL-3 license from the upstream Odoo project.
|
||||
|
||||
## Documentation
|
||||
|
||||
- Overview: doc/OVERVIEW.md
|
||||
- Architecture: doc/ARCHITECTURE.md
|
||||
- Models: doc/MODELS.md
|
||||
- Controllers: doc/CONTROLLERS.md
|
||||
- Wizards: doc/WIZARDS.md
|
||||
- Install: doc/INSTALL.md
|
||||
- Usage: doc/USAGE.md
|
||||
- Configuration: doc/CONFIGURATION.md
|
||||
- Dependencies: doc/DEPENDENCIES.md
|
||||
- Troubleshooting: doc/TROUBLESHOOTING.md
|
||||
- FAQ: doc/FAQ.md
|
||||
This package preserves the original LGPL-3 license.
|
||||
|
|
|
|||
|
|
@ -1 +1,4 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import models
|
||||
from . import wizard
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
#-*- coding:utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
{
|
||||
|
|
@ -13,15 +12,25 @@
|
|||
'data': [
|
||||
'security/hr_work_entry_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'data/hr_work_entry_data.xml',
|
||||
'data/hr_work_entry_type_data.xml',
|
||||
'data/ir_cron_data.xml',
|
||||
'views/hr_work_entry_views.xml',
|
||||
'views/hr_employee_views.xml',
|
||||
'views/hr_contract_template_views.xml',
|
||||
'views/resource_calendar_views.xml',
|
||||
'wizard/hr_work_entry_regeneration_wizard_views.xml',
|
||||
],
|
||||
'demo': [
|
||||
'data/hr_work_entry_demo.xml',
|
||||
],
|
||||
'assets': {
|
||||
'web.assets_backend': [
|
||||
'hr_work_entry/static/**/*',
|
||||
'hr_work_entry/static/src/**/*',
|
||||
],
|
||||
'web.assets_unit_tests': [
|
||||
'hr_work_entry/static/tests/**/*',
|
||||
],
|
||||
},
|
||||
'author': 'Odoo S.A.',
|
||||
'license': 'LGPL-3',
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="0">
|
||||
|
||||
<!-- Work Entry Type -->
|
||||
<record id="work_entry_type_attendance" model="hr.work.entry.type">
|
||||
<field name="name">Attendance</field>
|
||||
<field name="color">0</field>
|
||||
<field name="code">WORK100</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="work_entry_type_extra_hours" model="hr.work.entry.type">
|
||||
<field name="name">Extra Hours</field>
|
||||
<field name="code">WORK300</field>
|
||||
<field name="color">8</field>
|
||||
</record>
|
||||
|
||||
<record id="work_entry_type_long_leave" model="hr.work.entry.type">
|
||||
<field name="name">Long Term Time Off</field>
|
||||
<field name="code">LEAVE200</field>
|
||||
<field name="color">4</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,930 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo><data noupdate="1">
|
||||
<record id="work_entry_type_attendance" model="hr.work.entry.type">
|
||||
<field name="name">Attendance</field>
|
||||
<field name="color">0</field>
|
||||
<field name="display_code">A</field>
|
||||
<field name="code">WORK100</field>
|
||||
<field name="is_leave">False</field>
|
||||
</record>
|
||||
|
||||
<record id="work_entry_type_overtime" model="hr.work.entry.type">
|
||||
<field name="name">Overtime Hours</field>
|
||||
<field name="color">4</field>
|
||||
<field name="display_code">OT</field>
|
||||
<field name="code">OVERTIME</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_work_entry_type_out_of_contract" model="hr.work.entry.type">
|
||||
<field name="name">Out of Contract</field>
|
||||
<field name="color">0</field>
|
||||
<field name="display_code">OoC</field>
|
||||
<field name="code">OUT</field>
|
||||
</record>
|
||||
|
||||
<record id="work_entry_type_leave" model="hr.work.entry.type">
|
||||
<field name="name">Generic Time Off</field>
|
||||
<field name="display_code">GTO</field>
|
||||
<field name="code">LEAVE100</field>
|
||||
<field name="color">3</field>
|
||||
<field name="is_leave">True</field>
|
||||
</record>
|
||||
|
||||
<record id="work_entry_type_compensatory" model="hr.work.entry.type">
|
||||
<field name="name">Compensatory Time Off</field>
|
||||
<field name="display_code">CTO</field>
|
||||
<field name="code">LEAVE105</field>
|
||||
<field name="color">3</field>
|
||||
<field name="is_leave">True</field>
|
||||
</record>
|
||||
|
||||
<record id="work_entry_type_home_working" model="hr.work.entry.type">
|
||||
<field name="name">Home Working</field>
|
||||
<field name="display_code">HW</field>
|
||||
<field name="code">WORK110</field>
|
||||
<field name="color">2</field>
|
||||
<field name="is_leave">True</field>
|
||||
</record>
|
||||
|
||||
<record id="work_entry_type_unpaid_leave" model="hr.work.entry.type">
|
||||
<field name="name">Unpaid</field>
|
||||
<field name="color">5</field>
|
||||
<field name="display_code">UN</field>
|
||||
<field name="code">LEAVE90</field>
|
||||
<field name="is_leave">True</field>
|
||||
</record>
|
||||
|
||||
<record id="work_entry_type_sick_leave" model="hr.work.entry.type">
|
||||
<field name="name">Sick Time Off</field>
|
||||
<field name="display_code">STO</field>
|
||||
<field name="code">LEAVE110</field>
|
||||
<field name="color">5</field>
|
||||
<field name="is_leave">True</field>
|
||||
</record>
|
||||
|
||||
<record id="work_entry_type_legal_leave" model="hr.work.entry.type">
|
||||
<field name="name">Paid Time Off</field>
|
||||
<field name="display_code">PTO</field>
|
||||
<field name="code">LEAVE120</field>
|
||||
<field name="color">5</field>
|
||||
<field name="is_leave">True</field>
|
||||
</record>
|
||||
|
||||
<!-- AE : United Arab Emirates -->
|
||||
<record id="uae_sick_leave_50_entry_type" model="hr.work.entry.type">
|
||||
<field name="name">Sick Leave 50</field>
|
||||
<field name="code">AESICKLEAVE50</field>
|
||||
<field name="country_id" ref="base.ae"/>
|
||||
</record>
|
||||
|
||||
<record id="uae_sick_leave_0_entry_type" model="hr.work.entry.type">
|
||||
<field name="name">Sick Leave 0</field>
|
||||
<field name="code">AESICKLEAVE0</field>
|
||||
<field name="country_id" ref="base.ae"/>
|
||||
</record>
|
||||
|
||||
<record id="uae_public_holiday_entry_type" model="hr.work.entry.type">
|
||||
<field name="name">Public Holiday</field>
|
||||
<field name="code">AEPUBLICH</field>
|
||||
<field name="country_id" ref="base.ae"/>
|
||||
</record>
|
||||
|
||||
<!-- AU : Australia -->
|
||||
<!-- Time Off Entries -->
|
||||
<!-- We need a unique work entry type for each time off -->
|
||||
<record id="l10n_au_work_entry_type_paid_time_off" model="hr.work.entry.type">
|
||||
<field name="name">Paid Time Off</field>
|
||||
<field name="color">5</field>
|
||||
<field name="code">AU.PT</field>
|
||||
<field name="country_id" ref="base.au"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_au_work_entry_type_long_service_leave" model="hr.work.entry.type">
|
||||
<field name="name">Long Service Leave</field>
|
||||
<field name="color">5</field>
|
||||
<field name="code">AU.LS</field>
|
||||
<field name="country_id" ref="base.au"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_au_work_entry_type_personal_leave" model="hr.work.entry.type">
|
||||
<field name="name">Personal Leave</field>
|
||||
<field name="color">5</field>
|
||||
<field name="code">AU.PL</field>
|
||||
<field name="country_id" ref="base.au"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_au_work_entry_type_other" model="hr.work.entry.type">
|
||||
<field name="name">Other Paid Leave</field>
|
||||
<field name="color">5</field>
|
||||
<field name="code">AU.O</field>
|
||||
<field name="country_id" ref="base.au"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_au_work_entry_type_parental" model="hr.work.entry.type">
|
||||
<field name="name">Paid Parental Leave</field>
|
||||
<field name="color">5</field>
|
||||
<field name="code">AU.P</field>
|
||||
<field name="country_id" ref="base.au"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_au_work_entry_type_compensation" model="hr.work.entry.type">
|
||||
<field name="name">Workers Compensation</field>
|
||||
<field name="color">5</field>
|
||||
<field name="code">AU.W</field>
|
||||
<field name="country_id" ref="base.au"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_au_work_entry_type_defence" model="hr.work.entry.type">
|
||||
<field name="name">Ancillary and Defence Leave</field>
|
||||
<field name="color">5</field>
|
||||
<field name="code">AU.A</field>
|
||||
<field name="country_id" ref="base.au"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_au_work_entry_type_cash_out" model="hr.work.entry.type">
|
||||
<field name="name">Cash Out of Leave in Service</field>
|
||||
<field name="color">5</field>
|
||||
<field name="code">AU.C</field>
|
||||
<field name="country_id" ref="base.au"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_au_work_entry_type_termination" model="hr.work.entry.type">
|
||||
<field name="name">Unused Leave on Termination</field>
|
||||
<field name="color">5</field>
|
||||
<field name="code">AU.U</field>
|
||||
<field name="country_id" ref="base.au"/>
|
||||
</record>
|
||||
|
||||
<!-- Overtime Entries -->
|
||||
<record id="l10n_au_work_entry_type_overtime_regular" model="hr.work.entry.type">
|
||||
<field name="name">Overtime: Regular</field>
|
||||
<field name="color">4</field>
|
||||
<field name="code">l10n_au_overtime_regular</field>
|
||||
<field name="country_id" ref="base.au"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_au_work_entry_type_overtime_saturday" model="hr.work.entry.type">
|
||||
<field name="name">Overtime: Saturday</field>
|
||||
<field name="color">4</field>
|
||||
<field name="code">l10n_au_overtime_saturday</field>
|
||||
<field name="country_id" ref="base.au"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_au_work_entry_type_overtime_sunday" model="hr.work.entry.type">
|
||||
<field name="name">Overtime: Sunday</field>
|
||||
<field name="color">4</field>
|
||||
<field name="code">l10n_au_overtime_sunday</field>
|
||||
<field name="country_id" ref="base.au"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_au_work_entry_type_overtime_pto" model="hr.work.entry.type">
|
||||
<field name="name">Overtime: Public Time Off</field>
|
||||
<field name="color">4</field>
|
||||
<field name="code">l10n_au_overtime_pto</field>
|
||||
<field name="country_id" ref="base.au"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_au_work_entry_type_overtime_saturday_pto" model="hr.work.entry.type">
|
||||
<field name="name">Overtime: Saturday & Public Time Off</field>
|
||||
<field name="color">4</field>
|
||||
<field name="code">l10n_au_overtime_saturday_pto</field>
|
||||
<field name="country_id" ref="base.au"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_au_work_entry_type_overtime_sunday_pto" model="hr.work.entry.type">
|
||||
<field name="name">Overtime: Sunday & Public Time Off</field>
|
||||
<field name="color">4</field>
|
||||
<field name="code">l10n_au_overtime_sunday_pto</field>
|
||||
<field name="country_id" ref="base.au"/>
|
||||
</record>
|
||||
|
||||
<!-- BE : Belgium -->
|
||||
<record id="l10n_be_work_entry_type_bank_holiday" model="hr.work.entry.type">
|
||||
<field name="name">Public Holiday</field>
|
||||
<field name="code">LEAVE500</field>
|
||||
<field name="color">3</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_solicitation_time_off" model="hr.work.entry.type">
|
||||
<field name="name">Solicitation Time Off</field>
|
||||
<field name="code">LEAVE600</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_unjustified_reason" model="hr.work.entry.type">
|
||||
<field name="name">Unjustified Reason</field>
|
||||
<field name="code">LEAVE700</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_small_unemployment" model="hr.work.entry.type">
|
||||
<field name="name">Small Unemployment (Brief Holiday)</field>
|
||||
<field name="code">LEAVE205</field> <!-- YTI: 1 as it is paid, would be 70 otherwise -->
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_economic_unemployment" model="hr.work.entry.type">
|
||||
<field name="name">Economic Unemployment</field>
|
||||
<field name="code">LEAVE6665</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_corona" model="hr.work.entry.type">
|
||||
<field name="name">Corona Unemployment</field>
|
||||
<field name="code">LEAVE6666</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_maternity" model="hr.work.entry.type">
|
||||
<field name="name">Maternity Time Off</field>
|
||||
<field name="code">LEAVE210</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_paternity_company" model="hr.work.entry.type">
|
||||
<field name="name">Paternity Time Off (Paid by Company)</field>
|
||||
<field name="code">LEAVE220</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_paternity_legal" model="hr.work.entry.type">
|
||||
<field name="name">Paternity Time Off (Legal)</field>
|
||||
<field name="code">LEAVE230</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_unpredictable" model="hr.work.entry.type">
|
||||
<field name="name">Unpredictable Reason</field>
|
||||
<field name="code">LEAVE250</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_training" model="hr.work.entry.type">
|
||||
<field name="name">Training</field>
|
||||
<field name="code">LEAVE265</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_training_time_off" model="hr.work.entry.type">
|
||||
<field name="name">Educational Time Off</field>
|
||||
<field name="code">LEAVE260</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_flemish_training_time_off" model="hr.work.entry.type">
|
||||
<field name="name">Flemish Educational Time Off</field>
|
||||
<field name="code">LEAVE261</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_long_sick" model="hr.work.entry.type">
|
||||
<field name="name">Long Term Sick</field>
|
||||
<field name="code">LEAVE280</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_breast_feeding" model="hr.work.entry.type">
|
||||
<field name="name">Breastfeeding Break</field>
|
||||
<field name="code">LEAVE290</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_medical_assistance" model="hr.work.entry.type">
|
||||
<field name="name">Medical Assistance</field>
|
||||
<field name="code">MEDIC01</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_youth_time_off" model="hr.work.entry.type">
|
||||
<field name="name">Youth Time Off</field>
|
||||
<field name="code">YOUNG01</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_recovery_additional" model="hr.work.entry.type">
|
||||
<field name="name">Recovery Additional Time</field>
|
||||
<field name="code">LEAVE295</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_additional_paid" model="hr.work.entry.type">
|
||||
<field name="name">Additional Time (Paid)</field>
|
||||
<field name="code">LEAVE297</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_notice" model="hr.work.entry.type">
|
||||
<field name="name">Notice (Unprovided)</field>
|
||||
<field name="code">LEAVE211</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_phc" model="hr.work.entry.type">
|
||||
<field name="name">Public Holiday Compensation</field>
|
||||
<field name="code">PHC1</field>
|
||||
<field name="color">3</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_extra_legal" model="hr.work.entry.type">
|
||||
<field name="name">Extra Legal Time Off</field>
|
||||
<field name="code">LEAVE213</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_part_sick" model="hr.work.entry.type">
|
||||
<field name="name">Sick Time Off (Without Guaranteed Salary)</field>
|
||||
<field name="code">LEAVE214</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_recovery" model="hr.work.entry.type">
|
||||
<field name="name">Recovery Bank Holiday</field>
|
||||
<field name="code">LEAVE215</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_european" model="hr.work.entry.type">
|
||||
<field name="name">European Time Off</field>
|
||||
<field name="code">LEAVE216</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_credit_time" model="hr.work.entry.type">
|
||||
<field name="name">Credit Time</field>
|
||||
<field name="code">LEAVE300</field>
|
||||
<field name="color">8</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_parental_time_off" model="hr.work.entry.type">
|
||||
<field name="name">Parental Time Off</field>
|
||||
<field name="code">LEAVE301</field>
|
||||
<field name="color">8</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_simple_holiday_pay_variable_salary" model="hr.work.entry.type">
|
||||
<field name="name">Simple Holiday Pay - Variable Salary</field>
|
||||
<field name="code">LEAVE1731</field>
|
||||
<field name="color">3</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_work_accident" model="hr.work.entry.type">
|
||||
<field name="name">Work Accident</field>
|
||||
<field name="code">LEAVE115</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_partial_incapacity" model="hr.work.entry.type">
|
||||
<field name="name">Partial Incapacity (due to illness)</field>
|
||||
<field name="code">LEAVE281</field>
|
||||
<field name="color">4</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_strike" model="hr.work.entry.type">
|
||||
<field name="name">Strike</field>
|
||||
<field name="code">LEAVE251</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_be_work_entry_type_small_unemployment_birth" model="hr.work.entry.type">
|
||||
<field name="name">Brief Holiday (Birth)</field>
|
||||
<field name="code">LEAVE206</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<!-- CH : Switzerland -->
|
||||
<record id="l10n_ch_work_entry_type_bank_holiday" model="hr.work.entry.type">
|
||||
<field name="name">Public Holiday</field>
|
||||
<field name="code">CHPUBHOL</field>
|
||||
<field name="color">3</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ch_swissdec_monthly_wt" model="hr.work.entry.type">
|
||||
<field name="name">Monthly Salary</field>
|
||||
<field name="code">CH_1000</field>
|
||||
<field name="sequence">0</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ch_swissdec_hourly_wt" model="hr.work.entry.type">
|
||||
<field name="name">Hourly Salary</field>
|
||||
<field name="code">CH_1005</field>
|
||||
<field name="sequence">5</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ch_swissdec_lesson_wt" model="hr.work.entry.type">
|
||||
<field name="name">Lesson Salary</field>
|
||||
<field name="code">CH_1006</field>
|
||||
<field name="sequence">10</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ch_swissdec_overtime_wt" model="hr.work.entry.type">
|
||||
<field name="name">Overtime 100%</field>
|
||||
<field name="code">CH_1065</field>
|
||||
<field name="sequence">6</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ch_swissdec_overtime_125_wt" model="hr.work.entry.type">
|
||||
<field name="name">Overtime 125%</field>
|
||||
<field name="code">CH_1061</field>
|
||||
<field name="sequence">7</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ch_swissdec_unpaid_wt" model="hr.work.entry.type">
|
||||
<field name="name">Unpaid Salary</field>
|
||||
<field name="code">CH_UNPAID</field>
|
||||
<field name="sequence">15</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ch_swissdec_illness_wt" model="hr.work.entry.type">
|
||||
<field name="name">Salary in case of Illness</field>
|
||||
<field name="code">CH_ILLNESS</field>
|
||||
<field name="sequence">20</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ch_swissdec_accident_wt" model="hr.work.entry.type">
|
||||
<field name="name">Salary in case of Accident</field>
|
||||
<field name="code">CH_ACCIDENT</field>
|
||||
<field name="sequence">25</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ch_swissdec_maternity_wt" model="hr.work.entry.type">
|
||||
<field name="name">Salary in case of Maternity / Paternity Leave</field>
|
||||
<field name="code">CH_MATERNITY</field>
|
||||
<field name="sequence">30</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ch_swissdec_military_wt" model="hr.work.entry.type">
|
||||
<field name="name">Salary in case of Military Leave</field>
|
||||
<field name="code">CH_MILITARY</field>
|
||||
<field name="sequence">35</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ch_swissdec_illness_wt_hourly" model="hr.work.entry.type">
|
||||
<field name="name">Hourly Salary in case of Illness</field>
|
||||
<field name="code">CH_ILLNESS_HOURLY</field>
|
||||
<field name="sequence">20</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ch_swissdec_accident_wt_hourly" model="hr.work.entry.type">
|
||||
<field name="name">Hourly Salary in case of Accident</field>
|
||||
<field name="code">CH_ACCIDENT_HOURLY</field>
|
||||
<field name="sequence">25</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ch_swissdec_maternity_wt_hourly" model="hr.work.entry.type">
|
||||
<field name="name">Hourly Salary in case of Maternity / Paternity Leave</field>
|
||||
<field name="code">CH_MATERNITY_HOURLY</field>
|
||||
<field name="sequence">30</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ch_swissdec_military_wt_hourly" model="hr.work.entry.type">
|
||||
<field name="name">Hourly Salary in case of Military Leave</field>
|
||||
<field name="code">CH_MILITARY_HOURLY</field>
|
||||
<field name="sequence">35</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_ch_swissdec_interruption_wt" model="hr.work.entry.type">
|
||||
<field name="name">Interruption of Work</field>
|
||||
<field name="code">CH_Interruption</field>
|
||||
<field name="sequence">40</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.ch"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<!-- EG: Egypt -->
|
||||
<record id="l10n_eg_work_entry_type_paid_sick_leave" model="hr.work.entry.type">
|
||||
<field name="name">Paid Sick Time off</field>
|
||||
<field name="code">EGSICKLEAVE100</field>
|
||||
<field name="country_id" ref="base.eg"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_eg_work_entry_type_sick_leave_75" model="hr.work.entry.type">
|
||||
<field name="name">Sick Time off (75% Paid)</field>
|
||||
<field name="code">EGSICKLEAVE75</field>
|
||||
<field name="country_id" ref="base.eg"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_eg_work_entry_type_sick_leave_unpaid" model="hr.work.entry.type">
|
||||
<field name="name">Sick Time off (Unpaid)</field>
|
||||
<field name="code">EGSICKLEAVE0</field>
|
||||
<field name="country_id" ref="base.eg"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<!-- HK : Hong Kong -->
|
||||
<record id="l10n_hk_work_entry_type_sick_leave_80" model="hr.work.entry.type">
|
||||
<field name="name">Sick Leave 80%</field>
|
||||
<field name="code">HKLEAVE111</field>
|
||||
<field name="color">6</field>
|
||||
<field name="country_id" ref="base.hk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
<field name="amount_rate">0.8</field>
|
||||
</record>
|
||||
|
||||
<record id="l10n_hk_work_entry_type_compassionate_leave" model="hr.work.entry.type">
|
||||
<field name="name">Compassionate Leave</field>
|
||||
<field name="code">HKLEAVE130</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.hk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_hk_work_entry_type_marriage_leave" model="hr.work.entry.type">
|
||||
<field name="name">Marriage Leave</field>
|
||||
<field name="code">HKLEAVE140</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.hk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_hk_work_entry_type_examination_leave" model="hr.work.entry.type">
|
||||
<field name="name">Examination Leave</field>
|
||||
<field name="code">HKLEAVE150</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.hk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_hk_work_entry_type_maternity_leave" model="hr.work.entry.type">
|
||||
<field name="name">Maternity Leave</field>
|
||||
<field name="code">HKLEAVE210</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.hk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_hk_work_entry_type_maternity_leave_80" model="hr.work.entry.type">
|
||||
<field name="name">Maternity Leave 80%</field>
|
||||
<field name="code">HKLEAVE211</field>
|
||||
<field name="color">6</field>
|
||||
<field name="country_id" ref="base.hk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
<field name="amount_rate">0.8</field>
|
||||
</record>
|
||||
|
||||
<record id="l10n_hk_work_entry_type_paternity_leave" model="hr.work.entry.type">
|
||||
<field name="name">Paternity Leave</field>
|
||||
<field name="code">HKLEAVE220</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.hk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_hk_work_entry_type_paternity_leave_80" model="hr.work.entry.type">
|
||||
<field name="name">Paternity Leave 80%</field>
|
||||
<field name="code">HKLEAVE221</field>
|
||||
<field name="color">6</field>
|
||||
<field name="country_id" ref="base.hk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
<field name="amount_rate">0.8</field>
|
||||
</record>
|
||||
|
||||
<record id="l10n_hk_work_entry_type_statutory_holiday" model="hr.work.entry.type">
|
||||
<field name="name">Statutory Holiday</field>
|
||||
<field name="code">HKLEAVE500</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.hk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_hk_work_entry_type_public_holiday" model="hr.work.entry.type">
|
||||
<field name="name">Public Holiday</field>
|
||||
<field name="code">HKLEAVE510</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.hk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_hk_work_entry_type_weekend" model="hr.work.entry.type">
|
||||
<field name="name">Weekend</field>
|
||||
<field name="code">HKLEAVE600</field>
|
||||
<field name="color">10</field>
|
||||
<field name="country_id" ref="base.hk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<!-- ID : Indonesia -->
|
||||
<record id="l10n_id_work_entry_type_bereavement_leave" model="hr.work.entry.type">
|
||||
<field name="name">Bereavement Leave</field>
|
||||
<field name="code">IDLEAVE100</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.id"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_id_work_entry_type_marriage_leave" model="hr.work.entry.type">
|
||||
<field name="name">Marriage Leave</field>
|
||||
<field name="code">IDLEAVE110</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.id"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_id_work_entry_type_maternity_leave" model="hr.work.entry.type">
|
||||
<field name="name">Maternity Leave</field>
|
||||
<field name="code">IDLEAVE120</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.id"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_id_work_entry_type_paternity_leave" model="hr.work.entry.type">
|
||||
<field name="name">Paternity Leave</field>
|
||||
<field name="code">IDLEAVE130</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.id"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_id_work_entry_type_public_holiday" model="hr.work.entry.type">
|
||||
<field name="name">Public Holiday</field>
|
||||
<field name="code">IDLEAVE140</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.id"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<!-- JO : Jordan -->
|
||||
<record id="l10n_jo_work_entry_type_sick_leave_unpaid" model="hr.work.entry.type">
|
||||
<field name="name">Sick Leave (Unpaid)</field>
|
||||
<field name="color">7</field>
|
||||
<field name="code">SICKLEAVE0</field>
|
||||
<field name="is_leave" eval="True"/>
|
||||
<field name="country_id" ref="base.jo"/>
|
||||
<field name="amount_rate">1</field> <!-- Unpaid, but treated in a separate rule -->
|
||||
</record>
|
||||
|
||||
<!-- LU : Luxemburg -->
|
||||
<record id="l10n_lu_work_entry_type_situational_unemployment" model="hr.work.entry.type">
|
||||
<field name="name">Situational Unemployment</field>
|
||||
<field name="color">5</field>
|
||||
<field name="code">LEAVE400</field>
|
||||
<field name="country_id" ref="base.lu"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<!-- MX : Mexico -->
|
||||
<record id="l10n_mx_work_entry_type_work_risk_imss" model="hr.work.entry.type">
|
||||
<field name="name">Work risk (IMSS)</field>
|
||||
<field name="color">5</field>
|
||||
<field name="code">LEAVE1000</field>
|
||||
<field name="country_id" ref="base.mx"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_mx_work_entry_type_maternity_imss" model="hr.work.entry.type">
|
||||
<field name="name">Maternity (IMSS)</field>
|
||||
<field name="color">5</field>
|
||||
<field name="code">LEAVE1100</field>
|
||||
<field name="country_id" ref="base.mx"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_mx_work_entry_type_disability_due_to_illness_imss" model="hr.work.entry.type">
|
||||
<field name="name">Disability due to illness (IMSS)</field>
|
||||
<field name="color">5</field>
|
||||
<field name="code">LEAVE1200</field>
|
||||
<field name="country_id" ref="base.mx"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="l10n_mx_work_entry_type_care_children_with_cancer_imss" model="hr.work.entry.type">
|
||||
<field name="name">Medical Leave for Care of Children Diagnosed with Cancer (IMSS)</field>
|
||||
<field name="color">5</field>
|
||||
<field name="code">LEAVE1300</field>
|
||||
<field name="country_id" ref="base.mx"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
</record>
|
||||
|
||||
<!-- PL : Poland -->
|
||||
<record id="l10n_pl_work_entry_type_sick_leave" model="hr.work.entry.type">
|
||||
<field name="name">Sick Time Off (Paid at 80%)</field>
|
||||
<field name="color">4</field>
|
||||
<field name="code">PLSICK3166</field>
|
||||
<field name="country_id" ref="base.pl"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
<field name="amount_rate">0.8</field>
|
||||
</record>
|
||||
|
||||
<!-- SA : Saudi Arabia -->
|
||||
<record id="l10n_sa_work_entry_type_sick_leave_100" model="hr.work.entry.type">
|
||||
<field name="name">Sick Leave (100% Paid)</field>
|
||||
<field name="code">SASICKLEAVE100</field>
|
||||
<field name="is_leave" eval="True"/>
|
||||
<field name="country_id" ref="base.sa"/>
|
||||
</record>
|
||||
<record id="l10n_sa_work_entry_type_sick_leave_75" model="hr.work.entry.type">
|
||||
<field name="name">Sick Leave (75% Paid)</field>
|
||||
<field name="code">SASICKLEAVE75</field>
|
||||
<field name="is_leave" eval="True"/>
|
||||
<field name="country_id" ref="base.sa"/>
|
||||
<field name="amount_rate">0.75</field>
|
||||
</record>
|
||||
<record id="l10n_sa_work_entry_type_sick_leave_0" model="hr.work.entry.type">
|
||||
<field name="name">Sick Leave (Unpaid)</field>
|
||||
<field name="code">SASICKLEAVE0</field>
|
||||
<field name="is_leave" eval="True"/>
|
||||
<field name="country_id" ref="base.sa"/>
|
||||
<field name="amount_rate">0</field>
|
||||
</record>
|
||||
<record id="l10n_sa_work_entry_type_maternity" model="hr.work.entry.type">
|
||||
<field name="name">Maternity Leave</field>
|
||||
<field name="code">SAMATERNITY</field>
|
||||
<field name="is_leave" eval="True"/>
|
||||
<field name="country_id" ref="base.sa"/>
|
||||
</record>
|
||||
<record id="l10n_sa_work_entry_type_emergency" model="hr.work.entry.type">
|
||||
<field name="name">Emergency Leave</field>
|
||||
<field name="code">SAEMERGENCY</field>
|
||||
<field name="is_leave" eval="True"/>
|
||||
<field name="country_id" ref="base.sa"/>
|
||||
</record>
|
||||
|
||||
<!-- SK : Slovakia -->
|
||||
<record id="l10n_sk_work_entry_type_sick_25" model="hr.work.entry.type">
|
||||
<field name="name">Sick Time Off Day 1-3 (Paid at 25%)</field>
|
||||
<field name="code">SICK25</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.sk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
<field name="amount_rate">0.25</field>
|
||||
</record>
|
||||
|
||||
<record id="l10n_sk_work_entry_type_sick_55" model="hr.work.entry.type">
|
||||
<field name="name">Sick Time Off Day 4-10 (Paid at 55%)</field>
|
||||
<field name="code">SICK55</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.sk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
<field name="amount_rate">0.55</field>
|
||||
</record>
|
||||
|
||||
<record id="l10n_sk_work_entry_type_sick_0" model="hr.work.entry.type">
|
||||
<field name="name">Sick Time Off Day up to 52 weeks (Paid at 55% by social security)</field>
|
||||
<field name="code">SICK0</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.sk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
<field name="amount_rate">0.0</field>
|
||||
</record>
|
||||
|
||||
<record id="l10n_sk_work_entry_type_maternity" model="hr.work.entry.type">
|
||||
<field name="name">Maternity Time Off (Paid at 75%)</field>
|
||||
<field name="code">MATERNITY</field>
|
||||
<field name="color">5</field>
|
||||
<field name="country_id" ref="base.sk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
<field name="amount_rate">0.75</field>
|
||||
</record>
|
||||
|
||||
<record id="l10n_sk_work_entry_type_parental_time_off" model="hr.work.entry.type">
|
||||
<field name="name">Parental Time Off</field>
|
||||
<field name="code">PARENTAL</field>
|
||||
<field name="color">8</field>
|
||||
<field name="country_id" ref="base.sk"/>
|
||||
<field name="is_leave" eval="True"/>
|
||||
<field name="amount_rate">0.0</field>
|
||||
</record>
|
||||
|
||||
<!-- US : United States -->
|
||||
<record id="l10n_us_work_entry_type_overtime" model="hr.work.entry.type">
|
||||
<field name="name">Overtime Hours (Paid at 150%)</field>
|
||||
<field name="color">4</field>
|
||||
<field name="code">USOVERTIME150</field>
|
||||
<field name="country_id" ref="base.us"/>
|
||||
<field name="amount_rate">1.5</field>
|
||||
</record>
|
||||
|
||||
<record id="l10n_us_work_entry_type_double" model="hr.work.entry.type">
|
||||
<field name="name">Double Time Hours</field>
|
||||
<field name="color">4</field>
|
||||
<field name="code">USDOUBLE</field>
|
||||
<field name="country_id" ref="base.us"/>
|
||||
<field name="amount_rate">2.0</field>
|
||||
</record>
|
||||
|
||||
<record id="l10n_us_work_entry_type_retro_overtime" model="hr.work.entry.type">
|
||||
<field name="name">Retro Overtime Hours</field>
|
||||
<field name="color">4</field>
|
||||
<field name="code">USRETROOVERTIME</field>
|
||||
<field name="country_id" ref="base.us"/>
|
||||
<field name="amount_rate">1.5</field>
|
||||
</record>
|
||||
|
||||
<record id="l10n_us_work_entry_type_retro_regular" model="hr.work.entry.type">
|
||||
<field name="name">Retro Regular Pay Hours</field>
|
||||
<field name="color">4</field>
|
||||
<field name="code">USRETROREGULAR</field>
|
||||
<field name="country_id" ref="base.us"/>
|
||||
</record>
|
||||
|
||||
</data></odoo>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="ir_cron_generate_missing_work_entries" model="ir.cron">
|
||||
<field name="name">Generate Missing Work Entries</field>
|
||||
<field name="model_id" ref="hr.model_hr_version"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_generate_missing_work_entries()</field>
|
||||
<field name="active" eval="True"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -1,396 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
# Translators:
|
||||
# Martin Trigaux, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-14 05:51+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:52+0000\n"
|
||||
"Last-Translator: Martin Trigaux, 2023\n"
|
||||
"Language-Team: Afrikaans (https://app.transifex.com/odoo/teams/41243/af/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: af\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "%s work entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid "Active"
|
||||
msgstr "Aktief"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__cancelled
|
||||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
msgstr "Kode"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__color
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__color
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__company_id
|
||||
msgid "Company"
|
||||
msgstr "Maatskappy"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Conflicting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__conflict
|
||||
msgid "Conflicts"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Create a new work entry type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Geskep deur"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Geskep op"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr "Beskrywing"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Vertoningsnaam"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__draft
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry
|
||||
msgid "HR Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry_type
|
||||
msgid "HR Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Laas Gewysig op"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Laas Opgedateer deur"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Laas Opgedateer op"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__user_id
|
||||
msgid "Me"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
msgid "Name"
|
||||
msgstr "Naam"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid "No data to display"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_leaves
|
||||
msgid "Resource Time Off Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Search Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
msgid "Search Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__sequence
|
||||
msgid "Sequence"
|
||||
msgstr "Volgorde"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__state
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry_type_unique_work_entry_code
|
||||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Type"
|
||||
msgstr "Soort"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action_conflict
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_calendar
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Work Entry Type Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Work Entry Types"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_has_end
|
||||
msgid "Work entry must end. Please define an end date or a duration."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr ""
|
||||
|
|
@ -1,392 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-14 05:51+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:52+0000\n"
|
||||
"Language-Team: Amharic (https://app.transifex.com/odoo/teams/41243/am/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: am\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "%s work entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__cancelled
|
||||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__color
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__color
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__company_id
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Conflicting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__conflict
|
||||
msgid "Conflicts"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Create a new work entry type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__draft
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry
|
||||
msgid "HR Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry_type
|
||||
msgid "HR Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__user_id
|
||||
msgid "Me"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid "No data to display"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_leaves
|
||||
msgid "Resource Time Off Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Search Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
msgid "Search Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__sequence
|
||||
msgid "Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__state
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry_type_unique_work_entry_code
|
||||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action_conflict
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_calendar
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Work Entry Type Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Work Entry Types"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_has_end
|
||||
msgid "Work entry must end. Please define an end date or a duration."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,396 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
# Translators:
|
||||
# Ivan Shakh, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-14 05:51+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:52+0000\n"
|
||||
"Last-Translator: Ivan Shakh, 2024\n"
|
||||
"Language-Team: Belarusian (https://app.transifex.com/odoo/teams/41243/be/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: be\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "%s work entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr "Архіваваныя"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__cancelled
|
||||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__color
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__color
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__company_id
|
||||
msgid "Company"
|
||||
msgstr "Кампанія"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Conflicting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__conflict
|
||||
msgid "Conflicts"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Create a new work entry type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Стварыў"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Створана"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr "Дата"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr "Апісанне"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Назва для адлюстравання"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__draft
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr "Выпадальнае меню"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry
|
||||
msgid "HR Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry_type
|
||||
msgid "HR Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Апошняя мадыфікацыя"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Апошні абнавіў"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Апошняе абнаўленне"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__user_id
|
||||
msgid "Me"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
msgid "Name"
|
||||
msgstr "Назва"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid "No data to display"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_leaves
|
||||
msgid "Resource Time Off Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Search Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
msgid "Search Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__sequence
|
||||
msgid "Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__state
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry_type_unique_work_entry_code
|
||||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action_conflict
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_calendar
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Work Entry Type Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Work Entry Types"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_has_end
|
||||
msgid "Work entry must end. Please define an end date or a duration."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
1388
odoo-bringout-oca-ocb-hr_work_entry/hr_work_entry/i18n/el.po
Normal file
1388
odoo-bringout-oca-ocb-hr_work_entry/hr_work_entry/i18n/el.po
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
1501
odoo-bringout-oca-ocb-hr_work_entry/hr_work_entry/i18n/es_419.po
Normal file
1501
odoo-bringout-oca-ocb-hr_work_entry/hr_work_entry/i18n/es_419.po
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,407 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
# Translators:
|
||||
# Martin Trigaux, 2023
|
||||
# Wil Odoo, 2023
|
||||
# Fernanda Alvarez, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-14 05:51+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:52+0000\n"
|
||||
"Last-Translator: Fernanda Alvarez, 2023\n"
|
||||
"Language-Team: Spanish (Mexico) (https://app.transifex.com/odoo/teams/41243/es_MX/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: es_MX\n"
|
||||
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "%s work entries"
|
||||
msgstr "%s entradas de trabajo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr "<span>Horas</span>"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid "Active"
|
||||
msgstr "Activo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr "Archivado"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr "Asistencia"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
msgstr "Comenzando"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__cancelled
|
||||
msgid "Cancelled"
|
||||
msgstr "Cancelado"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
msgstr ""
|
||||
"Cuidado, el código se utiliza en muchas referencias, cambiarlo podría "
|
||||
"ocasionar cambios no deseados."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__color
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__color
|
||||
msgid "Color"
|
||||
msgstr "Color"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__company_id
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
msgstr "Conflicto"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Conflicting"
|
||||
msgstr "Contradictorio"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__conflict
|
||||
msgid "Conflicts"
|
||||
msgstr "Conflictos"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Create a new work entry type"
|
||||
msgstr "Crear un nuevo tipo de entrada de trabajo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creado por"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado el"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr "Mes actual"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr "Fecha"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr "Departamento"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nombre en pantalla"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__draft
|
||||
msgid "Draft"
|
||||
msgstr "Borrador"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr "Menú desplegable"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr "Duración"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr "Empleado"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr "Fin"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
msgstr "Desde"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry
|
||||
msgid "HR Work Entry"
|
||||
msgstr "Entrada de trabajo de RR. HH."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry_type
|
||||
msgid "HR Work Entry Type"
|
||||
msgstr "Tipo de entrada de trabajo de RR. HH."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
"Si el campo activo se establece como falso, podrá ocultar el tipo de entrada"
|
||||
" de trabajo sin eliminarla."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Última modificación el"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Última actualización por"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Última actualización el"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__user_id
|
||||
msgid "Me"
|
||||
msgstr "Yo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid "No data to display"
|
||||
msgstr "No hay datos para mostrar"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr "Nota: las entradas de trabajo validadas no se pueden modificar."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_leaves
|
||||
msgid "Resource Time Off Detail"
|
||||
msgstr "Detalle de los recursos de tiempos personales"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Search Work Entry"
|
||||
msgstr "Buscar entrada de trabajo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
msgid "Search Work Entry Type"
|
||||
msgstr "Buscar tipo de entrada de trabajo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__sequence
|
||||
msgid "Sequence"
|
||||
msgstr "Secuencia"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr "Resolver conflictos primero"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr "Fecha de inicio"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
msgstr "La hora de inicio debe ser antes de la hora de finalización."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__state
|
||||
msgid "State"
|
||||
msgstr "Estado"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry_type_unique_work_entry_code
|
||||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr ""
|
||||
"No puede asociar el mismo código a varios tipos de entrada de trabajo."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr "Opciones de tiempo personal"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
msgstr "Hasta"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
msgstr ""
|
||||
"Intente agregar algunos registros o asegúrese de que no haya ningún filtro "
|
||||
"activo en la barra de búsqueda."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr "Indefinido"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined Type"
|
||||
msgstr "Tipo indefinido"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr "Validado"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr "Las entradas de trabajo validadas no se pueden sobreponer"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr "Detalle del trabajo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr "Entradas de trabajo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
msgstr "Empleados de entradas de trabajo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action_conflict
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_calendar
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry"
|
||||
msgstr "Entrada de trabajo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry Name"
|
||||
msgstr "Nombre de la entrada de trabajo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr "Tipo de entrada de trabajo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Work Entry Type Name"
|
||||
msgstr "Nombre del tipo de entrada de trabajo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Work Entry Types"
|
||||
msgstr "Tipos de entradas de trabajo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_has_end
|
||||
msgid "Work entry must end. Please define an end date or a duration."
|
||||
msgstr ""
|
||||
"La entrada de trabajo debe tener un fin. Defina una fecha de finalización o "
|
||||
"una duración."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr "No puede tener el mismo empleado dos veces."
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,396 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
# Translators:
|
||||
# Qaidjohar Barbhaya, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-14 05:51+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:52+0000\n"
|
||||
"Last-Translator: Qaidjohar Barbhaya, 2023\n"
|
||||
"Language-Team: Gujarati (https://app.transifex.com/odoo/teams/41243/gu/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: gu\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "%s work entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid "Active"
|
||||
msgstr "Active"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr "Archived"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__cancelled
|
||||
msgid "Cancelled"
|
||||
msgstr "Cancelled"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
msgstr "Code"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__color
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__color
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__company_id
|
||||
msgid "Company"
|
||||
msgstr "Company"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Conflicting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__conflict
|
||||
msgid "Conflicts"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Create a new work entry type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Created by"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Created on"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Display Name"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__draft
|
||||
msgid "Draft"
|
||||
msgstr "Draft"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
msgstr "From"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry
|
||||
msgid "HR Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry_type
|
||||
msgid "HR Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Last Modified on"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Last Updated by"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Last Updated on"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__user_id
|
||||
msgid "Me"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid "No data to display"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_leaves
|
||||
msgid "Resource Time Off Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Search Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
msgid "Search Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__sequence
|
||||
msgid "Sequence"
|
||||
msgstr "Sequence"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__state
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry_type_unique_work_entry_code
|
||||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
msgstr "To"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr "Validated"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action_conflict
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_calendar
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Work Entry Type Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Work Entry Types"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_has_end
|
||||
msgid "Work entry must end. Please define an end date or a duration."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,392 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-14 05:51+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:52+0000\n"
|
||||
"Language-Team: Armenian (https://app.transifex.com/odoo/teams/41243/hy/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: hy\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "%s work entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__cancelled
|
||||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__color
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__color
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__company_id
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Conflicting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__conflict
|
||||
msgid "Conflicts"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Create a new work entry type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__draft
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry
|
||||
msgid "HR Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry_type
|
||||
msgid "HR Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__user_id
|
||||
msgid "Me"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid "No data to display"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_leaves
|
||||
msgid "Resource Time Off Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Search Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
msgid "Search Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__sequence
|
||||
msgid "Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__state
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry_type_unique_work_entry_code
|
||||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action_conflict
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_calendar
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Work Entry Type Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Work Entry Types"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_has_end
|
||||
msgid "Work entry must end. Please define an end date or a duration."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,397 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
# Translators:
|
||||
# jonasyngvi, 2024
|
||||
# Kristófer Arnþórsson, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-14 05:51+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:52+0000\n"
|
||||
"Last-Translator: Kristófer Arnþórsson, 2024\n"
|
||||
"Language-Team: Icelandic (https://app.transifex.com/odoo/teams/41243/is/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: is\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "%s work entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid "Active"
|
||||
msgstr "Virk"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr "Vistuð"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__cancelled
|
||||
msgid "Cancelled"
|
||||
msgstr "Eytt"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
msgstr "Kóði"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__color
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__color
|
||||
msgid "Color"
|
||||
msgstr "Litur"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__company_id
|
||||
msgid "Company"
|
||||
msgstr "Fyrirtæki"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Conflicting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__conflict
|
||||
msgid "Conflicts"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Create a new work entry type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Búið til af"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Búið til þann"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr "Dagsetning"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr "Lýsing"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Birtingarnafn"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__draft
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry
|
||||
msgid "HR Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry_type
|
||||
msgid "HR Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__id
|
||||
msgid "ID"
|
||||
msgstr "Auðkenni (ID)"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Síðast uppfært af"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Síðast uppfært þann"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__user_id
|
||||
msgid "Me"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
msgid "Name"
|
||||
msgstr "Nafn"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid "No data to display"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_leaves
|
||||
msgid "Resource Time Off Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Search Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
msgid "Search Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__sequence
|
||||
msgid "Sequence"
|
||||
msgstr "Röð"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__state
|
||||
msgid "State"
|
||||
msgstr "Fylki"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry_type_unique_work_entry_code
|
||||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action_conflict
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_calendar
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Work Entry Type Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Work Entry Types"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_has_end
|
||||
msgid "Work entry must end. Please define an end date or a duration."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
1377
odoo-bringout-oca-ocb-hr_work_entry/hr_work_entry/i18n/kab.po
Normal file
1377
odoo-bringout-oca-ocb-hr_work_entry/hr_work_entry/i18n/kab.po
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,400 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
# Translators:
|
||||
# Samkhann Seang <seangsamkhann@gmail.com>, 2023
|
||||
# AN Souphorn <ansouphorn@gmail.com>, 2023
|
||||
# Sengtha Chay <sengtha@gmail.com>, 2023
|
||||
# Lux Sok <sok.lux@gmail.com>, 2023
|
||||
# Chan Nath <channath@gmail.com>, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-14 05:51+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:52+0000\n"
|
||||
"Last-Translator: Chan Nath <channath@gmail.com>, 2023\n"
|
||||
"Language-Team: Khmer (https://app.transifex.com/odoo/teams/41243/km/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: km\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "%s work entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid "Active"
|
||||
msgstr "សកម្ម"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr "ទុកជាឯកសារ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr "វត្តមាន"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__cancelled
|
||||
msgid "Cancelled"
|
||||
msgstr "បានលុបចោល"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
msgstr "កូដ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__color
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__color
|
||||
msgid "Color"
|
||||
msgstr "ពណ៍"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__company_id
|
||||
msgid "Company"
|
||||
msgstr "ក្រុមហ៊ុន"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
msgstr "ទំនាស់"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Conflicting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__conflict
|
||||
msgid "Conflicts"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Create a new work entry type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "បង្កើតដោយ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr "បង្កើតនៅ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr "កាលបរិច្ឆេទ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr "ដេប៉ាតឺម៉ង់"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr "ការពិពណ៌នា"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "ឈ្មោះសំរាប់បង្ហាញ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__draft
|
||||
msgid "Draft"
|
||||
msgstr "ព្រៀង"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr "ម៉ឺនុយទម្លាក់ចុះ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr "អំឡុងពេល"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr "បុគ្គលិក"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
msgstr "មកពី"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry
|
||||
msgid "HR Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry_type
|
||||
msgid "HR Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__id
|
||||
msgid "ID"
|
||||
msgstr "អត្តសញ្ញាណ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "កាលបរិច្ឆេតកែប្រែចុងក្រោយ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "ផ្លាស់ប្តូរចុងក្រោយ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "ផ្លាស់ប្តូរចុងក្រោយ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__user_id
|
||||
msgid "Me"
|
||||
msgstr "ខ្ងុំ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
msgid "Name"
|
||||
msgstr "ឈ្មោះ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid "No data to display"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_leaves
|
||||
msgid "Resource Time Off Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Search Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
msgid "Search Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__sequence
|
||||
msgid "Sequence"
|
||||
msgstr "លំដាប់"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr "កាលបរិច្ឆេទចាប់ផ្តើម"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__state
|
||||
msgid "State"
|
||||
msgstr "ទីតំាង"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry_type_unique_work_entry_code
|
||||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
msgstr "ទៅ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Type"
|
||||
msgstr "ប្រភេទ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr "មិនបានកំណត់"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr "បានធ្វើឱ្យមានសុពលភាព"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr "ព៌តមានការងារ។"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action_conflict
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_calendar
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Work Entry Type Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Work Entry Types"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_has_end
|
||||
msgid "Work entry must end. Please define an end date or a duration."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
1379
odoo-bringout-oca-ocb-hr_work_entry/hr_work_entry/i18n/ku.po
Normal file
1379
odoo-bringout-oca-ocb-hr_work_entry/hr_work_entry/i18n/ku.po
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,23 +1,37 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~12.5\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-08-26 08:16+0000\n"
|
||||
"POT-Creation-Date: 2023-05-16 13:48+0000\n"
|
||||
"PO-Revision-Date: 2019-08-26 09:11+0000\n"
|
||||
"Language-Team: Luxembourgish (https://www.transifex.com/odoo/teams/41243/lb/)\n"
|
||||
"Language: lb\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: lb\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
msgid "%s work entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
msgid ""
|
||||
"<span class=\"o_stat_text\">\n"
|
||||
" Work Entries\n"
|
||||
" </span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span class=\"ml8\">Hours</span>"
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
|
|
@ -28,11 +42,17 @@ msgid "Active"
|
|||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
|
|
@ -44,8 +64,9 @@ msgid "Cancelled"
|
|||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry__code
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Careful, the Code is used in many references, changing it could lead to unwanted changes."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
|
|
@ -59,11 +80,6 @@ msgstr ""
|
|||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__confirmed
|
||||
msgid "Confirmed"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
|
|
@ -93,11 +109,27 @@ msgstr ""
|
|||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
|
|
@ -111,17 +143,29 @@ msgid "Draft"
|
|||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__external_code
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__external_code
|
||||
msgid "External Code"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
|
|
@ -137,6 +181,11 @@ msgstr ""
|
|||
msgid "HR Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_employee__has_work_entries
|
||||
msgid "Has Work Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
|
|
@ -146,16 +195,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgid "If the active field is set to false, it will allow you to hide the work entry type without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
|
|
@ -177,11 +217,6 @@ msgstr ""
|
|||
msgid "Me"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "My Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
|
|
@ -189,9 +224,19 @@ msgid "Name"
|
|||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Period"
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.overtime_work_entry_type
|
||||
msgid "Overtime Hours"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__code
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Payroll Code"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
|
|
@ -215,12 +260,16 @@ msgid "Sequence"
|
|||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. openerp-web
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
|
|
@ -236,6 +285,11 @@ msgstr ""
|
|||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
|
|
@ -246,16 +300,32 @@ msgstr ""
|
|||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
msgid "Undefined"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
msgid "Undefined Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry__external_code
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__external_code
|
||||
msgid "Use this code to export your data to a third party"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. openerp-web
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "We found some conflicts,"
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
|
|
@ -263,6 +333,11 @@ msgstr ""
|
|||
msgid "Work Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
|
|
@ -286,6 +361,7 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -308,10 +384,3 @@ msgstr ""
|
|||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. openerp-web
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "click here to revise them"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -1,399 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
# Translators:
|
||||
# sackda chanthasombath, 2023
|
||||
# Phoxaysy Sengchanthanouvong <phoxaysy@gmail.com>, 2023
|
||||
# ສີສຸວັນ ສັງບົວບຸລົມ <sisouvan@gmail.com>, 2023
|
||||
# Martin Trigaux, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-14 05:51+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:52+0000\n"
|
||||
"Last-Translator: Martin Trigaux, 2023\n"
|
||||
"Language-Team: Lao (https://app.transifex.com/odoo/teams/41243/lo/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: lo\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "%s work entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid "Active"
|
||||
msgstr "ໃຊ້ຢູ່"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr "ສຳເນົາໄວ້ແລ້ວ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__cancelled
|
||||
msgid "Cancelled"
|
||||
msgstr "ຖືກຍົກເລີກແລ້ວ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
msgstr "ລະຫັດ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__color
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__color
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__company_id
|
||||
msgid "Company"
|
||||
msgstr "ບໍລິສັດ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Conflicting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__conflict
|
||||
msgid "Conflicts"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Create a new work entry type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "ສ້າງໂດຍ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr "ສ້າງເມື່ອ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr "ວັນທີ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr "ຫ້ອງການ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr "ຄຳອະທິບາຍ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "ຊື່ເຕັມ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__draft
|
||||
msgid "Draft"
|
||||
msgstr "ຕົວທົດລອງ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr "ກຳນົດເວລາ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr "ພະນັກງານ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry
|
||||
msgid "HR Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry_type
|
||||
msgid "HR Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__id
|
||||
msgid "ID"
|
||||
msgstr "ເລກລຳດັບ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "ແກ້ໄຂລ້າສຸດເມື່ອ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "ປັບປຸງລ້າສຸດໂດຍ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "ປັບປຸງລ້າສຸດເມື່ອ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__user_id
|
||||
msgid "Me"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
msgid "Name"
|
||||
msgstr "ຊື່"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid "No data to display"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_leaves
|
||||
msgid "Resource Time Off Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Search Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
msgid "Search Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__sequence
|
||||
msgid "Sequence"
|
||||
msgstr "ລຳດັບ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr "ວັນທີເລີ່ມ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__state
|
||||
msgid "State"
|
||||
msgstr "ແຂວງ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry_type_unique_work_entry_code
|
||||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Type"
|
||||
msgstr "ປະເພດ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr "ກວດກາເຫັນດີເເລ້ວ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action_conflict
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_calendar
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Work Entry Type Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Work Entry Types"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_has_end
|
||||
msgid "Work entry must end. Please define an end date or a duration."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,397 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
# Translators:
|
||||
# Niyas Raphy, 2023
|
||||
# Hasna <hasnausmantu@gmail.com>, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-14 05:51+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:52+0000\n"
|
||||
"Last-Translator: Hasna <hasnausmantu@gmail.com>, 2023\n"
|
||||
"Language-Team: Malayalam (https://app.transifex.com/odoo/teams/41243/ml/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: ml\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "%s work entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid "Active"
|
||||
msgstr "ആക്റ്റീവ്"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr "ആർക്കൈവ് ചെയ്തു"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr "അറ്റന്റൻസ് "
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__cancelled
|
||||
msgid "Cancelled"
|
||||
msgstr "റദ്ദാക്കി"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
msgstr "കോഡ്"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__color
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__color
|
||||
msgid "Color"
|
||||
msgstr "കളർ"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__company_id
|
||||
msgid "Company"
|
||||
msgstr "കമ്പനി"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Conflicting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__conflict
|
||||
msgid "Conflicts"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Create a new work entry type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "ഉണ്ടാക്കിയത്"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr "സൃഷ്ടിച്ചത്"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr "തീയതി"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr "വകുപ്പ്"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr "വിവരണം"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "ഡിസ്പ്ലേ നെയിം"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__draft
|
||||
msgid "Draft"
|
||||
msgstr "ഡ്രാഫ്റ്റ്"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr "ദൈർഘ്യം"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr "എംപ്ലോയീ "
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr "അവസാനം"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry
|
||||
msgid "HR Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry_type
|
||||
msgid "HR Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__id
|
||||
msgid "ID"
|
||||
msgstr "ഐഡി"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "അവസാനം അപ്ഡേറ്റ് ചെയ്തത്"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "അവസാനം അപ്ഡേറ്റ് ചെയ്തത്"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "അവസാനം അപ്ഡേറ്റ് ചെയ്തത്"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__user_id
|
||||
msgid "Me"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
msgid "Name"
|
||||
msgstr "പേര്"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid "No data to display"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_leaves
|
||||
msgid "Resource Time Off Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Search Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
msgid "Search Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__sequence
|
||||
msgid "Sequence"
|
||||
msgstr "സീക്വൻസ് "
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr "ആരംഭിക്കുന്ന തീയതി"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__state
|
||||
msgid "State"
|
||||
msgstr "സ്റ്റേറ്റ്"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry_type_unique_work_entry_code
|
||||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Type"
|
||||
msgstr "ടൈപ്പ്"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action_conflict
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_calendar
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Work Entry Type Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Work Entry Types"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_has_end
|
||||
msgid "Work entry must end. Please define an end date or a duration."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,398 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
# Translators:
|
||||
# Niyas Raphy, 2022
|
||||
# Mehjabin Farsana, 2023
|
||||
# Imran Pathan, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-14 05:51+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:52+0000\n"
|
||||
"Last-Translator: Imran Pathan, 2024\n"
|
||||
"Language-Team: Malay (https://app.transifex.com/odoo/teams/41243/ms/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: ms\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "%s work entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid "Active"
|
||||
msgstr "Aktif"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr "Diarkibkan"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__cancelled
|
||||
msgid "Cancelled"
|
||||
msgstr "Dibatalkan"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
msgstr "Kod"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__color
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__color
|
||||
msgid "Color"
|
||||
msgstr "Warna"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__company_id
|
||||
msgid "Company"
|
||||
msgstr "Syarikat"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Conflicting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__conflict
|
||||
msgid "Conflicts"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Create a new work entry type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Dicipta oleh"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Dicipta pada"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr "Tarikh"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr "Jabatan"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr "Penerangan"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nama paparan"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__draft
|
||||
msgid "Draft"
|
||||
msgstr "Draf"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr "Tempoh"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr "Pekerja"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
msgstr "Daripada"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry
|
||||
msgid "HR Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry_type
|
||||
msgid "HR Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Terakhir Diubah suai pada"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Kemas Kini Terakhir oleh"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Kemas Kini Terakhir pada"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__user_id
|
||||
msgid "Me"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
msgid "Name"
|
||||
msgstr "Nama"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid "No data to display"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_leaves
|
||||
msgid "Resource Time Off Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Search Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
msgid "Search Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__sequence
|
||||
msgid "Sequence"
|
||||
msgstr "Urutan"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr "Tarikh mula"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__state
|
||||
msgid "State"
|
||||
msgstr "negeri"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry_type_unique_work_entry_code
|
||||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
msgstr "To"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Type"
|
||||
msgstr "taip"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr "Tidak ditentukan"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr "Validated"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action_conflict
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_calendar
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Work Entry Type Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Work Entry Types"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_has_end
|
||||
msgid "Work entry must end. Please define an end date or a duration."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr ""
|
||||
1380
odoo-bringout-oca-ocb-hr_work_entry/hr_work_entry/i18n/my.po
Normal file
1380
odoo-bringout-oca-ocb-hr_work_entry/hr_work_entry/i18n/my.po
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,392 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-14 05:51+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:52+0000\n"
|
||||
"Language-Team: Norwegian (https://app.transifex.com/odoo/teams/41243/no/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: no\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "%s work entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__cancelled
|
||||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__color
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__color
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__company_id
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Conflicting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__conflict
|
||||
msgid "Conflicts"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Create a new work entry type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__draft
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry
|
||||
msgid "HR Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry_type
|
||||
msgid "HR Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__user_id
|
||||
msgid "Me"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid "No data to display"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_leaves
|
||||
msgid "Resource Time Off Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Search Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
msgid "Search Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__sequence
|
||||
msgid "Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__state
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry_type_unique_work_entry_code
|
||||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action_conflict
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_calendar
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Work Entry Type Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Work Entry Types"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_has_end
|
||||
msgid "Work entry must end. Please define an end date or a duration."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,406 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
# Translators:
|
||||
# Uros Kalajdzic <ukalajdzic@gmail.com>, 2022
|
||||
# Martin Trigaux, 2022
|
||||
# Dragan Vukosavljevic <dragan.vukosavljevic@gmail.com>, 2023
|
||||
# Milan Bojovic <mbojovic@outlook.com>, 2023
|
||||
# コフスタジオ, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-14 05:51+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:52+0000\n"
|
||||
"Last-Translator: コフスタジオ, 2024\n"
|
||||
"Language-Team: Serbian (https://app.transifex.com/odoo/teams/41243/sr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: sr\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "%s work entries"
|
||||
msgstr "%s work entries"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr "<span>Sati</span>"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid "Active"
|
||||
msgstr "Aktivno"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr "Arhivirano"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr "Prisustvo"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
msgstr "Početak"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__cancelled
|
||||
msgid "Cancelled"
|
||||
msgstr "Otkazano"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
msgstr ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
msgstr "Kod"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__color
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__color
|
||||
msgid "Color"
|
||||
msgstr "Boja"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__company_id
|
||||
msgid "Company"
|
||||
msgstr "Kompanija"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
msgstr "Sukob"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Conflicting"
|
||||
msgstr "Preklapanje"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__conflict
|
||||
msgid "Conflicts"
|
||||
msgstr "Preklapanja"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Create a new work entry type"
|
||||
msgstr "Create a new work entry type"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Kreirao"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Kreirano"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr "Current Month"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr "Odeljenje"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr "Opis"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Naziv za prikaz"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__draft
|
||||
msgid "Draft"
|
||||
msgstr "Priprema"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr "Padajući meni"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr "Trajanje"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr "Zaposleni"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr "Kraj"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
msgstr "Od"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry
|
||||
msgid "HR Work Entry"
|
||||
msgstr "HR Radni unos"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry_type
|
||||
msgid "HR Work Entry Type"
|
||||
msgstr "Vrsta unosa rada HR"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Poslednja izmena dana"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Poslednje izmenio/la"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Poslednje ažuriranje dana"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__user_id
|
||||
msgid "Me"
|
||||
msgstr "Ja"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
msgid "Name"
|
||||
msgstr "Ime"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid "No data to display"
|
||||
msgstr "Nema podataka za prikaz"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr "Note: Validated work entries cannot be modified."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_leaves
|
||||
msgid "Resource Time Off Detail"
|
||||
msgstr "Resource Time Off Detail"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Search Work Entry"
|
||||
msgstr "Search Work Entry"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
msgid "Search Work Entry Type"
|
||||
msgstr "Search Work Entry Type"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__sequence
|
||||
msgid "Sequence"
|
||||
msgstr "Niz"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr "Solve conflicts first"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr "Početni datum"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
msgstr "Starting time should be before end time."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__state
|
||||
msgid "State"
|
||||
msgstr "Stanje"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry_type_unique_work_entry_code
|
||||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr "The same code cannot be associated to multiple work entry types."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr "Time Off Options"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
msgstr "Za"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
msgstr ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Type"
|
||||
msgstr "Vrsta"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr "Nedefinisano"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined Type"
|
||||
msgstr "Undefined Type"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr "Potvrđeno"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr "Validated work entries cannot overlap"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr "Work Detail"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr "Work Entries"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
msgstr "Work Entries Employees"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action_conflict
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_calendar
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry"
|
||||
msgstr "Work Entry"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry Name"
|
||||
msgstr "Work Entry Name"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr "Vrsta unosa posla"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Work Entry Type Name"
|
||||
msgstr "Work Entry Type Name"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Work Entry Types"
|
||||
msgstr "Work Entry Types"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_has_end
|
||||
msgid "Work entry must end. Please define an end date or a duration."
|
||||
msgstr "Work entry must end. Please define an end date or a duration."
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr "You cannot have the same employee twice."
|
||||
1384
odoo-bringout-oca-ocb-hr_work_entry/hr_work_entry/i18n/sr@latin.po
Normal file
1384
odoo-bringout-oca-ocb-hr_work_entry/hr_work_entry/i18n/sr@latin.po
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,392 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-14 05:51+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:52+0000\n"
|
||||
"Language-Team: Swahili (https://app.transifex.com/odoo/teams/41243/sw/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: sw\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "%s work entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__cancelled
|
||||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__color
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__color
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__company_id
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Conflicting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__conflict
|
||||
msgid "Conflicts"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Create a new work entry type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__draft
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry
|
||||
msgid "HR Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry_type
|
||||
msgid "HR Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__user_id
|
||||
msgid "Me"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid "No data to display"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_leaves
|
||||
msgid "Resource Time Off Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Search Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
msgid "Search Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__sequence
|
||||
msgid "Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__state
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry_type_unique_work_entry_code
|
||||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action_conflict
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_calendar
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Work Entry Type Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Work Entry Types"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_has_end
|
||||
msgid "Work entry must end. Please define an end date or a duration."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr ""
|
||||
|
|
@ -1,392 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_work_entry
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-14 05:51+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:52+0000\n"
|
||||
"Language-Team: Tamil (https://app.transifex.com/odoo/teams/41243/ta/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: ta\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "%s work entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "<span>Hours</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__active
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:hr.work.entry.type,name:hr_work_entry.work_entry_type_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "Beginning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__cancelled
|
||||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid ""
|
||||
"Careful, the Code is used in many references, changing it could lead to "
|
||||
"unwanted changes."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__code
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__color
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__color
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__company_id
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__conflict
|
||||
msgid "Conflict"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Conflicting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__conflict
|
||||
msgid "Conflicts"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Create a new work entry type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__create_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__display_name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__draft
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__duration
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__employee_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_tree
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_start
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry
|
||||
msgid "HR Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_work_entry_type
|
||||
msgid "HR Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,help:hr_work_entry.field_hr_work_entry_type__active
|
||||
msgid ""
|
||||
"If the active field is set to false, it will allow you to hide the work "
|
||||
"entry type without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry____last_update
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__write_date
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_user_work_entry_employee__user_id
|
||||
msgid "Me"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__name
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__name
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid "No data to display"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Note: Validated work entries cannot be modified."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_leaves
|
||||
msgid "Resource Time Off Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Search Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_search
|
||||
msgid "Search Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry_type__sequence
|
||||
msgid "Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_work_entry/static/src/xml/work_entry_templates.xml:0
|
||||
#, python-format
|
||||
msgid "Solve conflicts first"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Start Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_start_before_end
|
||||
msgid "Starting time should be before end time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__state
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry_type_unique_work_entry_code
|
||||
msgid "The same code cannot be associated to multiple work entry types."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Time Off Options"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__date_stop
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.actions.act_window,help:hr_work_entry.hr_work_entry_action
|
||||
msgid ""
|
||||
"Try to add some records, or make sure that there is no active filter in the "
|
||||
"search bar."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_search
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#. odoo-python
|
||||
#: code:addons/hr_work_entry/models/hr_work_entry.py:0
|
||||
#, python-format
|
||||
msgid "Undefined Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields.selection,name:hr_work_entry.selection__hr_work_entry__state__validated
|
||||
msgid "Validated"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entries_no_validated_conflict
|
||||
msgid "Validated work entries cannot overlap"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_employee_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_pivot
|
||||
msgid "Work Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model,name:hr_work_entry.model_hr_user_work_entry_employee
|
||||
msgid "Work Entries Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_action_conflict
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_calendar
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_view_form
|
||||
msgid "Work Entry Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_hr_work_entry__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_attendance__work_entry_type_id
|
||||
#: model:ir.model.fields,field_description:hr_work_entry.field_resource_calendar_leaves__work_entry_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.resource_calendar_leaves_view_search_inherit
|
||||
msgid "Work Entry Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_work_entry.hr_work_entry_type_view_form
|
||||
msgid "Work Entry Type Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.actions.act_window,name:hr_work_entry.hr_work_entry_type_action
|
||||
msgid "Work Entry Types"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_work_entry__work_entry_has_end
|
||||
msgid "Work entry must end. Please define an end date or a duration."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_work_entry
|
||||
#: model:ir.model.constraint,message:hr_work_entry.constraint_hr_user_work_entry_employee_user_id_employee_id_unique
|
||||
msgid "You cannot have the same employee twice."
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
1675
odoo-bringout-oca-ocb-hr_work_entry/hr_work_entry/i18n/uz.po
Normal file
1675
odoo-bringout-oca-ocb-hr_work_entry/hr_work_entry/i18n/uz.po
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -2,5 +2,10 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import hr_work_entry
|
||||
from . import resource
|
||||
from . import hr_work_entry_type
|
||||
from . import hr_user_work_entry_employee
|
||||
from . import resource_calendar
|
||||
from . import resource_calendar_attendance
|
||||
from . import resource_calendar_leaves
|
||||
from . import hr_employee
|
||||
from . import hr_version
|
||||
|
|
|
|||
|
|
@ -1,11 +1,38 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models, _
|
||||
from odoo import models, fields, _
|
||||
from odoo.tools import SQL
|
||||
|
||||
|
||||
class HrEmployee(models.Model):
|
||||
_inherit = 'hr.employee'
|
||||
|
||||
has_work_entries = fields.Boolean(compute='_compute_has_work_entries', groups="base.group_system,hr.group_hr_user")
|
||||
work_entry_source = fields.Selection(readonly=False, related="version_id.work_entry_source", inherited=True, groups="hr.group_hr_manager")
|
||||
work_entry_source_calendar_invalid = fields.Boolean(related="version_id.work_entry_source_calendar_invalid", inherited=True, groups="hr.group_hr_manager")
|
||||
|
||||
def _compute_has_work_entries(self):
|
||||
if self.ids:
|
||||
result = dict(self.env.execute_query(SQL(
|
||||
""" SELECT id, EXISTS(SELECT 1 FROM hr_work_entry WHERE employee_id = e.id LIMIT 1)
|
||||
FROM hr_employee e
|
||||
WHERE id in %s """,
|
||||
tuple(self.ids),
|
||||
)))
|
||||
else:
|
||||
result = {}
|
||||
|
||||
for employee in self:
|
||||
employee.has_work_entries = result.get(employee._origin.id, False)
|
||||
|
||||
def create_version(self, values):
|
||||
new_version = super().create_version(values)
|
||||
new_version.update({
|
||||
'date_generated_from': fields.Datetime.now().replace(hour=0, minute=0, second=0, microsecond=0),
|
||||
'date_generated_to': fields.Datetime.now().replace(hour=0, minute=0, second=0, microsecond=0),
|
||||
})
|
||||
return new_version
|
||||
|
||||
def action_open_work_entries(self, initial_date=False):
|
||||
self.ensure_one()
|
||||
ctx = {'default_employee_id': self.id}
|
||||
|
|
@ -14,8 +41,19 @@ class HrEmployee(models.Model):
|
|||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'name': _('%s work entries', self.display_name),
|
||||
'view_mode': 'calendar,tree,form',
|
||||
'view_mode': 'calendar,list,form',
|
||||
'res_model': 'hr.work.entry',
|
||||
'path': 'work-entries',
|
||||
'context': ctx,
|
||||
'domain': [('employee_id', '=', self.id)],
|
||||
}
|
||||
|
||||
def generate_work_entries(self, date_start, date_stop, force=False):
|
||||
date_start = fields.Date.to_date(date_start)
|
||||
date_stop = fields.Date.to_date(date_stop)
|
||||
|
||||
if self:
|
||||
versions = self._get_versions_with_contract_overlap_with_period(date_start, date_stop)
|
||||
else:
|
||||
versions = self._get_all_versions_with_contract_overlap_with_period(date_start, date_stop)
|
||||
return versions.generate_work_entries(date_start, date_stop, force=force)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class HrUserWorkEntryEmployee(models.Model):
|
||||
""" Personnal calendar filter """
|
||||
|
||||
_name = 'hr.user.work.entry.employee'
|
||||
_description = 'Work Entries Employees'
|
||||
|
||||
user_id = fields.Many2one('res.users', 'Me', required=True, default=lambda self: self.env.user, ondelete='cascade')
|
||||
employee_id = fields.Many2one('hr.employee', 'Employee', required=True)
|
||||
active = fields.Boolean('Active', default=True)
|
||||
is_checked = fields.Boolean(default=True)
|
||||
|
||||
_user_id_employee_id_unique = models.Constraint(
|
||||
'UNIQUE(user_id,employee_id)',
|
||||
'You cannot have the same employee twice.',
|
||||
)
|
||||
|
|
@ -0,0 +1,727 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import itertools
|
||||
from collections import defaultdict
|
||||
from datetime import datetime, date, time, timedelta
|
||||
import pytz
|
||||
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
from odoo import api, fields, models, _, SUPERUSER_ID
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.fields import Command, Domain
|
||||
from odoo.tools import ormcache, float_is_zero
|
||||
from odoo.tools.intervals import Intervals
|
||||
|
||||
|
||||
class HrVersion(models.Model):
|
||||
_inherit = 'hr.version'
|
||||
|
||||
date_generated_from = fields.Datetime(string='Generated From', readonly=True, required=True,
|
||||
default=lambda self: datetime.now().replace(hour=0, minute=0, second=0, microsecond=0),
|
||||
groups="hr.group_hr_user", tracking=True)
|
||||
date_generated_to = fields.Datetime(string='Generated To', readonly=True, required=True,
|
||||
default=lambda self: datetime.now().replace(hour=0, minute=0, second=0, microsecond=0),
|
||||
groups="hr.group_hr_user", tracking=True)
|
||||
last_generation_date = fields.Date(string='Last Generation Date', readonly=True, groups="hr.group_hr_user", tracking=True)
|
||||
work_entry_source = fields.Selection([('calendar', 'Working Schedule')], required=True, default='calendar', tracking=True, help='''
|
||||
Defines the source for work entries generation
|
||||
|
||||
Working Schedule: Work entries will be generated from the working hours below.
|
||||
Attendances: Work entries will be generated from the employee's attendances. (requires Attendance app)
|
||||
Planning: Work entries will be generated from the employee's planning. (requires Planning app)
|
||||
''', groups="hr.group_hr_manager")
|
||||
work_entry_source_calendar_invalid = fields.Boolean(
|
||||
compute='_compute_work_entry_source_calendar_invalid',
|
||||
groups="hr.group_hr_manager",
|
||||
)
|
||||
|
||||
@api.depends('work_entry_source', 'resource_calendar_id')
|
||||
def _compute_work_entry_source_calendar_invalid(self):
|
||||
for version in self:
|
||||
version.work_entry_source_calendar_invalid = version.work_entry_source == 'calendar' and not version.resource_calendar_id
|
||||
|
||||
@ormcache()
|
||||
def _get_default_work_entry_type_id(self):
|
||||
attendance = self.env.ref('hr_work_entry.work_entry_type_attendance', raise_if_not_found=False)
|
||||
return attendance.id if attendance else False
|
||||
|
||||
@ormcache()
|
||||
def _get_default_work_entry_type_overtime_id(self):
|
||||
attendance = self.env.ref('hr_work_entry.work_entry_type_overtime', raise_if_not_found=False)
|
||||
return attendance.id if attendance else False
|
||||
|
||||
def _get_leave_work_entry_type_dates(self, leave, date_from, date_to, employee):
|
||||
return self._get_leave_work_entry_type(leave)
|
||||
|
||||
def _get_leave_work_entry_type(self, leave):
|
||||
return leave.work_entry_type_id
|
||||
|
||||
# Is used to add more values, for example planning_slot_id
|
||||
def _get_more_vals_attendance_interval(self, interval):
|
||||
return []
|
||||
|
||||
# Is used to add more values, for example leave_id (in hr_work_entry_holidays)
|
||||
def _get_more_vals_leave_interval(self, interval, leaves):
|
||||
return []
|
||||
|
||||
def _get_bypassing_work_entry_type_codes(self):
|
||||
return []
|
||||
|
||||
def _get_interval_leave_work_entry_type(self, interval, leaves, bypassing_codes):
|
||||
# returns the work entry time related to the leave that
|
||||
# includes the whole interval.
|
||||
# Overriden in hr_work_entry_holiday to select the
|
||||
# global time off first (eg: Public Holiday > Home Working)
|
||||
self.ensure_one()
|
||||
for leave in leaves:
|
||||
if interval[0] >= leave[0] and interval[1] <= leave[1] and leave[2]:
|
||||
interval_start = interval[0].astimezone(pytz.utc).replace(tzinfo=None)
|
||||
interval_stop = interval[1].astimezone(pytz.utc).replace(tzinfo=None)
|
||||
return self._get_leave_work_entry_type_dates(leave[2], interval_start, interval_stop, self.employee_id)
|
||||
return self.env.ref('hr_work_entry.work_entry_type_leave')
|
||||
|
||||
def _get_sub_leave_domain(self):
|
||||
return Domain('calendar_id', 'in', [False] + self.resource_calendar_id.ids)
|
||||
|
||||
def _get_leave_domain(self, start_dt, end_dt):
|
||||
domain = Domain([
|
||||
('resource_id', 'in', [False] + self.employee_id.resource_id.ids),
|
||||
('date_from', '<=', end_dt.replace(tzinfo=None)),
|
||||
('date_to', '>=', start_dt.replace(tzinfo=None)),
|
||||
('company_id', 'in', [False] + self.env.companies.ids),
|
||||
])
|
||||
return domain & self._get_sub_leave_domain()
|
||||
|
||||
def _get_resource_calendar_leaves(self, start_dt, end_dt):
|
||||
return self.env['resource.calendar.leaves'].search(self._get_leave_domain(start_dt, end_dt))
|
||||
|
||||
def _get_attendance_intervals(self, start_dt, end_dt):
|
||||
assert start_dt.tzinfo and end_dt.tzinfo, "function expects localized date"
|
||||
# {resource: intervals}
|
||||
employees_by_calendar = defaultdict(lambda: self.env['hr.employee'])
|
||||
for version in self:
|
||||
if version.work_entry_source != 'calendar':
|
||||
continue
|
||||
employees_by_calendar[version.resource_calendar_id] |= version.employee_id
|
||||
result = dict()
|
||||
for calendar, employees in employees_by_calendar.items():
|
||||
if not calendar:
|
||||
for employee in employees:
|
||||
result.update({employee.resource_id.id: Intervals([(start_dt, end_dt, self.env['resource.calendar.attendance'])])})
|
||||
else:
|
||||
result.update(calendar._attendance_intervals_batch(
|
||||
start_dt,
|
||||
end_dt,
|
||||
resources=employees.resource_id,
|
||||
tz=pytz.timezone(calendar.tz) if calendar.tz else pytz.utc
|
||||
))
|
||||
return result
|
||||
|
||||
def _get_lunch_intervals(self, start_dt, end_dt):
|
||||
# {resource: intervals}
|
||||
employees_by_calendar = defaultdict(lambda: self.env['hr.employee'])
|
||||
for version in self:
|
||||
employees_by_calendar[version.resource_calendar_id] |= version.employee_id
|
||||
result = {}
|
||||
for calendar, employees in employees_by_calendar.items():
|
||||
if not calendar:
|
||||
continue
|
||||
result.update(calendar._attendance_intervals_batch(
|
||||
start_dt,
|
||||
end_dt,
|
||||
resources=employees.resource_id,
|
||||
tz=pytz.timezone(calendar.tz),
|
||||
lunch=True,
|
||||
))
|
||||
return result
|
||||
|
||||
def _get_interval_work_entry_type(self, interval):
|
||||
self.ensure_one()
|
||||
if 'work_entry_type_id' in interval[2] and interval[2].work_entry_type_id[:1]:
|
||||
return interval[2].work_entry_type_id[:1]
|
||||
return self.env['hr.work.entry.type'].browse(self._get_default_work_entry_type_id())
|
||||
|
||||
def _get_valid_leave_intervals(self, attendances, interval):
|
||||
self.ensure_one()
|
||||
return [interval]
|
||||
|
||||
@api.model
|
||||
def _get_whitelist_fields_from_template(self):
|
||||
return super()._get_whitelist_fields_from_template() + ['work_entry_source']
|
||||
|
||||
# Meant for behavior override
|
||||
def _get_real_attendance_work_entry_vals(self, intervals):
|
||||
self.ensure_one()
|
||||
vals = []
|
||||
employee = self.employee_id
|
||||
for interval in intervals:
|
||||
work_entry_type = self._get_interval_work_entry_type(interval)
|
||||
# All benefits generated here are using datetimes converted from the employee's timezone
|
||||
vals += [dict([
|
||||
('name', "%s: %s" % (work_entry_type.name, employee.name)),
|
||||
('date_start', interval[0].astimezone(pytz.utc).replace(tzinfo=None)),
|
||||
('date_stop', interval[1].astimezone(pytz.utc).replace(tzinfo=None)),
|
||||
('work_entry_type_id', work_entry_type.id),
|
||||
('employee_id', employee.id),
|
||||
('version_id', self.id),
|
||||
('company_id', self.company_id.id),
|
||||
] + self._get_more_vals_attendance_interval(interval))]
|
||||
return vals
|
||||
|
||||
def _get_version_work_entries_values(self, date_start, date_stop):
|
||||
start_dt = pytz.utc.localize(date_start) if not date_start.tzinfo else date_start
|
||||
end_dt = pytz.utc.localize(date_stop) if not date_stop.tzinfo else date_stop
|
||||
version_vals = []
|
||||
bypassing_work_entry_type_codes = self._get_bypassing_work_entry_type_codes()
|
||||
|
||||
attendances_by_resource = self.sudo()._get_attendance_intervals(start_dt, end_dt)
|
||||
|
||||
resource_calendar_leaves = self._get_resource_calendar_leaves(start_dt, end_dt)
|
||||
# {resource: resource_calendar_leaves}
|
||||
leaves_by_resource = defaultdict(lambda: self.env['resource.calendar.leaves'])
|
||||
for leave in resource_calendar_leaves:
|
||||
leaves_by_resource[leave.resource_id.id] |= leave
|
||||
|
||||
tz_dates = {}
|
||||
for version in self:
|
||||
employee = version.employee_id
|
||||
calendar = version.resource_calendar_id
|
||||
resource = employee.resource_id
|
||||
# if the version is fully flexible, we refer to the employee's timezone
|
||||
tz = pytz.timezone(resource.tz) if version._is_fully_flexible() else pytz.timezone(calendar.tz)
|
||||
attendances = attendances_by_resource[resource.id]
|
||||
|
||||
# Other calendars: In case the employee has declared time off in another calendar
|
||||
# Example: Take a time off, then a credit time.
|
||||
resources_list = [self.env['resource.resource'], resource]
|
||||
leave_result = defaultdict(list)
|
||||
work_result = defaultdict(list)
|
||||
for leave in itertools.chain(leaves_by_resource[False], leaves_by_resource[resource.id]):
|
||||
for resource in resources_list:
|
||||
# Global time off is not for this calendar, can happen with multiple calendars in self
|
||||
if resource and leave.calendar_id and leave.calendar_id != calendar and not leave.resource_id:
|
||||
continue
|
||||
tz = tz if tz else pytz.timezone((resource or version).tz)
|
||||
if (tz, start_dt) in tz_dates:
|
||||
start = tz_dates[tz, start_dt]
|
||||
else:
|
||||
start = start_dt.astimezone(tz)
|
||||
tz_dates[tz, start_dt] = start
|
||||
if (tz, end_dt) in tz_dates:
|
||||
end = tz_dates[tz, end_dt]
|
||||
else:
|
||||
end = end_dt.astimezone(tz)
|
||||
tz_dates[tz, end_dt] = end
|
||||
dt0 = leave.date_from.astimezone(tz)
|
||||
dt1 = leave.date_to.astimezone(tz)
|
||||
leave_start_dt = max(start, dt0)
|
||||
leave_end_dt = min(end, dt1)
|
||||
leave_interval = (leave_start_dt, leave_end_dt, leave)
|
||||
leave_interval = version._get_valid_leave_intervals(attendances, leave_interval)
|
||||
if leave_interval:
|
||||
if leave.time_type == 'leave':
|
||||
leave_result[resource.id] += leave_interval
|
||||
else:
|
||||
work_result[resource.id] += leave_interval
|
||||
mapped_leaves = {r.id: Intervals(leave_result[r.id], keep_distinct=True) for r in resources_list}
|
||||
mapped_worked_leaves = {r.id: Intervals(work_result[r.id], keep_distinct=True) for r in resources_list}
|
||||
|
||||
leaves = mapped_leaves[resource.id]
|
||||
worked_leaves = mapped_worked_leaves[resource.id]
|
||||
|
||||
real_attendances = attendances - leaves - worked_leaves
|
||||
if not calendar:
|
||||
real_leaves = leaves
|
||||
real_worked_leaves = worked_leaves
|
||||
elif calendar.flexible_hours:
|
||||
# Flexible hours case
|
||||
# For multi day leaves, we want them to occupy the virtual working schedule 12 AM to average working days
|
||||
# For one day leaves, we want them to occupy exactly the time it was taken, for a time off in days
|
||||
# this will mean the virtual schedule and for time off in hours the chosen hours
|
||||
one_day_leaves = Intervals([l for l in leaves if l[0].date() == l[1].date()], keep_distinct=True)
|
||||
one_day_worked_leaves = Intervals([l for l in worked_leaves if l[0].date() == l[1].date()], keep_distinct=True)
|
||||
multi_day_leaves = leaves - one_day_leaves
|
||||
multi_day_worked_leaves = worked_leaves - one_day_worked_leaves
|
||||
static_attendances = calendar._attendance_intervals_batch(
|
||||
start_dt, end_dt, resources=resource, tz=tz)[resource.id]
|
||||
real_leaves = (static_attendances & multi_day_leaves) | one_day_leaves
|
||||
real_worked_leaves = (static_attendances & multi_day_worked_leaves) | one_day_worked_leaves
|
||||
|
||||
elif version.has_static_work_entries() or not leaves:
|
||||
# Empty leaves means empty real_leaves
|
||||
real_worked_leaves = attendances - real_attendances - leaves
|
||||
real_leaves = attendances - real_attendances - real_worked_leaves
|
||||
else:
|
||||
# In the case of attendance based versions use regular attendances to generate leave intervals
|
||||
static_attendances = calendar._attendance_intervals_batch(
|
||||
start_dt, end_dt, resources=resource, tz=tz)[resource.id]
|
||||
real_leaves = static_attendances & leaves
|
||||
real_worked_leaves = static_attendances & worked_leaves
|
||||
|
||||
real_attendances = self._get_real_attendances(attendances, leaves, worked_leaves)
|
||||
|
||||
if not version.has_static_work_entries():
|
||||
# An attendance based version might have an invalid planning, by definition it may not happen with
|
||||
# static work entries.
|
||||
# Creating overlapping slots for example might lead to a single work entry.
|
||||
# In that case we still create both work entries to indicate a problem (conflicting W E).
|
||||
split_attendances = []
|
||||
for attendance in real_attendances:
|
||||
if attendance[2] and len(attendance[2]) > 1:
|
||||
split_attendances += [(attendance[0], attendance[1], a) for a in attendance[2]]
|
||||
else:
|
||||
split_attendances += [attendance]
|
||||
real_attendances = split_attendances
|
||||
|
||||
# A leave period can be linked to several resource.calendar.leave
|
||||
split_leaves = []
|
||||
for leave_interval in leaves:
|
||||
if leave_interval[2] and len(leave_interval[2]) > 1:
|
||||
split_leaves += [(leave_interval[0], leave_interval[1], l) for l in leave_interval[2]]
|
||||
else:
|
||||
split_leaves += [(leave_interval[0], leave_interval[1], leave_interval[2])]
|
||||
leaves = split_leaves
|
||||
|
||||
split_worked_leaves = []
|
||||
for worked_leave_interval in real_worked_leaves:
|
||||
if worked_leave_interval[2] and len(worked_leave_interval[2]) > 1:
|
||||
split_worked_leaves += [(worked_leave_interval[0], worked_leave_interval[1], l) for l in worked_leave_interval[2]]
|
||||
else:
|
||||
split_worked_leaves += [(worked_leave_interval[0], worked_leave_interval[1], worked_leave_interval[2])]
|
||||
real_worked_leaves = split_worked_leaves
|
||||
|
||||
# Attendances
|
||||
version_vals += version._get_real_attendance_work_entry_vals(real_attendances)
|
||||
|
||||
for interval in real_worked_leaves:
|
||||
work_entry_type = version._get_interval_leave_work_entry_type(interval, worked_leaves, bypassing_work_entry_type_codes)
|
||||
# All benefits generated here are using datetimes converted from the employee's timezone
|
||||
version_vals += [dict([
|
||||
('name', "%s: %s" % (work_entry_type.name, employee.name)),
|
||||
('date_start', interval[0].astimezone(pytz.utc).replace(tzinfo=None)),
|
||||
('date_stop', interval[1].astimezone(pytz.utc).replace(tzinfo=None)),
|
||||
('work_entry_type_id', work_entry_type.id),
|
||||
('employee_id', employee.id),
|
||||
('version_id', version.id),
|
||||
('company_id', version.company_id.id),
|
||||
('state', 'draft'),
|
||||
] + version._get_more_vals_leave_interval(interval, worked_leaves))]
|
||||
|
||||
leaves_over_attendances = Intervals(leaves, keep_distinct=True) & real_leaves
|
||||
for interval in real_leaves:
|
||||
# Could happen when a leave is configured on the interface on a day for which the
|
||||
# employee is not supposed to work, i.e. no attendance_ids on the calendar.
|
||||
# In that case, do try to generate an empty work entry, as this would raise a
|
||||
# sql constraint error
|
||||
if interval[0] == interval[1]: # if start == stop
|
||||
continue
|
||||
leaves_over_interval = [l for l in leaves_over_attendances if l[0] >= interval[0] and l[1] <= interval[1]]
|
||||
for leave_interval in [(l[0], l[1], interval[2]) for l in leaves_over_interval]:
|
||||
leave_entry_type = version._get_interval_leave_work_entry_type(leave_interval, leaves, bypassing_work_entry_type_codes)
|
||||
interval_leaves = [leave for leave in leaves if leave[2].work_entry_type_id.id == leave_entry_type.id]
|
||||
if not interval_leaves:
|
||||
# Maybe the computed leave type is not found. In that case, we use all leaves
|
||||
interval_leaves = leaves
|
||||
interval_start = leave_interval[0].astimezone(pytz.utc).replace(tzinfo=None)
|
||||
interval_stop = leave_interval[1].astimezone(pytz.utc).replace(tzinfo=None)
|
||||
version_vals += [dict([
|
||||
('name', "%s%s" % (leave_entry_type.name + ": " if leave_entry_type else "", employee.name)),
|
||||
('date_start', interval_start),
|
||||
('date_stop', interval_stop),
|
||||
('work_entry_type_id', leave_entry_type.id),
|
||||
('employee_id', employee.id),
|
||||
('company_id', version.company_id.id),
|
||||
('version_id', version.id),
|
||||
] + version._get_more_vals_leave_interval(interval, interval_leaves))]
|
||||
return version_vals
|
||||
|
||||
# will override in attendance bridge to add overtime vals
|
||||
def _get_real_attendances(self, attendances, leaves, worked_leaves):
|
||||
return attendances - leaves - worked_leaves
|
||||
|
||||
def _get_work_entries_values(self, date_start, date_stop):
|
||||
"""
|
||||
Generate a work_entries list between date_start and date_stop for one version.
|
||||
:return: list of dictionnary.
|
||||
"""
|
||||
if isinstance(date_start, datetime):
|
||||
version_vals = self._get_version_work_entries_values(date_start, date_stop)
|
||||
else:
|
||||
version_vals = []
|
||||
versions_by_tz = defaultdict(lambda: self.env['hr.version'])
|
||||
for version in self:
|
||||
versions_by_tz[version.resource_calendar_id.tz] += version
|
||||
for version_tz, versions in versions_by_tz.items():
|
||||
tz = pytz.timezone(version_tz) if version_tz else pytz.utc
|
||||
version_vals += versions._get_version_work_entries_values(
|
||||
tz.localize(date_start),
|
||||
tz.localize(date_stop))
|
||||
|
||||
# {version_id: ([dates_start], [dates_stop])}
|
||||
mapped_version_dates = defaultdict(lambda: ([], []))
|
||||
for x in version_vals:
|
||||
mapped_version_dates[x['version_id']][0].append(x['date_start'])
|
||||
mapped_version_dates[x['version_id']][1].append(x['date_stop'])
|
||||
|
||||
for version in self:
|
||||
# If we generate work_entries which exceeds date_start or date_stop, we change boundaries on version
|
||||
if version_vals:
|
||||
# Handle empty work entries for certain versions, could happen on an attendance based version
|
||||
# NOTE: this does not handle date_stop or date_start not being present in vals
|
||||
dates_stop = mapped_version_dates[version.id][1]
|
||||
if dates_stop:
|
||||
date_stop_max = max(dates_stop)
|
||||
if date_stop_max > version.date_generated_to:
|
||||
version.date_generated_to = date_stop_max
|
||||
|
||||
dates_start = mapped_version_dates[version.id][0]
|
||||
if dates_start:
|
||||
date_start_min = min(dates_start)
|
||||
if date_start_min < version.date_generated_from:
|
||||
version.date_generated_from = date_start_min
|
||||
|
||||
return version_vals
|
||||
|
||||
def has_static_work_entries(self):
|
||||
# Static work entries as in the same are to be generated each month
|
||||
# Useful to differentiate attendance based versions from regular ones
|
||||
self.ensure_one()
|
||||
return self.work_entry_source == 'calendar'
|
||||
|
||||
def generate_work_entries(self, date_start, date_stop, force=False):
|
||||
# Generate work entries between 2 dates (datetime.date)
|
||||
# To correctly englobe the period, the start and end periods are converted
|
||||
# using the calendar timezone.
|
||||
assert not isinstance(date_start, datetime)
|
||||
assert not isinstance(date_stop, datetime)
|
||||
|
||||
date_start = datetime.combine(fields.Datetime.to_datetime(date_start), datetime.min.time())
|
||||
date_stop = datetime.combine(fields.Datetime.to_datetime(date_stop), datetime.max.time())
|
||||
|
||||
versions_by_company_tz = defaultdict(lambda: self.env['hr.version'])
|
||||
for version in self:
|
||||
versions_by_company_tz[
|
||||
version.company_id,
|
||||
(version.resource_calendar_id or version.employee_id).tz,
|
||||
] += version
|
||||
utc = pytz.timezone('UTC')
|
||||
new_work_entries = self.env['hr.work.entry']
|
||||
for (company, version_tz), versions in versions_by_company_tz.items():
|
||||
tz = pytz.timezone(version_tz) if version_tz else utc
|
||||
date_start_tz = tz.localize(date_start).astimezone(utc).replace(tzinfo=None)
|
||||
date_stop_tz = tz.localize(date_stop).astimezone(utc).replace(tzinfo=None)
|
||||
new_work_entries += versions.with_user(SUPERUSER_ID).with_company(company)._generate_work_entries(
|
||||
date_start_tz, date_stop_tz, force=force)
|
||||
return new_work_entries
|
||||
|
||||
def _generate_work_entries(self, date_start, date_stop, force=False):
|
||||
# Generate work entries between 2 dates (datetime.datetime)
|
||||
# This method considers that the dates are correctly localized
|
||||
# based on the target timezone
|
||||
assert isinstance(date_start, datetime)
|
||||
assert isinstance(date_stop, datetime)
|
||||
self = self.with_context(tracking_disable=True) # noqa: PLW0642
|
||||
vals_list = []
|
||||
self.write({'last_generation_date': fields.Date.today()})
|
||||
|
||||
intervals_to_generate = defaultdict(lambda: self.env['hr.version'])
|
||||
# In case the date_generated_from == date_generated_to, move it to the date_start to
|
||||
# avoid trying to generate several months/years of history for old versions for which
|
||||
# we've never generated the work entries.
|
||||
self.filtered(lambda c: c.date_generated_from == c.date_generated_to).write({
|
||||
'date_generated_from': date_start,
|
||||
'date_generated_to': date_start,
|
||||
})
|
||||
domain_to_nullify = Domain(False)
|
||||
work_entry_null_vals = {field: False for field in self.env["hr.work.entry.regeneration.wizard"]._work_entry_fields_to_nullify()}
|
||||
|
||||
for tz, versions in self.grouped("tz").items():
|
||||
tz = pytz.timezone(tz) if tz else pytz.utc
|
||||
for version in versions:
|
||||
if not version.contract_date_start:
|
||||
continue
|
||||
|
||||
version_start = tz.localize(fields.Datetime.to_datetime(version.date_start)).astimezone(pytz.utc).replace(tzinfo=None)
|
||||
version_stop = tz.localize(datetime.combine(fields.Datetime.to_datetime(version.date_end or date_stop),
|
||||
datetime.max.time())).astimezone(pytz.utc).replace(tzinfo=None)
|
||||
if version_stop < date_stop:
|
||||
if version.date_generated_from != version.date_generated_to:
|
||||
domain_to_nullify |= Domain([
|
||||
('version_id', '=', version.id),
|
||||
('date', '>', version_stop.astimezone(tz)),
|
||||
('date', '<=', date_stop.astimezone(tz)),
|
||||
('state', '!=', 'validated'),
|
||||
])
|
||||
if date_start > version_stop or date_stop < version_start:
|
||||
continue
|
||||
date_start_work_entries = max(date_start, version_start)
|
||||
date_stop_work_entries = min(date_stop, version_stop)
|
||||
if force:
|
||||
domain_to_nullify |= Domain([
|
||||
('version_id', '=', version.id),
|
||||
('date', '>=', date_start_work_entries.astimezone(tz).date()),
|
||||
('date', '<=', date_stop_work_entries.astimezone(tz).date()),
|
||||
('state', '!=', 'validated'),
|
||||
])
|
||||
intervals_to_generate[date_start_work_entries, date_stop_work_entries] |= version
|
||||
continue
|
||||
|
||||
# For each version, we found each interval we must generate
|
||||
# In some cases we do not want to set the generated dates beforehand, since attendance based work entries
|
||||
# is more dynamic, we want to update the dates within the _get_work_entries_values function
|
||||
last_generated_from = min(version.date_generated_from, version_stop)
|
||||
if last_generated_from > date_start_work_entries:
|
||||
version.date_generated_from = date_start_work_entries
|
||||
intervals_to_generate[date_start_work_entries, last_generated_from] |= version
|
||||
|
||||
last_generated_to = max(version.date_generated_to, version_start)
|
||||
if last_generated_to < date_stop_work_entries:
|
||||
version.date_generated_to = date_stop_work_entries
|
||||
intervals_to_generate[last_generated_to, date_stop_work_entries] |= version
|
||||
|
||||
for interval, versions in intervals_to_generate.items():
|
||||
date_from, date_to = interval
|
||||
vals_list.extend(versions._get_work_entries_values(date_from, date_to))
|
||||
|
||||
if domain_to_nullify != Domain.FALSE:
|
||||
work_entries_to_nullify = self.env['hr.work.entry'].search(domain_to_nullify)
|
||||
work_entries_to_nullify.write(work_entry_null_vals)
|
||||
|
||||
if not vals_list:
|
||||
return self.env['hr.work.entry']
|
||||
|
||||
vals_list = self._generate_work_entries_postprocess(vals_list)
|
||||
return self.env['hr.work.entry'].create(vals_list)
|
||||
|
||||
@api.model
|
||||
def _generate_work_entries_postprocess_adapt_to_calendar(self, vals):
|
||||
if 'work_entry_type_id' not in vals:
|
||||
return False
|
||||
return self.env['hr.work.entry.type'].browse(vals['work_entry_type_id']).is_leave
|
||||
|
||||
@api.model
|
||||
def _generate_work_entries_postprocess(self, vals_list):
|
||||
# Convert date_start/date_stop to date/duration
|
||||
# Split work entries over 2 days due to timezone conversion
|
||||
# Regroup work entries of the same type
|
||||
mapped_periods = defaultdict(lambda: defaultdict(lambda: self.env['hr.employee']))
|
||||
cached_periods = defaultdict(float)
|
||||
tz_by_version = {}
|
||||
|
||||
def _get_tz(version_id):
|
||||
if version_id in tz_by_version:
|
||||
return tz_by_version[version_id]
|
||||
version = self.env['hr.version'].browse(version_id)
|
||||
tz = version.resource_calendar_id.tz or version.employee_id.resource_calendar_id.tz or version.company_id.resource_calendar_id.tz
|
||||
if not tz:
|
||||
raise UserError(_('Missing timezone for work entries generation.'))
|
||||
tz = pytz.timezone(tz)
|
||||
tz_by_version[version_id] = tz
|
||||
return tz
|
||||
|
||||
new_vals_list = []
|
||||
for vals in vals_list:
|
||||
new_vals = vals.copy()
|
||||
if not new_vals.get('date_start') or not new_vals.get('date_stop'):
|
||||
new_vals.pop('date_start', False)
|
||||
new_vals.pop('date_stop', False)
|
||||
if 'duration' not in new_vals or 'date' not in new_vals:
|
||||
raise UserError(_('Missing date or duration on work entry'))
|
||||
new_vals_list.append(new_vals)
|
||||
continue
|
||||
|
||||
date_start_utc = new_vals['date_start'] if new_vals['date_start'].tzinfo else pytz.UTC.localize(new_vals['date_start'])
|
||||
date_stop_utc = new_vals['date_stop'] if new_vals['date_stop'].tzinfo else pytz.UTC.localize(new_vals['date_stop'])
|
||||
|
||||
tz = _get_tz(new_vals['version_id'])
|
||||
local_start = date_start_utc.astimezone(tz)
|
||||
local_stop = date_stop_utc.astimezone(tz)
|
||||
|
||||
# Handle multi-local-day spans
|
||||
current = local_start + timedelta(microseconds=1) if local_start.time() == datetime.max.time() else local_start
|
||||
while current < local_stop:
|
||||
next_local_midnight = tz.localize(datetime.combine(current.date() + timedelta(days=1), time.min) - timedelta(microseconds=1))
|
||||
segment_end = min(local_stop, next_local_midnight)
|
||||
|
||||
partial_vals = new_vals.copy()
|
||||
|
||||
# Convert partial segment back to UTC for consistency
|
||||
partial_vals['date_start'] = current.astimezone(pytz.UTC)
|
||||
partial_vals['date_stop'] = segment_end.astimezone(pytz.UTC)
|
||||
|
||||
new_vals_list.append(partial_vals)
|
||||
|
||||
current = segment_end + timedelta(microseconds=1)
|
||||
|
||||
vals_list = new_vals_list
|
||||
|
||||
for vals in vals_list:
|
||||
if not vals.get('date_start') or not vals.get('date_stop'):
|
||||
continue
|
||||
date_start = vals['date_start']
|
||||
date_stop = vals['date_stop']
|
||||
tz = _get_tz(vals['version_id'])
|
||||
if not self._generate_work_entries_postprocess_adapt_to_calendar(vals):
|
||||
vals['date'] = date_start.astimezone(tz).date()
|
||||
if 'duration' in vals:
|
||||
continue
|
||||
elif (date_start, date_stop) in cached_periods:
|
||||
vals['duration'] = cached_periods[date_start, date_stop]
|
||||
else:
|
||||
dt = date_stop - date_start
|
||||
duration = round(dt.total_seconds()) / 3600 # Number of hours
|
||||
cached_periods[date_start, date_stop] = duration
|
||||
vals['duration'] = duration
|
||||
continue
|
||||
version = self.env['hr.version'].browse(vals['version_id'])
|
||||
calendar = version.resource_calendar_id
|
||||
if not calendar:
|
||||
vals['date'] = date_start.astimezone(tz).date()
|
||||
vals['duration'] = 0.0
|
||||
continue
|
||||
employee = version.employee_id
|
||||
mapped_periods[date_start, date_stop][calendar] |= employee
|
||||
|
||||
# {(date_start, date_stop): {calendar: {'hours': foo}}}
|
||||
mapped_version_data = defaultdict(lambda: defaultdict(lambda: {'hours': 0.0}))
|
||||
for (date_start, date_stop), employees_by_calendar in mapped_periods.items():
|
||||
for calendar, employees in employees_by_calendar.items():
|
||||
mapped_version_data[date_start, date_stop][calendar] = employees._get_work_days_data_batch(
|
||||
date_start, date_stop, compute_leaves=False, calendar=calendar)
|
||||
|
||||
for vals in vals_list:
|
||||
if 'duration' not in vals:
|
||||
date_start = vals['date_start']
|
||||
date_stop = vals['date_stop']
|
||||
version = self.env['hr.version'].browse(vals['version_id'])
|
||||
calendar = version.resource_calendar_id
|
||||
employee = version.employee_id
|
||||
tz = _get_tz(vals['version_id'])
|
||||
vals['date'] = date_start.astimezone(tz).date()
|
||||
vals['duration'] = mapped_version_data[date_start, date_stop][calendar][employee.id]['hours'] if calendar else 0.0
|
||||
vals.pop('date_start', False)
|
||||
vals.pop('date_stop', False)
|
||||
|
||||
# Now merge similar work entries on the same day
|
||||
merged_vals = {}
|
||||
for vals in vals_list:
|
||||
if float_is_zero(vals['duration'], 3):
|
||||
continue
|
||||
key = (
|
||||
vals['date'],
|
||||
vals.get('work_entry_type_id', False),
|
||||
vals['employee_id'],
|
||||
vals['version_id'],
|
||||
vals.get('company_id', False),
|
||||
)
|
||||
if key in merged_vals:
|
||||
merged_vals[key]['duration'] += vals.get('duration', 0.0)
|
||||
else:
|
||||
merged_vals[key] = vals.copy()
|
||||
return list(merged_vals.values())
|
||||
|
||||
def _remove_work_entries(self):
|
||||
''' Remove all work_entries that are outside contract period (function used after writing new start or/and end date) '''
|
||||
all_we_to_unlink = self.env['hr.work.entry']
|
||||
for version in self:
|
||||
date_start = fields.Datetime.to_datetime(version.date_start)
|
||||
if version.date_generated_from < date_start:
|
||||
we_to_remove = self.env['hr.work.entry'].search([('date', '<', date_start), ('version_id', '=', version.id)])
|
||||
if we_to_remove:
|
||||
version.date_generated_from = date_start
|
||||
all_we_to_unlink |= we_to_remove
|
||||
if not version.date_end:
|
||||
continue
|
||||
date_end = datetime.combine(version.date_end, datetime.max.time())
|
||||
if version.date_generated_to > date_end:
|
||||
we_to_remove = self.env['hr.work.entry'].search([('date', '>', date_end), ('version_id', '=', version.id)])
|
||||
if we_to_remove:
|
||||
version.date_generated_to = date_end
|
||||
all_we_to_unlink |= we_to_remove
|
||||
all_we_to_unlink.unlink()
|
||||
|
||||
def _cancel_work_entries(self):
|
||||
if not self:
|
||||
return
|
||||
domains = []
|
||||
for version in self:
|
||||
date_start = fields.Datetime.to_datetime(version.date_start)
|
||||
version_domain = Domain([
|
||||
('version_id', '=', version.id),
|
||||
('date', '>=', date_start),
|
||||
])
|
||||
if version.date_end:
|
||||
date_end = datetime.combine(version.date_end, datetime.max.time())
|
||||
version_domain &= Domain('date', '<=', date_end)
|
||||
domains.append(version_domain)
|
||||
domain = Domain.OR(domains) & Domain('state', '!=', 'validated')
|
||||
work_entries = self.env['hr.work.entry'].sudo().search(domain)
|
||||
if work_entries:
|
||||
work_entries.unlink()
|
||||
|
||||
def write(self, vals):
|
||||
result = super().write(vals)
|
||||
if self.env.context.get('salary_simulation'):
|
||||
return result
|
||||
if vals.get('contract_date_end') or vals.get('contract_date_start') or vals.get('date_version'):
|
||||
self.sudo()._remove_work_entries()
|
||||
dependent_fields = self._get_fields_that_recompute_we()
|
||||
if any(key in dependent_fields for key in vals):
|
||||
for version_sudo in self.sudo():
|
||||
date_from = max(version_sudo.date_start, version_sudo.date_generated_from.date())
|
||||
date_to = min(version_sudo.date_end or date.max, version_sudo.date_generated_to.date())
|
||||
if date_from != date_to and self.employee_id:
|
||||
version_sudo._recompute_work_entries(date_from, date_to)
|
||||
return result
|
||||
|
||||
def unlink(self):
|
||||
self._cancel_work_entries()
|
||||
return super().unlink()
|
||||
|
||||
def _recompute_work_entries(self, date_from, date_to):
|
||||
self.ensure_one()
|
||||
if self.employee_id:
|
||||
wizard = self.env['hr.work.entry.regeneration.wizard'].create({
|
||||
'employee_ids': [Command.set(self.employee_id.ids)],
|
||||
'date_from': date_from,
|
||||
'date_to': date_to,
|
||||
})
|
||||
wizard.with_context(work_entry_skip_validation=True, active_test=False).regenerate_work_entries()
|
||||
|
||||
def _get_fields_that_recompute_we(self):
|
||||
# Returns the fields that should recompute the work entries
|
||||
return ['resource_calendar_id', 'work_entry_source']
|
||||
|
||||
@api.model
|
||||
def _cron_generate_missing_work_entries(self):
|
||||
# retrieve versions for the current month
|
||||
today = fields.Date.today()
|
||||
start = datetime.combine(today + relativedelta(day=1), time.min)
|
||||
stop = datetime.combine(today + relativedelta(months=1, day=31), time.max)
|
||||
all_versions = self.env['hr.employee']._get_all_versions_with_contract_overlap_with_period(start.date(), stop.date())
|
||||
# determine versions to do (the ones whose generated dates have open periods this month)
|
||||
versions_todo = all_versions.filtered(
|
||||
lambda v:
|
||||
(v.date_generated_from > start or v.date_generated_to < stop) and
|
||||
(not v.last_generation_date or v.last_generation_date < today))
|
||||
if not versions_todo:
|
||||
return
|
||||
version_todo_count = len(versions_todo)
|
||||
# Filter versions by company, work entries generation is not supposed to be called on
|
||||
# versions from differents companies, as we will retrieve the resource.calendar.leave
|
||||
# and we don't want to mix everything up. The other versions will be treated when the
|
||||
# cron is re-triggered
|
||||
versions_todo = versions_todo.filtered(lambda v: v.company_id == versions_todo[0].company_id)
|
||||
# generate a batch of work entries
|
||||
BATCH_SIZE = 100
|
||||
# Since attendance based are more volatile for their work entries generation
|
||||
# it can happen that the date_generated_from and date_generated_to fields are not
|
||||
# pushed to start and stop
|
||||
# It is more interesting for batching to process statically generated work entries first
|
||||
# since we get benefits from having multiple versions on the same calendar
|
||||
versions_todo = versions_todo.sorted(key=lambda v: 1 if v.has_static_work_entries() else 100)
|
||||
versions_todo = versions_todo[:BATCH_SIZE].generate_work_entries(start.date(), stop.date(), False)
|
||||
# if necessary, retrigger the cron to generate more work entries
|
||||
if version_todo_count > BATCH_SIZE:
|
||||
self.env.ref('hr_work_entry.ir_cron_generate_missing_work_entries')._trigger()
|
||||
|
|
@ -1,68 +1,68 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import itertools
|
||||
from collections import defaultdict
|
||||
from contextlib import contextmanager
|
||||
from datetime import datetime, time, timedelta
|
||||
from itertools import chain
|
||||
|
||||
from dateutil.relativedelta import relativedelta
|
||||
import pytz
|
||||
from psycopg2 import OperationalError
|
||||
|
||||
from odoo import _, api, fields, models, tools
|
||||
from odoo.osv import expression
|
||||
from odoo import _, api, fields, models
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
from odoo.fields import Domain
|
||||
from odoo.tools import float_compare
|
||||
from odoo.tools.intervals import Intervals
|
||||
|
||||
|
||||
class HrWorkEntry(models.Model):
|
||||
_name = 'hr.work.entry'
|
||||
_description = 'HR Work Entry'
|
||||
_order = 'conflict desc,state,date_start'
|
||||
_order = 'create_date'
|
||||
|
||||
name = fields.Char(required=True, compute='_compute_name', store=True, readonly=False)
|
||||
name = fields.Char()
|
||||
active = fields.Boolean(default=True)
|
||||
employee_id = fields.Many2one('hr.employee', required=True, domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]", index=True)
|
||||
date_start = fields.Datetime(required=True, string='From')
|
||||
date_stop = fields.Datetime(compute='_compute_date_stop', store=True, readonly=False, string='To')
|
||||
duration = fields.Float(compute='_compute_duration', store=True, string="Duration", readonly=False)
|
||||
work_entry_type_id = fields.Many2one('hr.work.entry.type', index=True, default=lambda self: self.env['hr.work.entry.type'].search([], limit=1))
|
||||
version_id = fields.Many2one('hr.version', string="Employee Record", required=True, index=True)
|
||||
work_entry_source = fields.Selection(related='version_id.work_entry_source')
|
||||
date = fields.Date(required=True)
|
||||
duration = fields.Float(string="Duration", default=8)
|
||||
work_entry_type_id = fields.Many2one(
|
||||
'hr.work.entry.type',
|
||||
index=True,
|
||||
default=lambda self: self.env['hr.work.entry.type'].search([], limit=1),
|
||||
domain=lambda self: self._get_work_entry_type_domain())
|
||||
display_code = fields.Char(related='work_entry_type_id.display_code')
|
||||
code = fields.Char(related='work_entry_type_id.code')
|
||||
external_code = fields.Char(related='work_entry_type_id.external_code')
|
||||
color = fields.Integer(related='work_entry_type_id.color', readonly=True)
|
||||
state = fields.Selection([
|
||||
('draft', 'Draft'),
|
||||
('validated', 'Validated'),
|
||||
('conflict', 'Conflict'),
|
||||
('draft', 'New'),
|
||||
('conflict', 'In Conflict'),
|
||||
('validated', 'In Payslip'),
|
||||
('cancelled', 'Cancelled')
|
||||
], default='draft')
|
||||
company_id = fields.Many2one('res.company', string='Company', readonly=True, required=True,
|
||||
default=lambda self: self.env.company)
|
||||
conflict = fields.Boolean('Conflicts', compute='_compute_conflict', store=True) # Used to show conflicting work entries first
|
||||
department_id = fields.Many2one('hr.department', related='employee_id.department_id', store=True)
|
||||
amount_rate = fields.Float("Pay rate")
|
||||
country_id = fields.Many2one('res.country', related='employee_id.company_id.country_id', search='_search_country_id')
|
||||
|
||||
# There is no way for _error_checking() to detect conflicts in work
|
||||
# entries that have been introduced in concurrent transactions, because of the transaction
|
||||
# isolation.
|
||||
# So if 2 transactions create work entries in parallel it is possible to create a conflict
|
||||
# that will not be visible by either transaction. There is no way to detect conflicts
|
||||
# between different records in a safe manner unless a SQL constraint is used, e.g. via
|
||||
# an EXCLUSION constraint [1]. This (obscure) type of constraint allows comparing 2 rows
|
||||
# using special operator classes and it also supports partial WHERE clauses. Similarly to
|
||||
# CHECK constraints, it's backed by an index.
|
||||
# 1: https://www.postgresql.org/docs/9.6/sql-createtable.html#SQL-CREATETABLE-EXCLUDE
|
||||
_sql_constraints = [
|
||||
('_work_entry_has_end', 'check (date_stop IS NOT NULL)', 'Work entry must end. Please define an end date or a duration.'),
|
||||
('_work_entry_start_before_end', 'check (date_stop > date_start)', 'Starting time should be before end time.'),
|
||||
(
|
||||
'_work_entries_no_validated_conflict',
|
||||
"""
|
||||
EXCLUDE USING GIST (
|
||||
tsrange(date_start, date_stop, '()') WITH &&,
|
||||
int4range(employee_id, employee_id, '[]') WITH =
|
||||
)
|
||||
WHERE (state = 'validated' AND active = TRUE)
|
||||
""",
|
||||
'Validated work entries cannot overlap'
|
||||
),
|
||||
]
|
||||
# FROM 7s by query to 2ms (with 2.6 millions entries)
|
||||
_contract_date_start_stop_idx = models.Index("(version_id, date) WHERE state IN ('draft', 'validated')")
|
||||
|
||||
def init(self):
|
||||
tools.create_index(self._cr, "hr_work_entry_date_start_date_stop_index", self._table, ["date_start", "date_stop"])
|
||||
@api.constrains('duration')
|
||||
def _check_duration(self):
|
||||
for work_entry in self:
|
||||
if float_compare(work_entry.duration, 0, 3) <= 0 or float_compare(work_entry.duration, 24, 3) > 0:
|
||||
raise ValidationError(self.env._("Duration must be positive and cannot exceed 24 hours."))
|
||||
|
||||
@api.depends('display_code', 'duration')
|
||||
def _compute_display_name(self):
|
||||
for work_entry in self:
|
||||
duration = str(timedelta(hours=work_entry.duration)).split(":")
|
||||
work_entry.display_name = "%s - %sh%s" % (work_entry.work_entry_type_id.name, duration[0], duration[1])
|
||||
|
||||
@api.depends('work_entry_type_id', 'employee_id')
|
||||
def _compute_name(self):
|
||||
|
|
@ -77,45 +77,41 @@ class HrWorkEntry(models.Model):
|
|||
for rec in self:
|
||||
rec.conflict = rec.state == 'conflict'
|
||||
|
||||
@api.depends('date_stop', 'date_start')
|
||||
def _compute_duration(self):
|
||||
durations = self._get_duration_batch()
|
||||
for work_entry in self:
|
||||
work_entry.duration = durations[work_entry.id]
|
||||
@api.onchange('employee_id', 'date')
|
||||
def _onchange_version_id(self):
|
||||
vals = {
|
||||
'employee_id': self.employee_id.id,
|
||||
'date': self.date,
|
||||
}
|
||||
try:
|
||||
res = self._set_current_contract(vals)
|
||||
except ValidationError:
|
||||
return
|
||||
if version_id := res.get('version_id'):
|
||||
self.version_id = version_id
|
||||
|
||||
@api.depends('date_start', 'duration')
|
||||
def _compute_date_stop(self):
|
||||
for work_entry in self.filtered(lambda w: w.date_start and w.duration):
|
||||
work_entry.date_stop = work_entry.date_start + relativedelta(hours=work_entry.duration)
|
||||
@api.model
|
||||
def _set_current_contract(self, vals):
|
||||
if not vals.get('version_id') and vals.get('date') and vals.get('employee_id'):
|
||||
employee = self.env['hr.employee'].browse(vals.get('employee_id'))
|
||||
active_version = employee._get_version(vals['date'])
|
||||
return dict(vals, version_id=active_version.id)
|
||||
return vals
|
||||
|
||||
def _get_duration_batch(self):
|
||||
result = {}
|
||||
cached_periods = defaultdict(float)
|
||||
for work_entry in self:
|
||||
date_start = work_entry.date_start
|
||||
date_stop = work_entry.date_stop
|
||||
if not date_start or not date_stop:
|
||||
result[work_entry.id] = 0.0
|
||||
continue
|
||||
if (date_start, date_stop) in cached_periods:
|
||||
result[work_entry.id] = cached_periods[(date_start, date_stop)]
|
||||
else:
|
||||
dt = date_stop - date_start
|
||||
duration = dt.days * 24 + dt.seconds / 3600 # Number of hours
|
||||
cached_periods[(date_start, date_stop)] = duration
|
||||
result[work_entry.id] = duration
|
||||
return result
|
||||
|
||||
# YTI TODO: Remove me in master: Deprecated, use _get_duration_batch instead
|
||||
def _get_duration(self, date_start, date_stop):
|
||||
return self._get_duration_batch()[self.id]
|
||||
@api.model
|
||||
def get_unusual_days(self, date_from, date_to=None):
|
||||
return self.env.company.resource_calendar_id._get_unusual_days(
|
||||
datetime.combine(fields.Date.from_string(date_from), time.min).replace(tzinfo=pytz.utc),
|
||||
datetime.combine(fields.Date.from_string(date_to), time.max).replace(tzinfo=pytz.utc),
|
||||
self.company_id,
|
||||
)
|
||||
|
||||
def action_validate(self):
|
||||
"""
|
||||
Try to validate work entries.
|
||||
If some errors are found, set `state` to conflict for conflicting work entries
|
||||
and validation fails.
|
||||
:return: True if validation succeded
|
||||
:return: True if validation succeeded
|
||||
"""
|
||||
work_entries = self.filtered(lambda work_entry: work_entry.state != 'validated')
|
||||
if not work_entries._check_if_error():
|
||||
|
|
@ -123,52 +119,135 @@ class HrWorkEntry(models.Model):
|
|||
return True
|
||||
return False
|
||||
|
||||
def action_split(self, vals):
|
||||
self.ensure_one()
|
||||
if self.duration < 1:
|
||||
raise UserError(self.env._("You can't split a work entry with less than 1 hour."))
|
||||
split_duration = vals['duration']
|
||||
if self.duration <= split_duration:
|
||||
raise UserError(
|
||||
self.env._(
|
||||
"Split work entry duration has to be less than the existing work entry duration."
|
||||
)
|
||||
)
|
||||
self.duration -= split_duration
|
||||
split_work_entry = self.copy()
|
||||
split_work_entry.write(vals)
|
||||
return split_work_entry.id
|
||||
|
||||
def _check_if_error(self):
|
||||
if not self:
|
||||
return False
|
||||
undefined_type = self.filtered(lambda b: not b.work_entry_type_id)
|
||||
undefined_type.write({'state': 'conflict'})
|
||||
conflict = self._mark_conflicting_work_entries(min(self.mapped('date_start')), max(self.mapped('date_stop')))
|
||||
return undefined_type or conflict
|
||||
conflict = self._mark_conflicting_work_entries(min(self.mapped('date')), max(self.mapped('date')))
|
||||
outside_calendar = self._mark_leaves_outside_schedule()
|
||||
already_validated_days = self._mark_already_validated_days()
|
||||
return undefined_type or conflict or outside_calendar or already_validated_days
|
||||
|
||||
def _mark_conflicting_work_entries(self, start, stop):
|
||||
"""
|
||||
Set `state` to `conflict` for overlapping work entries
|
||||
between two dates.
|
||||
If `self.ids` is truthy then check conflicts with the corresponding work entries.
|
||||
Return True if overlapping work entries were detected.
|
||||
Set `state` to `conflict` for work entries where, for the same employee and day,
|
||||
the total duration exceeds 24 hours.
|
||||
Return True if such entries are found.
|
||||
"""
|
||||
# Use the postgresql range type `tsrange` which is a range of timestamp
|
||||
# It supports the intersection operator (&&) useful to detect overlap.
|
||||
# use '()' to exlude the lower and upper bounds of the range.
|
||||
# Filter on date_start and date_stop (both indexed) in the EXISTS clause to
|
||||
# limit the resulting set size and fasten the query.
|
||||
self.flush_model(['date_start', 'date_stop', 'employee_id', 'active'])
|
||||
self.flush_model(['date', 'duration', 'employee_id', 'active'])
|
||||
query = """
|
||||
SELECT b1.id,
|
||||
b2.id
|
||||
FROM hr_work_entry b1
|
||||
JOIN hr_work_entry b2
|
||||
ON b1.employee_id = b2.employee_id
|
||||
AND b1.id <> b2.id
|
||||
WHERE b1.date_start <= %(stop)s
|
||||
AND b1.date_stop >= %(start)s
|
||||
AND b1.active = TRUE
|
||||
AND b2.active = TRUE
|
||||
AND tsrange(b1.date_start, b1.date_stop, '()') && tsrange(b2.date_start, b2.date_stop, '()')
|
||||
AND {}
|
||||
""".format("b2.id IN %(ids)s" if self.ids else "b2.date_start <= %(stop)s AND b2.date_stop >= %(start)s")
|
||||
self.env.cr.execute(query, {"stop": stop, "start": start, "ids": tuple(self.ids)})
|
||||
conflicts = set(itertools.chain.from_iterable(self.env.cr.fetchall()))
|
||||
self.browse(conflicts).write({
|
||||
'state': 'conflict',
|
||||
WITH excessive_days AS (
|
||||
SELECT employee_id, date
|
||||
FROM hr_work_entry
|
||||
WHERE active = TRUE
|
||||
AND date BETWEEN %(start)s AND %(stop)s
|
||||
AND employee_id IN %(employee_ids)s
|
||||
GROUP BY employee_id, date
|
||||
HAVING 0 >= SUM(duration) OR SUM(duration) > 24
|
||||
)
|
||||
SELECT we.id
|
||||
FROM hr_work_entry we
|
||||
JOIN excessive_days ed
|
||||
ON we.employee_id = ed.employee_id
|
||||
AND we.date = ed.date
|
||||
WHERE we.active = TRUE
|
||||
"""
|
||||
self.env.cr.execute(query, {
|
||||
"start": start,
|
||||
"stop": stop,
|
||||
'employee_ids': tuple(self.employee_id.ids),
|
||||
})
|
||||
return bool(conflicts)
|
||||
conflict_ids = [row[0] for row in self.env.cr.fetchall()]
|
||||
self.browse(conflict_ids).write({'state': 'conflict'})
|
||||
return bool(conflict_ids)
|
||||
|
||||
def _get_leaves_entries_outside_schedule(self):
|
||||
return self.filtered(lambda w: w.work_entry_type_id.is_leave and w.state not in ('validated', 'cancelled'))
|
||||
|
||||
def _mark_leaves_outside_schedule(self):
|
||||
"""
|
||||
Check leave work entries in `self` which are completely outside
|
||||
the contract's theoretical calendar schedule. Mark them as conflicting.
|
||||
:return: leave work entries completely outside the contract's calendar
|
||||
"""
|
||||
work_entries = self._get_leaves_entries_outside_schedule()
|
||||
entries_by_calendar = defaultdict(lambda: self.env['hr.work.entry'])
|
||||
for work_entry in work_entries:
|
||||
calendar = work_entry.version_id.resource_calendar_id
|
||||
entries_by_calendar[calendar] |= work_entry
|
||||
|
||||
outside_entries = self.env['hr.work.entry']
|
||||
for calendar, entries in entries_by_calendar.items():
|
||||
if not calendar or calendar.flexible_hours:
|
||||
continue
|
||||
datetime_start = datetime.combine(min(entries.mapped('date')), time.min)
|
||||
datetime_stop = datetime.combine(max(entries.mapped('date')), time.max)
|
||||
|
||||
if calendar:
|
||||
calendar_intervals = calendar._attendance_intervals_batch(pytz.utc.localize(datetime_start), pytz.utc.localize(datetime_stop))[False]
|
||||
else:
|
||||
calendar_intervals = Intervals([(pytz.utc.localize(datetime_start), pytz.utc.localize(datetime_stop), self.env['resource.calendar.attendance'])])
|
||||
entries_intervals = entries._to_intervals()
|
||||
overlapping_entries = self._from_intervals(entries_intervals & calendar_intervals)
|
||||
outside_entries |= entries - overlapping_entries
|
||||
outside_entries.write({'state': 'conflict'})
|
||||
return bool(outside_entries)
|
||||
|
||||
def _mark_already_validated_days(self):
|
||||
invalid_entries = self.env['hr.work.entry']
|
||||
validated_work_entries = self.env["hr.work.entry"].search([
|
||||
('state', '=', 'validated'),
|
||||
('date', '<=', max(self.mapped('date'))),
|
||||
('date', '>=', min(self.mapped('date'))),
|
||||
('company_id', '=', self.env.company.id)
|
||||
])
|
||||
validated_entries_by_employee_date = defaultdict(lambda: self.env['hr.work.entry'])
|
||||
for entry in validated_work_entries:
|
||||
validated_entries_by_employee_date[entry.employee_id, entry.date] += entry
|
||||
|
||||
for entry in self:
|
||||
if validated_entries_by_employee_date[entry.employee_id, entry.date]:
|
||||
invalid_entries += entry
|
||||
invalid_entries.write({'state': 'conflict'})
|
||||
return bool(invalid_entries)
|
||||
|
||||
def _to_intervals(self):
|
||||
return Intervals(
|
||||
((datetime.combine(w.date, time.min).replace(tzinfo=pytz.utc), datetime.combine(w.date, time.max).replace(tzinfo=pytz.utc), w) for w in self),
|
||||
keep_distinct=True)
|
||||
|
||||
@api.model
|
||||
def _from_intervals(self, intervals):
|
||||
return self.browse(chain.from_iterable(recs.ids for start, end, recs in intervals))
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
vals_list = [self._set_current_contract(vals) for vals in vals_list]
|
||||
company_by_employee_id = {}
|
||||
for vals in vals_list:
|
||||
if (
|
||||
not 'amount_rate' in vals
|
||||
and (work_entry_type_id := vals.get('work_entry_type_id'))
|
||||
):
|
||||
work_entry_type = self.env['hr.work.entry.type'].browse(work_entry_type_id)
|
||||
vals['amount_rate'] = work_entry_type.amount_rate
|
||||
if vals.get('company_id'):
|
||||
continue
|
||||
if vals['employee_id'] not in company_by_employee_id:
|
||||
|
|
@ -180,7 +259,7 @@ class HrWorkEntry(models.Model):
|
|||
return work_entries
|
||||
|
||||
def write(self, vals):
|
||||
skip_check = not bool({'date_start', 'date_stop', 'employee_id', 'work_entry_type_id', 'active'} & vals.keys())
|
||||
skip_check = not bool({'date', 'duration', 'employee_id', 'work_entry_type_id', 'active'} & vals.keys())
|
||||
if 'state' in vals:
|
||||
if vals['state'] == 'draft':
|
||||
vals['active'] = True
|
||||
|
|
@ -195,7 +274,12 @@ class HrWorkEntry(models.Model):
|
|||
if 'employee_id' in vals and vals['employee_id']:
|
||||
employee_ids += [vals['employee_id']]
|
||||
with self._error_checking(skip=skip_check, employee_ids=employee_ids):
|
||||
return super(HrWorkEntry, self).write(vals)
|
||||
return super().write(vals)
|
||||
|
||||
@api.ondelete(at_uninstall=False)
|
||||
def _unlink_except_validated_work_entries(self):
|
||||
if any(w.state == 'validated' for w in self):
|
||||
raise UserError(_("This work entry is validated. You can't delete it."))
|
||||
|
||||
def unlink(self):
|
||||
employee_ids = self.employee_id.ids
|
||||
|
|
@ -219,16 +303,16 @@ class HrWorkEntry(models.Model):
|
|||
"""
|
||||
try:
|
||||
skip = skip or self.env.context.get('hr_work_entry_no_check', False)
|
||||
start = start or min(self.mapped('date_start'), default=False)
|
||||
stop = stop or max(self.mapped('date_stop'), default=False)
|
||||
start = start or min(self.mapped('date'), default=False)
|
||||
stop = stop or max(self.mapped('date'), default=False)
|
||||
if not skip and start and stop:
|
||||
domain = [
|
||||
('date_start', '<', stop),
|
||||
('date_stop', '>', start),
|
||||
('state', 'not in', ('validated', 'cancelled')),
|
||||
]
|
||||
domain = (
|
||||
Domain('date', '<=', stop)
|
||||
& Domain('date', '>=', start)
|
||||
& Domain('state', 'not in', ('validated', 'cancelled'))
|
||||
)
|
||||
if employee_ids:
|
||||
domain = expression.AND([domain, [('employee_id', 'in', list(employee_ids))]])
|
||||
domain &= Domain('employee_id', 'in', list(employee_ids))
|
||||
work_entries = self.sudo().with_context(hr_work_entry_no_check=True).search(domain)
|
||||
work_entries._reset_conflicting_state()
|
||||
yield
|
||||
|
|
@ -243,34 +327,10 @@ class HrWorkEntry(models.Model):
|
|||
# no need to reload work entries.
|
||||
work_entries.exists()._check_if_error()
|
||||
|
||||
def _get_work_entry_type_domain(self):
|
||||
if len(self.env.companies.country_id.ids) > 1:
|
||||
return [('country_id', '=', False)]
|
||||
return ['|', ('country_id', '=', False), ('country_id', 'in', self.env.companies.country_id.ids)]
|
||||
|
||||
class HrWorkEntryType(models.Model):
|
||||
_name = 'hr.work.entry.type'
|
||||
_description = 'HR Work Entry Type'
|
||||
|
||||
name = fields.Char(required=True, translate=True)
|
||||
code = fields.Char(required=True, help="Careful, the Code is used in many references, changing it could lead to unwanted changes.")
|
||||
color = fields.Integer(default=0)
|
||||
sequence = fields.Integer(default=25)
|
||||
active = fields.Boolean(
|
||||
'Active', default=True,
|
||||
help="If the active field is set to false, it will allow you to hide the work entry type without removing it.")
|
||||
|
||||
_sql_constraints = [
|
||||
('unique_work_entry_code', 'UNIQUE(code)', 'The same code cannot be associated to multiple work entry types.'),
|
||||
]
|
||||
|
||||
|
||||
class Contacts(models.Model):
|
||||
""" Personnal calendar filter """
|
||||
|
||||
_name = 'hr.user.work.entry.employee'
|
||||
_description = 'Work Entries Employees'
|
||||
|
||||
user_id = fields.Many2one('res.users', 'Me', required=True, default=lambda self: self.env.user)
|
||||
employee_id = fields.Many2one('hr.employee', 'Employee', required=True)
|
||||
active = fields.Boolean('Active', default=True)
|
||||
|
||||
_sql_constraints = [
|
||||
('user_id_employee_id_unique', 'UNIQUE(user_id,employee_id)', 'You cannot have the same employee twice.')
|
||||
]
|
||||
def _search_country_id(self, operator, value):
|
||||
return [('employee_id.company_id.partner_id.country_id', operator, value)]
|
||||
|
|
|
|||
|
|
@ -0,0 +1,68 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class HrWorkEntryType(models.Model):
|
||||
_name = 'hr.work.entry.type'
|
||||
_description = 'HR Work Entry Type'
|
||||
|
||||
name = fields.Char(required=True, translate=True)
|
||||
display_code = fields.Char(string="Display Code", size=3, translate=True, help="This code can be changed, it is only for a display purpose (3 letters max)")
|
||||
code = fields.Char(string="Payroll Code", required=True, help="Careful, the Code is used in many references, changing it could lead to unwanted changes.")
|
||||
external_code = fields.Char(help="Use this code to export your data to a third party")
|
||||
color = fields.Integer(default=0)
|
||||
sequence = fields.Integer(default=25)
|
||||
active = fields.Boolean(
|
||||
'Active', default=True,
|
||||
help="If the active field is set to false, it will allow you to hide the work entry type without removing it.")
|
||||
country_id = fields.Many2one(
|
||||
'res.country',
|
||||
string="Country",
|
||||
domain=lambda self: [('id', 'in', self.env.companies.country_id.ids)]
|
||||
)
|
||||
country_code = fields.Char(related='country_id.code')
|
||||
is_leave = fields.Boolean(
|
||||
default=False, string="Time Off", help="Allow the work entry type to be linked with time off types.")
|
||||
is_work = fields.Boolean(
|
||||
compute='_compute_is_work', inverse='_inverse_is_work', string="Working Time", readonly=False,
|
||||
help="If checked, the work entry is counted as work time in the working schedule")
|
||||
amount_rate = fields.Float(
|
||||
string="Rate",
|
||||
default=1.0,
|
||||
help="If you want the hours should be paid double, the rate should be 200%.")
|
||||
is_extra_hours = fields.Boolean(
|
||||
string="Added to Monthly Pay",
|
||||
help="Check this setting if you want the hours to be considered as extra time and added as a bonus to the basic salary.")
|
||||
|
||||
@api.constrains('country_id')
|
||||
def _check_work_entry_type_country(self):
|
||||
if self.env.ref('hr_work_entry.work_entry_type_attendance') in self:
|
||||
raise UserError(_("You can't change the country of this specific work entry type."))
|
||||
elif not self.env.context.get('install_mode') and self.env['hr.work.entry'].sudo().search_count([('work_entry_type_id', 'in', self.ids)], limit=1):
|
||||
raise UserError(_("You can't change the Country of this work entry type cause it's currently used by the system. You need to delete related working entries first."))
|
||||
|
||||
@api.constrains('code', 'country_id')
|
||||
def _check_code_unicity(self):
|
||||
similar_work_entry_types = self.search([
|
||||
('code', 'in', self.mapped('code')),
|
||||
('country_id', 'in', self.country_id.ids + [False]),
|
||||
('id', 'not in', self.ids)
|
||||
])
|
||||
for work_entry_type in self:
|
||||
invalid_work_entry_types = similar_work_entry_types.filtered_domain([
|
||||
('code', '=', work_entry_type.code),
|
||||
('country_id', 'in', self.country_id.ids + [False]),
|
||||
])
|
||||
if invalid_work_entry_types:
|
||||
raise UserError(_("The same code cannot be associated to multiple work entry types (%s)", ', '.join(list(set(invalid_work_entry_types.mapped('code'))))))
|
||||
|
||||
@api.depends('is_leave')
|
||||
def _compute_is_work(self):
|
||||
for record in self:
|
||||
record.is_work = not record.is_leave
|
||||
|
||||
def _inverse_is_work(self):
|
||||
for record in self:
|
||||
record.is_leave = not record.is_work
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, models
|
||||
|
||||
|
||||
class ResourceCalendar(models.Model):
|
||||
_inherit = 'resource.calendar'
|
||||
|
||||
# Override the method to add 'attendance_ids.work_entry_type_id.is_leave' to the dependencies
|
||||
@api.depends('attendance_ids.work_entry_type_id.is_leave')
|
||||
def _compute_hours_per_week(self):
|
||||
super()._compute_hours_per_week()
|
||||
|
||||
def _get_global_attendances(self):
|
||||
return super()._get_global_attendances().filtered(lambda a: not a.work_entry_type_id.is_leave)
|
||||
|
|
@ -1,4 +1,3 @@
|
|||
# -*- coding:utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models, fields
|
||||
|
|
@ -19,15 +18,5 @@ class ResourceCalendarAttendance(models.Model):
|
|||
res['work_entry_type_id'] = self.work_entry_type_id.id
|
||||
return res
|
||||
|
||||
|
||||
class ResourceCalendarLeave(models.Model):
|
||||
_inherit = 'resource.calendar.leaves'
|
||||
|
||||
work_entry_type_id = fields.Many2one(
|
||||
'hr.work.entry.type', 'Work Entry Type',
|
||||
groups="hr.group_hr_user")
|
||||
|
||||
def _copy_leave_vals(self):
|
||||
res = super()._copy_leave_vals()
|
||||
res['work_entry_type_id'] = self.work_entry_type_id.id
|
||||
return res
|
||||
def _is_work_period(self):
|
||||
return not self.work_entry_type_id.is_leave and super()._is_work_period()
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models, fields
|
||||
|
||||
|
||||
class ResourceCalendarLeaves(models.Model):
|
||||
_inherit = 'resource.calendar.leaves'
|
||||
|
||||
work_entry_type_id = fields.Many2one(
|
||||
'hr.work.entry.type', 'Work Entry Type',
|
||||
groups="hr.group_hr_user")
|
||||
|
||||
def _copy_leave_vals(self):
|
||||
res = super()._copy_leave_vals()
|
||||
res['work_entry_type_id'] = self.work_entry_type_id.id
|
||||
return res
|
||||
|
|
@ -1,15 +1,25 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo noupdate="1">
|
||||
<record id="hr_user_work_entry_employee" model="ir.rule">
|
||||
<field name="name">Work entries/Employee calendar filter: only self</field>
|
||||
<field name="model_id" ref="model_hr_user_work_entry_employee"/>
|
||||
<field name="domain_force">[('user_id', '=', user.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
|
||||
<field name="perm_create" eval="1"/>
|
||||
<field name="perm_write" eval="1"/>
|
||||
<field name="perm_unlink" eval="1"/>
|
||||
<field name="perm_read" eval="0"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_user_work_entry_employee" model="ir.rule">
|
||||
<field name="name">Work entries/Employee calendar filter: only self</field>
|
||||
<field name="model_id" ref="model_hr_user_work_entry_employee"/>
|
||||
<field name="domain_force">[('user_id', '=', user.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
|
||||
<field name="perm_create" eval="1"/>
|
||||
<field name="perm_write" eval="1"/>
|
||||
<field name="perm_unlink" eval="1"/>
|
||||
<field name="perm_read" eval="0"/>
|
||||
</record>
|
||||
<record id="ir_rule_hr_work_entry_type_multi_company" model="ir.rule">
|
||||
<field name="name">HR Work Entry: Multi Company</field>
|
||||
<field name="model_id" ref="model_hr_work_entry_type"/>
|
||||
<field name="domain_force">[('country_id', 'in', user.env.companies.mapped('country_id').ids + [False])]</field>
|
||||
</record>
|
||||
|
||||
<record id="ir_rule_hr_work_entry_multi_company" model="ir.rule">
|
||||
<field name="name">HR Work Entry Contract: Multi Company</field>
|
||||
<field name="model_id" ref="model_hr_work_entry"/>
|
||||
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -3,4 +3,5 @@ access_hr_work_entry_officer,access_hr_work_entry_officer,model_hr_work_entry,hr
|
|||
access_hr_work_entry_system,access_hr_work_entry_system,model_hr_work_entry,base.group_system,1,1,1,1
|
||||
access_hr_work_entry_type_officer,access_hr_work_entry_type_officer,model_hr_work_entry_type,hr.group_hr_user,1,0,0,0
|
||||
access_hr_work_entry_type_manager,access_hr_work_entry_type_manager,model_hr_work_entry_type,hr.group_hr_manager,1,1,1,1
|
||||
access_hr_work_entry_employee,access_hr_work_entry_employee,model_hr_user_work_entry_employee,hr.group_hr_user,1,1,1,1
|
||||
access_hr_work_entry_employee,access_hr_work_entry_employee,model_hr_user_work_entry_employee,hr.group_hr_user,1,1,1,1
|
||||
access_hr_work_entry_regeneration_wizard,access_hr_work_entry_regeneration_wizard,model_hr_work_entry_regeneration_wizard,hr.group_hr_manager,1,1,1,1
|
||||
|
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
|
|
@ -0,0 +1 @@
|
|||
<svg width="50" height="50" viewBox="0 0 50 50" xmlns="http://www.w3.org/2000/svg"><path d="M0 12.5h50V38a4 4 0 0 1-4 4H0V12.5Z" fill="#985184"/><path d="M4 20.5a4 4 0 0 1-4-4V12a4 4 0 0 1 4-4h46v8.5a4 4 0 0 1-4 4H4Z" fill="#2EBCFA"/><path d="M0 16h50v4a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4v-4Z" fill="#144496"/><path d="M25 28a9 9 0 0 0-9 9h10a9 9 0 0 0 9-9H25Z" fill="#fff"/><circle cx="25" cy="19" r="6" fill="#fff"/></svg>
|
||||
|
After Width: | Height: | Size: 420 B |
Binary file not shown.
|
After Width: | Height: | Size: 7.6 KiB |
|
|
@ -0,0 +1,46 @@
|
|||
import { registry } from "@web/core/registry";
|
||||
import {
|
||||
Many2ManyTagsAvatarEmployeeField,
|
||||
many2ManyTagsAvatarEmployeeField,
|
||||
} from "@hr/views/fields/many2many_avatar_employee_field/many2many_avatar_employee_field";
|
||||
import { Many2ManyAvatarUserTagsList } from "@mail/views/web/fields/many2many_avatar_user_field/many2many_avatar_user_field";
|
||||
|
||||
export class Many2ManyAvatarUserTagsListError extends Many2ManyAvatarUserTagsList {
|
||||
static template = "hr_work_entry.Many2ManyAvatarUserTagsListError";
|
||||
}
|
||||
|
||||
export class Many2ManyTagsAvatarEmployeeErrorField extends Many2ManyTagsAvatarEmployeeField {
|
||||
static props = {
|
||||
...Many2ManyTagsAvatarEmployeeField.props,
|
||||
inErrorField: { type: String, optional: true },
|
||||
};
|
||||
static components = {
|
||||
...Many2ManyTagsAvatarEmployeeField.components,
|
||||
TagsList: Many2ManyAvatarUserTagsListError,
|
||||
};
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
getTagProps(record) {
|
||||
return {
|
||||
...super.getTagProps(record),
|
||||
inError: this.props.record.data[this.props.inErrorField].currentIds.includes(
|
||||
record.resId
|
||||
),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export const many2ManyTagsAvatarEmployeeErrorField = {
|
||||
...many2ManyTagsAvatarEmployeeField,
|
||||
component: Many2ManyTagsAvatarEmployeeErrorField,
|
||||
extractProps: (fieldInfo, dynamicInfo) => ({
|
||||
...many2ManyTagsAvatarEmployeeField.extractProps(fieldInfo, dynamicInfo),
|
||||
inErrorField: fieldInfo.attrs.in_error,
|
||||
}),
|
||||
};
|
||||
|
||||
registry
|
||||
.category("fields")
|
||||
.add("many2many_avatar_employee_class", many2ManyTagsAvatarEmployeeErrorField);
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<template>
|
||||
<t t-name="hr_work_entry.Many2ManyAvatarUserTagsListError" t-inherit="mail.Many2ManyAvatarUserTagsList" t-inherit-mode="primary">
|
||||
<xpath expr="//span[hasclass('o_tag')]" position="attributes">
|
||||
<attribute name="t-attf-class" separator=" " add="#{tag.inError ? 'text-danger' : ''}"/>
|
||||
</xpath>
|
||||
<div t-if="props.displayText" position="after">
|
||||
<i t-if="tag.inError" class="ms-1 fa fa-lock z-1"/>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
import { registry } from "@web/core/registry";
|
||||
import { RadioField, radioField } from "@web/views/fields/radio/radio_field";
|
||||
import { _t } from "@web/core/l10n/translation";
|
||||
|
||||
export class WorkEntrySourceField extends RadioField {
|
||||
static template = "hr_work_entry.WorkEntrySourceField";
|
||||
|
||||
get isFullyFlexible() {
|
||||
return !this.props.record.data.resource_calendar_id;
|
||||
}
|
||||
|
||||
get tooltipWarning() {
|
||||
return JSON.stringify({
|
||||
"text" : _t("Invalid option: For fully flexible calendars, the work entry source cannot be 'Working Hours'."),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export const workEntrySourceField = {
|
||||
...radioField,
|
||||
component: WorkEntrySourceField,
|
||||
fieldDependencies: [
|
||||
{ name: "resource_calendar_id", type: "many2one", relation: "resource.calendar" },
|
||||
],
|
||||
};
|
||||
|
||||
registry.category("fields").add("work_entry_source_field", workEntrySourceField);
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<templates id="template" xml:space="preserve">
|
||||
<t t-name="hr_work_entry.WorkEntrySourceField" t-inherit="web.RadioField">
|
||||
<xpath expr="//input[hasclass('o_radio_input')]" position="attributes">
|
||||
<attribute name="t-att-disabled">props.readonly or (item[0] === 'calendar' and isFullyFlexible)</attribute>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//div[hasclass('o_radio_item')]" position="inside">
|
||||
<span t-if="props.readonly or (item[0] === 'calendar' and item[0] === value and isFullyFlexible)"
|
||||
class="fa fa-exclamation-triangle text-danger o_work_entry_source_warning ms-3"
|
||||
data-tooltip-template="hr_work_entry.WorkEntrySourceWarning"
|
||||
t-att-data-tooltip-info='tooltipWarning'/>
|
||||
</xpath>
|
||||
|
||||
</t>
|
||||
</templates>
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
import { registry } from "@web/core/registry";
|
||||
import { buildM2OFieldDescription, Many2OneField } from "@web/views/fields/many2one/many2one_field";
|
||||
import { Component, onWillRender, onWillUpdateProps, useState } from "@odoo/owl";
|
||||
import { Many2One } from "@web/views/fields/many2one/many2one";
|
||||
|
||||
export class WorkEntryType extends Component {
|
||||
static template = "hr_work_entry.WorkEntryType";
|
||||
static props = {
|
||||
data: Object,
|
||||
className: { type: String, optional: true },
|
||||
};
|
||||
|
||||
setup() {
|
||||
this.state = useState({ data: this.props.data });
|
||||
onWillUpdateProps((nextProps) => {
|
||||
this.state.data = nextProps.data;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function extractData(record) {
|
||||
if (!record) {
|
||||
return null;
|
||||
}
|
||||
let name;
|
||||
if ("display_name" in record) {
|
||||
name = record.display_name;
|
||||
} else if ("name" in record) {
|
||||
name = record.name.id ? record.name.display_name : record.name;
|
||||
}
|
||||
return {
|
||||
id: record.id,
|
||||
display_name: name,
|
||||
display_code: record.display_code,
|
||||
color: record.color,
|
||||
};
|
||||
}
|
||||
|
||||
export class WorkEntryTypeMany2One extends Many2One {
|
||||
get many2XAutocompleteProps() {
|
||||
const props = super.many2XAutocompleteProps;
|
||||
return {
|
||||
...props,
|
||||
update: (records) => {
|
||||
const idNamePair = records && extractData(records[0]) ? records[0] : false;
|
||||
this.update(idNamePair);
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export class Many2OneWorkEntryTypeField extends Many2OneField {
|
||||
static template = "hr_work_entry.Many2OneWorkEntryTypeField";
|
||||
static components = {
|
||||
...Many2OneField.components,
|
||||
Many2One: WorkEntryTypeMany2One,
|
||||
WorkEntryType,
|
||||
};
|
||||
|
||||
setup() {
|
||||
super.setup();
|
||||
this.state = useState({ data: this.props.record.data });
|
||||
onWillRender(() => {
|
||||
if (this.props.record.data?.work_entry_type_id.color) {
|
||||
this.state.data = this.props.record.data.work_entry_type_id;
|
||||
} else {
|
||||
this.state.data = this.props.record.data;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
get m2oProps() {
|
||||
const props = super.m2oProps;
|
||||
return {
|
||||
...props,
|
||||
specification: { display_code: 1, color: 1 },
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export const many2OneWorkEntryTypeField = {
|
||||
...buildM2OFieldDescription(Many2OneWorkEntryTypeField),
|
||||
fieldDependencies: [
|
||||
{ name: "display_code", type: "char" },
|
||||
{ name: "color", type: "char" },
|
||||
],
|
||||
};
|
||||
|
||||
registry.category("fields").add("many2one_work_entry_type", many2OneWorkEntryTypeField);
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<templates id="template" xml:space="preserve">
|
||||
<t t-name="hr_work_entry.Many2OneWorkEntryTypeField">
|
||||
<div class="d-flex align-items-center gap-1">
|
||||
<t t-if="m2oProps.value !== false">
|
||||
<WorkEntryType data="state.data"/>
|
||||
</t>
|
||||
<Many2One t-props="m2oProps" cssClass="'w-100'">
|
||||
<t t-set-slot="autoCompleteItem" t-slot-scope="autoCompleteItemScope">
|
||||
<div class="o_avatar_many2x_autocomplete d-flex align-items-center">
|
||||
<WorkEntryType data="autoCompleteItemScope.record" className="'me-1'"/>
|
||||
<t t-out="autoCompleteItemScope.label"/>
|
||||
</div>
|
||||
</t>
|
||||
</Many2One>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<t t-name="hr_work_entry.WorkEntryType">
|
||||
<div class="o_calendar_renderer o_radio_item position-relative cursor-pointer d-flex gap-1 align-items-center"
|
||||
t-att-class="props.className"
|
||||
style="background-color: inherit;">
|
||||
<span class="small rounded-3 d-flex justify-content-center" t-esc="state.data?.display_code || ' '"
|
||||
t-attf-class="o_calendar_color_#{state.data?.color || 0}"
|
||||
style="background-color: rgb(var(--o-event-bg--subtle-rgb)); width: 5ch; height:23px; padding: 2px;"/>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
.o_form_view {
|
||||
.o_work_entry_source_warning {
|
||||
cursor: help;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
import { CalendarCommonPopover } from "@web/views/calendar/calendar_common/calendar_common_popover";
|
||||
|
||||
export class WorkEntryCalendarCommonPopover extends CalendarCommonPopover {
|
||||
static subTemplates = {
|
||||
...CalendarCommonPopover.subTemplates,
|
||||
footer: "hr_work_entry.WorkEntryCalendarCommonPopover.footer",
|
||||
};
|
||||
static props = {
|
||||
...CalendarCommonPopover.props,
|
||||
splitRecord: Function,
|
||||
};
|
||||
|
||||
get isWorkEntryValidated() {
|
||||
return this.props.record.rawRecord.state === "validated";
|
||||
}
|
||||
|
||||
get isSplittable() {
|
||||
return this.props.record.rawRecord.duration >= 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
get isEventEditable() {
|
||||
return !this.isWorkEntryValidated && super.isEventEditable;
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
get isEventDeletable() {
|
||||
return !this.isWorkEntryValidated && super.isEventDeletable;
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
get isEventViewable() {
|
||||
return !this.isWorkEntryValidated && super.isEventViewable;
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
get hasFooter() {
|
||||
return this.isWorkEntryValidated || super.hasFooter;
|
||||
}
|
||||
|
||||
onSplitEvent() {
|
||||
this.props.splitRecord(this.props.record);
|
||||
this.props.close();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<template>
|
||||
<t t-name="hr_work_entry.WorkEntryCalendarCommonPopover.footer" t-inherit="web.CalendarCommonPopover.footer" t-inherit-mode="primary">
|
||||
<xpath expr="." position="inside">
|
||||
<span t-if="isWorkEntryValidated"><i class="fa fa-lock me-1"/> You cannot edit a validated work entry</span>
|
||||
</xpath>
|
||||
<a t-on-click="onEditEvent" position="after">
|
||||
<a href="#" class="btn btn-secondary" t-if="isSplittable" t-on-click="onSplitEvent">
|
||||
Split
|
||||
</a>
|
||||
</a>
|
||||
<a t-on-click="onDeleteEvent" position="attributes">
|
||||
<attribute name="class" add="ms-auto btn-danger" remove="btn-secondary" separator=" "/>
|
||||
</a>
|
||||
</t>
|
||||
</template>
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
import { convertRecordToEvent } from "@web/views/calendar/utils";
|
||||
import { CalendarCommonRenderer } from "@web/views/calendar/calendar_common/calendar_common_renderer";
|
||||
import { WorkEntryCalendarCommonPopover } from "@hr_work_entry/views/work_entry_calendar/calendar_common/work_entry_calendar_common_popover";
|
||||
|
||||
export class WorkEntryCalendarCommonRenderer extends CalendarCommonRenderer {
|
||||
static eventTemplate = "hr_work_entry.WorkEntryCalendarCommonRenderer.event";
|
||||
static components = {
|
||||
...CalendarCommonRenderer,
|
||||
Popover: WorkEntryCalendarCommonPopover,
|
||||
};
|
||||
static props = {
|
||||
...CalendarCommonRenderer.props,
|
||||
splitRecord: Function,
|
||||
};
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
convertRecordToEvent(record) {
|
||||
const event = convertRecordToEvent(record);
|
||||
const editable = record.rawRecord.state !== "validated" && (event.editable ?? null);
|
||||
return {
|
||||
...event,
|
||||
...(editable ? { editable: editable } : {}),
|
||||
};
|
||||
}
|
||||
|
||||
getPopoverProps(record) {
|
||||
return {
|
||||
...super.getPopoverProps(record),
|
||||
splitRecord: this.props.splitRecord,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<templates>
|
||||
<t t-name="hr_work_entry.WorkEntryCalendarCommonRenderer.event" t-inherit="web.CalendarCommonRenderer.event" t-inherit-mode="primary">
|
||||
<div t-out="title" position="after">
|
||||
<i t-if="rawRecord.state === 'validated'" class="fa fa-lock position-absolute top-0 end-0" style="font-size: x-small"/>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
.o_calendar_header {
|
||||
@for $index from 1 through length($o-colors-complete) {
|
||||
$color: nth($o-colors-complete, $index);
|
||||
$color-subtle: mix($o-white, $color, 55%);
|
||||
$color-hover: mix($o-white, $color, 45%);
|
||||
|
||||
.o_gantt_color_#{$index - 1} {
|
||||
color: color-contrast($color-subtle);
|
||||
background-color: $color-subtle;
|
||||
border-color: $color-subtle;
|
||||
}
|
||||
|
||||
.btn.o_gantt_color_#{$index - 1}:hover {
|
||||
color: color-contrast($color-hover);
|
||||
background-color: $color-hover;
|
||||
border-color: $color-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<templates>
|
||||
<t t-name="hr_work_entry.calendar.controlButtons" t-inherit="web.CalendarController.controlButtons" t-inherit-mode="primary">
|
||||
<xpath expr="." position="inside">
|
||||
<button class="btn btn-secondary" t-on-click="onRegenerateWorkEntries">
|
||||
Reset
|
||||
</button>
|
||||
</xpath>
|
||||
</t>
|
||||
</templates>
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
import { WorkEntryCalendarMultiSelectionButtons } from "@hr_work_entry/views/work_entry_calendar/work_entry_multi_selection_buttons";
|
||||
import { useWorkEntry } from "@hr_work_entry/views/work_entry_hook";
|
||||
import { _t } from "@web/core/l10n/translation";
|
||||
import { useService } from "@web/core/utils/hooks";
|
||||
import { CalendarController } from "@web/views/calendar/calendar_controller";
|
||||
import { FormViewDialog } from "@web/views/view_dialogs/form_view_dialog";
|
||||
|
||||
|
||||
export class WorkEntryCalendarController extends CalendarController {
|
||||
static components = {
|
||||
...CalendarController.components,
|
||||
MultiSelectionButtons: WorkEntryCalendarMultiSelectionButtons,
|
||||
};
|
||||
|
||||
setup() {
|
||||
super.setup();
|
||||
const { onRegenerateWorkEntries } = useWorkEntry({
|
||||
getEmployeeIds: this.getEmployeeIds.bind(this),
|
||||
getRange: this.model.computeRange.bind(this.model),
|
||||
onClose: this.model.load.bind(this.model),
|
||||
});
|
||||
this.onRegenerateWorkEntries = onRegenerateWorkEntries;
|
||||
this.dialogService = useService("dialog");
|
||||
}
|
||||
|
||||
async splitRecord(record) {
|
||||
this.dialogService.add(
|
||||
FormViewDialog,
|
||||
{
|
||||
title: _t("Split Work Entry"),
|
||||
resModel: "hr.work.entry",
|
||||
onRecordSave: async (_record) => {
|
||||
await this.orm.call("hr.work.entry", "action_split", [
|
||||
record.id,
|
||||
{
|
||||
duration: _record.data.duration,
|
||||
work_entry_type_id: _record.data.work_entry_type_id.id,
|
||||
name: _record.data.name,
|
||||
},
|
||||
]);
|
||||
return true;
|
||||
},
|
||||
context: {
|
||||
form_view_ref: "hr_work_entry.hr_work_entry_calendar_gantt_view_form",
|
||||
default_duration: record.rawRecord.duration / 2,
|
||||
default_name: record.rawRecord.name,
|
||||
default_work_entry_type_id: record.rawRecord.work_entry_type_id?.[0],
|
||||
default_employee_id: record.rawRecord.employee_id?.[0],
|
||||
default_date: record.rawRecord.date,
|
||||
},
|
||||
canExpand: false,
|
||||
},
|
||||
{
|
||||
onClose: () => {
|
||||
this.model.load();
|
||||
},
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
get rendererProps() {
|
||||
return {
|
||||
...super.rendererProps,
|
||||
splitRecord: this.splitRecord.bind(this),
|
||||
};
|
||||
}
|
||||
|
||||
getEmployeeIds() {
|
||||
return [
|
||||
...new Set(
|
||||
Object.values(this.model.records).map((rec) => rec.rawRecord.employee_id[0])
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
getSelectedRecords(selectedCells) {
|
||||
const ids = this.getSelectedRecordIds(selectedCells);
|
||||
return Object.values(this.model.records)
|
||||
.filter((r) => ids.includes(r.id))
|
||||
.map((r) => r.rawRecord);
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
prepareMultiSelectionButtonsReactive() {
|
||||
const result = super.prepareMultiSelectionButtonsReactive();
|
||||
result.userFavoritesWorkEntries = this.model.userFavoritesWorkEntries || [];
|
||||
result.onQuickReplace = (values) => this.onMultiReplace(values, this.selectedCells);
|
||||
result.onQuickReset = () => this.onResetWorkEntries(this.selectedCells);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
updateMultiSelection() {
|
||||
super.updateMultiSelection(...arguments);
|
||||
this.multiSelectionButtonsReactive.userFavoritesWorkEntries = this.model.userFavoritesWorkEntries || [];
|
||||
}
|
||||
|
||||
getDatesWithoutValidatedWorkEntry(selectedCells, records) {
|
||||
return this.getDates(selectedCells).filter(
|
||||
(d) =>
|
||||
!records
|
||||
.filter((r) => r.state === "validated")
|
||||
.map((r) => r.date)
|
||||
.includes(d.toISODate())
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
onMultiDelete(selectedCells) {
|
||||
const records = this.getSelectedRecords(selectedCells);
|
||||
return this.model.unlinkRecords(
|
||||
records.filter((r) => r.state !== "validated").map((r) => r.id)
|
||||
);
|
||||
}
|
||||
|
||||
onMultiReplace(values, selectedCells) {
|
||||
const records = this.getSelectedRecords(selectedCells);
|
||||
const dates = this.getDatesWithoutValidatedWorkEntry(selectedCells, records);
|
||||
return this.model.multiReplaceRecords(
|
||||
values,
|
||||
dates,
|
||||
records.filter((r) => r.state !== "validated")
|
||||
);
|
||||
}
|
||||
|
||||
onResetWorkEntries(selectedCells) {
|
||||
const records = this.getSelectedRecords(selectedCells);
|
||||
const dates = this.getDatesWithoutValidatedWorkEntry(selectedCells, records);
|
||||
this.model.resetWorkEntries(
|
||||
dates,
|
||||
records.filter((r) => r.state !== "validated").map((r) => r.id)
|
||||
);
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue