mirror of
https://github.com/bringout/oca-ocb-sale.git
synced 2026-04-24 21:52:05 +02:00
19.0 vanilla
This commit is contained in:
parent
79f83631d5
commit
73afc09215
6267 changed files with 1534193 additions and 1130106 deletions
|
|
@ -10,39 +10,16 @@ pip install odoo-bringout-oca-ocb-project_sale_expense
|
|||
|
||||
## Dependencies
|
||||
|
||||
This addon depends on:
|
||||
- sale_project
|
||||
- sale_expense
|
||||
- project_hr_expense
|
||||
|
||||
## Manifest Information
|
||||
|
||||
- **Name**: Project - Sale - Expense
|
||||
- **Version**: 1.0
|
||||
- **Category**: Hidden
|
||||
- **License**: LGPL-3
|
||||
- **Installable**: False
|
||||
|
||||
## Source
|
||||
|
||||
Based on [OCA/OCB](https://github.com/OCA/OCB) branch 16.0, addon `project_sale_expense`.
|
||||
- Repository: https://github.com/OCA/OCB
|
||||
- Branch: 19.0
|
||||
- Path: addons/project_sale_expense
|
||||
|
||||
## License
|
||||
|
||||
This package maintains the original LGPL-3 license from the upstream Odoo project.
|
||||
|
||||
## Documentation
|
||||
|
||||
- Overview: doc/OVERVIEW.md
|
||||
- Architecture: doc/ARCHITECTURE.md
|
||||
- Models: doc/MODELS.md
|
||||
- Controllers: doc/CONTROLLERS.md
|
||||
- Wizards: doc/WIZARDS.md
|
||||
- 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
|
||||
This package preserves the original LGPL-3 license.
|
||||
|
|
|
|||
|
|
@ -5,8 +5,9 @@
|
|||
'name': 'Project - Sale - Expense',
|
||||
'version': '1.0',
|
||||
'description': 'Adds a full traceability of reinvoice expenses on the profitability report.',
|
||||
'author': 'Odoo S.A.',
|
||||
'license': 'LGPL-3',
|
||||
'category': 'Hidden',
|
||||
'category': 'Services/Project',
|
||||
'depends': ['sale_project', 'sale_expense', 'project_hr_expense'],
|
||||
'auto_install': True,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,51 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-13 12:17+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"Language-Team: Arabic <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/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 ? 4 : 5;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "اسم العرض"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "النفقة"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "المُعرف"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "عنصر اليومية"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "المشروع"
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2024-09-26 08:56+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: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2024-09-26 08:56+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: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
|
@ -1,21 +1,48 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
# * project_sale_expense
|
||||
#
|
||||
# Odoo Translation Bot <c3p@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Project-Id-Version: Odoo Server 19.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-02-06 13:32+0000\n"
|
||||
"PO-Revision-Date: 2024-02-06 13:32+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-08 18:38+0000\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: bs\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projekat"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -0,0 +1,52 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 04:49+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"Language-Team: Catalan <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/ca/>\n"
|
||||
"Language: ca\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.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Despesa"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Apunt comptable"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projecte"
|
||||
|
||||
#~ msgid "Expense Report"
|
||||
#~ msgstr "Informe de despeses"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# "Marta (wacm)" <wacm@odoo.com>, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2026-01-29 09:09+0000\n"
|
||||
"Last-Translator: \"Marta (wacm)\" <wacm@odoo.com>\n"
|
||||
"Language-Team: Czech <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/cs/>\n"
|
||||
"Language: cs\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>=2 && n<=4) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Zobrazovací název"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Výdaj"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Účetní položka"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projekt"
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-14 21:16+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"Language-Team: Danish <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/da/>\n"
|
||||
"Language: da\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.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Omkostning"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Journalpost"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projekt"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Larissa Manderfeld (lman)" <lman@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-31 12:54+0000\n"
|
||||
"Last-Translator: \"Larissa Manderfeld (lman)\" <lman@odoo.com>\n"
|
||||
"Language-Team: German <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/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 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Anzeigename"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Ausgabe"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Buchungszeile"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projekt"
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-24 19:24+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"Language-Team: Greek <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/el/>\n"
|
||||
"Language: el\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.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Έξοδα"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Στοιχείο Ημερολογίου"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Έργο"
|
||||
|
||||
#~ msgid "Expense Report"
|
||||
#~ msgstr "Εξοδολόγιο"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-23 12:57+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"Language-Team: Spanish <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/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 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nombre para mostrar"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Gasto"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Apunte contable"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Proyecto"
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Patricia Gutiérrez (pagc)" <pagc@odoo.com>, 2025.
|
||||
# "Fernanda Alvarez (mfar)" <mfar@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-11-11 00:38+0000\n"
|
||||
"Last-Translator: \"Patricia Gutiérrez (pagc)\" <pagc@odoo.com>\n"
|
||||
"Language-Team: Spanish (Latin America) <https://translate.odoo.com/projects/"
|
||||
"odoo-19/project_sale_expense/es_419/>\n"
|
||||
"Language: es_419\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.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nombre para mostrar"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Gasto"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Apunte contable"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Proyectos"
|
||||
|
||||
#~ msgid "Expense Report"
|
||||
#~ msgstr "Reporte de gastos"
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# Kristina Pešehodko <kristina@avalah.ee>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 19.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-22 11:08+0000\n"
|
||||
"Last-Translator: Kristina Pešehodko <kristina@avalah.ee>\n"
|
||||
"Language-Team: Estonian <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/et/>\n"
|
||||
"Language: et\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.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Kuvatav nimi"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Kulu"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Andmiku kanderida"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projekt"
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2024-09-26 08:56+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: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# Saara Hakanen <sahak@odoo.com>, 2025, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2026-01-07 09:20+0000\n"
|
||||
"Last-Translator: Saara Hakanen <sahak@odoo.com>\n"
|
||||
"Language-Team: Finnish <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/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"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Näyttönimi"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Kulu"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "Tunnus"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Kirjausrivi"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projekti"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# "Manon Rondou (ronm)" <ronm@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-15 09:14+0000\n"
|
||||
"Last-Translator: \"Manon Rondou (ronm)\" <ronm@odoo.com>\n"
|
||||
"Language-Team: French <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/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 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nom d'affichage"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Dépense"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Écriture comptable"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projet"
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2024-09-26 08:56+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: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2024-09-26 08:56+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: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2024-09-26 08:56+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: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-29 19:48+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"Language-Team: Hungarian <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/hu/>\n"
|
||||
"Language: hu\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.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Költség"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Könyvelési tétel"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projekt"
|
||||
|
||||
#~ msgid "Expense Report"
|
||||
#~ msgstr "Költségelszámolás"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Abe Manyo (abem)" <abem@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-16 06:08+0000\n"
|
||||
"Last-Translator: \"Abe Manyo (abem)\" <abem@odoo.com>\n"
|
||||
"Language-Team: Indonesian <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/id/>\n"
|
||||
"Language: id\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nama Tampilan"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Pengeluaran"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Item Jurnal"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Project"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# "Marianna Ciofani (cima)" <cima@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-16 17:05+0000\n"
|
||||
"Last-Translator: \"Marianna Ciofani (cima)\" <cima@odoo.com>\n"
|
||||
"Language-Team: Italian <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/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 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nome visualizzato"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Spesa"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Movimento contabile"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Progetto"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Junko Augias (juau)" <juau@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-16 06:08+0000\n"
|
||||
"Last-Translator: \"Junko Augias (juau)\" <juau@odoo.com>\n"
|
||||
"Language-Team: Japanese <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/ja/>\n"
|
||||
"Language: ja\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "表示名"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "費用"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "仕訳明細"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "プロジェクト"
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# Odoo Translation Bot <c3p@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 19.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-08 18:38+0000\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: kab\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: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Kwanghee Park (kwpa)" <kwpa@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-11-17 19:02+0000\n"
|
||||
"Last-Translator: \"Kwanghee Park (kwpa)\" <kwpa@odoo.com>\n"
|
||||
"Language-Team: Korean <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/ko/>\n"
|
||||
"Language: ko\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "표시명"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "경비"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "전표 항목"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "프로젝트"
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2024-09-26 08:56+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: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2024-09-26 08:56+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: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 19.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-08 18:38+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: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2024-09-26 08:56+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: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# Oakarmin Iron <oakarminiron@gmail.com>, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2026-02-04 07:55+0000\n"
|
||||
"Last-Translator: Oakarmin Iron <oakarminiron@gmail.com>\n"
|
||||
"Language-Team: Burmese <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/my/>\n"
|
||||
"Language: my\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "ပရောဂျက်"
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 18:49+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"Language-Team: Norwegian Bokmål <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/nb_NO/>\n"
|
||||
"Language: nb\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.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Utlegg"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Bilagslinje"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Prosjekt"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# Bren Driesen <brdri@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-12-02 14:57+0000\n"
|
||||
"Last-Translator: Bren Driesen <brdri@odoo.com>\n"
|
||||
"Language-Team: Dutch <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/nl/>\n"
|
||||
"Language: nl\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.14.3\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Weergavenaam"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Onkost"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Boekingsregel"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Project"
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-17 12:46+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"Language-Team: Polish <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/pl/>\n"
|
||||
"Language: pl\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%10>=2 && n%10<=4 && (n%100<10 "
|
||||
"|| n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nazwa wyświetlana"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Wydatek"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Pozycja zapisu"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projekt"
|
||||
|
|
@ -4,10 +4,10 @@
|
|||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Project-Id-Version: Odoo Server 19.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-02-06 13:32+0000\n"
|
||||
"PO-Revision-Date: 2024-02-06 13:32+0000\n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2026-01-25 18:36+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
|
@ -15,6 +15,30 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,49 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 18:49+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"Language-Team: Portuguese <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/pt/>\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"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Despesa"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Item do diário"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projeto"
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# "Maitê Dietze (madi)" <madi@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-28 13:12+0000\n"
|
||||
"Last-Translator: \"Maitê Dietze (madi)\" <madi@odoo.com>\n"
|
||||
"Language-Team: Portuguese (Brazil) <https://translate.odoo.com/projects/"
|
||||
"odoo-19/project_sale_expense/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"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Exibir nome"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Despesa"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Item do diário"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projeto"
|
||||
|
||||
#~ msgid "Expense Report"
|
||||
#~ msgstr "Relatório de Despesas"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# Busoi Cristina <elena.busoi@capps.ai>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-11-27 09:06+0000\n"
|
||||
"Last-Translator: Busoi Cristina <elena.busoi@capps.ai>\n"
|
||||
"Language-Team: Romanian <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/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==0 || (n%100 > 0 && n%100 < "
|
||||
"20)) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nume Afișat"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Cheltuieli"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Element Jurnal"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Proiect"
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# Translators:
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Anastasiia Koroleva (koan)" <koan@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-12-03 08:34+0000\n"
|
||||
"Last-Translator: \"Anastasiia Koroleva (koan)\" <koan@odoo.com>\n"
|
||||
"Language-Team: Russian <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/ru/>\n"
|
||||
"Language: ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||
"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
|
||||
"(n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Расходы"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Элемент журнала"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Проект"
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# Tomáš Píšek <Tomas.Pisek@seznam.cz>, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 19.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2026-02-16 05:04+0000\n"
|
||||
"Last-Translator: Tomáš Píšek <Tomas.Pisek@seznam.cz>\n"
|
||||
"Language-Team: Slovak <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/sk/>\n"
|
||||
"Language: sk\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>=2 && n<=4) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Zobrazovaný názov"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Výdavok"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Položka denníka"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projekt"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 21:28+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"Language-Team: Slovenian <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/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"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Strošek"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Postavka"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projekt"
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 19.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-12-30 18:37+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: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2024-09-26 08:56+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: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 21:28+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"Language-Team: Swedish <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/sv/>\n"
|
||||
"Language: sv\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.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Kostnader"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Journalpost"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projekt"
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 21:24+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"Language-Team: Thai <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/th/>\n"
|
||||
"Language: th\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "รายจ่าย"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "รายการบันทึก"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "โปรเจ็กต์"
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-11-08 01:52+0000\n"
|
||||
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
|
||||
"Language-Team: Turkish <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/tr/>\n"
|
||||
"Language: tr\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.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "İsim Göster"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Masraf"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Yevmiye Kalemi"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Proje"
|
||||
|
||||
#~ msgid "Expense Report"
|
||||
#~ msgstr "Masraf Formu"
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# Oleksii Lytvynov <oleksii.lytvynov@self-erp.com>, 2026.
|
||||
# Alina Lisnenko <alina.lisnenko@erp.co.ua>, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2026-02-19 18:50+0000\n"
|
||||
"Last-Translator: Alina Lisnenko <alina.lisnenko@erp.co.ua>\n"
|
||||
"Language-Team: Ukrainian <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/uk/>\n"
|
||||
"Language: uk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Проєкт"
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
#
|
||||
# Translated by:
|
||||
# Deepvision - info@deepvision.uz | +998 77-093-0007
|
||||
# Amon Olimov - amon.bars@gmail.com
|
||||
# Jonibek Yorqulov - j.yorqulov@deepvision.uz
|
||||
# Mirzohidkhon Ulugkhujaev ulugkhujayevmirzohidxon@gmail.com
|
||||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 19.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-08 18:38+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: uz\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
#, fuzzy
|
||||
msgid "Display Name"
|
||||
msgstr "Ko‘rsatish nomi"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
#, fuzzy
|
||||
msgid "Expense"
|
||||
msgstr "Xarajat"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
#, fuzzy
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
#, fuzzy
|
||||
msgid "Journal Item"
|
||||
msgstr "Jurnal yozuvi"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
#, fuzzy
|
||||
msgid "Project"
|
||||
msgstr "Loyiha"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Thi Huong Nguyen (thng)" <thng@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-16 06:08+0000\n"
|
||||
"Last-Translator: \"Thi Huong Nguyen (thng)\" <thng@odoo.com>\n"
|
||||
"Language-Team: Vietnamese <https://translate.odoo.com/projects/odoo-19/"
|
||||
"project_sale_expense/vi/>\n"
|
||||
"Language: vi\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "Chi phí"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Hạng mục bút toán"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Dự án"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# "Chloe Wang (chwa)" <chwa@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-11-20 07:38+0000\n"
|
||||
"Last-Translator: \"Chloe Wang (chwa)\" <chwa@odoo.com>\n"
|
||||
"Language-Team: Chinese (Simplified Han script) <https://translate.odoo.com/"
|
||||
"projects/odoo-19/project_sale_expense/zh_Hans/>\n"
|
||||
"Language: zh_CN\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "显示名称"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "费用"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "日记账项目"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "项目"
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * project_sale_expense
|
||||
#
|
||||
# Translators:
|
||||
# Wil Odoo, 2025
|
||||
# Tony Ng, 2025
|
||||
#
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~18.3\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-25 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 08:11+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"Language-Team: Chinese (Traditional Han script) <https://translate.odoo.com/"
|
||||
"projects/odoo-19/project_sale_expense/zh_Hant/>\n"
|
||||
"Language: zh_TW\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "顯示名稱"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_hr_expense
|
||||
msgid "Expense"
|
||||
msgstr "開支"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_account_move_line__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:project_sale_expense.field_project_project__id
|
||||
msgid "ID"
|
||||
msgstr "識別號"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "日記賬項目"
|
||||
|
||||
#. module: project_sale_expense
|
||||
#: model:ir.model,name:project_sale_expense.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "專案"
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import account_move_line
|
||||
from . import hr_expense
|
||||
from . import project_project
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models
|
||||
|
||||
|
||||
class AccountMoveLine(models.Model):
|
||||
_inherit = 'account.move.line'
|
||||
|
||||
def _sale_determine_order(self):
|
||||
""" For move lines created from expense, we override the normal behavior.
|
||||
Note: if no SO but an AA is given on the expense, we will determine anyway the SO from its project's AAs linked,
|
||||
using the same mecanism as in Vendor Bills.
|
||||
"""
|
||||
mapping_from_project = self._get_so_mapping_from_project()
|
||||
mapping_from_expense = self._get_so_mapping_from_expense()
|
||||
mapping_from_project.update(mapping_from_expense)
|
||||
return mapping_from_project
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models
|
||||
|
||||
|
||||
class HrExpense(models.Model):
|
||||
_inherit = "hr.expense"
|
||||
|
||||
def _compute_analytic_distribution(self):
|
||||
super()._compute_analytic_distribution()
|
||||
if not self.env.context.get('project_id'):
|
||||
expenses_to_recompute = self.env['hr.expense']
|
||||
prefetch_ids = set()
|
||||
for expense in self.filtered('sale_order_id'):
|
||||
expenses_to_recompute += expense
|
||||
prefetch_ids.update(self.env['analytic.mixin']._get_analytic_account_ids_from_distributions(expense.analytic_distribution))
|
||||
prefetch_ids.update(self.env['analytic.mixin']._get_analytic_account_ids_from_distributions(expense.sale_order_id.project_id._get_analytic_distribution()))
|
||||
|
||||
if expenses_to_recompute:
|
||||
analytic_account_model = self.env['account.analytic.account'].with_prefetch(prefetch_ids)
|
||||
for expense in expenses_to_recompute:
|
||||
expense_account_ids = self.env['analytic.mixin']._get_analytic_account_ids_from_distributions(expense.analytic_distribution)
|
||||
project_analytic_distribution = expense.sale_order_id.project_id._get_analytic_distribution()
|
||||
project_account_ids = self.env['analytic.mixin']._get_analytic_account_ids_from_distributions(project_analytic_distribution)
|
||||
|
||||
project_analytic_distribution_accounts = self.env['account.analytic.account'].browse(project_account_ids)
|
||||
expense_analytic_accounts = analytic_account_model.browse(expense_account_ids)
|
||||
|
||||
if not any(project_account.root_plan_id in expense_analytic_accounts.root_plan_id for project_account in project_analytic_distribution_accounts):
|
||||
# If it is possible we keep both analytic distributions
|
||||
expense.analytic_distribution = {
|
||||
**(expense.analytic_distribution or {}),
|
||||
**(project_analytic_distribution or {})
|
||||
}
|
||||
else:
|
||||
# If not we keep the most prioritized one -> project
|
||||
expense.analytic_distribution = expense.sale_order_id.project_id._get_analytic_distribution() or expense.analytic_distribution or {}
|
||||
|
||||
def action_post(self):
|
||||
""" When creating the move of the expense, if the AA is given in the project of the SO, we take it as reference in the distribution.
|
||||
Otherwise, we create a AA for the project of the SO and set the distribution to it.
|
||||
"""
|
||||
for expense in self:
|
||||
project = expense.sale_order_id.project_id
|
||||
if not project or expense.analytic_distribution:
|
||||
continue
|
||||
if not project.account_id:
|
||||
project._create_analytic_account()
|
||||
expense.analytic_distribution = project._get_analytic_distribution()
|
||||
return super().action_post()
|
||||
|
|
@ -1,65 +1,62 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import json
|
||||
|
||||
from odoo import models
|
||||
from collections import defaultdict
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class Project(models.Model):
|
||||
class ProjectProject(models.Model):
|
||||
_inherit = 'project.project'
|
||||
|
||||
def _get_expenses_profitability_items(self, with_action=True):
|
||||
if not self.analytic_account_id:
|
||||
return {}
|
||||
can_see_expense = with_action and self.user_has_groups('hr_expense.group_hr_expense_team_approver')
|
||||
query = self.env['hr.expense']._search([('is_refused', '=', False), ('state', 'in', ['approved', 'done'])])
|
||||
query.add_where('hr_expense.analytic_distribution ? %s', [str(self.analytic_account_id.id)])
|
||||
query.order = None
|
||||
query_string, query_param = query.select('sale_order_id', 'product_id', 'currency_id', 'array_agg(id) as ids', 'SUM(untaxed_amount) as untaxed_amount')
|
||||
query_string = f"{query_string} GROUP BY sale_order_id, product_id, currency_id"
|
||||
self._cr.execute(query_string, query_param)
|
||||
expenses_read_group = [expense for expense in self._cr.dictfetchall()]
|
||||
expenses_read_group = self.env['hr.expense']._read_group(
|
||||
[('state', 'in', ['posted', 'in_payment', 'paid']), ('analytic_distribution', 'in', self.account_id.ids)],
|
||||
groupby=['sale_order_id', 'product_id', 'currency_id'],
|
||||
aggregates=['id:array_agg', 'untaxed_amount_currency:sum'],
|
||||
)
|
||||
if not expenses_read_group:
|
||||
return {}
|
||||
expenses_per_so_id = {}
|
||||
expense_ids = []
|
||||
amount_billed = 0.0
|
||||
dict_amount_per_currency = defaultdict(lambda: 0.0)
|
||||
for res in expenses_read_group:
|
||||
so_id = res['sale_order_id']
|
||||
product_id = res['product_id']
|
||||
expenses_per_so_id.setdefault(so_id, {})[product_id] = res['ids']
|
||||
can_see_expense = with_action and self.env.user.has_group('hr_expense.group_hr_expense_team_approver')
|
||||
for sale_order, product, currency, ids, untaxed_amount_currency_sum in expenses_read_group:
|
||||
expenses_per_so_id.setdefault(sale_order.id, {})[product.id] = ids
|
||||
if can_see_expense:
|
||||
expense_ids.extend(res['ids'])
|
||||
dict_amount_per_currency[res['currency_id']] += res['untaxed_amount']
|
||||
date = fields.Date.context_today(self)
|
||||
for currency_id in dict_amount_per_currency:
|
||||
if currency_id == self.company_id.currency_id.id:
|
||||
amount_billed += dict_amount_per_currency[currency_id]
|
||||
continue
|
||||
currency = self.env['res.currency'].browse(currency_id)
|
||||
amount_billed += currency._convert(dict_amount_per_currency[currency_id], self.company_id.currency_id, self.company_id, date)
|
||||
expense_ids.extend(ids)
|
||||
dict_amount_per_currency[currency] += untaxed_amount_currency_sum
|
||||
|
||||
amount_billed = 0.0
|
||||
for currency, untaxed_amount_currency_sum in dict_amount_per_currency.items():
|
||||
amount_billed += currency._convert(untaxed_amount_currency_sum, self.currency_id, self.company_id, round=False)
|
||||
|
||||
sol_read_group = self.env['sale.order.line'].sudo()._read_group(
|
||||
[
|
||||
('order_id', 'in', list(expenses_per_so_id.keys())),
|
||||
('is_expense', '=', True),
|
||||
('state', 'in', ['sale', 'done']),
|
||||
('state', '=', 'sale'),
|
||||
],
|
||||
['order_id', 'product_id', 'untaxed_amount_to_invoice', 'untaxed_amount_invoiced'],
|
||||
['order_id', 'product_id'],
|
||||
lazy=False)
|
||||
['order_id', 'product_id', 'currency_id'],
|
||||
['untaxed_amount_to_invoice:sum', 'untaxed_amount_invoiced:sum'],
|
||||
)
|
||||
|
||||
total_amount_expense_invoiced = total_amount_expense_to_invoice = 0.0
|
||||
reinvoice_expense_ids = []
|
||||
for res in sol_read_group:
|
||||
expense_data_per_product_id = expenses_per_so_id[res['order_id'][0]]
|
||||
product_id = res['product_id'][0]
|
||||
dict_invoices_amount_per_currency = defaultdict(lambda: {'to_invoice': 0.0, 'invoiced': 0.0})
|
||||
set_currency_ids = {self.currency_id.id}
|
||||
for order, product, currency, untaxed_amount_to_invoice_sum, untaxed_amount_invoiced_sum in sol_read_group:
|
||||
expense_data_per_product_id = expenses_per_so_id[order.id]
|
||||
set_currency_ids.add(currency.id)
|
||||
product_id = product.id
|
||||
if product_id in expense_data_per_product_id:
|
||||
total_amount_expense_to_invoice += res['untaxed_amount_to_invoice']
|
||||
total_amount_expense_invoiced += res['untaxed_amount_invoiced']
|
||||
dict_invoices_amount_per_currency[currency]['to_invoice'] += untaxed_amount_to_invoice_sum
|
||||
dict_invoices_amount_per_currency[currency]['invoiced'] += untaxed_amount_invoiced_sum
|
||||
reinvoice_expense_ids += expense_data_per_product_id[product_id]
|
||||
for currency, revenues in dict_invoices_amount_per_currency.items():
|
||||
total_amount_expense_to_invoice += currency._convert(revenues['to_invoice'], self.currency_id, self.company_id)
|
||||
total_amount_expense_invoiced += currency._convert(revenues['invoiced'], self.currency_id, self.company_id)
|
||||
|
||||
section_id = 'expenses'
|
||||
sequence = self._get_profitability_sequence_per_invoice_type()[section_id]
|
||||
expense_data = {
|
||||
|
|
@ -92,16 +89,13 @@ class Project(models.Model):
|
|||
|
||||
def _get_already_included_profitability_invoice_line_ids(self):
|
||||
move_line_ids = super()._get_already_included_profitability_invoice_line_ids()
|
||||
query = self.env['hr.expense']._search([('is_refused', '=', False), ('state', 'in', ['approved', 'done'])])
|
||||
query.add_where('hr_expense.analytic_distribution ? %s', [str(self.analytic_account_id.id)])
|
||||
query.order = None
|
||||
query_string, query_param = query.select('sale_order_id')
|
||||
query_string = f"{query_string} GROUP BY sale_order_id"
|
||||
self._cr.execute(query_string, query_param)
|
||||
expenses_read_group = list(self._cr.dictfetchall())
|
||||
expenses_read_group = self.env['hr.expense']._read_group(
|
||||
[('state', 'in', ['posted', 'in_payment', 'paid']), ('analytic_distribution', 'in', self.account_id.ids)],
|
||||
groupby=['sale_order_id'],
|
||||
aggregates=['__count'],
|
||||
)
|
||||
if not expenses_read_group:
|
||||
return move_line_ids
|
||||
for res in expenses_read_group:
|
||||
sale_order = self.env['sale.order'].browse(res['sale_order_id'])
|
||||
for sale_order, count in expenses_read_group:
|
||||
move_line_ids.extend(sale_order.invoice_ids.mapped('invoice_line_ids').ids)
|
||||
return move_line_ids
|
||||
|
|
|
|||
|
|
@ -2,3 +2,4 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import test_project_profitability
|
||||
from . import test_project_sale_expense
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo.tests import tagged
|
||||
|
|
@ -10,67 +9,109 @@ from odoo.addons.sale_project.tests.test_project_profitability import TestProjec
|
|||
|
||||
@tagged('-at_install', 'post_install')
|
||||
class TestProjectSaleExpenseProfitability(TestProjectProfitabilityCommon, TestProjectHrExpenseProfitabilityCommon, TestSaleCommon):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
cls.product_c.write({
|
||||
'expense_policy': 'sales_price',
|
||||
})
|
||||
|
||||
def test_project_profitability(self):
|
||||
project = self.env['project.project'].create({'name': 'new project'})
|
||||
project._create_analytic_account()
|
||||
account = project.account_id
|
||||
# Create a new company with the foreign currency.
|
||||
foreign_company = self.company_data_2['company']
|
||||
foreign_company.currency_id = self.foreign_currency
|
||||
foreign_partner = self.env['res.partner'].create({
|
||||
'name': 'Foreign Employee address',
|
||||
'company_id': foreign_company.id,
|
||||
})
|
||||
foreign_employee = self.env['hr.employee'].sudo().create({
|
||||
'name': 'foreign_employee',
|
||||
'company_id': foreign_company.id,
|
||||
'expense_manager_id': self.expense_user_manager.id,
|
||||
'work_contact_id': foreign_partner.id,
|
||||
'work_email': 'email@email',
|
||||
})
|
||||
|
||||
expense = self.env['hr.expense'].create({
|
||||
'name': 'expense',
|
||||
'product_id': self.company_data['product_order_sales_price'].id,
|
||||
'unit_amount': self.company_data['product_order_sales_price'].list_price,
|
||||
'total_amount_currency': self.company_data['product_order_sales_price'].list_price,
|
||||
'employee_id': self.expense_employee.id,
|
||||
'analytic_distribution': {self.project.analytic_account_id.id: 100},
|
||||
'analytic_distribution': {account.id: 100},
|
||||
'sale_order_id': self.sale_order.id,
|
||||
})
|
||||
|
||||
# See method definition in `project_hr_expense.tests.test_project_profitability`
|
||||
expense_sheet = self.check_project_profitability_before_creating_and_approving_expense_sheet(
|
||||
expense = self.check_project_profitability_before_creating_and_approving_expense(
|
||||
expense,
|
||||
self.project,
|
||||
project,
|
||||
self.project_profitability_items_empty)
|
||||
self.assertEqual(expense.state, 'approved')
|
||||
|
||||
expense_profitability = self.project._get_expenses_profitability_items(False)
|
||||
sequence_per_invoice_type = self.project._get_profitability_sequence_per_invoice_type()
|
||||
# Create an expense in a foreign company, the expense is linked to the AA of the project.
|
||||
so_foreign = self.env['sale.order'].create({
|
||||
'name': 'Sale order foreign',
|
||||
'partner_id': self.partner_a.id,
|
||||
'company_id': foreign_company.id,
|
||||
})
|
||||
so_foreign.currency_id = self.foreign_currency
|
||||
so_foreign.action_confirm()
|
||||
expense_foreign = self.create_expenses({
|
||||
'name': 'Expense foreign',
|
||||
'employee_id': foreign_employee.id,
|
||||
'product_id': self.product_c.id, # Foreign currency product must have no cost
|
||||
'total_amount_currency': 350.00 * 0.5, # 0.5 is the exchange rate
|
||||
'company_id': foreign_company.id,
|
||||
'analytic_distribution': {account.id: 100},
|
||||
'currency_id': self.foreign_currency.id,
|
||||
'sale_order_id': so_foreign.id,
|
||||
})
|
||||
expense_foreign.action_submit()
|
||||
self.assertEqual(expense_foreign.state, 'submitted')
|
||||
expense_foreign.action_approve()
|
||||
self.assertEqual(expense_foreign.state, 'approved')
|
||||
|
||||
expense_profitability = project._get_expenses_profitability_items(False)
|
||||
sequence_per_invoice_type = project._get_profitability_sequence_per_invoice_type()
|
||||
self.assertIn('expenses', sequence_per_invoice_type)
|
||||
expense_sequence = sequence_per_invoice_type['expenses']
|
||||
billed = -expense.untaxed_amount_currency - expense_foreign.untaxed_amount_currency * 0.2 # -280.0 - 175.0 * 0.2 = -315.0
|
||||
|
||||
self.assertDictEqual(
|
||||
expense_profitability.get('revenues', {}),
|
||||
{},
|
||||
)
|
||||
self.assertDictEqual(
|
||||
expense_profitability['costs'],
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'billed': -280.0, 'to_bill': 0.0},
|
||||
self.assertNotIn(
|
||||
'costs',
|
||||
expense_profitability,
|
||||
'No costs should be found since the sheets are not posted or done.',
|
||||
)
|
||||
|
||||
expense_sheet.action_sheet_move_create()
|
||||
|
||||
self.post_expenses_with_wizard(expense)
|
||||
self.assertEqual(expense.state, 'posted')
|
||||
self.assertRecordValues(self.sale_order.order_line, [
|
||||
# Original SO line:
|
||||
{
|
||||
'product_id': self.product_delivery_service.id,
|
||||
'qty_delivered': 0.0,
|
||||
'product_uom_qty': 10,
|
||||
'is_expense': False,
|
||||
},
|
||||
{
|
||||
'product_id': self.company_data['product_order_sales_price'].id,
|
||||
'qty_delivered': 1.0,
|
||||
'product_uom_qty': 1.0,
|
||||
'is_expense': True,
|
||||
},
|
||||
{'is_expense': False, 'product_uom_qty': 10.0, 'qty_delivered': 0.0, 'product_id': self.product_delivery_service.id},
|
||||
{'is_expense': True, 'product_uom_qty': 1.0, 'qty_delivered': 1.0, 'product_id': self.company_data['product_order_sales_price'].id},
|
||||
])
|
||||
expense_sol = self.sale_order.order_line.filtered(lambda sol: sol.product_id == self.company_data['product_order_sales_price'])
|
||||
|
||||
expense_profitability = self.project._get_expenses_profitability_items(False)
|
||||
expense_profitability = project._get_expenses_profitability_items(False)
|
||||
self.assertDictEqual(
|
||||
expense_profitability.get('revenues', {}),
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'invoiced': 0.0, 'to_invoice': expense_sol.untaxed_amount_to_invoice},
|
||||
)
|
||||
self.assertDictEqual(
|
||||
expense_profitability['costs'],
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'billed': -280.0, 'to_bill': 0.0},
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'billed': expense.currency_id.round(-expense.untaxed_amount_currency), 'to_bill': 0.0},
|
||||
)
|
||||
|
||||
self.assertDictEqual(
|
||||
self.project._get_profitability_items(False),
|
||||
project._get_profitability_items(False),
|
||||
{
|
||||
'revenues': {
|
||||
'data': [expense_profitability['revenues']],
|
||||
|
|
@ -83,6 +124,32 @@ class TestProjectSaleExpenseProfitability(TestProjectProfitabilityCommon, TestPr
|
|||
}
|
||||
)
|
||||
|
||||
self.post_expenses_with_wizard(expense_foreign.with_company(expense_foreign.company_id))
|
||||
self.assertEqual(expense_foreign.state, 'posted')
|
||||
expense_sol_foreign = so_foreign.order_line[0]
|
||||
expense_profitability = project._get_expenses_profitability_items(False)
|
||||
self.assertDictEqual(
|
||||
expense_profitability.get('revenues', {}),
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'invoiced': 0.0, 'to_invoice': expense_sol.untaxed_amount_to_invoice + expense_sol_foreign.untaxed_amount_to_invoice * 0.2},
|
||||
)
|
||||
self.assertDictEqual(
|
||||
expense_profitability['costs'],
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'billed': expense.currency_id.round(billed), 'to_bill': 0.0},
|
||||
)
|
||||
|
||||
self.assertDictEqual(
|
||||
project._get_profitability_items(False),
|
||||
{
|
||||
'revenues': {
|
||||
'data': [expense_profitability['revenues']],
|
||||
'total': {k: v for k, v in expense_profitability['revenues'].items() if k in ['to_invoice', 'invoiced']},
|
||||
},
|
||||
'costs': {
|
||||
'data': [expense_profitability['costs']],
|
||||
'total': {k: v for k, v in expense_profitability['costs'].items() if k in ['to_bill', 'billed']},
|
||||
},
|
||||
}
|
||||
)
|
||||
invoice = self.env['sale.advance.payment.inv'] \
|
||||
.with_context({
|
||||
'active_model': 'sale.order',
|
||||
|
|
@ -92,34 +159,80 @@ class TestProjectSaleExpenseProfitability(TestProjectProfitabilityCommon, TestPr
|
|||
})._create_invoices(self.sale_order)
|
||||
invoice.action_post()
|
||||
|
||||
expense_profitability = self.project._get_expenses_profitability_items(False)
|
||||
expense_profitability = project._get_expenses_profitability_items(False)
|
||||
self.assertDictEqual(
|
||||
expense_profitability.get('revenues', {}),
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'invoiced': expense_sol.untaxed_amount_invoiced, 'to_invoice': 0.0},
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'invoiced': expense_sol.untaxed_amount_invoiced, 'to_invoice': expense_sol_foreign.untaxed_amount_to_invoice * 0.2},
|
||||
)
|
||||
|
||||
credit_note = invoice._reverse_moves()
|
||||
credit_note.action_post()
|
||||
|
||||
expense_profitability = self.project._get_expenses_profitability_items(False)
|
||||
expense_profitability = project._get_expenses_profitability_items(False)
|
||||
self.assertDictEqual(
|
||||
expense_profitability.get('revenues', {}),
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'invoiced': 0.0, 'to_invoice': expense_sol.untaxed_amount_to_invoice},
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'invoiced': 0.0, 'to_invoice': expense_sol.untaxed_amount_to_invoice + expense_sol_foreign.untaxed_amount_to_invoice * 0.2},
|
||||
)
|
||||
|
||||
self.sale_order._action_cancel()
|
||||
expense_profitability = self.project._get_expenses_profitability_items(False)
|
||||
expense_profitability = project._get_expenses_profitability_items(False)
|
||||
self.assertDictEqual(
|
||||
expense_profitability.get('revenues', {}),
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'invoiced': 0.0, 'to_invoice': expense_sol_foreign.untaxed_amount_to_invoice * 0.2},
|
||||
)
|
||||
self.assertDictEqual(
|
||||
expense_profitability['costs'],
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'billed': expense.currency_id.round(billed), 'to_bill': 0.0},
|
||||
)
|
||||
|
||||
expense.account_move_id.button_draft()
|
||||
expense.account_move_id.unlink()
|
||||
expense_profitability = project._get_expenses_profitability_items(False)
|
||||
self.assertDictEqual(
|
||||
expense_profitability.get('revenues', {}),
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'invoiced': 0.0, 'to_invoice': expense_sol_foreign.untaxed_amount_to_invoice * 0.2},
|
||||
)
|
||||
self.assertDictEqual(
|
||||
expense_profitability.get('costs', {}),
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'billed': expense.currency_id.round(-expense_foreign.untaxed_amount_currency * 0.2), 'to_bill': 0.0},
|
||||
)
|
||||
|
||||
invoice = self.env['sale.advance.payment.inv'].with_context({
|
||||
'active_model': 'sale.order',
|
||||
'active_id': so_foreign.id,
|
||||
}).create({
|
||||
'advance_payment_method': 'delivered',
|
||||
})._create_invoices(so_foreign)
|
||||
invoice.action_post()
|
||||
expense_profitability = project._get_expenses_profitability_items(False)
|
||||
self.assertDictEqual(
|
||||
expense_profitability.get('revenues', {}),
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'invoiced': expense_sol_foreign.untaxed_amount_invoiced * 0.2, 'to_invoice': 0.0},
|
||||
)
|
||||
|
||||
credit_note = invoice._reverse_moves()
|
||||
credit_note.action_post()
|
||||
|
||||
expense_profitability = project._get_expenses_profitability_items(False)
|
||||
self.assertDictEqual(
|
||||
expense_profitability.get('revenues', {}),
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'invoiced': 0.0, 'to_invoice': expense_sol_foreign.untaxed_amount_to_invoice * 0.2},
|
||||
)
|
||||
|
||||
so_foreign._action_cancel()
|
||||
expense_profitability = project._get_expenses_profitability_items(False)
|
||||
self.assertDictEqual(
|
||||
expense_profitability.get('revenues', {}),
|
||||
{},
|
||||
)
|
||||
self.assertDictEqual(
|
||||
expense_profitability['costs'],
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'billed': -280.0, 'to_bill': 0.0},
|
||||
{'id': 'expenses', 'sequence': expense_sequence, 'billed': expense.currency_id.round(-expense_foreign.untaxed_amount_currency * 0.2), 'to_bill': 0.0},
|
||||
)
|
||||
|
||||
expense_sheet.refuse_sheet('Test Cancel Expense')
|
||||
expense_profitability = self.project._get_expenses_profitability_items(False)
|
||||
expense_foreign.account_move_id.button_draft()
|
||||
expense_foreign.account_move_id.unlink()
|
||||
expense_profitability = project._get_expenses_profitability_items(False)
|
||||
self.assertDictEqual(
|
||||
expense_profitability.get('revenues', {}),
|
||||
{},
|
||||
|
|
@ -165,20 +278,16 @@ class TestProjectSaleExpenseProfitability(TestProjectProfitabilityCommon, TestPr
|
|||
sale_order.action_confirm()
|
||||
project = sale_order.order_line.project_id
|
||||
|
||||
expense = self.env['hr.expense'].create({
|
||||
expense = self.create_expenses({
|
||||
'name': 'expense',
|
||||
'product_id': self.company_data['product_order_cost'].id,
|
||||
'unit_amount': self.company_data['product_order_cost'].list_price,
|
||||
'employee_id': self.expense_employee.id,
|
||||
'analytic_distribution': {project.analytic_account_id.id: 100},
|
||||
'quantity': 1,
|
||||
'analytic_distribution': {project.account_id.id: 100},
|
||||
'sale_order_id': sale_order.id,
|
||||
})
|
||||
|
||||
expense_sheet_vals_list = expense._get_default_expense_sheet_values()
|
||||
expense_sheet = self.env['hr.expense.sheet'].create(expense_sheet_vals_list)
|
||||
expense_sheet.action_submit_sheet()
|
||||
expense_sheet.approve_expense_sheets()
|
||||
expense_sheet.action_sheet_move_create()
|
||||
expense.action_submit()
|
||||
expense.action_approve()
|
||||
self.post_expenses_with_wizard(expense)
|
||||
|
||||
invoice = sale_order._create_invoices()
|
||||
invoice.action_post()
|
||||
|
|
@ -204,28 +313,3 @@ class TestProjectSaleExpenseProfitability(TestProjectProfitabilityCommon, TestPr
|
|||
'total': {'invoiced': expense_profitability['revenues']['invoiced'] + revenue_items_from_sol['total']['invoiced'], 'to_invoice': expense_profitability['revenues']['to_invoice'] + revenue_items_from_sol['total']['to_invoice']},
|
||||
},
|
||||
)
|
||||
|
||||
def test_project_profitability_multi_currency(self):
|
||||
currency_rate = 0.5
|
||||
other_currency = self.env['res.currency'].create({
|
||||
'name': 'TEST',
|
||||
'symbol': 'T',
|
||||
'rate_ids': [(0, 0, {
|
||||
'name': '2020-01-01',
|
||||
'rate': currency_rate,
|
||||
})],
|
||||
})
|
||||
amount_in_other_currency = 100
|
||||
expense = self.env['hr.expense'].create({
|
||||
'name': 'Expense in another currency',
|
||||
'product_id': self.company_data['product_order_sales_price'].id,
|
||||
'total_amount': amount_in_other_currency,
|
||||
'employee_id': self.expense_employee.id,
|
||||
'analytic_distribution': {self.project.analytic_account_id.id: 100},
|
||||
'sale_order_id': self.sale_order.id,
|
||||
'currency_id': other_currency.id,
|
||||
})
|
||||
self.check_project_profitability_before_creating_and_approving_expense_sheet(expense, self.project, self.project_profitability_items_empty)
|
||||
|
||||
expense_profitability = self.project._get_expenses_profitability_items(False)
|
||||
self.assertTrue(expense_profitability['costs']['billed'] == - amount_in_other_currency / currency_rate)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,153 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from odoo import Command
|
||||
from odoo.addons.hr_expense.tests.common import TestExpenseCommon
|
||||
from odoo.addons.sale.tests.common import TestSaleCommon
|
||||
from odoo.tests import Form, tagged
|
||||
|
||||
|
||||
@tagged('post_install', '-at_install')
|
||||
class TestSaleExpense(TestExpenseCommon, TestSaleCommon):
|
||||
|
||||
def test_analytic_account_expense_policy(self):
|
||||
product_form = Form(self.product_a.product_tmpl_id)
|
||||
product_form.can_be_expensed = True
|
||||
product_form.expense_policy = 'cost'
|
||||
product_form.can_be_expensed = False
|
||||
self.product_a.product_tmpl_id = product_form.save()
|
||||
|
||||
project = self.env['project.project'].sudo().create({'name': 'SO Project'})
|
||||
# Remove the analytic account auto-generated when creating a timesheetable project if it exists
|
||||
project.account_id = False
|
||||
|
||||
so = self.env['sale.order'].create({
|
||||
'partner_id': self.partner_a.id,
|
||||
'order_line': [Command.create({
|
||||
'name': self.product_a.name,
|
||||
'product_id': self.product_a.id,
|
||||
'product_uom_qty': 2,
|
||||
'price_unit': self.product_a.list_price,
|
||||
})],
|
||||
'project_id': project.id,
|
||||
})
|
||||
so.action_confirm()
|
||||
self.assertFalse(so.project_account_id)
|
||||
|
||||
def test_compute_analytic_distribution_expense(self):
|
||||
""" Test that the analytic distibution is well computed when we link a sale order to an expense """
|
||||
|
||||
# Make sure the user has access to analytic accounting, otherwise the 'analytic_distribution' field will not appear
|
||||
# in the view and will not be computed
|
||||
self.env.user.write({'group_ids': [Command.link(self.env.ref('analytic.group_analytic_accounting').id)]})
|
||||
# Set the expense policy to 'sales_price' to make the 'sale_order_id' field visible on the form view
|
||||
self.product_c.expense_policy = 'sales_price'
|
||||
|
||||
self.analytic_plan_2 = self.env['account.analytic.plan'].create({'name': 'Other Plan Test'})
|
||||
self.analytic_account_3 = self.env['account.analytic.account'].create({
|
||||
'name': 'analytic_account_3',
|
||||
'plan_id': self.analytic_plan_2.id,
|
||||
})
|
||||
|
||||
# Project Will use another analytic plan than the product
|
||||
project = self.env['project.project'].sudo().create({'name': 'SO Project'})
|
||||
project.account_id = self.analytic_account_3
|
||||
|
||||
# Set an analytic distribution using account_1 on the product that will be used on the expense
|
||||
self.env['account.analytic.distribution.model'].create([{
|
||||
'product_id': self.product_c.id,
|
||||
'analytic_distribution': {str(self.analytic_account_1.id): 100}
|
||||
}])
|
||||
|
||||
so_values = {
|
||||
'partner_id': self.partner_a.id,
|
||||
'order_line': [Command.create({
|
||||
'name': self.product_c.name,
|
||||
'product_id': self.product_c.id,
|
||||
'product_uom_qty': 2,
|
||||
'price_unit': self.product_c.list_price,
|
||||
})],
|
||||
'project_id': project.id,
|
||||
}
|
||||
so1 = self.env['sale.order'].create(so_values)
|
||||
expense = self.create_expenses({
|
||||
'name': 'Expense Test',
|
||||
'sale_order_id': so1.id,
|
||||
'product_id': self.product_c.id,
|
||||
})
|
||||
|
||||
self.assertEqual(
|
||||
expense.analytic_distribution,
|
||||
{str(self.analytic_account_1.id): 100, str(self.analytic_account_3.id): 100},
|
||||
"The analytic distribution of the expense should be set to the account of the project and the one from the sale order.",
|
||||
)
|
||||
|
||||
# Check that it default to the one from the sale order if the project has no analytic distribution
|
||||
project.account_id = False
|
||||
so2 = self.env['sale.order'].create(so_values)
|
||||
|
||||
# We use the form to trigger the onchange on sale_order_id, which adds the 'analytic_distribution' field to the fields to recompute
|
||||
with Form(expense) as exp_form:
|
||||
exp_form.sale_order_id = so2
|
||||
|
||||
self.assertEqual(
|
||||
expense.analytic_distribution,
|
||||
{str(self.analytic_account_1.id): 100},
|
||||
"The analytic distribution of the expense should be the one from the sale order only",
|
||||
)
|
||||
|
||||
# The analytic_account_2 has the same plan as the one from the sale order
|
||||
project.account_id = self.analytic_account_2
|
||||
so3 = self.env['sale.order'].create(so_values)
|
||||
with Form(expense) as exp_form:
|
||||
exp_form.sale_order_id = so3
|
||||
self.assertEqual(
|
||||
expense.analytic_distribution,
|
||||
{str(self.analytic_account_2.id): 100},
|
||||
"The analytic distribution of the expense should keep only the one from the project when the so and project share the same plan",
|
||||
)
|
||||
|
||||
def test_change_product_expense_policy_analytic_distribution(self):
|
||||
""" Test that analytic distribution is not recomputed when changing the expense policy of the expense product """
|
||||
analytic_account_2 = self.analytic_account_1.copy()
|
||||
self.product_a.expense_policy = 'sales_price'
|
||||
distribution_model = self.env['account.analytic.distribution.model'].create({
|
||||
'account_prefix': self.company_data['default_account_expense'].code,
|
||||
'analytic_distribution': {self.analytic_account_1.id: 100.0},
|
||||
})
|
||||
expenses = self.env['hr.expense'].create([
|
||||
{
|
||||
'name': f'Expense {i}',
|
||||
'employee_id': self.expense_employee.id,
|
||||
'product_id': self.product_a.id,
|
||||
} for i in range(1, 3)
|
||||
])
|
||||
self.assertRecordValues(expenses, [
|
||||
{
|
||||
'account_id': self.company_data['default_account_expense'].id,
|
||||
'analytic_distribution': {str(self.analytic_account_1.id): 100.0},
|
||||
},
|
||||
{
|
||||
'account_id': self.company_data['default_account_expense'].id,
|
||||
'analytic_distribution': {str(self.analytic_account_1.id): 100.0},
|
||||
},
|
||||
])
|
||||
|
||||
distribution_model.analytic_distribution = {analytic_account_2.id: 100.0}
|
||||
expenses |= self.env['hr.expense'].create({
|
||||
'name': 'Expense 3',
|
||||
'employee_id': self.expense_employee.id,
|
||||
'product_id': self.product_a.id,
|
||||
})
|
||||
|
||||
self.product_a.expense_policy = 'cost'
|
||||
|
||||
self.assertRecordValues(expenses, [
|
||||
{
|
||||
'analytic_distribution': {str(self.analytic_account_1.id): 100.0},
|
||||
},
|
||||
{
|
||||
'analytic_distribution': {str(self.analytic_account_1.id): 100.0},
|
||||
},
|
||||
{
|
||||
'analytic_distribution': {str(analytic_account_2.id): 100.0},
|
||||
},
|
||||
])
|
||||
|
|
@ -1,14 +1,16 @@
|
|||
[project]
|
||||
name = "odoo-bringout-oca-ocb-project_sale_expense"
|
||||
version = "16.0.0"
|
||||
description = "Project - Sale - Expense - Odoo addon"
|
||||
description = "Project - Sale - Expense -
|
||||
Odoo addon
|
||||
"
|
||||
authors = [
|
||||
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
|
||||
]
|
||||
dependencies = [
|
||||
"odoo-bringout-oca-ocb-sale_project>=16.0.0",
|
||||
"odoo-bringout-oca-ocb-sale_expense>=16.0.0",
|
||||
"odoo-bringout-oca-ocb-project_hr_expense>=16.0.0",
|
||||
"odoo-bringout-oca-ocb-sale_project>=19.0.0",
|
||||
"odoo-bringout-oca-ocb-sale_expense>=19.0.0",
|
||||
"odoo-bringout-oca-ocb-project_hr_expense>=19.0.0",
|
||||
"requests>=2.25.1"
|
||||
]
|
||||
readme = "README.md"
|
||||
|
|
@ -18,7 +20,7 @@ classifiers = [
|
|||
"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.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Topic :: Office/Business",
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue