Initial commit: OCA Payroll packages (5 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:05 +02:00
commit d19274f581
407 changed files with 214057 additions and 0 deletions

51
README.md Normal file
View file

@ -0,0 +1,51 @@
# OCA Payroll
This repository contains **5** OCA packages for payroll.
## Packages Included (5 packages)
- **odoo-bringout-oca-payroll-hr_payroll_document** - From payroll: hr_payroll_document
- **odoo-bringout-oca-payroll-hr_payroll_period** - From payroll: hr_payroll_period
- **odoo-bringout-oca-payroll-payroll** - From payroll: payroll
- **odoo-bringout-oca-payroll-payroll_account** - From payroll: payroll_account
- **odoo-bringout-oca-payroll-payroll_contract_advantages** - From payroll: payroll_contract_advantages
## Installation
Install any package from this category:
```bash
# Install from local directory
pip install packages/oca-payroll/PACKAGE_NAME/
# Install in development mode
pip install -e packages/oca-payroll/PACKAGE_NAME/
# Using uv (recommended for speed)
uv add packages/oca-payroll/PACKAGE_NAME/
```
## Repository Structure
Each package in this repository follows the standard Odoo addon structure:
```
oca-payroll/
├── odoo-bringout-oca-PROJECT-ADDON/
│ ├── ADDON_NAME/ # Complete addon code
│ │ ├── __init__.py
│ │ ├── __manifest__.py
│ │ └── ... (models, views, etc.)
│ ├── pyproject.toml # Python package configuration
│ └── README.md # Package documentation
└── ...
```
## Contributing
These packages are maintained as part of the [OCA (Odoo Community Association)](https://github.com/OCA) ecosystem.
## License
Each package maintains its original license as specified in the OCA repositories.

View file

@ -0,0 +1,47 @@
# HR - Payroll Document
Odoo addon: hr_payroll_document
## Installation
```bash
pip install odoo-bringout-oca-payroll-hr_payroll_document
```
## Dependencies
This addon depends on:
- hr
- base_vat
## Manifest Information
- **Name**: HR - Payroll Document
- **Version**: 16.0.1.0.0
- **Category**: Payrolls
- **License**: AGPL-3
- **Installable**: False
## Source
Based on [OCA/payroll](https://github.com/OCA/payroll) branch 16.0, addon `hr_payroll_document`.
## License
This package maintains the original AGPL-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
- Reports: doc/REPORTS.md
- Security: doc/SECURITY.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

View file

@ -0,0 +1,32 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Hr_payroll_document Module - hr_payroll_document
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for hr_payroll_document. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,3 @@
# Controllers
This module does not define custom HTTP controllers.

View file

@ -0,0 +1,6 @@
# Dependencies
This addon depends on:
- [hr](../../odoo-bringout-oca-ocb-hr)
- [base_vat](../../odoo-bringout-oca-ocb-base_vat)

View file

@ -0,0 +1,4 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon hr_payroll_document or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-payroll-hr_payroll_document"
# or
uv pip install odoo-bringout-oca-payroll-hr_payroll_document"
```

View file

@ -0,0 +1,14 @@
# Models
Detected core models and extensions in hr_payroll_document.
```mermaid
classDiagram
class ir_attachment_payroll_custom
class hr_employee
class ir_attachment
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: hr_payroll_document. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon hr_payroll_document
- License: LGPL-3

View file

@ -0,0 +1,3 @@
# Reports
This module does not define custom reports.

View file

@ -0,0 +1,34 @@
# Security
Access control and security definitions in hr_payroll_document.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../hr_payroll_document/security/ir.model.access.csv)**
- 2 model access rules
## Record Rules
Row-level security rules defined in:
```mermaid
graph TB
subgraph "Security Layers"
A[Users] --> B[Groups]
B --> C[Access Control Lists]
C --> D[Models]
B --> E[Record Rules]
E --> F[Individual Records]
end
```
Security files overview:
- **[ir.model.access.csv](../hr_payroll_document/security/ir.model.access.csv)**
- Model access permissions (CRUD rights)
Notes
- Access Control Lists define which groups can access which models
- Record Rules provide row-level security (filter records by user/group)
- Security groups organize users and define permission sets
- All security is enforced at the ORM level by Odoo

View file

@ -0,0 +1,5 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -0,0 +1,7 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon hr_payroll_document
```

View file

@ -0,0 +1,8 @@
# Wizards
Transient models exposed as UI wizards in hr_payroll_document.
```mermaid
classDiagram
class PayrollManagamentWizard
```

View file

@ -0,0 +1,85 @@
=====================
HR - Payroll Document
=====================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:3698f5f5e529d5d32ae80cdc1ab30660ad4e5d39b6d98f8dace97a0b233743c5
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpayroll-lightgray.png?logo=github
:target: https://github.com/OCA/payroll/tree/16.0/hr_payroll_document
:alt: OCA/payroll
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/payroll-16-0/payroll-16-0-hr_payroll_document
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/payroll&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module have a wizard view to manage the different payrolls of employees which is identified by the identification_id attribute.
**Table of contents**
.. contents::
:local:
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/payroll/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/payroll/issues/new?body=module:%20hr_payroll_document%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* APSL
Contributors
~~~~~~~~~~~~
* Antoni Marroig Campomar <amarroig@apsl.net>
* Miquel Alzanillas Monserrat <malzanillas@apsl.net>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
.. |maintainer-peluko00| image:: https://github.com/peluko00.png?size=40px
:target: https://github.com/peluko00
:alt: peluko00
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-peluko00|
This module is part of the `OCA/payroll <https://github.com/OCA/payroll/tree/16.0/hr_payroll_document>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,2 @@
from . import wizard
from . import models

View file

@ -0,0 +1,17 @@
{
"name": "HR - Payroll Document",
"summary": "Manage payroll for each employee",
"author": "APSL, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/payroll",
"license": "AGPL-3",
"category": "Payrolls",
"version": "16.0.1.0.0",
"depends": ["hr", "base_vat"],
"maintainers": ["peluko00"],
"external_dependencies": {"python": ["pypdf"]},
"data": [
"wizard/payroll_management_wizard.xml",
"security/ir.model.access.csv",
"data/email_payroll_employee.xml",
],
}

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="payroll_employee_email_template" model="mail.template">
<field name="name">Payroll Employee</field>
<field name="model_id" ref="hr.model_hr_employee" />
<field name="email_from">{{object.company_id.email}}</field>
<field name="email_to">{{object.work_email}}</field>
<field name="subject">Payroll {{ctx.get('subject')}}</field>
<field name="auto_delete" eval="False" />
<field name="body_html">
<![CDATA[<html>
<head></head>
<body style="margin: 0; padding: 0;">
<table style="padding:20px;background-color:#ededed; border-collapse:separate" width="100%" cellpadding="0" border="0"><tbody><!-- HEADER --><tr><td style="min-width:590px" align="center"><table style="min-width:590px;background-color:#fff; padding:20px; border-collapse:separate" width="590" cellpadding="0" border="0"><tbody><tr><td style="text-align:right" valign="middle"><img src="/logo.png" style="padding:0px;margin:0px; height:auto; width:80px" alt="{{object.company_id.name}}"></td></tr><tr><td style="text-align:left" valign="middle"><h2 style="color:rgb(28, 130, 156)"><font style="color:rgb(107, 175, 103);">Payroll <t t-out="ctx.get('subject')" contenteditable="false" data-oe-t-inline="true"/></font></h2></td></tr></tbody></table></td></tr><!-- CONTENT --><tr><td style="min-width:590px" align="center"><table style="min-width:590px;background-color:rgb(255, 255, 255); padding:20px; border-collapse:separate" width="590" cellpadding="0" border="0"><tbody><tr><td style="font-family:Arial,Helvetica,sans-serif;color:#555; font-size:14px" valign="top"><p> </p><p>Hello <t t-out="object.name" contenteditable="false" data-oe-t-inline="true"/>,</p><br><p>We send you the payroll with the subject <t t-out="ctx.get('subject')" contenteditable="false" data-oe-t-inline="true"/>.<br></p></td></tr><tr><td style="font-family:Arial,Helvetica,sans-serif;color:#555; font-size:14px" valign="top"><br></td></tr><tr><td style="font-family:Arial,Helvetica,sans-serif;color:#555; font-size:14px" valign="top"><br><p></p></td></tr></tbody></table></td></tr><!-- FOOTER --><tr><td style="min-width:590px" align="center"><table style="min-width:590px;background-color:#95ce3f; padding:20px; border-collapse:separate" width="590" cellpadding="0" border="0"><tbody> </tbody></table></td></tr></tbody></table>
<p></p>
</html>
]]>
</field>
</record>
</odoo>

View file

@ -0,0 +1,220 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_payroll_document
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: hr_payroll_document
#: model:mail.template,body_html:hr_payroll_document.payroll_employee_email_template
msgid ""
"\n"
" <html>\n"
" <head></head>\n"
" <body style=\"margin: 0; padding: 0;\">\n"
" <table style=\"padding:20px;background-color:#ededed; border-collapse:separate\" width=\"100%\" cellpadding=\"0\" border=\"0\"><tbody><!-- HEADER --><tr><td style=\"min-width:590px\" align=\"center\"><table style=\"min-width:590px;background-color:#fff; padding:20px; border-collapse:separate\" width=\"590\" cellpadding=\"0\" border=\"0\"><tbody><tr><td style=\"text-align:right\" valign=\"middle\"><img src=\"/logo.png\" style=\"padding:0px;margin:0px; height:auto; width:80px\" alt=\"{{object.company_id.name}}\"></td></tr><tr><td style=\"text-align:left\" valign=\"middle\"><h2 style=\"color:rgb(28, 130, 156)\"><font style=\"color:rgb(107, 175, 103);\">Payroll <t t-out=\"ctx.get('subject')\" contenteditable=\"false\" data-oe-t-inline=\"true\"/></font></h2></td></tr></tbody></table></td></tr><!-- CONTENT --><tr><td style=\"min-width:590px\" align=\"center\"><table style=\"min-width:590px;background-color:rgb(255, 255, 255); padding:20px; border-collapse:separate\" width=\"590\" cellpadding=\"0\" border=\"0\"><tbody><tr><td style=\"font-family:Arial,Helvetica,sans-serif;color:#555; font-size:14px\" valign=\"top\"><p> </p><p>Hello <t t-out=\"object.name\" contenteditable=\"false\" data-oe-t-inline=\"true\"/>,</p><br><p>We send you the payroll with the subject <t t-out=\"ctx.get('subject')\" contenteditable=\"false\" data-oe-t-inline=\"true\"/>.<br></p></td></tr><tr><td style=\"font-family:Arial,Helvetica,sans-serif;color:#555; font-size:14px\" valign=\"top\"><br></td></tr><tr><td style=\"font-family:Arial,Helvetica,sans-serif;color:#555; font-size:14px\" valign=\"top\"><br><p></p></td></tr></tbody></table></td></tr><!-- FOOTER --><tr><td style=\"min-width:590px\" align=\"center\"><table style=\"min-width:590px;background-color:#95ce3f; padding:20px; border-collapse:separate\" width=\"590\" cellpadding=\"0\" border=\"0\"><tbody> </tbody></table></td></tr></tbody></table>\n"
" <p></p>\n"
" </html>\n"
" \n"
" "
msgstr ""
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_ir_attachment
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment__payrol_rel
msgid "Attachment"
msgstr "Prilog"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__attachment_id
msgid "Attachment File"
msgstr "Datoteka priloga"
#. module: hr_payroll_document
#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form
msgid "Close"
msgstr "Zatvori"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_date
msgid "Create Date"
msgstr "Kreiraj datum"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_uid
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__display_name
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_hr_employee
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__employee
msgid "Employee"
msgstr "Zaposleni"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Employees not found"
msgstr "Radnici nisu pronađeni"
#. module: hr_payroll_document
#: model:ir.model.fields,help:hr_payroll_document.field_payroll_management_wizard__subject
msgid ""
"Enter the title of the payroll whether it is the month, week, day, etc."
msgstr ""
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__id
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__id
msgid "ID"
msgstr "ID"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "IDs whose employee has not been found: "
msgstr "ID-ovi čiji radnik nije pronađen: "
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__identification_id
msgid "Identification ID"
msgstr "Identifikacioni ID"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom____last_update
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_uid
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_date
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Missing pdf file signature"
msgstr "Nedostaje potpis PDF datoteke"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payroll"
msgstr "Obračun plata"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payroll "
msgstr "Plata "
#. module: hr_payroll_document
#: model:mail.template,name:hr_payroll_document.payroll_employee_email_template
msgid "Payroll Employee"
msgstr "Radnik plate"
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_payroll_management_wizard
msgid "Payroll Management"
msgstr "Upravljanje platama"
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_ir_attachment_payroll_custom
msgid "Payroll attachment"
msgstr "Prilog plate"
#. module: hr_payroll_document
#: model:mail.template,subject:hr_payroll_document.payroll_employee_email_template
msgid "Payroll {{ctx.get('subject')}}"
msgstr "Plata {{ctx.get('subject')}}"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__payrolls
msgid "Payrolls"
msgstr "Plate"
#. module: hr_payroll_document
#: model:ir.actions.act_window,name:hr_payroll_document.payrolls_management_wizard_action
#: model:ir.ui.menu,name:hr_payroll_document.payrolls_management_wizard_menu_action
msgid "Payrolls Management"
msgstr "Upravljanje platama"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payrolls sent"
msgstr "Plate poslane"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payrolls sent to employees correctly"
msgstr "Plate poslane radnicima uspješno"
#. module: hr_payroll_document
#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form
msgid "Send"
msgstr "Pošalji"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__subject
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__subject
msgid "Subject"
msgstr "Tema"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/models/hr_employee.py:0
#, python-format
msgid "The field identification ID is not valid"
msgstr "Polje identifikaciona ID nije važeći"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "You must to filled country field of company"
msgstr "Morate popuniti polje zemlja kompanije"

View file

@ -0,0 +1,281 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_payroll_document
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-14 10:27+0000\n"
"PO-Revision-Date: 2023-12-14 10:27+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: hr_payroll_document
#: model:mail.template,body_html:hr_payroll_document.payroll_employee_email_template
msgid ""
"\n"
" <html>\n"
" <head></head>\n"
" <body style=\"margin: 0; padding: 0;\">\n"
" <table style=\"padding:20px;background-color:#ededed; "
"border-collapse:separate\" width=\"100%\" cellpadding=\"0\" "
"border=\"0\"><tbody><!-- HEADER --><tr><td style=\"min-width:590px\" "
"align=\"center\"><table style=\"min-width:590px;background-color:#fff; "
"padding:20px; border-collapse:separate\" width=\"590\" cellpadding=\"0\" "
"border=\"0\"><tbody><tr><td style=\"text-align:right\" "
"valign=\"middle\"><img src=\"/logo.png\" style=\"padding:0px;margin:0px; "
"height:auto; width:80px\" alt=\"{{object.company_id.name}}\"></td></"
"tr><tr><td style=\"text-align:left\" valign=\"middle\"><h2 style=\"color:"
"rgb(28, 130, 156)\"><font style=\"color:rgb(107, 175, 103);\">Payroll <t t-"
"out=\"ctx.get('subject')\" contenteditable=\"false\" data-oe-t-"
"inline=\"true\"/></font></h2></td></tr></tbody></table></td></tr><!-- "
"CONTENT --><tr><td style=\"min-width:590px\" align=\"center\"><table "
"style=\"min-width:590px;background-color:rgb(255, 255, 255); padding:20px; "
"border-collapse:separate\" width=\"590\" cellpadding=\"0\" "
"border=\"0\"><tbody><tr><td style=\"font-family:Arial,Helvetica,sans-serif;"
"color:#555; font-size:14px\" valign=\"top\"><p> </p><p>Hello <t t-"
"out=\"object.name\" contenteditable=\"false\" data-oe-t-inline=\"true\"/>,</"
"p><br><p>We send you the payroll with the subject <t t-out=\"ctx."
"get('subject')\" contenteditable=\"false\" data-oe-t-inline=\"true\"/>.<br></"
"p></td></tr><tr><td style=\"font-family:Arial,Helvetica,sans-serif;color:"
"#555; font-size:14px\" valign=\"top\"><br></td></tr><tr><td style=\"font-"
"family:Arial,Helvetica,sans-serif;color:#555; font-size:14px\" "
"valign=\"top\"><br><p></p></td></tr></tbody></table></td></tr><!-- FOOTER --"
"><tr><td style=\"min-width:590px\" align=\"center\"><table style=\"min-"
"width:590px;background-color:#95ce3f; padding:20px; border-collapse:"
"separate\" width=\"590\" cellpadding=\"0\" border=\"0\"><tbody> </tbody></"
"table></td></tr></tbody></table>\n"
" <p></p>\n"
" </html>\n"
" \n"
" "
msgstr ""
"\n"
" <html>\n"
" <head></head>\n"
" <body style=\"margin: 0; padding: 0;\">\n"
" <table style=\"padding:20px;background-color:#ededed; "
"border-collapse:separate\" width=\"100%\" cellpadding=\"0\" "
"border=\"0\"><tbody><!-- HEADER --><tr><td style=\"min-width:590px\" "
"align=\"center\"><table style=\"min-width:590px;background-color:#fff; "
"padding:20px; border-collapse:separate\" width=\"590\" cellpadding=\"0\" "
"border=\"0\"><tbody><tr><td style=\"text-align:right\" "
"valign=\"middle\"><img src=\"/logo.png\" style=\"padding:0px;margin:0px; "
"height:auto; width:80px\" alt=\"{{object.company_id.name}}\"></td></"
"tr><tr><td style=\"text-align:left\" valign=\"middle\"><h2 style=\"color:"
"rgb(28, 130, 156)\"><font style=\"color:rgb(107, 175, 103);\">Nòmina <t t-"
"out=\"ctx.get('month')\" contenteditable=\"false\" data-oe-t-inline=\"true\"/"
"></font></h2></td></tr></tbody></table></td></tr><!-- CONTENT --><tr><td "
"style=\"min-width:590px\" align=\"center\"><table style=\"min-width:590px;"
"background-color:rgb(255, 255, 255); padding:20px; border-collapse:"
"separate\" width=\"590\" cellpadding=\"0\" border=\"0\"><tbody><tr><td "
"style=\"font-family:Arial,Helvetica,sans-serif;color:#555; font-size:14px\" "
"valign=\"top\"><p> </p><p>Hola <t t-out=\"object.name\" "
"contenteditable=\"false\" data-oe-t-inline=\"true\"/>,</p><br><p>Et remetem "
"la teva nòmina del mes de <t t-out=\"ctx.get('subject')\" "
"contenteditable=\"false\" data-oe-t-inline=\"true\"/>.<br></p></td></"
"tr><tr><td style=\"font-family:Arial,Helvetica,sans-serif;color:#555; font-"
"size:14px\" valign=\"top\"><br></td></tr><tr><td style=\"font-family:Arial,"
"Helvetica,sans-serif;color:#555; font-size:14px\" valign=\"top\"><br><p></"
"p></td></tr></tbody></table></td></tr><!-- FOOTER --><tr><td style=\"min-"
"width:590px\" align=\"center\"><table style=\"min-width:590px;background-"
"color:#95ce3f; padding:20px; border-collapse:separate\" width=\"590\" "
"cellpadding=\"0\" border=\"0\"><tbody> </tbody></table></td></tr></tbody></"
"table>\n"
" <p></p>\n"
" </html>\n"
" \n"
" "
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_ir_attachment
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment__payrol_rel
msgid "Attachment"
msgstr "Adjunt"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__attachment_id
msgid "Attachment File"
msgstr "Fitxer Adjunt"
#. module: hr_payroll_document
#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form
msgid "Close"
msgstr "Tancar"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_date
msgid "Create Date"
msgstr "Data de creació"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_uid
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_uid
msgid "Created by"
msgstr "Creat per"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_date
msgid "Created on"
msgstr "Creat el"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__display_name
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__display_name
msgid "Display Name"
msgstr "Nom a mostrar"
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_hr_employee
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__employee
msgid "Employee"
msgstr "Empleat"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Employees not found"
msgstr "Empleats no trobats"
#. module: hr_payroll_document
#: model:ir.model.fields,help:hr_payroll_document.field_payroll_management_wizard__subject
msgid "Enter the title of the payroll whether it is the month, week, day, etc."
msgstr "Introduïu el títol de la nòmina ja sigui el mes, setmana, dia, etc."
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__id
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__id
msgid "ID"
msgstr ""
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "IDs whose employee has not been found: "
msgstr "IDs dels empleats que no s'han trobat: "
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__identification_id
msgid "Identification ID"
msgstr "Identificació ID"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom____last_update
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard____last_update
msgid "Last Modified on"
msgstr "Darrera modificació el"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_uid
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_uid
msgid "Last Updated by"
msgstr "Darrera actualització per"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_date
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_date
msgid "Last Updated on"
msgstr "Darrera actualització el"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Missing pdf file signature"
msgstr "Els fitxers han de ser de tipus pdf"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payroll"
msgstr "Nòmina"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payroll "
msgstr "Nòmina "
#. module: hr_payroll_document
#: model:mail.template,name:hr_payroll_document.payroll_employee_email_template
msgid "Payroll Employee"
msgstr "Nòmina Empleat"
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_payroll_management_wizard
msgid "Payroll Management"
msgstr "Gestió Nòmines"
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_ir_attachment_payroll_custom
msgid "Payroll attachment"
msgstr "Adjunt Nòmina"
#. module: hr_payroll_document
#: model:mail.template,subject:hr_payroll_document.payroll_employee_email_template
msgid "Payroll {{ctx.get('subject')}}"
msgstr "Nòmina {{ctx.get('month')}}"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__payrolls
msgid "Payrolls"
msgstr "Nòmines"
#. module: hr_payroll_document
#: model:ir.actions.act_window,name:hr_payroll_document.payrolls_management_wizard_action
#: model:ir.ui.menu,name:hr_payroll_document.payrolls_management_wizard_menu_action
msgid "Payrolls Management"
msgstr "Gestió Nòmines"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payrolls sent"
msgstr "Nòmines enviades"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payrolls sent to employees correctly"
msgstr "Nòmines envides als empleats correctament"
#. module: hr_payroll_document
#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form
msgid "Send"
msgstr "Enviar"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__subject
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__subject
msgid "Subject"
msgstr "Assumpte"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/models/hr_employee.py:0
#, python-format
msgid "The field identification ID is not valid"
msgstr "El camp identificatiu ID no és vàlid"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "You must to filled country field of company"
msgstr "Falta emplenar el camp de país de l'empresa"

View file

@ -0,0 +1,281 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_payroll_document
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-14 10:28+0000\n"
"PO-Revision-Date: 2023-12-14 10:28+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: hr_payroll_document
#: model:mail.template,body_html:hr_payroll_document.payroll_employee_email_template
msgid ""
"\n"
" <html>\n"
" <head></head>\n"
" <body style=\"margin: 0; padding: 0;\">\n"
" <table style=\"padding:20px;background-color:#ededed; "
"border-collapse:separate\" width=\"100%\" cellpadding=\"0\" "
"border=\"0\"><tbody><!-- HEADER --><tr><td style=\"min-width:590px\" "
"align=\"center\"><table style=\"min-width:590px;background-color:#fff; "
"padding:20px; border-collapse:separate\" width=\"590\" cellpadding=\"0\" "
"border=\"0\"><tbody><tr><td style=\"text-align:right\" "
"valign=\"middle\"><img src=\"/logo.png\" style=\"padding:0px;margin:0px; "
"height:auto; width:80px\" alt=\"{{object.company_id.name}}\"></td></"
"tr><tr><td style=\"text-align:left\" valign=\"middle\"><h2 style=\"color:"
"rgb(28, 130, 156)\"><font style=\"color:rgb(107, 175, 103);\">Payroll <t t-"
"out=\"ctx.get('subject')\" contenteditable=\"false\" data-oe-t-"
"inline=\"true\"/></font></h2></td></tr></tbody></table></td></tr><!-- "
"CONTENT --><tr><td style=\"min-width:590px\" align=\"center\"><table "
"style=\"min-width:590px;background-color:rgb(255, 255, 255); padding:20px; "
"border-collapse:separate\" width=\"590\" cellpadding=\"0\" "
"border=\"0\"><tbody><tr><td style=\"font-family:Arial,Helvetica,sans-serif;"
"color:#555; font-size:14px\" valign=\"top\"><p> </p><p>Hello <t t-"
"out=\"object.name\" contenteditable=\"false\" data-oe-t-inline=\"true\"/>,</"
"p><br><p>We send you the payroll with the subject <t t-out=\"ctx."
"get('subject')\" contenteditable=\"false\" data-oe-t-inline=\"true\"/>.<br></"
"p></td></tr><tr><td style=\"font-family:Arial,Helvetica,sans-serif;color:"
"#555; font-size:14px\" valign=\"top\"><br></td></tr><tr><td style=\"font-"
"family:Arial,Helvetica,sans-serif;color:#555; font-size:14px\" "
"valign=\"top\"><br><p></p></td></tr></tbody></table></td></tr><!-- FOOTER --"
"><tr><td style=\"min-width:590px\" align=\"center\"><table style=\"min-"
"width:590px;background-color:#95ce3f; padding:20px; border-collapse:"
"separate\" width=\"590\" cellpadding=\"0\" border=\"0\"><tbody> </tbody></"
"table></td></tr></tbody></table>\n"
" <p></p>\n"
" </html>\n"
" \n"
" "
msgstr ""
"\n"
" <html>\n"
" <head></head>\n"
" <body style=\"margin: 0; padding: 0;\">\n"
" <table style=\"padding:20px;background-color:#ededed; "
"border-collapse:separate\" width=\"100%\" cellpadding=\"0\" "
"border=\"0\"><tbody><!-- HEADER --><tr><td style=\"min-width:590px\" "
"align=\"center\"><table style=\"min-width:590px;background-color:#fff; "
"padding:20px; border-collapse:separate\" width=\"590\" cellpadding=\"0\" "
"border=\"0\"><tbody><tr><td style=\"text-align:right\" "
"valign=\"middle\"><img src=\"/logo.png\" style=\"padding:0px;margin:0px; "
"height:auto; width:80px\" alt=\"{{object.company_id.name}}\"></td></"
"tr><tr><td style=\"text-align:left\" valign=\"middle\"><h2 style=\"color:"
"rgb(28, 130, 156)\"><font style=\"color:rgb(107, 175, 103);\">Nómina <t t-"
"out=\"ctx.get('month')\" contenteditable=\"false\" data-oe-t-inline=\"true\"/"
"></font></h2></td></tr></tbody></table></td></tr><!-- CONTENT --><tr><td "
"style=\"min-width:590px\" align=\"center\"><table style=\"min-width:590px;"
"background-color:rgb(255, 255, 255); padding:20px; border-collapse:"
"separate\" width=\"590\" cellpadding=\"0\" border=\"0\"><tbody><tr><td "
"style=\"font-family:Arial,Helvetica,sans-serif;color:#555; font-size:14px\" "
"valign=\"top\"><p> </p><p>Hola <t t-out=\"object.name\" "
"contenteditable=\"false\" data-oe-t-inline=\"true\"/>,</p><br><p>Te enviamos "
"la nómina del mes de <t t-out=\"ctx.get('subject')\" "
"contenteditable=\"false\" data-oe-t-inline=\"true\"/>.<br></p></td></"
"tr><tr><td style=\"font-family:Arial,Helvetica,sans-serif;color:#555; font-"
"size:14px\" valign=\"top\"><br></td></tr><tr><td style=\"font-family:Arial,"
"Helvetica,sans-serif;color:#555; font-size:14px\" valign=\"top\"><br><p></"
"p></td></tr></tbody></table></td></tr><!-- FOOTER --><tr><td style=\"min-"
"width:590px\" align=\"center\"><table style=\"min-width:590px;background-"
"color:#95ce3f; padding:20px; border-collapse:separate\" width=\"590\" "
"cellpadding=\"0\" border=\"0\"><tbody> </tbody></table></td></tr></tbody></"
"table>\n"
" <p></p>\n"
" </html>\n"
" \n"
" "
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_ir_attachment
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment__payrol_rel
msgid "Attachment"
msgstr "Adjunto"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__attachment_id
msgid "Attachment File"
msgstr "Fichero Adjunto"
#. module: hr_payroll_document
#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form
msgid "Close"
msgstr "Cerrar"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_date
msgid "Create Date"
msgstr "Fecha de creación"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_uid
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_date
msgid "Created on"
msgstr "Creado el"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__display_name
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__display_name
msgid "Display Name"
msgstr "Nombre para mostrar"
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_hr_employee
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__employee
msgid "Employee"
msgstr "Empleado"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Employees not found"
msgstr "Empleados no encontrados"
#. module: hr_payroll_document
#: model:ir.model.fields,help:hr_payroll_document.field_payroll_management_wizard__subject
msgid "Enter the title of the payroll whether it is the month, week, day, etc."
msgstr "Introduzca el título de la nómina ya sea el mes, semana, día , etc.."
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__id
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__id
msgid "ID"
msgstr ""
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "IDs whose employee has not been found: "
msgstr "IDs de los empleados que no se han encontrado: "
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__identification_id
msgid "Identification ID"
msgstr "Identificación ID"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom____last_update
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard____last_update
msgid "Last Modified on"
msgstr "Última modificación el"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_uid
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_uid
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_date
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_date
msgid "Last Updated on"
msgstr "Última actualización el"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Missing pdf file signature"
msgstr "Los archivos tienen que ser de tipo pdf"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payroll"
msgstr "Nómina"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payroll "
msgstr "Nómina "
#. module: hr_payroll_document
#: model:mail.template,name:hr_payroll_document.payroll_employee_email_template
msgid "Payroll Employee"
msgstr "Nómina Empleado"
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_payroll_management_wizard
msgid "Payroll Management"
msgstr "Gestión Nóminas"
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_ir_attachment_payroll_custom
msgid "Payroll attachment"
msgstr "Adjunto Nómina"
#. module: hr_payroll_document
#: model:mail.template,subject:hr_payroll_document.payroll_employee_email_template
msgid "Payroll {{ctx.get('subject')}}"
msgstr "Nómina {{ctx.get('month')}}"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__payrolls
msgid "Payrolls"
msgstr "Nóminas"
#. module: hr_payroll_document
#: model:ir.actions.act_window,name:hr_payroll_document.payrolls_management_wizard_action
#: model:ir.ui.menu,name:hr_payroll_document.payrolls_management_wizard_menu_action
msgid "Payrolls Management"
msgstr "Gestión Nóminas"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payrolls sent"
msgstr "Nóminas enviadas"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payrolls sent to employees correctly"
msgstr "Nóminas enviadas a los empleados correctamente"
#. module: hr_payroll_document
#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form
msgid "Send"
msgstr "Enviar"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__subject
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__subject
msgid "Subject"
msgstr "Asunto"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/models/hr_employee.py:0
#, python-format
msgid "The field identification ID is not valid"
msgstr "El campo identificativo ID no es válido"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "You must to filled country field of company"
msgstr "Falta rellenar el campo del país de la empresa"

View file

@ -0,0 +1,220 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_payroll_document
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: hr_payroll_document
#: model:mail.template,body_html:hr_payroll_document.payroll_employee_email_template
msgid ""
"\n"
" <html>\n"
" <head></head>\n"
" <body style=\"margin: 0; padding: 0;\">\n"
" <table style=\"padding:20px;background-color:#ededed; border-collapse:separate\" width=\"100%\" cellpadding=\"0\" border=\"0\"><tbody><!-- HEADER --><tr><td style=\"min-width:590px\" align=\"center\"><table style=\"min-width:590px;background-color:#fff; padding:20px; border-collapse:separate\" width=\"590\" cellpadding=\"0\" border=\"0\"><tbody><tr><td style=\"text-align:right\" valign=\"middle\"><img src=\"/logo.png\" style=\"padding:0px;margin:0px; height:auto; width:80px\" alt=\"{{object.company_id.name}}\"></td></tr><tr><td style=\"text-align:left\" valign=\"middle\"><h2 style=\"color:rgb(28, 130, 156)\"><font style=\"color:rgb(107, 175, 103);\">Payroll <t t-out=\"ctx.get('subject')\" contenteditable=\"false\" data-oe-t-inline=\"true\"/></font></h2></td></tr></tbody></table></td></tr><!-- CONTENT --><tr><td style=\"min-width:590px\" align=\"center\"><table style=\"min-width:590px;background-color:rgb(255, 255, 255); padding:20px; border-collapse:separate\" width=\"590\" cellpadding=\"0\" border=\"0\"><tbody><tr><td style=\"font-family:Arial,Helvetica,sans-serif;color:#555; font-size:14px\" valign=\"top\"><p> </p><p>Hello <t t-out=\"object.name\" contenteditable=\"false\" data-oe-t-inline=\"true\"/>,</p><br><p>We send you the payroll with the subject <t t-out=\"ctx.get('subject')\" contenteditable=\"false\" data-oe-t-inline=\"true\"/>.<br></p></td></tr><tr><td style=\"font-family:Arial,Helvetica,sans-serif;color:#555; font-size:14px\" valign=\"top\"><br></td></tr><tr><td style=\"font-family:Arial,Helvetica,sans-serif;color:#555; font-size:14px\" valign=\"top\"><br><p></p></td></tr></tbody></table></td></tr><!-- FOOTER --><tr><td style=\"min-width:590px\" align=\"center\"><table style=\"min-width:590px;background-color:#95ce3f; padding:20px; border-collapse:separate\" width=\"590\" cellpadding=\"0\" border=\"0\"><tbody> </tbody></table></td></tr></tbody></table>\n"
" <p></p>\n"
" </html>\n"
" \n"
" "
msgstr ""
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_ir_attachment
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment__payrol_rel
msgid "Attachment"
msgstr ""
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__attachment_id
msgid "Attachment File"
msgstr ""
#. module: hr_payroll_document
#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form
msgid "Close"
msgstr ""
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_date
msgid "Create Date"
msgstr ""
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_uid
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_uid
msgid "Created by"
msgstr ""
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_date
msgid "Created on"
msgstr ""
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__display_name
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__display_name
msgid "Display Name"
msgstr ""
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_hr_employee
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__employee
msgid "Employee"
msgstr ""
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Employees not found"
msgstr ""
#. module: hr_payroll_document
#: model:ir.model.fields,help:hr_payroll_document.field_payroll_management_wizard__subject
msgid ""
"Enter the title of the payroll whether it is the month, week, day, etc."
msgstr ""
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__id
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__id
msgid "ID"
msgstr ""
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "IDs whose employee has not been found: "
msgstr ""
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__identification_id
msgid "Identification ID"
msgstr ""
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom____last_update
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard____last_update
msgid "Last Modified on"
msgstr ""
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_uid
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_uid
msgid "Last Updated by"
msgstr ""
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_date
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_date
msgid "Last Updated on"
msgstr ""
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Missing pdf file signature"
msgstr ""
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payroll"
msgstr ""
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payroll "
msgstr ""
#. module: hr_payroll_document
#: model:mail.template,name:hr_payroll_document.payroll_employee_email_template
msgid "Payroll Employee"
msgstr ""
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_payroll_management_wizard
msgid "Payroll Management"
msgstr ""
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_ir_attachment_payroll_custom
msgid "Payroll attachment"
msgstr ""
#. module: hr_payroll_document
#: model:mail.template,subject:hr_payroll_document.payroll_employee_email_template
msgid "Payroll {{ctx.get('subject')}}"
msgstr ""
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__payrolls
msgid "Payrolls"
msgstr ""
#. module: hr_payroll_document
#: model:ir.actions.act_window,name:hr_payroll_document.payrolls_management_wizard_action
#: model:ir.ui.menu,name:hr_payroll_document.payrolls_management_wizard_menu_action
msgid "Payrolls Management"
msgstr ""
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payrolls sent"
msgstr ""
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payrolls sent to employees correctly"
msgstr ""
#. module: hr_payroll_document
#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form
msgid "Send"
msgstr ""
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__subject
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__subject
msgid "Subject"
msgstr ""
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/models/hr_employee.py:0
#, python-format
msgid "The field identification ID is not valid"
msgstr ""
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "You must to filled country field of company"
msgstr ""

View file

@ -0,0 +1,260 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_payroll_document
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-03-04 15:34+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: hr_payroll_document
#: model:mail.template,body_html:hr_payroll_document.payroll_employee_email_template
msgid ""
"\n"
" <html>\n"
" <head></head>\n"
" <body style=\"margin: 0; padding: 0;\">\n"
" <table style=\"padding:20px;background-color:#ededed; border-collapse:separate\" width=\"100%\" cellpadding=\"0\" border=\"0\"><tbody><!-- HEADER --><tr><td style=\"min-width:590px\" align=\"center\"><table style=\"min-width:590px;background-color:#fff; padding:20px; border-collapse:separate\" width=\"590\" cellpadding=\"0\" border=\"0\"><tbody><tr><td style=\"text-align:right\" valign=\"middle\"><img src=\"/logo.png\" style=\"padding:0px;margin:0px; height:auto; width:80px\" alt=\"{{object.company_id.name}}\"></td></tr><tr><td style=\"text-align:left\" valign=\"middle\"><h2 style=\"color:rgb(28, 130, 156)\"><font style=\"color:rgb(107, 175, 103);\">Payroll <t t-out=\"ctx.get('subject')\" contenteditable=\"false\" data-oe-t-inline=\"true\"/></font></h2></td></tr></tbody></table></td></tr><!-- CONTENT --><tr><td style=\"min-width:590px\" align=\"center\"><table style=\"min-width:590px;background-color:rgb(255, 255, 255); padding:20px; border-collapse:separate\" width=\"590\" cellpadding=\"0\" border=\"0\"><tbody><tr><td style=\"font-family:Arial,Helvetica,sans-serif;color:#555; font-size:14px\" valign=\"top\"><p> </p><p>Hello <t t-out=\"object.name\" contenteditable=\"false\" data-oe-t-inline=\"true\"/>,</p><br><p>We send you the payroll with the subject <t t-out=\"ctx.get('subject')\" contenteditable=\"false\" data-oe-t-inline=\"true\"/>.<br></p></td></tr><tr><td style=\"font-family:Arial,Helvetica,sans-serif;color:#555; font-size:14px\" valign=\"top\"><br></td></tr><tr><td style=\"font-family:Arial,Helvetica,sans-serif;color:#555; font-size:14px\" valign=\"top\"><br><p></p></td></tr></tbody></table></td></tr><!-- FOOTER --><tr><td style=\"min-width:590px\" align=\"center\"><table style=\"min-width:590px;background-color:#95ce3f; padding:20px; border-collapse:separate\" width=\"590\" cellpadding=\"0\" border=\"0\"><tbody> </tbody></table></td></tr></tbody></table>\n"
" <p></p>\n"
" </html>\n"
" \n"
" "
msgstr ""
"\n"
" <html>\n"
" <head></head>\n"
" <body style=\"margin: 0; padding: 0;\">\n"
" <table style=\"padding:20px;background-color:#ededed; "
"border-collapse:separate\" width=\"100%\" cellpadding=\"0\" border=\"0\""
"><tbody><!-- HEADER --><tr><td style=\"min-width:590px\" align=\"center\""
"><table style=\"min-width:590px;background-color:#fff; padding:20px; border-"
"collapse:separate\" width=\"590\" cellpadding=\"0\" border=\"0\""
"><tbody><tr><td style=\"text-align:right\" valign=\"middle\"><img src=\"/logo"
".png\" style=\"padding:0px;margin:0px; height:auto; width:80px\" alt=\""
"{{object.company_id.name}}\"></td></tr><tr><td style=\"text-align:left\" "
"valign=\"middle\"><h2 style=\"color:rgb(28, 130, 156)\"><font style=\"color"
":rgb(107, 175, 103);\">Stipendio<t t-out=\"ctx.get('subject')\" "
"contenteditable=\"false\" data-oe-t-inline=\"true\""
"/></font></h2></td></tr></tbody></table></td></tr><!-- CONTENT --><tr><td "
"style=\"min-width:590px\" align=\"center\"><table style=\"min-width:590px"
";background-color:rgb(255, 255, 255); padding:20px; border-collapse:"
"separate\" width=\"590\" cellpadding=\"0\" border=\"0\"><tbody><tr><td style"
"=\"font-family:Arial,Helvetica,sans-serif;color:#555; font-size:14px\" "
"valign=\"top\"><p> </p><p>Hello <t t-out=\"object.name\" contenteditable="
"\"false\" data-oe-t-inline=\"true\"/>,</p><br><p>Abbiamo inviato la "
"retribuzione con soggetto<t t-out=\"ctx.get('subject')\" contenteditable="
"\"false\" data-oe-t-inline=\"true\"/>.<br></p></td></tr><tr><td style=\"font-"
"family:Arial,Helvetica,sans-serif;color:#555; font-size:14px\" valign=\"top\""
"><br></td></tr><tr><td style=\"font-family:Arial,Helvetica,sans-"
"serif;color:#555; font-size:14px\" valign=\"top\""
"><br><p></p></td></tr></tbody></table></td></tr><!-- FOOTER --><tr><td style"
"=\"min-width:590px\" align=\"center\"><table style=\"min-width:590px"
";background-color:#95ce3f; padding:20px; border-collapse:separate\" width="
"\"590\" cellpadding=\"0\" border=\"0\"><tbody> "
"</tbody></table></td></tr></tbody></table>\n"
" <p></p>\n"
" </html>\n"
" \n"
" "
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_ir_attachment
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment__payrol_rel
msgid "Attachment"
msgstr "Allegato"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__attachment_id
msgid "Attachment File"
msgstr "File allegato"
#. module: hr_payroll_document
#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form
msgid "Close"
msgstr "Chiudi"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_date
msgid "Create Date"
msgstr "Data creazione"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__create_uid
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__create_date
msgid "Created on"
msgstr "Creato il"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__display_name
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_hr_employee
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__employee
msgid "Employee"
msgstr "Dipendente"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Employees not found"
msgstr "Dipendenti non trovati"
#. module: hr_payroll_document
#: model:ir.model.fields,help:hr_payroll_document.field_payroll_management_wizard__subject
msgid ""
"Enter the title of the payroll whether it is the month, week, day, etc."
msgstr ""
"Inserire il titolo della retribuzione se è il mese, settimana, giorno, ecc."
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__id
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__id
msgid "ID"
msgstr "ID"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "IDs whose employee has not been found: "
msgstr "ID il cui dipendente non è stato trovato: "
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__identification_id
msgid "Identification ID"
msgstr "ID identificazione"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom____last_update
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_uid
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__write_date
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Missing pdf file signature"
msgstr "Firma PDF mancante"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payroll"
msgstr "Retribuzione"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payroll "
msgstr "Retribuzione "
#. module: hr_payroll_document
#: model:mail.template,name:hr_payroll_document.payroll_employee_email_template
msgid "Payroll Employee"
msgstr "Retribuzione dipendente"
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_payroll_management_wizard
msgid "Payroll Management"
msgstr "Gestione retribuzione"
#. module: hr_payroll_document
#: model:ir.model,name:hr_payroll_document.model_ir_attachment_payroll_custom
msgid "Payroll attachment"
msgstr "Allegato retribuzione"
#. module: hr_payroll_document
#: model:mail.template,subject:hr_payroll_document.payroll_employee_email_template
msgid "Payroll {{ctx.get('subject')}}"
msgstr "Retribuzione {{ctx.get('subject')}}"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__payrolls
msgid "Payrolls"
msgstr "Retribuzioni"
#. module: hr_payroll_document
#: model:ir.actions.act_window,name:hr_payroll_document.payrolls_management_wizard_action
#: model:ir.ui.menu,name:hr_payroll_document.payrolls_management_wizard_menu_action
msgid "Payrolls Management"
msgstr "Gestione retribuzioni"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payrolls sent"
msgstr "Retribuzioni inviate"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/tests/test_hr_payroll_document.py:0
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "Payrolls sent to employees correctly"
msgstr "Retribuzioni inviate correttamente ai dipendenti"
#. module: hr_payroll_document
#: model_terms:ir.ui.view,arch_db:hr_payroll_document.payrolls_management_wizard_form
msgid "Send"
msgstr "Invia"
#. module: hr_payroll_document
#: model:ir.model.fields,field_description:hr_payroll_document.field_ir_attachment_payroll_custom__subject
#: model:ir.model.fields,field_description:hr_payroll_document.field_payroll_management_wizard__subject
msgid "Subject"
msgstr "Oggetto"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/models/hr_employee.py:0
#, python-format
msgid "The field identification ID is not valid"
msgstr "L'ID identificazione file non è corretto"
#. module: hr_payroll_document
#. odoo-python
#: code:addons/hr_payroll_document/wizard/payroll_management_wizard.py:0
#, python-format
msgid "You must to filled country field of company"
msgstr "Serve compilare il campo nazione dell'azienda"

View file

@ -0,0 +1,3 @@
from . import ir_attachment_payroll_custom
from . import ir_attachment
from . import hr_employee

View file

@ -0,0 +1,14 @@
from odoo import _, models
from odoo.exceptions import ValidationError
class Employee(models.Model):
_inherit = "hr.employee"
def write(self, vals):
res = super().write(vals)
if "identification_id" in vals and not self.env["res.partner"].simple_vat_check(
self.env.company.country_id.code, vals["identification_id"]
):
raise ValidationError(_("The field identification ID is not valid"))
return res

View file

@ -0,0 +1,14 @@
from odoo import fields, models
class Attachment(models.Model):
_inherit = "ir.attachment"
payrol_rel = fields.Many2many(
"payroll.management.wizard",
"payrolls",
"attachment_id3",
"document_id",
string="Attachment",
invisible=1,
)

View file

@ -0,0 +1,18 @@
from odoo import fields, models
class IRAttachmentPayrollCustom(models.Model):
_name = "ir.attachment.payroll.custom"
_description = "Payroll attachment"
attachment_id = fields.Many2one(
comodel_name="ir.attachment",
string="Attachment File",
prefetch=False,
invisible=True,
ondelete="cascade",
)
employee = fields.Char()
identification_id = fields.Char("Identification ID")
create_date = fields.Date(default=fields.Date.context_today)
subject = fields.Char()

View file

@ -0,0 +1,2 @@
* Antoni Marroig Campomar <amarroig@apsl.net>
* Miquel Alzanillas Monserrat <malzanillas@apsl.net>

View file

@ -0,0 +1 @@
This module have a wizard view to manage the different payrolls of employees which is identified by the identification_id attribute.

View file

@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
payroll_management_wizard,payroll.management.wizard,model_payroll_management_wizard,hr.group_hr_manager,1,1,1,1
ir_attachment_payroll_custom,ir.attachment.payroll.custom,model_ir_attachment_payroll_custom,hr.group_hr_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 payroll_management_wizard payroll.management.wizard model_payroll_management_wizard hr.group_hr_manager 1 1 1 1
3 ir_attachment_payroll_custom ir.attachment.payroll.custom model_ir_attachment_payroll_custom hr.group_hr_manager 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,424 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>HR - Payroll Document</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="hr-payroll-document">
<h1 class="title">HR - Payroll Document</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:3698f5f5e529d5d32ae80cdc1ab30660ad4e5d39b6d98f8dace97a0b233743c5
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/payroll/tree/16.0/hr_payroll_document"><img alt="OCA/payroll" src="https://img.shields.io/badge/github-OCA%2Fpayroll-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/payroll-16-0/payroll-16-0-hr_payroll_document"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/payroll&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module have a wizard view to manage the different payrolls of employees which is identified by the identification_id attribute.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-1">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-2">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-3">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-4">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-5">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-1">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/payroll/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/payroll/issues/new?body=module:%20hr_payroll_document%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-2">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-3">Authors</a></h2>
<ul class="simple">
<li>APSL</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-4">Contributors</a></h2>
<ul class="simple">
<li>Antoni Marroig Campomar &lt;<a class="reference external" href="mailto:amarroig&#64;apsl.net">amarroig&#64;apsl.net</a>&gt;</li>
<li>Miquel Alzanillas Monserrat &lt;<a class="reference external" href="mailto:malzanillas&#64;apsl.net">malzanillas&#64;apsl.net</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-5">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/peluko00"><img alt="peluko00" src="https://github.com/peluko00.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/payroll/tree/16.0/hr_payroll_document">OCA/payroll</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1 @@
from . import test_hr_payroll_document

View file

@ -0,0 +1,51 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import base64
from odoo.modules.module import get_module_resource
from odoo.tests import common
from odoo.addons.mail.tests.common import mail_new_test_user
class TestHrPayrollDocument(common.TransactionCase):
def setUp(self):
super(TestHrPayrollDocument, self).setUp()
self.env.user.tz = "Europe/Brussels"
self.user_admin = self.env.ref("base.user_admin")
# Fix Company without country
self.env.company.country_id = False
# Test users to use through the various tests
self.user_employee = mail_new_test_user(
self.env, login="david", groups="base.group_user"
)
self.user_employee_id = self.user_employee.id
# Hr Data
self.employee_emp = self.env["hr.employee"].create(
{
"name": "David Employee",
"user_id": self.user_employee_id,
"company_id": 1,
"identification_id": "30831011V",
}
)
with open(
get_module_resource("hr_payroll_document", "tests", "test.pdf"), "rb"
) as pdf_file:
encoded_string = base64.b64encode(pdf_file.read())
ir_values = {
"name": "test",
"type": "binary",
"datas": encoded_string,
"store_fname": encoded_string,
"res_model": "payroll.management.wizard",
"res_id": 1,
}
self.attachment = self.env["ir.attachment"].create(ir_values)
self.subject = "January"
self.wizard = self.env["payroll.management.wizard"].create(
{"payrolls": [self.attachment.id], "subject": self.subject}
)

View file

@ -0,0 +1,107 @@
import base64
from odoo import _
from odoo.exceptions import UserError, ValidationError
from odoo.modules.module import get_module_resource
from odoo.addons.hr_payroll_document.tests.common import TestHrPayrollDocument
class TestHRPayrollDocument(TestHrPayrollDocument):
def setUp(self, *args, **kwargs):
super().setUp(*args, **kwargs)
def fill_company_id(self):
self.env.company.country_id = self.env["res.country"].search(
[("name", "=", "Spain")]
)
def test_extension_error(self):
with open(
get_module_resource("hr_payroll_document", "tests", "test.docx"), "rb"
) as pdf_file:
encoded_string = base64.b64encode(pdf_file.read())
ir_values = {
"name": "test",
"type": "binary",
"datas": encoded_string,
"store_fname": encoded_string,
"res_model": "payroll.management.wizard",
"res_id": 1,
}
self.attachment = self.env["ir.attachment"].create(ir_values)
self.subject = "January"
self.wizard = self.env["payroll.management.wizard"].create(
{"payrolls": [self.attachment.id], "subject": self.subject}
)
with self.assertRaises(ValidationError):
self.wizard.send_payrolls()
def test_company_id_required(self):
with self.assertRaises(UserError):
self.wizard.send_payrolls()
def test_employee_vat_not_valid(self):
self.fill_company_id()
with self.assertRaises(ValidationError):
employees = self.env["hr.employee"].search([])
for employee in employees:
if not employee.identification_id:
employee.identification_id = "XXXXXXX"
def test_one_employee_not_found(self):
self.fill_company_id()
self.env["hr.employee"].search([("id", "=", 1)]).identification_id = "37936636E"
self.assertEqual(
self.wizard.send_payrolls(),
{
"type": "ir.actions.client",
"tag": "display_notification",
"params": {
"title": _("Employees not found"),
"message": _("IDs whose employee has not been found: ")
+ "51000278D",
"sticky": True,
"type": "warning",
"next": {
"name": _("Payrolls sent"),
"type": "ir.actions.act_window",
"res_model": "hr.employee",
"views": [
(
self.env.ref("hr.hr_employee_public_view_kanban").id,
"list",
)
],
},
},
},
)
def test_send_payrolls_correctly(self):
self.fill_company_id()
self.env["hr.employee"].search([("id", "=", 1)]).identification_id = "51000278D"
self.assertEqual(
self.wizard.send_payrolls(),
{
"type": "ir.actions.client",
"tag": "display_notification",
"params": {
"title": _("Payrolls sent"),
"message": _("Payrolls sent to employees correctly"),
"sticky": False,
"type": "success",
"next": {
"name": _("Payrolls sent"),
"type": "ir.actions.act_window",
"res_model": "hr.employee",
"views": [
(
self.env.ref("hr.hr_employee_public_view_kanban").id,
"list",
)
],
},
},
},
)

View file

@ -0,0 +1 @@
from . import payroll_management_wizard

View file

@ -0,0 +1,169 @@
import base64
from base64 import b64decode
from pypdf import PdfReader, PdfWriter
from odoo import _, fields, models
from odoo.exceptions import UserError, ValidationError
class PayrollManagamentWizard(models.TransientModel):
_name = "payroll.management.wizard"
_description = "Payroll Management"
subject = fields.Char(
help="Enter the title of the payroll whether it is the month, week, day, etc."
)
payrolls = fields.Many2many(
"ir.attachment",
"payrol_rel",
"doc_id",
"attach_id3",
copy=False,
)
def send_payrolls(self):
not_found = set()
self.merge_pdfs()
reader = PdfReader("/tmp/merged-pdf.pdf")
employees = set()
# Validate if company have country
if not self.env.company.country_id:
raise UserError(_("You must to filled country field of company"))
# Find all IDs of the employees
for page in reader.pages:
for value in page.extract_text().split():
if self.validate_id(value) and value != self.env.company.vat:
employee = self.env["hr.employee"].search(
[("identification_id", "=", value)]
)
if employee:
employees.add(employee)
else:
not_found.add(value)
break
for employee in list(employees):
pdfWriter = PdfWriter()
for page in reader.pages:
if employee.identification_id in page.extract_text():
# Save pdf with payrolls of employee
pdfWriter.add_page(page)
path = "/tmp/" + _("Payroll ") + employee.name + ".pdf"
# Encrypt the payroll file with the identification identifier of the employee
pdfWriter.encrypt(employee.identification_id, algorithm="AES-256")
f = open(path, "wb")
pdfWriter.write(f)
f.close()
# Send payroll to the employee
self.send_mail(employee, path)
if not_found:
return {
"type": "ir.actions.client",
"tag": "display_notification",
"params": {
"title": _("Employees not found"),
"message": _("IDs whose employee has not been found: ")
+ ", ".join(list(not_found)),
"sticky": True,
"type": "warning",
"next": {
"name": _("Payrolls sent"),
"type": "ir.actions.act_window",
"res_model": "hr.employee",
"views": [
(
self.env.ref("hr.hr_employee_public_view_kanban").id,
"list",
)
],
},
},
}
return {
"type": "ir.actions.client",
"tag": "display_notification",
"params": {
"title": _("Payrolls sent"),
"message": _("Payrolls sent to employees correctly"),
"sticky": False,
"type": "success",
"next": {
"name": _("Payrolls sent"),
"type": "ir.actions.act_window",
"res_model": "hr.employee",
"views": [
(self.env.ref("hr.hr_employee_public_view_kanban").id, "list")
],
},
},
}
def merge_pdfs(self):
# Merge the pdfs together
pdfs = []
for file in self.payrolls:
b64 = file.datas
btes = b64decode(b64, validate=True)
if btes[0:4] != b"%PDF":
raise ValidationError(_("Missing pdf file signature"))
f = open("/tmp/" + file.name, "wb")
f.write(btes)
f.close()
pdfs.append(f.name)
merger = PdfWriter()
for pdf in pdfs:
merger.append(pdf)
merger.write("/tmp/merged-pdf.pdf")
merger.close()
def send_mail(self, employee, path):
# Open Payrolls of employee and encode content
with open(path, "rb") as pdf_file:
encoded_string = base64.b64encode(pdf_file.read())
# Attach file to email
ir_values = {
"name": _("Payroll") + "_" + self.subject + "_" + employee.name,
"type": "binary",
"datas": encoded_string,
"store_fname": encoded_string,
"res_model": "hr.employee",
"res_id": employee.id,
}
# Save payroll attachment to all employee payrolls attachments
self.env["ir.attachment.payroll.custom"].create(
{
"attachment_id": self.env["ir.attachment"].create(ir_values).id,
"employee": employee.name,
"subject": self.subject,
"identification_id": employee.identification_id,
}
)
# Send mail
mail_template = self.env.ref(
"hr_payroll_document.payroll_employee_email_template"
)
data_id = [(6, 0, [self.env["ir.attachment"].create(ir_values).id])]
mail_template.attachment_ids = data_id
mail_template.with_context(**{"subject": self.subject}).send_mail(
employee.id, force_send=True
)
def validate_id(self, number):
return self.env["res.partner"].simple_vat_check(
self.env.company.country_id.code, number
)

View file

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="payrolls_management_wizard_form" model="ir.ui.view">
<field name="name">payroll.management.wizard.form</field>
<field name="model">payroll.management.wizard</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="subject" required="1" />
</group>
<field name="payrolls" widget="many2many_binary" />
<footer>
<button
string="Send"
name="send_payrolls"
type="object"
class="oe_highlight"
/>
<button
string="Close"
class="btn btn-secondary"
special="cancel"
/>
</footer>
</sheet>
</form>
</field>
</record>
<record id="payrolls_management_wizard_action" model="ir.actions.act_window">
<field name="name">Payrolls Management</field>
<field name="res_model">payroll.management.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<menuitem
id="payrolls_management_wizard_menu_action"
action="payrolls_management_wizard_action"
parent="hr.menu_hr_root"
/>
</odoo>

View file

@ -0,0 +1,43 @@
[project]
name = "odoo-bringout-oca-payroll-hr_payroll_document"
version = "16.0.0"
description = "HR - Payroll Document - Manage payroll for each employee"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-ocb-hr>=16.0.0",
"odoo-bringout-oca-payroll-base_vat>=16.0.0",
"requests>=2.25.1"
]
readme = "README.md"
requires-python = ">= 3.11"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Office/Business",
]
[project.urls]
homepage = "https://github.com/bringout/0"
repository = "https://github.com/bringout/0"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["hr_payroll_document"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]

View file

@ -0,0 +1,47 @@
# HR Payroll Period
Odoo addon: hr_payroll_period
## Installation
```bash
pip install odoo-bringout-oca-payroll-hr_payroll_period
```
## Dependencies
This addon depends on:
- payroll
- date_range
## Manifest Information
- **Name**: HR Payroll Period
- **Version**: 16.0.1.0.0
- **Category**: Payroll
- **License**: AGPL-3
- **Installable**: True
## Source
Based on [OCA/payroll](https://github.com/OCA/payroll) branch 16.0, addon `hr_payroll_period`.
## License
This package maintains the original AGPL-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
- Reports: doc/REPORTS.md
- Security: doc/SECURITY.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

View file

@ -0,0 +1,32 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Hr_payroll_period Module - hr_payroll_period
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for hr_payroll_period. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,3 @@
# Controllers
This module does not define custom HTTP controllers.

View file

@ -0,0 +1,6 @@
# Dependencies
This addon depends on:
- [payroll](../../odoo-bringout-oca-payroll-payroll)
- [date_range](../../odoo-bringout-oca-server-ux-date_range)

View file

@ -0,0 +1,4 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon hr_payroll_period or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-payroll-hr_payroll_period"
# or
uv pip install odoo-bringout-oca-payroll-hr_payroll_period"
```

View file

@ -0,0 +1,20 @@
# Models
Detected core models and extensions in hr_payroll_period.
```mermaid
classDiagram
class hr_fiscalyear
class hr_period
class date_range
class date_range_type
class hr_contract
class hr_employee_base
class hr_payslip
class hr_payslip_employees
class hr_payslip_run
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: hr_payroll_period. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon hr_payroll_period
- License: LGPL-3

View file

@ -0,0 +1,3 @@
# Reports
This module does not define custom reports.

View file

@ -0,0 +1,41 @@
# Security
Access control and security definitions in hr_payroll_period.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../hr_payroll_period/security/ir.model.access.csv)**
- 4 model access rules
## Record Rules
Row-level security rules defined in:
## Security Groups & Configuration
Security groups and permissions defined in:
- **[hr_period_security.xml](../hr_payroll_period/security/hr_period_security.xml)**
```mermaid
graph TB
subgraph "Security Layers"
A[Users] --> B[Groups]
B --> C[Access Control Lists]
C --> D[Models]
B --> E[Record Rules]
E --> F[Individual Records]
end
```
Security files overview:
- **[hr_period_security.xml](../hr_payroll_period/security/hr_period_security.xml)**
- Security groups, categories, and XML-based rules
- **[ir.model.access.csv](../hr_payroll_period/security/ir.model.access.csv)**
- Model access permissions (CRUD rights)
Notes
- Access Control Lists define which groups can access which models
- Record Rules provide row-level security (filter records by user/group)
- Security groups organize users and define permission sets
- All security is enforced at the ORM level by Odoo

View file

@ -0,0 +1,5 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -0,0 +1,7 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon hr_payroll_period
```

View file

@ -0,0 +1,3 @@
# Wizards
This module does not include UI wizards.

View file

@ -0,0 +1,155 @@
=================
HR Payroll Period
=================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:f945b44927a810367557b02abc26b2d5099f9fcf12877221187aae164ce89cf8
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpayroll-lightgray.png?logo=github
:target: https://github.com/OCA/payroll/tree/16.0/hr_payroll_period
:alt: OCA/payroll
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/payroll-16-0/payroll-16-0-hr_payroll_period
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/payroll&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
Adds the concept of period in the human resources management.
The objective of the module is to create periods of time to
be used in the human resources management flows such as
specific payroll period of time or timesheet periods.
Regarding to payrolls, it adds the date of payment on the
payslip and payslip batch. This date is automatically filled
when selecting a period. It also adds a sequence on the payslip
batch name and the company on the payslip batch.
**Table of contents**
.. contents::
:local:
Installation
============
Install the payroll of your localization, then install this module.
Configuration
=============
Create a fiscal year
~~~~~~~~~~~~~~~~~~~~
Go to: Payroll -> Configuration -> Payroll Fiscal Year
- Select a type of schedule, e.g. monthly
- Select a duration, e.g. from 2015-01-01 to 2015-12-31
- Select when the payment is done, e.g. the second day of the next period
- Click on create periods, then confirm
The first period of the year is now open and ready to be used.
Some companies have employees paid at different types of schedule.
In that case, you need to create as many fiscal years as types of schedule
required. The same applies in a multi-company configuration.
Usage
=====
Create a payslip batch
~~~~~~~~~~~~~~~~~~~~~~
Go to: Human Resources -> Payroll -> Payslip Batches
The first period of the fiscal year is already selected.
You may change it if you manage multiple types of schedules.
- Click on Generate Payslips
The employees paid with the selected schedule are automatically selected.
- Click on Generate
- Confirm your payslips
- Click on Close
The payroll period is closed automatically and the next one is open.
Known issues / Roadmap
======================
#. Currently it is not possible to close the HR fiscal year before the end of
the end of the last period. When implementing this feature, contracts and
opened payslips should be updated with the new period assigned.
#. It is not possible to use the date_range module in server tools to generate
semi-monthly periods so those periods are generated as in previous versions.
#. The date_range module does not allow to create a period for just one day.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/payroll/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/payroll/issues/new?body=module:%20hr_payroll_period%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Savoir-faire Linux
Contributors
~~~~~~~~~~~~
* David Dufresne <david.dufresne@savoirfairelinux.com>
* Maxime Chambreuil <maxime.chambreuil@savoirfairelinux.com>
* Pierre Lamarche <pierre.lamarche@savoirfairelinux.com>
* Salton Massally <smassally@idtlabs.sl>
* Guewen Baconnier <guewen.baconnier@camptocamp.com>
* Jordi Ballester Alomar <jordi.ballester@eficent.com>
* Serpent Consulting Services Pvt. Ltd. <support@serpentcs.com>
* Aaron Henriquez <aheficent@eficent.com>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
.. |maintainer-nimarosa| image:: https://github.com/nimarosa.png?size=40px
:target: https://github.com/nimarosa
:alt: nimarosa
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-nimarosa|
This module is part of the `OCA/payroll <https://github.com/OCA/payroll/tree/16.0/hr_payroll_period>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import models

View file

@ -0,0 +1,33 @@
# Copyright 2015 Savoir-faire Linux. All Rights Reserved.
# Copyright 2017 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "HR Payroll Period",
"version": "16.0.1.0.0",
"license": "AGPL-3",
"category": "Payroll",
"summary": "Add payroll periods",
"author": "Savoir-faire Linux, " "Odoo Community Association (OCA)",
"website": "https://github.com/OCA/payroll",
"depends": [
"payroll",
"date_range",
],
"data": [
"security/ir.model.access.csv",
"security/hr_period_security.xml",
"data/ir_sequence_data.xml",
"data/date_range_type.xml",
"data/ir_cron.xml",
"views/menus.xml",
"views/date_range_type_view.xml",
"views/hr_period_view.xml",
"views/hr_fiscalyear_view.xml",
"views/hr_payslip_view.xml",
"views/hr_payslip_run_view.xml",
"views/hr_payslip_employee_view.xml",
],
"installable": True,
"maintainers": ["nimarosa"],
}

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017 ACSONE SA/NV
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo noupdate="1">
<record model="date.range.type" id="date_range_hr_fiscal_year">
<field name="name">HR Fiscal Year</field>
<field name="allow_overlap" eval="False" />
<field name="hr_fiscal_year" eval="True" />
</record>
<record model="date.range.type" id="date_range_hr_period">
<field name="name">HR Period</field>
<field name="allow_overlap" eval="False" />
<field name="hr_period" eval="True" />
</record>
</odoo>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<record id="ir_cron_hr_payroll_period" model="ir.cron">
<field name='name'>Create Next Fiscal Year</field>
<field name='interval_number'>1</field>
<field name='interval_type'>months</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False" />
<field name="active" eval="False" />
<field name="code">model.cron_create_next_fiscal_year()</field>
<field name="state">code</field>
<field name="user_id" ref="base.user_root" />
<field name="model_id" ref="model_hr_fiscalyear" />
</record>
</odoo>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<record id="seq_payslip_run" model="ir.sequence">
<field name="name">Payslip Batch</field>
<field name="code">hr.payslip.run</field>
<field name="padding" eval="5" />
<field name="prefix">PAY</field>
</record>
</odoo>

View file

@ -0,0 +1,624 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_payroll_period
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%(name)s Period #%(number)s"
msgstr "%(name)s Period #%(number)s"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the current period"
msgstr "%s dan trenutnog perioda"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the next period"
msgstr "%s dan sljedećeg perioda"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__active
msgid "Active"
msgstr "Aktivan"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Annually (1)"
msgstr "Godišnje (1)"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_employee_base
msgid "Basic Employee"
msgstr "Obični zaposlenik"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-monthly (6)"
msgstr "Dvomjesečno (6)"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-weekly (26)"
msgstr "Dvosedmično (26)"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Close Period"
msgstr "Zatvori period"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__done
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__done
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Closed"
msgstr "Zatvoreno"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__company_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Company"
msgstr "Preduzeće"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Confirm"
msgstr "Potvrdi"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_base__contract_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_public__contract_id
msgid "Contract"
msgstr "Ugovor"
#. module: hr_payroll_period
#: model:ir.actions.server,name:hr_payroll_period.ir_cron_hr_payroll_period_ir_actions_server
#: model:ir.cron,cron_name:hr_payroll_period.ir_cron_hr_payroll_period
msgid "Create Next Fiscal Year"
msgstr "Kreiraj sljedeću fiskalnu godinu"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Create Periods"
msgstr "Kreiraj periode"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee__contract_id
msgid "Current Contract"
msgstr "Trenutni ugovor"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_employee__contract_id
msgid "Current contract of the employee"
msgstr "Trenutni ugovor zaposlenika"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Daily (365)"
msgstr "Dnevno (365)"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_date_range_type
msgid "Date Range Type"
msgstr "date.range.type"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_payment
msgid "Date of Payment"
msgstr "Datum plaćanja"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid ""
"Date stop cannot be sooner than the date start\n"
" "
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_date_range_type_hr_form_view
msgid "Daterange Type"
msgstr "Tip datumskog raspona"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_day
msgid "Day of Payment"
msgstr "Dan plaćanja"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_contract__schedule_pay
msgid "Defines the frequency of the wage payment."
msgstr "Definiše učestalos isplate plate."
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__display_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__draft
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__draft
msgid "Draft"
msgstr "U pripremi"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Duration"
msgstr "Trajanje"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_contract
msgid "Employee Contract"
msgstr "Ugovor zaposlenog"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_end
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_end
msgid "End date"
msgstr "Završni datum"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fifth"
msgstr "Peti"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "First"
msgstr "Prvi"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__fiscalyear_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Fiscal Year"
msgstr "Fiskalna godina"
#. module: hr_payroll_period
#: model:ir.ui.menu,name:hr_payroll_period.hr_period_configure
msgid "Fiscal Years and Periods"
msgstr "Fiskalne godine i periodi"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Fiscal year..."
msgstr "Fiskalna godina..."
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__1
msgid "Following Week"
msgstr "Sljedeća sedmica"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fourth"
msgstr "Četvrti"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__5
msgid "Friday"
msgstr "Petak"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_form
#, python-format
msgid "Generate Payslips"
msgstr "Generiši obračunske listiće"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_employees
msgid "Generate payslips for all selected employees"
msgstr "Generiši obračunske listiće za sve odabrane zaposlene"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Group By..."
msgstr "Grupiši po..."
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_fiscal_year
#: model:ir.model,name:hr_payroll_period.model_hr_fiscalyear
msgid "HR Fiscal Year"
msgstr "HR Fiskalna godina"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_period
msgid "HR Payroll Period"
msgstr "HR Period platnih lista"
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_period
msgid "HR Period"
msgstr "HR Period"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__id
msgid "ID"
msgstr "ID"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_fiscal_year
msgid "Is HR Fiscal Year?"
msgstr "Je li HR fiskalna godina?"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_period
msgid "Is HR period?"
msgstr "Je li HR period?"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Last"
msgstr "Zadnji"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear____last_update
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__1
msgid "Monday"
msgstr "Ponedjeljak"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Monthly (12)"
msgstr "Mjesečno (12)"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__name
msgid "Name"
msgstr "Naziv:"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__number
msgid "Number"
msgstr "Broj"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__open
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__open
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Open"
msgstr "Otvori"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Open Period"
msgstr "Otvori period"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_payslip_filter
msgid "Payment Date"
msgstr "Datum plaćanja"
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_fiscalyear
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_fiscalyear
msgid "Payroll Fiscal Years"
msgstr "Fiskalne godine za platne liste"
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_period
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payroll Periods"
msgstr "Periodi platnih lista"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip
msgid "Payslip"
msgstr "Obračunski listić"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_run
msgid "Payslip Batches"
msgstr "Skupni obračunski listići"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__payslip_ids
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payslips"
msgstr "Obračunski listići"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__hr_period_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__hr_period_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Period"
msgstr "Period"
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.date_range_type_hr_action
#: model:ir.ui.menu,name:hr_payroll_period.menu_date_range_type_action
msgid "Period Types"
msgstr "Tipovi perioda"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__period_ids
msgid "Periods"
msgstr "Periodi"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Quarterly (4)"
msgstr "Tromjesečno (4)"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Re-Open Period"
msgstr "Ponovo otvori period"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__0
msgid "Same Week"
msgstr "Ista sedmica"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__6
msgid "Saturday"
msgstr "Subota"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__schedule_pay
msgid "Schedule Pay"
msgstr "Rasporedna plata"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_contract__schedule_pay
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Scheduled Pay"
msgstr "Zakazana isplata"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Search Fiscalyear"
msgstr "Traži fiskalnu godinu"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Search Period"
msgstr "Traži period"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Second"
msgstr "Sekunda"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__2
msgid "Second Following Week"
msgstr "Druga sljedeća sedmica"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-annually (2)"
msgstr "Polugodišnje (2)"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-monthly (24)"
msgstr "Polumjesečno (24)"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Set To Draft"
msgstr "Stavi u pripremu"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_start
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_start
msgid "Start date"
msgstr "Početni datum"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__state
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__state
msgid "Status"
msgstr "Status"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__0
msgid "Sunday"
msgstr "Nedjelja"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,help:hr_payroll_period.field_hr_period__active
msgid ""
"The active field allows you to hide the date range without removing it."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip batch."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid "The payslip batch %s still has unconfirmed payslips."
msgstr "Serija platnih listova %s još uvijek ima nepotvrđene platne listove."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The schedule on the selected period\n"
" must be the same as the schedule on the\n"
" payslip batch."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Third"
msgstr "Treći"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__4
msgid "Thursday"
msgstr "Četvrtak"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "To Close"
msgstr "Za zatvaranje"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__2
msgid "Tuesday"
msgstr "Utorak"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_id
msgid "Type"
msgstr "Tip"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_name
msgid "Type Name"
msgstr "Upiši ime"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__3
msgid "Wednesday"
msgstr "Srijeda"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_week
msgid "Week of Payment"
msgstr "Sedmica plaćanja"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_weekday
msgid "Weekday of Payment"
msgstr "Dan u sedmici za plaćanje"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Weekly (52)"
msgstr "Sedmično (52)"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_period.py:0
#, python-format
msgid "You can not set to draft a period that already has payslips computed"
msgstr "Ne možete postaviti na nacrt period koji već ima računate platne liste"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "You must create periods before confirming the fiscal year."
msgstr "Morate kreirati periode prije potvrde fiskalne godine."

View file

@ -0,0 +1,645 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * hr_period
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: hr (7.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-27 23:36+0000\n"
"PO-Revision-Date: 2015-07-27 23:40+0000\n"
"Last-Translator: <>\n"
"Language-Team: German (http://www.transifex.com/oca/OCA-hr-7-0/language/"
"de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%(name)s Period #%(number)s"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the current period"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the next period"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__active
msgid "Active"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Annually (1)"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_employee_base
#, fuzzy
msgid "Basic Employee"
msgstr "Angestellte"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-monthly (6)"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-weekly (26)"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Close Period"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__done
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__done
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Closed"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__company_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Company"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Confirm"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_base__contract_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_public__contract_id
#, fuzzy
msgid "Contract"
msgstr "Vertrag"
#. module: hr_payroll_period
#: model:ir.actions.server,name:hr_payroll_period.ir_cron_hr_payroll_period_ir_actions_server
#: model:ir.cron,cron_name:hr_payroll_period.ir_cron_hr_payroll_period
msgid "Create Next Fiscal Year"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Create Periods"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_uid
msgid "Created by"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_date
msgid "Created on"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee__contract_id
#, fuzzy
msgid "Current Contract"
msgstr "Vertrag"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_employee__contract_id
#, fuzzy
msgid "Current contract of the employee"
msgstr "Vertrag"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Daily (365)"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_date_range_type
msgid "Date Range Type"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_payment
msgid "Date of Payment"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid ""
"Date stop cannot be sooner than the date start\n"
" "
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_date_range_type_hr_form_view
msgid "Daterange Type"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_day
msgid "Day of Payment"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_contract__schedule_pay
msgid "Defines the frequency of the wage payment."
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__display_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__display_name
msgid "Display Name"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__draft
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__draft
msgid "Draft"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Duration"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_contract
#, fuzzy
msgid "Employee Contract"
msgstr "Vertrag"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_end
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_end
msgid "End date"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fifth"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "First"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__fiscalyear_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Fiscal Year"
msgstr ""
#. module: hr_payroll_period
#: model:ir.ui.menu,name:hr_payroll_period.hr_period_configure
msgid "Fiscal Years and Periods"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Fiscal year..."
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__1
msgid "Following Week"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fourth"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__5
msgid "Friday"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_form
#, python-format
msgid "Generate Payslips"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_employees
msgid "Generate payslips for all selected employees"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Group By..."
msgstr ""
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_fiscal_year
#: model:ir.model,name:hr_payroll_period.model_hr_fiscalyear
msgid "HR Fiscal Year"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_period
msgid "HR Payroll Period"
msgstr ""
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_period
msgid "HR Period"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__id
msgid "ID"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_fiscal_year
msgid "Is HR Fiscal Year?"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_period
msgid "Is HR period?"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Last"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear____last_update
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period____last_update
msgid "Last Modified on"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_uid
msgid "Last Updated by"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_date
msgid "Last Updated on"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__1
msgid "Monday"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Monthly (12)"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__name
msgid "Name"
msgstr "Name"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__number
msgid "Number"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__open
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__open
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Open"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Open Period"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_payslip_filter
msgid "Payment Date"
msgstr ""
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_fiscalyear
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_fiscalyear
msgid "Payroll Fiscal Years"
msgstr ""
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_period
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payroll Periods"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip
msgid "Payslip"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_run
msgid "Payslip Batches"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__payslip_ids
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payslips"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__hr_period_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__hr_period_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Period"
msgstr ""
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.date_range_type_hr_action
#: model:ir.ui.menu,name:hr_payroll_period.menu_date_range_type_action
msgid "Period Types"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__period_ids
msgid "Periods"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Quarterly (4)"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Re-Open Period"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__0
msgid "Same Week"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__6
msgid "Saturday"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__schedule_pay
msgid "Schedule Pay"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_contract__schedule_pay
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Scheduled Pay"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Search Fiscalyear"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Search Period"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Second"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__2
msgid "Second Following Week"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-annually (2)"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-monthly (24)"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Set To Draft"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_start
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_start
#, fuzzy
msgid "Start date"
msgstr "Anfangsdatum"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__state
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__state
msgid "Status"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__0
msgid "Sunday"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,help:hr_payroll_period.field_hr_period__active
msgid "The active field allows you to hide the date range without removing it."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip batch."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid "The payslip batch %s still has unconfirmed payslips."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The schedule on the selected period\n"
" must be the same as the schedule on the\n"
" payslip batch."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Third"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__4
msgid "Thursday"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "To Close"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__2
msgid "Tuesday"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_id
msgid "Type"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_name
#, fuzzy
msgid "Type Name"
msgstr "Name"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__3
msgid "Wednesday"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_week
msgid "Week of Payment"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_weekday
msgid "Weekday of Payment"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Weekly (52)"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_period.py:0
#, python-format
msgid "You can not set to draft a period that already has payslips computed"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "You must create periods before confirming the fiscal year."
msgstr ""
#, fuzzy
#~ msgid "Date"
#~ msgstr "Enddatum"
#~ msgid "Pay Slip"
#~ msgstr "Lohnzettel"
#~ msgid "Warning"
#~ msgstr "Warnung"

View file

@ -0,0 +1,644 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * hr_period
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: hr (7.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-27 23:36+0000\n"
"PO-Revision-Date: 2023-10-29 08:32+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
"Language-Team: Spanish (http://www.transifex.com/oca/OCA-hr-7-0/language/"
"es/)\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%(name)s Period #%(number)s"
msgstr "%(name)s Período #%(number)s"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the current period"
msgstr "%s día del periodo actual"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the next period"
msgstr "%s día del siguiente periodo"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__active
msgid "Active"
msgstr "Activo"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Annually (1)"
msgstr "Anualmente (1)"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_employee_base
msgid "Basic Employee"
msgstr "Empleados"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-monthly (6)"
msgstr "Bi-mensual (6)"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-weekly (26)"
msgstr "Bi-semanal (26)"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Close Period"
msgstr "Cerrar Periodo"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__done
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__done
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Closed"
msgstr "Cerrado"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__company_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Company"
msgstr "Compañia"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Confirm"
msgstr "Confirmar"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_base__contract_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_public__contract_id
msgid "Contract"
msgstr "Contrato"
#. module: hr_payroll_period
#: model:ir.actions.server,name:hr_payroll_period.ir_cron_hr_payroll_period_ir_actions_server
#: model:ir.cron,cron_name:hr_payroll_period.ir_cron_hr_payroll_period
msgid "Create Next Fiscal Year"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Create Periods"
msgstr "Crear periodos"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_date
msgid "Created on"
msgstr "Creado en"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee__contract_id
msgid "Current Contract"
msgstr "Contrato actual"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_employee__contract_id
msgid "Current contract of the employee"
msgstr "Contrato actual del empleado"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Daily (365)"
msgstr "Diario (365)"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_date_range_type
msgid "Date Range Type"
msgstr "Tipo de rango de fecha"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_payment
msgid "Date of Payment"
msgstr "Fecha de pago"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid ""
"Date stop cannot be sooner than the date start\n"
" "
msgstr ""
"La fecha hasta no puede ser anterior a la fecha de inicio\n"
" "
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_date_range_type_hr_form_view
msgid "Daterange Type"
msgstr "Tipo de rango de fecha"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_day
msgid "Day of Payment"
msgstr "Dia de pago"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_contract__schedule_pay
msgid "Defines the frequency of the wage payment."
msgstr "Define la frecuencia del pago del salario."
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__display_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__display_name
msgid "Display Name"
msgstr "Nombre para mostrar"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__draft
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__draft
msgid "Draft"
msgstr "Borrador"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Duration"
msgstr "Duracion"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_contract
msgid "Employee Contract"
msgstr "Contrato del empleado"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_end
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_end
msgid "End date"
msgstr "Fecha Hasta"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fifth"
msgstr "Quinto"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "First"
msgstr "Primer"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__fiscalyear_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Fiscal Year"
msgstr "Año Fiscal"
#. module: hr_payroll_period
#: model:ir.ui.menu,name:hr_payroll_period.hr_period_configure
msgid "Fiscal Years and Periods"
msgstr "Años fiscales y periodos"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Fiscal year..."
msgstr "Año fiscal..."
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__1
msgid "Following Week"
msgstr "Siguiente semana"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fourth"
msgstr "Cuarto"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__5
msgid "Friday"
msgstr "Viernes"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_form
#, python-format
msgid "Generate Payslips"
msgstr "Generar liquidaciones"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_employees
msgid "Generate payslips for all selected employees"
msgstr "Generar liquidaciones para todos los empleados seleccionados"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Group By..."
msgstr "Agrupar por..."
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_fiscal_year
#: model:ir.model,name:hr_payroll_period.model_hr_fiscalyear
msgid "HR Fiscal Year"
msgstr "Año Fiscal"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_period
msgid "HR Payroll Period"
msgstr "Periodo de liquidacion"
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_period
msgid "HR Period"
msgstr "Periodo"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__id
msgid "ID"
msgstr "ID"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_fiscal_year
msgid "Is HR Fiscal Year?"
msgstr "¿Es año fiscal?"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_period
msgid "Is HR period?"
msgstr "¿Es periodo de liquidacion?"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Last"
msgstr "Ultimo"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear____last_update
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period____last_update
msgid "Last Modified on"
msgstr "Última modificación en"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_uid
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_date
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__1
msgid "Monday"
msgstr "Lunes"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Monthly (12)"
msgstr "Mensual (12)"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__name
msgid "Name"
msgstr "Nombre"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__number
msgid "Number"
msgstr "Numero"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__open
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__open
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Open"
msgstr "Abierto"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Open Period"
msgstr "Abrir periodo"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_payslip_filter
msgid "Payment Date"
msgstr "Fecha de pago"
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_fiscalyear
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_fiscalyear
msgid "Payroll Fiscal Years"
msgstr "Años fiscales"
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_period
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payroll Periods"
msgstr "Periodos de liquidación"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip
msgid "Payslip"
msgstr "Liquidacion"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_run
msgid "Payslip Batches"
msgstr "Liquidaciones en lote"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__payslip_ids
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payslips"
msgstr "Liquidaciones"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__hr_period_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__hr_period_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Period"
msgstr "Periodo"
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.date_range_type_hr_action
#: model:ir.ui.menu,name:hr_payroll_period.menu_date_range_type_action
msgid "Period Types"
msgstr "Tipo de periodo"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__period_ids
msgid "Periods"
msgstr "Periodos"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Quarterly (4)"
msgstr "Cuatrimestral (4)"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Re-Open Period"
msgstr "Re-abrir periodo"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__0
msgid "Same Week"
msgstr "Misma semana"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__6
msgid "Saturday"
msgstr "Sabado"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__schedule_pay
msgid "Schedule Pay"
msgstr "Pago Planificado"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_contract__schedule_pay
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Scheduled Pay"
msgstr "Pago planificado"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Search Fiscalyear"
msgstr "Buscar año fiscal"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Search Period"
msgstr "Buscar periodo"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Second"
msgstr "Segundo"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__2
msgid "Second Following Week"
msgstr "Segunda proxima semana"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-annually (2)"
msgstr "Semestral (2)"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-monthly (24)"
msgstr "Quincenal (24)"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Set To Draft"
msgstr "Volver a borrador"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_start
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_start
msgid "Start date"
msgstr "Fecha de inicio"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__state
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__state
msgid "Status"
msgstr "Estado"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__0
msgid "Sunday"
msgstr "Domingo"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,help:hr_payroll_period.field_hr_period__active
msgid "The active field allows you to hide the date range without removing it."
msgstr ""
"El campo activo te permite ocultar el tipo de rango sin necesidad de "
"eliminarlo."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip batch."
msgstr ""
"La compañía seleccionada debe ser la misma que en la liquidación por lotes."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip."
msgstr ""
"La compañía seleccionada en el periodo debe ser la misma que en la "
"liquidación."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid "The payslip batch %s still has unconfirmed payslips."
msgstr "El lote de liquidaciones %s aun contiene liquidaciones no confirmadas."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The schedule on the selected period\n"
" must be the same as the schedule on the\n"
" payslip batch."
msgstr ""
"El calendario seleccionado en el periodo\n"
" debe ser el mismo que el seleccionado\n"
" en el lote de liquidaciones."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Third"
msgstr "Tercer"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__4
msgid "Thursday"
msgstr "Jueves"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "To Close"
msgstr "Pendiente de cierre"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__2
msgid "Tuesday"
msgstr "Martes"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_id
msgid "Type"
msgstr "Tipo"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_name
msgid "Type Name"
msgstr "Nombre del tipo"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__3
msgid "Wednesday"
msgstr "Miercoles"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_week
msgid "Week of Payment"
msgstr "Semana de pago"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_weekday
msgid "Weekday of Payment"
msgstr "Dia semanal de pago"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Weekly (52)"
msgstr "Semanal (52)"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_period.py:0
#, python-format
msgid "You can not set to draft a period that already has payslips computed"
msgstr ""
"No puedes volver a borrador un periodo que ya tiene liquidaciones computadas"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "You must create periods before confirming the fiscal year."
msgstr "Debes crear los periodos antes de confirmar el año fiscal."
#, python-format
#~ msgid "%s Period #%s"
#~ msgstr "%s Periodo #%s"

View file

@ -0,0 +1,642 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_payroll_period
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2022-11-01 22:44+0000\n"
"Last-Translator: Nicolas Rodriguez Sande <nicolasrsande@gmail.com>\n"
"Language-Team: none\n"
"Language: es_AR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.14.1\n"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%(name)s Period #%(number)s"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the current period"
msgstr "%s días del periodo actual"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the next period"
msgstr "%s dias del siguiente periodo"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__active
msgid "Active"
msgstr "Activo"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Annually (1)"
msgstr "Anualmente (1)"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_employee_base
msgid "Basic Employee"
msgstr "Empleado Basico"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-monthly (6)"
msgstr "Semestral (6)"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-weekly (26)"
msgstr "Bi-Semanal (26)"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Close Period"
msgstr "Cerrar periodo"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__done
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__done
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Closed"
msgstr "Cerrado"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__company_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Company"
msgstr "Compañia"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Confirm"
msgstr "Confirmar"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_base__contract_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_public__contract_id
msgid "Contract"
msgstr "Contrato"
#. module: hr_payroll_period
#: model:ir.actions.server,name:hr_payroll_period.ir_cron_hr_payroll_period_ir_actions_server
#: model:ir.cron,cron_name:hr_payroll_period.ir_cron_hr_payroll_period
msgid "Create Next Fiscal Year"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Create Periods"
msgstr "Crear periodos"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_date
msgid "Created on"
msgstr "Creado en"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee__contract_id
msgid "Current Contract"
msgstr "Contrato actual"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_employee__contract_id
msgid "Current contract of the employee"
msgstr "Contrato actual del empleado"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Daily (365)"
msgstr "Diario (365)"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_date_range_type
msgid "Date Range Type"
msgstr "Tipos de rango de fechas"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_payment
msgid "Date of Payment"
msgstr "Fecha de Pago"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid ""
"Date stop cannot be sooner than the date start\n"
" "
msgstr ""
"La \"Fecha Hasta\" no puede ser anterior a la \"Fecha Desde\"\n"
" "
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_date_range_type_hr_form_view
msgid "Daterange Type"
msgstr "Tipo de rango de fechas"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_day
msgid "Day of Payment"
msgstr "Dia de Pago"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_contract__schedule_pay
msgid "Defines the frequency of the wage payment."
msgstr "Define la frecuencia en la que se pagará el salario."
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__display_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__display_name
msgid "Display Name"
msgstr "Nombre para mostrar"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__draft
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__draft
msgid "Draft"
msgstr "Borrador"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Duration"
msgstr "Duracion"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_contract
msgid "Employee Contract"
msgstr "Contrato del empleado"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_end
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_end
msgid "End date"
msgstr "Fecha final"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fifth"
msgstr "Quinto"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "First"
msgstr "Primer"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__fiscalyear_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Fiscal Year"
msgstr "Año Fiscal"
#. module: hr_payroll_period
#: model:ir.ui.menu,name:hr_payroll_period.hr_period_configure
msgid "Fiscal Years and Periods"
msgstr "Años fiscales y periodos"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Fiscal year..."
msgstr "Año fiscal..."
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__1
msgid "Following Week"
msgstr "Siguiente semana"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fourth"
msgstr "Cuarto"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__5
msgid "Friday"
msgstr "Viernes"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_form
#, python-format
msgid "Generate Payslips"
msgstr "Generar liquidaciones"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_employees
msgid "Generate payslips for all selected employees"
msgstr "Generar liquidaciones para todos los empleados seleccionados"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Group By..."
msgstr "Agrupar por..."
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_fiscal_year
#: model:ir.model,name:hr_payroll_period.model_hr_fiscalyear
msgid "HR Fiscal Year"
msgstr "Años Fiscales"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_period
msgid "HR Payroll Period"
msgstr "Periodos de Liquidacion"
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_period
msgid "HR Period"
msgstr "Periodo"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__id
msgid "ID"
msgstr "ID"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_fiscal_year
msgid "Is HR Fiscal Year?"
msgstr "¿Es año fiscal?"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_period
msgid "Is HR period?"
msgstr "¿Es periodo de liquidacion?"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Last"
msgstr "Ultimo"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear____last_update
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period____last_update
msgid "Last Modified on"
msgstr "Última modificación por"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_uid
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_date
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__1
msgid "Monday"
msgstr "Lunes"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Monthly (12)"
msgstr "Mensual (12)"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__name
msgid "Name"
msgstr "Nombre"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__number
msgid "Number"
msgstr "Numero"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__open
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__open
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Open"
msgstr "Abierto"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Open Period"
msgstr "Abrir periodo"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_payslip_filter
msgid "Payment Date"
msgstr "Fecha de pago"
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_fiscalyear
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_fiscalyear
msgid "Payroll Fiscal Years"
msgstr "Años fiscales de liquidación"
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_period
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payroll Periods"
msgstr "Periodos de liquidación"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip
msgid "Payslip"
msgstr "Liquidacion"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_run
msgid "Payslip Batches"
msgstr "Liquidaciones por lote"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__payslip_ids
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payslips"
msgstr "Liquidaciones"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__hr_period_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__hr_period_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Period"
msgstr "Periodo"
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.date_range_type_hr_action
#: model:ir.ui.menu,name:hr_payroll_period.menu_date_range_type_action
msgid "Period Types"
msgstr "Tipos de periodo"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__period_ids
msgid "Periods"
msgstr "Periodos"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Quarterly (4)"
msgstr "Cuatrimestral (4)"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Re-Open Period"
msgstr "Volver a abrir periodo"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__0
msgid "Same Week"
msgstr "Misma semana"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__6
msgid "Saturday"
msgstr "Sábado"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__schedule_pay
msgid "Schedule Pay"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_contract__schedule_pay
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Scheduled Pay"
msgstr "Pago planificado"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Search Fiscalyear"
msgstr "Buscar año fiscal"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Search Period"
msgstr "Buscar periodo"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Second"
msgstr "Segundo"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__2
msgid "Second Following Week"
msgstr "Segundo de la siguiente semana"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-annually (2)"
msgstr "Dos veces al año (2)"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-monthly (24)"
msgstr "Quincenal (24)"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Set To Draft"
msgstr "Volver a borrador"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_start
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_start
msgid "Start date"
msgstr "Fecha inicio"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__state
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__state
msgid "Status"
msgstr "Estado"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__0
msgid "Sunday"
msgstr "Domingo"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,help:hr_payroll_period.field_hr_period__active
msgid "The active field allows you to hide the date range without removing it."
msgstr ""
"El campo activo te permite ocultar el rango de fechas sin necesidad de "
"eliminarlo."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip batch."
msgstr ""
"La compañía seleccionada del periodo debe ser la misma compañia seleccionada "
"en la liquidación por lotes."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip."
msgstr ""
"La compañía del periodo seleccionado debe ser la misma que la de la "
"liquidacion."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid "The payslip batch %s still has unconfirmed payslips."
msgstr "La liquidación por lotes %s aun contiene liquidaciones no confirmadas."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The schedule on the selected period\n"
" must be the same as the schedule on the\n"
" payslip batch."
msgstr ""
"El calendario del periodo seleccionado\n"
" debe ser el mismo que el calendario en\n"
" la liquidación por lotes."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Third"
msgstr "Tercer"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__4
msgid "Thursday"
msgstr "Jueves"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "To Close"
msgstr "Pendiente cierre"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__2
msgid "Tuesday"
msgstr "Martes"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_id
msgid "Type"
msgstr "Tipo"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_name
msgid "Type Name"
msgstr "Nombre del tipo"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__3
msgid "Wednesday"
msgstr "Miercoles"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_week
msgid "Week of Payment"
msgstr "Semana de pago"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_weekday
msgid "Weekday of Payment"
msgstr "Dia semanal de pago"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Weekly (52)"
msgstr "Semanal (52)"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_period.py:0
#, python-format
msgid "You can not set to draft a period that already has payslips computed"
msgstr ""
"No puedes cambiar a borrador un periodo que ya tiene liquidaciones computadas"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "You must create periods before confirming the fiscal year."
msgstr "Debes crear los periodos antes de confirmar el año fiscal."
#, python-format
#~ msgid "%s Period #%s"
#~ msgstr "%s Periodo #%s"

View file

@ -0,0 +1,698 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * hr_period
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: hr (7.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-27 23:36+0000\n"
"PO-Revision-Date: 2018-10-02 12:15+0000\n"
"Last-Translator: Alexandre Fayolle <alexandre.fayolle@camptocamp.com>\n"
"Language-Team: French (http://www.transifex.com/oca/OCA-hr-7-0/language/"
"fr/)\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 3.1.1\n"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%(name)s Period #%(number)s"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the current period"
msgstr "%s jour de la période courante"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the next period"
msgstr "%s jour de la période suivante"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__active
msgid "Active"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Annually (1)"
msgstr "Annuel (1)"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_employee_base
#, fuzzy
msgid "Basic Employee"
msgstr "Employés"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-monthly (6)"
msgstr "Bi-mensuel (6)"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-weekly (26)"
msgstr "Bi-hebdomadaire (26)"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Close Period"
msgstr "Fermer la période"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__done
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__done
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Closed"
msgstr "Fermé"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__company_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Company"
msgstr "Société"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Confirm"
msgstr "Confirmer"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_base__contract_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_public__contract_id
#, fuzzy
msgid "Contract"
msgstr "Contrat"
#. module: hr_payroll_period
#: model:ir.actions.server,name:hr_payroll_period.ir_cron_hr_payroll_period_ir_actions_server
#: model:ir.cron,cron_name:hr_payroll_period.ir_cron_hr_payroll_period
msgid "Create Next Fiscal Year"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Create Periods"
msgstr "Créer les périodes"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_uid
msgid "Created by"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_date
#, fuzzy
msgid "Created on"
msgstr "Créer les périodes"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee__contract_id
#, fuzzy
msgid "Current Contract"
msgstr "Contrat"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_employee__contract_id
#, fuzzy
msgid "Current contract of the employee"
msgstr "Contrat"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Daily (365)"
msgstr "Journalier (365)"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_date_range_type
msgid "Date Range Type"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_payment
msgid "Date of Payment"
msgstr "Date de paiement"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid ""
"Date stop cannot be sooner than the date start\n"
" "
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_date_range_type_hr_form_view
msgid "Daterange Type"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_day
msgid "Day of Payment"
msgstr "Jour du paiment"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_contract__schedule_pay
msgid "Defines the frequency of the wage payment."
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__display_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__display_name
msgid "Display Name"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__draft
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__draft
msgid "Draft"
msgstr "Brouillon"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Duration"
msgstr "Durée"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_contract
#, fuzzy
msgid "Employee Contract"
msgstr "Contrat"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_end
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_end
msgid "End date"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fifth"
msgstr "Cinquième"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "First"
msgstr "Premier"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__fiscalyear_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Fiscal Year"
msgstr "Année fiscale"
#. module: hr_payroll_period
#: model:ir.ui.menu,name:hr_payroll_period.hr_period_configure
#, fuzzy
msgid "Fiscal Years and Periods"
msgstr "Année fiscale"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#, fuzzy
msgid "Fiscal year..."
msgstr "Année Fiscale"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__1
msgid "Following Week"
msgstr "Semaine suivante"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fourth"
msgstr "Quatrième"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__5
msgid "Friday"
msgstr "Vendredi"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_form
#, python-format
msgid "Generate Payslips"
msgstr "Générer les bulletins de paie"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_employees
msgid "Generate payslips for all selected employees"
msgstr "Génère les bulletins de paie pour tous les employés sélectionnés"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Group By..."
msgstr "Gouper par.."
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_fiscal_year
#: model:ir.model,name:hr_payroll_period.model_hr_fiscalyear
msgid "HR Fiscal Year"
msgstr "Année fiscale RH"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_period
msgid "HR Payroll Period"
msgstr "Période de paie"
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_period
#, fuzzy
msgid "HR Period"
msgstr "Période"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__id
msgid "ID"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_fiscal_year
#, fuzzy
msgid "Is HR Fiscal Year?"
msgstr "Année fiscale RH"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_period
msgid "Is HR period?"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Last"
msgstr "Dernier"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear____last_update
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period____last_update
msgid "Last Modified on"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_uid
msgid "Last Updated by"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_date
msgid "Last Updated on"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__1
msgid "Monday"
msgstr "Lundi"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Monthly (12)"
msgstr "Mensuel (12)"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__name
msgid "Name"
msgstr "Nom"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__number
msgid "Number"
msgstr "Numéro"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__open
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__open
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Open"
msgstr "Ouvert"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Open Period"
msgstr "Ouvrir la période"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_payslip_filter
msgid "Payment Date"
msgstr "Date de paiement"
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_fiscalyear
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_fiscalyear
msgid "Payroll Fiscal Years"
msgstr "Années fiscales de paie"
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_period
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payroll Periods"
msgstr "Périodes de paie"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip
#, fuzzy
msgid "Payslip"
msgstr "Bulletins de paie"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_run
msgid "Payslip Batches"
msgstr "Lots de bulletin de paie"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__payslip_ids
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payslips"
msgstr "Bulletins de paie"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__hr_period_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__hr_period_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Period"
msgstr "Période"
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.date_range_type_hr_action
#: model:ir.ui.menu,name:hr_payroll_period.menu_date_range_type_action
#, fuzzy
msgid "Period Types"
msgstr "Périodes"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__period_ids
msgid "Periods"
msgstr "Périodes"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Quarterly (4)"
msgstr "Trimestriel (4)"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Re-Open Period"
msgstr "Rouvrir la période"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__0
msgid "Same Week"
msgstr "Même semaine"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__6
msgid "Saturday"
msgstr "Samedi"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__schedule_pay
#, fuzzy
msgid "Schedule Pay"
msgstr "Paie planifiée"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_contract__schedule_pay
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Scheduled Pay"
msgstr "Paie planifiée"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Search Fiscalyear"
msgstr "Chercher des années fiscales"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Search Period"
msgstr "Chercher des périodes"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Second"
msgstr "Deuxième"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__2
msgid "Second Following Week"
msgstr "Deuxième semaine suivante"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-annually (2)"
msgstr "Semi-annuel (2)"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-monthly (24)"
msgstr "Semi-mensuel (24)"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Set To Draft"
msgstr "Mettre à brouillon"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_start
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_start
#, fuzzy
msgid "Start date"
msgstr "Date de début"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__state
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__state
msgid "Status"
msgstr "Statut"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__0
msgid "Sunday"
msgstr "Dimanche"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,help:hr_payroll_period.field_hr_period__active
msgid "The active field allows you to hide the date range without removing it."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip batch."
msgstr ""
"La société de la période sélectionnée doit être la même que celle du lot de "
"bulletins."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip."
msgstr ""
"La société de la période sélectionnée doit être la même que celle du "
"bulletin de paie."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid "The payslip batch %s still has unconfirmed payslips."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, fuzzy, python-format
msgid ""
"The schedule on the selected period\n"
" must be the same as the schedule on the\n"
" payslip batch."
msgstr ""
"Le type de cédule de la période sélectionnée doit être le même que celui du "
"lot de bulletins."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Third"
msgstr "Troisième"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__4
msgid "Thursday"
msgstr "Jeudi"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "To Close"
msgstr "À Fermer"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__2
msgid "Tuesday"
msgstr "Mardi"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_id
msgid "Type"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_name
#, fuzzy
msgid "Type Name"
msgstr "Nom"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__3
msgid "Wednesday"
msgstr "Mercredi"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_week
msgid "Week of Payment"
msgstr "Semaine du paiment"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_weekday
#, fuzzy
msgid "Weekday of Payment"
msgstr "Semaine du paiment"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Weekly (52)"
msgstr "Hebdomadaire (52)"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_period.py:0
#, python-format
msgid "You can not set to draft a period that already has payslips computed"
msgstr ""
"Vous ne pouvez pas remettre à brouillon une période ayant des bulletins "
"associés."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, fuzzy, python-format
msgid "You must create periods before confirming the fiscal year."
msgstr "Vous devez créer les périodes avant de confirmer l'année fiscale."
#, python-format
#~ msgid "%s Period #%s"
#~ msgstr "%s Période #%s"
#, fuzzy
#~ msgid "Date"
#~ msgstr "Date de fin"
#~ msgid "Pay Slip"
#~ msgstr "Bulletin de paie"
#~ msgid "Salary Slip of %s for %s"
#~ msgstr "Bulletin de paie de %s pour %s"
#~ msgid "Payroll Period"
#~ msgstr "Période de paie"
#, fuzzy
#~ msgid "Payslip Run"
#~ msgstr "Bulletins de paie"
#~ msgid ""
#~ "[\n"
#~ " ('company_id', '=', company_id)\n"
#~ " ]"
#~ msgstr "[('company_id', '=', company_id)]"
#~ msgid "The last day of the last period of the fiscal year."
#~ msgstr "Le dernier jour de la dernière paie de l'année fiscale."
#~ msgid "Warning"
#~ msgstr "Avertissement"
#~ msgid "End of Period"
#~ msgstr "Fin de période"
#~ msgid "Start of Period"
#~ msgstr "Début de période"
#~ msgid "onchange_company_id(company_id, contract_id)"
#~ msgstr "onchange_company_id(company_id, contract_id)"
#~ msgid "The first day of the first period of the fiscal year."
#~ msgstr "Premier jour de la première période de l'année fiscale."

View file

@ -0,0 +1,624 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_payroll_period
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%(name)s Period #%(number)s"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the current period"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the next period"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__active
msgid "Active"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Annually (1)"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_employee_base
msgid "Basic Employee"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-monthly (6)"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-weekly (26)"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Close Period"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__done
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__done
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Closed"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__company_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Company"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Confirm"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_base__contract_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_public__contract_id
msgid "Contract"
msgstr ""
#. module: hr_payroll_period
#: model:ir.actions.server,name:hr_payroll_period.ir_cron_hr_payroll_period_ir_actions_server
#: model:ir.cron,cron_name:hr_payroll_period.ir_cron_hr_payroll_period
msgid "Create Next Fiscal Year"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Create Periods"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_uid
msgid "Created by"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_date
msgid "Created on"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee__contract_id
msgid "Current Contract"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_employee__contract_id
msgid "Current contract of the employee"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Daily (365)"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_date_range_type
msgid "Date Range Type"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_payment
msgid "Date of Payment"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid ""
"Date stop cannot be sooner than the date start\n"
" "
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_date_range_type_hr_form_view
msgid "Daterange Type"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_day
msgid "Day of Payment"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_contract__schedule_pay
msgid "Defines the frequency of the wage payment."
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__display_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__display_name
msgid "Display Name"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__draft
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__draft
msgid "Draft"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Duration"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_contract
msgid "Employee Contract"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_end
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_end
msgid "End date"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fifth"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "First"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__fiscalyear_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Fiscal Year"
msgstr ""
#. module: hr_payroll_period
#: model:ir.ui.menu,name:hr_payroll_period.hr_period_configure
msgid "Fiscal Years and Periods"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Fiscal year..."
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__1
msgid "Following Week"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fourth"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__5
msgid "Friday"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_form
#, python-format
msgid "Generate Payslips"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_employees
msgid "Generate payslips for all selected employees"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Group By..."
msgstr ""
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_fiscal_year
#: model:ir.model,name:hr_payroll_period.model_hr_fiscalyear
msgid "HR Fiscal Year"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_period
msgid "HR Payroll Period"
msgstr ""
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_period
msgid "HR Period"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__id
msgid "ID"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_fiscal_year
msgid "Is HR Fiscal Year?"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_period
msgid "Is HR period?"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Last"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear____last_update
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period____last_update
msgid "Last Modified on"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_uid
msgid "Last Updated by"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_date
msgid "Last Updated on"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__1
msgid "Monday"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Monthly (12)"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__name
msgid "Name"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__number
msgid "Number"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__open
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__open
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Open"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Open Period"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_payslip_filter
msgid "Payment Date"
msgstr ""
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_fiscalyear
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_fiscalyear
msgid "Payroll Fiscal Years"
msgstr ""
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_period
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payroll Periods"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip
msgid "Payslip"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_run
msgid "Payslip Batches"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__payslip_ids
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payslips"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__hr_period_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__hr_period_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Period"
msgstr ""
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.date_range_type_hr_action
#: model:ir.ui.menu,name:hr_payroll_period.menu_date_range_type_action
msgid "Period Types"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__period_ids
msgid "Periods"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Quarterly (4)"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Re-Open Period"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__0
msgid "Same Week"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__6
msgid "Saturday"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__schedule_pay
msgid "Schedule Pay"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_contract__schedule_pay
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Scheduled Pay"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Search Fiscalyear"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Search Period"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Second"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__2
msgid "Second Following Week"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-annually (2)"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-monthly (24)"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Set To Draft"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_start
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_start
msgid "Start date"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__state
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__state
msgid "Status"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__0
msgid "Sunday"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,help:hr_payroll_period.field_hr_period__active
msgid ""
"The active field allows you to hide the date range without removing it."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip batch."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid "The payslip batch %s still has unconfirmed payslips."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The schedule on the selected period\n"
" must be the same as the schedule on the\n"
" payslip batch."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Third"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__4
msgid "Thursday"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "To Close"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__2
msgid "Tuesday"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_id
msgid "Type"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_name
msgid "Type Name"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__3
msgid "Wednesday"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_week
msgid "Week of Payment"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_weekday
msgid "Weekday of Payment"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Weekly (52)"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_period.py:0
#, python-format
msgid "You can not set to draft a period that already has payslips computed"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "You must create periods before confirming the fiscal year."
msgstr ""

View file

@ -0,0 +1,603 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_period
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s Period #%s"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the current period"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the next period"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__active
#: model:ir.model.fields,field_description:hr_period.field_hr_period__active
msgid "Active"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Annually (1)"
msgstr ""
#. module: hr_period
#: model:ir.model,name:hr_period.model_hr_employee_base
msgid "Basic Employee"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-monthly (6)"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-weekly (26)"
msgstr ""
#. module: hr_period
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_period_form
msgid "Close Period"
msgstr ""
#. module: hr_period
#: model:ir.model.fields.selection,name:hr_period.selection__hr_fiscalyear__state__done
#: model:ir.model.fields.selection,name:hr_period.selection__hr_period__state__done
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_fiscalyear_search
msgid "Closed"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__company_id
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip_employees__company_id
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip_run__company_id
#: model:ir.model.fields,field_description:hr_period.field_hr_period__company_id
#: model_terms:ir.ui.view,arch_db:hr_period.hr_payslip_run_filter
msgid "Company"
msgstr ""
#. module: hr_period
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_fiscalyear_form
msgid "Confirm"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_employee_base__contract_id
#: model:ir.model.fields,field_description:hr_period.field_hr_employee_public__contract_id
msgid "Contract"
msgstr ""
#. module: hr_period
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_fiscalyear_form
msgid "Create Periods"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__create_uid
#: model:ir.model.fields,field_description:hr_period.field_hr_period__create_uid
msgid "Created by"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__create_date
#: model:ir.model.fields,field_description:hr_period.field_hr_period__create_date
msgid "Created on"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_employee__contract_id
msgid "Current Contract"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,help:hr_period.field_hr_employee__contract_id
msgid "Current contract of the employee"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Daily (365)"
msgstr ""
#. module: hr_period
#: model_terms:ir.ui.view,arch_db:hr_period.hr_payslip_run_form
msgid "Date"
msgstr ""
#. module: hr_period
#: model:ir.model,name:hr_period.model_date_range_type
#: model_terms:ir.ui.view,arch_db:hr_period.view_date_range_type_hr_form_view
msgid "Date Range Type"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip__date_payment
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip_run__date_payment
#: model:ir.model.fields,field_description:hr_period.field_hr_period__date_payment
msgid "Date of Payment"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid ""
"Date stop cannot be sooner than the date start\n"
" "
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__payment_day
msgid "Day of Payment"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,help:hr_period.field_hr_contract__schedule_pay
msgid "Defines the frequency of the wage payment."
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_date_range_type__display_name
#: model:ir.model.fields,field_description:hr_period.field_hr_contract__display_name
#: model:ir.model.fields,field_description:hr_period.field_hr_employee_base__display_name
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__display_name
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip__display_name
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip_employees__display_name
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip_run__display_name
#: model:ir.model.fields,field_description:hr_period.field_hr_period__display_name
msgid "Display Name"
msgstr ""
#. module: hr_period
#: model:ir.model.fields.selection,name:hr_period.selection__hr_fiscalyear__state__draft
#: model:ir.model.fields.selection,name:hr_period.selection__hr_period__state__draft
msgid "Draft"
msgstr ""
#. module: hr_period
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_period_form
msgid "Duration"
msgstr ""
#. module: hr_period
#: model:ir.model,name:hr_period.model_hr_contract
msgid "Employee Contract"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__date_end
#: model:ir.model.fields,field_description:hr_period.field_hr_period__date_end
msgid "End date"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fifth"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "First"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_period__fiscalyear_id
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_fiscalyear_search
msgid "Fiscal Year"
msgstr ""
#. module: hr_period
#: model:ir.model.fields.selection,name:hr_period.selection__hr_fiscalyear__payment_week__1
msgid "Following Week"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fourth"
msgstr ""
#. module: hr_period
#: model:ir.model.fields.selection,name:hr_period.selection__hr_fiscalyear__payment_weekday__5
msgid "Friday"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_payslip_run.py:0
#: model_terms:ir.ui.view,arch_db:hr_period.hr_payslip_run_form
#, python-format
msgid "Generate Payslips"
msgstr ""
#. module: hr_period
#: model:ir.model,name:hr_period.model_hr_payslip_employees
msgid "Generate payslips for all selected employees"
msgstr ""
#. module: hr_period
#: model_terms:ir.ui.view,arch_db:hr_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_fiscalyear_search
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_period_search
msgid "Group By..."
msgstr ""
#. module: hr_period
#: model:date.range.type,name:hr_period.date_range_hr_fiscal_year
#: model:ir.model,name:hr_period.model_hr_fiscalyear
msgid "HR Fiscal Year"
msgstr ""
#. module: hr_period
#: model:ir.model,name:hr_period.model_hr_period
msgid "HR Payroll Period"
msgstr ""
#. module: hr_period
#: model:date.range.type,name:hr_period.date_range_hr_period
msgid "HR Period"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_date_range_type__id
#: model:ir.model.fields,field_description:hr_period.field_hr_contract__id
#: model:ir.model.fields,field_description:hr_period.field_hr_employee_base__id
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__id
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip__id
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip_employees__id
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip_run__id
#: model:ir.model.fields,field_description:hr_period.field_hr_period__id
msgid "ID"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_date_range_type__hr_fiscal_year
msgid "Is HR Fiscal Year?"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_date_range_type__hr_period
msgid "Is HR period?"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Last"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_date_range_type____last_update
#: model:ir.model.fields,field_description:hr_period.field_hr_contract____last_update
#: model:ir.model.fields,field_description:hr_period.field_hr_employee_base____last_update
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear____last_update
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip____last_update
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip_employees____last_update
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip_run____last_update
#: model:ir.model.fields,field_description:hr_period.field_hr_period____last_update
msgid "Last Modified on"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__write_uid
#: model:ir.model.fields,field_description:hr_period.field_hr_period__write_uid
msgid "Last Updated by"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__write_date
#: model:ir.model.fields,field_description:hr_period.field_hr_period__write_date
msgid "Last Updated on"
msgstr ""
#. module: hr_period
#: model:ir.model.fields.selection,name:hr_period.selection__hr_fiscalyear__payment_weekday__1
msgid "Monday"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Monthly (12)"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__name
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip_run__name
#: model:ir.model.fields,field_description:hr_period.field_hr_period__name
msgid "Name"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_period__number
msgid "Number"
msgstr ""
#. module: hr_period
#: model:ir.model.fields.selection,name:hr_period.selection__hr_fiscalyear__state__open
#: model:ir.model.fields.selection,name:hr_period.selection__hr_period__state__open
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_fiscalyear_search
msgid "Open"
msgstr ""
#. module: hr_period
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_period_form
msgid "Open Period"
msgstr ""
#. module: hr_period
#: model:ir.model,name:hr_period.model_hr_payslip
msgid "Pay Slip"
msgstr ""
#. module: hr_period
#: model_terms:ir.ui.view,arch_db:hr_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_payslip_filter
msgid "Payment Date"
msgstr ""
#. module: hr_period
#: model:ir.actions.act_window,name:hr_period.action_hr_fiscalyear
#: model:ir.ui.menu,name:hr_period.menu_action_hr_fiscalyear
msgid "Payroll Fiscal Years"
msgstr ""
#. module: hr_period
#: model:ir.actions.act_window,name:hr_period.action_hr_period
#: model:ir.ui.menu,name:hr_period.menu_action_hr_period
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_period_form
msgid "Payroll Periods"
msgstr ""
#. module: hr_period
#: model:ir.model,name:hr_period.model_hr_payslip_run
msgid "Payslip Batches"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_period__payslip_ids
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_period_form
msgid "Payslips"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip__hr_period_id
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip_run__hr_period_id
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_period_search
msgid "Period"
msgstr ""
#. module: hr_period
#: model:ir.actions.act_window,name:hr_period.date_range_type_hr_action
#: model:ir.ui.menu,name:hr_period.menu_date_range_type_action
msgid "Period Types"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__period_ids
msgid "Periods"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Quarterly (4)"
msgstr ""
#. module: hr_period
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_period_form
msgid "Re-Open Period"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_payslip.py:0
#: code:addons/hr_period/models/hr_payslip.py:0
#, python-format
msgid "Salary Slip of %s for %s"
msgstr ""
#. module: hr_period
#: model:ir.model.fields.selection,name:hr_period.selection__hr_fiscalyear__payment_week__0
msgid "Same Week"
msgstr ""
#. module: hr_period
#: model:ir.model.fields.selection,name:hr_period.selection__hr_fiscalyear__payment_weekday__6
msgid "Saturday"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_contract__schedule_pay
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__schedule_pay
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip_employees__schedule_pay
#: model:ir.model.fields,field_description:hr_period.field_hr_payslip_run__schedule_pay
#: model:ir.model.fields,field_description:hr_period.field_hr_period__schedule_pay
#: model_terms:ir.ui.view,arch_db:hr_period.hr_payslip_run_filter
msgid "Scheduled Pay"
msgstr ""
#. module: hr_period
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_fiscalyear_search
msgid "Search Fiscalyear"
msgstr ""
#. module: hr_period
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_period_search
msgid "Search Period"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Second"
msgstr ""
#. module: hr_period
#: model:ir.model.fields.selection,name:hr_period.selection__hr_fiscalyear__payment_week__2
msgid "Second Following Week"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-annually (2)"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-monthly (24)"
msgstr ""
#. module: hr_period
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_fiscalyear_form
msgid "Set To Draft"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__date_start
#: model:ir.model.fields,field_description:hr_period.field_hr_period__date_start
msgid "Start date"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__state
#: model:ir.model.fields,field_description:hr_period.field_hr_period__state
msgid "Status"
msgstr ""
#. module: hr_period
#: model:ir.model.fields.selection,name:hr_period.selection__hr_fiscalyear__payment_weekday__0
msgid "Sunday"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,help:hr_period.field_hr_fiscalyear__active
#: model:ir.model.fields,help:hr_period.field_hr_period__active
msgid ""
"The active field allows you to hide the date range without removing it."
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip batch."
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_payslip.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip."
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_payslip_run.py:0
#, python-format
msgid "The payslip batch %s still has unconfirmed pay slips."
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The schedule on the selected period\n"
" must be the same as the schedule on the\n"
" payslip batch."
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Third"
msgstr ""
#. module: hr_period
#: model:ir.model.fields.selection,name:hr_period.selection__hr_fiscalyear__payment_weekday__4
msgid "Thursday"
msgstr ""
#. module: hr_period
#: model_terms:ir.ui.view,arch_db:hr_period.view_hr_period_search
msgid "To Close"
msgstr ""
#. module: hr_period
#: model:ir.model.fields.selection,name:hr_period.selection__hr_fiscalyear__payment_weekday__2
msgid "Tuesday"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__type_id
#: model:ir.model.fields,field_description:hr_period.field_hr_period__type_id
msgid "Type"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__type_name
#: model:ir.model.fields,field_description:hr_period.field_hr_period__type_name
msgid "Type Name"
msgstr ""
#. module: hr_period
#: model:ir.model.fields.selection,name:hr_period.selection__hr_fiscalyear__payment_weekday__3
msgid "Wednesday"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__payment_week
msgid "Week of Payment"
msgstr ""
#. module: hr_period
#: model:ir.model.fields,field_description:hr_period.field_hr_fiscalyear__payment_weekday
msgid "Weekday of Payment"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Weekly (52)"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_period.py:0
#, python-format
msgid "You can not set to draft a period that already has payslips computed"
msgstr ""
#. module: hr_period
#: code:addons/hr_period/models/hr_fiscal_year.py:0
#, python-format
msgid "You must create periods before confirming the fiscal year."
msgstr ""

View file

@ -0,0 +1,636 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_payroll_period
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-01-27 11:06+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6.2\n"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%(name)s Period #%(number)s"
msgstr "%(name)s Periodo n°%(number)s"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the current period"
msgstr "%s giorno del periodo attuale"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the next period"
msgstr "%s giorno del periodo successivo"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__active
msgid "Active"
msgstr "Attivo"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Annually (1)"
msgstr "Annuale (1)"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_employee_base
msgid "Basic Employee"
msgstr "Dipendente base"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-monthly (6)"
msgstr "Bimensile (6)"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-weekly (26)"
msgstr "Bisettimanale (26)"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Close Period"
msgstr "Chiudi periodo"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__done
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__done
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Closed"
msgstr "Chiuso"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__company_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Company"
msgstr "Azienda"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Confirm"
msgstr "Conferma"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_base__contract_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_public__contract_id
msgid "Contract"
msgstr "Contratto"
#. module: hr_payroll_period
#: model:ir.actions.server,name:hr_payroll_period.ir_cron_hr_payroll_period_ir_actions_server
#: model:ir.cron,cron_name:hr_payroll_period.ir_cron_hr_payroll_period
msgid "Create Next Fiscal Year"
msgstr "Crea anno fiscale successivo"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Create Periods"
msgstr "Crea periodi"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_date
msgid "Created on"
msgstr "Creato il"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee__contract_id
msgid "Current Contract"
msgstr "Contratto attuale"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_employee__contract_id
msgid "Current contract of the employee"
msgstr "Contratto attuale del dipendente"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Daily (365)"
msgstr "Giornaliero (365)"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_date_range_type
msgid "Date Range Type"
msgstr "Tipo intervallo data"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_payment
msgid "Date of Payment"
msgstr "Data pagamento"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid ""
"Date stop cannot be sooner than the date start\n"
" "
msgstr ""
"La data fine non può essere antecedente alla data inizio\n"
" "
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_date_range_type_hr_form_view
msgid "Daterange Type"
msgstr "Tipo intervallo data"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_day
msgid "Day of Payment"
msgstr "Giorno pagamento"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_contract__schedule_pay
msgid "Defines the frequency of the wage payment."
msgstr "Indica la frequenza per il pagamento dello stipendio."
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__display_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__draft
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__draft
msgid "Draft"
msgstr "Bozza"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Duration"
msgstr "Durata"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_contract
msgid "Employee Contract"
msgstr "Contratto dipendente"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_end
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_end
msgid "End date"
msgstr "Data fine"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fifth"
msgstr "Quinto"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "First"
msgstr "Primo"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__fiscalyear_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Fiscal Year"
msgstr "Anno fiscale"
#. module: hr_payroll_period
#: model:ir.ui.menu,name:hr_payroll_period.hr_period_configure
msgid "Fiscal Years and Periods"
msgstr "Anni fiscali e periodo"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Fiscal year..."
msgstr "Anno fiscale..."
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__1
msgid "Following Week"
msgstr "Settimana seguente"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fourth"
msgstr "Quarto"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__5
msgid "Friday"
msgstr "Venerdì"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_form
#, python-format
msgid "Generate Payslips"
msgstr "Genera buste paga"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_employees
msgid "Generate payslips for all selected employees"
msgstr "Genera le buste paga per tutti i dipendenti selezionati"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Group By..."
msgstr "Raggruppa per..."
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_fiscal_year
#: model:ir.model,name:hr_payroll_period.model_hr_fiscalyear
msgid "HR Fiscal Year"
msgstr "Anno fiscale RU"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_period
msgid "HR Payroll Period"
msgstr "Periodo stipendio RU"
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_period
msgid "HR Period"
msgstr "Periodo RU"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__id
msgid "ID"
msgstr "ID"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_fiscal_year
msgid "Is HR Fiscal Year?"
msgstr "È anno fiscale RU?"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_period
msgid "Is HR period?"
msgstr "È periodo RU?"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Last"
msgstr "Ultimo"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear____last_update
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__1
msgid "Monday"
msgstr "Lunedì"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Monthly (12)"
msgstr "Mensile (12)"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__name
msgid "Name"
msgstr "Nome"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__number
msgid "Number"
msgstr "Numero"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__open
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__open
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Open"
msgstr "Aperto"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Open Period"
msgstr "Periodo aperto"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_payslip_filter
msgid "Payment Date"
msgstr "Data pagamento"
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_fiscalyear
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_fiscalyear
msgid "Payroll Fiscal Years"
msgstr "Anno fiscale busta paga"
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_period
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payroll Periods"
msgstr "Periodi stipendio"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip
msgid "Payslip"
msgstr "Busta paga"
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_run
msgid "Payslip Batches"
msgstr "Gruppi busta paga"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__payslip_ids
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payslips"
msgstr "Buste paga"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__hr_period_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__hr_period_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Period"
msgstr "Periodo"
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.date_range_type_hr_action
#: model:ir.ui.menu,name:hr_payroll_period.menu_date_range_type_action
msgid "Period Types"
msgstr "Tipi periodo"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__period_ids
msgid "Periods"
msgstr "Periodi"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Quarterly (4)"
msgstr "Trimestrale (4)"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Re-Open Period"
msgstr "Riapri periodo"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__0
msgid "Same Week"
msgstr "Stessa settimana"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__6
msgid "Saturday"
msgstr "Sabato"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__schedule_pay
msgid "Schedule Pay"
msgstr "Pianifica pagamento"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_contract__schedule_pay
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Scheduled Pay"
msgstr "Pagamento pianificato"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Search Fiscalyear"
msgstr "Cerca anno fiscale"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Search Period"
msgstr "Cerca periodo"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Second"
msgstr "Secondo"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__2
msgid "Second Following Week"
msgstr "Seconda settimana successiva"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-annually (2)"
msgstr "Semestrale (2)"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-monthly (24)"
msgstr "Bimensile (24)"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Set To Draft"
msgstr "Imposta a bozza"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_start
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_start
msgid "Start date"
msgstr "Data inizio"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__state
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__state
msgid "Status"
msgstr "Stato"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__0
msgid "Sunday"
msgstr "Domenica"
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,help:hr_payroll_period.field_hr_period__active
msgid ""
"The active field allows you to hide the date range without removing it."
msgstr ""
"Il campo attivo consente di nascondere l'intervallo data senza rimuoverlo."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip batch."
msgstr ""
"L'azienda del periodo selezionato deve essere la stessa del gruppo busta "
"paga."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip."
msgstr ""
"L'azienda del periodo selezionato deve essere la stessa della busta paga."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid "The payslip batch %s still has unconfirmed payslips."
msgstr "Il lotto busta paga %s ha ancora buste paga non confermate."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The schedule on the selected period\n"
" must be the same as the schedule on the\n"
" payslip batch."
msgstr ""
"La schedulazione del periodo selezionato\n"
" deve essere la stessa schedulazione nel\n"
" gruppo buste paga."
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Third"
msgstr "Terzo"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__4
msgid "Thursday"
msgstr "Giovedì"
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "To Close"
msgstr "Da chiudere"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__2
msgid "Tuesday"
msgstr "Martedì"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_id
msgid "Type"
msgstr "Tipo"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_name
msgid "Type Name"
msgstr "Nome tipo"
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__3
msgid "Wednesday"
msgstr "Mercoledì"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_week
msgid "Week of Payment"
msgstr "Settimana pagamento"
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_weekday
msgid "Weekday of Payment"
msgstr "Giorno della settimana pagamento"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Weekly (52)"
msgstr "Settimanale (52)"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_period.py:0
#, python-format
msgid "You can not set to draft a period that already has payslips computed"
msgstr "Non si può impostare a bozza un periodo che ha già buste paga calcolate"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "You must create periods before confirming the fiscal year."
msgstr "Bisogna creare i periodi prima di confermare l'anno fiscale."

View file

@ -0,0 +1,625 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_payroll_period
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%(name)s Period #%(number)s"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the current period"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "%s day of the next period"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__active
msgid "Active"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Annually (1)"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_employee_base
msgid "Basic Employee"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-monthly (6)"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Bi-weekly (26)"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Close Period"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__done
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__done
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Closed"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__company_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__company_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Company"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Confirm"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_base__contract_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee_public__contract_id
msgid "Contract"
msgstr ""
#. module: hr_payroll_period
#: model:ir.actions.server,name:hr_payroll_period.ir_cron_hr_payroll_period_ir_actions_server
#: model:ir.cron,cron_name:hr_payroll_period.ir_cron_hr_payroll_period
msgid "Create Next Fiscal Year"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Create Periods"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_uid
msgid "Created by"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__create_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__create_date
msgid "Created on"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_employee__contract_id
msgid "Current Contract"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_employee__contract_id
msgid "Current contract of the employee"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Daily (365)"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_date_range_type
msgid "Date Range Type"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__date_payment
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_payment
msgid "Date of Payment"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid ""
"Date stop cannot be sooner than the date start\n"
" "
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_date_range_type_hr_form_view
msgid "Daterange Type"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_day
msgid "Day of Payment"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_contract__schedule_pay
msgid "Defines the frequency of the wage payment."
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__display_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__display_name
msgid "Display Name"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__draft
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__draft
msgid "Draft"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Duration"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_contract
msgid "Employee Contract"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_end
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_end
msgid "End date"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fifth"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "First"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__fiscalyear_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Fiscal Year"
msgstr ""
#. module: hr_payroll_period
#: model:ir.ui.menu,name:hr_payroll_period.hr_period_configure
msgid "Fiscal Years and Periods"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Fiscal year..."
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__1
msgid "Following Week"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Fourth"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__5
msgid "Friday"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_form
#, python-format
msgid "Generate Payslips"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_employees
msgid "Generate payslips for all selected employees"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Group By..."
msgstr ""
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_fiscal_year
#: model:ir.model,name:hr_payroll_period.model_hr_fiscalyear
msgid "HR Fiscal Year"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_period
msgid "HR Payroll Period"
msgstr ""
#. module: hr_payroll_period
#: model:date.range.type,name:hr_payroll_period.date_range_hr_period
msgid "HR Period"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__id
msgid "ID"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_fiscal_year
msgid "Is HR Fiscal Year?"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_date_range_type__hr_period
msgid "Is HR period?"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Last"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear____last_update
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period____last_update
msgid "Last Modified on"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_uid
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_uid
msgid "Last Updated by"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__write_date
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__write_date
msgid "Last Updated on"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__1
msgid "Monday"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Monthly (12)"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__name
msgid "Name"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__number
msgid "Number"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__state__open
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_period__state__open
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Open"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Open Period"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_payslip_filter
msgid "Payment Date"
msgstr ""
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_fiscalyear
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_fiscalyear
msgid "Payroll Fiscal Years"
msgstr ""
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.action_hr_period
#: model:ir.ui.menu,name:hr_payroll_period.menu_action_hr_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payroll Periods"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip
msgid "Payslip"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model,name:hr_payroll_period.model_hr_payslip_run
msgid "Payslip Batches"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__payslip_ids
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Payslips"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip__hr_period_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__hr_period_id
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Period"
msgstr ""
#. module: hr_payroll_period
#: model:ir.actions.act_window,name:hr_payroll_period.date_range_type_hr_action
#: model:ir.ui.menu,name:hr_payroll_period.menu_date_range_type_action
msgid "Period Types"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__period_ids
msgid "Periods"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Quarterly (4)"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_form
msgid "Re-Open Period"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__0
msgid "Same Week"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__6
msgid "Saturday"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_employees__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_payslip_run__schedule_pay
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__schedule_pay
msgid "Schedule Pay"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_contract__schedule_pay
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.hr_payslip_run_filter
msgid "Scheduled Pay"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_search
msgid "Search Fiscalyear"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "Search Period"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Second"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_week__2
msgid "Second Following Week"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-annually (2)"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Semi-monthly (24)"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_fiscalyear_form
msgid "Set To Draft"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__date_start
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__date_start
msgid "Start date"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__state
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__state
msgid "Status"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__0
msgid "Sunday"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,help:hr_payroll_period.field_hr_fiscalyear__active
#: model:ir.model.fields,help:hr_payroll_period.field_hr_period__active
msgid ""
"The active field allows you to hide the date range without removing it."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip batch."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip.py:0
#, python-format
msgid ""
"The company on the selected period must be the same as the company on the "
"payslip."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid "The payslip batch %s still has unconfirmed payslips."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_payslip_run.py:0
#, python-format
msgid ""
"The schedule on the selected period\n"
" must be the same as the schedule on the\n"
" payslip batch."
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Third"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__4
msgid "Thursday"
msgstr ""
#. module: hr_payroll_period
#: model_terms:ir.ui.view,arch_db:hr_payroll_period.view_hr_period_search
msgid "To Close"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__2
msgid "Tuesday"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_id
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_id
msgid "Type"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__type_name
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_period__type_name
msgid "Type Name"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields.selection,name:hr_payroll_period.selection__hr_fiscalyear__payment_weekday__3
msgid "Wednesday"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_week
msgid "Week of Payment"
msgstr ""
#. module: hr_payroll_period
#: model:ir.model.fields,field_description:hr_payroll_period.field_hr_fiscalyear__payment_weekday
msgid "Weekday of Payment"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "Weekly (52)"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_period.py:0
#, python-format
msgid "You can not set to draft a period that already has payslips computed"
msgstr ""
#. module: hr_payroll_period
#. odoo-python
#: code:addons/hr_payroll_period/models/hr_fiscal_year.py:0
#, python-format
msgid "You must create periods before confirming the fiscal year."
msgstr ""

View file

@ -0,0 +1,10 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import date_range_type
from . import hr_contract
from . import hr_fiscal_year
from . import hr_payslip
from . import hr_payslip_employees
from . import hr_payslip_run
from . import hr_period
from . import hr_employee

View file

@ -0,0 +1,13 @@
# Copyright 2015 Savoir-faire Linux. All Rights Reserved.
# Copyright 2017 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class DateRangeType(models.Model):
_inherit = "date.range.type"
hr_period = fields.Boolean(string="Is HR period?")
hr_fiscal_year = fields.Boolean(string="Is HR Fiscal Year?")

View file

@ -0,0 +1,14 @@
# Copyright 2015 Savoir-faire Linux. All Rights Reserved.
# Copyright 2017 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
from .hr_fiscal_year import get_schedules
class HrContract(models.Model):
_inherit = "hr.contract"
# Add semi-monthly to payroll schedules
schedule_pay = fields.Selection(get_schedules, index=True)

View file

@ -0,0 +1,19 @@
# Copyright 2015 Savoir-faire Linux. All Rights Reserved.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class HrEmployee(models.AbstractModel):
_inherit = "hr.employee.base"
contract_id = fields.Many2one(comodel_name="hr.contract", search="_search_contract")
@api.model
def _search_contract(self, operator, value):
res = []
contract_ids = self.env["hr.contract"].search(
[("employee_id", operator, value)]
)
res.append(("id", "in", contract_ids.ids))
return res

View file

@ -0,0 +1,354 @@
# Copyright 2015 Savoir-faire Linux. All Rights Reserved.
# Copyright 2017 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from datetime import datetime
from dateutil.relativedelta import relativedelta
from dateutil.rrule import DAILY, MONTHLY, WEEKLY, YEARLY
from odoo import _, api, fields, models
from odoo.exceptions import UserError
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT as DF
strptime = datetime.strptime
strftime = datetime.strftime
INTERVALS = {
"annually": (relativedelta(months=12), 1),
"semi-annually": (relativedelta(months=6), 2),
"quarterly": (relativedelta(months=3), 4),
"bi-monthly": (relativedelta(months=2), 6),
"semi-monthly": (relativedelta(weeks=2), 24),
"monthly": (relativedelta(months=1), 12),
"bi-weekly": (relativedelta(weeks=2), 26),
"weekly": (relativedelta(weeks=1), 52),
"daily": (relativedelta(days=1), 365),
}
@api.model
def get_schedules(self):
return [
("annually", _("Annually (1)")),
("semi-annually", _("Semi-annually (2)")),
("quarterly", _("Quarterly (4)")),
("bi-monthly", _("Bi-monthly (6)")),
("monthly", _("Monthly (12)")),
("semi-monthly", _("Semi-monthly (24)")),
("bi-weekly", _("Bi-weekly (26)")),
("weekly", _("Weekly (52)")),
("daily", _("Daily (365)")),
]
@api.model
def get_payment_days(self):
expr = _("%s day of the next period")
expr_2 = _("%s day of the current period")
return [
("1", expr % _("First")),
("2", expr % _("Second")),
("3", expr % _("Third")),
("4", expr % _("Fourth")),
("5", expr % _("Fifth")),
("0", expr_2 % _("Last")),
]
class HrFiscalYear(models.Model):
_name = "hr.fiscalyear"
_inherit = "date.range"
_description = "HR Fiscal Year"
@api.model
def _default_date_start(self):
today = datetime.now()
return datetime(today.year, 1, 1).strftime(DF)
@api.model
def _default_date_end(self):
today = datetime.now()
return datetime(today.year, 12, 31).strftime(DF)
@api.model
def _default_type(self, company_id=False):
if not company_id:
company_id = self.env.company
period_type = self.env["date.range.type"].search(
[("hr_fiscal_year", "=", True), ("company_id", "=", company_id.id)], limit=1
)
return period_type
period_ids = fields.One2many(
"hr.period", "fiscalyear_id", "Periods", states={"draft": [("readonly", False)]}
)
state = fields.Selection(
[
("draft", "Draft"),
("open", "Open"),
("done", "Closed"),
],
"Status",
default="draft",
)
schedule_pay = fields.Selection(
get_schedules,
required=True,
states={"draft": [("readonly", False)]},
default="monthly",
)
type_id = fields.Many2one(
domain=[("hr_fiscal_year", "=", True)], default=_default_type
)
payment_weekday = fields.Selection(
[
("0", "Sunday"),
("1", "Monday"),
("2", "Tuesday"),
("3", "Wednesday"),
("4", "Thursday"),
("5", "Friday"),
("6", "Saturday"),
],
"Weekday of Payment",
states={"draft": [("readonly", False)]},
)
payment_week = fields.Selection(
[
("0", "Same Week"),
("1", "Following Week"),
("2", "Second Following Week"),
],
"Week of Payment",
states={"draft": [("readonly", False)]},
)
payment_day = fields.Selection(
get_payment_days, "Day of Payment", states={"draft": [("readonly", False)]}
)
def _count_range_no(self):
days_range = (
abs(
(
strptime(str(self.date_end), DF)
- strptime(str(self.date_start), DF)
).days
)
+ 1
)
return INTERVALS[self.schedule_pay][1] * days_range / 365
@api.onchange("schedule_pay", "date_start")
def onchange_schedule(self):
if self.schedule_pay and self.date_start:
year = strptime(str(self.date_start), DF).year
schedule_name = next(
(s[1] for s in get_schedules(self) if s[0] == self.schedule_pay), False
)
self.name = "%(year)s - %(schedule)s" % {
"year": year,
"schedule": schedule_name,
}
def get_generator_vals(self):
self.ensure_one()
no_interval = 1
if self.schedule_pay == "daily":
unit_of_time = DAILY
elif self.schedule_pay == "weekly":
unit_of_time = WEEKLY
elif self.schedule_pay == "bi-weekly":
unit_of_time = WEEKLY
no_interval = 2
elif self.schedule_pay == "monthly":
unit_of_time = MONTHLY
elif self.schedule_pay == "bi-monthly":
unit_of_time = MONTHLY
no_interval = 2
elif self.schedule_pay == "quarterly":
unit_of_time = MONTHLY
no_interval = 4
elif self.schedule_pay == "semi-annually":
unit_of_time = MONTHLY
no_interval = 6
else:
unit_of_time = YEARLY
return {
"name_prefix": self.name,
"date_start": self.date_start,
"type_id": self.type_id.id,
"company_id": self.company_id.id,
"unit_of_time": str(unit_of_time),
"duration_count": no_interval,
"count": self._count_range_no(),
}
def get_ranges(self):
self.ensure_one()
vals = self.get_generator_vals()
range_generator = self.env["date.range.generator"].create(vals)
date_ranges = range_generator._generate_date_ranges()
return date_ranges
def create_periods(self):
"""
Create every periods a payroll fiscal year
"""
self.ensure_one()
for fy in self:
for period in fy.period_ids:
period.unlink()
fy.invalidate_recordset()
if self.date_start > self.date_end:
raise UserError(
_(
"""Date stop cannot be sooner than the date start
"""
)
)
if self.schedule_pay == "semi-monthly":
period_start = strptime(str(self.date_start), DF)
next_year_start = strptime(str(self.date_end), DF) + relativedelta(days=1)
# Case for semi-monthly schedules
delta_1 = relativedelta(days=14)
delta_2 = relativedelta(months=1)
i = 1
while not period_start + delta_2 > next_year_start:
# create periods for one month
half_month = period_start + delta_1
self._create_single_period(period_start, half_month, i)
self._create_single_period(
half_month + relativedelta(days=1),
period_start + delta_2 - relativedelta(days=1),
i + 1,
)
# setup for next month
period_start += delta_2
i += 2
else:
i = 0
for period in self.get_ranges():
i += 1
period_start = strptime(str(period.get("date_start", False)), DF)
period_end = strptime(str(period.get("date_end", False)), DF)
self._create_single_period(period_start, period_end, i)
return True
def _create_single_period(self, date_start, date_end, number):
"""Create a single payroll period
:param date_start: the first day of the actual period
:param date_end: the first day of the following period
"""
self.ensure_one()
period_type = self.env["hr.period"]._default_type(self.company_id.id)
self.write(
{
"period_ids": [
(
0,
0,
{
"date_start": date_start,
"date_end": date_end,
"date_payment": self._get_day_of_payment(date_end),
"company_id": self.company_id.id,
"name": _("%(name)s Period #%(number)s")
% {"name": self.name, "number": number},
"number": number,
"state": "draft",
"type_id": period_type.id,
"schedule_pay": self.schedule_pay,
},
)
],
}
)
def _get_day_of_payment(self, date_end):
"""
Get the date of payment for a period to create
:param date_end: the last day of the current period
"""
self.ensure_one()
date_payment = date_end
if self.schedule_pay in ["weekly", "bi-weekly"]:
date_payment += relativedelta(weeks=int(self.payment_week))
while date_payment.strftime("%w") != self.payment_weekday:
date_payment -= relativedelta(days=1)
else:
date_payment += relativedelta(days=int(self.payment_day))
return date_payment
def button_confirm(self):
for fy in self:
if not fy.period_ids:
raise UserError(
_("You must create periods before confirming " "the fiscal year.")
)
self.state = "open"
for fy in self:
first_period = fy.period_ids.sorted(key=lambda p: p.number)[0]
first_period.button_open()
def button_set_to_draft(self):
# Set all periods to draft
periods = self.mapped("period_ids")
periods.button_set_to_draft()
self.state = "draft"
def search_period(self, number):
return next(
(p for p in self.period_ids if p.number == number), self.env["hr.period"]
)
@api.model
def cron_create_next_fiscal_year(self):
current_year = datetime.now().year
next_year = current_year + 1
# Get the latest fiscal year that has not ended yet
latest_fiscal_year = self.search(
[("date_end", "<", datetime(next_year, 1, 1).strftime(DF))],
order="date_end desc",
limit=1,
)
if not latest_fiscal_year:
return self
latest_period_end = max(latest_fiscal_year.period_ids.mapped("date_end"))
fiscal_year_start = latest_period_end + relativedelta(days=1)
fiscal_year_end = datetime(next_year, 12, 31).strftime(DF)
# Check if a fiscal year with the same start and end dates already exists
existing_fiscal_year = self.search(
[
("date_start", "=", fiscal_year_start),
("date_end", "=", fiscal_year_end),
],
limit=1,
)
if existing_fiscal_year:
return existing_fiscal_year
schedule_pay = latest_fiscal_year.schedule_pay
payment_weekday = latest_fiscal_year.payment_weekday
payment_week = latest_fiscal_year.payment_week
schedule_name = next(
(s[1] for s in get_schedules(self) if s[0] == schedule_pay), False
)
fiscal_year = self.create(
{
"name": "%(year)s - %(schedule)s"
% {
"year": next_year,
"schedule": schedule_name,
},
"date_start": fiscal_year_start,
"date_end": fiscal_year_end,
"schedule_pay": schedule_pay,
"payment_weekday": payment_weekday,
"payment_week": payment_week,
}
)
fiscal_year.create_periods()
return fiscal_year

View file

@ -0,0 +1,81 @@
# Copyright 2015 Savoir-faire Linux. All Rights Reserved.
# Copyright 2017 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import _, api, fields, models
from odoo.exceptions import UserError
class HrPayslip(models.Model):
_inherit = "hr.payslip"
hr_period_id = fields.Many2one(
"hr.period",
string="Period",
readonly=True,
states={"draft": [("readonly", False)]},
)
date_payment = fields.Date(
"Date of Payment", readonly=True, states={"draft": [("readonly", False)]}
)
@api.constrains("hr_period_id", "company_id")
def _check_period_company(self):
for slip in self:
if slip.hr_period_id and slip.hr_period_id.company_id != slip.company_id:
if slip.hr_period_id.company_id != slip.company_id:
raise UserError(
_(
"The company on the selected period must be the same "
"as the company on the payslip."
)
)
@api.onchange("company_id", "contract_id")
def onchange_company_id(self):
if self.company_id:
if self.contract_id:
contract = self.contract_id
period = self.env["hr.period"].get_next_period(
self.company_id.id, contract.schedule_pay
)
else:
schedule_pay = self.env["hr.payslip.run"].get_default_schedule(
self.company_id.id
)
if self.company_id and schedule_pay:
period = self.env["hr.period"].get_next_period(
self.company_id.id, schedule_pay
)
self.hr_period_id = period.id if period else False
@api.onchange("contract_id")
def onchange_contract_period(self):
if self.contract_id.employee_id and self.contract_id:
employee = self.contract_id.employee_id
contract = self.contract_id
period = self.env["hr.period"].get_next_period(
employee.company_id.id, contract.schedule_pay
)
if period:
self.hr_period_id = period.id if period else False
@api.onchange("hr_period_id")
def onchange_hr_period_id(self):
if self.hr_period_id:
# dates must be updated together to prevent constraint
self.date_from = self.hr_period_id.date_start
self.date_to = self.hr_period_id.date_end
self.date_payment = self.hr_period_id.date_payment
@api.model
def create(self, vals):
if vals.get("payslip_run_id"):
payslip_run = self.env["hr.payslip.run"].browse(vals["payslip_run_id"])
self.env["hr.employee"].browse(vals["employee_id"])
period = payslip_run.hr_period_id
vals["date_payment"] = payslip_run.date_payment
vals["hr_period_id"] = period.id
elif vals.get("date_to") and not vals.get("date_payment"):
vals["date_payment"] = vals["date_to"]
return super(HrPayslip, self).create(vals)

View file

@ -0,0 +1,15 @@
# Copyright 2015 Savoir-faire Linux. All Rights Reserved.
# Copyright 2017 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
from .hr_fiscal_year import get_schedules
class HrPayslipEmployees(models.TransientModel):
_inherit = "hr.payslip.employees"
company_id = fields.Many2one("res.company", "Company", readonly=True)
schedule_pay = fields.Selection(get_schedules, readonly=True)

View file

@ -0,0 +1,154 @@
# Copyright 2015 Savoir-faire Linux. All Rights Reserved.
# Copyright 2017 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import _, api, fields, models
from odoo.exceptions import UserError
from .hr_fiscal_year import get_schedules
class HrPayslipRun(models.Model):
_inherit = "hr.payslip.run"
name = fields.Char(
required=True,
readonly=True,
states={"draft": [("readonly", False)]},
default=lambda obj: obj.env["ir.sequence"].next_by_code("hr.payslip.run"),
)
company_id = fields.Many2one(
"res.company",
"Company",
states={"close": [("readonly", True)]},
default=lambda obj: obj.env.company,
)
hr_period_id = fields.Many2one(
"hr.period", string="Period", states={"close": [("readonly", True)]}
)
date_payment = fields.Date(
"Date of Payment", states={"close": [("readonly", True)]}
)
schedule_pay = fields.Selection(
get_schedules, states={"close": [("readonly", True)]}
)
@api.constrains("hr_period_id", "company_id")
def _check_period_company(self):
for run in self:
if run.hr_period_id and run.hr_period_id.company_id != run.company_id:
if run.hr_period_id.company_id != run.company_id:
raise UserError(
_(
"The company on the selected period must be the same "
"as the company on the payslip batch."
)
)
@api.constrains("hr_period_id", "schedule_pay")
def _check_period_schedule(self):
for run in self:
if run.hr_period_id and run.hr_period_id.schedule_pay != run.schedule_pay:
if run.hr_period_id.schedule_pay != run.schedule_pay:
raise UserError(
_(
"""The schedule on the selected period
must be the same as the schedule on the
payslip batch."""
)
)
@api.model
def get_default_schedule(self, company_id):
company = self.env["res.company"].browse(company_id)
fys = self.env["hr.fiscalyear"].search(
[("state", "=", "open"), ("company_id", "=", company.id)]
)
return fys[0].schedule_pay if fys else "monthly"
@api.onchange("company_id", "schedule_pay")
def onchange_company_id(self):
self.ensure_one()
schedule_pay = self.schedule_pay or self.get_default_schedule(
self.company_id.id
)
if self.company_id and schedule_pay:
period = self.env["hr.period"].get_next_period(
self.company_id.id,
schedule_pay,
)
self.hr_period_id = (period.id if period else False,)
@api.onchange("hr_period_id")
def onchange_period_id(self):
period = self.hr_period_id
if period:
self.date_start = period.date_start
self.date_end = period.date_end
self.date_payment = period.date_payment
self.schedule_pay = period.schedule_pay
@api.model
def create(self, vals):
"""
Keep compatibility between modules
"""
if vals.get("date_end") and not vals.get("date_payment"):
vals.update({"date_payment": vals["date_end"]})
return super(HrPayslipRun, self).create(vals)
def get_payslip_employees_wizard(self):
"""Replace the static action used to call the wizard"""
self.ensure_one()
view = self.env.ref("payroll.view_hr_payslip_by_employees")
company = self.company_id
employee_ids = (
self.env["hr.employee"]
.search(
[
("company_id", "=", company.id),
("contract_id.schedule_pay", "=", self.schedule_pay),
]
)
.ids
)
return {
"type": "ir.actions.act_window",
"name": _("Generate Payslips"),
"res_model": "hr.payslip.employees",
"view_mode": "form",
"view_id": view.id,
"target": "new",
"context": {
"default_company_id": company.id,
"default_schedule_pay": self.schedule_pay,
"default_employee_ids": [(6, 0, employee_ids)],
},
}
def close_payslip_run(self):
for run in self:
if next((p for p in run.slip_ids if p.state == "draft"), False):
raise UserError(
_("The payslip batch %s still has unconfirmed " "payslips.")
% run.name
)
self.update_periods()
return super(HrPayslipRun, self).close_payslip_run()
def draft_payslip_run(self):
for run in self:
run.hr_period_id.button_re_open()
return super(HrPayslipRun, self).draft_payslip_run()
def update_periods(self):
self.ensure_one()
period = self.hr_period_id
if period:
# Close the current period
period.button_close()
# Open the next period of the fiscal year
fiscal_year = period.fiscalyear_id
next_period = fiscal_year.search_period(number=period.number + 1)
if next_period:
next_period.button_open()

View file

@ -0,0 +1,112 @@
# Copyright 2015 Savoir-faire Linux. All Rights Reserved.
# Copyright 2017 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
#
from odoo import _, api, fields, models
from odoo.exceptions import UserError
from .hr_fiscal_year import get_schedules
class HrPeriod(models.Model):
_name = "hr.period"
_inherit = "date.range"
_description = "HR Payroll Period"
_order = "date_start"
@api.model
def _default_type(self, company_id=False):
if not company_id:
company_id = self.env.company
if not isinstance(company_id, int):
company_id = company_id.id
period_type = self.env["date.range.type"].search(
[("hr_period", "=", True), ("company_id", "=", company_id)], limit=1
)
return period_type
name = fields.Char(required=True, states={"draft": [("readonly", False)]})
number = fields.Integer(required=True, states={"draft": [("readonly", False)]})
date_payment = fields.Date(
"Date of Payment", required=True, states={"draft": [("readonly", False)]}
)
fiscalyear_id = fields.Many2one(
"hr.fiscalyear",
"Fiscal Year",
required=True,
states={"draft": [("readonly", False)]},
ondelete="cascade",
)
state = fields.Selection(
[("draft", "Draft"), ("open", "Open"), ("done", "Closed")],
"Status",
required=True,
default="draft",
)
company_id = fields.Many2one(
"res.company",
string="Company",
store=True,
related="fiscalyear_id.company_id",
readonly=True,
states={"draft": [("readonly", False)]},
)
schedule_pay = fields.Selection(
get_schedules,
required=True,
states={"draft": [("readonly", False)]},
default="monthly",
)
payslip_ids = fields.One2many(
"hr.payslip", "hr_period_id", "Payslips", readonly=True
)
type_id = fields.Many2one(domain=[("hr_period", "=", True)], default=_default_type)
@api.model
def get_next_period(self, company_id, schedule_pay):
"""
Get the next payroll period to process
:rtype: hr.period browse record
"""
period = self.search(
[
("company_id", "=", company_id),
("schedule_pay", "=", schedule_pay),
("state", "=", "open"),
],
order="date_start",
limit=1,
)
return period if period else False
def button_set_to_draft(self):
for period in self:
if period.payslip_ids:
raise UserError(
_(
"You can not set to draft a period that already "
"has payslips computed"
)
)
self.write({"state": "draft"})
def button_open(self):
self.write({"state": "open"})
def button_close(self):
self.write({"state": "done"})
for period in self:
fy = period.fiscalyear_id
# If all periods are closed, close the fiscal year
if all(p.state == "done" for p in fy.period_ids):
fy.write({"state": "done"})
def button_re_open(self):
self.write({"state": "open"})
for period in self:
fy = period.fiscalyear_id
if fy.state != "open":
fy.write({"state": "open"})

View file

@ -0,0 +1,14 @@
Create a fiscal year
~~~~~~~~~~~~~~~~~~~~
Go to: Payroll -> Configuration -> Payroll Fiscal Year
- Select a type of schedule, e.g. monthly
- Select a duration, e.g. from 2015-01-01 to 2015-12-31
- Select when the payment is done, e.g. the second day of the next period
- Click on create periods, then confirm
The first period of the year is now open and ready to be used.
Some companies have employees paid at different types of schedule.
In that case, you need to create as many fiscal years as types of schedule
required. The same applies in a multi-company configuration.

View file

@ -0,0 +1,8 @@
* David Dufresne <david.dufresne@savoirfairelinux.com>
* Maxime Chambreuil <maxime.chambreuil@savoirfairelinux.com>
* Pierre Lamarche <pierre.lamarche@savoirfairelinux.com>
* Salton Massally <smassally@idtlabs.sl>
* Guewen Baconnier <guewen.baconnier@camptocamp.com>
* Jordi Ballester Alomar <jordi.ballester@eficent.com>
* Serpent Consulting Services Pvt. Ltd. <support@serpentcs.com>
* Aaron Henriquez <aheficent@eficent.com>

View file

@ -0,0 +1,10 @@
Adds the concept of period in the human resources management.
The objective of the module is to create periods of time to
be used in the human resources management flows such as
specific payroll period of time or timesheet periods.
Regarding to payrolls, it adds the date of payment on the
payslip and payslip batch. This date is automatically filled
when selecting a period. It also adds a sequence on the payslip
batch name and the company on the payslip batch.

View file

@ -0,0 +1 @@
Install the payroll of your localization, then install this module.

View file

@ -0,0 +1,6 @@
#. Currently it is not possible to close the HR fiscal year before the end of
the end of the last period. When implementing this feature, contracts and
opened payslips should be updated with the new period assigned.
#. It is not possible to use the date_range module in server tools to generate
semi-monthly periods so those periods are generated as in previous versions.
#. The date_range module does not allow to create a period for just one day.

View file

@ -0,0 +1,18 @@
Create a payslip batch
~~~~~~~~~~~~~~~~~~~~~~
Go to: Human Resources -> Payroll -> Payslip Batches
The first period of the fiscal year is already selected.
You may change it if you manage multiple types of schedules.
- Click on Generate Payslips
The employees paid with the selected schedule are automatically selected.
- Click on Generate
- Confirm your payslips
- Click on Close
The payroll period is closed automatically and the next one is open.

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<record id="hr_fy_comp_rule" model="ir.rule">
<field name="name">HR Period Rule</field>
<field name="model_id" ref="model_hr_fiscalyear" />
<field name="global" eval="True" />
<field
name="domain_force"
>[('company_id', 'child_of', [user.company_id.id])]</field>
</record>
<record id="hr_period_comp_rule" model="ir.rule">
<field name="name">HR Period Rule</field>
<field name="model_id" ref="model_hr_period" />
<field name="global" eval="True" />
<field
name="domain_force"
>[('company_id', 'child_of', [user.company_id.id])]</field>
</record>
</odoo>

View file

@ -0,0 +1,5 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_hr_period","hr.period","model_hr_period",hr.group_hr_manager,1,1,1,1
"access_hr_fiscalyear","hr.fiscalyear","model_hr_fiscalyear",hr.group_hr_manager,1,1,1,1
"access_hr_period_base","hr.period","model_hr_period",base.group_user,1,0,0,0
"access_hr_fiscalyear_base","hr.fiscalyear","model_hr_fiscalyear",base.group_user,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_period hr.period model_hr_period hr.group_hr_manager 1 1 1 1
3 access_hr_fiscalyear hr.fiscalyear model_hr_fiscalyear hr.group_hr_manager 1 1 1 1
4 access_hr_period_base hr.period model_hr_period base.group_user 1 0 0 0
5 access_hr_fiscalyear_base hr.fiscalyear model_hr_fiscalyear base.group_user 1 0 0 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,506 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>HR Payroll Period</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="hr-payroll-period">
<h1 class="title">HR Payroll Period</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:f945b44927a810367557b02abc26b2d5099f9fcf12877221187aae164ce89cf8
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/payroll/tree/16.0/hr_payroll_period"><img alt="OCA/payroll" src="https://img.shields.io/badge/github-OCA%2Fpayroll-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/payroll-16-0/payroll-16-0-hr_payroll_period"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/payroll&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>Adds the concept of period in the human resources management.</p>
<p>The objective of the module is to create periods of time to
be used in the human resources management flows such as
specific payroll period of time or timesheet periods.</p>
<p>Regarding to payrolls, it adds the date of payment on the
payslip and payslip batch. This date is automatically filled
when selecting a period. It also adds a sequence on the payslip
batch name and the company on the payslip batch.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#installation" id="toc-entry-1">Installation</a></li>
<li><a class="reference internal" href="#configuration" id="toc-entry-2">Configuration</a><ul>
<li><a class="reference internal" href="#create-a-fiscal-year" id="toc-entry-3">Create a fiscal year</a></li>
</ul>
</li>
<li><a class="reference internal" href="#usage" id="toc-entry-4">Usage</a><ul>
<li><a class="reference internal" href="#create-a-payslip-batch" id="toc-entry-5">Create a payslip batch</a></li>
</ul>
</li>
<li><a class="reference internal" href="#known-issues-roadmap" id="toc-entry-6">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-7">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-8">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-9">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-10">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-11">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="installation">
<h1><a class="toc-backref" href="#toc-entry-1">Installation</a></h1>
<p>Install the payroll of your localization, then install this module.</p>
</div>
<div class="section" id="configuration">
<h1><a class="toc-backref" href="#toc-entry-2">Configuration</a></h1>
<div class="section" id="create-a-fiscal-year">
<h2><a class="toc-backref" href="#toc-entry-3">Create a fiscal year</a></h2>
<p>Go to: Payroll -&gt; Configuration -&gt; Payroll Fiscal Year</p>
<blockquote>
<ul class="simple">
<li>Select a type of schedule, e.g. monthly</li>
<li>Select a duration, e.g. from 2015-01-01 to 2015-12-31</li>
<li>Select when the payment is done, e.g. the second day of the next period</li>
<li>Click on create periods, then confirm</li>
</ul>
</blockquote>
<p>The first period of the year is now open and ready to be used.</p>
<p>Some companies have employees paid at different types of schedule.
In that case, you need to create as many fiscal years as types of schedule
required. The same applies in a multi-company configuration.</p>
</div>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-4">Usage</a></h1>
<div class="section" id="create-a-payslip-batch">
<h2><a class="toc-backref" href="#toc-entry-5">Create a payslip batch</a></h2>
<p>Go to: Human Resources -&gt; Payroll -&gt; Payslip Batches</p>
<p>The first period of the fiscal year is already selected.
You may change it if you manage multiple types of schedules.</p>
<blockquote>
<ul class="simple">
<li>Click on Generate Payslips</li>
</ul>
</blockquote>
<p>The employees paid with the selected schedule are automatically selected.</p>
<blockquote>
<ul class="simple">
<li>Click on Generate</li>
<li>Confirm your payslips</li>
<li>Click on Close</li>
</ul>
</blockquote>
<p>The payroll period is closed automatically and the next one is open.</p>
</div>
</div>
<div class="section" id="known-issues-roadmap">
<h1><a class="toc-backref" href="#toc-entry-6">Known issues / Roadmap</a></h1>
<ol class="arabic simple">
<li>Currently it is not possible to close the HR fiscal year before the end of
the end of the last period. When implementing this feature, contracts and
opened payslips should be updated with the new period assigned.</li>
<li>It is not possible to use the date_range module in server tools to generate
semi-monthly periods so those periods are generated as in previous versions.</li>
<li>The date_range module does not allow to create a period for just one day.</li>
</ol>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-7">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/payroll/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/payroll/issues/new?body=module:%20hr_payroll_period%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-8">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-9">Authors</a></h2>
<ul class="simple">
<li>Savoir-faire Linux</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-10">Contributors</a></h2>
<ul class="simple">
<li>David Dufresne &lt;<a class="reference external" href="mailto:david.dufresne&#64;savoirfairelinux.com">david.dufresne&#64;savoirfairelinux.com</a>&gt;</li>
<li>Maxime Chambreuil &lt;<a class="reference external" href="mailto:maxime.chambreuil&#64;savoirfairelinux.com">maxime.chambreuil&#64;savoirfairelinux.com</a>&gt;</li>
<li>Pierre Lamarche &lt;<a class="reference external" href="mailto:pierre.lamarche&#64;savoirfairelinux.com">pierre.lamarche&#64;savoirfairelinux.com</a>&gt;</li>
<li>Salton Massally &lt;<a class="reference external" href="mailto:smassally&#64;idtlabs.sl">smassally&#64;idtlabs.sl</a>&gt;</li>
<li>Guewen Baconnier &lt;<a class="reference external" href="mailto:guewen.baconnier&#64;camptocamp.com">guewen.baconnier&#64;camptocamp.com</a>&gt;</li>
<li>Jordi Ballester Alomar &lt;<a class="reference external" href="mailto:jordi.ballester&#64;eficent.com">jordi.ballester&#64;eficent.com</a>&gt;</li>
<li>Serpent Consulting Services Pvt. Ltd. &lt;<a class="reference external" href="mailto:support&#64;serpentcs.com">support&#64;serpentcs.com</a>&gt;</li>
<li>Aaron Henriquez &lt;<a class="reference external" href="mailto:aheficent&#64;eficent.com">aheficent&#64;eficent.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-11">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/nimarosa"><img alt="nimarosa" src="https://github.com/nimarosa.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/payroll/tree/16.0/hr_payroll_period">OCA/payroll</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,4 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import test_hr_fiscalyear
from . import test_payslip

View file

@ -0,0 +1,393 @@
# Copyright 2015 Savoir-faire Linux. All Rights Reserved.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from datetime import date, datetime
from dateutil.relativedelta import relativedelta
from odoo import fields
from odoo.exceptions import UserError, ValidationError
from odoo.tests import common
class TestHrFiscalyear(common.TransactionCase):
def setUp(self):
super(TestHrFiscalyear, self).setUp()
self.user_model = self.env["res.users"]
self.company_model = self.env["res.company"]
self.payslip_model = self.env["hr.payslip"]
self.run_model = self.env["hr.payslip.run"]
self.fy_model = self.env["hr.fiscalyear"]
self.period_model = self.env["hr.period"]
self.data_range_type_model = self.env["date.range.type"]
self.company = self.env.ref("base.main_company")
self.today = fields.Datetime.now().date()
self.type_fy = self.create_data_range_type("test_hr_fy", "fy")
self.type = self.create_data_range_type("test_hr_period", "per")
self.vals = {
"company_id": self.company.id,
"date_start": "2015-01-01",
"date_end": "2015-12-31",
"schedule_pay": "monthly",
"type_id": self.type.id,
"payment_day": "2",
"payment_weekday": "0",
"payment_week": "1",
"name": "Test",
}
def create_data_range_type(self, name, hr_type, company=False):
if not company:
company = self.company
vals = {
"name": name,
"active": True,
"company_id": company.id,
}
if hr_type == "per":
vals.update(hr_period=True)
else:
vals.update(hr_fiscal_year=True)
return self.data_range_type_model.create(vals)
def create_fiscal_year(self, vals=None):
if vals is None:
vals = {}
if not vals.get("type_id"):
vals["type_id"] = self.fy_model._default_type().id
if not vals.get("date_start"):
vals["date_start"] = self.fy_model._default_date_start()
if not vals.get("date_end"):
vals["date_end"] = self.fy_model._default_date_end()
if vals.get("company_id"):
vals["company_id"] = vals["company_id"]
if vals.get("schedule_pay"):
vals["schedule_pay"] = vals["schedule_pay"]
self.vals.update(vals)
return self.fy_model.create(self.vals)
def get_periods(self, fiscal_year):
return fiscal_year.period_ids.sorted(key=lambda p: p.date_start)
def check_period(self, period, date_start, date_end, date_payment):
if date_start:
self.assertEqual(str(period.date_start), date_start)
if date_end:
self.assertEqual(str(period.date_end), date_end)
if date_payment:
self.assertEqual(str(period.date_payment), date_payment)
def test_fy_change_scheduled_pay(self):
fy = self.create_fiscal_year(
{
"date_start": "2015-01-01",
"date_end": "2015-12-31",
"type_id": self.type_fy.id,
}
)
fy.schedule_pay = "weekly"
fy.onchange_schedule()
self.assertEqual(fy.name, "2015 - Weekly (52)")
def test_confirm_periods(self):
fy = self.create_fiscal_year(
{"type_id": self.type_fy.id, "company_id": self.company.id}
)
with self.assertRaises(UserError):
fy.button_confirm()
fy.create_periods()
periods = self.get_periods(fy)
fy.button_confirm()
self.assertEqual(periods[0].state, "open")
self.assertEqual(periods[1].state, "draft")
def test_create_periods_monthly(self):
fy = self.create_fiscal_year(
{
"date_start": "2015-01-01",
"date_end": "2015-12-31",
"type_id": self.type_fy.id,
}
)
fy.create_periods()
periods = self.get_periods(fy)
self.assertEqual(len(periods), 12)
self.check_period(periods[0], "2015-01-01", "2015-01-31", "2015-02-02")
self.check_period(periods[1], "2015-02-01", "2015-02-28", "2015-03-02")
self.check_period(periods[2], "2015-03-01", "2015-03-31", "2015-04-02")
self.check_period(periods[11], "2015-12-01", "2015-12-31", "2016-01-02")
def test_create_periods_monthly_custom_year(self):
fy = self.create_fiscal_year(
{
"date_start": "2015-03-16",
"date_end": "2016-03-15",
"type_id": self.type_fy.id,
}
)
fy.create_periods()
periods = self.get_periods(fy)
self.assertEqual(len(periods), 12)
self.check_period(periods[0], "2015-03-16", "2015-04-15", "2015-04-17")
self.check_period(periods[1], "2015-04-16", "2015-05-15", "2015-05-17")
self.check_period(periods[2], "2015-05-16", "2015-06-15", "2015-06-17")
self.check_period(periods[11], "2016-02-16", "2016-03-15", "2016-03-17")
def test_create_periods_semi_monthly(self):
fy = self.create_fiscal_year(
{
"date_start": "2015-01-01",
"date_end": "2015-12-31",
"schedule_pay": "semi-monthly",
"type_id": self.type_fy.id,
}
)
fy.create_periods()
periods = self.get_periods(fy)
self.assertEqual(len(periods), 24)
self.check_period(periods[0], "2015-01-01", "2015-01-15", "2015-01-17")
self.check_period(periods[1], "2015-01-16", "2015-01-31", "2015-02-02")
self.check_period(periods[2], "2015-02-01", "2015-02-15", "2015-02-17")
self.check_period(periods[3], "2015-02-16", "2015-02-28", "2015-03-02")
self.check_period(periods[23], "2015-12-16", "2015-12-31", "2016-01-02")
def test_create_periods_semi_monthly_custom_year(self):
fy = self.create_fiscal_year(
{
"date_start": "2015-03-20",
"date_end": "2016-03-19",
"schedule_pay": "semi-monthly",
"type_id": self.type_fy.id,
}
)
fy.create_periods()
periods = self.get_periods(fy)
self.assertEqual(len(periods), 24)
self.check_period(periods[0], "2015-03-20", "2015-04-03", "2015-04-05")
self.check_period(periods[1], "2015-04-04", "2015-04-19", "2015-04-21")
self.check_period(periods[2], "2015-04-20", "2015-05-04", "2015-05-06")
self.check_period(periods[22], "2016-02-20", "2016-03-05", "2016-03-07")
self.check_period(periods[23], "2016-03-06", "2016-03-19", "2016-03-21")
def test_create_fy_wrong_dates(self):
with self.assertRaises(ValidationError):
self.create_fiscal_year(
{
"schedule_pay": "annually",
"date_start": "2015-12-31",
"date_end": "2015-01-01",
"type_id": self.type_fy.id,
}
)
def test_create_periods_annually(self):
fy = self.create_fiscal_year(
{
"date_start": "2015-01-01",
"date_end": "2015-12-31",
"schedule_pay": "annually",
"type_id": self.type_fy.id,
}
)
fy.create_periods()
periods = self.get_periods(fy)
self.assertEqual(len(periods), 1)
self.check_period(periods[0], "2015-01-01", "2015-12-31", "2016-01-02")
def test_create_periods_semi_annually(self):
fy = self.create_fiscal_year(
{
"date_start": "2015-01-01",
"date_end": "2015-12-31",
"schedule_pay": "semi-annually",
"type_id": self.type_fy.id,
}
)
fy.create_periods()
periods = self.get_periods(fy)
self.assertEqual(len(periods), 2)
self.check_period(periods[0], "2015-01-01", "2015-06-30", "2015-07-02")
def test_create_periods_annually_custom_year(self):
fy = self.create_fiscal_year(
{
"date_start": "2015-03-16",
"date_end": "2016-03-15",
"schedule_pay": "annually",
"type_id": self.type_fy.id,
}
)
fy.create_periods()
periods = self.get_periods(fy)
self.assertEqual(len(periods), 1)
self.check_period(periods[0], "2015-03-16", "2016-03-15", "2016-03-17")
def test_create_periods_weekly(self):
fy = self.create_fiscal_year(
{
"date_start": "2015-01-01",
"date_end": "2015-12-31",
"schedule_pay": "weekly",
"type_id": self.type_fy.id,
}
)
fy.create_periods()
periods = self.get_periods(fy)
self.assertEqual(len(periods), 52)
self.check_period(periods[0], "2015-01-01", "2015-01-07", "2015-01-11")
self.check_period(periods[1], "2015-01-08", "2015-01-14", "2015-01-18")
self.check_period(periods[2], "2015-01-15", "2015-01-21", "2015-01-25")
self.check_period(periods[51], "2015-12-24", "2015-12-30", "2016-01-03")
def test_create_periods_weekly_payment_same_week(self):
fy = self.create_fiscal_year(
{
"schedule_pay": "weekly",
"payment_week": "0",
"date_start": "2015-01-01",
"date_end": "2015-12-31",
"type_id": self.type_fy.id,
}
)
fy.create_periods()
periods = self.get_periods(fy)
self.assertEqual(len(periods), 52)
self.assertEqual(periods[0].date_payment, date(2015, 1, 4))
self.assertEqual(periods[1].date_payment, date(2015, 1, 11))
self.assertEqual(periods[2].date_payment, date(2015, 1, 18))
self.assertEqual(periods[51].date_payment, date(2015, 12, 27))
def test_create_periods_weekly_payment_2_weeks(self):
fy = self.create_fiscal_year(
{
"schedule_pay": "weekly",
"payment_week": "2",
"date_start": "2015-01-01",
"date_end": "2015-12-31",
"type_id": self.type_fy.id,
}
)
fy.create_periods()
periods = self.get_periods(fy)
self.assertEqual(len(periods), 52)
self.assertEqual(periods[0].date_payment, date(2015, 1, 18))
self.assertEqual(periods[1].date_payment, date(2015, 1, 25))
self.assertEqual(periods[2].date_payment, date(2015, 2, 1))
self.assertEqual(periods[51].date_payment, date(2016, 1, 10))
def test_create_periods_monthly_payment_fifth_day(self):
fy = self.create_fiscal_year(
{
"payment_day": "5",
"date_start": "2015-01-01",
"date_end": "2015-12-31",
"type_id": self.type_fy.id,
}
)
fy.create_periods()
periods = self.get_periods(fy)
self.assertEqual(len(periods), 12)
self.assertEqual(periods[0].date_payment, date(2015, 2, 5))
self.assertEqual(periods[1].date_payment, date(2015, 3, 5))
self.assertEqual(periods[2].date_payment, date(2015, 4, 5))
self.assertEqual(periods[11].date_payment, date(2016, 1, 5))
def test_create_periods_monthly_payment_last_day(self):
fy = self.create_fiscal_year(
{
"payment_day": "0",
"date_start": "2015-01-01",
"date_end": "2015-12-31",
"type_id": self.type_fy.id,
}
)
fy.create_periods()
periods = self.get_periods(fy)
self.assertEqual(len(periods), 12)
self.assertEqual(periods[0].date_payment, date(2015, 1, 31))
self.assertEqual(periods[1].date_payment, date(2015, 2, 28))
self.assertEqual(periods[2].date_payment, date(2015, 3, 31))
self.assertEqual(periods[11].date_payment, date(2015, 12, 31))
def test_create_periods_semi_monthly_payment_fifth_day(self):
fy = self.create_fiscal_year(
{
"payment_day": "5",
"date_start": "2015-01-01",
"date_end": "2015-12-31",
"type_id": self.type_fy.id,
}
)
fy.create_periods()
periods = self.get_periods(fy)
self.assertEqual(len(periods), 12)
self.assertEqual(periods[0].date_payment, date(2015, 2, 5))
self.assertEqual(periods[1].date_payment, date(2015, 3, 5))
self.assertEqual(periods[2].date_payment, date(2015, 4, 5))
self.assertEqual(periods[11].date_payment, date(2016, 1, 5))
def test_create_periods_semi_monthly_payment_last_day(self):
fy = self.create_fiscal_year(
{
"schedule_pay": "semi-monthly",
"payment_day": "0",
"date_start": "2015-03-20",
"date_end": "2016-03-19",
"type_id": self.type_fy.id,
}
)
fy.create_periods()
periods = self.get_periods(fy)
self.assertEqual(len(periods), 24)
self.assertEqual(periods[0].date_payment, date(2015, 4, 3))
self.assertEqual(periods[1].date_payment, date(2015, 4, 19))
self.assertEqual(periods[2].date_payment, date(2015, 5, 4))
self.assertEqual(periods[22].date_payment, date(2016, 3, 5))
self.assertEqual(periods[23].date_payment, date(2016, 3, 19))
def test_cron_create_next_fiscal_year(self):
# if we are in 2024, it should create the periods for 2025
current_year = datetime.now().year
current_fiscal_year = self.fy_model.search(
[
("date_start", "=", f"{current_year}-01-01"),
("date_end", "=", f"{current_year}-12-31"),
],
limit=1,
)
# If 2024 doesn't exist, create it
if not current_fiscal_year:
current_fiscal_year = self.create_fiscal_year(
{
"date_start": f"{current_year}-01-01",
"date_end": f"{current_year}-12-31",
}
)
current_fiscal_year.create_periods()
next_fiscal_year = self.env["hr.fiscalyear"].cron_create_next_fiscal_year()
periods = self.get_periods(next_fiscal_year)
# Ensure the periods are continuous and within the fiscal year dates
for i, period in enumerate(periods):
if i == 0:
self.assertEqual(period.date_start, next_fiscal_year.date_start)
else:
self.assertEqual(
period.date_start, periods[i - 1].date_end + relativedelta(days=1)
)
if i == len(periods) - 1:
self.assertEqual(period.date_end, next_fiscal_year.date_end)
# Check that the first period of next fiscal year starts 1 day after
current_year_periods = self.get_periods(current_fiscal_year)
last_period_current_year = current_year_periods[-1]
first_period_next_year = periods[0]
self.assertEqual(
first_period_next_year.date_start,
last_period_current_year.date_end + relativedelta(days=1),
)
# Check that the first period end is on last of January
self.assertEqual(
first_period_next_year.date_end, datetime(current_year + 1, 1, 31).date()
)

View file

@ -0,0 +1,204 @@
# Copyright 2015 Savoir-faire Linux. All Rights Reserved.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.exceptions import UserError
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT as DF
from . import test_hr_fiscalyear
class PayslipCase(test_hr_fiscalyear.TestHrFiscalyear):
def setUp(self):
result = super(PayslipCase, self).setUp()
self.payslip_obj = self.env["hr.payslip"]
self.run_obj = self.env["hr.payslip.run"]
self.wzd_obj = self.env["hr.payslip.employees"]
user_id = (
self.env["res.users"]
.create(
{
"name": "Test User",
"login": "user",
"email": "test.user@example.com",
}
)
.id
)
resource_id = (
self.env["resource.resource"]
.create(
{
"name": "Test resource",
"resource_type": "user",
"user_id": user_id,
"company_id": self.company.id,
}
)
.id
)
self.employee = self.env["hr.employee"].create(
{
"resource_id": resource_id,
"name": "Employee 1",
}
)
self.company2 = self.env["res.company"].create({"name": "Acme"})
self.type_fy2 = self.create_data_range_type("test_hr_fy", "fy", self.company2)
self.type2 = self.create_data_range_type("test_hr_period", "per", self.company2)
# create Contract
self.contract = self.create_contract("Contract 1", "monthly")
self.contract2 = self.create_contract("Contract 2", "quarterly")
return result
def create_contract(self, name, schedule_pay):
contract_dict = {
"name": name,
"employee_id": self.employee.id,
"wage": 10.0,
"schedule_pay": schedule_pay,
}
return self.env["hr.contract"].create(contract_dict)
def _prepare_payslip_data(
self, date_from, date_to, date_payment, company, run=None
):
data = {
"employee_id": self.employee.id,
"contract_id": self.contract.id,
"date_from": date_from,
"date_to": date_to,
"date_payment": date_payment,
"company_id": company.id,
}
if run:
data.update(payslip_run_id=run.id)
return data
def _prepare_payslip_run_data(self, period):
schedule = self.env["hr.payslip.run"].get_default_schedule(period.company_id.id)
data = {
"name": period.name,
"date_start": period.date_start,
"date_end": period.date_end,
"date_payment": period.date_payment,
"hr_period_id": period.id,
"schedule_pay": schedule,
"company_id": period.company_id.id,
}
return data
def test_payslip(self):
fy = self.create_fiscal_year({"type_id": self.type_fy.id})
fy.create_periods()
periods = self.get_periods(fy)
fy.button_confirm()
self.assertEqual(periods[0].state, "open")
fy.button_set_to_draft()
self.assertEqual(periods[0].state, "draft")
date_from = periods[1].date_start
date_to = periods[1].date_end
move_date = periods[1].date_payment
company = periods[1].company_id
data = self._prepare_payslip_data(date_from, date_to, move_date, company)
payslip = self.payslip_obj.create(data)
payslip.hr_period_id = periods[0]
payslip.onchange_hr_period_id()
self.assertEqual(payslip.date_from, periods[0].date_start)
self.assertEqual(payslip.date_to, periods[0].date_end)
self.assertEqual(payslip.date_payment, periods[0].date_payment)
data = self._prepare_payslip_run_data(periods[0])
run = self.run_obj.create(data)
run.get_payslip_employees_wizard()
run.onchange_period_id()
for pay in run.slip_ids:
self.assertEqual(pay.date_from, periods[0].date_start)
self.assertEqual(pay.date_to, periods[0].date_end)
self.assertEqual(pay.date_payment, periods[0].date_payment)
with self.assertRaises(UserError):
periods[1].button_draft()
for pay in run.slip_ids:
pay.write({"state": "draft"})
with self.assertRaises(UserError):
run.close_payslip_run()
pay.write({"state": "draft"})
pay.action_payslip_done()
run.close_payslip_run()
next_period = fy.search_period(number=periods[0].number + 1)
self.assertEqual(next_period.state, "open")
run.draft_payslip_run()
for pay in run.slip_ids:
self.assertEqual(pay.state, "open")
self.assertEqual(fy.state, "open")
def test_payslip_batch_company(self):
fy = self.create_fiscal_year({"type_id": self.type_fy.id})
fy2 = self.create_fiscal_year(
{
"company_id": self.company2.id,
"date_start": "2016-01-01",
"date_end": "2016-12-31",
"type_id": self.type_fy2.id,
}
)
fy.create_periods()
fy2.create_periods()
periods = self.get_periods(fy)
periods2 = self.get_periods(fy2)
fy.button_confirm()
fy2.button_confirm()
self.assertEqual(periods2[0].state, "open")
date_from = periods[1].date_start
date_to = periods[1].date_end
move_date = periods[1].date_payment
data = self._prepare_payslip_data(date_from, date_to, move_date, self.company)
self.payslip_obj.create(data)
data = self._prepare_payslip_run_data(periods[0])
run = self.run_obj.create(data)
with self.assertRaises(UserError):
run.write({"company_id": self.company2.id})
run.write({"hr_period_id": periods2[0].id, "company_id": self.company2.id})
run.onchange_company_id()
self.assertEqual(run.hr_period_id.date_start.strftime(DF), "2016-01-01")
def test_contract(self):
fy = self.create_fiscal_year(
{
"name": "fy1",
"company_id": self.company.id,
"date_start": "2016-01-01",
"date_end": "2016-12-31",
"schedule_pay": "monthly",
"type_id": self.type_fy.id,
}
)
fy.create_periods()
fy2 = self.create_fiscal_year(
{
"name": "fy2",
"company_id": self.company.id,
"date_start": "2017-01-01",
"date_end": "2017-12-31",
"schedule_pay": "quarterly",
"type_id": self.type_fy.id,
}
)
fy2.create_periods()
periods = self.get_periods(fy)
fy.button_confirm()
fy2.button_confirm()
date_from = periods[1].date_start
date_to = periods[1].date_end
move_date = periods[1].date_payment
run_data = self._prepare_payslip_run_data(periods[1])
run = self.run_obj.create(run_data)
data = self._prepare_payslip_data(
date_from, date_to, move_date, self.company, run
)
payslip = self.payslip_obj.create(data)
self.assertEqual(payslip.hr_period_id, periods[1], "Wrong pay period")
payslip.contract_id = self.contract2
payslip.onchange_contract_period()
period = self.env["hr.period"].get_next_period(self.company.id, "quarterly")
self.assertEqual(payslip.hr_period_id, period)

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_date_range_type_hr_tree" model="ir.ui.view">
<field name="name">date.range.type.hr.tree</field>
<field name="model">date.range.type</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="allow_overlap" />
<field
name="company_id"
groups="base.group_multi_company"
options="{'no_create': True}"
/>
<field name="hr_fiscal_year" />
<field name="hr_period" />
<field name="active" />
</tree>
</field>
</record>
<record id="view_date_range_type_hr_form_view" model="ir.ui.view">
<field name="name">date.range.type.hr.form</field>
<field name="model">date.range.type</field>
<field name="arch" type="xml">
<form string="Daterange Type">
<group col="4">
<field name="name" />
<field name="allow_overlap" />
<field
name="company_id"
groups="base.group_multi_company"
options="{'no_create': True}"
/>
<field name="hr_fiscal_year" />
<field name="hr_period" />
<field name="active" />
</group>
</form>
</field>
</record>
<record id="date_range_type_hr_action" model="ir.actions.act_window">
<field name="name">Period Types</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">date.range.type</field>
<field name="view_mode">tree,form</field>
<field
name="view_ids"
eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('view_date_range_type_hr_tree')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('view_date_range_type_hr_form_view')})]"
/>
<field
name="domain"
>['|', ('hr_period', '=', True), ('hr_fiscal_year', '=', True)]</field>
<field name="context">{}</field>
</record>
<menuitem
action="date_range_type_hr_action"
id="menu_date_range_type_action"
parent="hr_payroll_period.hr_period_configure"
sequence="23"
/>
</odoo>

View file

@ -0,0 +1,163 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Form -->
<record id="view_hr_fiscalyear_form" model="ir.ui.view">
<field name="name">hr.fiscalyear.form</field>
<field name="model">hr.fiscalyear</field>
<field name="arch" type="xml">
<form string="Fiscal Year">
<header>
<button
name="create_periods"
string="Create Periods"
type="object"
class="btn-primary"
states="draft"
/>
<button
name="button_set_to_draft"
string="Set To Draft"
type="object"
states="open"
/>
<button
name="button_confirm"
string="Confirm"
type="object"
class="btn-primary"
states="draft"
/>
<field name="state" widget="statusbar" nolabel="1" />
</header>
<sheet>
<div class="oe_title">
<label for="name" class="oe_edit_only" />
<h1>
<field name="name" placeholder="Fiscal year..." />
</h1>
</div>
<group>
<group>
<field name="schedule_pay" />
<label for="date_start" string="Period" />
<div>
<field
name="date_start"
widget="daterange"
class="oe_inline"
options="{'related_end_date': 'date_end'}"
/>
-
<field
name="date_end"
widget="daterange"
class="oe_inline"
options="{'related_start_date': 'date_start'}"
/>
</div>
</group>
<group>
<field
name="company_id"
groups="base.group_multi_company"
/>
<field name="type_id" domain="[('hr_fiscal_year','=',True)]" />
</group>
<group>
<field
name="payment_day"
attrs="{
'invisible': [('schedule_pay', 'in', ['weekly', 'bi-weekly'])],
'required': [('schedule_pay', 'not in', ['weekly', 'bi-weekly'])],
}"
/>
<newline />
<field
name="payment_weekday"
attrs="{
'invisible': [('schedule_pay', 'not in', ['weekly', 'bi-weekly'])],
'required': [('schedule_pay', 'in', ['weekly', 'bi-weekly'])],
}"
/>
<field
name="payment_week"
attrs="{
'invisible': [('schedule_pay', 'not in', ['weekly', 'bi-weekly'])],
'required': [('schedule_pay', 'in', ['weekly', 'bi-weekly'])],
}"
/>
</group>
</group>
<field colspan="4" name="period_ids" nolabel="1" />
</sheet>
</form>
</field>
</record>
<!-- Tree -->
<record id="view_hr_fiscalyear_tree" model="ir.ui.view">
<field name="name">hr.fiscalyear.tree</field>
<field name="model">hr.fiscalyear</field>
<field name="arch" type="xml">
<tree
decoration-info="state == 'draft'"
decoration-muted="state == 'done'"
name="Fiscalyear"
>
<field name="name" />
<field name="company_id" groups="base.group_multi_company" />
<field name="state" />
</tree>
</field>
</record>
<!-- Search -->
<record id="view_hr_fiscalyear_search" model="ir.ui.view">
<field name="name">hr.fiscalyear.search</field>
<field name="model">hr.fiscalyear</field>
<field name="arch" type="xml">
<search string="Search Fiscalyear">
<field
name="name"
filter_domain="[('name', 'ilike', self)]"
string="Fiscal Year"
/>
<field name="schedule_pay" />
<field name="payment_weekday" />
<field name="payment_day" />
<filter
name="open"
string="Open"
domain="[('state', '=', 'open')]"
icon="terp-camera_test"
/>
<filter
name="closed"
string="Closed"
domain="[('state', '=', 'done')]"
icon="terp-dialog-close"
/>
<field name="state" />
<group expand="0" string="Group By...">
<filter
name="Status"
context="{'group_by': 'state'}"
icon="terp-stock_effects-object-colorize"
/>
</group>
</search>
</field>
</record>
<!-- Action -->
<record id="action_hr_fiscalyear" model="ir.actions.act_window">
<field name="name">Payroll Fiscal Years</field>
<field name="res_model">hr.fiscalyear</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('type_id.hr_fiscal_year','=',True)]</field>
</record>
<!-- Menu -->
<menuitem
id="menu_action_hr_fiscalyear"
action="action_hr_fiscalyear"
parent="hr_payroll_period.hr_period_configure"
sequence="25"
/>
</odoo>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_hr_payslip_by_employees" model="ir.ui.view">
<field name="name">hr_payroll_payslip_employees</field>
<field name="model">hr.payslip.employees</field>
<field name="inherit_id" ref="payroll.view_hr_payslip_by_employees" />
<field name="arch" type="xml">
<field name="employee_ids" position="before">
<field name="company_id" groups="base.group_multi_company" />
<field name="schedule_pay" />
<field
name="employee_ids"
nolabel="1"
groups="!base.group_multi_company"
colspan="2"
/>
</field>
<field name="employee_ids" position="attributes">
<attribute name="colspan">2</attribute>
<attribute name="domain">[
('company_id', '=', company_id)
]</attribute>
<attribute name="groups">base.group_multi_company</attribute>
</field>
</field>
</record>
</odoo>

View file

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Form -->
<record id="hr_payslip_run_form" model="ir.ui.view">
<field name="name">hr.payslip.run.period.form</field>
<field name="model">hr.payslip.run</field>
<field name="inherit_id" ref="payroll.hr_payslip_run_view_form" />
<field name="priority">100</field>
<field name="arch" type="xml">
<field name="struct_id" position="before">
<field name="company_id" invisible="1" />
</field>
<label for="date_start" position="before">
<field
name="hr_period_id"
domain="[
('state', '=', 'open'),
]"
groups="!base.group_multi_company"
/>
<field
name="hr_period_id"
domain="[
('state', '=', 'open'),
('company_id', '=', company_id)
]"
groups="base.group_multi_company"
/>
<field name="schedule_pay" />
<field name="date_payment" required="1" />
</label>
<button
name="%(payroll.action_hr_payslip_by_employees)d"
position="replace"
>
<button
name="get_payslip_employees_wizard"
type="object"
states="draft"
string="Generate Payslips"
class="btn-primary"
/>
</button>
</field>
</record>
<!-- Search -->
<record id="hr_payslip_run_filter" model="ir.ui.view">
<field name="name">hr.payslip.run.period.search</field>
<field name="model">hr.payslip.run</field>
<field name="inherit_id" ref="payroll.hr_payslip_run_view_search" />
<field name="arch" type="xml">
<field name="name" position="after">
<field name="company_id" />
<field name="date_payment" />
<field name="schedule_pay" />
</field>
<search position="inside">
<group string="Group By...">
<filter
string="Company"
name="company_id"
groups="base.group_multi_company"
context="{'group_by':'company_id'}"
/>
<filter
string="Scheduled Pay"
name="schedule_pay"
context="{'group_by':'schedule_pay'}"
/>
<filter
string="Payment Date"
name="date_payment"
context="{'group_by':'date_payment'}"
/>
</group>
</search>
</field>
</record>
<!-- Tree -->
<record id="hr_payslip_run_tree" model="ir.ui.view">
<field name="name">hr.payslip.run.period.tree</field>
<field name="model">hr.payslip.run</field>
<field name="inherit_id" ref="payroll.hr_payslip_run_view_tree" />
<field name="arch" type="xml">
<field name="date_end" position="after">
<field name="date_payment" />
<field name="schedule_pay" />
<field name="company_id" groups="base.group_multi_company" />
</field>
</field>
</record>
</odoo>

View file

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Form -->
<record id="view_hr_payslip_form" model="ir.ui.view">
<field name="name">hr.payslip.period.form</field>
<field name="model">hr.payslip</field>
<field name="inherit_id" ref="payroll.hr_payslip_view_form" />
<field name="arch" type="xml">
<field name="date_from" position="before">
<field
name="hr_period_id"
domain="[
('state', '=', 'open'),
]"
groups="!base.group_multi_company"
/>
<field
name="hr_period_id"
domain="[
('state', '=', 'open'),
('company_id', '=', company_id)
]"
groups="base.group_multi_company"
/>
</field>
<field name="name" position="after">
<field name="date_payment" required="1" />
</field>
</field>
</record>
<!-- Tree -->
<record id="view_hr_payslip_tree" model="ir.ui.view">
<field name="name">hr.payslip.period.tree</field>
<field name="model">hr.payslip</field>
<field name="inherit_id" ref="payroll.hr_payslip_view_tree" />
<field name="arch" type="xml">
<field name="date_to" position="after">
<field name="date_payment" />
</field>
</field>
</record>
<!-- Search -->
<record id="view_hr_payslip_filter" model="ir.ui.view">
<field name="name">hr.payslip.period.select</field>
<field name="model">hr.payslip</field>
<field name="inherit_id" ref="payroll.hr_payslip_view_search" />
<field name="arch" type="xml">
<field name="date_from" position="after">
<field name="date_payment" />
</field>
<filter name="employee_id" position="after">
<filter
string="Payment Date"
name="date_payment"
context="{'group_by':'date_payment'}"
/>
</filter>
</field>
</record>
</odoo>

View file

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Form -->
<record id="view_hr_period_form" model="ir.ui.view">
<field name="name">hr.period.form</field>
<field name="model">hr.period</field>
<field name="arch" type="xml">
<form string="Payroll Periods">
<header>
<button
name="button_open"
string="Open Period"
type="object"
states="draft"
/>
<button
name="button_re_open"
string="Re-Open Period"
type="object"
states="done"
/>
<button
name="button_close"
string="Close Period"
type="object"
states="open"
/>
<field
name="state"
widget="statusbar"
statusbar_visible="draft,open,done"
/>
</header>
<sheet>
<group>
<group>
<field name="name" />
<field name="fiscalyear_id" widget="selection" />
<label for="date_start" string="Duration" />
<div>
<field
name="date_start"
nolabel="1"
class="oe_inline"
/> -
<field name="date_end" nolabel="1" class="oe_inline" />
</div>
<field name="date_payment" />
</group>
<group>
<field name="schedule_pay" />
<field name="type_id" domain="[('hr_period','=',True)]" />
<field name="number" />
<field
name="company_id"
widget="selection"
groups="base.group_multi_company"
/>
</group>
</group>
<separator string="Payslips" />
<newline />
<field name="payslip_ids" nolabel="1" />
</sheet>
</form>
</field>
</record>
<!-- Tree -->
<record id="view_hr_period_tree" model="ir.ui.view">
<field name="name">hr.period.tree</field>
<field name="model">hr.period</field>
<field name="arch" type="xml">
<tree
decoration-info="state == 'open'"
decoration-muted="state == 'done'"
name="Payroll Period"
>
<field name="name" />
<field name="date_start" />
<field name="date_end" />
<field name="date_payment" />
<field name="company_id" groups="base.group_multi_company" />
<field name="state" />
</tree>
</field>
</record>
<!-- Search -->
<record id="view_hr_period_search" model="ir.ui.view">
<field name="name">hr.period.search</field>
<field name="model">hr.period</field>
<field name="arch" type="xml">
<search string="Search Period">
<field
name="name"
filter_domain="['|', ('name', 'ilike', self), ('number', 'ilike', self)]"
string="Period"
/>
<field name="schedule_pay" />
<field name="fiscalyear_id" />
<field name="date_payment" />
<field name="state" />
<group expand="0" string="Group By...">
<filter
string="To Close"
name="draft"
domain="[('state', '=', 'draft')]"
icon="terp-dialog-close"
/>
</group>
</search>
</field>
</record>
<!-- Action -->
<record id="action_hr_period" model="ir.actions.act_window">
<field name="name">Payroll Periods</field>
<field name="res_model">hr.period</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('type_id.hr_period', '=', True)]</field>
<field
name="context"
>{'search_default_state': 'open', 'search_default_schedule_pay': 'monthly'}</field>
</record>
<!-- Menu -->
<menuitem
id="menu_action_hr_period"
action="action_hr_period"
parent="hr_payroll_period.hr_period_configure"
sequence="26"
/>
</odoo>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<menuitem
id="hr_period_configure"
parent="payroll.payroll_menu_configuration"
name="Fiscal Years and Periods"
groups="payroll.group_payroll_manager"
sequence="50"
/>
</odoo>

Some files were not shown because too many files have changed in this diff Show more