Initial commit: OCA Technical packages (595 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:03 +02:00
commit 2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions

View file

@ -0,0 +1,44 @@
# HR Contract Multi Jobs
Odoo addon: hr_contract_multi_job
## Installation
```bash
pip install odoo-bringout-oca-hr-hr_contract_multi_job
```
## Dependencies
This addon depends on:
- hr_contract
## Manifest Information
- **Name**: HR Contract Multi Jobs
- **Version**: 16.0.1.0.0
- **Category**: Generic Modules/Human Resources
- **License**: AGPL-3
- **Installable**: True
## Source
Based on [OCA/hr](https://github.com/OCA/hr) branch 16.0, addon `hr_contract_multi_job`.
## 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
- 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_contract_multi_job Module - hr_contract_multi_job
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_contract_multi_job. 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,5 @@
# Dependencies
This addon depends on:
- [hr_contract](../../odoo-bringout-oca-ocb-hr_contract)

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_contract_multi_job or install in UI.

View file

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

View file

@ -0,0 +1,14 @@
# Models
Detected core models and extensions in hr_contract_multi_job.
```mermaid
classDiagram
class hr_contract_job
class hr_contract
class hr_job
```
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_contract_multi_job. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon hr_contract_multi_job
- 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_contract_multi_job.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../hr_contract_multi_job/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_contract_multi_job/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_contract_multi_job
```

View file

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

View file

@ -0,0 +1,93 @@
======================
HR Contract Multi Jobs
======================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:ca3d6b38447c0cf22c9cd6920072b11ae09fb7ebca227fe91d7896c93301fb42
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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%2Fhr-lightgray.png?logo=github
:target: https://github.com/OCA/hr/tree/16.0/hr_contract_multi_job
:alt: OCA/hr
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/hr-16-0/hr-16-0-hr_contract_multi_job
: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/hr&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module was written to extend the functionality of employees contracts
to support multiple jobs of the employee assigned on the same contract.
An example is a construction worker who makes different types of jobs
for the same company like bricklaying, electricity, carpentry.
Also in restaurants, a waiter can also work as a barman.
**Table of contents**
.. contents::
:local:
Usage
=====
On every employee contract you can set multiple jobs, and mark one of the job
as the main job (the main job will be written afterwards in the job_id field).
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/hr/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/hr/issues/new?body=module:%20hr_contract_multi_job%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
* Fekete Mihai (Forest and Biomass Services Romania)
Contributors
~~~~~~~~~~~~
* David Dufresne <david.dufresne@savoirfairelinux.com>
* Pierre Lamarche <pierre.lamarche@savoirfairelinux.com>
* Fekete Mihai <feketemihai@gmail.com>
* Serpent Consulting Services Pvt. Ltd. <support@serpentcs.com>
* Pimolnat Suntian <pimolnats@ecosoft.co.th>
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.
This module is part of the `OCA/hr <https://github.com/OCA/hr/tree/16.0/hr_contract_multi_job>`_ 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,17 @@
# Copyright 2014 Savoir-faire Linux. All Rights Reserved.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "HR Contract Multi Jobs",
"version": "16.0.1.0.0",
"license": "AGPL-3",
"category": "Generic Modules/Human Resources",
"author": "Savoir-faire Linux, "
"Fekete Mihai (Forest and Biomass Services Romania), "
"Odoo Community Association (OCA)",
"website": "https://github.com/OCA/hr",
"depends": ["hr_contract"],
"data": ["security/ir.model.access.csv", "views/hr_contract_view.xml"],
"installable": True,
}

View file

@ -0,0 +1,117 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_contract_multi_jobs
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: hr (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-30 05:19+0000\n"
"PO-Revision-Date: 2015-07-27 23:43+0000\n"
"Last-Translator: <>\n"
"Language-Team: Arabic (http://www.transifex.com/oca/OCA-hr-8-0/language/"
"ar/)\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__contract_id
msgid "Contract"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_job__contract_job_ids
msgid "Contract Jobs"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_uid
msgid "Created by"
msgstr "انشئ من قبل"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_date
msgid "Created on"
msgstr "وقت الانشاء"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__display_name
msgid "Display Name"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract
msgid "Employee Contract"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__id
msgid "ID"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__job_id
msgid "Job"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__name
msgid "Job Name"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_job
msgid "Job Position"
msgstr ""
#. module: hr_contract_multi_job
#: model_terms:ir.ui.view,arch_db:hr_contract_multi_job.hr_contract_view_form
msgid "Job Positions"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__job_id
msgid "Job Title"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__contract_job_ids
msgid "Jobs"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job____last_update
#, fuzzy
msgid "Last Modified on"
msgstr "اخر تعديل في"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_uid
msgid "Last Updated by"
msgstr "اخر تعديل من قبل"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_date
msgid "Last Updated on"
msgstr "اخر تعديل في"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__is_main_job
msgid "Main Job Position"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract_job
msgid "Relational object between contract and job"
msgstr ""
#. module: hr_contract_multi_job
#: code:addons/hr_contract_multi_job/models/hr_contract.py:0
#, python-format
msgid "You must assign one and only one job position as main job position."
msgstr ""

View file

@ -0,0 +1,107 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_contract_multi_job
#
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_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__contract_id
msgid "Contract"
msgstr "Ugovor"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_job__contract_job_ids
msgid "Contract Jobs"
msgstr "Poslovi ugovora"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__id
msgid "ID"
msgstr "ID"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__job_id
msgid "Job"
msgstr "Zadatak"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__name
msgid "Job Name"
msgstr "Naziv posla"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_job
msgid "Job Position"
msgstr "Radno mjesto"
#. module: hr_contract_multi_job
#: model_terms:ir.ui.view,arch_db:hr_contract_multi_job.hr_contract_view_form
msgid "Job Positions"
msgstr "Radno mjesto"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__job_id
msgid "Job Title"
msgstr "Naziv radnog mjesta"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__contract_job_ids
msgid "Jobs"
msgstr "Zadaci"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__is_main_job
msgid "Main Job Position"
msgstr "Glavni radni položaj"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract_job
msgid "Relational object between contract and job"
msgstr "Relacijski objekt između ugovora i posla"
#. module: hr_contract_multi_job
#. odoo-python
#: code:addons/hr_contract_multi_job/models/hr_contract.py:0
#, python-format
msgid "You must assign one and only one job position as main job position."
msgstr "Morate dodijeliti jedan i samo jedan radni položaj kao glavni radni položaj."

View file

@ -0,0 +1,119 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_contract_multi_jobs
#
# Translators:
# Rudolf Schnapka <rs@techno-flex.de>, 2016
# Thomas A. Jaeger, 2015
# Thomas A. Jaeger, 2015
msgid ""
msgstr ""
"Project-Id-Version: hr (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-30 02:40+0000\n"
"PO-Revision-Date: 2019-06-28 13:42+0000\n"
"Last-Translator: Maria Sparenberg <maria.sparenberg@gmx.net>\n"
"Language-Team: German (http://www.transifex.com/oca/OCA-hr-8-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"
"X-Generator: Weblate 3.6.1\n"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__contract_id
msgid "Contract"
msgstr "Vertrag"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_job__contract_job_ids
msgid "Contract Jobs"
msgstr "Arbeitsverträge"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_uid
msgid "Created by"
msgstr "Erstellt von"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_date
msgid "Created on"
msgstr "Angelegt am"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__display_name
msgid "Display Name"
msgstr "Anzeigename"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract
msgid "Employee Contract"
msgstr "Vertrag"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__id
msgid "ID"
msgstr "ID"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__job_id
msgid "Job"
msgstr "Arbeitsplatz"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__name
msgid "Job Name"
msgstr "Berufsbezeichnung"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_job
msgid "Job Position"
msgstr "Arbeitsplatz"
#. module: hr_contract_multi_job
#: model_terms:ir.ui.view,arch_db:hr_contract_multi_job.hr_contract_view_form
msgid "Job Positions"
msgstr "Arbeitsstellen"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__job_id
msgid "Job Title"
msgstr "Berufsbezeichnung"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__contract_job_ids
msgid "Jobs"
msgstr "Berufe"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job____last_update
msgid "Last Modified on"
msgstr "Zuletzt geändert am"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_uid
msgid "Last Updated by"
msgstr "Zuletzt aktualisiert durch"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_date
msgid "Last Updated on"
msgstr "Zuletzt aktualisiert am"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__is_main_job
msgid "Main Job Position"
msgstr "Hauptarbeitsplatzposition"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract_job
msgid "Relational object between contract and job"
msgstr "Verknüpfungsobjekt zwischen Vertrag und Arbeitsplatz"
#. module: hr_contract_multi_job
#: code:addons/hr_contract_multi_job/models/hr_contract.py:0
#, python-format
msgid "You must assign one and only one job position as main job position."
msgstr "Bitte genau eine Position als Haupttätigkeit hinterlegen."

View file

@ -0,0 +1,119 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_contract_multi_jobs
#
# Translators:
# Antonio Trueba, 2016
# Antonio Trueba, 2016
msgid ""
msgstr ""
"Project-Id-Version: hr (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-26 02:40+0000\n"
"PO-Revision-Date: 2023-10-09 07:38+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
"Language-Team: Spanish (http://www.transifex.com/oca/OCA-hr-8-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_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__contract_id
msgid "Contract"
msgstr "Contrato"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_job__contract_job_ids
msgid "Contract Jobs"
msgstr "Contratos de trabajo"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_date
msgid "Created on"
msgstr "Creado el"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__display_name
msgid "Display Name"
msgstr "Mostrar nombre"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract
msgid "Employee Contract"
msgstr "Contrato de empleado"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__id
msgid "ID"
msgstr "ID"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__job_id
msgid "Job"
msgstr "Puesto"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__name
msgid "Job Name"
msgstr "Nombre de trabajo"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_job
msgid "Job Position"
msgstr "Puesto de trabajo"
#. module: hr_contract_multi_job
#: model_terms:ir.ui.view,arch_db:hr_contract_multi_job.hr_contract_view_form
msgid "Job Positions"
msgstr "Posiciones de trabajo"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__job_id
msgid "Job Title"
msgstr "Título del trabajo"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__contract_job_ids
msgid "Jobs"
msgstr "Trabajos"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job____last_update
msgid "Last Modified on"
msgstr "Última modificación el"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_uid
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_date
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__is_main_job
msgid "Main Job Position"
msgstr "Posición de trabajo principal"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract_job
msgid "Relational object between contract and job"
msgstr "Modelo usado para relacionar contratos y puestos de trabajo"
#. module: hr_contract_multi_job
#: code:addons/hr_contract_multi_job/models/hr_contract.py:0
#, python-format
msgid "You must assign one and only one job position as main job position."
msgstr ""
"Debe asignar un solo puesto de trabajo como puesto de trabajo principal."

View file

@ -0,0 +1,117 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_contract_multi_jobs
#
# Translators:
# Jarmo Kortetjärvi <jarmo.kortetjarvi@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: hr (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-30 02:40+0000\n"
"PO-Revision-Date: 2016-04-28 14:58+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Finnish (http://www.transifex.com/oca/OCA-hr-8-0/language/"
"fi/)\n"
"Language: fi\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_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__contract_id
msgid "Contract"
msgstr "Sopimus"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_job__contract_job_ids
msgid "Contract Jobs"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_uid
msgid "Created by"
msgstr "Luonut"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_date
msgid "Created on"
msgstr "Luotu"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__display_name
msgid "Display Name"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract
#, fuzzy
msgid "Employee Contract"
msgstr "Sopimus"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__id
msgid "ID"
msgstr "ID"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__job_id
msgid "Job"
msgstr "Työ"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__name
msgid "Job Name"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_job
msgid "Job Position"
msgstr ""
#. module: hr_contract_multi_job
#: model_terms:ir.ui.view,arch_db:hr_contract_multi_job.hr_contract_view_form
msgid "Job Positions"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__job_id
msgid "Job Title"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__contract_job_ids
msgid "Jobs"
msgstr "Työt"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job____last_update
msgid "Last Modified on"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_uid
msgid "Last Updated by"
msgstr "Viimeksi päivittänyt"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_date
msgid "Last Updated on"
msgstr "Viimeksi päivitetty"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__is_main_job
msgid "Main Job Position"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract_job
msgid "Relational object between contract and job"
msgstr ""
#. module: hr_contract_multi_job
#: code:addons/hr_contract_multi_job/models/hr_contract.py:0
#, python-format
msgid "You must assign one and only one job position as main job position."
msgstr ""

View file

@ -0,0 +1,117 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_contract_multi_jobs
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: hr (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-30 02:40+0000\n"
"PO-Revision-Date: 2019-05-23 20:19+0000\n"
"Last-Translator: Kévin Allard <kallard@efficom-lille.com>\n"
"Language-Team: French (http://www.transifex.com/oca/OCA-hr-8-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.6.1\n"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__contract_id
msgid "Contract"
msgstr "Contrat"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_job__contract_job_ids
msgid "Contract Jobs"
msgstr "Postes de contrat"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_uid
msgid "Created by"
msgstr "Créé par"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_date
msgid "Created on"
msgstr "Créé le"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__display_name
msgid "Display Name"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract
#, fuzzy
msgid "Employee Contract"
msgstr "Contrat"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__id
msgid "ID"
msgstr "ID"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__job_id
msgid "Job"
msgstr "Poste"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__name
msgid "Job Name"
msgstr "Nom du poste"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_job
msgid "Job Position"
msgstr "Poste"
#. module: hr_contract_multi_job
#: model_terms:ir.ui.view,arch_db:hr_contract_multi_job.hr_contract_view_form
msgid "Job Positions"
msgstr "Postes"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__job_id
msgid "Job Title"
msgstr "Titre du poste"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__contract_job_ids
msgid "Jobs"
msgstr "Postes"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_uid
msgid "Last Updated by"
msgstr "Dernière modification par"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__is_main_job
msgid "Main Job Position"
msgstr "Poste Principal"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract_job
msgid "Relational object between contract and job"
msgstr "Relation entre un contrat et un poste"
#. module: hr_contract_multi_job
#: code:addons/hr_contract_multi_job/models/hr_contract.py:0
#, python-format
msgid "You must assign one and only one job position as main job position."
msgstr "Vous devez indiquer un poste comme étant le poste principal."

View file

@ -0,0 +1,107 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_contract_multi_job
#
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_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__contract_id
msgid "Contract"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_job__contract_job_ids
msgid "Contract Jobs"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_uid
msgid "Created by"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_date
msgid "Created on"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__display_name
msgid "Display Name"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__id
msgid "ID"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__job_id
msgid "Job"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__name
msgid "Job Name"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_job
msgid "Job Position"
msgstr ""
#. module: hr_contract_multi_job
#: model_terms:ir.ui.view,arch_db:hr_contract_multi_job.hr_contract_view_form
msgid "Job Positions"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__job_id
msgid "Job Title"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__contract_job_ids
msgid "Jobs"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job____last_update
msgid "Last Modified on"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_uid
msgid "Last Updated by"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_date
msgid "Last Updated on"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__is_main_job
msgid "Main Job Position"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract_job
msgid "Relational object between contract and job"
msgstr ""
#. module: hr_contract_multi_job
#. odoo-python
#: code:addons/hr_contract_multi_job/models/hr_contract.py:0
#, python-format
msgid "You must assign one and only one job position as main job position."
msgstr ""

View file

@ -0,0 +1,119 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_contract_multi_jobs
#
# Translators:
# Paolo Valier, 2016
msgid ""
msgstr ""
"Project-Id-Version: hr (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-03-12 12:02+0000\n"
"PO-Revision-Date: 2023-05-17 14:34+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: Italian (http://www.transifex.com/oca/OCA-hr-8-0/language/"
"it/)\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.14.1\n"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__contract_id
msgid "Contract"
msgstr "Contratto"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_job__contract_job_ids
msgid "Contract Jobs"
msgstr "Lavori a contratto"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_date
msgid "Created on"
msgstr "Creato il"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract
msgid "Employee Contract"
msgstr "Contratto dipendente"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__id
msgid "ID"
msgstr "ID"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__job_id
msgid "Job"
msgstr "Lavoro"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__name
msgid "Job Name"
msgstr "Nome lavoro"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_job
msgid "Job Position"
msgstr "Posizione lavorativa"
#. module: hr_contract_multi_job
#: model_terms:ir.ui.view,arch_db:hr_contract_multi_job.hr_contract_view_form
msgid "Job Positions"
msgstr "Posizioni lavorative"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__job_id
msgid "Job Title"
msgstr "Titolo professionale"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__contract_job_ids
msgid "Jobs"
msgstr "Lavori"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__is_main_job
msgid "Main Job Position"
msgstr "Posizione lavorativa principale"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract_job
msgid "Relational object between contract and job"
msgstr "Oggetto di relazione tra contratto e lavoro"
#. module: hr_contract_multi_job
#: code:addons/hr_contract_multi_job/models/hr_contract.py:0
#, python-format
msgid "You must assign one and only one job position as main job position."
msgstr ""
"Bisogna assegnare una e una sola posizione lavorativa come posizione "
"lavorativa principale."

View file

@ -0,0 +1,116 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_contract_multi_jobs
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: hr (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-03-11 01:48+0000\n"
"PO-Revision-Date: 2016-03-08 03:18+0000\n"
"Last-Translator: danimaribeiro <danimaribeiro@gmail.com>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-hr-8-0/"
"language/pt_BR/)\n"
"Language: pt_BR\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_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__contract_id
msgid "Contract"
msgstr "Contrato"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_job__contract_job_ids
msgid "Contract Jobs"
msgstr "Contrato de Trabalho"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_uid
msgid "Created by"
msgstr "Criado por"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_date
msgid "Created on"
msgstr "Criado em"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__display_name
msgid "Display Name"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract
#, fuzzy
msgid "Employee Contract"
msgstr "Contrato"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__id
msgid "ID"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__job_id
msgid "Job"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__name
msgid "Job Name"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_job
msgid "Job Position"
msgstr "Cargo"
#. module: hr_contract_multi_job
#: model_terms:ir.ui.view,arch_db:hr_contract_multi_job.hr_contract_view_form
msgid "Job Positions"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__job_id
msgid "Job Title"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__contract_job_ids
msgid "Jobs"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job____last_update
msgid "Last Modified on"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_uid
msgid "Last Updated by"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_date
msgid "Last Updated on"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__is_main_job
msgid "Main Job Position"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract_job
msgid "Relational object between contract and job"
msgstr ""
#. module: hr_contract_multi_job
#: code:addons/hr_contract_multi_job/models/hr_contract.py:0
#, python-format
msgid "You must assign one and only one job position as main job position."
msgstr ""

View file

@ -0,0 +1,117 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_contract_multi_jobs
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: hr (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-30 02:40+0000\n"
"PO-Revision-Date: 2016-04-28 14:58+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Romanian (http://www.transifex.com/oca/OCA-hr-8-0/language/"
"ro/)\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
"2:1));\n"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__contract_id
msgid "Contract"
msgstr "Contract"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_job__contract_job_ids
msgid "Contract Jobs"
msgstr "Funcții"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_uid
msgid "Created by"
msgstr "Creeat de către"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_date
msgid "Created on"
msgstr "Creeat în"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__display_name
msgid "Display Name"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract
#, fuzzy
msgid "Employee Contract"
msgstr "Contract"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__id
msgid "ID"
msgstr "ID"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__job_id
msgid "Job"
msgstr "Funcție"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__name
msgid "Job Name"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_job
msgid "Job Position"
msgstr "Funcție"
#. module: hr_contract_multi_job
#: model_terms:ir.ui.view,arch_db:hr_contract_multi_job.hr_contract_view_form
msgid "Job Positions"
msgstr "Funcții"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__job_id
msgid "Job Title"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__contract_job_ids
msgid "Jobs"
msgstr "Funcții"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job____last_update
msgid "Last Modified on"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_uid
msgid "Last Updated by"
msgstr "Ultima actualizare de către"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_date
msgid "Last Updated on"
msgstr "Ultima actualizare în"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__is_main_job
msgid "Main Job Position"
msgstr "Funcție Principală"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract_job
msgid "Relational object between contract and job"
msgstr "Obiect relaționar între Contracte și Funcții"
#. module: hr_contract_multi_job
#: code:addons/hr_contract_multi_job/models/hr_contract.py:0
#, python-format
msgid "You must assign one and only one job position as main job position."
msgstr ""

View file

@ -0,0 +1,118 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_contract_multi_jobs
#
# Translators:
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015
msgid ""
msgstr ""
"Project-Id-Version: hr (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-30 02:40+0000\n"
"PO-Revision-Date: 2016-04-30 06:15+0000\n"
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-hr-8-0/language/"
"sl/)\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
"%100==4 ? 2 : 3);\n"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__contract_id
msgid "Contract"
msgstr "Pogodba"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_job__contract_job_ids
msgid "Contract Jobs"
msgstr "Pogodbena mesta"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_uid
msgid "Created by"
msgstr "Ustvaril"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__create_date
msgid "Created on"
msgstr "Ustvarjeno"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__display_name
msgid "Display Name"
msgstr "Prikazni naziv"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract
#, fuzzy
msgid "Employee Contract"
msgstr "Pogodba"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__id
msgid "ID"
msgstr "ID"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__job_id
msgid "Job"
msgstr "Zaposlitev"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__name
msgid "Job Name"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_job
msgid "Job Position"
msgstr "Delovno mesto"
#. module: hr_contract_multi_job
#: model_terms:ir.ui.view,arch_db:hr_contract_multi_job.hr_contract_view_form
msgid "Job Positions"
msgstr "Delovna mesta"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__job_id
msgid "Job Title"
msgstr ""
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract__contract_job_ids
msgid "Jobs"
msgstr "Zaposlitve"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job____last_update
msgid "Last Modified on"
msgstr "Zadnjič spremenjeno"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_uid
msgid "Last Updated by"
msgstr "Zadnjič posodobil"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__write_date
msgid "Last Updated on"
msgstr "Zadnjič posodobljeno"
#. module: hr_contract_multi_job
#: model:ir.model.fields,field_description:hr_contract_multi_job.field_hr_contract_job__is_main_job
msgid "Main Job Position"
msgstr "Glavno delovno mesto"
#. module: hr_contract_multi_job
#: model:ir.model,name:hr_contract_multi_job.model_hr_contract_job
msgid "Relational object between contract and job"
msgstr "Relacijski objekt med pogodbo in pogodbenim mestom"
#. module: hr_contract_multi_job
#: code:addons/hr_contract_multi_job/models/hr_contract.py:0
#, python-format
msgid "You must assign one and only one job position as main job position."
msgstr "Kot glavno delovno mesto morate dodeliti le eno delovno mesto"

View file

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

View file

@ -0,0 +1,46 @@
# Copyright 2014 Savoir-faire Linux. All Rights Reserved.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import _, api, fields, models
from odoo.exceptions import UserError
class HrContract(models.Model):
_inherit = "hr.contract"
contract_job_ids = fields.One2many("hr.contract.job", "contract_id", string="Jobs")
# Modify the job_id field so that it points to the main job
job_id = fields.Many2one(
"hr.job", string="Job Title", compute="_compute_main_job_position", store=True
)
@api.depends("contract_job_ids.is_main_job")
def _compute_main_job_position(self):
"""
Get the main job position from the field contract_job_ids which
contains one and only one record with field is_main_job == True
"""
for contract in self:
main_job = contract.contract_job_ids.filtered("is_main_job").mapped(
"job_id"
)
if main_job and len(main_job) == 1:
contract.job_id = main_job
else:
contract.job_id = False
@api.constrains("contract_job_ids")
def _check_one_main_job(self):
# if the contract has no job assigned, a main job
# is not required. Otherwise, one main job assigned is
# required.
for contract in self.filtered("contract_job_ids"):
main_jobs = contract.contract_job_ids.filtered("is_main_job")
if len(main_jobs) != 1:
raise UserError(
_(
"You must assign one and only one job position "
"as main job position."
)
)

View file

@ -0,0 +1,22 @@
# Copyright 2014 Savoir-faire Linux. All Rights Reserved.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class HrContractJob(models.Model):
"""
An instance of a job position for an employee's contract.
This model may look trivial for now, but the purpose is that other modules
add fields to it, e.g. a salary class or a wage scale. These are fields
that depend on both the contract and the job position.
"""
_name = "hr.contract.job"
_description = "Relational object between contract and job"
name = fields.Char(string="Job Name", related="job_id.name", index=True)
job_id = fields.Many2one("hr.job", required=True, ondelete="cascade")
contract_id = fields.Many2one("hr.contract", required=True, ondelete="cascade")
is_main_job = fields.Boolean(string="Main Job Position")

View file

@ -0,0 +1,12 @@
# Copyright 2014 Savoir-faire Linux. All Rights Reserved.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class HrJob(models.Model):
_inherit = "hr.job"
contract_job_ids = fields.One2many(
"hr.contract.job", "job_id", string="Contract Jobs"
)

View file

@ -0,0 +1,5 @@
* David Dufresne <david.dufresne@savoirfairelinux.com>
* Pierre Lamarche <pierre.lamarche@savoirfairelinux.com>
* Fekete Mihai <feketemihai@gmail.com>
* Serpent Consulting Services Pvt. Ltd. <support@serpentcs.com>
* Pimolnat Suntian <pimolnats@ecosoft.co.th>

View file

@ -0,0 +1,7 @@
This module was written to extend the functionality of employees contracts
to support multiple jobs of the employee assigned on the same contract.
An example is a construction worker who makes different types of jobs
for the same company like bricklaying, electricity, carpentry.
Also in restaurants, a waiter can also work as a barman.

View file

@ -0,0 +1,2 @@
On every employee contract you can set multiple jobs, and mark one of the job
as the main job (the main job will be written afterwards in the job_id field).

View file

@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_contract_job_manager,hr.contract.job.manager,model_hr_contract_job,hr.group_hr_manager,1,1,1,1
access_hr_contract_job_user,hr.contract.job.user,model_hr_contract_job,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_contract_job_manager hr.contract.job.manager model_hr_contract_job hr.group_hr_manager 1 1 1 1
3 access_hr_contract_job_user hr.contract.job.user model_hr_contract_job base.group_user 1 0 0 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

View file

@ -0,0 +1,438 @@
<!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 Contract Multi Jobs</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-contract-multi-jobs">
<h1 class="title">HR Contract Multi Jobs</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:ca3d6b38447c0cf22c9cd6920072b11ae09fb7ebca227fe91d7896c93301fb42
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<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/hr/tree/16.0/hr_contract_multi_job"><img alt="OCA/hr" src="https://img.shields.io/badge/github-OCA%2Fhr-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/hr-16-0/hr-16-0-hr_contract_multi_job"><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/hr&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 was written to extend the functionality of employees contracts
to support multiple jobs of the employee assigned on the same contract.</p>
<p>An example is a construction worker who makes different types of jobs
for the same company like bricklaying, electricity, carpentry.</p>
<p>Also in restaurants, a waiter can also work as a barman.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
<p>On every employee contract you can set multiple jobs, and mark one of the job
as the main job (the main job will be written afterwards in the job_id field).</p>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/hr/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/hr/issues/new?body=module:%20hr_contract_multi_job%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-3">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-4">Authors</a></h2>
<ul class="simple">
<li>Savoir-faire Linux</li>
<li>Fekete Mihai (Forest and Biomass Services Romania)</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-5">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>Pierre Lamarche &lt;<a class="reference external" href="mailto:pierre.lamarche&#64;savoirfairelinux.com">pierre.lamarche&#64;savoirfairelinux.com</a>&gt;</li>
<li>Fekete Mihai &lt;<a class="reference external" href="mailto:feketemihai&#64;gmail.com">feketemihai&#64;gmail.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>Pimolnat Suntian &lt;<a class="reference external" href="mailto:pimolnats&#64;ecosoft.co.th">pimolnats&#64;ecosoft.co.th</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-6">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>This module is part of the <a class="reference external" href="https://github.com/OCA/hr/tree/16.0/hr_contract_multi_job">OCA/hr</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,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import test_hr_contract_multi_jobs

View file

@ -0,0 +1,83 @@
# Copyright 2014 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.tests.common import TransactionCase
class TestContractMultiJob(TransactionCase):
def setUp(self):
super(TestContractMultiJob, self).setUp()
self.employee_model = self.env["hr.employee"]
self.user_model = self.env["res.users"]
self.contract_model = self.env["hr.contract"]
self.job_model = self.env["hr.job"]
# Create an employee
self.employee_id = self.employee_model.create({"name": "Employee 1"})
# Create 2 jobs
self.job_id = self.job_model.create({"name": "Job 1"})
self.job_2_id = self.job_model.create({"name": "Job 2"})
# Create a contract
self.contract_id = self.contract_model.create(
{"employee_id": self.employee_id.id, "name": "Contract 1", "wage": 50000}
)
def test_no_main_jobs(self):
"""
Validate the _check_one_main_job method
when contract has no assigned job
and check job_id is False.
"""
self.contract_id.write({"contract_job_ids": []})
self.assertFalse(self.contract_id.job_id is False)
def test_one_main_jobs(self):
"""
Validate the _check_one_main_job method
when contract has one assigned job
and check is the job_id is set.
"""
self.contract_id.write(
{
"contract_job_ids": [
(0, 0, {"job_id": self.job_id.id, "is_main_job": True})
]
}
)
self.assertEqual(self.contract_id.job_id.id, self.job_id.id)
def test_two_contract_jobs_one_main_job(self):
"""
Validate the _check_one_main_job method
when contract has two assigned jobs
and check is the job_id is set as main job.
"""
self.contract_id.write(
{
"contract_job_ids": [
(0, 0, {"job_id": self.job_id.id, "is_main_job": True}),
(0, 0, {"job_id": self.job_2_id.id, "is_main_job": False}),
]
}
)
self.assertEqual(self.contract_id.job_id.id, self.job_id.id)
def test_two_contract_jobs_two_main_job(self):
"""
Validate the _check_one_main_job method
when contract has two assigned jobs
and raise error since both are set as main jobs.
"""
with self.assertRaises(UserError):
self.contract_id.write(
{
"contract_job_ids": [
(0, 0, {"job_id": self.job_id.id, "is_main_job": True}),
(0, 0, {"job_id": self.job_2_id.id, "is_main_job": True}),
]
}
)

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Inherited Contract view -->
<record id="hr_contract_view_form" model="ir.ui.view">
<field name="name">hr.contract.view.form</field>
<field name="model">hr.contract</field>
<field name="inherit_id" ref="hr_contract.hr_contract_view_form" />
<field name="arch" type="xml">
<field name="job_id" position="attributes">
<attribute name="readonly">1</attribute>
</field>
<group name="top_info_right" position="after">
<group string="Job Positions" name="group_contract">
<field name="contract_job_ids">
<tree editable="bottom">
<field name="job_id" />
<field name="is_main_job" />
</tree>
</field>
</group>
</group>
</field>
</record>
</odoo>

View file

@ -0,0 +1,42 @@
[project]
name = "odoo-bringout-oca-hr-hr_contract_multi_job"
version = "16.0.0"
description = "HR Contract Multi Jobs - Odoo addon"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-hr-hr_contract>=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_contract_multi_job"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]