diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/account_saft_import.pot b/dev_odex30_accounting/odex30_account_saft_import/i18n/account_saft_import.pot deleted file mode 100644 index 4724fa4..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/account_saft_import.pot +++ /dev/null @@ -1,137 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:26+0000\n" -"Last-Translator: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/az.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/az.po deleted file mode 100644 index 2a935b3..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/az.po +++ /dev/null @@ -1,144 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Nurlan Farajov , 2024 -# Jumshud Sultanov , 2024 -# ERPGo Odoo , 2025. -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2025-11-07 15:23+0000\n" -"Last-Translator: ERPGo Odoo \n" -"Language-Team: Azerbaijani \n" -"Language: az\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: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Ləğv edin" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Şirkətlər" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Şirkət" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Yaradan" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Yaradılma tarixi" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Görünən Adı" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Fayl" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "İmport" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Son Yeniləyən" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Son Yenilənmə tarixi" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/bg.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/bg.po deleted file mode 100644 index af1abee..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/bg.po +++ /dev/null @@ -1,145 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Petko Karamotchev, 2024 -# aleksandar ivanov, 2024 -# KeyVillage, 2024 -# preslav , 2024 -# Maria Boyadjieva , 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Maria Boyadjieva , 2024\n" -"Language-Team: Bulgarian (https://app.transifex.com/odoo/teams/41243/bg/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: bg\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Счетоводни настройки" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Отказ" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Фирми" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Фирма" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Създаден от" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Създадено на" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Име за показване" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Файл" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Име на файл" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Внос" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Последно актуализирано от" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Последно актуализирано на" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/bs.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/bs.po deleted file mode 100644 index 4bfafbf..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/bs.po +++ /dev/null @@ -1,142 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Weblate , 2025. -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2025-11-17 16:33+0000\n" -"Last-Translator: Weblate \n" -"Language-Team: Bosnian \n" -"Language: bs\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.12.2\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Otkaži" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Kompanije" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Kompanija" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Kreirao" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Kreirano" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Prikazani naziv" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Datoteka" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Uvoz" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Zadnji ažurirao" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Zadnje ažurirano" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/ca.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/ca.po deleted file mode 100644 index 52c1614..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/ca.po +++ /dev/null @@ -1,147 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# marcescu, 2024 -# RGB Consulting , 2024 -# Óscar Fonseca , 2024 -# Iván Infantes Castarnado, 2024 -# Quim - coopdevs , 2024 -# Martin Trigaux, 2024 -# Noemi Pla, 2025 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Noemi Pla, 2025\n" -"Language-Team: Catalan (https://app.transifex.com/odoo/teams/41243/ca/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Assistent d'importació de compte SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Fitxer de dades comptables SAF-T per importar" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Paràmetres de comptabilitat" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Cancel·lar" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Empreses" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Empresa" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Empresa utilitzada per a la importació" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Creat per" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Creat el" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Nom mostrat" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Fitxer" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Nom de l'arxiu" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Importar" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Importar SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Importar els saldos inicials dels comptes" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Importa les teves dades comptables des de formats de fitxer SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Última actualització per" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Última actualització el" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "Importació SAF-T" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "Moviment de saldo inicial SAF-T" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Seleccionar un arxiu" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Primer hauries d'instal·lar una localització fiscal." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/cs.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/cs.po deleted file mode 100644 index 4ec65b7..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/cs.po +++ /dev/null @@ -1,142 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# Marta Wacławek, 2025 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Marta Wacławek, 2025\n" -"Language-Team: Czech (https://app.transifex.com/odoo/teams/41243/cs/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: cs\n" -"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Nastavení účetnictví" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Zrušit" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Společnosti" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Společnost" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Vytvořeno uživatelem" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Vytvořeno dne" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Zobrazovací název" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Soubor" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Název souboru" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Import" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Naimportovat počáteční zůstatky účtu" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Naposledy upraveno uživatelem" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Naposledy upraveno dne" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "SAF-T Import" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Nejprve byste měli nainstalovat fiskální lokalizaci." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/da.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/da.po deleted file mode 100644 index f5f0bcf..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/da.po +++ /dev/null @@ -1,143 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Mads Søndergaard, 2024 -# Pernille Kristensen , 2024 -# Martin Trigaux, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Martin Trigaux, 2024\n" -"Language-Team: Danish (https://app.transifex.com/odoo/teams/41243/da/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Regnskabsindstillinger" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Annullér" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Virksomheder" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Virksomhed" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Oprettet af" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Oprettet den" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Vis navn" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Fil" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Filnavn" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Importer" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Sidst opdateret af" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Sidst opdateret den" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Du bør først installere en Finans Lokalisering." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/de.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/de.po deleted file mode 100644 index 2abb15c..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/de.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Wil Odoo, 2024\n" -"Language-Team: German (https://app.transifex.com/odoo/teams/41243/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Buchhaltungsassistent für SAF-T-Import" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Zu importierende SAF-T-Datei für Buchhaltungsdaten" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Buchhaltungseinstellungen" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Abbrechen" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Unternehmen" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Unternehmen" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Für den Import verwendetes Unternehmen" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Erstellt von" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Erstellt am" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Anzeigename" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Datei" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Dateiname" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Importieren" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "SAF-T importieren" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Kontoreröffnungssalden importieren" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Importieren Sie Ihre Buchhaltungsdaten aus SAF-T-Dateiformaten" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Zuletzt aktualisiert von" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Zuletzt aktualisiert am" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "SAF-T-Import" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "SAF-T-Eröffnungsbuchung" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Datei auswählen" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Sie sollten zuerst eine steuerliche Lokalisierung installieren." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/el.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/el.po deleted file mode 100644 index 16536c9..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/el.po +++ /dev/null @@ -1,143 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Kostas Goutoudis , 2024 -# Stefanos Nikou , 2024 -# Martin Trigaux, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Martin Trigaux, 2024\n" -"Language-Team: Greek (https://app.transifex.com/odoo/teams/41243/el/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: el\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Ρυθμίσεις Λογιστικής" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Ακύρωση" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Εταιρίες" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Εταιρία" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Δημιουργήθηκε από" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Δημιουργήθηκε στις" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Εμφάνιση Ονόματος" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Αρχείο" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Όνομα αρχείου" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "Κωδικός" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Εισαγωγή" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Τελευταία Ενημέρωση από" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Τελευταία Ενημέρωση στις" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/es.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/es.po deleted file mode 100644 index c97a6cc..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/es.po +++ /dev/null @@ -1,145 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# -# "Larissa Manderfeld (lman)" , 2025. -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2025-08-25 10:08+0000\n" -"Last-Translator: \"Larissa Manderfeld (lman)\" \n" -"Language-Team: Spanish \n" -"Language: es\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 % 1000000 == 0)" -" ? 1 : 2);\n" -"X-Generator: Weblate 5.12.2\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Asistente de importación de cuenta SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Archivo de información de contabilidad SAF-T a importar" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Opciones de contabilidad" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Cancelar" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Compañías" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Compañía" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Compañía usada para la importación" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Creado por" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Creado el" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Nombre para mostrar" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Archivo" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Nombre de archivo" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Importar" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Importar SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Importar saldos de apertura de cuenta" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Importe sus datos de contabilidad desde formatos de archivos SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Última actualización por" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Última actualización el" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "Importación SAF-T" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "Movimiento de saldo de apertura de SAF-T" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Seleccionar archivo" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Primero instale su localización fiscal." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/es_419.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/es_419.po deleted file mode 100644 index 5d33376..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/es_419.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Wil Odoo, 2024\n" -"Language-Team: Spanish (Latin America) (https://app.transifex.com/odoo/teams/41243/es_419/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: es_419\n" -"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Asistente de importación SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Datos de contabilidad SAF-T por importar" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Ajustes de contabilidad" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Cancelar" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Empresas" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Empresa" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "La empresa que se usa para la importación" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Creado por" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Creado el" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Nombre en pantalla" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Archivo" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Nombre del archivo" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Importar" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Importar SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Importar los saldos iniciales de la cuenta" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Importar sus datos de contabilidad desde archivos con formatos SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Última actualización por" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Última actualización el" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "Importación SAF-T" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "Movimiento de apertura de saldo SAF-T" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Seleccionar archivo" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Primero debe instalar una localización fiscal." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/et.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/et.po deleted file mode 100644 index 9392d7c..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/et.po +++ /dev/null @@ -1,145 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Stevin Lilla, 2024 -# Egon Raamat , 2024 -# Arma Gedonsky , 2024 -# Anna, 2024 -# Birgit Vijar, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Birgit Vijar, 2024\n" -"Language-Team: Estonian (https://app.transifex.com/odoo/teams/41243/et/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: et\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Konto SAF-T impordi viisard" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Imporditav raamatupidamise SAF-T andmefail." - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Raamatupidamise seadistused" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Tühista" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Ettevõtted" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Ettevõte" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Impordiks kasutatud ettevõte" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Loonud" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Loodud" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Kuvatav nimi" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Fail" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Faili nimi" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Impordi" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Impordi SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Impordi algsaldod" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Impordi raamatupidamise andmed SAF-T faili formaadist" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Viimati uuendatud" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Viimati uuendatud" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "SAF-T import" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "SAF-T algsaldo kanne" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Vali fail" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Esmalt peaksite installima maksukeskkond. " diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/fa.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/fa.po deleted file mode 100644 index 667f4c5..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/fa.po +++ /dev/null @@ -1,142 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# zakariya moradi, 2025 -# Tiffany Chang, 2025 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Tiffany Chang, 2025\n" -"Language-Team: Persian (https://app.transifex.com/odoo/teams/41243/fa/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: fa\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "تنظیمات حسابداری" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "لغو" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "شرکت‌ها" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "شرکت" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "ایجاد شده توسط" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "ایجاد شده در" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "نام نمایشی" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "پرونده" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "نام فایل" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "شناسه" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "ورود" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "آخرین بروز رسانی توسط" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "آخرین بروز رسانی در" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "ابتدا باید یک برنامه‌ برای تعیین موقعیت مالی نصب کنید." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/fi.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/fi.po deleted file mode 100644 index 04608c5..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/fi.po +++ /dev/null @@ -1,147 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Martin Trigaux, 2024 -# Kari Lindgren , 2024 -# Tuomo Aura , 2024 -# Tommi Rintala , 2024 -# Ossi Mantylahti , 2024 -# Jessica Jakara, 2025 -# Jarmo Kortetjärvi , 2025 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Jarmo Kortetjärvi , 2025\n" -"Language-Team: Finnish (https://app.transifex.com/odoo/teams/41243/fi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Tili SAF-T tuonti-toiminto" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Kirjanpidon SAF-T-tiedosto, joka tuodaan" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Kirjanpidon asetukset" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Peruuta" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Yritykset" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Yritys" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Tuontia varten käytettävä yritys" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Luonut" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Luotu" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Näyttönimi" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Tiedosto" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Tiedostonnimi" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Tuo" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Tuo SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Tuo tilien avaussaldot" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Tuo kirjanpitotiedot SAF-T-tiedostoformaateista" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Viimeksi päivittänyt" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Viimeksi päivitetty" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "SAF-T Tuonti" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "SAF-T-avaussaldon muutos" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Valitse tiedosto" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Verotietojen asema on asennettava ensin." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/fr.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/fr.po deleted file mode 100644 index aed90e8..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/fr.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Wil Odoo, 2024\n" -"Language-Team: French (https://app.transifex.com/odoo/teams/41243/fr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: fr\n" -"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Assistant d'import de comptes SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Fichier de données comptables SAF-T à importer" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Paramètres de comptabilité" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Annuler" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Sociétés" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Société" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Société utilisée pour l'import" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Créé par" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Créé le" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Nom d'affichage" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Fichier" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Nom de fichier" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Import" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Importer SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Importer les soldes d'ouverture" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Importer vos données comptables à partir des formats de fichier SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Dernière mise à jour par" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Dernière mise à jour le" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "Import SAF-T" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "Mouvement du solde d'ouverture SAF-T" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Sélectionner un fichier" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Vous devez d'abord installer une localisation fiscale." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/he.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/he.po deleted file mode 100644 index cd022e8..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/he.po +++ /dev/null @@ -1,145 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# ZVI BLONDER , 2024 -# Moshe Flam , 2024 -# Martin Trigaux, 2024 -# Lilach Gilliam , 2024 -# Yihya Hugirat , 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Yihya Hugirat , 2024\n" -"Language-Team: Hebrew (https://app.transifex.com/odoo/teams/41243/he/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: he\n" -"Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "הגדרות חשבונאות" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "בטל" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "חברות" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "חברה" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "נוצר על-ידי" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "נוצר ב-" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "שם לתצוגה" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "קובץ" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "שם קובץ" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "מזהה" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "ייבא" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "עודכן לאחרונה על-ידי" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "עדכון אחרון ב" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/hi.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/hi.po deleted file mode 100644 index 38e3f5a..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/hi.po +++ /dev/null @@ -1,144 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Martin Trigaux, 2024 -# Wil Odoo, 2024 -# Manav Shah, 2025 -# Ujjawal Pathak, 2025 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Ujjawal Pathak, 2025\n" -"Language-Team: Hindi (https://app.transifex.com/odoo/teams/41243/hi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: hi\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "अकाउंट SAF-T इंपोर्ट विज़ॉर्ड" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "अकाउंटिंग की SAF-T फाइल सिस्टम में डालनी है" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "अकाउंटिंग सेटिंग" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "रद्द" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "कंपनियां" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "संस्था" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "इंपोर्ट करने के लिए इस्तेमाल की गई कंपनी" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "द्वारा निर्मित" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "इस तारीख को बनाया गया" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "डिस्प्ले नाम" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "फ़ाइल" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "फ़ाइल का नाम" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "आईडी" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "इंपोर्ट करें" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "SAF-T इंपोर्ट करें" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "अकाउंट ओपनिंग बैलेंस इंपोर्ट करें" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "अपनी अकाउंटिंग जानकारी SAF-T फ़ाइल से सिस्टम में इंपोर्ट करें" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "इन्होंने आखिरी बार अपडेट किया" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "आखिरी बार अपडेट हुआ" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "SAF-T इंपोर्ट" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "SAF-T ओपनिंग बैलेंस मूव" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "फ़ाइल चुनें" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "आपको पहले अपने देश के टैक्स और अकाउंटिंग नियम इंस्टॉल करने होंगे." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/hr.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/hr.po deleted file mode 100644 index d206af7..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/hr.po +++ /dev/null @@ -1,143 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Vladimir Olujić , 2024 -# Karolina Tonković , 2024 -# Bole , 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Bole , 2024\n" -"Language-Team: Croatian (https://app.transifex.com/odoo/teams/41243/hr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: hr\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: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Postavke računovodstva" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Otkaži" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Tvrtke" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Tvrtka" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Kreirao" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Kreirano" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Naziv za prikaz" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Datoteka" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Naziv datoteke" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Uvoz" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Promijenio" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Promijenjeno" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/hu.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/hu.po deleted file mode 100644 index 5f576db..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/hu.po +++ /dev/null @@ -1,146 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Kovács Tibor , 2024 -# Martin Trigaux, 2024 -# Tamás Dombos, 2024 -# Ákos Nagy , 2024 -# krnkris, 2024 -# gezza , 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: gezza , 2024\n" -"Language-Team: Hungarian (https://app.transifex.com/odoo/teams/41243/hu/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: hu\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Könyvelés beállítások" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Visszavonás" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Vállalatok" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Vállalat" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Létrehozta" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Létrehozva" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Megjelenített név" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Fájl" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Fájlnév" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Importálás" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Frissítette" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Frissítve" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/id.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/id.po deleted file mode 100644 index 39b6409..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/id.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Wil Odoo, 2024\n" -"Language-Team: Indonesian (https://app.transifex.com/odoo/teams/41243/id/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: id\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Alat bantu impor Akun SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "File data SAF-T Akuntansi untuk diimpor" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Pengaturan Akuntansi" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Batal" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Perusahaan" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Perusahaan" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Perusahaan digunakan untuk impor" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Dibuat oleh" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Dibuat pada" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Nama Tampilan" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "File" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Nama file" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Impor" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Impor SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Impor saldo buka akun" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Impor data akuntansi Anda dari file format SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Terakhir Diperbarui oleh" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Terakhir Diperbarui pada" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "Impor SAF-T" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "Pergerakkan saldo buka SAF-T" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Pilih File" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Anda sebaiknya menginstal Lokalisasi Fiskal terlebih dahulu" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/it.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/it.po deleted file mode 100644 index baf9ef7..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/it.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Wil Odoo, 2024\n" -"Language-Team: Italian (https://app.transifex.com/odoo/teams/41243/it/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: it\n" -"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Procedura guidata importazione conto SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "File dati SAF-T contabilità da importare" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Impostazioni contabilità" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Annulla" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Aziende" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Azienda" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Azienda utilizzata per l'importazione" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Creato da" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Creato il" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Nome visualizzato" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "File" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Nome file" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Importa" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Importa SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Importa saldi di apertura" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Importa i dati contabili da file con formato SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Ultimo aggiornamento di" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Ultimo aggiornamento il" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "Importazione SAF-T" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "Movimento saldo di apertura SAF-T" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Seleziona file" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Deve prima essere installata una localizzazione fiscale." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/ja.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/ja.po deleted file mode 100644 index 96de3d5..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/ja.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Wil Odoo, 2024\n" -"Language-Team: Japanese (https://app.transifex.com/odoo/teams/41243/ja/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: ja\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "アカウント SAF-T インポートウィザード" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "未インポート会計SAF-Tデータファイル" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "会計設定" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "キャンセル" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "会社" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "会社" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "インポートに使用された会社" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "作成者" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "作成日" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "表示名" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "ファイル" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "ファイル名" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "インポート" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "SAF-Tをインポート" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "口座開設残高をインポート" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "SAF-Tファイルフォーマットから会計データをインポート" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "最終更新者" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "最終更新日" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "SAF-T インポート" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "SAF-T開設残高記帳" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "ファイルを選択" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "まずは会計ローカライゼーションをインストールして下さい。" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/kab.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/kab.po deleted file mode 100644 index 3822374..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/kab.po +++ /dev/null @@ -1,142 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Odoo Translation Bot , 2025. -# Weblate , 2025. -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2025-11-17 16:33+0000\n" -"Last-Translator: Weblate \n" -"Language-Team: Kabyle \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" -"X-Generator: Weblate 5.12.2\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Sefsex" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Tikebbaniyin" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Takebbwanit" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Yerna-t" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Yerna di" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "Asulay" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Aleqqem aneggaru sɣuṛ" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Aleqqem aneggaru di" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/ko.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/ko.po deleted file mode 100644 index a73cafa..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/ko.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Wil Odoo, 2024\n" -"Language-Team: Korean (https://app.transifex.com/odoo/teams/41243/ko/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: ko\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "계정 SAF-T 가져오기 마법사" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "가져올 회계 SAF-T 데이터 파일" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "회계 설정" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "취소" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "회사" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "회사" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "가져오기에 사용된 회사" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "작성자" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "작성일자" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "표시명" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "파일" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "파일명" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "가져오기" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "SAF-T 가져오기" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "계좌 개설 잔액 가져오기" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "SAF-T 파일 형식에서 회계 데이터 가져오기" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "최근 갱신한 사람" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "최근 갱신 일자" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "SAF-T 가져오기" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "SAF-T 개시 잔액 이동" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "파일 선택" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "재정 현지화 항목을 먼저 설치해야 합니다." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/ku.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/ku.po deleted file mode 100644 index 3eb4c0a..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/ku.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Raz Omer Hussein, 2025 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Raz Omer Hussein, 2025\n" -"Language-Team: Kurdish (https://app.transifex.com/odoo/teams/41243/ku/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: ku\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "ڕەتکردنەوە" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "کۆمپانیاکان" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "کۆمپانیا" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "دروستکراوە لەلایەن..." - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "دروستکراوە لە" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "دوایین نوێکردنەوە لەلایەن..." - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "دوایین نوێکردنەوە لە..." - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/lt.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/lt.po deleted file mode 100644 index 4f372d5..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/lt.po +++ /dev/null @@ -1,145 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Linas Versada , 2024 -# Arunas V. , 2024 -# UAB "Draugiški sprendimai" , 2024 -# digitouch UAB , 2024 -# Martin Trigaux, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Martin Trigaux, 2024\n" -"Language-Team: Lithuanian (https://app.transifex.com/odoo/teams/41243/lt/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: lt\n" -"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Apskaitos nustatymai " - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Atšaukti" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Įmonės" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Įmonė" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Sukūrė" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Sukurta" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Rodomas pavadinimas" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Failas" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Failo pavadinimas" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Importuoti" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Paskutinį kartą atnaujino" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Paskutinį kartą atnaujinta" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/lv.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/lv.po deleted file mode 100644 index 266c411..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/lv.po +++ /dev/null @@ -1,145 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Armīns Jeltajevs , 2024 -# Arnis Putniņš , 2024 -# Konstantins Zabogonskis , 2024 -# ievaputnina , 2024 -# Martin Trigaux, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Martin Trigaux, 2024\n" -"Language-Team: Latvian (https://app.transifex.com/odoo/teams/41243/lv/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: lv\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Grāmatvedības uzstādījumi" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Atcelt" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Uzņēmumi" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Uzņēmums" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Izveidoja" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Izveidots" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Nosaukums" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Fails" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Faila nosaukums" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Importēt" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Pēdējo reizi atjaunoja" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Pēdējās izmaiņas" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/mn.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/mn.po deleted file mode 100644 index 6343a1e..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/mn.po +++ /dev/null @@ -1,143 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Ubuntu Erka , 2024 -# Batmunkh Ganbat , 2024 -# Martin Trigaux, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Martin Trigaux, 2024\n" -"Language-Team: Mongolian (https://app.transifex.com/odoo/teams/41243/mn/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: mn\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Санхүүгийн тохиргоо" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Цуцлах" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Компаниуд" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Компани" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Үүсгэсэн этгээд" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Үүсгэсэн огноо" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Дэлгэрэнгүй нэр" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Файл" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Файлын нэр" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Импортлох" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Сүүлд зассан этгээд" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Сүүлд зассан огноо" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/my.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/my.po deleted file mode 100644 index a43e213..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/my.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Oakarmin Iron , 2025. -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2025-10-09 07:27+0000\n" -"Last-Translator: Oakarmin Iron \n" -"Language-Team: Burmese \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.12.2\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "ပယ်ဖျက်" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "ကုမ္ပဏီများ" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "ကုမ္ပဏီ" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "ဖန်တီးသူ" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "ဖန်တီးချိန်" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "ပြသသော အမည်" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "ဖိုင်" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "အိုင်ဒီ" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "အင်ပို့" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "နောက်ဆုံးပြင်ဆင်သူ" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "နောက်ဆုံးပြင်ဆင်ချိန်" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/nb.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/nb.po deleted file mode 100644 index 92e994c..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/nb.po +++ /dev/null @@ -1,144 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Jorunn D. Newth, 2024 -# Thor Arne Hvidsten , 2024 -# Marius Stedjan , 2024 -# Martin Trigaux, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Martin Trigaux, 2024\n" -"Language-Team: Norwegian Bokmål (https://app.transifex.com/odoo/teams/41243/nb/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: nb\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Regnskapsinnstillinger" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Avbryt" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Firmaer" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Firma" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Opprettet av" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Opprettet den" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Visningsnavn" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Fil" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Filnavn" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Import" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Sist oppdatert av" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Sist oppdatert" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/nl.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/nl.po deleted file mode 100644 index 73165c2..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/nl.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Wil Odoo, 2024\n" -"Language-Team: Dutch (https://app.transifex.com/odoo/teams/41243/nl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: nl\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Account SAF-T importwizard" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Te importeren SAF-T-boekhoudgegevensbestand" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Boekhoudinstellingen" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Annuleren" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Bedrijven" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Bedrijf" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Bedrijf gebruikt voor import" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Aangemaakt door" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Aangemaakt op" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Schermnaam" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Bestand" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Bestandsnaam" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Import" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "SAF-T importeren" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Openingssaldi importeren" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Importeer je boekhoudgegevens uit SAF-T-bestanden" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Laatst bijgewerkt door" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Laatste bijgewerkt op" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "SAF-T import" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "SAF-T openingssaldo" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Selecteer bestand" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Je moet eerst een fiscale lokalisatie installeren." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/pl.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/pl.po deleted file mode 100644 index 0b1570c..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/pl.po +++ /dev/null @@ -1,147 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# Marta Wacławek, 2025 -# -# Weblate , 2025. -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2025-11-15 18:34+0000\n" -"Last-Translator: Weblate \n" -"Language-Team: Polish \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (" -"n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && " -"n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" -"X-Generator: Weblate 5.12.2\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Kreator importu konta SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Plik danych księgowych SAF-T do importu" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Ustawienia księgowości" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Anuluj" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Firmy" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Firma" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Firma wykorzystywana do importu" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Utworzył(a)" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Data utworzenia" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Nazwa wyświetlana" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Plik" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Nazwa pliku" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Importuj" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Import SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Importuj salda początkowe kont" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Importuj dane księgowe z formatów pliku SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Ostatnio aktualizowane przez" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Data ostatniej aktualizacji" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "Import SAF-T" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "Saldo otwarcia SAF-T" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Wybierz plik" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "W pierwszej kolejności należy zainstalować lokalizację fiskalną." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/pt.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/pt.po deleted file mode 100644 index fee65d5..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/pt.po +++ /dev/null @@ -1,146 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# NumerSpiral HBG, 2025 -# Peter Lawrence Romão , 2025 -# Wil Odoo, 2025 -# Weblate , 2025. -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2025-11-15 18:34+0000\n" -"Last-Translator: Weblate \n" -"Language-Team: Portuguese \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : ((n != 0 && n % " -"1000000 == 0) ? 1 : 2);\n" -"X-Generator: Weblate 5.12.2\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Assistente de importação de SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Arquivo de dados contábeis SAF-T a importar" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Definições da Contabilidade" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Cancelar" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Empresas" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Empresa" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Empresa utilizada para importação" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Criado por" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Criado em" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Nome a Exibir" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Ficheiro" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Nome de ficheiro" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "Id." - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Importar" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Importar SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Importar saldos iniciais de contas" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Importar dados contábeis de formatos de arquivo SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Última Atualização por" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Última Atualização em" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "Importação SAF-T" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "Movimento do saldo inicial do SAF-T" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Selecionar arquivo" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "É necessário instalar uma localização fiscal primeiro." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/pt_BR.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/pt_BR.po deleted file mode 100644 index 21a2d80..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/pt_BR.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Wil Odoo, 2024\n" -"Language-Team: Portuguese (Brazil) (https://app.transifex.com/odoo/teams/41243/pt_BR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: pt_BR\n" -"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Assistente de importação de SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Arquivo de dados contábeis SAF-T a importar" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Definições financeiras" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Cancelar" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Empresas" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Empresa" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Empresa utilizada para importação" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Criado por" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Criado em" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Nome exibido" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Arquivo" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Nome do arquivo" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Importar" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Importar SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Importar saldos iniciais de contas" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Importar dados contábeis de formatos de arquivo SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Última atualização por" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Última atualização em" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "Importação SAF-T" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "Movimento do saldo inicial do SAF-T" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Selecionar arquivo" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Você deve instalar uma localização fiscal primeiro." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/ro.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/ro.po deleted file mode 100644 index be96027..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/ro.po +++ /dev/null @@ -1,143 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Lyall Kindmurr, 2024 -# Wil Odoo, 2024 -# Larisa_nexterp, 2025 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Larisa_nexterp, 2025\n" -"Language-Team: Romanian (https://app.transifex.com/odoo/teams/41243/ro/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Asistent import SAF-T cont" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Fișierul de date SAF-T contabil ce urmează a fi importat" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Setări contabilitate" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Anulează" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Companii" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Companie" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Compania folosită pentru import" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Creat de" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Creat pe" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Nume afișat" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Fișier" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Nume fișier" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Importă" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Importă SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Importă soldurile de deschidere ale conturilor" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Importă datele contabile din fișiere SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Ultima actualizare făcută de" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Ultima actualizare pe" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "Import SAF-T" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "Mișcare sold de deschidere SAF-T" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Selectează fișier" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Ar trebui să instalați mai întâi o localizare fiscală." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/ru.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/ru.po deleted file mode 100644 index 5b5d4a2..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/ru.po +++ /dev/null @@ -1,142 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# Anastasiia Koroleva, 2025 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Anastasiia Koroleva, 2025\n" -"Language-Team: Russian (https://app.transifex.com/odoo/teams/41243/ru/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: ru\n" -"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Мастер импорта счета SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Импортируемый файл данных бухгалтерского учета SAF-T" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Бухгалтерские настройки" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Отменить" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Компании" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Компания" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Компания, используемая для импорта" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Создано:" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Дата создания:" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Отображаемое имя" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Файл" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Название файла" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Импорт" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Импорт SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Импортируйте начальные остатки по счетам" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Импорт бухгалтерских данных из файлов формата SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Последнее обновление:" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Дата последнего обновления:" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "SAF-T Импорт" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "Перемещение баланса открытия SAF-T" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Выбрать файл" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Сначала необходимо установить фискальную локализацию." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/sk.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/sk.po deleted file mode 100644 index 70f3e4d..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/sk.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Wil Odoo, 2024\n" -"Language-Team: Slovak (https://app.transifex.com/odoo/teams/41243/sk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: sk\n" -"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Nastavenia účtovníctva" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Zrušené" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Spoločnosti" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Spoločnost" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Vytvoril" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Vytvorené" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Zobrazovaný Názov" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Súbor" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Názov súboru" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Import" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Naposledy upravoval" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Naposledy upravované" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Najskôr by ste si mali nainštalovať fiškálnu lokalizáciu." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/sl.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/sl.po deleted file mode 100644 index 430cb0e..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/sl.po +++ /dev/null @@ -1,142 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# Aleš Pipan, 2025 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Aleš Pipan, 2025\n" -"Language-Team: Slovenian (https://app.transifex.com/odoo/teams/41243/sl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Čarovnik za uvoz računa SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Računovodska podatkovna datoteka SAF-T za uvoz" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Nastavitve računovodstva" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Prekliči" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Podjetja" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Podjetje" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Podjetje, uporabljeno za uvoz" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Ustvaril" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Ustvarjeno" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Prikazani naziv" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Datoteka" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Naziv datoteke" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Uvozi" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Uvoz SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Uvozi začetna stanja na računu" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Uvozite svoje računovodske podatke iz formatov datotek SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Zadnji posodobil" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Zadnjič posodobljeno" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "SAF-T Uvoz" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "SAF-T premik začetnega stanja" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Izberite datoteko" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Najprej morate namestiti fiskalno lokalizacijo." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/sr@latin.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/sr@latin.po deleted file mode 100644 index 85d0b7a..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/sr@latin.po +++ /dev/null @@ -1,142 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Weblate , 2025. -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2025-11-15 18:35+0000\n" -"Last-Translator: Weblate \n" -"Language-Team: Serbian (Latin script) \n" -"Language: sr@latin\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.12.2\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Otkaži" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Preduzeća" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Kompanija" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Kreirao" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Kreirano" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Naziv za prikaz" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Datoteka" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Uvoz" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Poslednje izmenio/la" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Poslednje ažuriranje dana" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/sv.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/sv.po deleted file mode 100644 index a118d50..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/sv.po +++ /dev/null @@ -1,147 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Haojun Zou , 2024 -# Robin Calvin, 2024 -# Anders Wallenquist , 2024 -# Martin Trigaux, 2024 -# Jakob Krabbe , 2024 -# Weblate , 2025. -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2025-11-15 18:34+0000\n" -"Last-Translator: Weblate \n" -"Language-Team: Swedish \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: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Inställningar för redovisning" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Avbryt" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Företag" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Företag" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Skapad av" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Skapad den" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Visningsnamn" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Fil" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Filnamn" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Importera" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Importera ingående saldon för konton" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Senast uppdaterad av" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Senast uppdaterad den" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "SAF-T Import" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Välj fil" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/th.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/th.po deleted file mode 100644 index fc909e5..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/th.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Wil Odoo, 2024\n" -"Language-Team: Thai (https://app.transifex.com/odoo/teams/41243/th/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: th\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "เครื่องมือนำเข้า SAF-T ของบัญชี" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "ไฟล์ข้อมูลบัญชี SAF-T ที่จะนำเข้า" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "การตั้งค่าการบัญชี" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "ยกเลิก" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "บริษัท" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "บริษัท" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "บริษัทที่ใช้ในการนำเข้า" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "สร้างโดย" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "สร้างเมื่อ" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "แสดงชื่อ" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "ไฟล์" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "ชื่อไฟล์" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ไอดี" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "นำเข้า" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "นำเข้า SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "นำเข้ายอดคงเหลือเปิดบัญชี" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "นำเข้าข้อมูลบัญชีของคุณจากรูปแบบไฟล์ SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "อัปเดตครั้งล่าสุดโดย" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "อัปเดตครั้งล่าสุดเมื่อ" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "การนำเข้า SAF-T" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "SAF-T การเปิดยอดคงเหลือ" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "เลือกไฟล์" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "คุณควรติดตั้งการประยุกต์ใช้ทางการเงินก่อน" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/tr.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/tr.po deleted file mode 100644 index 1f2ec66..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/tr.po +++ /dev/null @@ -1,144 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# emre oktem, 2024 -# Ediz Duman , 2024 -# Murat Kaplan , 2024 -# Deniz Guvener_Odoo , 2025 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Deniz Guvener_Odoo , 2025\n" -"Language-Team: Turkish (https://app.transifex.com/odoo/teams/41243/tr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: tr\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "SAF-T hesap içe aktarma sihirbazı" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "İçe aktarılacak Muhasebe SAF-T veri dosyası" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Muhasebe Ayarları" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "İptal" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Şirketler" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Firma" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "İçe aktarma için kullanılan şirket" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Tarafından oluşturuldu" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Oluşturuldu" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "İsim Göster" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Dosya" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Dosya Adı" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "İçe Aktar" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "İlgili Kişileri Tanımla" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Hesap açılış bakiyelerini içe aktar" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Muhasebe verilerinizi SAF-T dosya formatlarından içe aktarın" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Son Güncelleyen" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Son Güncelleme" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "Partnerleri Görüntüle" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "SAF-T açılış bakiyesi hareketi" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Dosya Seç" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Önce bir Mali Yerelleştirme modülü kurmalısınız." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/uk.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/uk.po deleted file mode 100644 index d1c07b6..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/uk.po +++ /dev/null @@ -1,142 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# Alina Lisnenko , 2025 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Alina Lisnenko , 2025\n" -"Language-Team: Ukrainian (https://app.transifex.com/odoo/teams/41243/uk/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: uk\n" -"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Помічник імпорту рахунку SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Файл бухгалтерських даних SAF-T для імпорту" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Налаштування бухобілку" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Скасувати" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Компанії" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Компанія" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Компанія, що використовується для імпорту" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Створив" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Створено" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Назва для відображення" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Файл" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Назва файлу" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Імпорт" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Імпорт SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Імпортувати відкритий бухгалтерський баланс" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Імпортуйте ваші бухгалтерські дані з форматів файлу SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Востаннє оновив" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Останнє оновлення" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "Імпорт SAF-T" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "Проводка відкритого балансу SAF-T" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Виберіть файл" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Спершу вам необхідно встановити схему оподаткування." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/vi.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/vi.po deleted file mode 100644 index 0735b97..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/vi.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Wil Odoo, 2024\n" -"Language-Team: Vietnamese (https://app.transifex.com/odoo/teams/41243/vi/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: vi\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "Công cụ nhập SAF-T kế toán" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "Tệp dữ liệu kế toán SAF-T cần nhập" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "Cài đặt kế toán" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "Hủy" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "Công ty" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "Công ty" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "Công ty được sử dụng để nhập" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "Được tạo bởi" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "Được tạo vào" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "Tên hiển thị" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "Tệp" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "Tên tập tin" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "Nhập" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "Nhập SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "Nhập số dư đầu kỳ của tài khoản" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "Nhập dữ liệu kế toán của bạn từ định dạng tệp SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "Cập nhật lần cuối bởi" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "Cập nhật lần cuối vào" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "Nhập SAF-T" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "SAF-T opening balance move" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "Chọn tệp" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "Đầu tiên, bạn nên cài đặt Bản địa hoá tài chính." diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/zh_CN.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/zh_CN.po deleted file mode 100644 index 7f69b33..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/zh_CN.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Wil Odoo, 2024\n" -"Language-Team: Chinese (China) (https://app.transifex.com/odoo/teams/41243/zh_CN/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "账户 SAF-T 导入向导" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "要导入的会计 SAF-T 数据文件" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "会计设置" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "取消" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "公司" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "公司" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "用作导入的公司" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "创建人" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "创建日期" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "显示名称" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "文件" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "文件名" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "ID" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "导入" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "导入 SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "导入账户开户结余" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "从 SAF-T 文件格式导入会计数据" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "最后更新人" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "上次更新日期" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "SAF-T 导入" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "SAF-T 开户余额分录" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "选择文件" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "您应该首先安装财务本地化套装。" diff --git a/dev_odex30_accounting/odex30_account_saft_import/i18n/zh_TW.po b/dev_odex30_accounting/odex30_account_saft_import/i18n/zh_TW.po deleted file mode 100644 index 1754377..0000000 --- a/dev_odex30_accounting/odex30_account_saft_import/i18n/zh_TW.po +++ /dev/null @@ -1,141 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_saft_import -# -# Translators: -# Wil Odoo, 2024 -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 18.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-25 09:26+0000\n" -"PO-Revision-Date: 2024-09-25 09:44+0000\n" -"Last-Translator: Wil Odoo, 2024\n" -"Language-Team: Chinese (Taiwan) (https://app.transifex.com/odoo/teams/41243/zh_TW/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: zh_TW\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_account_saft_import_wizard -msgid "Account SAF-T import wizard" -msgstr "賬戶 SAF-T 匯入精靈" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "Accounting SAF-T data file to be imported" -msgstr "要匯入的會計 SAF-T 數據檔案" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "Accounting Settings" -msgstr "會計設定" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Cancel" -msgstr "取消" - -#. module: account_saft_import -#: model:ir.model,name:account_saft_import.model_res_company -msgid "Companies" -msgstr "公司" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company" -msgstr "公司" - -#. module: account_saft_import -#: model:ir.model.fields,help:account_saft_import.field_account_saft_import_wizard__company_id -msgid "Company used for the import" -msgstr "用作匯入的公司" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_uid -msgid "Created by" -msgstr "建立人員" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__create_date -msgid "Created on" -msgstr "建立於" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__display_name -msgid "Display Name" -msgstr "顯示名稱" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_id -msgid "File" -msgstr "文件" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__attachment_name -msgid "Filename" -msgstr "文件名" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__id -msgid "ID" -msgstr "識別號" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import" -msgstr "匯入" - -#. module: account_saft_import -#. odoo-javascript -#: code:addons/account_saft_import/static/src/xml/account_saft_import_button.xml:0 -msgid "Import SAF-T" -msgstr "匯入 SAF-T" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__import_opening_balance -msgid "Import account opening balances" -msgstr "匯入賬戶開戶結餘" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Import your accounting data from SAF-T file formats" -msgstr "從 SAF-T 檔案格式匯入會計數據" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_uid -msgid "Last Updated by" -msgstr "最後更新者" - -#. module: account_saft_import -#: model:ir.model.fields,field_description:account_saft_import.field_account_saft_import_wizard__write_date -msgid "Last Updated on" -msgstr "最後更新於" - -#. module: account_saft_import -#: model:ir.actions.act_window,name:account_saft_import.open_saft_import_wizard -#: model:ir.actions.server,name:account_saft_import.account_saft_import_action -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "SAF-T Import" -msgstr "SAF-T 匯入" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "SAF-T opening balance move" -msgstr "SAF-T 開戶結餘分錄" - -#. module: account_saft_import -#: model_terms:ir.ui.view,arch_db:account_saft_import.account_saft_import_form -msgid "Select File" -msgstr "選擇檔案" - -#. module: account_saft_import -#. odoo-python -#: code:addons/account_saft_import/wizard/import_wizard.py:0 -msgid "You should install a Fiscal Localization first." -msgstr "你應該先安裝財政本地化套裝。" diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/__init__.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/__init__.py new file mode 100644 index 0000000..0217b0f --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/__init__.py @@ -0,0 +1,3 @@ + +from . import models +from . import wizard diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/__manifest__.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/__manifest__.py new file mode 100644 index 0000000..b72667c --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/__manifest__.py @@ -0,0 +1,38 @@ +{ + 'name': "SEPA Direct Debit", + + 'summary': "Collect payments from your customers through SEPA direct debit.", + + 'description': """ +This module enables the generation of SEPA Direct Debit (SDD)-compliant XML files (consistent +with pain.008.001.02 specification) to send to your bank in order to +collect a set of payments. + + """, + + 'category': 'Accounting/Accounting', + + 'depends': ['base_iban', 'odex30_account_batch_payment', 'account'], + + 'data': [ + 'security/account_sepa_direct_debit_security.xml', + 'security/ir.model.access.csv', + 'report/empty_mandate_report.xml', + 'data/account_data.xml', + 'data/sdd_payment_method.xml', + 'data/sdd_mandate_state_cron.xml', + 'data/email_templates.xml', + 'views/sdd_mandate_views.xml', + 'views/account_payment_view.xml', + 'views/account_journal_dashboard_view.xml', + 'views/report_invoice.xml', + 'views/res_config_settings_views.xml', + 'views/res_partner_view.xml', + 'views/account_batch_payment_views.xml', + 'views/account_move_view.xml', + 'views/account_journal_views.xml', + 'wizard/account_payment_register_view.xml', + 'wizard/sdd_mandate_send_views.xml', + ], + 'license': 'OEEL-1', +} diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/data/account_data.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/data/account_data.xml new file mode 100644 index 0000000..e4b41f0 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/data/account_data.xml @@ -0,0 +1,12 @@ + + + + + + Paid via direct debit + account.move + + Invoice paid via direct debit. + + + \ No newline at end of file diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/data/email_templates.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/data/email_templates.xml new file mode 100644 index 0000000..764eec4 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/data/email_templates.xml @@ -0,0 +1,219 @@ + + + + + SEPA Direct Debit mandate expiration warning + SEPA Direct Debit mandate expiration warning + {{ (object.company_id.email_formatted or user.email_formatted) }} + {{ ','.join(object.message_follower_ids.mapped('email')) }} + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + +
+
+ Hello,

+ A SEPA Direct Debit mandate will reach its automatic expiration date on 2020-04-18
+ This can be caused by one of the following reason: +
    +
  • + That date is the mandate end date agreed upon signature. +
  • +
  • + It would then be more than 36 months since the last time this mandate was used. +
  • +
+ + Security Tip: Check that the domain name you are redirected to is: + https://yourcompany.odoo.com +
+
+
+
+
+
+ + + + +
+ Powered by Odoo +
+ + + + +
+ PS: This is an automated email sent by EXP Accounting to notify you a SEPA Direct Debit mandate is going to get automatically closed. +
+
+
+
+ + + SEPA Direct Debit Customer Pre-Notification mail + Payment notification {{ object.memo }} + Sent to the customer to indicate their account will be charged + {{ (object.company_id.email_formatted or user.email_formatted) }} + {{ object.partner_id.email_formatted }} + + {{ object.partner_id.lang or user.lang }} + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + +
+ + Your Direct Debit Payment Notification
+
+ +
+
+
+
+ + + +
+ Dear Azure Interior
+
+ A Direct Debit payment request amounting to + $ 0.00 + will be sent to your bank.
+ Your account ending with 1234 will be automatically debited on the + 2020-04-18, + or shortly thereafter.
+ please make sure you have the requested funds.
+
+ + Merchant data:
+
    + +
  • IBAN: NO 93 8601 1117947
  • +
    + +
  • SEPA DIRECT DEBIT MANDATE REFERENCE:
  • +
    +
+
+
+ Do not hesitate to contact us if you have any question. +
+
+
+
+ + + +
+ YourCompany +
+ + +1 650-123-4567 | + + + info@yourcompany.com | + + + http://www.example.com + +
+
+
+ + +
+ Powered by Odoo +
+
+
+
+ + + SEPA Direct Debit Sending + Email requesting the customer to sign the mandate attached + + {{ object.partner_id.display_name }} SEPA Direct Debit Mandate + + +
+

+ Dear Azure Interior +
+
+ Here is your SEPA Direct Debit Mandate to sign to authorize + YourCompany + to send instructions to your bank to debit your account in accordance with the instructions from + YourCompany + Do not hesitate to contact us if you have any questions. +
+ Best regards, + +

+ --
Mitchell Admin
+
+

+
+
+
+
+
diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/data/sdd_mandate_state_cron.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/data/sdd_mandate_state_cron.xml new file mode 100644 index 0000000..a5bff7e --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/data/sdd_mandate_state_cron.xml @@ -0,0 +1,19 @@ + + + + + + + + Mandate state updater + + + 1 + days + + code + model.cron_update_mandates_states() + 0 + + + \ No newline at end of file diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/data/sdd_payment_method.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/data/sdd_payment_method.xml new file mode 100644 index 0000000..42e83b5 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/data/sdd_payment_method.xml @@ -0,0 +1,12 @@ + + + + + + SEPA Direct Debit + sdd + inbound + + + + diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/i18n/ar.po b/dev_odex30_accounting/odex30_account_sepa_direct_debit/i18n/ar.po new file mode 100644 index 0000000..3b65d5b --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/i18n/ar.po @@ -0,0 +1,2015 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * odex30_account_sepa_direct_debit +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-01-18 15:37+0000\n" +"PO-Revision-Date: 2026-01-18 15:37+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: ar\n" +"X-Generator: Weblate 5.6.1\n" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "(if applicable)" +msgstr "(إن وجد)" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "(optional)" +msgstr "(اختياري)" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_form +msgid "" +".\n" +" Make sure the mandate isn't meant for the parent contact." +msgstr "" +".\n" +" تأكد من أن التوكيل ليس مخصصاً للعميل الأساسي." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.view_batch_payment_form_inherit +msgid "" +".\n" +" SEPA requires a 5 days notice." +msgstr "" +".\n" +" يتطلب SEPA إشعاراً بـ 5 أيام." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "123456789" +msgstr "123456789" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "2023-08-10" +msgstr "2023-08-10" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "2023-09-10" +msgstr "2023-09-10" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "380055" +msgstr "380055" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "3956012345678" +msgstr "3956012345678" + +#. module: odex30_account_sepa_direct_debit +#: model:mail.template,body_html:odex30_account_sepa_direct_debit.email_template_sdd_new_mandate +msgid "" +"
\n" +"

\n" +" Dear Azure Interior\n" +"
\n" +"
\n" +" Here is your SEPA Direct Debit Mandate to sign to authorize\n" +" YourCompany\n" +" to send instructions to your bank to debit your account in accordance with the instructions from\n" +" YourCompany\n" +" Do not hesitate to contact us if you have any questions.\n" +"
\n" +" Best regards,\n" +" \n" +"

\n" +" --
Mitchell Admin
\n" +"
\n" +"

\n" +"
\n" +" " +msgstr "" +"
\n" +"

\n" +" عزيزي Azure Interior\n" +"
\n" +"
\n" +" إليك توكيل SEPA للسحب المباشر للتوقيع لتفويض\n" +" YourCompany\n" +" لإرسال تعليمات إلى بنكك لسحب حسابك وفقاً للتعليمات من\n" +" YourCompany\n" +" لا تتردد في التواصل معنا إذا كان لديك أي أسئلة.\n" +"
\n" +" مع أطيب التحيات،\n" +" \n" +"

\n" +" --
Mitchell Admin
\n" +"
\n" +"

\n" +"
\n" +" " + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_form +msgid " day(s)" +msgstr " يوم(أيام)" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Address:" +msgstr "العنوان:" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "City: " +msgstr "المدينة: " + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Country: " +msgstr "البلد: " + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Creditor identifier:" +msgstr "معرف الدائن:" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "" +"Date and place of signature: " +"......................................" +msgstr "" +"تاريخ ومكان التوقيع: " +"......................................" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Email:" +msgstr "البريد الإلكتروني:" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "IBAN:" +msgstr "رقم IBAN:" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Mandate identifier:" +msgstr "معرف التوكيل:" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "" +"Name of the reference party: " +"......................................" +msgstr "" +"اسم الطرف المرجعي: " +"......................................" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Phone:" +msgstr "الهاتف:" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Signature:" +msgstr "التوقيع:" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Start date:" +msgstr "تاريخ البدء:" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Transaction type: recurrent" +msgstr "نوع المعاملة: متكرر" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Zip: " +msgstr "الرمز البريدي: " + +#. module: odex30_account_sepa_direct_debit +#: model:mail.template,body_html:odex30_account_sepa_direct_debit.email_template_sdd_pre_notification +msgid "" +"\n" +"\n" +"\n" +"
\n" +"\n" +"\n" +" \n" +" \n" +" \n" +" \n" +"\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +"\n" +"
\n" +" \n" +" \n" +" \n" +" \n" +"
\n" +" \n" +" Your Direct Debit Payment Notification
\n" +"
\n" +" \n" +"
\n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +" \n" +"
\n" +" Dear Azure Interior
\n" +"
\n" +" A Direct Debit payment request amounting to\n" +" $ 0.00\n" +" will be sent to your bank.
\n" +" Your account ending with 1234 will be automatically debited on the\n" +" 2020-04-18,\n" +" or shortly thereafter.
\n" +" please make sure you have the requested funds.
\n" +"
\n" +" \n" +" Merchant data:
\n" +"
    \n" +" \n" +"
  • IBAN: NO 93 8601 1117947
  • \n" +"
    \n" +" \n" +"
  • SEPA DIRECT DEBIT MANDATE REFERENCE:
  • \n" +"
    \n" +"
\n" +"
\n" +"
\n" +" Do not hesitate to contact us if you have any question.\n" +"
\n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +" \n" +"
\n" +" YourCompany\n" +"
\n" +" \n" +" +1 650-123-4567 |\n" +" \n" +" \n" +" info@yourcompany.com |\n" +" \n" +" \n" +" http://www.example.com\n" +" \n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +"
\n" +" Powered by Odoo\n" +"
\n" +"
\n" +" " +msgstr "" +"\n" +"\n" +"\n" +"
\n" +"\n" +"\n" +" \n" +" \n" +" \n" +" \n" +"\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +"\n" +"
\n" +" \n" +" \n" +" \n" +" \n" +"
\n" +" \n" +" إشعار دفع سحب مباشر
\n" +"
\n" +" \n" +"
\n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +" \n" +"
\n" +" عزيزي Azure Interior
\n" +"
\n" +" تم إرسال طلب دفع سحب مباشر بقيمة\n" +" $ 0.00\n" +" إلى بنكك.
\n" +" سيتم سحب حسابك المنتهي برقم 1234 تلقائياً في\n" +" 2020-04-18\n" +" أو بعده بوقت قصير.
\n" +" يرجى التأكد من وجود الأموال المطلوبة.
\n" +"
\n" +" \n" +" بيانات التاجر:
\n" +"
    \n" +" \n" +"
  • IBAN: NO 93 8601 1117947
  • \n" +"
    \n" +" \n" +"
  • مرجع توكيل SEPA للسحب المباشر:
  • \n" +"
    \n" +"
\n" +"
\n" +"
\n" +" لا تتردد في التواصل معنا إذا كان لديك أي استفسار.\n" +"
\n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +" \n" +"
\n" +" YourCompany\n" +"
\n" +" \n" +" +1 650-123-4567 |\n" +" \n" +" \n" +" info@yourcompany.com |\n" +" \n" +" \n" +" http://www.example.com\n" +" \n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +"
\n" +" مدعوم من Odoo\n" +"
\n" +"
\n" +" " + +#. module: odex30_account_sepa_direct_debit +#: model:mail.template,body_html:odex30_account_sepa_direct_debit.email_template_sdd_mandate_expiring +msgid "" +"\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +"
\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +"
\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +"
\n" +"
\n" +" Hello,

\n" +" A SEPA Direct Debit mandate will reach its automatic expiration date on 2020-04-18
\n" +" This can be caused by one of the following reason:\n" +"
    \n" +"
  • \n" +" That date is the mandate end date agreed upon signature.\n" +"
  • \n" +"
  • \n" +" It would then be more than 36 months since the last time this mandate was used.\n" +"
  • \n" +"
\n" +" \n" +" Security Tip: Check that the domain name you are redirected to is: \n" +" https://yourcompany.odoo.com\n" +"
\n" +"
\n" +"
\n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +" \n" +" \n" +"
\n" +" Powered by Odoo\n" +"
\n" +" \n" +" \n" +" \n" +" \n" +"
\n" +" PS: This is an automated email sent by EXP Accounting to notify you a SEPA Direct Debit mandate is going to get automatically closed.\n" +"
\n" +"
\n" +" " +msgstr "" +"\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +"
\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +"
\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +"
\n" +"
\n" +" مرحباً،

\n" +" سيصل توكيل SEPA للسحب المباشر إلى تاريخ انتهاء صلاحيته التلقائي في 2020-04-18
\n" +" يمكن أن يكون ذلك بسبب أحد الأسباب التالية:\n" +"
    \n" +"
  • \n" +" هذا التاريخ هو تاريخ نهاية التوكيل المتفق عليه عند التوقيع.\n" +"
  • \n" +"
  • \n" +" مر أكثر من 36 شهراً منذ آخر استخدام لهذا التوكيل.\n" +"
  • \n" +"
\n" +" \n" +" نصيحة أمان: تحقق من أن اسم النطاق الذي سيتم توجيهك إليه هو: \n" +" https://yourcompany.odoo.com\n" +"
\n" +"
\n" +"
\n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +" \n" +" \n" +"
\n" +" مدعوم من Odoo\n" +"
\n" +" \n" +" \n" +" \n" +" \n" +"
\n" +" ملاحظة: هذا بريد إلكتروني تلقائي مرسل من نظام المحاسبة لإخطارك بأن توكيل SEPA للسحب المباشر سيقوم بالإغلاق تلقائياً.\n" +"
\n" +"
\n" +" " +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_payment.py:0 +msgid "" +"A SEPA direct debit version should be selected to generate the addresses in " +"the export file." +msgstr "" +"يجب اختيار إصدار SEPA للسحب المباشر لتوليد العناوين في ملف التصدير." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_payment.py:0 +msgid "" +"A SEPA direct debit version should be selected to generate the export file." +msgstr "" +"يجب اختيار إصدار SEPA للسحب المباشر لتوليد ملف التصدير." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/sdd_mandate.py:0 +msgid "" +"A customer account is required to validate a SEPA Direct Debit mandate." +msgstr "" +"حساب العميل مطلوب لتأكيد توكيل SEPA للسحب المباشر." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.actions.act_window,help:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_tree_act +msgid "" +"A mandate represents the authorization you receive from a customer\n" +" to automatically collect money on her account." +msgstr "" +"التوكيل يمثل الإذن الذي تحصل عليه من العميل\n" +" لجمع الأموال تلقائياً من حسابه." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__partner_bank_id +msgid "Account of the customer to collect payments from." +msgstr "حساب العميل لجمع المدفوعات منه." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__message_needaction +msgid "Action Needed" +msgstr "يتطلب إجراء" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields.selection,name:odex30_account_sepa_direct_debit.selection__sdd_mandate__state__active +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sdd_mandate_search_view +msgid "Active" +msgstr "نشط" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__activity_ids +msgid "Activities" +msgstr "الأنشطة" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "زخرفة استثناء النشاط" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__activity_state +msgid "Activity State" +msgstr "حالة النشاط" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__activity_type_icon +msgid "Activity Type Icon" +msgstr "أيقونة نوع النشاط" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "All the payments in the batch must have the same SDD scheme." +msgstr "" +"يجب أن تكون جميع المدفوعات في الدفعة بنفس نظام SDD." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Antwerp" +msgstr "أنتويرب" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "" +"As part of your rights, you are entitled to a refund from your bank under " +"the terms and conditions of your agreement with your bank. Your rights are " +"explained in a statement that you can obtain from your bank. A refund must " +"be claimed within 8 weeks starting from the date on which your account was " +"debited." +msgstr "" +"كجزء من حقوقك، لك الحق في استرداد من بنكك وفقاً لشروط وأحكام اتفاقيتك مع بنكك. " +"حقوقك موضحة في بيان يمكنك الحصول عليه من بنكك. يجب المطالبة بالاسترداد خلال 8 أسابيع " +"بدءاً من تاريخ سحب حسابك." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__message_attachment_count +msgid "Attachment Count" +msgstr "عدد المرفقات" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__author_id +msgid "Author" +msgstr "المؤلف" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields.selection,name:odex30_account_sepa_direct_debit.selection__account_batch_payment__sdd_scheme__b2b +#: model:ir.model.fields.selection,name:odex30_account_sepa_direct_debit.selection__sdd_mandate__sdd_scheme__b2b +msgid "B2B" +msgstr "B2B" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model,name:odex30_account_sepa_direct_debit.model_res_partner_bank +msgid "Bank Accounts" +msgstr "حسابات البنك" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.view_batch_payment_form_inherit +msgid "Batch Booking" +msgstr "حجز الدفعة" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model,name:odex30_account_sepa_direct_debit.model_account_batch_payment +msgid "Batch Payment" +msgstr "دفعة الدفع" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Belgium" +msgstr "بلجيكا" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__body_has_template_value +msgid "Body content is the same as the template" +msgstr "محتوى النص مطابق للقالب" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Building C" +msgstr "المبنى ج" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "By signing this mandate form, you authorise (A)" +msgstr "بتوقيع نموذج التوكيل هذا، فإنك تفوض (أ)" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields.selection,name:odex30_account_sepa_direct_debit.selection__account_batch_payment__sdd_scheme__core +#: model:ir.model.fields.selection,name:odex30_account_sepa_direct_debit.selection__sdd_mandate__sdd_scheme__core +msgid "CORE" +msgstr "CORE" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "CREDIT-1234" +msgstr "CREDIT-1234" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__can_edit_body +msgid "Can Edit Body" +msgstr "يمكن تعديل النص" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_form +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_send_form +msgid "Cancel" +msgstr "إلغاء" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields.selection,name:odex30_account_sepa_direct_debit.selection__sdd_mandate__state__cancelled +msgid "Cancelled" +msgstr "ملغى" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/wizard/sdd_mandate_send.py:0 +msgid "Check Partner(s) Email(s)" +msgstr "تحقق من بريد(أوبريد) العميل(العملاء)" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_form +msgid "Close" +msgstr "إغلاق" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields.selection,name:odex30_account_sepa_direct_debit.selection__sdd_mandate__state__closed +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sdd_mandate_search_view +msgid "Closed" +msgstr "مغلق" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_form +msgid "Collections" +msgstr "المجاميع" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model,name:odex30_account_sepa_direct_debit.model_res_company +msgid "Companies" +msgstr "الشركات" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__company_id +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__company_id +msgid "Company" +msgstr "الشركة" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__company_id +msgid "Company for whose invoices the mandate can be used." +msgstr "الشركة التي يمكن استخدام التوكيل لفواتيرها." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model,name:odex30_account_sepa_direct_debit.model_res_config_settings +msgid "Config Settings" +msgstr "إعدادات التكوين" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model,name:odex30_account_sepa_direct_debit.model_res_partner +msgid "Contact" +msgstr "جهة الاتصال" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__body +msgid "Contents" +msgstr "المحتويات" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_account_payment__sdd_mandate_usable +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_account_payment_register__sdd_mandate_usable +msgid "Could a SDD mandate be used?" +msgstr "هل يمكن استخدام توكيل SDD؟" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.actions.act_window,help:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_tree_act +msgid "Create a new direct debit customer mandate" +msgstr "إنشاء توكيل سحب مباشر جديد للعميل" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_account_payment_form +msgid "Create it." +msgstr "إنشاؤه." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__create_uid +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__create_uid +msgid "Created by" +msgstr "أُنشئ بواسطة" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__create_date +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__create_date +msgid "Created on" +msgstr "أُنشئ في" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Creditor" +msgstr "الدائن" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_res_config_settings__sdd_creditor_identifier +msgid "Creditor Identifier" +msgstr "معرف الدائن" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_res_config_settings__sdd_creditor_identifier +msgid "Creditor identifier of your company within SEPA scheme." +msgstr "معرف الدائن لشركتك ضمن نظام SEPA." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__partner_id +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__partner_id +msgid "Customer" +msgstr "العميل" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_form +msgid "Customer mandate" +msgstr "توكيل العميل" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__partner_id +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate_send__partner_id +msgid "Customer whose payments are to be managed by this mandate." +msgstr "العميل الذي ستدير مدفوعاته هذا التوكيل." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "DEBT1234" +msgstr "DEBT1234" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__start_date +msgid "Date from which the mandate can be used (inclusive)." +msgstr "التاريخ الذي يمكن من خلاله استخدام التوكيل (شامل)." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__end_date +msgid "" +"Date until which the mandate can be used. It will automatically be closed " +"after this date." +msgstr "" +"التاريخ الذي ينتهي عنده استخدام التوكيل. سيتم إغلاقه تلقائياً بعد هذا التاريخ." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_account_batch_payment__sdd_required_collection_date +msgid "" +"Date when the company expects to receive the payments of this batch. It " +"can't be inferior to the sending day + the minimum pre-notification period." +msgstr "" +"التاريخ المتوقع لاستلام الشركة لمدفوعات هذه الدفعة. لا يمكن أن يكون أقل من " +"يوم الإرسال + فترة الإشعار المسبق الأدنى." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Debtor" +msgstr "المدين" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__debtor_id_code +msgid "Debtor Identifier" +msgstr "معرف المدين" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields.selection,name:odex30_account_sepa_direct_debit.selection__account_journal__debit_sepa_pain_version__pain_008_001_02 +msgid "Default (Pain 008.001.02)" +msgstr "افتراضي (Pain 008.001.02)" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Demo@email.com" +msgstr "عرض@التجريبي.com" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.actions.act_window,name:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_tree_act +#: model:ir.actions.act_window,name:odex30_account_sepa_direct_debit.account_sepa_direct_debit_partner_mandates +#: model:ir.ui.menu,name:odex30_account_sepa_direct_debit.account_sepa_direct_debit_customer_mandates_menu +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sdd_res_partner_view +msgid "Direct Debit Mandates" +msgstr "توكيلات السحب المباشر" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_account_journal_dashboard_kanban_view +msgid "Direct Debit Payment to Collect" +msgstr "دفعة سحب مباشر للجمع" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__payments_to_collect_nber +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_account_journal_dashboard_kanban_view +msgid "Direct Debit Payments to Collect" +msgstr "مدفوعات السحب المباشر للجمع" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.actions.act_window,name:odex30_account_sepa_direct_debit.action_sdd_payments_to_collect +msgid "Direct debit payments to collect" +msgstr "مدفوعات السحب المباشر للجمع" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__display_name +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__display_name +msgid "Display Name" +msgstr "اسم العرض" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__checkbox_download +msgid "Download" +msgstr "تنزيل" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields.selection,name:odex30_account_sepa_direct_debit.selection__sdd_mandate__state__draft +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sdd_mandate_search_view +msgid "Draft" +msgstr "مسودة" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__state +msgid "" +"Draft: Validate before use.\n" +"Active: Valid mandates to collect payments.\n" +"Cancelled: Mandates never validated.\n" +"Closed: Expired or manually closed mandates. Previous transactions remain valid.\n" +"Revoked: Fraudulent mandates. Previous invoices might need reimbursement.\n" +msgstr "" +"مسودة: يجب التأكيد قبل الاستخدام.\n" +"نشط: توكيلات صالحة لجمع المدفوعات.\n" +"ملغى: توكيلات لم يتم تأكيدها أبداً.\n" +"مغلق: توكيلات منتهية الصلاحية أو مغلقة يدوياً. المعاملات السابقة تبقى صالحة.\n" +"منسحب: توكيلات احتيالية. قد تحتاج الفواتير السابقة للاسترداد.\n" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__checkbox_send_mail +msgid "Email" +msgstr "البريد الإلكتروني" + +#. module: odex30_account_sepa_direct_debit +#: model:mail.template,description:odex30_account_sepa_direct_debit.email_template_sdd_new_mandate +msgid "Email requesting the customer to sign the mandate attached" +msgstr "بريد إلكتروني يطلب من العميل توقيع التوكيل المرفق" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__template_id +msgid "Email template" +msgstr "قالب البريد الإلكتروني" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__end_date +msgid "End Date" +msgstr "تاريخ الانتهاء" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "End date" +msgstr "تاريخ الانتهاء" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_res_partner__sdd_mandate_ids +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_res_users__sdd_mandate_ids +msgid "Every mandate belonging to this partner." +msgstr "كل التوكيلات الخاصة بهذا الشريك." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__expiration_warning_already_sent +msgid "Expiration warning sent" +msgstr "تم إرسال تحذير الانتهاء" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.view_batch_payment_form_inherit +msgid "First-Time Payments" +msgstr "مدفوعات المرة الأولى" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__message_follower_ids +msgid "Followers" +msgstr "المتابعون" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__message_partner_ids +msgid "Followers (Partners)" +msgstr "المتابعون (الشركاء)" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "أيقونة Font Awesome مثل fa-tasks" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__debtor_id_code +msgid "Free reference identifying the debtor in your company." +msgstr "مرجع حر يحدد المدين في شركتك." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "Go to journal" +msgstr "الانتقال إلى القيد" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "Go to mandates" +msgstr "الانتقال إلى التوكيلات" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "Go to payments" +msgstr "الانتقال إلى المدفوعات" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "Go to settings" +msgstr "الانتقال إلى الإعدادات" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_payment_register_form_inherit_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_account_payment_form +msgid "Good news! A valid SEPA Mandate is available." +msgstr "أخبار جيدة! توكيل SEPA صالح متاح." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__has_message +msgid "Has Message" +msgstr "يحتوي على رسالة" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__partner_bank_id +msgid "IBAN" +msgstr "IBAN" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__id +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__id +msgid "ID" +msgstr "المعرف" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__activity_exception_icon +msgid "Icon" +msgstr "الأيقونة" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "أيقونة للإشارة إلى نشاط استثنائي." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Identification code" +msgstr "رمز التعريف" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__name +msgid "Identifier" +msgstr "المعرف" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__message_needaction +msgid "If checked, new messages require your attention." +msgstr "إذا تم تحديده، الرسائل الجديدة تتطلب انتباهك." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__message_has_error +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__message_has_sms_error +msgid "If checked, some messages have a delivery error." +msgstr "إذا تم تحديده، بعض الرسائل تحتوي على خطأ تسليم." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__payment_ids +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_form +msgid "In-process and completed payments generated under this mandate." +msgstr "المدفوعات قيد المعالجة والمكتملة المُولدة تحت هذا التوكيل." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/res_company.py:0 +msgid "Invalid creditor identifier. Make sure you made no typo." +msgstr "معرف الدائن غير صحيح. تأكد من عدم وجود خطأ إملائي." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/res_company.py:0 +msgid "Invalid creditor identifier. Wrong format." +msgstr "معرف الدائن غير صحيح. تنسيق خاطئ." + +#. module: odex30_account_sepa_direct_debit +#: model:mail.message.subtype,description:odex30_account_sepa_direct_debit.sdd_mt_invoice_paid_with_mandate +msgid "Invoice paid via direct debit." +msgstr "الفاتورة مدفوعة عبر السحب المباشر." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__paid_invoice_ids +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_form +msgid "Invoices Paid" +msgstr "الفواتير المدفوعة" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.view_account_invoice_filter +msgid "Invoices matching a valid SEPA Direct Debit Mandate" +msgstr "الفواتير التي تتطابق مع توكيل SEPA للسحب المباشر صالح" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__paid_invoice_ids +msgid "Invoices paid using this mandate." +msgstr "الفواتير المدفوعة باستخدام هذا التوكيل." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_form +msgid "Invoices paid with this mandate." +msgstr "الفواتير المدفوعة بهذا التوكيل." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__is_mail_template_editor +msgid "Is Editor" +msgstr "هو محرر" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__message_is_follower +msgid "Is Follower" +msgstr "هو متابع" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model,name:odex30_account_sepa_direct_debit.model_account_journal +msgid "Journal" +msgstr "القيد" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model,name:odex30_account_sepa_direct_debit.model_account_move +msgid "Journal Entry" +msgstr "قيد يومية" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__lang +msgid "Language" +msgstr "اللغة" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__write_uid +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__write_uid +msgid "Last Updated by" +msgstr "آخر تحديث بواسطة" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__write_date +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__write_date +msgid "Last Updated on" +msgstr "آخر تحديث في" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__message_main_attachment_id +msgid "Main Attachment" +msgstr "المرفق الرئيسي" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__mandate_id +msgid "Mandate" +msgstr "التوكيل" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__mandate_pdf_file +msgid "Mandate Form PDF" +msgstr "نموذج التوكيل PDF" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.actions.report,name:odex30_account_sepa_direct_debit.sdd_mandate_form_report_main +msgid "Mandate form" +msgstr "نموذج التوكيل" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.constraint,message:odex30_account_sepa_direct_debit.constraint_sdd_mandate_name_unique +msgid "Mandate identifier must be unique! Please choose another one." +msgstr "معرف التوكيل يجب أن يكون فريداً! يرجى اختيار آخر." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.actions.server,name:odex30_account_sepa_direct_debit.sdd_mandate_state_cron_ir_actions_server +msgid "Mandate state updater" +msgstr "محدث حالة التوكيل" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Marc Demo" +msgstr "مارك تجريبي" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__message_has_error +msgid "Message Delivery error" +msgstr "خطأ تسليم الرسالة" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__message_ids +msgid "Messages" +msgstr "الرسائل" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "موعد انتهاء نشاطي" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "موعد انتهاء النشاط التالي" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__activity_summary +msgid "Next Activity Summary" +msgstr "ملخص النشاط التالي" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__activity_type_id +msgid "Next Activity Type" +msgstr "نوع النشاط التالي" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_account_payment_register__no_sdd_mandate_partner_ids +msgid "No Sdd Mandate Partner" +msgstr "شريك بدون توكيل SDD" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.actions.act_window,help:odex30_account_sepa_direct_debit.action_sdd_payments_to_collect +msgid "No direct debit payment to collect" +msgstr "لا توجد مدفوعات سحب مباشر للجمع" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__message_needaction_counter +msgid "Number of Actions" +msgstr "عدد الإجراءات" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__message_has_error_counter +msgid "Number of errors" +msgstr "عدد الأخطاء" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__payments_to_collect_nber +msgid "" +"Number of in-process and completed payments generated under this mandate." +msgstr "عدد المدفوعات قيد المعالجة والمكتملة المُولدة تحت هذا التوكيل." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__paid_invoices_nber +msgid "Number of invoices paid with this mandate." +msgstr "عدد الفواتير المدفوعة بهذا التوكيل." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "عدد الرسائل التي تتطلب إجراء" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "عدد الرسائل التي تحتوي على خطأ تسليم" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Odoo PVT LTD" +msgstr "Odoo PVT LTD" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.actions.act_window,help:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_tree_act +msgid "" +"Once an invoice is made\n" +" in Odoo for a customer having a mandate active on the invoice date,\n" +" its validation will trigger its automatic payment, and you will\n" +" then only have to generate a SEPA Direct Debit (SDD) XML file containing this operation\n" +" and send it to your bank to effectively get paid." +msgstr "" +"عند إنشاء فاتورة\n" +" في Odoo لعميل لديه توكيل نشط في تاريخ الفاتورة،\n" +" سيؤدي تأكيدها إلى دفعها تلقائياً، وستحتاج فقط إلى\n" +" توليد ملف XML لـ SEPA Direct Debit (SDD) يحتوي على هذه العملية\n" +" وإرساله إلى بنكك للحصول على الدفع فعلياً." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_account_bank_statement_line__sdd_mandate_id +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_account_move__sdd_mandate_id +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_account_payment__sdd_mandate_id +msgid "" +"Once this invoice has been paid with Direct Debit, contains the mandate that" +" allowed the payment." +msgstr "" +"بمجرد دفع هذه الفاتورة بالسحب المباشر، يحتوي على التوكيل الذي سمح بالدفع." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__one_off +msgid "One-off Mandate" +msgstr "توكيل لمرة واحدة" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "" +"Only IBAN account numbers can receive SEPA Direct Debit payments. Please " +"select a journal associated to one or add an IBAN bank account to the " +"current journal" +msgstr "" +"فقط أرقام حسابات IBAN يمكنها استقبال مدفوعات SEPA Direct Debit. يرجى\n" +"اختيار قيد مرتبط بواحد أو إضافة حساب بنكي IBAN للقيد الحالي." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/sdd_mandate.py:0 +msgid "Only mandates in draft state can be deleted." +msgstr "يمكن حذف التوكيلات في حالة المسودة فقط." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_payment_register_form_inherit_account_sepa_direct_debit +msgid "Oops! No valid SEPA mandate for the following partner(s):" +msgstr "عفواً! لا يوجد توكيل SEPA صالح للشريك(الشركاء) التالي(ين):" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_account_payment_form +msgid "Oops! No valid SEPA mandate for this customer." +msgstr "عفواً! لا يوجد توكيل SEPA صالح لهذا العميل." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/sdd_mandate.py:0 +msgid "Open customer" +msgstr "فتح العميل" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/sdd_mandate.py:0 +msgid "Open customers" +msgstr "فتح العملاء" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sdd_res_partner_view +msgid "Open this partner's mandates" +msgstr "فتح توكيلات هذا الشريك" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate_send__lang +msgid "" +"Optional translation language (ISO code) to select when sending out an " +"email. If not set, the english version will be used. This should usually be " +"a placeholder expression that provides the appropriate language, e.g. {{ " +"object.partner_id.lang }}." +msgstr "" +"لغة الترجمة الاختيارية (رمز ISO) للاختيار عند إرسال بريد إلكتروني. " +"إذا لم يتم تحديدها، سيتم استخدام النسخة الإنجليزية. عادةً يجب أن تكون " +"تعبير مكان حامل يوفر اللغة المناسبة، مثل {{ object.partner_id.lang }}." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_account_payment_form +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_account_payment_with_mandates_tree +msgid "Originating SEPA mandate" +msgstr "توكيل SEPA المصدر" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/sdd_mandate.py:0 +msgid "Paid Invoices" +msgstr "الفواتير المدفوعة" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__paid_invoices_nber +msgid "Paid Invoices Number" +msgstr "عدد الفواتير المدفوعة" + +#. module: odex30_account_sepa_direct_debit +#: model:mail.message.subtype,name:odex30_account_sepa_direct_debit.sdd_mt_invoice_paid_with_mandate +msgid "Paid via direct debit" +msgstr "مدفوع عبر السحب المباشر" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__partner_parent_id +msgid "Parent Partner" +msgstr "الشريك الأساسي" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model,name:odex30_account_sepa_direct_debit.model_account_partial_reconcile +msgid "Partial Reconcile" +msgstr "مطابقة جزئية" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/wizard/sdd_mandate_send.py:0 +msgid "Partner should have an email address." +msgstr "يجب أن يكون لدى الشريك عنوان بريد إلكتروني." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/sdd_mandate.py:0 +msgid "Partner's Parent" +msgstr "الشريك الأب" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model,name:odex30_account_sepa_direct_debit.model_account_payment_register +msgid "Pay" +msgstr "دفع" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model,name:odex30_account_sepa_direct_debit.model_account_payment_method +msgid "Payment Methods" +msgstr "طرق الدفع" + +#. module: odex30_account_sepa_direct_debit +#: model:mail.template,subject:odex30_account_sepa_direct_debit.email_template_sdd_pre_notification +msgid "Payment notification {{ object.memo }}" +msgstr "إشعار الدفع {{ object.memo }}" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model,name:odex30_account_sepa_direct_debit.model_account_payment +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__payment_ids +msgid "Payments" +msgstr "المدفوعات" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.view_account_move_line_payment_filter +msgid "Payments matching a valid SEPA Direct Debit Mandate" +msgstr "المدفوعات التي تتطابق مع توكيل SEPA للسحب المباشر صالح" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/sdd_mandate.py:0 +msgid "Payments to Collect" +msgstr "المدفوعات للجمع" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "Payments without mandate" +msgstr "مدفوعات بدون توكيل" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_report_invoice_document +msgid "" +"Please do not pay it manually, the payment will be asked to your bank to be processed\n" +" automatically." +msgstr "" +"يرجى عدم دفعها يدوياً، سيتم طلب الدفع من بنكك لمعالجته\n" +" تلقائياً." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__pre_notification_period +msgid "Pre-notification" +msgstr "الإشعار المسبق" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "Problematic mandates" +msgstr "توكيلات إشكالية" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__recipient_ids +msgid "Recipients" +msgstr "المستلمون" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__render_model +msgid "Rendering Model" +msgstr "نموذج العرض" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_account_batch_payment__sdd_batch_booking +msgid "Request batch booking from the bank for the related bank statements." +msgstr "طلب حجز الدفعة من البنك لكشوفات الحساب المرتبطة." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_account_batch_payment__sdd_required_collection_date +msgid "Required Collection Date" +msgstr "تاريخ الجمع المطلوب" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__activity_user_id +msgid "Responsible User" +msgstr "المستخدم المسؤول" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_form +msgid "Revoke" +msgstr "سحب" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields.selection,name:odex30_account_sepa_direct_debit.selection__sdd_mandate__state__revoked +msgid "Revoked" +msgstr "منسحب" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_view_account_payment_search +msgid "Revoked SDD Mandate" +msgstr "توكيل SDD منسحب" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Rue de la Loi, 16" +msgstr "شارع القانون، 16" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.view_account_payment_search +msgid "SDD B2B" +msgstr "SDD B2B" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_account_batch_payment__sdd_batch_booking +msgid "SDD Batch Booking" +msgstr "حجز دفعة SDD" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.view_account_payment_search +msgid "SDD CORE" +msgstr "SDD CORE" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model,name:odex30_account_sepa_direct_debit.model_sdd_mandate +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.view_account_invoice_filter +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.view_account_move_line_payment_filter +msgid "SDD Mandate" +msgstr "توكيل SDD" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model,name:odex30_account_sepa_direct_debit.model_sdd_mandate_send +msgid "SDD Mandate Send" +msgstr "إرسال توكيل SDD" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_account_batch_payment__sdd_scheme +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_account_payment__sdd_mandate_scheme +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__sdd_scheme +msgid "SDD Scheme" +msgstr "نظام SDD" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_res_partner__sdd_count +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_res_users__sdd_count +msgid "SDD count" +msgstr "عدد SDD" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_res_company__sdd_creditor_identifier +msgid "SDD creditor identifier" +msgstr "معرف دائن SDD" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "SDD scheme is set on the customer mandate." +msgstr "نظام SDD محدد في توكيل العميل." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "SEPA Business-to-Business Direct Debit Mandate" +msgstr "توكيل سحب مباشر SEPA من شركة إلى شركة" + +#. module: odex30_account_sepa_direct_debit +#: model:account.payment.method,name:odex30_account_sepa_direct_debit.payment_method_sdd +msgid "SEPA Direct Debit" +msgstr "سحب مباشر SEPA" + +#. module: odex30_account_sepa_direct_debit +#: model:mail.template,name:odex30_account_sepa_direct_debit.email_template_sdd_pre_notification +msgid "SEPA Direct Debit Customer Pre-Notification mail" +msgstr "بريد إشعار مسبق لعميل سحب مباشر SEPA" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "SEPA Direct Debit Mandate" +msgstr "توكيل سحب مباشر SEPA" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_account_journal__debit_sepa_pain_version +msgid "SEPA Direct Debit Pain Version" +msgstr "إصدار Pain لسحب مباشر SEPA" + +#. module: odex30_account_sepa_direct_debit +#: model:mail.template,name:odex30_account_sepa_direct_debit.email_template_sdd_new_mandate +msgid "SEPA Direct Debit Sending" +msgstr "إرسال سحب مباشر SEPA" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_res_company__sdd_creditor_identifier +msgid "" +"SEPA Direct Debit creditor identifier of the company, given by the bank." +msgstr "معرف دائن سحب مباشر SEPA للشركة، مقدم من البنك." + +#. module: odex30_account_sepa_direct_debit +#: model:mail.template,name:odex30_account_sepa_direct_debit.email_template_sdd_mandate_expiring +#: model:mail.template,subject:odex30_account_sepa_direct_debit.email_template_sdd_mandate_expiring +msgid "SEPA Direct Debit mandate expiration warning" +msgstr "تحذير انتهاء توكيل سحب مباشر SEPA" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/sdd_mandate.py:0 +msgid "" +"SEPA Direct Debit scheme only accepts IBAN account numbers. Please select an" +" IBAN-compliant debtor account for this mandate." +msgstr "" +"نظام سحب مباشر SEPA يقبل أرقام حسابات IBAN فقط. يرجى اختيار\n" +"حساب مدين متوافق مع IBAN لهذا التوكيل." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.view_account_journal_form +msgid "SEPA Pain Version" +msgstr "إصدار SEPA Pain" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.view_account_journal_form +msgid "SEPA Pain version" +msgstr "إصدار SEPA Pain" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_payment_register_form_inherit_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_account_payment_form +msgid "SEPA Scheme operates in Euro." +msgstr "نظام SEPA يعمل باليورو." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/sdd_mandate.py:0 +msgid "SEPA direct debit stateless customer" +msgstr "عميل سحب مباشر SEPA بدون حالة" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/sdd_mandate.py:0 +msgid "" +"SEPA regulations set the minimum pre-notification period to a minimum of %s " +"days to allow enough time for the customer to check that their account is " +"adequately funded." +msgstr "" +"لوائح SEPA تحدد فترة الإشعار المسبق الأدنى بـ %s يوم على الأقل\n" +"للسماح للعميل بالتحقق من تمويل حسابه بشكل كافٍ." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "SEPA-CUST-001" +msgstr "SEPA-CUST-001" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "SEPA1234" +msgstr "SEPA1234" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__message_has_sms_error +msgid "SMS Delivery error" +msgstr "خطأ تسليم الرسالة النصية" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_account_bank_statement_line__sdd_has_usable_mandate +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_account_move__sdd_has_usable_mandate +msgid "Sdd Has Usable Mandate" +msgstr "SDD يحتوي على توكيل صالح" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_account_bank_statement_line__sdd_mandate_id +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_account_move__sdd_mandate_id +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_account_payment__sdd_mandate_id +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_res_partner__sdd_mandate_ids +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_res_users__sdd_mandate_ids +msgid "Sdd Mandate" +msgstr "توكيل SDD" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_payment.py:0 +msgid "Select a SEPA Direct Debit version before generating the XML." +msgstr "اختر إصدار سحب مباشر SEPA قبل توليد XML." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/sdd_mandate.py:0 +msgid "Send" +msgstr "إرسال" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_form +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_send_form +msgid "Send & Print" +msgstr "إرسال وطباعة" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__is_sent +msgid "Sent to the customer" +msgstr "مُرسل للعميل" + +#. module: odex30_account_sepa_direct_debit +#: model:mail.template,description:odex30_account_sepa_direct_debit.email_template_sdd_pre_notification +msgid "Sent to the customer to indicate their account will be charged" +msgstr "مُرسل للعميل للإشارة إلى أن حسابه سيُسحب" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Signature" +msgstr "التوقيع" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "" +"Some draft payments could not be posted because of the lack of any active " +"mandate." +msgstr "" +"بعض مدفوعات المسودة لم يمكن نشرها بسبب عدم وجود توكيل نشط." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "Some payments are linked to an inactive mandate." +msgstr "بعض المدفوعات مرتبطة بتوكيل غير نشط." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "Some payments are not linked to any mandate." +msgstr "بعض المدفوعات غير مرتبطة بأي توكيل." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__start_date +msgid "Start Date" +msgstr "تاريخ البدء" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__state +msgid "State" +msgstr "الحالة" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" +"الحالة بناءً على الأنشطة\n" +"متأخر: تاريخ الاستحقاق قد مضى\n" +"اليوم: تاريخ النشاط اليوم\n" +"مخطط: أنشطة مستقبلية." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__subject +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_send_form +msgid "Subject" +msgstr "الموضوع" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_account_batch_payment__sdd_scheme +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_account_payment__sdd_mandate_scheme +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__sdd_scheme +msgid "" +"The B2B scheme is an optional scheme,\n" +"offered exclusively to business payers.\n" +"Some banks/businesses might not accept B2B SDD." +msgstr "" +"نظام B2B هو نظام اختياري،\n" +"مُقدم حصرياً للدافعين التجاريين.\n" +"بعض البنوك/الشركات قد لا تقبل SDD B2B." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_payment.py:0 +msgid "" +"The SEPA Direct Debit mandate associated to the payment has been revoked and" +" cannot be used anymore." +msgstr "" +"توكيل سحب مباشر SEPA المرتبط بالدفع قد تم سحبه ولا يمكن استخدامه بعد الآن." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "" +"The bank needs to be informed at least %(min_days_new)s days in advance for collections related to a new mandate and %(min_days)s days in advance when the mandate is already known by them.\n" +"The minimum collection date must be %(date)s." +msgstr "" +"يجب إبلاغ البنك قبل %(min_days_new)s يوم على الأقل للمجاميع المتعلقة بتوكيل جديد\n" +"و %(min_days)s يوم على الأقل عندما يكون التوكيل معروفاً لديهم.\n" +"يجب أن يكون تاريخ الجمع الأدنى %(date)s." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/res_company.py:0 +msgid "The creditor identifier exceeds the maximum length of 35 characters." +msgstr "معرف الدائن يتجاوز الحد الأقصى 35 حرفاً." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/sdd_mandate.py:0 +msgid "The customer must have a country" +msgstr "يجب أن يكون للعميل بلد" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_payment.py:0 +msgid "" +"The debtor and creditor city name is a compulsary information when " +"generating the SDD XML." +msgstr "" +"اسم مدينة المدين والدائن معلومة إلزامية عند توليد XML SDD." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_payment.py:0 +msgid "" +"The debtor and creditor country is a compulsary information when generating " +"the SDD XML." +msgstr "" +"بلد المدين والدائن معلومة إلزامية عند توليد XML SDD." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/sdd_mandate.py:0 +msgid "" +"The debtor identifier you specified exceeds the limitation of 35 characters " +"imposed by SEPA regulation" +msgstr "" +"معرف المدين المحدد يتجاوز الحد الأقصى 35 حرفاً المفروض بموجب لائحة SEPA" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/sdd_mandate.py:0 +msgid "" +"The end date of the mandate must be posterior or equal to its start date." +msgstr "" +"تاريخ انتهاء التوكيل يجب أن يكون بعد أو يساوي تاريخ بدايته." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "" +"The mandate will only be used to pay invoices into the specified time range. If no end date is specified,\n" +" you will have to contact us to stop its use. The minimum notification period for creditors\n" +" to inform debtors about an upcoming collection is" +msgstr "" +"سيُستخدم التوكيل فقط لدفع الفواتير خلال الفترة الزمنية المحددة. إذا لم يُحدد تاريخ انتهاء،\n" +" ستحتاج للتواصل معنا لإيقافه. الفترة الإشعارية الدنيا للدائنين\n" +" لإبلاغ المدينين بالجمع القادم هي" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__pre_notification_period +msgid "" +"The minimum notice period in days, used to inform the customer prior to " +"collection." +msgstr "" +"فترة الإشعار الأدنى بالأيام، المستخدمة لإبلاغ العميل قبل الجمع." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_payment.py:0 +msgid "" +"The payment must be linked to a SEPA Direct Debit mandate in order to " +"generate a Direct Debit XML." +msgstr "" +"يجب ربط الدفع بتوكيل سحب مباشر SEPA لتوليد XML السحب المباشر." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_form +msgid "The selected customer is a child of" +msgstr "العميل المحدد فرعي لـ" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__name +msgid "The unique identifier of this mandate." +msgstr "المعرف الفريد لهذا التوكيل." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.view_batch_payment_form_inherit +msgid "This batch includes payments from mandates with no prior collections:" +msgstr "تحتوي هذه الدفعة على مدفوعات من توكيلات بدون جمع سابق:" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_report_invoice_document +msgid "" +"This invoice will be paid using direct debit and is only\n" +" sent for informative purposes." +msgstr "" +"ستُدفع هذه الفاتورة باستخدام السحب المباشر وتُرسل لأغراض\n" +" إعلامية فقط." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "" +"This mandate is only intended for business-to-business transactions. You are" +" not entitled to a refund from your bank after your account has been " +"debited, but you are entitled to request your bank not to debit your account" +" up until the day on which the payment is due." +msgstr "" +"هذا التوكيل مخصص للمعاملات من شركة إلى شركة فقط. ليس لك الحق في استرداد من بنكك بعد\n" +"سحب حسابك، لكن لك الحق في طلب من بنكك عدم سحب حسابك حتى يوم استحقاق الدفع." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "" +"To solve that, you should create a mandate for each of the involved " +"customers, valid at the moment of the payment date." +msgstr "" +"لحل ذلك، يجب إنشاء توكيل لكل عميل مشارك، صالح في تاريخ الدفع." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__one_off +msgid "" +"True if and only if this mandate can be used for only one transaction. It " +"will automatically go from 'active' to 'closed' after its first use in " +"payment if this option is set.\n" +msgstr "" +"صحيح فقط إذا كان هذا التوكيل يُستخدم لمعاملة واحدة. سينتقل تلقائياً\n" +"من 'نشط' إلى 'مغلق' بعد أول استخدام في دفع إذا تم تفعيل هذا الخيار.\n" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_payment.py:0 +msgid "" +"Trying to generate a Direct Debit XML file containing payments from another " +"company than that file's creditor." +msgstr "" +"محاولة توليد ملف XML سحب مباشر يحتوي على مدفوعات من شركة أخرى غير دائن الملف." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_payment.py:0 +msgid "" +"Trying to generate a Direct Debit XML for payments coming from another " +"payment method than SEPA Direct Debit." +msgstr "" +"محاولة توليد XML سحب مباشر لمدفوعات من طريقة دفع غير سحب مباشر SEPA." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_payment.py:0 +msgid "" +"Trying to register a payment on a mandate belonging to a different partner." +msgstr "" +"محاولة تسجيل دفع على توكيل يخص شريكاً مختلفاً." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "نوع نشاط الاستثناء في السجل." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/sdd_mandate.py:0 +msgid "Under B2B SDD Scheme, the customer must be a company." +msgstr "تحت نظام SDD B2B، يجب أن يكون العميل شركة." + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields.selection,name:odex30_account_sepa_direct_debit.selection__account_journal__debit_sepa_pain_version__pain_008_001_08 +msgid "Updated 2023 (Pain 008.001.08)" +msgstr "محدث 2023 (Pain 008.001.08)" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_form +msgid "Validate" +msgstr "تأكيد" + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "Validity" +msgstr "الصلاحية" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/wizard/sdd_mandate_send.py:0 +msgid "View Partner(s)" +msgstr "عرض الشريك(الشركاء)" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate_send__warnings +msgid "Warnings" +msgstr "التحذيرات" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,field_description:odex30_account_sepa_direct_debit.field_sdd_mandate__website_message_ids +msgid "Website Messages" +msgstr "رسائل الموقع" + +#. module: odex30_account_sepa_direct_debit +#: model:ir.model.fields,help:odex30_account_sepa_direct_debit.field_sdd_mandate__website_message_ids +msgid "Website communication history" +msgstr "سجل الاتصالات الموقع" + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/wizard/account_payment_register.py:0 +msgid "" +"You can't pay any of the selected invoices using the SEPA Direct Debit " +"method, as no valid mandate is available" +msgstr "" +"لا يمكن دفع أي من الفواتير المحددة باستخدام طريقة سحب مباشر SEPA،\n" +"لعدم توفر توكيل صالح." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/res_partner_bank.py:0 +msgid "" +"You cannot delete a bank account linked to an active SEPA Direct Debit " +"mandate." +msgstr "" +"لا يمكن حذف حساب بنكي مرتبط بتوكيل سحب مباشر SEPA نشط." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "" +"You cannot generate a SEPA Direct Debit file with a required collection date inferior to the sending day + the minimum pre-notification period of %(prenot_days)s days.\n" +"The minimum required date should be %(minimum_date)s." +msgstr "" +"لا يمكن توليد ملف سحب مباشر SEPA بتاريخ جمع مطلوب أقل من يوم الإرسال + فترة الإشعار المسبق\n" +"الدنيا %(prenot_days)s يوم. التاريخ المطلوب الأدنى يجب أن يكون %(minimum_date)s." + +#. module: odex30_account_sepa_direct_debit +#. odoo-python +#: code:addons/odex30_account_sepa_direct_debit/models/account_batch_payment.py:0 +msgid "" +"Your company must have a creditor identifier in order to issue SEPA Direct " +"Debit payments requests. It can be defined in accounting module's settings." +msgstr "" +"يجب أن تمتلك شركتك معرف دائن لإصدار طلبات دفع سحب مباشر SEPA.\n" +"يمكن تحديده في إعدادات وحدة المحاسبة." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "" +"day(s).\n" +" It will be sent to the debtor's email." +msgstr "" +"يوم(أيام).\n" +" سيُرسل إلى بريد المدين الإلكتروني." + +#. module: odex30_account_sepa_direct_debit +#: model_terms:ir.ui.view,arch_db:odex30_account_sepa_direct_debit.sdd_mandate_form +msgid "" +"to send instructions to your bank to debit your account and (B) your bank to" +" debit your account in accordance with the instructions from" +msgstr "" +"لإرسال تعليمات لبنكك لسحب حسابك و (ب) بنكك لسحب حسابك وفقاً للتعليمات من" + +#. module: odex30_account_sepa_direct_debit +#: model:mail.template,subject:odex30_account_sepa_direct_debit.email_template_sdd_new_mandate +msgid "{{ object.partner_id.display_name }} SEPA Direct Debit Mandate" +msgstr "{{ object.partner_id.display_name }} توكيل سحب مباشر SEPA" diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/__init__.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/__init__.py new file mode 100644 index 0000000..d47624f --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/__init__.py @@ -0,0 +1,12 @@ + +from . import account_batch_payment +from . import account_invoice +from . import account_journal +from . import account_payment +from . import account_partial_reconcile +from . import account_payment_method +from . import res_company +from . import res_config_settings +from . import res_partner +from . import res_partner_bank +from . import sdd_mandate diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_batch_payment.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_batch_payment.py new file mode 100644 index 0000000..b6393de --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_batch_payment.py @@ -0,0 +1,286 @@ + +import ast +import base64 +import re +from datetime import datetime, timedelta + +from lxml import etree + +from odoo import models, fields, api, _ +from odoo.exceptions import RedirectWarning, ValidationError, UserError +from odoo.tools import SQL, format_date + +from odoo.addons.odex30_account_sepa_direct_debit.models.sdd_mandate import SDD_MIN_PRENOT_PERIOD, SDD_FIRST_MIN_PRENOT_PERIOD + + +class AccountBatchPayment(models.Model): + _inherit = 'account.batch.payment' + + sdd_required_collection_date = fields.Date( + string='Required Collection Date', + compute='_compute_sdd_required_collection_date', store=True, + help="Date when the company expects to receive the payments of this batch. " + "It can't be inferior to the sending day + the minimum pre-notification period.", + ) + sdd_min_required_collection_date = fields.Date(compute='_compute_sdd_min_required_collection_date', export_string_translation=False) + sdd_first_time_payment_ids = fields.One2many('account.payment', compute='_compute_sdd_first_time_payment_ids', export_string_translation=False) + sdd_batch_booking = fields.Boolean(string="SDD Batch Booking", default=True, help="Request batch booking from the bank for the related bank statements.") + sdd_scheme = fields.Selection(string="SDD Scheme", selection=[('CORE', 'CORE'), ('B2B', 'B2B')], + help='The B2B scheme is an optional scheme,\noffered exclusively to business payers.\nSome banks/businesses might not accept B2B SDD.', + compute='_compute_sdd_scheme', store=True, readonly=False) + + @api.depends('sdd_scheme') + def _compute_payment_ids_domain(self): + super()._compute_payment_ids_domain() + for batch in self: + domain = ast.literal_eval(batch.payment_ids_domain) + domain.extend([ + '|', + ('payment_method_id.code', 'not in', ('sdd', 'sepa_direct_debit')), + ('sdd_mandate_id.sdd_scheme', '=', batch.sdd_scheme), + ]) + batch.payment_ids_domain = str(domain) + + @api.depends('payment_ids') + def _compute_sdd_required_collection_date(self): + + sepa_codes = set(self.env['account.payment.method']._get_sdd_payment_method_code()) + for batch in self.filtered(lambda batch: batch.payment_method_code in sepa_codes): + if batch.sdd_required_collection_date: # Do not override when there is a time + batch.sdd_required_collection_date = batch.sdd_required_collection_date + continue + + minimum_offset = SDD_FIRST_MIN_PRENOT_PERIOD + mandates = batch.payment_ids.sdd_mandate_id + all_used_mandates = batch._get_all_used_mandates() + if all(all_used_mandates.get(mandate, 0) > 0 for mandate in mandates): + + minimum_offset = SDD_MIN_PRENOT_PERIOD + + batch.sdd_required_collection_date = fields.Date.context_today(batch) + timedelta( + max([minimum_offset, *mandates.mapped('pre_notification_period')]) + ) + + @api.depends('payment_ids') + def _compute_sdd_min_required_collection_date(self): + sepa_codes = set(self.env['account.payment.method']._get_sdd_payment_method_code()) + for batch in self: + if batch.payment_method_code not in sepa_codes: + batch.sdd_min_required_collection_date = False + continue + + mandates = batch.payment_ids.sdd_mandate_id + all_used_mandates = batch._get_all_used_mandates() + if all(all_used_mandates.get(mandate, 0) > 0 for mandate in mandates): + batch.sdd_min_required_collection_date = False + else: + batch.sdd_min_required_collection_date = fields.Date.context_today(batch) + timedelta( + SDD_FIRST_MIN_PRENOT_PERIOD + ) + + @api.depends('payment_ids') + def _compute_sdd_first_time_payment_ids(self): + sepa_codes = set(self.env['account.payment.method']._get_sdd_payment_method_code()) + for batch in self: + if batch.payment_method_code not in sepa_codes: + batch.sdd_first_time_payment_ids = False + continue + + all_used_mandates = batch._get_all_used_mandates() + batch.sdd_first_time_payment_ids = batch.payment_ids.filtered( + lambda p: all_used_mandates.get(p.sdd_mandate_id, 0) == 0 + ) + + @api.depends('payment_method_id') + def _compute_sdd_scheme(self): + sdd_payment_codes = self.payment_method_id._get_sdd_payment_method_code() + for batch in self: + if batch.payment_method_id.code not in sdd_payment_codes: + batch.sdd_scheme = False + else: + if batch.sdd_scheme: + batch.sdd_scheme = batch.sdd_scheme + else: + batch.sdd_scheme = batch.payment_ids and batch.payment_ids[0].sdd_mandate_scheme or 'CORE' + + def _get_all_used_mandates(self): + + self.ensure_one() + mandates = self.payment_ids.sdd_mandate_id + return dict(self.env['account.payment']._read_group([ + ('sdd_mandate_id', 'in', mandates.ids), + ('is_matched', '=', True), + ], + groupby=['sdd_mandate_id'], + aggregates=['__count'], + )) + + def _get_methods_generating_files(self): + rslt = super()._get_methods_generating_files() + rslt += self.payment_method_id._get_sdd_payment_method_code() + return rslt + + @api.constrains('sdd_required_collection_date', 'payment_method_id') + def _check_minimal_collection_date(self): + sepa_codes = self.env['account.payment.method']._get_sdd_payment_method_code() + + sepa_batch_payment = self.filtered(lambda p: p.payment_method_code in sepa_codes) + if not sepa_batch_payment: + return + + for batch in sepa_batch_payment: + minimum_date = fields.Date.context_today(batch) + timedelta(days=SDD_MIN_PRENOT_PERIOD) + if batch.payment_method_code in sepa_codes and batch.sdd_required_collection_date < minimum_date: + raise ValidationError(_( + "The bank needs to be informed at least %(min_days_new)s days in advance for collections related " + "to a new mandate and %(min_days)s days in advance when the mandate is already known by them.\n" + "The minimum collection date must be %(date)s.", + min_days_new=SDD_FIRST_MIN_PRENOT_PERIOD, + min_days=SDD_MIN_PRENOT_PERIOD, + date=format_date(self.env, minimum_date), + )) + + @api.constrains('batch_type', 'journal_id', 'payment_ids', 'payment_method_id') + def _check_payments_constrains(self): + super(AccountBatchPayment, self)._check_payments_constrains() + for record in self.filtered(lambda r: r.payment_method_code in r.payment_method_id._get_sdd_payment_method_code()): + all_sdd_schemes = set(record.payment_ids.mapped('sdd_mandate_id.sdd_scheme')) + if len(all_sdd_schemes) > 1: + raise ValidationError(_("All the payments in the batch must have the same SDD scheme.")) + + def validate_batch(self): + self.ensure_one() + if self.payment_method_code in self.payment_method_id._get_sdd_payment_method_code(): + today = fields.Date.context_today(self) + company = self.journal_id.company_id + + if not company.sdd_creditor_identifier: + action = self.env.ref('account.action_account_config') + raise RedirectWarning(_( + "Your company must have a creditor identifier in order to issue SEPA Direct Debit payments requests. " + "It can be defined in accounting module's settings." + ), + action=action.id, + button_text=_("Go to settings"), + ) + + payments_without_mandate = self.payment_ids.filtered(lambda x: not x.sdd_mandate_id) + if payments_without_mandate: + raise RedirectWarning( + _("Some payments are not linked to any mandate."), + action={ + 'name': _("Payments without mandate"), + 'type': 'ir.actions.act_window', + 'res_model': 'account.payment', + 'views': [(self.env.ref('account.view_account_payment_tree').id, 'list')], + 'domain': [('id', 'in', payments_without_mandate.ids)] + }, + button_text=_("Go to payments"), + ) + + invalid_mandates = self.payment_ids.sdd_mandate_id._update_and_partition_state_by_validity()['invalid'] + if invalid_mandates: + raise RedirectWarning( + _("Some payments are linked to an inactive mandate."), + action={ + 'name': _("Problematic mandates"), + 'type': 'ir.actions.act_window', + 'res_model': 'sdd.mandate', + 'views': [(self.env.ref('odex30_account_sepa_direct_debit.account_sepa_direct_debit_mandate_tree').id, 'list')], + 'domain': [('id', 'in', invalid_mandates.ids)], + }, + button_text=_("Go to mandates"), + ) + + collection_date = self.sdd_required_collection_date + min_collection_date = today + timedelta(days=SDD_MIN_PRENOT_PERIOD) + if collection_date < min_collection_date: + raise UserError(_( + "You cannot generate a SEPA Direct Debit file with a required collection date inferior to the " + "sending day + the minimum pre-notification period of %(prenot_days)s days.\n" + "The minimum required date should be %(minimum_date)s.", + prenot_days=SDD_MIN_PRENOT_PERIOD, + minimum_date=format_date(self.env, min_collection_date), + )) + + if self.journal_id.bank_account_id.acc_type != 'iban': + raise RedirectWarning(_( + "Only IBAN account numbers can receive SEPA Direct Debit payments. " + "Please select a journal associated to one or add an IBAN bank account to the current journal" + ), + action={ + 'name': self.journal_id.name, + 'type': 'ir.actions.act_window', + 'res_model': 'account.journal', + 'res_id': self.journal_id.id, + 'views': [(self.env.ref('account.view_account_journal_form').id, 'form')], + }, + button_text=_("Go to journal"), + ) + + return super().validate_batch() + + def _check_and_post_draft_payments(self, draft_payments): + rslt = [] + if self.payment_method_code in self.payment_method_id._get_sdd_payment_method_code(): + + drafts_without_mandate = draft_payments.filtered(lambda x: not x.get_usable_mandate()) + if drafts_without_mandate: + rslt = [{'title': _("Some draft payments could not be posted because of the lack of any active mandate."), + 'records': drafts_without_mandate, + 'help': _("To solve that, you should create a mandate for each of the involved customers, valid at the moment of the payment date.") + }] + draft_payments -= drafts_without_mandate + + return rslt + super()._check_and_post_draft_payments(draft_payments) + + def _generate_export_file(self): + if self.payment_method_code in self.payment_method_id._get_sdd_payment_method_code(): + company = self.env.company + return { + 'filename': 'PAIN008' + datetime.now().strftime('%Y%m%d%H%M%S') + '.xml', + 'file': base64.encodebytes(self.payment_ids.generate_xml(company, self.sdd_required_collection_date, self.sdd_batch_booking)), + } + + return super()._generate_export_file() + + def _send_after_validation(self): + + res = super()._send_after_validation() + if self.env['ir.config_parameter'].sudo().get_param('odex30_account_sepa_direct_debit.disable_sdd_pre_notification'): + return res + + template = self.env.ref('odex30_account_sepa_direct_debit.email_template_sdd_pre_notification') + sdd_codes = set(self.env['account.payment.method']._get_sdd_payment_method_code()) + for payment in self.payment_ids.filtered(lambda payment: payment.payment_method_code in sdd_codes and payment.sdd_mandate_id): + mandate = payment.sdd_mandate_id + sanitized_acc_number = mandate.partner_bank_id.sanitized_acc_number + anonymized_bank_account_number = f"{re.sub(r'.', '*', sanitized_acc_number[:-4])}{sanitized_acc_number[-4:]}" + + ctx = { + 'iban_last_4': sanitized_acc_number[-4:], + 'mandate_ref': mandate.name, + 'collection_date': payment.batch_payment_id.sdd_required_collection_date, + 'amount': payment.amount, + 'creditor_iban': anonymized_bank_account_number, + } + payment.with_context(ctx).message_post_with_source(source_ref=template, subtype_xmlid='mail.mt_note') + return res + + def check_payments_for_errors(self): + rslt = super().check_payments_for_errors() + + if self.payment_method_code not in self.payment_method_id._get_sdd_payment_method_code(): + return rslt + + if len(self.payment_ids): + sdd_scheme = self.payment_ids[0].sdd_mandate_id.sdd_scheme + dif_scheme_payements = self.payment_ids.filtered(lambda x: x.sdd_mandate_id.sdd_scheme != sdd_scheme) + if dif_scheme_payements: + rslt.append({ + 'title': _("All the payments in the batch must have the same SDD scheme."), + 'records': dif_scheme_payements, + 'help': _("SDD scheme is set on the customer mandate.") + }) + + return rslt diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_invoice.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_invoice.py new file mode 100644 index 0000000..6792da3 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_invoice.py @@ -0,0 +1,56 @@ + +from odoo import api, fields, models, _ + +from odoo.exceptions import UserError + + +class AccountMove(models.Model): + _inherit = 'account.move' + + sdd_mandate_id = fields.Many2one(related='origin_payment_id.sdd_mandate_id') + sdd_has_usable_mandate = fields.Boolean(compute='_compute_sdd_has_usable_mandate', search='_search_sdd_has_usable_mandate') + + @api.model + def _search_sdd_has_usable_mandate(self, operator, value): + + if (operator == '=' and value) or (operator == '!=' and not value): + domain_operator = 'in' + else: + domain_operator = 'not in' + + query = """ + SELECT + move.id + FROM + sdd_mandate mandate + LEFT JOIN + account_move move ON move.company_id = mandate.company_id AND + move.commercial_partner_id = mandate.partner_id + WHERE + move.move_type IN ('out_invoice', 'in_refund') AND + mandate.state = 'active' AND + mandate.start_date <= move.invoice_date AND + (mandate.end_date IS NULL OR mandate.end_date > move.invoice_date) + """ + + self._cr.execute(query) + + return [('id', domain_operator, [x['id'] for x in self._cr.dictfetchall()])] + + @api.depends('company_id', 'commercial_partner_id', 'invoice_date') + def _compute_sdd_has_usable_mandate(self): + for rec in self: + rec.sdd_has_usable_mandate = bool(rec._sdd_get_usable_mandate()) + + def _sdd_get_usable_mandate(self): + + if self.move_type in ('out_invoice', 'in_refund'): + return self.env['sdd.mandate']._sdd_get_usable_mandate(self.company_id.id, self.commercial_partner_id.id, self.invoice_date) + else: + return None + + def _track_subtype(self, init_values): + self.ensure_one() + if 'state' in init_values and self.state in ('in_payment', 'paid') and self.move_type == 'out_invoice' and self.sdd_mandate_id: + return self.env.ref('odex30_account_sepa_direct_debit.sdd_mt_invoice_paid_with_mandate') + return super(AccountMove, self)._track_subtype(init_values) diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_journal.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_journal.py new file mode 100644 index 0000000..f2a8acf --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_journal.py @@ -0,0 +1,40 @@ + + +from odoo import fields, models + + +class AccountJournal(models.Model): + _inherit = 'account.journal' + + debit_sepa_pain_version = fields.Selection( + [ + ('pain.008.001.02', 'Default (Pain 008.001.02)'), + ('pain.008.001.08', 'Updated 2023 (Pain 008.001.08)'), + ], + required=True, + string='SEPA Direct Debit Pain Version', + default='pain.008.001.02', + ) + + def _default_inbound_payment_methods(self): + res = super()._default_inbound_payment_methods() + if self._is_payment_method_available('sdd'): + res |= self.env.ref('odex30_account_sepa_direct_debit.payment_method_sdd') + return res + + def _get_journal_dashboard_data_batched(self): + dashboard_data = super()._get_journal_dashboard_data_batched() + self._fill_dashboard_data_count(dashboard_data, 'account.payment', 'sdd_payments_to_send_number', [ + ('payment_method_code', 'in', self.env['account.payment.method']._get_sdd_payment_method_code()), + ('state', '=', 'in_process'), + ('is_sent', '=', False), + ('is_matched', '=', False), + ]) + return dashboard_data + + def open_sdd_payments(self): + ctx = self._context.copy() + ctx.update({'default_journal_id': self.id, 'search_default_journal_id': self.id}) + action = self.env['ir.actions.act_window']._for_xml_id('odex30_account_sepa_direct_debit.action_sdd_payments_to_collect') + action.update({'context': ctx}) + return action diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_partial_reconcile.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_partial_reconcile.py new file mode 100644 index 0000000..b48ce0c --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_partial_reconcile.py @@ -0,0 +1,14 @@ + +from odoo import api, models + +class AccountPartialReconcile(models.Model): + _inherit = 'account.partial.reconcile' + + @api.ondelete(at_uninstall=False) + def _unlink_sdd_mandate_and_invoice(self): + for partial in self: + for move in {partial.debit_move_id.move_id, partial.credit_move_id.move_id}: + if (move.is_invoice(include_receipts=True) and move.sdd_mandate_id): + payments_with_mandate = move._get_reconciled_payments().filtered(lambda p: p.sdd_mandate_id and p.move_id not in {partial.debit_move_id.move_id, partial.credit_move_id.move_id}) + if not payments_with_mandate: + move.sdd_mandate_id = False diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_payment.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_payment.py new file mode 100644 index 0000000..f686980 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_payment.py @@ -0,0 +1,259 @@ + +import time + +from datetime import datetime + +from odoo import models, fields, api, _ + +from odoo.exceptions import UserError + +from odoo.tools.float_utils import float_repr +from odoo.tools.xml_utils import create_xml_node, create_xml_node_chain +from odoo.addons.odex30_account_batch_payment.models import sepa_mapping +from lxml import etree + + +class AccountPayment(models.Model): + _inherit = 'account.payment' + + # used to inform the end user there is a SDD mandate that could be used to register that payment + sdd_mandate_usable = fields.Boolean(string="Could a SDD mandate be used?", + compute='_compute_usable_mandate') + sdd_mandate_scheme = fields.Selection(related='sdd_mandate_id.sdd_scheme', readonly=True) + sdd_mandate_id = fields.Many2one( + name="SDD Mandate", + comodel_name='sdd.mandate', + copy=False, + check_company=True, + compute='_compute_sdd_mandate_id', + store=True, + readonly=False, + help="Once this invoice has been paid with Direct Debit, contains the mandate that allowed the payment.") + + @api.depends('payment_method_line_id', 'partner_id', 'date') + def _compute_sdd_mandate_id(self): + sepa_codes = self.env['account.payment.method']._get_sdd_payment_method_code() + for payment in self: + payment.sdd_mandate_id = payment.get_usable_mandate() if payment.payment_method_line_id.code in sepa_codes else False + + @api.onchange('partner_id') + def _onchange_partner_id(self): + sepa_codes = self.env['account.payment.method']._get_sdd_payment_method_code() + for payment in self: + mandate = payment.get_usable_mandate() + if not mandate or payment.payment_method_line_id.code not in sepa_codes: + payment.sdd_mandate_id = False + elif mandate and not payment.sdd_mandate_id.filtered(lambda _mandate: _mandate.partner_id == payment.partner_id): + payment.payment_method_line_id = payment.available_payment_method_line_ids.filtered(lambda l: l.code == 'sdd')[0] + payment.sdd_mandate_id = mandate + + def write(self, vals): + unpaid = self.filtered(lambda p: p.state == 'draft') + res = super().write(vals) + for pay in unpaid.filtered(lambda p: p.state == 'in_process'): + if pay.sdd_mandate_id: + matched_invoices = pay.move_id._get_reconciled_invoices() + pay.invoice_ids + matched_invoices.filtered(lambda m: m.sdd_mandate_id != pay.sdd_mandate_id).sdd_mandate_id = pay.sdd_mandate_id + if pay.sdd_mandate_id.one_off: + pay.sdd_mandate_id.sudo().action_close_mandate() + return res + + @api.model + def split_node(self, string_node, max_size): + string_node = self._sanitize_communication(string_node) + byte_node = string_node.encode() + if len(byte_node) <= max_size: + return string_node, '' + while byte_node[max_size] >= 0x80 and byte_node[max_size] < 0xc0: + max_size -= 1 + return byte_node[0:max_size].decode(), byte_node[max_size:].decode() + + @api.depends('date', 'partner_id', 'company_id') + def _compute_usable_mandate(self): + + for payment in self: + payment.sdd_mandate_usable = bool(payment.get_usable_mandate()) + + @api.constrains('partner_id', 'sdd_mandate_id') + def _validate_sdd_mandate_id(self): + for pay in self: + if pay.sdd_mandate_id and pay.sdd_mandate_id.partner_id != pay.partner_id.commercial_partner_id: + raise UserError(_("Trying to register a payment on a mandate belonging to a different partner.")) + + @api.model + def _sanitize_communication(self, communication): + # DEPRECATED - to be removed in master + return sepa_mapping.sanitize_communication(communication, None) + + def generate_xml(self, company_id, required_collection_date, askBatchBooking): + + version = self.journal_id.debit_sepa_pain_version + if not version: + raise UserError(_("Select a SEPA Direct Debit version before generating the XML.")) + document = etree.Element("Document", nsmap={None: f'urn:iso:std:iso:20022:tech:xsd:{version}', 'xsi': "http://www.w3.org/2001/XMLSchema-instance"}) + CstmrDrctDbtInitn = etree.SubElement(document, 'CstmrDrctDbtInitn') + + self._sdd_xml_gen_header(company_id, CstmrDrctDbtInitn) + + payments_per_journal = self._group_payments_per_bank_journal() + payment_info_counter = 0 + for (journal, journal_payments) in payments_per_journal.items(): + journal_payments._sdd_xml_gen_payment_group(company_id, required_collection_date, askBatchBooking, payment_info_counter, journal, CstmrDrctDbtInitn) + payment_info_counter += 1 + + + return etree.tostring(document, pretty_print=True, xml_declaration=True, encoding='utf-8') + + def get_usable_mandate(self): + return self.env['sdd.mandate']._sdd_get_usable_mandate( + self.company_id.id or self.env.company.id, + self.partner_id.commercial_partner_id.id, + self.date) + + def _sdd_xml_gen_header(self, company_id, CstmrDrctDbtInitn): + + GrpHdr = create_xml_node(CstmrDrctDbtInitn, 'GrpHdr') + create_xml_node(GrpHdr, 'MsgId', str(time.time())) # Using time makes sure the identifier is unique in an easy way + create_xml_node(GrpHdr, 'CreDtTm', datetime.now().strftime('%Y-%m-%dT%H:%M:%S')) + create_xml_node(GrpHdr, 'NbOfTxs', str(len(self))) + create_xml_node(GrpHdr, 'CtrlSum', float_repr(sum(x.amount for x in self), precision_digits=2)) # This sum ignores the currency, it is used as a checksum (see SEPA rulebook) + InitgPty = create_xml_node(GrpHdr, 'InitgPty') + create_xml_node(InitgPty, 'Nm', self.split_node(company_id.name, 70)[0]) + create_xml_node_chain(InitgPty, ['Id', 'OrgId', 'Othr', 'Id'], company_id.sdd_creditor_identifier) + + def _sdd_xml_gen_address(self, root_node, partner, sdd_version): + + contact_address = partner._display_address(without_company=True) + if contact_address: + PstlAdr = create_xml_node(root_node, 'PstlAdr') + if sdd_version == 'pain.008.001.02': + if partner.country_id and partner.country_id.code: + create_xml_node(PstlAdr, 'Ctry', partner.country_id.code) + n_line = 0 + contact_address = contact_address.replace('\n', ' ').strip() + while contact_address and n_line < 2: + left_split, right_split = self.split_node(contact_address, 70) + create_xml_node(PstlAdr, 'AdrLine', left_split) + contact_address = right_split + n_line = n_line + 1 + elif sdd_version == 'pain.008.001.08': + if partner.street: + street_name = partner.street if not partner.street2 else f'{partner.street}, {partner.street2}' + create_xml_node(PstlAdr, 'StrtNm', self.split_node(street_name, 70)[0]) # Number and box in street + if partner.zip: + create_xml_node(PstlAdr, 'PstCd', partner.zip) + if partner.city: + create_xml_node(PstlAdr, 'TwnNm', partner.city) + else: + raise UserError(_('The debtor and creditor city name is a compulsary information when generating the SDD XML.')) + if partner.state_id and partner.state_id.name: + create_xml_node(PstlAdr, 'CtrySubDvsn', partner.state_id.name) + if partner.country_id and partner.country_id.code: + create_xml_node(PstlAdr, 'Ctry', partner.country_id.code) + else: + raise UserError(_('The debtor and creditor country is a compulsary information when generating the SDD XML.')) + else: + raise UserError(_('A SEPA direct debit version should be selected to generate the addresses in the export file.')) + + def _sdd_xml_gen_payment_group(self, company_id, required_collection_date, askBatchBooking, payment_info_counter, journal, CstmrDrctDbtInitn): + + sdd_version = self.journal_id.debit_sepa_pain_version + if not sdd_version: + raise UserError(_('A SEPA direct debit version should be selected to generate the export file.')) + + PmtInf = create_xml_node(CstmrDrctDbtInitn, 'PmtInf') + create_xml_node(PmtInf, 'PmtInfId', CstmrDrctDbtInitn.find('GrpHdr/MsgId').text + '/' + str(payment_info_counter)) + create_xml_node(PmtInf, 'PmtMtd', 'DD') + create_xml_node(PmtInf, 'BtchBookg', askBatchBooking and 'true' or 'false') + create_xml_node(PmtInf, 'NbOfTxs', str(len(self))) + create_xml_node(PmtInf, 'CtrlSum', float_repr(sum(x.amount for x in self), precision_digits=2)) # This sum ignores the currency, it is used as a checksum (see SEPA rulebook) + + PmtTpInf = create_xml_node_chain(PmtInf, ['PmtTpInf', 'SvcLvl', 'Cd'], 'SEPA')[0] + + sdd_scheme = self[0].sdd_mandate_id.sdd_scheme or 'CORE' + create_xml_node_chain(PmtTpInf, ['LclInstrm', 'Cd'], sdd_scheme) + + create_xml_node(PmtTpInf, 'SeqTp', 'RCUR') + + create_xml_node(PmtInf, 'ReqdColltnDt', fields.Date.from_string(required_collection_date).strftime("%Y-%m-%d")) + Cdtr = create_xml_node_chain(PmtInf, ['Cdtr', 'Nm'], self.split_node(company_id.name, 70)[0])[0] # SEPA regulation gives a maximum size of 70 characters for this field + + if sdd_version == 'pain.008.001.08': + self._sdd_xml_gen_address(Cdtr, company_id.partner_id, sdd_version) + + create_xml_node_chain(PmtInf, ['CdtrAcct', 'Id', 'IBAN'], journal.bank_account_id.sanitized_acc_number) + + if journal.bank_id and journal.bank_id.bic: + bic_tag = 'BIC' if sdd_version == 'pain.008.001.02' else 'BICFI' + create_xml_node_chain(PmtInf, ['CdtrAgt', 'FinInstnId', bic_tag], journal.bank_id.bic.replace(' ', '').upper()) + else: + create_xml_node_chain(PmtInf, ['CdtrAgt', 'FinInstnId', 'Othr', 'Id'], "NOTPROVIDED") + + CdtrSchmeId_Othr = create_xml_node_chain(PmtInf, ['CdtrSchmeId', 'Id', 'PrvtId', 'Othr', 'Id'], company_id.sdd_creditor_identifier)[-2] + create_xml_node_chain(CdtrSchmeId_Othr, ['SchmeNm', 'Prtry'], 'SEPA') + + for payment in self: + payment.sdd_xml_gen_payment(company_id, payment.partner_id, self.split_node(payment.name, 35)[0], PmtInf) + + def sdd_xml_gen_payment(self, company_id, partner, end2end_name, PmtInf): + """ Appends to a SDD XML file being generated all the data related to the + payments of a given partner. + """ + # The two following conditions should never execute. + # They are here to be sure future modifications won't ever break everything. + if company_id not in self.company_id.parent_ids: + raise UserError(_("Trying to generate a Direct Debit XML file containing payments from another company than that file's creditor.")) + + if self.payment_method_line_id.code not in self.payment_method_id._get_sdd_payment_method_code(): + raise UserError(_("Trying to generate a Direct Debit XML for payments coming from another payment method than SEPA Direct Debit.")) + + if not self.sdd_mandate_id: + raise UserError(_("The payment must be linked to a SEPA Direct Debit mandate in order to generate a Direct Debit XML.")) + + if self.sdd_mandate_id.state == 'revoked': + raise UserError(_("The SEPA Direct Debit mandate associated to the payment has been revoked and cannot be used anymore.")) + + sdd_version = self.journal_id.debit_sepa_pain_version + if not sdd_version: + raise UserError(_('A SEPA direct debit version should be selected to generate the export file.')) + + DrctDbtTxInf = create_xml_node_chain(PmtInf, ['DrctDbtTxInf', 'PmtId', 'EndToEndId'], end2end_name)[0] + + InstdAmt = create_xml_node(DrctDbtTxInf, 'InstdAmt', float_repr(self.amount, precision_digits=2)) + InstdAmt.attrib['Ccy'] = self.currency_id.name + + MndtRltdInf = create_xml_node_chain(DrctDbtTxInf, ['DrctDbtTx', 'MndtRltdInf', 'MndtId'], self.sdd_mandate_id.name)[-2] + create_xml_node(MndtRltdInf, 'DtOfSgntr', fields.Date.to_string(self.sdd_mandate_id.start_date)) + + if self.sdd_mandate_id.partner_bank_id.bank_id.bic: + bic_tag = 'BIC' if sdd_version == 'pain.008.001.02' else 'BICFI' + create_xml_node_chain(DrctDbtTxInf, ['DbtrAgt', 'FinInstnId', bic_tag], self.sdd_mandate_id.partner_bank_id.bank_id.bic.replace(' ', '').upper()) + else: + create_xml_node_chain(DrctDbtTxInf, ['DbtrAgt', 'FinInstnId', 'Othr', 'Id'], 'NOTPROVIDED') + + debtor_name = self.sdd_mandate_id.partner_bank_id.acc_holder_name or partner.name or partner.parent_id.name + Dbtr = create_xml_node_chain(DrctDbtTxInf, ['Dbtr', 'Nm'], self.split_node(debtor_name, 70)[0])[0] + + self._sdd_xml_gen_address(Dbtr, partner, sdd_version) + + if self.sdd_mandate_id.debtor_id_code: + chain_keys = ['Id', 'PrvtId', 'Othr', 'Id'] + if partner.commercial_partner_id.is_company: + chain_keys = ['Id', 'OrgId', 'Othr', 'Id'] + create_xml_node_chain(Dbtr, chain_keys, self.sdd_mandate_id.debtor_id_code) + + create_xml_node_chain(DrctDbtTxInf, ['DbtrAcct', 'Id', 'IBAN'], self.sdd_mandate_id.partner_bank_id.sanitized_acc_number) + + if self.memo: + create_xml_node_chain(DrctDbtTxInf, ['RmtInf', 'Ustrd'], self.split_node(self.memo, 140)[0]) + + def _group_payments_per_bank_journal(self): + """ Groups the payments of this recordset per associated journal, in a dictionnary of recordsets. + """ + rslt = {} + for payment in self: + if rslt.get(payment.journal_id, False): + rslt[payment.journal_id] += payment + else: + rslt[payment.journal_id] = payment + return rslt diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_payment_method.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_payment_method.py new file mode 100644 index 0000000..62c2be6 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/account_payment_method.py @@ -0,0 +1,18 @@ + +from odoo import api, models + + +class AccountPaymentMethod(models.Model): + _inherit = 'account.payment.method' + + @api.model + def _get_payment_method_information(self): + res = super()._get_payment_method_information() + res['sdd'] = {'mode': 'multi', 'type': ('bank',)} + return res + + @api.model + def _get_sdd_payment_method_code(self): + res = super()._get_sdd_payment_method_code() + res.append('sdd') + return res diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/res_company.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/res_company.py new file mode 100644 index 0000000..bab3be7 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/res_company.py @@ -0,0 +1,49 @@ + +import re + +from odoo import api, fields, models, _ + +from odoo.exceptions import ValidationError + + +SDD_CREDITOR_IDENTIFIER_REGEX_PATTERN = r"(?P[A-Z]{2})(?P\d{2})(?P.{3})(?P.{1,28})" + +class ResCompany(models.Model): + _inherit = 'res.company' + + sdd_creditor_identifier = fields.Char(string='SDD creditor identifier', help="SEPA Direct Debit creditor identifier of the company, given by the bank.") + + @api.constrains('sdd_creditor_identifier') + def validate_sdd_creditor_identifier(self): + for record in self: + if not record.sdd_creditor_identifier: + continue + + if len(record.sdd_creditor_identifier) > 35: + raise ValidationError(_("The creditor identifier exceeds the maximum length of 35 characters.")) + + matcher = re.match(SDD_CREDITOR_IDENTIFIER_REGEX_PATTERN, record.sdd_creditor_identifier.upper()) + if matcher: + country_code = matcher.group('country_code') + check_digits = matcher.group('check_digits') + country_identifier = matcher.group('country_identifier') + + test_str = re.sub('[^A-Z0-9]', '', country_identifier) + country_code + '00' + converted_test_str = self._convert_sdd_test_str(test_str) + + if (98 - int(converted_test_str) % 97) != int(check_digits): # Mod 97-10 validation test + raise ValidationError(_("Invalid creditor identifier. Make sure you made no typo.")) + else: + raise ValidationError(_("Invalid creditor identifier. Wrong format.")) + + @api.model + def _convert_sdd_test_str(self, test_str): + + ascii_value_shift = 55 # ord('A') - ascii_value_shift = 10 + rslt = '' + for char in test_str: + if re.match('[A-Z]', char): + rslt += str(ord(char) - ascii_value_shift) + else: + rslt += char + return rslt diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/res_config_settings.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/res_config_settings.py new file mode 100644 index 0000000..09eaa22 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/res_config_settings.py @@ -0,0 +1,8 @@ + +from odoo import fields, models + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + sdd_creditor_identifier = fields.Char(related='company_id.sdd_creditor_identifier', string='Creditor Identifier', readonly=False, + help='Creditor identifier of your company within SEPA scheme.') diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/res_partner.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/res_partner.py new file mode 100644 index 0000000..bfb0293 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/res_partner.py @@ -0,0 +1,19 @@ + +from odoo import fields, models + + +class Partner(models.Model): + _inherit = 'res.partner' + + sdd_mandate_ids = fields.One2many(comodel_name='sdd.mandate', inverse_name='partner_id', + help="Every mandate belonging to this partner.") + sdd_count = fields.Integer(compute='_compute_sdd_count', string="SDD count") + + def _compute_sdd_count(self): + sdd_data = self.env['sdd.mandate']._read_group( + domain=[('partner_id', 'in', self.ids)], + groupby=['partner_id'], + aggregates=['__count']) + mapped_data = {partner.id: count for partner, count in sdd_data} + for partner in self: + partner.sdd_count = mapped_data.get(partner.id, 0) diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/res_partner_bank.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/res_partner_bank.py new file mode 100644 index 0000000..7d28c5e --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/res_partner_bank.py @@ -0,0 +1,10 @@ +from odoo import api, models, _ +from odoo.exceptions import UserError + +class ResPartnerBank(models.Model): + _inherit = "res.partner.bank" + + @api.ondelete(at_uninstall=False) + def _unlink_except_linked_to_mandate(self): + if self.env['sdd.mandate'].search_count([('partner_bank_id', 'in', self.ids), ('state', '=', 'active')], limit=1): + raise UserError(_('You cannot delete a bank account linked to an active SEPA Direct Debit mandate.')) diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/sdd_mandate.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/sdd_mandate.py new file mode 100644 index 0000000..36b7a04 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/models/sdd_mandate.py @@ -0,0 +1,335 @@ + +from datetime import datetime + +from odoo import Command, api, fields, models, _ +from odoo.exceptions import RedirectWarning, UserError + +SDD_MIN_PRENOT_PERIOD = 2 +SDD_FIRST_MIN_PRENOT_PERIOD = 5 + + +class SDDMandate(models.Model): + + _name = 'sdd.mandate' + _inherit = ['mail.thread.main.attachment', 'mail.activity.mixin'] + _description = 'SDD Mandate' + _check_company_auto = True + _order = 'start_date, id' + + _sql_constraints = [('name_unique', 'unique(name)', "Mandate identifier must be unique! Please choose another one.")] + + def _get_default_start_date(self): + return fields.Date.context_today(self) + + state = fields.Selection( + selection=[ + ('draft', 'Draft'), + ('active', 'Active'), + ('cancelled', 'Cancelled'), + ('revoked', 'Revoked'), + ('closed', 'Closed'), + ], + readonly=True, + default='draft', + tracking=True, + help="Draft: Validate before use.\n" + "Active: Valid mandates to collect payments.\n" + "Cancelled: Mandates never validated.\n" + "Closed: Expired or manually closed mandates. Previous transactions remain valid.\n" + "Revoked: Fraudulent mandates. Previous invoices might need reimbursement.\n" + ) + is_sent = fields.Boolean(string="Sent to the customer", default=False) + + one_off = fields.Boolean(string='One-off Mandate', + default=False, + help="True if and only if this mandate can be used for only one transaction. It will automatically go from 'active' to 'closed' after its first use in payment if this option is set.\n") + + name = fields.Char(string='Identifier', required=True, help="The unique identifier of this mandate.", default=lambda self: datetime.now().strftime('%f%S%M%H%d%m%Y'), copy=False) + debtor_id_code = fields.Char(string='Debtor Identifier', help="Free reference identifying the debtor in your company.") + partner_id = fields.Many2one( + comodel_name='res.partner', + string='Customer', + required=True, + check_company=True, + help="Customer whose payments are to be managed by this mandate.", + ) + partner_parent_id = fields.Many2one( + related='partner_id.parent_id', + comodel_name='res.partner', + string="Parent Partner", + readonly=True, + ) + company_id = fields.Many2one(comodel_name='res.company', default=lambda self: self.env.company, help="Company for whose invoices the mandate can be used.") + partner_bank_id = fields.Many2one( + comodel_name='res.partner.bank', + string='IBAN', + check_company=True, + help="Account of the customer to collect payments from.", + ) + start_date = fields.Date( + string="Start Date", + required=True, + default=_get_default_start_date, + help="Date from which the mandate can be used (inclusive).", + ) + end_date = fields.Date(string="End Date", help="Date until which the mandate can be used. It will automatically be closed after this date.") + expiration_warning_already_sent = fields.Boolean( + string="Expiration warning sent", + default=False, + readonly=True, + required=True, + copy=False, + ) + pre_notification_period = fields.Integer( + string="Pre-notification", + default=SDD_MIN_PRENOT_PERIOD, required=True, + help="The minimum notice period in days, used to inform the customer prior to collection.", + ) + sdd_scheme = fields.Selection(string="SDD Scheme", selection=[('CORE', 'CORE'), ('B2B', 'B2B')], + required=True, default='CORE', help='The B2B scheme is an optional scheme,\noffered exclusively to business payers.\n' + 'Some banks/businesses might not accept B2B SDD.',) + + paid_invoice_ids = fields.One2many(string='Invoices Paid', comodel_name='account.move', + compute='_compute_from_moves', + help="Invoices paid using this mandate.") + paid_invoices_nber = fields.Integer(string='Paid Invoices Number', + compute='_compute_from_moves', + help="Number of invoices paid with this mandate.") + payment_ids = fields.One2many(string='Payments', comodel_name='account.payment', + compute='_compute_from_moves', + help="In-process and completed payments generated under this mandate.") + payments_to_collect_nber = fields.Integer(string='Direct Debit Payments to Collect', + compute='_compute_from_moves', + help="Number of in-process and completed payments generated under this mandate.") + mandate_pdf_file = fields.Binary( + string="Mandate Form PDF", + attachment=True, + copy=False, + readonly=True, + ) + + @api.ondelete(at_uninstall=False) + def _unlink_if_draft(self): + if self.filtered(lambda x: x.state != 'draft'): + raise UserError(_("Only mandates in draft state can be deleted.")) + + @api.model + def _sdd_get_usable_mandate(self, company_id, partner_id, date): + + mandates = self.env['sdd.mandate'].search([ + ('state', '=', 'active'), + ('start_date', '<=', date), + '|', ('end_date', '=', False), ('end_date', '>=', date), + ('company_id', '=', company_id), + ('partner_id', '=', partner_id), + ], + limit=1, + order='start_date,id', + ) + return mandates + + def _compute_from_moves(self): + stored_mandates = self.filtered('id') + if not stored_mandates: + self.paid_invoices_nber = 0 + self.payments_to_collect_nber = 0 + self.paid_invoice_ids = False + self.payment_ids = False + return + + results = dict( + self.env['account.payment']._read_group([ + ('sdd_mandate_id', 'in', self.ids), + ('payment_method_code', 'in', self.env['account.payment.method']._get_sdd_payment_method_code()), + ('state', 'in', ('in_process', 'paid')), + ], groupby=['sdd_mandate_id'], aggregates=['id:recordset']) + ) + + for mandate in self: + payments = results.get(mandate, self.env['account.payment']) + mandate.payment_ids = [Command.set(payments.ids)] + mandate.payments_to_collect_nber = len(payments) + invoices = payments.reconciled_invoice_ids.filtered(lambda move: move.payment_state == 'paid') + mandate.paid_invoice_ids = [Command.set(invoices.ids)] + mandate.paid_invoices_nber = len(invoices) + + def _update_and_partition_state_by_validity(self): + + today = fields.Date.context_today(self) + expiry_date_per_mandate = self._get_expiry_date_per_mandate() + active_mandates = self.filtered(lambda mandate: mandate.state == 'active') + + valid_mandates = self.env['sdd.mandate'] + expiring_mandates = self.env['sdd.mandate'] + invalid_mandates = self - active_mandates + + to_close = self.env['sdd.mandate'] + for mandate in active_mandates: + expiry_date = expiry_date_per_mandate[mandate] + if mandate.start_date <= today <= expiry_date: + if today + fields.date_utils.relativedelta(days=30) >= expiry_date: + expiring_mandates += mandate # Used to send warnings + else: + valid_mandates += mandate + elif today < mandate.start_date: + invalid_mandates += mandate + else: + to_close += mandate + invalid_mandates += mandate + + # Closing invalid mandates that haven't been closed yet + to_close.state = 'closed' + return { + 'valid': valid_mandates.with_prefetch(), + 'expiring': expiring_mandates.with_prefetch(), + 'invalid': invalid_mandates.with_prefetch(), + } + + def _get_expiry_date_per_mandate(self): + + expiry_date_per_mandate = {} + delay_36_months = fields.date_utils.relativedelta(months=36) + payments_collected_per_mandate = dict(self.env['account.payment']._read_group([ + ('sdd_mandate_id', 'in', self.ids), + ('payment_method_code', 'in', self.env['account.payment.method']._get_sdd_payment_method_code()), + ('state', '=', 'paid'), + ], + groupby=['sdd_mandate_id'], + aggregates=['id:recordset'], + )) + for mandate in self: + payments_collected = payments_collected_per_mandate.get(mandate, self.env['account.payment']) + + dates = [mandate.end_date] if mandate.end_date else [] + dates.append(max(payments_collected.mapped('date'), default=mandate.start_date) + delay_36_months) + expiry_date_per_mandate[mandate] = min(dates) # Todo use records + + return expiry_date_per_mandate + + def _send_expiry_reminder(self): + self.ensure_one() + template = self.env.ref('odex30_account_sepa_direct_debit.email_template_sdd_mandate_expiring') + self.message_post_with_source( + source_ref=template, + subtype_id=self.env['ir.model.data']._xmlid_to_res_id('mail.mt_note'), + ) + self.expiration_warning_already_sent = True + + def action_send_and_print(self): + self.ensure_one() + self._ensure_required_data() + template = self.env.ref('odex30_account_sepa_direct_debit.email_template_sdd_new_mandate', raise_if_not_found=False) + + return { + 'name': _("Send"), + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'sdd.mandate.send', + 'target': 'new', + 'context': { + 'default_mandate_id': self.id, + 'default_template_id': template and template.id or False, + }, + } + + def action_validate_mandate(self): + + self._ensure_required_data() + + for mandate in self: + if not mandate.partner_bank_id: + raise UserError(_("A customer account is required to validate a SEPA Direct Debit mandate.")) + if mandate.partner_bank_id.acc_type != 'iban': + raise UserError(_( + "SEPA Direct Debit scheme only accepts IBAN account numbers. " + "Please select an IBAN-compliant debtor account for this mandate." + )) + if mandate.state == 'draft': + mandate.state = 'active' + + def action_revoke_mandate(self): + + self.state = 'revoked' + + def action_cancel_mandate(self): + self.state = 'cancelled' + + def action_close_mandate(self): + + for record in self: + if record.state != 'revoked': + record.end_date = fields.Date.today() + record.state = 'closed' + + def action_view_paid_invoices(self): + return self.paid_invoice_ids._get_records_action(name=_('Paid Invoices')) + + def action_view_payments_to_collect(self): + return self.payment_ids._get_records_action(name=_('Payments to Collect')) + + def action_parent_id_from_sdd_mandate(self): + parent = self.partner_id.parent_id + return parent._get_records_action(name=_("Partner's Parent")) + + @api.constrains('end_date', 'start_date') + def _validate_end_date(self): + for record in self: + if record.end_date and record.start_date and record.end_date < record.start_date: + raise UserError(_("The end date of the mandate must be posterior or equal to its start date.")) + + @api.constrains('debtor_id_code') + def _validate_debtor_id_code(self): + for record in self: + if record.debtor_id_code and len(record.debtor_id_code) > 35: # Arbitrary limitation given by SEPA regulation for the element used for this field when generating the XML + raise UserError(_("The debtor identifier you specified exceeds the limitation of 35 characters imposed by SEPA regulation")) + + @api.constrains('pre_notification_period') + def _validate_pre_notification_period(self): + for mandate in self: + if mandate.pre_notification_period < SDD_MIN_PRENOT_PERIOD: # Minimum required for collection + raise UserError(_( + "SEPA regulations set the minimum pre-notification period to a minimum of %s days " + "to allow enough time for the customer to check that their account is adequately funded.", + SDD_MIN_PRENOT_PERIOD + )) + + def _ensure_required_data(self): + for mandate in self: + if mandate.sdd_scheme == 'B2B' and not mandate.partner_id.is_company: + raise UserError(_("Under B2B SDD Scheme, the customer must be a company.")) + stateless_partners = self.partner_id.filtered(lambda partner: not partner.country_id) + if stateless_partners: + msg = _("The customer must have a country") + if len(stateless_partners) == 1: + raise RedirectWarning( + msg, + action={ + 'name': _("SEPA direct debit stateless customer"), + 'type': 'ir.actions.act_window', + 'res_model': 'res.partner', + 'views': [(False, 'form'), (False, 'list')], + 'res_id': self.partner_id.id + }, + button_text=_("Open customer"), + ) + else: + raise RedirectWarning( + msg, + action={ + 'name': _("SEPA direct debit stateless customer"), + 'type': 'ir.actions.act_window', + 'res_model': 'res.partner', + 'views': [(False, 'list'), (False, 'form')], + 'domain': [('id', 'in', self.partner_id.ids)], + }, + button_text=_("Open customers"), + ) + + @api.model + def cron_update_mandates_states(self): + mandates = self.search([('state', '=', 'active')]) + mandates_per_validity = mandates._update_and_partition_state_by_validity() + mandates_per_validity['valid'].expiration_warning_already_sent = False # Reset the field if a new payment came, resetting the period + for mandate in mandates_per_validity['expiring'].filtered(lambda sddm: not sddm.expiration_warning_already_sent): + # Warning 30 days before expiration + mandate._send_expiry_reminder() diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/report/empty_mandate_report.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/report/empty_mandate_report.xml new file mode 100644 index 0000000..e4199cf --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/report/empty_mandate_report.xml @@ -0,0 +1,137 @@ + + + + + Mandate form + sdd.mandate + qweb-pdf + odex30_account_sepa_direct_debit.sdd_mandate_form_report + odex30_account_sepa_direct_debit.sdd_mandate_form_report + True + + report + + + + + + + + + diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/schemas/EPC131-08_2019_V1.0_pain.008.001.02.xsd b/dev_odex30_accounting/odex30_account_sepa_direct_debit/schemas/EPC131-08_2019_V1.0_pain.008.001.02.xsd new file mode 100644 index 0000000..2388748 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/schemas/EPC131-08_2019_V1.0_pain.008.001.02.xsd @@ -0,0 +1,2261 @@ + + + + + + Account Identification 4Choice + Specifies the unique identification of an account as assigned by the account servicer. + + + + + + IBAN + International Bank Account Number (IBAN) - identifier used internationally by financial institutions to uniquely identify the account of a customer. Further specifications of the format and content of the IBAN can be found in the standard ISO 13616 "Banking and related financial services - International Bank Account Number (IBAN)" version 1997-10-01, or later revisions. + + + + + Other + Unique identification of an account, as assigned by the account servicer, using an identification scheme. + + + + + + + + + + + + + + + + + + + Active Or Historic Currency And Amount + A number of monetary units specified in an active or a historic currency where the unit of currency is explicit and compliant with ISO 4217. + + + + + + Currency + A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds". + + + + + + + + + + + + + + + + + + Active Or Historic Currency And Amount _Simple Type + A number of monetary units specified in an active or a historic currency where the unit of currency is explicit and compliant with ISO 4217. + + + + + + + + + + Active Or Historic Currency Code + A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds". + + + + + + + + + + Euro + Numeric code: 978 + + + + + + + + Amendment Information Details 6 + Set of elements used to provide the list of direct debit mandate elements that have been modified when the amendment indicator has been set. + + + + + Original Mandate Identification + Unique identification, as assigned by the creditor, to unambiguously identify the original mandate. + + + + + Original Creditor Scheme Identification + Original creditor scheme identification that has been modified. + + + + + Original Debtor Account + Original debtor account that has been modified. + + + + + Original Debtor Agent + Original debtor agent that has been modified. + + + + + + + + + + + + AT-19 Unique Mandate Reference as given by the Original Creditor who issued the Mandate. + Mandatory if changes occur in ‘Mandate Identification’, otherwise not to be used. + + + + + + Mandatory if changes occur in ‘Creditor Scheme Identification’ (‘Name’ and/or 'Identification'), otherwise not to be used. + + + + + + To use ‘Identification’ under ‘Other’ under ‘Identification’ with code ‘SMNDA’ (Same Mandate with a New Debtor Account) to indicate same mandate with new Debtor Account. Or + In case of an account change within the same bank, IBAN is allowed. + + + + + + Not to be used if element 'Original Debtor Account' is populated with 'SMNDA' (Same Mandate with a New Debtor Account). + + + + + + + + + Any BICIdentifier + Code allocated to a financial or non-financial institution by the ISO 9362 Registration Authority, as described in ISO 9362 "Banking - Banking telecommunication messages - Business identifier code (BIC)". + + + + + + + + Batch Booking Indicator + Identifies whether the sending party requests a single debit or credit entry per individual transaction or a batch entry for the sum of the amounts of all transactions. + + + + + + BICIdentifier + Code allocated to a financial institution by the ISO 9362 Registration Authority as described in ISO 9362 "Banking - Banking telecommunication messages - Business identifier code (BIC)". + + + + + + + + Branch And Financial Institution Identification 4 + Set of elements used to uniquely and unambiguously identify a financial institution or a branch of a financial institution. + + + + + Financial Institution Identification + Unique and unambiguous identification of a financial institution, as assigned under an internationally recognised or proprietary identification scheme. + + + + + + + + + + + + Either BIC or ‘Other/Identification’ must be used. + + + + + + + + + + + + + + Either BIC or ‘Other/Identification’ must be used. + + + + + + + + + Cash Account 16 + Set of elements used to identify an account. + + + + + Identification + Unique and unambiguous identification for the account between the account owner and the account servicer. + + + + + Currency + +Identification of the currency in which the account is held. + +Usage: Currency should only be used in case one and the same account number covers several currencies +and the initiating party needs to identify which currency needs to be used for settlement on the account. + + + + + + + + + + + + + Only IBAN is allowed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Category Purpose 1Choice + +Specifies the high level purpose of the instruction based on a set of pre-defined categories. +Usage: This is used by the initiating party to provide information concerning the processing of the payment. It is likely to trigger special processing by any of the agents involved in the payment chain. + + + + + + + Code + Category purpose, as published in an external category purpose code list. + + + + + Proprietary + Category purpose, in a proprietary form. + + + + + + + + Charge Bearer Type 1Code + Specifies which party(ies) will pay charges due for processing of the instruction. + + + + + FollowingServiceLevel + Charges are to be applied following the rules agreed in the service level and/or scheme. + + + + + + + Country Code + Code to identify a country, a dependency, or another area of particular geopolitical interest, on the basis of country names obtained from the United Nations (ISO 3166, Alpha-2 code). + + + + + + + + Creditor Reference Information 2 + Reference information provided by the creditor to allow the identification of the underlying documents. + + + + + Type + Specifies the type of creditor reference. + + + + + Reference + +Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. + +Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money. + +If the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification. + + + + + + + + + + + + + Mandatory if 'Creditor Reference Information' is used. + + + + + + Mandatory if 'Creditor Reference Information' is used. + If ‘Creditor’ Reference contains a check digit, the receiving bank is not required to validate this. + If the receiving bank validates the check digit and if this validation fails, the bank may continue its processing and send the transaction to the next party in the chain. + RF Creditor Reference may be used (ISO 11649). + + + + + + + + + Creditor Reference Type 1Choice + Specifies the type of document referred by the creditor. + + + + + + Code + Type of creditor reference, in a coded form. + + + + + + + + + + + + + + Only ‘SCOR’ is allowed. + + + + + + + + + + Creditor Reference Type 2 + Specifies the type of creditor reference. + + + + + Code Or Proprietary + Coded or proprietary format creditor reference type. + + + + + Issuer + Entity that assigns the credit reference type. + + + + + + + + + + + + + + + + + + + + + + + + + Customer Direct Debit Initiation V02 + The CustomerDirectDebitInitiation message is sent by the initiating party to the forwarding agent or creditor's agent. It is used to request single or bulk collection(s) of funds from one or various debtor's account(s) to a creditor. + + + + + Group Header + Set of characteristics shared by all individual transactions included in the message. + + + + + Payment Information + Set of characteristics that apply to the credit side of the payment transactions included in the direct debit transaction initiation. + + + + + + + + + + + + + + + + + + + + + + + + + Date And Place Of Birth + Date and place of birth of a person. + + + + + Birth Date + Date on which a person is born. + + + + + Province Of Birth + Province where a person was born. + + + + + City Of Birth + City where a person was born. + + + + + Country Of Birth + Country where a person was born. + + + + + + + Decimal Number + Number of objects represented as a decimal number, eg, 0.75 or 45.6. + + + + + + + + + + + + + + + Direct Debit Transaction 6 + Set of elements used to provide specific information on the direct debit transaction and the related mandate. + + + + + Mandate Related Information + Set of elements used to provide further details of the direct debit mandate signed between the creditor and the debtor. + + + + + Creditor Scheme Identification + Credit party that signs the mandate. + + + + + + + + + + + + Mandatory + + + + + + It is recommended that all transactions within the same ‘Payment Information’ block have the same ‘Creditor Scheme Identification’. + This data element must be present at either ‘Payment Information’ or ‘Direct Debit Transaction’ level. + + + + + + + + + Direct Debit Transaction Information 9 + Set of elements used to provide information specific to the individual direct debit transaction(s) included in the message. + + + + + Payment Identification + Set of elements used to reference a payment instruction. + + + + + Payment Type Information + Set of elements used to further specify the type of transaction. + + + + + Instructed Amount + Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party. + + + + + Charge Bearer + Specifies which party/parties will bear the charges associated with the processing of the payment transaction. + + + + + Direct Debit Transaction + Set of elements providing information specific to the direct debit mandate. + + + + + Ultimate Creditor + Ultimate party to which an amount of money is due. + + + + + Debtor Agent + Financial institution servicing an account for the debtor. + + + + + Debtor + Party that owes an amount of money to the (ultimate) creditor. + + + + + Debtor Account + Unambiguous identification of the account of the debtor to which a debit entry will be made as a result of the transaction. + + + + + Ultimate Debtor + Ultimate party that owes an amount of money to the (ultimate) creditor. + + + + + Purpose + +Underlying reason for the payment transaction. +Usage: Purpose is used by the end-customers, that is initiating party, (ultimate) debtor, (ultimate) creditor to provide information concerning the nature of the payment. Purpose is a content element, which is not used for processing by any of the agents involved in the payment chain. + + + + + + Remittance Information + Information supplied to enable the matching of an entry with the items that the transfer is intended to settle, such as commercial invoices in an accounts' receivable system. + + + + + + + + + + + + + + + + + ‘Payment Type Information’ must be present either here or directly under ‘Payment Information'. + + + + + + AT-06 Amount of the Collection in Euro. + Only ‘EUR’ is allowed. + Amount must be 0.01 or more and 999999999.99 or less. + The fractional part has a maximum of two digits. + + + + + + Only ‘SLEV’ is allowed. + + + + + + Mandatory + + + + + + This data element may be present either at ‘Payment Information’ or at ‘Direct Debit Transaction Information’ level. + + + + + + + + + + + + + + + + AT-07 The account number (IBAN) of the Debtor. + Only IBAN is allowed. + + + + + + Mandatory, if provided by the Debtor in the Mandate. + + + + + + AT-58 Purpose of the Collection. + + + + + + AT-22 Remittance information from the Creditor. + Either ‘Structured’ or ‘Unstructured’, may be present. + + + + + + + + + + + Customer Direct Debit Initiation V02 + + + + + + + Document Type 3Code + Specifies a type of financial or commercial document. + + + + + StructuredCommunicationReference + Document is a structured communication reference provided by the creditor to identify the referred transaction. + + + + + + + + + + + + + + + + + + + + External Category Purpose 1Code + Specifies the category purpose, as published in an external category purpose code list. + + + + + + + + + External Local Instrument 1Code + +Specifies the external local instrument code in the format of character string with a maximum length of 35 characters. +The list of valid codes is an external code list published separately. + + + + + + + + + + + + Transaction is related to SEPA business to business direct debit. + SEPA Business to Business Direct Debit + + + + + + + + + External Organisation Identification 1Code + +Specifies the external organisation identification scheme name code in the format of character string with a maximum length of 4 characters. +The list of valid codes is an external code list published separately. + + + + + + + + + + External Person Identification 1Code + +Specifies the external person identification scheme name code in the format of character string with a maximum length of 4 characters. +The list of valid codes is an external code list published separately. + + + + + + + + + + External Purpose 1Code + +Specifies the external purpose code in the format of character string with a maximum length of 4 characters. +The list of valid codes is an external code list published separately. + + + + + + + + + + External Service Level 1Code + +Specifies the external service level code in the format of character string with a maximum length of 4 characters. +The list of valid codes is an external code list published separately. + + + + + + + + + + + + Payment must be executed following the Single Euro Payments Area scheme. + SingleEuroPaymentsArea + + + + + + + + + Financial Institution Identification 7 + Set of elements used to identify a financial institution. + + + + + BIC + Code allocated to a financial institution by the ISO 9362 Registration Authority as described in ISO 9362 "Banking - Banking telecommunication messages - Business identifier code (BIC)". + + + + + Other + Unique identification of an agent, as assigned by an institution, using an identification scheme. + + + + + + + + + + + + AT-12 BIC of the Creditor bank. + + + + + + + + + + + + + + + + + + + AT-13 BIC of the Debtor Bank. + + + + + + + + + + + + + + Generic Account Identification 1 + Information related to a generic account identification. + + + + + Identification + Identification assigned by an institution. + + + + + + + Generic Financial Identification 1 + Information related to an identification, eg, party identification or account identification. + + + + + Identification + Unique and unambiguous identification of a person. + + + + + + + + + + + + Only ‘NOTPROVIDED’ is allowed. + + + + + + + + + Generic Organisation Identification 1 + Information related to an identification, eg, party identification or account identification. + + + + + Identification + Identification assigned by an institution. + + + + + Scheme Name + Name of the identification scheme. + + + + + Issuer + Entity that assigns the identification. + + + + + + + Generic Person Identification 1 + Information related to an identification, eg, party identification or account identification. + + + + + Identification + Unique and unambiguous identification of a person. + + + + + Scheme Name + Name of the identification scheme. + + + + + Issuer + Entity that assigns the identification. + + + + + + + + + + + + + + + + + Group Header 39 + Set of characteristics shared by all individual transactions included in the message. + + + + + Message Identification + +Point to point reference, assigned by the instructing party and sent to the next party in the chain, to unambiguously identify the message. + +Usage: The instructing party has to make sure that MessageIdentification is unique per instructed party for a pre-agreed period. + + + + + + Creation Date Time + Date and time at which a (group of) payment instruction(s) was created by the instructing party. + + + + + Number Of Transactions + Number of individual transactions contained in the message. + + + + + Control Sum + Total of all individual amounts included in the message, irrespective of currencies. + + + + + Initiating Party + +Party that initiates the payment. + +Usage: This can either be the creditor or a party that initiates the direct debit on behalf of the creditor. + + + + + + + + + + + + + + + + + + + + + + + The validation of this data element depends on pre-agreed customer-to-bank conditions. + + + + + + Mandatory + The validation of this data element depends on pre-agreed customer-to-bank conditions. + The fractional part has a maximum of two digits. + + + + + + + + + + + + + + IBAN2007Identifier + An identifier used internationally by financial institutions to uniquely identify the account of a customer at a financial institution, as described in the latest edition of the international standard ISO 13616:2007 - "Banking and related financial services - International Bank Account Number (IBAN)". + + + + + + + + ISODate + A particular point in the progression of time in a calendar year expressed in the YYYY-MM-DD format. This representation is defined in "XML Schema Part 2: Datatypes Second Edition - W3C Recommendation 28 October 2004" which is aligned with ISO 8601. + + + + + + ISODate Time + +A particular point in the progression of time defined by a mandatory date and a mandatory time component, expressed in either UTC time format (YYYY-MM-DDThh:mm:ss.sssZ), local time with UTC offset format (YYYY-MM-DDThh:mm:ss.sss+/-hh:mm), or local time format (YYYY-MM-DDThh:mm:ss.sss). These representations are defined in "XML Schema Part 2: Datatypes Second Edition - W3C Recommendation 28 October 2004" which is aligned with ISO 8601. +Note on the time format: +1) beginning / end of calendar day +00:00:00 = the beginning of a calendar day +24:00:00 = the end of a calendar day +2) fractions of second in time format +Decimal fractions of seconds may be included. In this case, the involved parties shall agree on the maximum number of digits that are allowed. + + + + + + + Local Instrument 2Choice + Set of elements that further identifies the type of local instruments being requested by the initiating party. + + + + + + Code + Specifies the local instrument, as published in an external local instrument code list. + + + + + + + + + + + + + + AT-20 The identification code of the B2B Scheme. + Only ‘B2B’ is allowed. ‘B2B’ is used to indicate a B2B direct debit. + The mixing of different Local Instrument values is not allowed in the same message. + + + + + + + + + + Mandate Related Information 6 + Set of elements used to provide further details related to a direct debit mandate signed between the creditor and the debtor. + + + + + Mandate Identification + Unique identification, as assigned by the creditor, to unambiguously identify the mandate. + + + + + Date Of Signature + Date on which the direct debit mandate has been signed by the debtor. + + + + + Amendment Indicator + Indicator notifying whether the underlying mandate is amended or not. + + + + + Amendment Information Details + List of mandate elements that have been modified. + + + + + Electronic Signature + Additional security provisions, such as a digital signature, as provided by the debtor. + + + + + + + + + + + + Mandatory + AT-01 Unique Mandate Reference. + + + + + + Mandatory + AT-25 Date of Signing of the Mandate. + + + + + + + + + + + AT-24 Reason for Amendment of the Mandate. + Mandatory if ‘Amendment Indicator’ is ‘true’. + The reason from the Rulebook is indicated by using the following message sub-elements. + + + + + + AT-16 Placeholder for the Electronic Signature Data, if applicable. + AT-17 Type of Mandate (paper, e-Mandate). + AT-60 Reference of the validation made by the Debtor Bank (if present in DS-03). + If the direct debit is based on an EPC electronic mandate, this data element must contain AT-60 which is the reference to the Mandate Acceptance Report made by the Debtor Bank. + This data element is not to be used if the mandate is a paper mandate. + + + + + + + + + Max 1025Text + Specifies a character string with a maximum length of 1025 characters. + + + + + + + + + Max 140Text + Specifies a character string with a maximum length of 140 characters. + + + + + + + + + + + + + + + Max 15Numeric Text + Specifies a numeric string with a maximum length of 15 digits. + + + + + + + + Max 34Text + Specifies a character string with a maximum length of 34 characters. + + + + + + + + + Max 35Text + Specifies a character string with a maximum length of 35 characters. + + + + + + + + + Max 70Text + Specifies a character string with a maximum length of 70characters. + + + + + + + + + Organisation Identification 4 + Unique and unambiguous way to identify an organisation. + + + + + BICOr BEI + Code allocated to a financial institution or non financial institution by the ISO 9362 Registration Authority as described in ISO 9362 "Banking - Banking telecommunication messages - Business identifier code (BIC)". + + + + + Other + Unique identification of an organisation, as assigned by an institution, using an identification scheme. + + + + + + + + + + + + + + + + + Organisation Identification Scheme Name 1Choice + Sets of elements to identify a name of the organisation identification scheme. + + + + + + Code + Name of the identification scheme, in a coded form as published in an external list. + + + + + Proprietary + Name of the identification scheme, in a free text form. + + + + + + + + Party 6Choice + Nature or use of the account. + + + + + + Organisation Identification + Unique and unambiguous way to identify an organisation. + + + + + Private Identification + Unique and unambiguous identification of a person, eg, passport. + + + + + + + + + + + + + + Either ‘BIC or BEI’ or one occurrence of ‘Other’ is allowed. + + + + + + Either ‘Date and Place of Birth’ or one occurrence of ‘Other’ is allowed. + + + + + + + + + + + + + + + + Private Identification is used to identify either an organisation or a private person. + + + + + + + + + + Party Identification 32 + Set of elements used to identify a person or an organisation. + + + + + Name + Name by which a party is known and which is usually used to identify that party. + + + + + Postal Address + Information that locates and identifies a specific address, as defined by postal services. + + + + + Identification + Unique and unambiguous identification of a party. + + + + + + + + + + + + ‘Name’ is limited to 70 characters in length. + + + + + + + + + + + + + + + + + + + Mandatory + AT-03 Name of the Creditor. + ‘Name’ is limited to 70 characters in length. + + + + + + AT-05 Address of the Creditor. + + + + + + + + + + + + + + AT-38 Name of the Creditor Reference Party. + ‘Name’ is limited to 70 characters in length. + + + + + + AT-39 Identification code of the Creditor Reference Party. + + + + + + + + + + + + + + Mandatory + AT-02 Identifier of the Creditor. + + + + + + + + + + + + + + Original AT-03 Name of the Creditor. + If present the new’ Name’ must be specified under ‘Creditor’. + ‘Name’ is limited to 70 characters in length. + + + + + + AT-18 Identifier of the original Creditor who issued the Mandate. + + + + + + + + + + + + + + Mandatory + AT-14 Name of the Debtor. + ‘Name’ is limited to 70 characters in length. + + + + + + AT-09 Address of the Debtor (only mandatory when the Creditor Bank or the Debtor Bank is located a non-EEA SEPA country or territory). + + + + + + AT-27 Debtor identification code. + + + + + + + + + + + + + + AT-15 Name of the Debtor Reference Party. + ‘Name’ is limited to 70 characters in length. + Mandatory, if provided by the Debtor in the mandate. + + + + + + AT-37 Identification code of the Debtor Reference Party. + + + + + + + + + Payment Identification 1 + Set of elements used to provide further means of referencing a payment transaction. + + + + + Instruction Identification + +Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. + +Usage: the instruction identification is a point to point reference that can be used between the instructing party and the instructed party to refer to the individual instruction. It can be included in several messages related to the instruction. + + + + + + End To End Identification + +Unique identification assigned by the initiating party to unumbiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. + +Usage: The end-to-end identification can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction. + + + + + + + + + + + + + + + + + + AT-10 Creditor’s reference of the direct debit Collection. + + + + + + + + + Payment Instruction Information 4 + Set of characteristics that apply to the credit side of the payment transactions included in the direct debit initiation. + + + + + Payment Information Identification + Unique identification, as assigned by a sending party, to unambiguously identify the payment information group within the message. + + + + + Payment Method + Specifies the means of payment that will be used to move the amount of money. + + + + + Batch Booking + +Identifies whether a single entry per individual transaction or a batch entry for the sum of the amounts of all transactions within the group of a message is requested. +Usage: Batch booking is used to request and not order a possible batch booking. + + + + + + Number Of Transactions + Number of individual transactions contained in the payment information group. + + + + + Control Sum + Total of all individual amounts included in the group, irrespective of currencies. + + + + + Payment Type Information + Set of elements used to further specify the type of transaction. + + + + + Requested Collection Date + Date and time at which the creditor requests that the amount of money is to be collected from the debtor. + + + + + Creditor + Party to which an amount of money is due. + + + + + Creditor Account + Unambiguous identification of the account of the creditor to which a credit entry will be posted as a result of the payment transaction. + + + + + Creditor Agent + Financial institution servicing an account for the creditor. + + + + + Ultimate Creditor + Ultimate party to which an amount of money is due. + + + + + Charge Bearer + Specifies which party/parties will bear the charges associated with the processing of the payment transaction. + + + + + Creditor Scheme Identification + Credit party that signs the mandate. + + + + + Direct Debit Transaction Information + Set of elements used to provide information on the individual transaction(s) included in the message. + + + + + + + + + + + + + + + + + + + + + + If present and contains ‘true’, batch booking is requested. If present and contains ‘false’, booking per transaction is requested. + If element is not present, pre-agreed customer-to-bank conditions apply. + + + + + + Mandatory + The validation of this data element depends on pre-agreed customer-to-bank conditions. + + + + + + Mandatory + The validation of this data element depends on pre-agreed customer-to-bank conditions. + The fractional part has a maximum of two digits. + + + + + + ‘Payment Type Information’ must be present either here or under ‘Direct Debit Transaction Information’. + + + + + + AT-11 Due Date of the Collection. + + + + + + + + + + + AT-04 The account number (IBAN) of the Creditor. + + + + + + + + + + + This data element may be present either at 'Payment Information' or at 'Direct Debit Transaction Information' level. + + + + + + Only ‘SLEV’ is allowed. + It is recommended that this element be specified at ‘Payment Information’ level. + + + + + + It is recommended that all transactions within the same ‘Payment Information’ block have the same ‘Creditor Scheme Identification’. + This data element must be present at either ‘Payment Information’ or ‘Direct Debit Transaction’ level. + + + + + + + + + + + + + + Payment Method 2Code + Specifies the transfer method that will be used to transfer the cash. + + + + + DirectDebit + Collection of an amount of money from the debtor's bank account by the creditor. The amount of money and dates of collections may vary. + + + + + + + Payment Type Information 20 + Set of elements used to provide further details of the type of payment. + + + + + Service Level + Agreement under which or rules under which the transaction should be processed. + + + + + Local Instrument + +User community specific instrument. + +Usage: This element is used to specify a local instrument, local clearing option and/or further qualify the service or service level. + + + + + + Sequence Type + Identifies the direct debit sequence, such as first, recurrent, final or one-off. + + + + + Category Purpose + +Specifies the high level purpose of the instruction based on a set of pre-defined categories. +Usage: This is used by the initiating party to provide information concerning the processing of the payment. It is likely to trigger special processing by any of the agents involved in the payment chain. + + + + + + + + + + + + + Mandatory + + + + + + Mandatory + + + + + + Mandatory + AT-21 Transaction / Sequence Type. + If ‘Amendment Indicator’ is ‘true’, and ‘Original Debtor Account’ is set to ‘SMNDA’ (Same Mandate with a New Debtor Account), this message element indicates either ‘FRST’ (First), ‘RCUR’ (Recurring), ‘FNAL’ (Final) or ‘OOFF’ (One-off) (all four codes allowed, no restrictions). + + + + + + AT-59 Category purpose of the Collection. + Depending on the agreement between the Creditor and the Creditor Bank, ‘Category Purpose’ may be forwarded to the Debtor Bank. + + + + + + + + + + + + + + + + + + + + + Person Identification 5 + Unique and unambiguous way to identify a person. + + + + + Date And Place Of Birth + Date and place of birth of a person. + + + + + Other + Unique identification of a person, as assigned by an institution, using an identification scheme. + + + + + + + + + + + + + + + + + + + + + + Only one occurrence of ‘Other’ is allowed, and no other sub-elements are allowed. + 'Identification' must be used with an identifier described in General Message Element Specifications, Chapter 1.5.2. + ‘Proprietary’ under ‘Scheme Name’ must specify ‘SEPA’. + + + + + + + + + Person Identification Scheme Name 1Choice + Sets of elements to identify a name of the identification scheme. + + + + + + Code + Name of the identification scheme, in a coded form as published in an external list. + + + + + Proprietary + Name of the identification scheme, in a free text form. + + + + + + + + + + + + + + + + + + + Postal Address 6 + Information that locates and identifies a specific address, as defined by postal services. + + + + + Country + Nation with its own government. + + + + + Address Line + Information that locates and identifies a specific address, as defined by postal services, presented in free format text. + + + + + + + + + + + + + + + + + Only two occurrences are allowed. + + + + + + + + + Purpose 2Choice + +Specifies the underlying reason for the payment transaction. +Usage: Purpose is used by the end-customers, that is initiating party, (ultimate) debtor, (ultimate) creditor to provide information concerning the nature of the payment. Purpose is a content element, which is not used for processing by any of the agents involved in the payment chain. + + + + + + + Code + Underlying reason for the payment transaction, as published in an external purpose code list. + + + + + + + + + + + + + + + + + + + + + + + Remittance Information 5 + Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system. + + + + + Unstructured + Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form. + + + + + Structured + Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in a structured form. + + + + + + + + + + + + ‘Unstructured’ may carry structured remittance information, as agreed between the Creditor and the Debtor. + Only one occurrence of ‘Unstructured’ is allowed. + + + + + + ‘Structured’ can be used, provided the tags and the data within the ‘Structured’ element do not exceed 140 characters in length. + Only one occurrence of ‘Structured’ is allowed. + + + + + + + + + Sequence Type 1Code + Specifies the type of the current transaction that belongs to a sequence of transactions. Specific attributes are required for the first, the recurring and the last instructions of a series, as well as the specification of a unique transaction (one-off direct debit transaction). + + + + + Final + Final collection of a series of direct debit instructions. + + + + + First + First collection of a series of direct debit instructions. + + + + + OneOff + Direct debit instruction where the debtor's authorisation is used to initiate one single direct debit transaction. + + + + + Recurring + Direct debit instruction where the debtor's authorisation is used for regular direct debit transactions initiated by the creditor. + + + + + + + Service Level 8Choice + Specifies the service level of the transaction. + + + + + + Code + Specifies a pre-agreed service or level of service between the parties, as published in an external service level code list. + + + + + + + + + + + + + + AT-20 The identification code of the B2B Scheme. + Only ‘SEPA’ is allowed. + + + + + + + + + + Structured Remittance Information 7 + Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in a structured form. + + + + + Creditor Reference Information + Reference information provided by the creditor to allow the identification of the underlying documents. + + + + + + + + + + + + When present, the Creditor Bank is not obliged to validate the reference information. + When used, both ‘Type’ and ‘Reference’ must be present. + + + + + + + + + True False Indicator + A flag indicating a True or False value. + + + + diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/schemas/pain.008.001.02.xsd b/dev_odex30_accounting/odex30_account_sepa_direct_debit/schemas/pain.008.001.02.xsd new file mode 100644 index 0000000..c89b721 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/schemas/pain.008.001.02.xsd @@ -0,0 +1,2250 @@ + + + + + + Account Identification 4Choice + Specifies the unique identification of an account as assigned by the account servicer. + + + + + + IBAN + International Bank Account Number (IBAN) - identifier used internationally by financial institutions to uniquely identify the account of a customer. Further specifications of the format and content of the IBAN can be found in the standard ISO 13616 "Banking and related financial services - International Bank Account Number (IBAN)" version 1997-10-01, or later revisions. + + + + + + + + Active Or Historic Currency And Amount + A number of monetary units specified in an active or a historic currency where the unit of currency is explicit and compliant with ISO 4217. + + + + + + Currency + A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds". + + + + + + + + + + + + + + + + + + Active Or Historic Currency And Amount _Simple Type + A number of monetary units specified in an active or a historic currency where the unit of currency is explicit and compliant with ISO 4217. + + + + + + + + + + Active Or Historic Currency Code + A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds". + + + + + + + + + + + + + Amendment Information Details 6 + Set of elements used to provide the list of direct debit mandate elements that have been modified when the amendment indicator has been set. + + + + + Original Mandate Identification + Unique identification, as assigned by the creditor, to unambiguously identify the original mandate. + + + + + Original Creditor Scheme Identification + Original creditor scheme identification that has been modified. + + + + + Original Debtor Account + Original debtor account that has been modified. + + + + + Original Debtor Agent + Original debtor agent that has been modified. + + + + + + + + + + + + AT-19 Unique Mandate Reference as given by the Original Creditor who issued the Mandate. + Mandatory if changes occur in ‘Mandate Identification’, otherwise not to be used. + + + + + + Mandatory if changes occur in ‘Creditor Scheme Identification’ and or ‘Name’, otherwise not to be used. + + + + + + Only IBAN is allowed. + To be used only for changes of accounts within the same bank. + + + + + + To use ‘Identification’ under ‘Other’ under ‘Financial Institution Identification’ with code ‘SMNDA’ to indicate same mandate with new Debtor Agent. + To be used with the ‘FRST’ indicator in the ‘Sequence Type’. PRE-NOTICE: The current requirement to use the sequence type ‘FRST’ in a first of a recurrent series of Collections is no longer mandatory as of the effective date of November 2016 of the SEPA Core Direct Debit Rulebook version 9.0 (i.e. a first Collection can be used in the same way as a subsequent Collection with the sequence type ‘RCUR”). + + + + + + + + + Any BICIdentifier + Code allocated to a financial or non-financial institution by the ISO 9362 Registration Authority, as described in ISO 9362 "Banking - Banking telecommunication messages - Business identifier code (BIC)". + + + + + + + + Batch Booking Indicator + Identifies whether the sending party requests a single debit or credit entry per individual transaction or a batch entry for the sum of the amounts of all transactions. + + + + + + BICIdentifier + Code allocated to a financial institution by the ISO 9362 Registration Authority as described in ISO 9362 "Banking - Banking telecommunication messages - Business identifier code (BIC)". + + + + + + + + Branch And Financial Institution Identification 4 + Set of elements used to uniquely and unambiguously identify a financial institution or a branch of a financial institution. + + + + + Financial Institution Identification + Unique and unambiguous identification of a financial institution, as assigned under an internationally recognised or proprietary identification scheme. + + + + + + + + + + + + Either BIC or ‘Other/Identification’ must be used. + + + + + + + + + + + + + + + + + + + + + + + Either BIC or ‘Other/Identification’ must be used. + + + + + + + + + Cash Account 16 + Set of elements used to identify an account. + + + + + Identification + Unique and unambiguous identification for the account between the account owner and the account servicer. + + + + + Currency + +Identification of the currency in which the account is held. + +Usage: Currency should only be used in case one and the same account number covers several currencies +and the initiating party needs to identify which currency needs to be used for settlement on the account. + + + + + + + + + + + + + Only IBAN is allowed. + + + + + + + + + + + + + + + + + + + + + + + Category Purpose 1Choice + +Specifies the high level purpose of the instruction based on a set of pre-defined categories. +Usage: This is used by the initiating party to provide information concerning the processing of the payment. It is likely to trigger special processing by any of the agents involved in the payment chain. + + + + + + + Code + Category purpose, as published in an external category purpose code list. + + + + + Proprietary + Category purpose, in a proprietary form. + + + + + + + + Charge Bearer Type 1Code + Specifies which party(ies) will pay charges due for processing of the instruction. + + + + + FollowingServiceLevel + Charges are to be applied following the rules agreed in the service level and/or scheme. + + + + + + + Country Code + Code to identify a country, a dependency, or another area of particular geopolitical interest, on the basis of country names obtained from the United Nations (ISO 3166, Alpha-2 code). + + + + + + + + Creditor Reference Information 2 + Reference information provided by the creditor to allow the identification of the underlying documents. + + + + + Type + Specifies the type of creditor reference. + + + + + Reference + +Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. + +Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money. + +If the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification. + + + + + + + + + + + + + + + + + + If ‘Creditor’ Reference contains a check digit, the receiving bank is not required to validate this. + If the receiving bank validates the check digit and if this validation fails, the bank may continue its processing and send the transaction to the next party in the chain. + RF Creditor Reference may be used (ISO 11649). + + + + + + + + + Creditor Reference Type 1Choice + Specifies the type of document referred by the creditor. + + + + + + Code + Type of creditor reference, in a coded form. + + + + + + + + + + + + + + Only ‘SCOR’ is allowed. + + + + + + + + + + Creditor Reference Type 2 + Specifies the type of creditor reference. + + + + + Code Or Proprietary + Coded or proprietary format creditor reference type. + + + + + Issuer + Entity that assigns the credit reference type. + + + + + + + + + + + + + + + + + + + + + + + + + Customer Direct Debit Initiation V02 + The CustomerDirectDebitInitiation message is sent by the initiating party to the forwarding agent or creditor's agent. It is used to request single or bulk collection(s) of funds from one or various debtor's account(s) to a creditor. + + + + + Group Header + Set of characteristics shared by all individual transactions included in the message. + + + + + Payment Information + Set of characteristics that apply to the credit side of the payment transactions included in the direct debit transaction initiation. + + + + + + + + + + + + + + + + + + + + + + + + + Date And Place Of Birth + Date and place of birth of a person. + + + + + Birth Date + Date on which a person is born. + + + + + Province Of Birth + Province where a person was born. + + + + + City Of Birth + City where a person was born. + + + + + Country Of Birth + Country where a person was born. + + + + + + + Decimal Number + Number of objects represented as a decimal number, eg, 0.75 or 45.6. + + + + + + + + + + + + + + + Direct Debit Transaction 6 + Set of elements used to provide specific information on the direct debit transaction and the related mandate. + + + + + Mandate Related Information + Set of elements used to provide further details of the direct debit mandate signed between the creditor and the debtor. + + + + + Creditor Scheme Identification + Credit party that signs the mandate. + + + + + + + + + + + + Mandatory + + + + + + It is recommended that all transactions within the same ‘Payment Information’ block have the same ‘Creditor Scheme Identification’. + This data element must be present at either ‘Payment Information’ or ‘Direct Debit Transaction’ level. + + + + + + + + + Direct Debit Transaction Information 9 + Set of elements used to provide information specific to the individual direct debit transaction(s) included in the message. + + + + + Payment Identification + Set of elements used to reference a payment instruction. + + + + + Instructed Amount + Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party. + + + + + Charge Bearer + Specifies which party/parties will bear the charges associated with the processing of the payment transaction. + + + + + Direct Debit Transaction + Set of elements providing information specific to the direct debit mandate. + + + + + Ultimate Creditor + Ultimate party to which an amount of money is due. + + + + + Debtor Agent + Financial institution servicing an account for the debtor. + + + + + Debtor + Party that owes an amount of money to the (ultimate) creditor. + + + + + Debtor Account + Unambiguous identification of the account of the debtor to which a debit entry will be made as a result of the transaction. + + + + + Ultimate Debtor + Ultimate party that owes an amount of money to the (ultimate) creditor. + + + + + Purpose + +Underlying reason for the payment transaction. +Usage: Purpose is used by the end-customers, that is initiating party, (ultimate) debtor, (ultimate) creditor to provide information concerning the nature of the payment. Purpose is a content element, which is not used for processing by any of the agents involved in the payment chain. + + + + + + Remittance Information + Information supplied to enable the matching of an entry with the items that the transfer is intended to settle, such as commercial invoices in an accounts' receivable system. + + + + + + + + + + + + + + + + + AT-06 Amount of the Collection in Euro. + Only ‘EUR’ is allowed. + Amount must be 0.01 or more and 999999999.99 or less. + The fractional part has a maximum of two digits. + + + + + + Only ‘SLEV’ is allowed. + + + + + + Mandatory + + + + + + This data element may be present either at ‘Payment Information’ or at ‘Direct Debit Transaction Information’ level. + + + + + + + + + + + + + + + + AT-07 Account Number of the Debtor. + Only IBAN is allowed. + + + + + + Mandatory, if provided by the Debtor in the Mandate. + + + + + + AT-58 Purpose of the Collection. + + + + + + AT-22 Remittance information from the Creditor. + Either ‘Structured’ or ‘Unstructured’, may be present. + + + + + + + + + + + Customer Direct Debit Initiation V02 + + + + + + + Document Type 3Code + Specifies a type of financial or commercial document. + + + + + StructuredCommunicationReference + Document is a structured communication reference provided by the creditor to identify the referred transaction. + + + + + + + + + + + + + + + + + + + + External Category Purpose 1Code + Specifies the category purpose, as published in an external category purpose code list. + + + + + + + + + External Local Instrument 1Code + +Specifies the external local instrument code in the format of character string with a maximum length of 35 characters. +The list of valid codes is an external code list published separately. + + + + + + + + + + + + SEPA Direct Debit - 1 Day Settlement + +Optional shorter time cycle (D-1) for SEPA Core Direct Debit +Region: EMEA +ISO Country Code: SEPA +ISO Currency Code: EUR +Payment System: PEACH +cDD/CT/ Both/ Other: DD +Corp2Bk, Bk2Bk, or Both: + + + + + + SEPA Direct Debit - Core + +Transaction is related to SEPA direct debit -core. +Region: EMEA +ISO Country Code: SEPA +ISO Currency Code: EUR +Payment System: PEACH +cDD/CT/ Both/ Other: DD +Corp2Bk, Bk2Bk, or Both: Both + + + + + + + + + + External Organisation Identification 1Code + +Specifies the external organisation identification scheme name code in the format of character string with a maximum length of 4 characters. +The list of valid codes is an external code list published separately. + + + + + + + + + + External Person Identification 1Code + +Specifies the external person identification scheme name code in the format of character string with a maximum length of 4 characters. +The list of valid codes is an external code list published separately. + + + + + + + + + + External Purpose 1Code + +Specifies the external purpose code in the format of character string with a maximum length of 4 characters. +The list of valid codes is an external code list published separately. + + + + + + + + + + External Service Level 1Code + +Specifies the external service level code in the format of character string with a maximum length of 4 characters. +The list of valid codes is an external code list published separately. + + + + + + + + + + + + SingleEuroPaymentsArea + Payment must be executed following the Single Euro Payments Area scheme. + + + + + + + + + Financial Institution Identification 7 + Set of elements used to identify a financial institution. + + + + + BIC + Code allocated to a financial institution by the ISO 9362 Registration Authority as described in ISO 9362 "Banking - Banking telecommunication messages - Business identifier code (BIC)". + + + + + Other + Unique identification of an agent, as assigned by an institution, using an identification scheme. + + + + + + + + + + + + AT-12 BIC of the Creditor bank. + The BIC is optional for national transactions except if Member States use the waiver as per Article 16(6) of EU Regulation 260/2012. + The BIC is mandatory for EU/EEA cross-border transactions until 31 January 2016 and it will continue to be mandatory for non-EU/non-EEA cross-border SEPA transactions. + + + + + + + + + + + + + + + + + + + + + + + + + + + + AT-13 BIC of the Debtor Bank. + The BIC is optional for national transactions except if Member States use the waiver as per Article 16(6) of EU Regulation 260/2012. + The BIC is mandatory for EU/EEA cross-border transactions until 31 January 2016 and it will continue to be mandatory for non-EU/non-EEA cross-border SEPA transactions. + + + + + + + + + + + + + + Generic Financial Identification 1 + Information related to an identification, eg, party identification or account identification. + + + + + Identification + Unique and unambiguous identification of a person. + + + + + + + + + + + + Only ‘NOTPROVIDED’ is allowed. + + + + + + + + + Generic Organisation Identification 1 + Information related to an identification, eg, party identification or account identification. + + + + + Identification + Identification assigned by an institution. + + + + + Scheme Name + Name of the identification scheme. + + + + + Issuer + Entity that assigns the identification. + + + + + + + Generic Person Identification 1 + Information related to an identification, eg, party identification or account identification. + + + + + Identification + Unique and unambiguous identification of a person. + + + + + Scheme Name + Name of the identification scheme. + + + + + Issuer + Entity that assigns the identification. + + + + + + + + + + + + + + + + + Group Header 39 + Set of characteristics shared by all individual transactions included in the message. + + + + + Message Identification + +Point to point reference, assigned by the instructing party and sent to the next party in the chain, to unambiguously identify the message. + +Usage: The instructing party has to make sure that MessageIdentification is unique per instructed party for a pre-agreed period. + + + + + + Creation Date Time + Date and time at which a (group of) payment instruction(s) was created by the instructing party. + + + + + Number Of Transactions + Number of individual transactions contained in the message. + + + + + Control Sum + Total of all individual amounts included in the message, irrespective of currencies. + + + + + Initiating Party + +Party that initiates the payment. + +Usage: This can either be the creditor or a party that initiates the direct debit on behalf of the creditor. + + + + + + + + + + + + + + + + + + + + + + + + + + + + The fractional part has a maximum of two digits + + + + + + + + + + + + + + IBAN2007Identifier + An identifier used internationally by financial institutions to uniquely identify the account of a customer at a financial institution, as described in the latest edition of the international standard ISO 13616:2007 - "Banking and related financial services - International Bank Account Number (IBAN)". + + + + + + + + ISODate + A particular point in the progression of time in a calendar year expressed in the YYYY-MM-DD format. This representation is defined in "XML Schema Part 2: Datatypes Second Edition - W3C Recommendation 28 October 2004" which is aligned with ISO 8601. + + + + + + ISODate Time + +A particular point in the progression of time defined by a mandatory date and a mandatory time component, expressed in either UTC time format (YYYY-MM-DDThh:mm:ss.sssZ), local time with UTC offset format (YYYY-MM-DDThh:mm:ss.sss+/-hh:mm), or local time format (YYYY-MM-DDThh:mm:ss.sss). These representations are defined in "XML Schema Part 2: Datatypes Second Edition - W3C Recommendation 28 October 2004" which is aligned with ISO 8601. +Note on the time format: +1) beginning / end of calendar day +00:00:00 = the beginning of a calendar day +24:00:00 = the end of a calendar day +2) fractions of second in time format +Decimal fractions of seconds may be included. In this case, the involved parties shall agree on the maximum number of digits that are allowed. + + + + + + + Local Instrument 2Choice + Set of elements that further identifies the type of local instruments being requested by the initiating party. + + + + + + Code + Specifies the local instrument, as published in an external local instrument code list. + + + + + + + + + + + + + + AT-20 The identification code of the Scheme. + Only ‘CORE’ or ‘COR1’ is allowed. PRE-NOTICE: As of the effective date of November 2016 of the SEPA Core Direct Debit Rulebook version 9.0, all Collections presented for the first time, on a recurrent basis or as a one-off Collection can be presented up to D-1 Inter-Bank Business Day (D-1). The standard time cycle code is ‘CORE’. + The mixing of different Local Instrument values is not allowed in the same message. + + + + + + + + + + Mandate Related Information 6 + Set of elements used to provide further details related to a direct debit mandate signed between the creditor and the debtor. + + + + + Mandate Identification + Unique identification, as assigned by the creditor, to unambiguously identify the mandate. + + + + + Date Of Signature + Date on which the direct debit mandate has been signed by the debtor. + + + + + Amendment Indicator + Indicator notifying whether the underlying mandate is amended or not. + + + + + Amendment Information Details + List of mandate elements that have been modified. + + + + + Electronic Signature + Additional security provisions, such as a digital signature, as provided by the debtor. + + + + + + + + + + + + Mandatory + AT-01 Unique Mandate Reference. + + + + + + Mandatory + AT-25 Date of Signing of the Mandate. + + + + + + + + + + + AT-24 Reason for Amendment of the Mandate. + Mandatory if ‘Amendment Indicator’ is ‘true’. + The reason from the Rulebook is indicated by using the following message sub-elements. + + + + + + AT-16 Placeholder for the electronic signature data, if applicable. + AT-17 Type of Mandate (paper, e-Mandate). + AT-60 Reference of the validation made by the Debtor Bank (if present in DS-03). + If the direct debit is based on an EPC electronic mandate, this data element must contain AT-60 which is the reference to the Mandate Acceptance Report made by the Debtor Bank. + This data element is not to be used if the mandate is a paper mandate. + + + + + + + + + Max 1025Text + Specifies a character string with a maximum length of 1025 characters. + + + + + + + + + Max 140Text + Specifies a character string with a maximum length of 140 characters. + + + + + + + + + + + + + + + Max 15Numeric Text + Specifies a numeric string with a maximum length of 15 digits. + + + + + + + + Max 35Text + Specifies a character string with a maximum length of 35 characters. + + + + + + + + + Max 70Text + Specifies a character string with a maximum length of 70characters. + + + + + + + + + Organisation Identification 4 + Unique and unambiguous way to identify an organisation. + + + + + BICOr BEI + Code allocated to a financial institution or non financial institution by the ISO 9362 Registration Authority as described in ISO 9362 "Banking - Banking telecommunication messages - Business identifier code (BIC)". + + + + + Other + Unique identification of an organisation, as assigned by an institution, using an identification scheme. + + + + + + + + + + + + + + + + + Organisation Identification Scheme Name 1Choice + Sets of elements to identify a name of the organisation identification scheme. + + + + + + Code + Name of the identification scheme, in a coded form as published in an external list. + + + + + Proprietary + Name of the identification scheme, in a free text form. + + + + + + + + Party 6Choice + Nature or use of the account. + + + + + + Organisation Identification + Unique and unambiguous way to identify an organisation. + + + + + Private Identification + Unique and unambiguous identification of a person, eg, passport. + + + + + + + + + + + + + + Either ‘BIC or BEI’ or one occurrence of ‘Other’ is allowed. + + + + + + Either ‘Date and Place of Birth’ or one occurrence of ‘Other’ is allowed. + + + + + + + + + + + + + + + + Mandatory + Private Identification is used to identify either an organisation or a private person. + + + + + + + + + + + + + + + + Private Identification is used to identify either an organisation or a private person. + + + + + + + + + + Party Identification 32 + Set of elements used to identify a person or an organisation. + + + + + Name + Name by which a party is known and which is usually used to identify that party. + + + + + Postal Address + Information that locates and identifies a specific address, as defined by postal services. + + + + + Identification + Unique and unambiguous identification of a party. + + + + + + + + + + + + ‘Name’ is limited to 70 characters in length. + + + + + + + + + + + + + + + + + + + Mandatory + AT-03 Name of the Creditor. + ‘Name’ is limited to 70 characters in length. + + + + + + AT-05 Address of the Creditor. + + + + + + + + + + + + + + AT-38 Name of the Creditor Reference Party. + ‘Name’ is limited to 70 characters in length. + + + + + + AT-39 Identification code of the Creditor Reference Party. + + + + + + + + + + + + + + Mandatory + AT-02 Identifier of the Creditor. + + + + + + + + + + + + + + Original AT-03 Name of the Creditor. + If present the new’ Name’ must be specified under ‘Creditor’. + ‘Name’ is limited to 70 characters in length. + + + + + + AT-18 Identifier of the original Creditor who issued the Mandate. + + + + + + + + + + + + + + Mandatory + AT-02 Identifier of the Creditor. + + + + + + + + + + + + + + Mandatory + AT-14 Name of the Debtor. + ‘Name’ is limited to 70 characters in length. + In case of a mandate generated using data from a payment card at the point of sale which results in a direct debit to and from a payment account, and where the name of the Debtor is not available, the attribute “Name of the Debtor” must be filled in with “/CDGM” (note: Card Data Generated Mandate), followed by “/card number”, “/sequence number” and “/expiry date of the card” (note: this means that the information parts are delimited by “/”) or, if these data elements are not available, by any other data element(s) that would uniquely identify the Debtor to the Debtor Bank. + + + + + + AT-09 Address of the Debtor. + + + + + + AT-27 Debtor identification code. + + + + + + + + + + + + + + AT-15 Name of the Debtor Reference Party. + ‘Name’ is limited to 70 characters in length. + Mandatory if provided by the Debtor in the mandate. + + + + + + AT-37 Identification code of the Debtor Reference Party. + + + + + + + + + Payment Identification 1 + Set of elements used to provide further means of referencing a payment transaction. + + + + + Instruction Identification + +Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. + +Usage: the instruction identification is a point to point reference that can be used between the instructing party and the instructed party to refer to the individual instruction. It can be included in several messages related to the instruction. + + + + + + End To End Identification + +Unique identification assigned by the initiating party to unumbiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. + +Usage: The end-to-end identification can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction. + + + + + + + + + + + + + + + + + + AT-10 Creditor’s reference of the direct debit Collection. + + + + + + + + + Payment Instruction Information 4 + Set of characteristics that apply to the credit side of the payment transactions included in the direct debit initiation. + + + + + Payment Information Identification + Unique identification, as assigned by a sending party, to unambiguously identify the payment information group within the message. + + + + + Payment Method + Specifies the means of payment that will be used to move the amount of money. + + + + + Batch Booking + +Identifies whether a single entry per individual transaction or a batch entry for the sum of the amounts of all transactions within the group of a message is requested. +Usage: Batch booking is used to request and not order a possible batch booking. + + + + + + Number Of Transactions + Number of individual transactions contained in the payment information group. + + + + + Control Sum + Total of all individual amounts included in the group, irrespective of currencies. + + + + + Payment Type Information + Set of elements used to further specify the type of transaction. + + + + + Requested Collection Date + Date and time at which the creditor requests that the amount of money is to be collected from the debtor. + + + + + Creditor + Party to which an amount of money is due. + + + + + Creditor Account + Unambiguous identification of the account of the creditor to which a credit entry will be posted as a result of the payment transaction. + + + + + Creditor Agent + Financial institution servicing an account for the creditor. + + + + + Ultimate Creditor + Ultimate party to which an amount of money is due. + + + + + Charge Bearer + Specifies which party/parties will bear the charges associated with the processing of the payment transaction. + + + + + Creditor Scheme Identification + Credit party that signs the mandate. + + + + + Direct Debit Transaction Information + Set of elements used to provide information on the individual transaction(s) included in the message. + + + + + + + + + + + + + + + + + + + + + + If present and contains ‘true’, batch booking is requested. If present and contains ‘false’, booking per transaction is requested. + If element is not present, pre-agreed customer-to-bank conditions apply. + + + + + + + + + + + The fractional part has a maximum of two digits + + + + + + Mandatory + + + + + + AT-11 Due Date of the Collection. + + + + + + + + + + + AT-04 Account Number of the Creditor. + + + + + + + + + + + This data element may be present either at 'Payment Information' or at 'Direct Debit Transaction Information' level. + + + + + + Only ‘SLEV’ is allowed. + It is recommended that this element be specified at ‘Payment Information’ level. + + + + + + It is recommended that all transactions within the same ‘Payment Information’ block have the same ‘Creditor Scheme Identification’. + This data element must be present at either ‘Payment Information’ or ‘Direct Debit Transaction’ level. + + + + + + + + + + + + + + Payment Method 2Code + Specifies the transfer method that will be used to transfer the cash. + + + + + DirectDebit + Collection of an amount of money from the debtor's bank account by the creditor. The amount of money and dates of collections may vary. + + + + + + + Payment Type Information 20 + Set of elements used to provide further details of the type of payment. + + + + + Service Level + Agreement under which or rules under which the transaction should be processed. + + + + + Local Instrument + +User community specific instrument. + +Usage: This element is used to specify a local instrument, local clearing option and/or further qualify the service or service level. + + + + + + Sequence Type + Identifies the direct debit sequence, such as first, recurrent, final or one-off. + + + + + Category Purpose + +Specifies the high level purpose of the instruction based on a set of pre-defined categories. +Usage: This is used by the initiating party to provide information concerning the processing of the payment. It is likely to trigger special processing by any of the agents involved in the payment chain. + + + + + + + + + + + + + Mandatory + + + + + + Mandatory + + + + + + Mandatory + AT-21 Transaction / Sequence Type. + If ‘Amendment Indicator’ is ‘true’, and ‘Original Debtor Agent’ is set to ‘SMNDA’, this message element must indicate ‘FRST’. PRE-NOTICE: The current requirement to use the sequence type ‘FRST’ in a first of a recurrent series of Collections is no longer mandatory as of the effective date of November 2016 of the SEPA Core Direct Debit Rulebook version 9.0 (i.e. a first Collection can be used in the same way as a subsequent Collection with the sequence type ‘RCUR”). + + + + + + AT-59 Category purpose of the Collection. + Depending on the agreement between the Creditor and the Creditor Bank, ‘Category Purpose’ may be forwarded to the Debtor Bank. + + + + + + + + + Person Identification 5 + Unique and unambiguous way to identify a person. + + + + + Date And Place Of Birth + Date and place of birth of a person. + + + + + Other + Unique identification of a person, as assigned by an institution, using an identification scheme. + + + + + + + + + + + + + + + + + + + + + + Only one occurrence of ‘Other’ is allowed, and no other sub-elements are allowed. + 'Identification' must be used with an identifier described in General Message Element Specifications, Chapter 1.5.2. + ‘Proprietary’ under ‘Scheme Name’ must specify ‘SEPA’. + + + + + + + + + Person Identification Scheme Name 1Choice + Sets of elements to identify a name of the identification scheme. + + + + + + Code + Name of the identification scheme, in a coded form as published in an external list. + + + + + Proprietary + Name of the identification scheme, in a free text form. + + + + + + + + + + + + + + + + + + + Postal Address 6 + Information that locates and identifies a specific address, as defined by postal services. + + + + + Country + Nation with its own government. + + + + + Address Line + Information that locates and identifies a specific address, as defined by postal services, presented in free format text. + + + + + + + + + + + + + + + + + Only two occurrences are allowed. + + + + + + + + + Purpose 2Choice + +Specifies the underlying reason for the payment transaction. +Usage: Purpose is used by the end-customers, that is initiating party, (ultimate) debtor, (ultimate) creditor to provide information concerning the nature of the payment. Purpose is a content element, which is not used for processing by any of the agents involved in the payment chain. + + + + + + + Code + Underlying reason for the payment transaction, as published in an external purpose code list. + + + + + + + + + + + + + + + + + + + + + + + Remittance Information 5 + Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system. + + + + + Unstructured + Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form. + + + + + Structured + Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in a structured form. + + + + + + + + + + + + ‘Unstructured’ may carry structured remittance information, as agreed between the Creditor and the Debtor. + Only one occurrence of ‘Unstructured’ is allowed. + + + + + + ‘Structured’ can be used, provided the tags and the data within the ‘Structured’ element do not exceed 140 characters in length. + Only one occurrence of ‘Structured’ is allowed. + + + + + + + + + Sequence Type 1Code + Specifies the type of the current transaction that belongs to a sequence of transactions. Specific attributes are required for the first, the recurring and the last instructions of a series, as well as the specification of a unique transaction (one-off direct debit transaction). + + + + + Final + Final collection of a series of direct debit instructions. + + + + + First + First collection of a series of direct debit instructions. + + + + + OneOff + Direct debit instruction where the debtor's authorisation is used to initiate one single direct debit transaction. + + + + + Recurring + Direct debit instruction where the debtor's authorisation is used for regular direct debit transactions initiated by the creditor. + + + + + + + Service Level 8Choice + Specifies the service level of the transaction. + + + + + + Code + Specifies a pre-agreed service or level of service between the parties, as published in an external service level code list. + + + + + + + + + + + + + + AT-20 The identification code of the Scheme. + Only ‘SEPA’ is allowed. + + + + + + + + + + Structured Remittance Information 7 + Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in a structured form. + + + + + Creditor Reference Information + Reference information provided by the creditor to allow the identification of the underlying documents. + + + + + + + + + + + + When present, the Creditor Bank is not obliged to validate the reference information. + When used, both ‘Type’ and ‘Reference’ must be present. + + + + + + + + + True False Indicator + A flag indicating a True or False value. + + + + diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/schemas/pain.008.001.08.xsd b/dev_odex30_accounting/odex30_account_sepa_direct_debit/schemas/pain.008.001.08.xsd new file mode 100644 index 0000000..802e29d --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/schemas/pain.008.001.08.xsd @@ -0,0 +1,1106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/security/account_sepa_direct_debit_security.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/security/account_sepa_direct_debit_security.xml new file mode 100644 index 0000000..645d1b0 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/security/account_sepa_direct_debit_security.xml @@ -0,0 +1,18 @@ + + + + + + SDD Mandate multi-company + + [('company_id', 'in', company_ids + [False])] + + + + SDD Mandate portal-user creation + + [('partner_id', '=', user.partner_id.id), ('state', '=', 'draft')] + + + + diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/security/ir.model.access.csv b/dev_odex30_accounting/odex30_account_sepa_direct_debit/security/ir.model.access.csv new file mode 100644 index 0000000..3e1f435 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/security/ir.model.access.csv @@ -0,0 +1,5 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_sdd_mandate_portal,sdd.mandate.validate,model_sdd_mandate,base.group_portal,1,0,1,0 +access_sdd_mandate,sdd.mandate,model_sdd_mandate,account.group_account_invoice,1,0,0,0 +access_sdd_mandate_account_basic,sdd.mandate.account.basic,model_sdd_mandate,account.group_account_basic,1,1,1,1 +access_sdd_mandate_send_account_basic,sdd.mandate.send.account.basic,model_sdd_mandate_send,account.group_account_basic,1,1,1,1 diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/tests/__init__.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/tests/__init__.py new file mode 100644 index 0000000..0473436 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/tests/__init__.py @@ -0,0 +1,4 @@ + +from . import common +from . import test_sdd +from . import test_sdd_xml diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/tests/common.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/tests/common.py new file mode 100644 index 0000000..9bdab64 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/tests/common.py @@ -0,0 +1,113 @@ +from odoo import Command, fields +from odoo.addons.account.tests.common import AccountTestInvoicingCommon + + +class SDDTestCommon(AccountTestInvoicingCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env.ref('base.EUR').active = True + + cls.env.user.write({ + 'email': "ruben.rybnik@sorcerersfortress.com", + 'groups_id': [Command.link(cls.env.ref('account.group_validate_bank_account').id)] + }) + + cls.country_belgium, cls.country_china, cls.country_germany = cls.env['res.country'].search([('code', 'in', ['BE', 'CN', 'DE'])], limit=3, order='name ASC') + + cls.sdd_company = cls.env.company + cls.sdd_company.country_id = cls.country_belgium + cls.sdd_company.city = 'Company 1 City' + cls.sdd_company.sdd_creditor_identifier = 'BE30ZZZ300D000000042' + cls.sdd_company_bank_journal = cls.company_data['default_journal_bank'] + cls.sdd_company_bank_journal.bank_acc_number = 'CH9300762011623852957' + cls.bank_ing = cls.env['res.bank'].create({'name': 'ING', 'bic': 'BBRUBEBB'}) + cls.bank_bnp = cls.env['res.bank'].create({'name': 'BNP Paribas', 'bic': 'GEBABEBB'}) + cls.bank_no_bic = cls.env['res.bank'].create({'name': 'NO BIC BANK'}) + cls.sdd_company_bank_journal.bank_account_id.bank_id = cls.bank_ing + sdd_method_line = cls.sdd_company_bank_journal.inbound_payment_method_line_ids.filtered(lambda l: l.code == 'sdd') + sdd_method_line.payment_account_id = cls.inbound_payment_method_line.payment_account_id + + cls.partner_agrolait = cls.env['res.partner'].create({'name': 'Agrolait', 'city': 'Agrolait Town', 'country_id': cls.country_germany.id}) + cls.partner_bank_agrolait = cls.create_account('DE44500105175407324931', cls.partner_agrolait, cls.bank_ing) + cls.mandate_agrolait = cls.create_mandate(cls.partner_agrolait, cls.partner_bank_agrolait, False, cls.sdd_company) + cls.mandate_agrolait.action_validate_mandate() + + cls.partner_china_export = cls.env['res.partner'].create({'name': 'China Export', 'city': 'China Town', 'country_id': cls.country_china.id}) + cls.partner_bank_china_export = cls.create_account('SA0380000000608010167519', cls.partner_china_export, cls.bank_bnp) + cls.mandate_china_export = cls.create_mandate(cls.partner_china_export, cls.partner_bank_china_export, True, cls.sdd_company) + cls.mandate_china_export.action_validate_mandate() + + cls.partner_no_bic = cls.env['res.partner'].create({'name': 'NO BIC Co', 'city': 'NO BIC City', 'country_id': cls.country_belgium.id}) + cls.partner_bank_no_bic = cls.create_account('BE68844010370034', cls.partner_no_bic, cls.bank_no_bic) + cls.mandate_no_bic = cls.create_mandate(cls.partner_no_bic, cls.partner_bank_no_bic, True, cls.sdd_company) + cls.mandate_no_bic.action_validate_mandate() + + cls.invoice_agrolait = cls.create_invoice(cls.partner_agrolait) + cls.invoice_china_export = cls.create_invoice(cls.partner_china_export) + cls.invoice_no_bic = cls.create_invoice(cls.partner_no_bic) + + cls.pay_with_mandate(cls.invoice_agrolait) + cls.pay_with_mandate(cls.invoice_china_export) + cls.pay_with_mandate(cls.invoice_no_bic) + + @classmethod + def create_account(cls, number, partner, bank): + return cls.env['res.partner.bank'].create({ + 'acc_number': number, + 'partner_id': partner.id, + 'bank_id': bank.id + }) + + @classmethod + def create_mandate(cls, partner, partner_bank, one_off=False, company=None, scheme='CORE'): + company = company or cls.env.company + return cls.env['sdd.mandate'].create({ + 'partner_bank_id': partner_bank.id, + 'one_off': one_off, + 'start_date': fields.Date.today(), + 'partner_id': partner.id, + 'company_id': company.id, + 'sdd_scheme': scheme, + }) + + @classmethod + def create_invoice(cls, partner): + invoice = cls.env['account.move'].create({ + 'move_type': 'out_invoice', + 'partner_id': partner.id, + 'currency_id': cls.env.ref('base.EUR').id, + 'payment_reference': 'invoice to client', + 'invoice_line_ids': [Command.create({ + 'product_id': cls.env['product.product'].create({'name': 'A Test Product'}).id, + 'quantity': 1, + 'price_unit': 42, + 'name': 'something', + })], + }) + invoice.action_post() + return invoice + + @classmethod + def pay_with_mandate(cls, invoice): + journal = cls.company_data['default_journal_bank'] + sdd_method_line = journal.inbound_payment_method_line_ids.filtered(lambda l: l.code == 'sdd') + return cls.env['account.payment.register'].with_context(active_model='account.move', active_ids=invoice.ids).create({ + 'payment_date': invoice.invoice_date_due or invoice.invoice_date, + 'journal_id': journal.id, + 'payment_method_line_id': sdd_method_line.id, + })._create_payments() + + @classmethod + def reconcile_payments(cls, payments): + for payment in payments: + st_line = cls.env['account.bank.statement.line'].create({ + 'amount': payment.amount, + 'date': fields.Date.context_today(payment.sdd_mandate_id), + 'payment_ref': 'test', + 'journal_id': cls.company_data['default_journal_bank'].id, + }) + st_suspense_lines = st_line._seek_for_lines()[1] + liquidity_line = payment._seek_for_lines()[0] + st_suspense_lines.account_id = liquidity_line.account_id + (st_suspense_lines + liquidity_line).reconcile() diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/tests/test_sdd.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/tests/test_sdd.py new file mode 100644 index 0000000..558d581 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/tests/test_sdd.py @@ -0,0 +1,312 @@ + +import datetime + +from odoo import Command, fields +from odoo.exceptions import RedirectWarning, UserError, ValidationError +from odoo.tests import freeze_time, tagged + +from odoo.addons.odex30_account_sepa_direct_debit.tests.common import SDDTestCommon + + +@tagged('post_install', '-at_install') +class SDDTest(SDDTestCommon): + def test_sdd(self): + # The invoices should have payments and in payment state thanks to the mandate + payments_agrolait = self.invoice_agrolait.reconciled_payment_ids + self.assertEqual(self.invoice_agrolait.payment_state, self.env['account.move']._get_invoice_in_payment_state(), 'This invoice should have payments and in payment state thanks to the mandate') + self.assertEqual(payments_agrolait.sdd_mandate_id, self.mandate_agrolait) + self.assertEqual(self.mandate_agrolait.payment_ids, payments_agrolait, 'The mandate should be linked to the payment') + payments_china_export = self.invoice_china_export.reconciled_payment_ids + self.assertEqual(self.invoice_china_export.payment_state, self.env['account.move']._get_invoice_in_payment_state(), 'This invoice should have have payments and in payment state thanks to the mandate') + self.assertEqual(payments_china_export.sdd_mandate_id, self.mandate_china_export) + self.assertEqual(self.mandate_china_export.payment_ids, payments_china_export, 'The mandate should be linked to the payment') + payments_no_bic = self.invoice_no_bic.reconciled_payment_ids + self.assertEqual(self.invoice_no_bic.payment_state, self.env['account.move']._get_invoice_in_payment_state(), 'This invoice should have payments and in payment state thanks to the mandate') + self.assertEqual(payments_no_bic.sdd_mandate_id, self.mandate_no_bic) + self.assertEqual(self.mandate_no_bic.payment_ids, payments_no_bic, 'The mandate should be linked to the payment') + payments = (self.invoice_agrolait + self.invoice_china_export + self.invoice_no_bic).reconciled_payment_ids + self.reconcile_payments(payments) + self.env.invalidate_all() + self.assertEqual(self.mandate_agrolait.paid_invoice_ids, self.invoice_agrolait, 'The mandate should be linked to the paid invoice') + self.assertEqual(self.mandate_china_export.paid_invoice_ids, self.invoice_china_export, 'The mandate should be linked to the paid invoice') + self.assertEqual(self.mandate_no_bic.paid_invoice_ids, self.invoice_no_bic, 'The mandate should be linked to the paid invoice') + + self.assertEqual(self.mandate_agrolait.state, 'active', 'A recurrent mandate should stay confirmed after accepting a payment') + self.assertEqual(self.mandate_china_export.state, 'closed', 'A one-off mandate should be closed after accepting a payment') + self.assertEqual(self.mandate_no_bic.state, 'closed', 'A one-off mandate should be closed after accepting a payment') + + payment_agrolait = self.invoice_agrolait.reconciled_payment_ids + payment_agrolait.action_draft() + self.assertEqual(self.invoice_agrolait.payment_state, 'not_paid') + self.assertFalse(self.invoice_agrolait.sdd_mandate_id) + + def test_xml_pain_008_001_08_generation(self): + self.sdd_company_bank_journal.debit_sepa_pain_version = 'pain.008.001.08' + + for invoice in (self.invoice_agrolait, self.invoice_no_bic): + payment = invoice.reconciled_payment_ids + payment.generate_xml(self.sdd_company, fields.Date.today(), True) + + payment = self.invoice_china_export.reconciled_payment_ids + + self.partner_china_export.write({'city': False, 'country_id': self.country_china}) + with self.assertRaises(UserError): + payment.generate_xml(self.sdd_company, fields.Date.today(), True) + + self.partner_china_export.write({'city': 'China Town', 'country_id': self.country_china}) + payment.generate_xml(self.sdd_company, fields.Date.today(), True) + + @freeze_time('2019-01-01') + def test_expiry(self): + self.mandate_agrolait.action_revoke_mandate() # We will use a new one here + self.assertEqual(self.mandate_agrolait.state, 'revoked') + + mandate = self.create_mandate(self.partner_agrolait, self.partner_bank_agrolait, False, self.sdd_company, 'CORE') + mandate.start_date = '2020-01-01' + mandate.end_date = '2025-01-30' + self.assertEqual(mandate.state, 'draft') + mandate.action_validate_mandate() + mandate.cron_update_mandates_states() + self.assertEqual(mandate.state, 'active') # The mandate should stay active even if the start_date is in the future + + with freeze_time('2022-12-02'): + mandates_per_validity = mandate._update_and_partition_state_by_validity() + self.assertTrue(mandates_per_validity['expiring'], 'The mandate is expiring soon') + + new_invoice = self.create_invoice(self.partner_agrolait) + payment = self.pay_with_mandate(new_invoice) + payment.action_validate() + mandates_per_validity = mandate._update_and_partition_state_by_validity() + self.assertTrue(mandates_per_validity['valid'], 'The mandate should not be expiring soon anymore, as we have reset the period') + new_expiry_date = next(iter(mandate._get_expiry_date_per_mandate().values())).isoformat() + self.assertEqual(new_expiry_date, '2025-01-30', 'The new expiry date is the end date, as the last collection + 36 month is after that date') + + with freeze_time('2025-01-01'): # Entered the 30-days before end date warning + mandates_per_validity = mandate._update_and_partition_state_by_validity() + self.assertTrue(mandates_per_validity['expiring'], 'The mandate is expiring soon') + + with freeze_time('2025-01-31'): # Passed the end_date, mandate must be closed + mandates_per_validity = mandate._update_and_partition_state_by_validity() + self.assertTrue(mandates_per_validity['invalid'], 'The mandate is expired') + self.assertEqual(mandate.state, 'closed') + + def test_required_data(self): + stateless_partner = self.env['res.partner'].create({ + 'name': 'stateless partner', + }) + stateless_iban_account = self.env['res.partner.bank'].create({ + 'acc_number': 'NL61INGB6008851617', + 'partner_id': stateless_partner.id, + }) + stateless_mandate = self.env['sdd.mandate'].create({ + 'partner_id': stateless_partner.id, + 'partner_bank_id': stateless_iban_account.id, + }) + + bankless_partner = self.env['res.partner'].create({ + 'name': 'no bank partner', + 'country_id': self.env.ref('base.nl').id, + }) + not_iban_bank_account = self.env['res.partner.bank'].create({ + 'acc_number': '01', + 'partner_id': bankless_partner.id, + }) + bankless_mandate = self.env['sdd.mandate'].create({ + 'partner_id': bankless_partner.id, + }) + + # Check send and print action + with self.assertRaises(RedirectWarning, msg="The country of the partner should be set to go forward"): + stateless_mandate.action_send_and_print() + stateless_mandate.partner_id.country_id = self.env.ref('base.nl') + stateless_mandate.action_send_and_print() + bankless_mandate.action_send_and_print() # You can send a mandate request without a bank, the customer should fill the field + + # Check validation action + stateless_mandate.action_validate_mandate() + with self.assertRaises(UserError, msg="No partner bank should raise an error when going forward"): + bankless_mandate.action_validate_mandate() + + bankless_mandate.partner_bank_id = not_iban_bank_account + with self.assertRaises(UserError, msg="The bank account isn't an iban bank account"): + bankless_mandate.action_validate_mandate() + + bankless_mandate.partner_bank_id = self.env['res.partner.bank'].create({ + 'acc_number': 'NL43INGB9822994664', + 'partner_id': bankless_partner.id, + }) + bankless_mandate.action_validate_mandate() + + @freeze_time('2024-01-01') + def test_collection_date(self): + + partner = self.env['res.partner'].create({ + 'name': 'partner', + 'country_id': self.env.ref('base.nl').id, + }) + iban_account = self.env['res.partner.bank'].create({ + 'acc_number': 'NL61INGB6008851617', + 'partner_id': partner.id, + }) + + with self.assertRaises(UserError, msg="Cannot have a pre-notification period under 2 days"): + self.env['sdd.mandate'].create({ + 'partner_id': partner.id, + 'partner_bank_id': iban_account.id, + 'pre_notification_period': 1, + }) + mandate = self.env['sdd.mandate'].create({ + 'partner_id': partner.id, + 'partner_bank_id': iban_account.id, + 'pre_notification_period': 2, + }) + + mandate.pre_notification_period = 14 + mandate.action_validate_mandate() + + invoice = self.create_invoice(partner) + payment = self.pay_with_mandate(invoice) + unchanged_data = { + 'payment_ids': [Command.set(payment.ids)], + 'journal_id': payment.journal_id.id, + } + with self.assertRaises(ValidationError, msg="Collection date should not be in the 2 day period required for the bank to process"): + self.env['account.batch.payment'].create({ + **unchanged_data, + 'sdd_required_collection_date': fields.Date.context_today(mandate) + datetime.timedelta(days=1) + }) + + batch_payment = self.env['account.batch.payment'].create({ + **unchanged_data, + 'sdd_required_collection_date': fields.Date.context_today(mandate) + datetime.timedelta(days=2) + }) + + self.assertEqual( + batch_payment.sdd_first_time_payment_ids, + payment, + "The first-time payments should be set correctly.", + ) + self.assertEqual( + batch_payment.sdd_min_required_collection_date, + fields.Date.context_today(mandate) + datetime.timedelta(days=5), + "The minimum required collection date should be set at 5 days after today.", + ) + + batch_payment.validate_batch() + + + self.reconcile_payments(payment) + self.assertTrue(payment.is_matched) + + new_invoice = self.create_invoice(partner) + new_payment = self.pay_with_mandate(new_invoice) + unchanged_data['payment_ids'] = [Command.set(new_payment.ids)] + with self.assertRaises( + ValidationError, + msg="Collection date should not be in the 2 day period required for the bank to process if all the mandates are already used at least once" + ): + self.env['account.batch.payment'].create({ + **unchanged_data, + 'sdd_required_collection_date': fields.Date.context_today(mandate) + datetime.timedelta(days=1) + }) + + new_batch_payment = self.env['account.batch.payment'].create({ + **unchanged_data, + 'sdd_required_collection_date': fields.Date.context_today(mandate) + datetime.timedelta(days=2) + }) + + self.assertFalse(batch_payment.sdd_first_time_payment_ids, "The first-time payments should be empty.") + self.assertFalse( + batch_payment.sdd_min_required_collection_date, + "The minimum required collection date should not be set.", + ) + + new_batch_payment.validate_batch() + + def test_batch_register_payment_all_valids(self): + + mandate_china_export = self.create_mandate(self.partner_china_export, self.partner_bank_china_export, False, self.sdd_company) + mandate_china_export.action_validate_mandate() + + invoices = self.create_invoice(self.partner_agrolait) + self.create_invoice(self.partner_china_export) + journal = self.sdd_company_bank_journal + wizard = ( + self.env['account.payment.register'] + .with_context({'active_ids': invoices.line_ids.ids, 'active_model': 'account.move.line'}) + .create({ + 'journal_id': journal.id, + 'payment_method_line_id': journal.inbound_payment_method_line_ids.filtered(lambda l: l.code == 'sdd').id + }) + ) + wizard.action_create_payments() + + self.assertRecordValues(invoices.reconciled_payment_ids.sorted('partner_id'), [ + {'partner_id': self.partner_agrolait.id}, + {'partner_id': self.partner_china_export.id}, + ]) + + def test_batch_register_payment_mixed_valids_invalids(self): + + # China export doesn't have a valid mandate + invoices = self.create_invoice(self.partner_agrolait) + self.create_invoice(self.partner_china_export) + journal = self.sdd_company_bank_journal + wizard = ( + self.env['account.payment.register'] + .with_context({'active_ids': invoices.line_ids.ids, 'active_model': 'account.move.line'}) + .create({ + 'journal_id': journal.id, + 'payment_method_line_id': journal.inbound_payment_method_line_ids.filtered(lambda l: l.code == 'sdd').id + }) + ) + wizard.action_create_payments() + payments = invoices.reconciled_payment_ids + self.assertEqual(len(payments), 1, "Only one payment should be created.") + self.assertEqual(payments.partner_id, self.partner_agrolait, "The payment should be for the 'Agrolait' partner since it have a valid mandate.") + + def test_batch_register_payment_all_invalids(self): + + self.mandate_agrolait.action_revoke_mandate() + invoices = self.create_invoice(self.partner_agrolait) + self.create_invoice(self.partner_china_export) + journal = self.sdd_company_bank_journal + wizard = ( + self.env['account.payment.register'] + .with_context({'active_ids': invoices.line_ids.ids, 'active_model': 'account.move.line'}) + .create({ + 'journal_id': journal.id, + 'payment_method_line_id': journal.inbound_payment_method_line_ids.filtered(lambda l: l.code == 'sdd').id + }) + ) + with self.assertRaises(UserError, msg="As there is no payment that can be generated, we raise an error when trying to do so"): + wizard.action_create_payments() + + def test_batch_payment_group(self): + + mandate_china_export = self.create_mandate(self.partner_china_export, self.partner_bank_china_export, False, self.sdd_company) + mandate_china_export.action_validate_mandate() + + invoices = self.create_invoice(self.partner_agrolait) + self.create_invoice(self.partner_agrolait) + self.create_invoice(self.partner_china_export) + journal = self.sdd_company_bank_journal + wizard = self.env['account.payment.register'].with_context({'active_ids': invoices.line_ids.ids, 'active_model': 'account.move.line'}).create({ + 'journal_id': journal.id, + 'payment_method_line_id': journal.inbound_payment_method_line_ids.filtered(lambda l: l.code == 'sdd').id, + 'group_payment': True, + }) + res = wizard.action_create_payments() + payments = self.env['account.payment'].search(res.get('domain', [])) + self.assertEqual(len(payments), 2, "There should be two payments") + + def test_register_payment_other_journal(self): + bank_journal_copy = self.sdd_company_bank_journal.copy() + bank_journal_copy.bank_acc_number = 'CH9300762011623852958' + invoices = self.create_invoice(self.partner_agrolait) + wizard = ( + self.env['account.payment.register'] + .with_context({'active_ids': invoices.line_ids.ids, 'active_model': 'account.move.line'}) + .create({ + 'journal_id': bank_journal_copy.id, + 'payment_method_line_id': bank_journal_copy.inbound_payment_method_line_ids.filtered(lambda l: l.code == 'sdd').id + }) + ) + res = wizard.action_create_payments() + payments = self.env['account.payment'].search(res.get('domain', [])) + self.assertTrue(payments, 'A payment should have been generated') diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/tests/test_sdd_xml.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/tests/test_sdd_xml.py new file mode 100644 index 0000000..0e6b847 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/tests/test_sdd_xml.py @@ -0,0 +1,42 @@ +from lxml import etree + +from odoo import fields +from odoo.addons.odex30_account_sepa_direct_debit.tests.common import SDDTestCommon +from odoo.tests import tagged, test_xsd + + +@tagged('external_l10n', 'post_install', '-at_install', '-standard') +class SDDTestXML(SDDTestCommon): + @test_xsd(path='odex30_account_sepa_direct_debit/schemas/pain.008.001.02.xsd') + def test_xml_pain_008_001_02_generation(self): + self.sdd_company_bank_journal.debit_sepa_pain_version = 'pain.008.001.02' + + xml_files = [] + for invoice in (self.invoice_agrolait, self.invoice_china_export, self.invoice_no_bic): + payment = invoice.line_ids.mapped('matched_credit_ids.credit_move_id.payment_id') + xml_files.append(etree.fromstring(payment.generate_xml(self.sdd_company, fields.Date.today(), True))) + return xml_files + + @test_xsd(path='odex30_account_sepa_direct_debit/schemas/EPC131-08_2019_V1.0_pain.008.001.02.xsd') + def test_xml_pain_008_001_02_b2b_generation(self): + self.sdd_company_bank_journal.debit_sepa_pain_version = 'pain.008.001.02' + self.mandate_agrolait.sdd_scheme = 'B2B' + self.mandate_china_export.sdd_scheme = 'B2B' + self.mandate_no_bic.sdd_scheme = 'B2B' + + xml_files = [] + for invoice in (self.invoice_agrolait, self.invoice_china_export, self.invoice_no_bic): + payment = invoice.line_ids.mapped('matched_credit_ids.credit_move_id.payment_id') + xml_files.append(etree.fromstring(payment.generate_xml(self.sdd_company, fields.Date.today(), True))) + return xml_files + + @test_xsd(path='odex30_account_sepa_direct_debit/schemas/pain.008.001.08.xsd') + def test_xml_pain_008_001_08_generation(self): + self.sdd_company_bank_journal.debit_sepa_pain_version = 'pain.008.001.08' + + xml_files = [] + for invoice in (self.invoice_agrolait, self.invoice_china_export, self.invoice_no_bic): + payment = invoice.line_ids.mapped('matched_credit_ids.credit_move_id.payment_id') + xml_files.append(etree.fromstring(payment.generate_xml(self.sdd_company, fields.Date.today(), True))) + + return xml_files diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/account_batch_payment_views.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/account_batch_payment_views.xml new file mode 100644 index 0000000..d9f1c97 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/account_batch_payment_views.xml @@ -0,0 +1,30 @@ + + + + + + sdd.account.batch.payment.form.inherit + account.batch.payment + + +
+ + +
+ + + + + + + + + +
+ +
+
diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/account_journal_dashboard_view.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/account_journal_dashboard_view.xml new file mode 100644 index 0000000..1b083f9 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/account_journal_dashboard_view.xml @@ -0,0 +1,43 @@ + + + + + Direct debit payments to collect + account.payment + list,form + + + [('payment_method_code','in', ('sdd', 'sepa_direct_debit')), + ('state', '=', 'in_process'), + ('is_sent', '=', False), + ] + + +

+ No direct debit payment to collect +

+
+
+ + + sdd.account.journal.dashboard.kanban + account.journal + + + + + + + +
+
diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/account_journal_views.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/account_journal_views.xml new file mode 100644 index 0000000..832984c --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/account_journal_views.xml @@ -0,0 +1,19 @@ + + + + + account.journal.form + account.journal + + + + + + + + + + + + + diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/account_move_view.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/account_move_view.xml new file mode 100644 index 0000000..5340fb7 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/account_move_view.xml @@ -0,0 +1,27 @@ + + + + + sdd.account.invoice.select + account.move + + + + + + + + + + sdd.account.move.line.payment.search + account.move.line + + + + + + + + + + diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/account_payment_view.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/account_payment_view.xml new file mode 100644 index 0000000..f5d13e7 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/account_payment_view.xml @@ -0,0 +1,85 @@ + + + + + sdd.account.payment.mandate.list + account.payment + + primary + + + + + + + + + sdd.account.payment.form + account.payment + + + + + + +
Good news! A valid SEPA Mandate is available.
+ +
SEPA Scheme operates in Euro. +
+
+
+
+ + + sdd.account.account.payment.search + account.payment + + + + + + + + + + + + sdd.account.payment.list + account.payment + + + + + + + + + + + + + sdd.account.payment.search + account.payment + + + + + + + + + +
+
diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/report_invoice.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/report_invoice.xml new file mode 100644 index 0000000..047d51c --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/report_invoice.xml @@ -0,0 +1,21 @@ + + + + + + diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/res_config_settings_views.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/res_config_settings_views.xml new file mode 100644 index 0000000..856b2e8 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/res_config_settings_views.xml @@ -0,0 +1,18 @@ + + + + res.config.settings.view.form.inherit.account.sepa.direct.debit + res.config.settings + + + +
+
+
+
+
+
+
+
diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/res_partner_view.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/res_partner_view.xml new file mode 100644 index 0000000..db26848 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/res_partner_view.xml @@ -0,0 +1,26 @@ + + + + + Direct Debit Mandates + sdd.mandate + list,form + {'default_partner_id':active_id, 'search_default_account_sdd_mandate_active_filter':1} + [('partner_id', '=', active_id)] + + + res.partner.view.account.sdd.form + res.partner + + + +
+ +
+
+
+
+
diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/sdd_mandate_views.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/sdd_mandate_views.xml new file mode 100644 index 0000000..f72fc61 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/views/sdd_mandate_views.xml @@ -0,0 +1,142 @@ + + + + + sdd.mandate.form + sdd.mandate + +
+
+ +
+ + + +
+ + + +
+
+ + +
+ + + + + + + + + + + + + + +
+
+ + + + + + + res.partner.bank.view.form.inherit.account.sepa.direct.debit + res.partner.bank + + + + context.get('sdd_mandate') == True + + + + + + sdd.mandate.list + sdd.mandate + + + + + + + + + + + + + + + + sdd.mandate.search + sdd.mandate + + + + + + + + + + + + + + Direct Debit Mandates + sdd.mandate + list,form + sdd-mandates + {'search_default_account_sdd_mandate_active_filter':1} + +

+ Create a new direct debit customer mandate +

+ A mandate represents the authorization you receive from a customer + to automatically collect money on her account. +

+ Once an invoice is made + in Odoo for a customer having a mandate active on the invoice date, + its validation will trigger its automatic payment, and you will + then only have to generate a SEPA Direct Debit (SDD) XML file containing this operation + and send it to your bank to effectively get paid. +

+
+
+ + + + diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/wizard/__init__.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/wizard/__init__.py new file mode 100644 index 0000000..c052791 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/wizard/__init__.py @@ -0,0 +1,2 @@ +from . import account_payment_register +from . import sdd_mandate_send diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/wizard/account_payment_register.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/wizard/account_payment_register.py new file mode 100644 index 0000000..45e9c79 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/wizard/account_payment_register.py @@ -0,0 +1,52 @@ +from odoo import Command, _, models, fields, api +from odoo.exceptions import UserError + + +class AccountPaymentRegister(models.TransientModel): + _inherit = 'account.payment.register' + + sdd_mandate_usable = fields.Boolean(string="Could a SDD mandate be used?", + compute='_compute_usable_mandate') + + no_sdd_mandate_partner_ids = fields.Many2many(comodel_name='res.partner', compute='_compute_usable_mandate') + + @api.depends('payment_date', 'partner_id', 'company_id', 'line_ids.partner_id') + def _compute_usable_mandate(self): + + for wizard in self: + partners_with_valid_mandates = wizard._get_partner_ids_with_valid_mandates() + wizard.no_sdd_mandate_partner_ids = wizard.line_ids.partner_id - self.env['res.partner'].browse(partners_with_valid_mandates) + wizard.sdd_mandate_usable = not wizard.no_sdd_mandate_partner_ids + + def _get_partner_ids_with_valid_mandates(self): + + self.ensure_one() + moves_to_pay = self.line_ids.move_id + valid_mandate_ids_per_partner_id = self.env['sdd.mandate']._read_group([ + ('state', '=', 'active'), + ('start_date', '<=', self.payment_date), + '|', ('end_date', '=', False), ('end_date', '>=', self.payment_date), + ('partner_id', 'in', moves_to_pay.partner_id.commercial_partner_id.ids), + *self.env['sdd.mandate']._check_company_domain(moves_to_pay.company_id), + ], + groupby=['partner_id'], + ) + return {partner.id for (partner,) in valid_mandate_ids_per_partner_id} + + def action_create_payments(self): + sdd_codes = set(self.env['account.payment.method']._get_sdd_payment_method_code()) + + for wizard in self.filtered(lambda wiz: wiz.payment_method_code in sdd_codes): + valid_partner_ids = wizard._get_partner_ids_with_valid_mandates() + if set(wizard.line_ids.partner_id.ids) != valid_partner_ids: + wizard.write({ + 'line_ids': [Command.set(wizard.line_ids.filtered(lambda line: line.partner_id.id in valid_partner_ids).ids)], + 'payment_method_line_id': wizard.payment_method_line_id.id, + 'group_payment': wizard.group_payment, + }) + if not wizard.line_ids: + raise UserError(_( + "You can't pay any of the selected invoices using the SEPA Direct Debit method, as no valid mandate is available" + )) + + return super().action_create_payments() diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/wizard/account_payment_register_view.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/wizard/account_payment_register_view.xml new file mode 100644 index 0000000..08dc47d --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/wizard/account_payment_register_view.xml @@ -0,0 +1,26 @@ + + + + sdd.account.payment.form.inherit.account.sepa.direct.debit + account.payment.register + + + +
Good news! A valid SEPA Mandate is available.
+ +
SEPA Scheme operates in Euro. +
+
+
+
+
+
diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/wizard/sdd_mandate_send.py b/dev_odex30_accounting/odex30_account_sepa_direct_debit/wizard/sdd_mandate_send.py new file mode 100644 index 0000000..9cb1a64 --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/wizard/sdd_mandate_send.py @@ -0,0 +1,139 @@ +from odoo import _, api, fields, models + + +class SDDMandateSend(models.TransientModel): + _inherit = 'mail.composer.mixin' + _name = 'sdd.mandate.send' + _description = "SDD Mandate Send" + + company_id = fields.Many2one(comodel_name='res.company', compute='_compute_company_id', store=True) + mandate_id = fields.Many2one(comodel_name='sdd.mandate', readonly=True) + partner_id = fields.Many2one(related='mandate_id.partner_id', readonly=True) + + checkbox_download = fields.Boolean( + string="Download", + default=False, + ) + + checkbox_send_mail = fields.Boolean( + string="Email", + default=True, + ) + warnings = fields.Json(compute='_compute_warnings') + template_id = fields.Many2one( + comodel_name='mail.template', + string="Email template", + domain="[('model', '=', 'sdd.mandate.send')]", + ) + author_id = fields.Many2one( + comodel_name='res.partner', + string="Author", + index=True, + ondelete='set null', + default=lambda self: self.env.user.partner_id, + ) + recipient_ids = fields.Many2many( + comodel_name='res.partner', + string="Recipients", + compute='_compute_recipient_ids', + readonly=False, + ) + + + @api.depends('mandate_id') + def _compute_recipient_ids(self): + for wizard in self: + wizard.recipient_ids = wizard.partner_id | wizard.mandate_id.message_partner_ids - wizard.author_id + + @api.depends('mandate_id') + def _compute_company_id(self): + for wizard in self: + wizard.company_id = wizard.mandate_id.company_id.id + + @api.depends('mandate_id', 'checkbox_send_mail') + def _compute_warnings(self): + for wizard in self: + warnings = {} + partners_without_mail = wizard.mandate_id.filtered(lambda x: not x.partner_id.email).partner_id + if wizard.checkbox_send_mail and partners_without_mail: + warnings['account_missing_email'] = { + 'message': _("Partner should have an email address."), + 'action_text': _("View Partner(s)"), + 'action': partners_without_mail._get_records_action(name=_("Check Partner(s) Email(s)")) + } + + wizard.warnings = warnings + + @api.depends('mandate_id', 'template_id') + def _compute_subject(self): + # OVERRIDES mail + for wizard in self.filtered('template_id'): + wizard.subject = wizard.template_id._render_field( + 'subject', + [wizard.id], + compute_lang=True, + options={'post_process': True}, + )[wizard.id] + + @api.depends('mandate_id', 'template_id') + def _compute_body(self): + # OVERRIDES mail + for wizard in self.filtered('template_id'): + wizard.body = wizard.template_id._render_field( + 'body_html', + [wizard.id], + compute_lang=True, + options={'post_process': True}, + )[wizard.id] + + + def _prepare_mandate_pdf(self): + self.ensure_one() + mandate = self.mandate_id + pdf_report = self.env.ref('odex30_account_sepa_direct_debit.sdd_mandate_form_report_main') + content, _report_type = self.env['ir.actions.report']._render_qweb_pdf( + pdf_report.report_name, + res_ids=mandate.ids, + ) + return { + 'name': f"{self.partner_id.name.replace(' ', '_')}_sdd_mandate_form_{mandate.name}.pdf", + 'raw': content, + 'mimetype': 'application/pdf', + 'res_model': 'sdd.mandate', + 'res_id': mandate.id, + 'res_field': 'mandate_pdf_file', + } + + def _send_mail(self, mandate_pdf): + self.ensure_one() + self.mandate_id.message_post( + author_id=(self.env.company.partner_id or self.author_id).id, + body=self.body, + message_type='comment', + email_layout_xmlid='mail.mail_notification_light', + partner_ids=self.recipient_ids.ids, + subject=self.subject, + attachment_ids=mandate_pdf.ids, + ) + + def action_send_and_print(self): + self.ensure_one() + mandate = self.mandate_id + mandate.is_sent = True + + pdf_data = self._prepare_mandate_pdf() + + attachment = self.env['ir.attachment'].create(pdf_data) + attachment.register_as_main_attachment(force=True) + + if self.checkbox_send_mail: + self._send_mail(attachment) + + if self.checkbox_download: + return { + 'type': 'ir.actions.act_url', + 'url': f"/web/content/{attachment.id}?download=true", + 'close': True, + } + + return {'type': 'ir.actions.act_window_close'} diff --git a/dev_odex30_accounting/odex30_account_sepa_direct_debit/wizard/sdd_mandate_send_views.xml b/dev_odex30_accounting/odex30_account_sepa_direct_debit/wizard/sdd_mandate_send_views.xml new file mode 100644 index 0000000..0fac93c --- /dev/null +++ b/dev_odex30_accounting/odex30_account_sepa_direct_debit/wizard/sdd_mandate_send_views.xml @@ -0,0 +1,52 @@ + + + + sdd.mandate.send.form + sdd.mandate.send + +
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
diff --git a/dev_odex30_accounting/odex30_accountant/__init__.py b/dev_odex30_accounting/odex30_accountant/__init__.py new file mode 100644 index 0000000..f276eec --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/__init__.py @@ -0,0 +1,64 @@ + +import logging + +from . import models + +_logger = logging.getLogger(__name__) + + +def _accounting_post_init(env): + country_code = env.company.country_id.code + if country_code: + module_list = [] + + if country_code in ('AU', 'CA', 'US'): + module_list.append('odex30_account_reports_cash_basis') + + module_ids = env['ir.module.module'].search([('name', 'in', module_list), ('state', '=', 'uninstalled')]) + if module_ids: + module_ids.sudo().button_install() + + +def uninstall_hook(env): + try: + group_user = env.ref("account.group_account_user") + group_user.write({ + 'name': "Show Full Accounting Features", + 'implied_ids': [(3, env.ref('account.group_account_invoice').id)], + 'category_id': env.ref("base.module_category_hidden").id, + }) + group_readonly = env.ref("account.group_account_readonly") + group_readonly.write({ + 'name': "Show Full Accounting Features - Readonly", + 'category_id': env.ref("base.module_category_hidden").id, + }) + except ValueError as e: + _logger.warning(e) + + try: + group_manager = env.ref("account.group_account_manager") + group_manager.write({'name': "Billing Manager", + 'implied_ids': [(4, env.ref("account.group_account_invoice").id), + (3, env.ref("account.group_account_readonly").id), + (3, env.ref("account.group_account_user").id)]}) + except ValueError as e: + _logger.warning(e) + + env.ref("account.group_account_user").write({'users': [(5, False, False)]}) + env.ref("account.group_account_readonly").write({'users': [(5, False, False)]}) + + + invoicing_menu = env.ref("account.menu_finance") + menus_to_move = [ + "account.menu_finance_receivables", + "account.menu_finance_payables", + "account.menu_finance_entries", + "account.menu_finance_reports", + "account.menu_finance_configuration", + "account.menu_board_journal_1", + ] + for menu_xmlids in menus_to_move: + try: + env.ref(menu_xmlids).parent_id = invoicing_menu + except ValueError as e: + _logger.warning(e) diff --git a/dev_odex30_accounting/odex30_accountant/__manifest__.py b/dev_odex30_accounting/odex30_accountant/__manifest__.py new file mode 100644 index 0000000..bb8dfa5 --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/__manifest__.py @@ -0,0 +1,37 @@ +{ + 'name': 'Accounting', + 'version': '1.1', + 'category': 'Accounting/Accounting', + 'sequence': 30, + 'summary': 'Manage financial and analytic accounting', + 'description': """ +Accounting Access Rights +======================== +It gives the Administrator user access to all accounting features such as journal items and the chart of accounts. + +It assigns manager and user access rights to the Administrator for the accounting application and only user rights to the Demo user. +""", + 'website': 'http://exp-sa.com', + 'author': 'Expert Co. Ltd.', + 'depends': ['odex30_account_accountant'], + 'data': [ + 'data/account_accountant_data.xml', + 'security/accounting_security.xml', + 'views/res_config_settings.xml', + 'views/partner_views.xml', + ], + 'demo': ['demo/account_accountant_demo.xml'], + 'installable': True, + 'application': True, + 'post_init_hook': '_accounting_post_init', + 'uninstall_hook': "uninstall_hook", + 'license': 'OEEL-1', + 'assets': { + 'web.assets_backend': [ + 'odex30_accountant/static/src/js/tours/accountant.js', + ], + 'web.assets_tests': [ + 'odex30_accountant/static/tests/tours/*', + ], + } +} diff --git a/dev_odex30_accounting/odex30_accountant/data/account_accountant_data.xml b/dev_odex30_accounting/odex30_accountant/data/account_accountant_data.xml new file mode 100644 index 0000000..efaae88 --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/data/account_accountant_data.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev_odex30_accounting/odex30_accountant/demo/account_accountant_demo.xml b/dev_odex30_accounting/odex30_accountant/demo/account_accountant_demo.xml new file mode 100644 index 0000000..b5e67c6 --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/demo/account_accountant_demo.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/dev_odex30_accounting/odex30_accountant/i18n/ar.po b/dev_odex30_accounting/odex30_accountant/i18n/ar.po new file mode 100644 index 0000000..5f05bf4 --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/i18n/ar.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * odex30_accountant +# +# Translators: +# Wil Odoo, 2024 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-12-19 09:51+0000\n" +"PO-Revision-Date: 2024-09-25 09:44+0000\n" +"Last-Translator: Wil Odoo, 2024\n" +"Language-Team: Arabic (https://app.transifex.com/odoo/teams/41243/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#. module: odex30_accountant +#: model:ir.ui.menu,name:odex30_accountant.menu_accounting +#: model_terms:ir.ui.view,arch_db:odex30_accountant.res_config_settings_view_form +#: model_terms:ir.ui.view,arch_db:odex30_accountant.res_partner_view_form +msgid "Accounting" +msgstr "المحاسبة " + +#. module: odex30_accountant +#: model:ir.model,name:odex30_accountant.model_account_move +msgid "Journal Entry" +msgstr "قيد اليومية" diff --git a/dev_odex30_accounting/odex30_accountant/models/__init__.py b/dev_odex30_accounting/odex30_accountant/models/__init__.py new file mode 100644 index 0000000..9c0a421 --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/models/__init__.py @@ -0,0 +1 @@ +from . import account_move diff --git a/dev_odex30_accounting/odex30_accountant/models/account_move.py b/dev_odex30_accounting/odex30_accountant/models/account_move.py new file mode 100644 index 0000000..d0c6f42 --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/models/account_move.py @@ -0,0 +1,8 @@ +from odoo import models + + +class AccountMove(models.Model): + _inherit = 'account.move' + + def _get_invoice_in_payment_state(self): + return 'in_payment' diff --git a/dev_odex30_accounting/odex30_accountant/security/accounting_security.xml b/dev_odex30_accounting/odex30_accountant/security/accounting_security.xml new file mode 100644 index 0000000..1fa283e --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/security/accounting_security.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + Accounting + Helps you handle your invoices and accounting actions. + + Invoicing: Invoices, payments and basic invoice reporting. + Invoicing & Banks: adds the accounting dashboard, bank management and follow-up reports. + Bookkeeper: access to all Accounting features, including reporting, asset management, analytic accounting, without configuration rights. + Administrator: full access including configuration rights and accounting data management. + Readonly: access to all the accounting data but in readonly mode, no actions allowed. + + + + + Read-only + + + + + Bookkeeper + + + + + + + + diff --git a/dev_odex30_accounting/odex30_accountant/static/description/icon.png b/dev_odex30_accounting/odex30_accountant/static/description/icon.png new file mode 100644 index 0000000..e64a0f2 Binary files /dev/null and b/dev_odex30_accounting/odex30_accountant/static/description/icon.png differ diff --git a/dev_odex30_accounting/odex30_accountant/static/description/icon.svg b/dev_odex30_accounting/odex30_accountant/static/description/icon.svg new file mode 100644 index 0000000..bf4af25 --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/static/description/icon.svg @@ -0,0 +1 @@ + diff --git a/dev_odex30_accounting/odex30_accountant/static/src/js/tours/accountant.js b/dev_odex30_accounting/odex30_accountant/static/src/js/tours/accountant.js new file mode 100644 index 0000000..cc316e8 --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/static/src/js/tours/accountant.js @@ -0,0 +1,12 @@ +/** @odoo-module **/ + +import { patch } from "@web/core/utils/patch"; +import { accountTourSteps } from "@account/js/tours/account"; +import { stepUtils } from "@web_tour/tour_service/tour_utils"; + + +patch(accountTourSteps, { + goToAccountMenu(description="Open Accounting Menu") { + return stepUtils.goToAppSteps('accountant.menu_accounting', description); + }, +}); diff --git a/dev_odex30_accounting/odex30_accountant/static/tests/tours/account_merge_wizard_tour.js b/dev_odex30_accounting/odex30_accountant/static/tests/tours/account_merge_wizard_tour.js new file mode 100644 index 0000000..0b338d8 --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/static/tests/tours/account_merge_wizard_tour.js @@ -0,0 +1,61 @@ +/** @odoo-module */ + +import { accountTourSteps } from "@account/js/tours/account"; +import { registry } from "@web/core/registry"; + +registry.category("web_tour.tours").add("account_merge_wizard_tour", { + url: "/odoo", + steps: () => [ + ...accountTourSteps.goToAccountMenu("Go to Accounting"), + { + content: "Go to Configuration", + trigger: 'span:contains("Configuration")', + run: "click", + }, + { + content: "Go to Chart of Accounts", + trigger: 'a:contains("Chart of Accounts")', + run: "click", + }, + { + trigger: '.o_breadcrumb .text-truncate:contains("Chart of Accounts")', + }, + { + content: "Select accounts", + trigger: "thead .o_list_record_selector", + run: "click", + }, + { + content: "Check that exactly 4 accounts are present and selected", + trigger: ".o_list_selection_box:contains(4):contains(selected)", + }, + { + content: "Open Actions menu", + trigger: ".o_cp_action_menus .dropdown-toggle", + run: "click", + }, + { + content: "Open Merge accounts wizard", + trigger: 'span:contains("Merge accounts")', + run: "click", + }, + { + content: "Group by name", + trigger: 'div[name="is_group_by_name"] input', + run: "click", + }, + { + content: "Wait for content to be updated", + trigger: 'td:contains("Current Assets (Current Assets)")', + }, + { + content: "Merge accounts", + trigger: 'button:not([disabled]) span:contains("Merge")', + run: "click", + }, + { + content: "Check that there are now exactly 2 accounts", + trigger: ".o_pager_limit:contains(2)", + }, + ], +}); diff --git a/dev_odex30_accounting/odex30_accountant/static/tests/tours/account_tours.js b/dev_odex30_accounting/odex30_accountant/static/tests/tours/account_tours.js new file mode 100644 index 0000000..aec8e4f --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/static/tests/tours/account_tours.js @@ -0,0 +1,10 @@ +/** @odoo-module **/ +import { patch } from "@web/core/utils/patch"; +import { accountTourSteps } from "@account/js/tours/account"; +import { stepUtils } from "@web_tour/tour_service/tour_utils"; + +patch(accountTourSteps, { + goToAccountMenu(description="Open Accounting Menu") { + return stepUtils.goToAppSteps('accountant.menu_accounting', description); + } +}); diff --git a/dev_odex30_accounting/odex30_accountant/tests/__init__.py b/dev_odex30_accounting/odex30_accountant/tests/__init__.py new file mode 100644 index 0000000..f49429e --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/tests/__init__.py @@ -0,0 +1 @@ +from . import test_tour diff --git a/dev_odex30_accounting/odex30_accountant/tests/test_tour.py b/dev_odex30_accounting/odex30_accountant/tests/test_tour.py new file mode 100644 index 0000000..5d116ad --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/tests/test_tour.py @@ -0,0 +1,47 @@ + +import odoo.tests + +from odoo import Command +from odoo.addons.account.tests.common import AccountTestInvoicingHttpCommon + + +@odoo.tests.tagged('post_install_l10n', 'post_install', '-at_install') +class TestAccountantTours(AccountTestInvoicingHttpCommon): + def test_account_merge_wizard_tour(self): + companies = self.env['res.company'].create([ + {'name': 'tour_company_1'}, + {'name': 'tour_company_2'}, + ]) + + self.env['account.account'].create([ + { + 'company_ids': [Command.set(companies[0].ids)], + 'code': "100001", + 'name': "Current Assets", + 'account_type': 'asset_current', + }, + { + 'company_ids': [Command.set(companies[0].ids)], + 'code': "100002", + 'name': "Non-Current Assets", + 'account_type': 'asset_non_current', + }, + { + 'company_ids': [Command.set(companies[1].ids)], + 'code': "200001", + 'name': "Current Assets", + 'account_type': 'asset_current', + }, + { + 'company_ids': [Command.set(companies[1].ids)], + 'code': "200002", + 'name': "Non-Current Assets", + 'account_type': 'asset_non_current', + }, + ]) + + self.env.ref('base.user_admin').write({ + 'company_id': companies[0].id, + 'company_ids': [Command.set(companies.ids)], + }) + self.start_tour("/odoo", 'account_merge_wizard_tour', login="admin", cookies={"cids": f"{companies[0].id}-{companies[1].id}"}) diff --git a/dev_odex30_accounting/odex30_accountant/views/partner_views.xml b/dev_odex30_accounting/odex30_accountant/views/partner_views.xml new file mode 100644 index 0000000..8058394 --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/views/partner_views.xml @@ -0,0 +1,16 @@ + + + + res.partner.form + res.partner + + + + Accounting + + + Accounting + + + + diff --git a/dev_odex30_accounting/odex30_accountant/views/res_config_settings.xml b/dev_odex30_accounting/odex30_accountant/views/res_config_settings.xml new file mode 100644 index 0000000..b386376 --- /dev/null +++ b/dev_odex30_accounting/odex30_accountant/views/res_config_settings.xml @@ -0,0 +1,15 @@ + + + + res.config.settings.view.form.inherit.accountant + res.config.settings + + + + Accounting + Accounting + /odex30_accountant/static/description/icon.png + + + + diff --git a/dev_odex30_accounting/odex30_sale_account_accountant/__init__.py b/dev_odex30_accounting/odex30_sale_account_accountant/__init__.py new file mode 100644 index 0000000..a9e3372 --- /dev/null +++ b/dev_odex30_accounting/odex30_sale_account_accountant/__init__.py @@ -0,0 +1,2 @@ + +from . import models diff --git a/dev_odex30_accounting/odex30_sale_account_accountant/__manifest__.py b/dev_odex30_accounting/odex30_sale_account_accountant/__manifest__.py new file mode 100644 index 0000000..8ad02d1 --- /dev/null +++ b/dev_odex30_accounting/odex30_sale_account_accountant/__manifest__.py @@ -0,0 +1,20 @@ + + +{ + 'name': "Sale Accounting", + 'version': "1.0", + 'category': "Sales/Sales", + 'summary': "Bridge between Sale and Accounting", + 'description': """ +Notify that a matching sale order exists in the reconciliation widget. + """, + 'depends': ['sale', 'odex30_account_accountant'], + 'installable': True, + 'auto_install': True, + 'license': 'OEEL-1', + 'assets': { + 'web.assets_backend': [ + 'odex30_sale_account_accountant/static/src/components/**/*', + ], + }, +} diff --git a/dev_odex30_accounting/odex30_sale_account_accountant/i18n/ar.po b/dev_odex30_accounting/odex30_sale_account_accountant/i18n/ar.po new file mode 100644 index 0000000..8394af8 --- /dev/null +++ b/dev_odex30_accounting/odex30_sale_account_accountant/i18n/ar.po @@ -0,0 +1,60 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * odex30_sale_account_accountant +# +# Translators: +# Wil Odoo, 2024 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-09-25 09:28+0000\n" +"PO-Revision-Date: 2024-09-25 09:44+0000\n" +"Last-Translator: Wil Odoo, 2024\n" +"Language-Team: Arabic (https://app.transifex.com/odoo/teams/41243/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#. module: odex30_sale_account_accountant +#: model:ir.model,name:odex30_sale_account_accountant.model_bank_rec_widget +msgid "Bank reconciliation widget for a single statement line" +msgstr "أداة التسوية البنكية لبند كشف حساب واحد " + +#. module: odex30_sale_account_accountant +#: model:ir.model.fields,field_description:odex30_sale_account_accountant.field_bank_rec_widget__matched_sale_order_ids +msgid "Matched Sale Order" +msgstr "أمر البيع المطابق " + +#. module: odex30_sale_account_accountant +#: model:ir.model,name:odex30_sale_account_accountant.model_account_reconcile_model +msgid "" +"Preset to create journal entries during a invoices and payments matching" +msgstr "الإعداد المسبق لإنشاء قيود يومية خلال مطابقة الفواتير والدفعات" + +#. module: odex30_sale_account_accountant +#. odoo-javascript +#: code:addons/odex30_sale_account_accountant/static/src/components/bank_reconciliation/bank_rec_form.xml:0 +msgid "Sale Orders" +msgstr "أوامر البيع" + +#. module: odex30_sale_account_accountant +#. odoo-javascript +#: code:addons/odex30_sale_account_accountant/static/src/components/bank_reconciliation/bank_rec_form.xml:0 +msgid "There are" +msgstr "هناك " + +#. module: odex30_sale_account_accountant +#. odoo-javascript +#: code:addons/odex30_sale_account_accountant/static/src/components/bank_reconciliation/bank_rec_form.xml:0 +msgid "matching the communication of the bank statement line." +msgstr "مطابقة تواصل بند كشف الحساب البنكي. " + +#. module: odex30_sale_account_accountant +#. odoo-javascript +#: code:addons/odex30_sale_account_accountant/static/src/components/bank_reconciliation/bank_rec_form.xml:0 +msgid "uninvoiced sales orders" +msgstr "أوامر البيع غير المفوترة " diff --git a/dev_odex30_accounting/odex30_sale_account_accountant/models/__init__.py b/dev_odex30_accounting/odex30_sale_account_accountant/models/__init__.py new file mode 100644 index 0000000..33407eb --- /dev/null +++ b/dev_odex30_accounting/odex30_sale_account_accountant/models/__init__.py @@ -0,0 +1,3 @@ + +from . import account_reconcile_model +from . import bank_rec_widget diff --git a/dev_odex30_accounting/odex30_sale_account_accountant/models/account_reconcile_model.py b/dev_odex30_accounting/odex30_sale_account_accountant/models/account_reconcile_model.py new file mode 100644 index 0000000..c10be34 --- /dev/null +++ b/dev_odex30_accounting/odex30_sale_account_accountant/models/account_reconcile_model.py @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- +from dateutil.relativedelta import relativedelta + +from odoo import models, fields +from odoo.tools import SQL, create_index + + +class AccountReconcileModel(models.Model): + _inherit = 'account.reconcile.model' + + def init(self): + if self.env.registry.has_trigram: + create_index(self.env.cr, + indexname='sale_order__invoice_matching_name_trgm', + tablename='sale_order', + method='gin', + expressions=[r"SUBSTRING(REGEXP_REPLACE(LOWER(sale_order.name), '[^0-9a-z\s]', '', 'g'), '\S(?:.*\S)*') gin_trgm_ops"], + ) + return super().init() + + def _get_invoice_matching_so_candidates(self, st_line, partner): + + assert self.rule_type == 'invoice_matching' + for model in ('sale.order', 'sale.order.line', 'account.move', 'account.move.line'): + self.env[model].flush_model() + + _numerical_tokens, exact_tokens, text_tokens = self._get_invoice_matching_st_line_tokens(st_line) + if not (exact_tokens or text_tokens): + return + + domain = [ + ('company_id', '=', st_line.company_id.id), + '|', + ('invoice_status', 'in', ('to invoice', 'invoiced')), + ('state', '=', 'sent'), + ] + + sale_orders = self.env['sale.order'] + if exact_tokens: + sale_orders = self.env['sale.order'].search(domain + [('name', 'in', exact_tokens)]) + + if not sale_orders and text_tokens: + query = self.env['sale.order']._where_calc(domain) + + sale_order_ids = [r[0] for r in self.env.execute_query(SQL( + r''' + SELECT sale_order.id + FROM sale_order + WHERE %s + AND SUBSTRING(REGEXP_REPLACE(LOWER(sale_order.name), '[^0-9a-z\s]', '', 'g'), '\S(?:.*\S)*') LIKE ANY(%s) + ''', + query.where_clause or SQL("TRUE"), + [t.lower() for t in set(text_tokens)], + ))] + if sale_order_ids: + sale_orders = sale_orders.browse(sale_order_ids) + + if sale_orders: + results = {'sale_orders': sale_orders} + + # Find some related invoices. + aml_domain = self._get_invoice_matching_amls_domain(st_line, partner) + invoices = sale_orders.invoice_ids + if not invoices: + + return results + + invoice_amls = invoices.line_ids.filtered_domain(aml_domain) + + matched_payments = invoices._get_reconciled_payments() + payments_amls = matched_payments.move_id.line_ids.filtered_domain(aml_domain) + + amls = payments_amls | invoice_amls + if not amls: + + return + + results['amls'] = amls + results['allow_auto_reconcile'] = True + + return results + + def _get_invoice_matching_rules_map(self): + res = super()._get_invoice_matching_rules_map() + res[0].append(self._get_invoice_matching_so_candidates) + return res diff --git a/dev_odex30_accounting/odex30_sale_account_accountant/models/bank_rec_widget.py b/dev_odex30_accounting/odex30_sale_account_accountant/models/bank_rec_widget.py new file mode 100644 index 0000000..1ec8d85 --- /dev/null +++ b/dev_odex30_accounting/odex30_sale_account_accountant/models/bank_rec_widget.py @@ -0,0 +1,42 @@ +from odoo import _, fields, models, Command +from odoo.addons.web.controllers.utils import clean_action + + +class BankRecWidget(models.Model): + _inherit = "bank.rec.widget" + + matched_sale_order_ids = fields.Many2many( + comodel_name='sale.order', + store=False, + ) + + def _action_trigger_matching_rules(self): + # EXTENDS account_accountant + matching = super()._action_trigger_matching_rules() + if matching and matching.get('sale_orders'): + self.matched_sale_order_ids = [Command.set(matching['sale_orders'].ids)] + else: + self.matched_sale_order_ids = [Command.clear()] + return matching + + def _js_action_redirect_to_matched_sale_orders(self): + self.ensure_one() + sale_orders = self.matched_sale_order_ids._origin + + action = { + 'name': "Sale Orders", + 'type': 'ir.actions.act_window', + 'res_model': 'sale.order', + 'context': {'create': False}, + } + if len(sale_orders) == 1: + action.update({ + 'view_mode': 'form', + 'res_id': sale_orders.id, + }) + else: + action.update({ + 'view_mode': 'list,form', + 'domain': [('id', 'in', sale_orders.ids)], + }) + self.return_todo_command = clean_action(action, self.env) diff --git a/dev_odex30_accounting/odex30_sale_account_accountant/static/src/components/bank_reconciliation/bank_rec_form.xml b/dev_odex30_accounting/odex30_sale_account_accountant/static/src/components/bank_reconciliation/bank_rec_form.xml new file mode 100644 index 0000000..5bac0fc --- /dev/null +++ b/dev_odex30_accounting/odex30_sale_account_accountant/static/src/components/bank_reconciliation/bank_rec_form.xml @@ -0,0 +1,25 @@ + + + + + +
+ There are matching the communication of the bank statement line. +
+
+ + + + + + + + + +
diff --git a/dev_odex30_accounting/odex30_sale_account_accountant/static/src/components/bank_reconciliation/kanban.js b/dev_odex30_accounting/odex30_sale_account_accountant/static/src/components/bank_reconciliation/kanban.js new file mode 100644 index 0000000..148ecca --- /dev/null +++ b/dev_odex30_accounting/odex30_sale_account_accountant/static/src/components/bank_reconciliation/kanban.js @@ -0,0 +1,20 @@ +/** @odoo-module **/ +import { patch } from "@web/core/utils/patch"; + +import { BankRecKanbanController } from "@odex30_account_accountant/components/bank_reconciliation/kanban"; + +patch(BankRecKanbanController.prototype, { + + + async actionRedirectToSaleOrders(){ + await this.execProtectedBankRecAction(async () => { + await this.withNewState(async (newState) => { + const { return_todo_command: actionData } = await this.onchange(newState, "redirect_to_matched_sale_orders"); + if(actionData){ + this.action.doAction(actionData); + } + }); + }); + }, + +}); diff --git a/dev_odex30_accounting/odex30_sale_account_accountant/tests/__init__.py b/dev_odex30_accounting/odex30_sale_account_accountant/tests/__init__.py new file mode 100644 index 0000000..a8530b8 --- /dev/null +++ b/dev_odex30_accounting/odex30_sale_account_accountant/tests/__init__.py @@ -0,0 +1,3 @@ + + +from . import test_bank_rec_widget diff --git a/dev_odex30_accounting/odex30_sale_account_accountant/tests/test_bank_rec_widget.py b/dev_odex30_accounting/odex30_sale_account_accountant/tests/test_bank_rec_widget.py new file mode 100644 index 0000000..264346b --- /dev/null +++ b/dev_odex30_accounting/odex30_sale_account_accountant/tests/test_bank_rec_widget.py @@ -0,0 +1,87 @@ +# -*- coding: utf-8 -*- +from odoo import Command +from odoo.addons.odex30_account_accountant.tests.test_bank_rec_widget_common import TestBankRecWidgetCommon +from odoo.tests import tagged + + +@tagged('post_install', '-at_install') +class TestBankRecWidget(TestBankRecWidgetCommon): + + def create_order(self, **kwargs): + order = self.env['sale.order'].create({ + 'partner_id': self.partner_a.id, + 'partner_invoice_id': self.partner_a.id, + 'partner_shipping_id': self.partner_a.id, + 'order_line': [ + Command.create({ + 'product_id': self.product_a.id, + 'product_uom_qty': 2, + 'price_unit': 1000.0, + }) + ], + **kwargs, + }) + order.action_quotation_sent() + return order + + def test_matching_sale_orders(self): + self.partner_a.property_product_pricelist.currency_id = self.company_data['currency'] + + so1 = self.create_order(name='SO/2000/01') + so2 = self.create_order(name='SO/2000/02') + + rule = self._create_reconcile_model() + + st_line1 = self._create_st_line(amount=4000.0, payment_ref="turlututu SO/2000/01 tsoin SO/2000/02 tsoin") + self.assertDictEqual( + rule._apply_rules(st_line1, st_line1._retrieve_partner()), + {'sale_orders': so1 + so2, 'model': rule}, + ) + + st_line2 = self._create_st_line(amount=4000.0, payment_ref="turlututu SO200001 tsoin 200002 tsoin") + self.assertDictEqual( + rule._apply_rules(st_line2, st_line2._retrieve_partner()), + {'sale_orders': so1, 'model': rule}, + ) + + # Invoice one of them. + so1.action_confirm() + invoice = so1._create_invoices() + invoice.action_post() + invoice_line = invoice.line_ids.filtered(lambda x: x.account_id.account_type == 'asset_receivable') + for st_line in st_line1 + st_line2: + self.assertDictEqual( + rule._apply_rules(st_line, st_line._retrieve_partner()), + {'amls': invoice_line, 'model': rule}, + ) + + # Partially pay the invoice. + payment = self.env['account.payment.register']\ + .with_context(active_ids=invoice.ids, active_model='account.move')\ + .create({'amount': 100.0})\ + ._create_payments() + payment_aml1 = payment._seek_for_lines()[0] + for st_line in st_line1 + st_line2: + self.assertDictEqual( + rule._apply_rules(st_line, st_line._retrieve_partner()), + {'amls': payment_aml1 + invoice_line, 'model': rule}, + ) + + # Statement line that matches exactly the payment. + st_line3 = self._create_st_line(amount=100.0, payment_ref="SO200001") + self.assertDictEqual( + rule._apply_rules(st_line3, st_line3._retrieve_partner()), + {'amls': payment_aml1, 'model': rule}, + ) + + # Fully pay the invoice. + payment = self.env['account.payment.register']\ + .with_context(active_ids=invoice.ids, active_model='account.move')\ + .create({})\ + ._create_payments() + payment_aml2 = payment._seek_for_lines()[0] + for st_line in st_line1 + st_line2: + self.assertDictEqual( + rule._apply_rules(st_line, st_line._retrieve_partner()), + {'amls': payment_aml1 + payment_aml2, 'model': rule}, + )