From b32fc0f715e41f6795972f2f8a2c3e4826357aa1 Mon Sep 17 00:00:00 2001 From: "Maximilien (malb)" Date: Mon, 16 Sep 2024 10:32:22 +0200 Subject: [PATCH 01/15] [IMP] account: payment receipt bills In this Pr: odoo#176313, we did a fix for the order of the lines in the report but included only the invoices in the t-set. closes odoo/odoo#180274 Task: 4172893 X-original-commit: 29d74aa Signed-off-by: Florian Gilbert (flg) Signed-off-by: Maximilien La Barre (malb) --- addons/account/views/report_payment_receipt_templates.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/account/views/report_payment_receipt_templates.xml b/addons/account/views/report_payment_receipt_templates.xml index 923980f81fb22..05deb47ce87f7 100644 --- a/addons/account/views/report_payment_receipt_templates.xml +++ b/addons/account/views/report_payment_receipt_templates.xml @@ -44,7 +44,7 @@ - + From 1a4672bd2171ca737cda87f3adc5db5205111376 Mon Sep 17 00:00:00 2001 From: alsh-odoo Date: Mon, 16 Sep 2024 12:55:09 +0530 Subject: [PATCH 02/15] [FIX] project: fix traceback if there is no filter domain while grouping project Currently a traceback may arises when there is no filter_domain, when the user tries to group projects. This is because of the recent changes from the commit Commit:- https://github.com/odoo/odoo/pull/172973/commits/600b379c91059bfce5ebf6c53a9d282a07e5c640 When the `_search_on_comodel` method return False if there is no fiter_domain it leads to a traceback, when `&` is used between an empty recordset and False. https://github.com/odoo/enterprise/blob/ce508a604bf70af06347e43000f25426473fb867/industry_fsm/models/project_task.py#L149-L151 We can resolve this issue by returning an empty record, Instead of returning False. sentry-5836960027 closes odoo/odoo#180265 Signed-off-by: Abdelouahab Laaroussi (abla) --- addons/project/models/project_task.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/project/models/project_task.py b/addons/project/models/project_task.py index 7e40a49fa04ef..c3801516a66cd 100644 --- a/addons/project/models/project_task.py +++ b/addons/project/models/project_task.py @@ -1211,7 +1211,7 @@ def _change_operator(domain): }) filtered_domain = _change_operator(filtered_domain) if not filtered_domain: - return False + return self.env[comodel] if additional_domain: filtered_domain = expression.AND([filtered_domain, additional_domain]) return self.env[comodel].search(filtered_domain, order=order) From 1c685b9ce7483c426fc2db964ef357003229ddc6 Mon Sep 17 00:00:00 2001 From: Vincent Larcin Date: Tue, 30 Jul 2024 17:22:14 +0200 Subject: [PATCH 03/15] [IMP] project(_todo): remove "Closed On" filter The "Closed On" filter in project and project_todo relies on using a date filter in conjunction with a domain, which is not possible before https://github.com/odoo/odoo/pull/156746. This commit removes those filters, as they don't work before the above PR. Task-3973609 closes odoo/odoo#175030 Signed-off-by: Xavier Bol (xbo) --- addons/project/views/project_task_views.xml | 2 +- addons/project_todo/views/project_task_views.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/project/views/project_task_views.xml b/addons/project/views/project_task_views.xml index 45b81824b5f47..11e4b43cabbb9 100644 --- a/addons/project/views/project_task_views.xml +++ b/addons/project/views/project_task_views.xml @@ -27,7 +27,7 @@ - + diff --git a/addons/project_todo/views/project_task_views.xml b/addons/project_todo/views/project_task_views.xml index 600d5eef04e6a..2a26edcbe102e 100644 --- a/addons/project_todo/views/project_task_views.xml +++ b/addons/project_todo/views/project_task_views.xml @@ -220,7 +220,7 @@ - + Date: Tue, 23 Jul 2024 15:06:25 +0530 Subject: [PATCH 04/15] [FIX] web: hide save and discard buttons Steps to reproduce this issue: - Go to views (Settings -> Technical -> User Interface -> Views). - Edit something and click the Save/Discard button. - Notice that the Save and Discard buttons remain visible. Before this commit: The state `fieldIsDirty` remains true after clicking the Save/Discard button because the `FIELD_IS_DIRTY` event defined in the `useBus` hook is not triggered in `commitChanges`. After this commit: The Save and Discard buttons hide successfully when not needed. task-3948043 closes odoo/odoo#174187 Signed-off-by: Aaron Bohy (aab) --- .../static/src/views/fields/ace/ace_field.js | 1 + .../views/fields/ace_editor_field_tests.js | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/addons/web/static/src/views/fields/ace/ace_field.js b/addons/web/static/src/views/fields/ace/ace_field.js index 0113fda56b02f..acc1bc4116172 100644 --- a/addons/web/static/src/views/fields/ace/ace_field.js +++ b/addons/web/static/src/views/fields/ace/ace_field.js @@ -60,6 +60,7 @@ export class AceField extends Component { await this.props.record.update({ [this.props.name]: this.editedValue }); } this.isDirty = false; + this.props.record.model.bus.trigger("FIELD_IS_DIRTY", false); } } } diff --git a/addons/web/static/tests/views/fields/ace_editor_field_tests.js b/addons/web/static/tests/views/fields/ace_editor_field_tests.js index 5857c0ec7c74d..386d013cde217 100644 --- a/addons/web/static/tests/views/fields/ace_editor_field_tests.js +++ b/addons/web/static/tests/views/fields/ace_editor_field_tests.js @@ -259,4 +259,32 @@ QUnit.module("Fields", (hooks) => { await click(target, ".o_form_button_save"); assert.verifySteps(['web_save: [[1],{"foo":"a"}]']); }); + + QUnit.test("Save and Discard buttons will become invisible after saving", async (assert) => { + await makeView({ + type: "form", + resModel: "partner", + resId: 1, + serverData, + arch: ` +
+ + + `, + }); + + const textArea = target.querySelector(".ace_editor textarea"); + await click(textArea); + textArea.focus(); + textArea.value = "a"; + await triggerEvent(textArea, null, "input", {}); + assert.containsOnce(target, ".o_form_status_indicator_buttons"); + assert.doesNotHaveClass( + target.querySelector(".o_form_status_indicator_buttons"), + "invisible" + ); + await click(target, ".o_form_button_save"); + assert.containsOnce(target, ".o_form_status_indicator_buttons"); + assert.hasClass(target.querySelector(".o_form_status_indicator_buttons"), "invisible"); + }); }); From e5b92ee221df7f52bd9b1a0be0779285b4c4427a Mon Sep 17 00:00:00 2001 From: muab-odoo Date: Thu, 29 Aug 2024 15:23:37 +0300 Subject: [PATCH 05/15] [ADD] l10n_qa: Add localization package for qatar Add CoA and account groups with all the default account mappings for qatar Improve user experience in qatar task-3927918 closes odoo/odoo#178370 Signed-off-by: Florian Gilbert (flg) --- addons/l10n_qa/__init__.py | 1 + addons/l10n_qa/__manifest__.py | 20 +++ .../data/template/account.account-qa.csv | 137 ++++++++++++++++++ .../data/template/account.group-qa.csv | 32 ++++ addons/l10n_qa/demo/demo_company.xml | 35 +++++ addons/l10n_qa/i18n/ar_001.po | 21 +++ addons/l10n_qa/i18n/l10n_qa.pot | 21 +++ addons/l10n_qa/models/__init__.py | 1 + addons/l10n_qa/models/template_qa.py | 45 ++++++ 9 files changed, 313 insertions(+) create mode 100644 addons/l10n_qa/__init__.py create mode 100644 addons/l10n_qa/__manifest__.py create mode 100644 addons/l10n_qa/data/template/account.account-qa.csv create mode 100644 addons/l10n_qa/data/template/account.group-qa.csv create mode 100644 addons/l10n_qa/demo/demo_company.xml create mode 100644 addons/l10n_qa/i18n/ar_001.po create mode 100644 addons/l10n_qa/i18n/l10n_qa.pot create mode 100644 addons/l10n_qa/models/__init__.py create mode 100644 addons/l10n_qa/models/template_qa.py diff --git a/addons/l10n_qa/__init__.py b/addons/l10n_qa/__init__.py new file mode 100644 index 0000000000000..0650744f6bc69 --- /dev/null +++ b/addons/l10n_qa/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/addons/l10n_qa/__manifest__.py b/addons/l10n_qa/__manifest__.py new file mode 100644 index 0000000000000..c6b0b74dccd1d --- /dev/null +++ b/addons/l10n_qa/__manifest__.py @@ -0,0 +1,20 @@ +{ + 'name': 'Qatar - Accounting', + 'countries': ['qa'], + 'description': """ +This is the base module to manage the accounting chart for Qatar in Odoo. +============================================================================== +Qatar accounting basic charts and localization. +Activates: +- Chart of accounts + """, + 'category': 'Accounting/Localizations/Account Charts', + 'version': '1.0', + 'depends': [ + 'account', + ], + 'demo': [ + 'demo/demo_company.xml', + ], + 'license': 'LGPL-3', +} diff --git a/addons/l10n_qa/data/template/account.account-qa.csv b/addons/l10n_qa/data/template/account.account-qa.csv new file mode 100644 index 0000000000000..fe52843e9d14a --- /dev/null +++ b/addons/l10n_qa/data/template/account.account-qa.csv @@ -0,0 +1,137 @@ +"id","name","code","account_type","reconcile","name@ar_001" +"qa_account_100102","Bank Suspense Account","100102","asset_current","False","حساب التعليق البنكي" +"qa_account_100103","Outstanding Receipts","100103","asset_current","False","الإيصالات المستحقة" +"qa_account_100104","Outstanding Payments","100104","asset_current","False","المدفوعات المستحقة" +"qa_account_100106","Credit cards","100106","asset_current","False","البطاقات الائتمانية" +"qa_account_100107","Post Dated Cheques Received","100107","asset_current","False","الشيكات مؤجلة الصرف المستلمة" +"qa_account_100201","Accounts Receivable","100201","asset_receivable","True","الحسابات المدينة" +"qa_account_100202","Accounts Receivable (PoS)","100202","asset_receivable","True","الحسابات المدينة (نقطة البيع)" +"qa_account_100203","Other Receivable","100203","asset_current","False","المستحقات الأخرى" +"qa_account_100301","Deposit - Office Rent","100301","asset_current","False","إيداع - إيجار المكتب" +"qa_account_100302","Deposits - Customs","100302","asset_current","False","الإيداعات - الجمارك" +"qa_account_100303","Deposit to Immigration (Visa)","100303","asset_current","False","إيداع للهجرة (فيزا)" +"qa_account_100304","Deposit Others","100304","asset_current","False","إيداع آخر" +"qa_account_100401","Prepaid Medical Insurance","100401","asset_current","False","التأمين الصحي مسبق الدفع" +"qa_account_100402","Prepaid Life Insurance","100402","asset_current","False","التأمين على الحياة مسبق الدفع" +"qa_account_100403","Prepaid Office Rent","100403","asset_current","False","إيجار المكتب مسبق الدفع" +"qa_account_100404","Prepaid Other Insurance","100404","asset_current","False","التأمينات الأخرى مسبقة الدفع" +"qa_account_100405","Prepaid License Fees","100405","asset_current","False","رسوم الرخصة مسبقة الدفع" +"qa_account_100406","Prepaid Maintenance","100406","asset_current","False","الصيانة مسبقة الدفع" +"qa_account_100407","Prepaid Employees Housing","100407","asset_current","False","سكن الموظفين مسبق الدفع" +"qa_account_100408","Prepaid Schooling Fees","100408","asset_current","False","الرسوم الدراسية مسبقة الدفع" +"qa_account_100409","Prepaid Consultancy Fees","100409","asset_current","False","الرسوم الاستشارية مسبقة الدفع" +"qa_account_100410","Prepaid Legal Fees","100410","asset_current","False","الرسوم القانونية مسبقة الدفع" +"qa_account_100411","Prepaid Sponsorship Fees","100411","asset_current","False","رسوم الكفالة مسبقة الدفع" +"qa_account_100412","Prepaid Advertisement Expenses","100412","asset_current","False","نفقات الإعلان مسبقة الدفع" +"qa_account_100413","Prepaid Bank Guarantee","100413","asset_current","False","ضمان البنك مسبق الدفع" +"qa_account_100414","Prepaid Finance charge for Loans","100414","asset_current","False","رسوم التمويل مسبقة الدفع للقروض" +"qa_account_100415","Other Prepayments","100415","asset_current","False","المدفوعات المسبقة الأخرى" +"qa_account_100416","Prepaid Expenses","100416","asset_current","False","المصروفات المدفوعة مقدما" +"qa_account_100501","Handling Difference in Inventory","100501","asset_current","False","التعامل مع الفرق في المخزون" +"qa_account_100502","Inventory Valuation","100502","asset_current","False","تقييم المخزون" +"qa_account_100503","Stock Incoming","100503","asset_current","False","المخزون الوارد" +"qa_account_100504","Stock Outgoing","100504","asset_current","False","المخزون الصادر" +"qa_account_100505","Work in Progress (Inventory)","100505","asset_current","False","العمل قيد التنفيذ (المخزون)" +"qa_account_100601","Accumulated Depreciation of Motor Vehicles","100601","asset_fixed","False","حساب الإهلاك للمركبات" +"qa_account_100602","Amortisation on Leasehold Improvement","100602","asset_fixed","False","الاستهلاك عند تحسين العقارات المستأجرة" +"qa_account_100603","Leasehold Improvement","100603","asset_fixed","False","تحسين العقارات المستأجرة" +"qa_account_100604","Furniture and Equipment","100604","asset_fixed","False","الأثاث والمعدات" +"qa_account_100605","Computer Hardware & Software","100605","asset_fixed","False","أجهزة وبرامج الحاسوب" +"qa_account_100606","Accumulated Depreciation of Furniture & Office Equipment","100606","asset_fixed","False","حساب الإهلاك للأثاث والأدوات المكتبية" +"qa_account_100607","Accumulated Depreciation of Computer Hardware & Software","100607","asset_fixed","False","حساب الإهلاك لبرامج وأجهزة الحاسوب" +"qa_account_100701","Registration of Trademarks","100701","asset_current","False","تسجيل العلامات التجارية" +"qa_account_100801","Right of use Asset (IFRS 16)","100801","asset_fixed","False","حق استخدام الأصل (IFRS 16)" +"qa_account_100802","Accumulated Depreciation Right of use Asset (IFRS 16)","100802","asset_fixed","False","حق استخدام الأصل للإهلاك المتراكم (IFRS 16)" +"qa_account_200101","Payables","200101","liability_payable","True","المبالغ مستحقة الدفع" +"qa_account_200102","Trade Payables","200102","liability_payable","True","" +"qa_account_200103","Employees Payables","200103","liability_payable","True","المبالغ المستحقة للموظفين" +"qa_account_200104","Credit Notes to Customers","200104","liability_current","False","الإشعارات الدائنة للعملاء" +"qa_account_200201","Accrued - Salaries","200201","liability_current","False","مستحق - المرتبات" +"qa_account_200202","Accrued - Commissions","200202","liability_current","False","مستحق - العمولات" +"qa_account_200203","Accrued - Staff Bonus","200203","liability_current","False","مكافآت الموظفين المستحقة" +"qa_account_200204","Accrued Other Personnel Cost","200204","liability_current","False","تكاليف الموظفين الآخرين المستحقة" +"qa_account_200205","Accrued - Sponsorship","200205","liability_current","False","مستحق - الكفالة" +"qa_account_200301","Accrued - Utilities","200301","liability_current","False","مستحق - المرافق" +"qa_account_200302","Accrued - Telephone","200302","liability_current","False","مستحق - الهاتف" +"qa_account_200303","Accrued - Audit Fees","200303","liability_current","False","مستحق - رسوم التدقيق" +"qa_account_200304","Accrued - Office Rent","200304","liability_current","False","مستحق - إيجار المكتب" +"qa_account_200305","Accrued Others","200305","liability_current","False","المستحقات الأخرى" +"qa_account_200306","Accrued Qatar Customs","200306","liability_current","False","جمارك قطر المستحقة" +"qa_account_200401","Deferred income","200401","liability_current","False","الدخل المؤجل" +"qa_account_200501","Leave Tickets Provision","200501","liability_non_current","False","حكم تذاكر الطيران" +"qa_account_200502","Leave Days Provision","200502","liability_non_current","False","حكم أيام الإجازة" +"qa_account_200503","End of Service Provision","200503","liability_non_current","False","حكم نهاية الخدمة" +"qa_account_200504","Income Tax Provision","200504","liability_non_current","False","حكم ضريبة الدخل" +"qa_account_200901","VAT Input","200901","liability_current","False","مدخلات ضريبة القيمة المضافة" +"qa_account_200902","VAT Output","200902","liability_current","False","مخرجات ضريبة القيمة المضافة" +"qa_account_200903","VAT Receivable","200903","asset_non_current","False","ضريبة القيمة المضافة مستحقة الدفع" +"qa_account_200904","VAT Payable","200904","liability_non_current","False","ضريبة القيمة المضافة المستحقة" +"qa_account_200905","Tax Payable","200905","liability_current","False","الضريبة المستحقة" +"qa_account_200906","Tax Receivable","200906","liability_current","False","" +"qa_account_300100","Retained Earnings","300100","equity","False","" +"qa_account_300101","Undistributed Profits/Losses","300101","equity_unaffected","False","الأرباح/الخسائر غير الموزعة" +"qa_account_400100","Income Clearing Account","400100","income","False","" +"qa_account_400101","Sales Account","400101","income","False","حساب المبيعات" +"qa_account_400102","Sales of I/C","400102","income","False","المبيعات بين الشركات التابعة" +"qa_account_400103","Sales from Other Region","400103","income","False","المبيعات من منطقة أخرى" +"qa_account_400104","Management Consultancy Fees","400104","income","False","رسوم الاستشارة الإدارية" +"qa_account_400105","Advertising Income","400105","income","False","دخل الإعلان" +"qa_account_400201","Other Income","400201","income_other","False","دخل آخر" +"qa_account_400301","Gain on Difference on Exchange","400301","income_other","False","أرباح فرق صرف العملة" +"qa_account_400302","Cash Difference Gain","400302","income_other","False","أرباح فرق النقد" +"qa_account_400303","Excess In Till","400303","income_other","False","الفائض في صندوق النقود" +"qa_account_400304","Cash Discount Gain","400304","income_other","False","" +"qa_account_500101","Cost of Goods Sold in Trading","500101","expense_direct_cost","False","تكاليف البضائع المباعة في التجارة" +"qa_account_500102","Cost Of Goods Sold I/C Sales","500102","expense_direct_cost","False","تكاليف البضائع المباعة - المبيعات بين الشركات التابعة" +"qa_account_500200","Expense Clearing Account","500200","expense","False","" +"qa_account_500201","Medical Insurance","500201","expense","False","التأمين الصحي" +"qa_account_500202","End of Service Indemnity","500202","expense","False","تعويض نهاية الخدمة" +"qa_account_500203","Sponsorship Fees","500203","expense","False","رسوم الكفالة" +"qa_account_500301","Basic Salary","500301","expense","False","الراتب الأساسي" +"qa_account_500302","Housing Allowance","500302","expense","False","بدل السكن" +"qa_account_500303","Transportation Allowance","500303","expense","False","بدل المواصلات" +"qa_account_500304","Leave Ticket","500304","expense","False","تذكرة الطيران" +"qa_account_500305","Leave Salary","500305","expense","False","راتب الإجازة" +"qa_account_500306","Sales Commission","500306","expense","False","عمولة المبيعات" +"qa_account_500307","Visa Expenses","500307","expense","False","نفقات الفيزا" +"qa_account_500308","Staff Other Allowances","500308","expense","False","نفقات الموظفين الأخرى" +"qa_account_500309","Air tickets","500309","expense","False","تذاكر الطيران" +"qa_account_500401","Office Rent","500401","expense","False","إيجار المكتب" +"qa_account_500402","Warehouse Rent","500402","expense","False","إيجار المستودع" +"qa_account_500403","Water & Electricity","500403","expense","False","الماء والكهرباء" +"qa_account_500404","Other Utility Charges","500404","expense","False","" +"qa_account_500501","Audit Fees","500501","expense","False","رسوم التدقيق" +"qa_account_500502","Legal fees","500502","expense","False","الرسوم القانونية" +"qa_account_500503","Trade License Fees","500503","expense","False","رسوم الرخصة التجارية" +"qa_account_500504","Others - Professional Fees","500504","expense","False","غير ذلك - الرسوم المهنية" +"qa_account_500505","Insurance","500505","expense","False","التأمين" +"qa_account_500506","Previous Year Adjustments Account","500506","expense","False","حساب تعديلات العام الماضي" +"qa_account_500601","Credit Card Charges","500601","expense","False","رسوم البطاقة الائتمانية" +"qa_account_500602","Other Bank Charges","500602","expense","False","الرسوم البنكية الأخرى" +"qa_account_500603","Bank Finance & Loan Charges","500603","expense","False","رسوم القروض والتمويل البنكي" +"qa_account_500651","Income Tax Expense","500651","expense","False","نفقات ضريبة الدخل" +"qa_account_500701","Other - Advertising Expenses","500701","expense","False","غير ذلك - نفقات الإعلان" +"qa_account_500702","Training","500702","expense","False","التدريب" +"qa_account_500703","Consultancy Fees","500703","expense","False","الرسوم الاستشارية" +"qa_account_500801","Amortisation on Leasehold Improvement","500801","expense_depreciation","False","الاستهلاك عند تحسين العقارات المستأجرة" +"qa_account_500802","Vehicle Expenses","500802","expense_depreciation","False","نفقات المركبات" +"qa_account_500803","Depreciation of Motor Vehicles","500803","expense_depreciation","False","إهلاك المركبات" +"qa_account_500804","Depreciation of Furniture & Office Equipment","500804","expense_depreciation","False","إهلاك الأثاث والمعدات المكتبية" +"qa_account_500805","Depreciation of Computer Hard & Soft","500805","expense_depreciation","False","إهلاك أجهزة وبرامج الحاسوب" +"qa_account_500851","Depreciation on Right of use Asset (IFRS 16)","500851","expense_depreciation","False","إهلاك حق استخدام الأصل (IFRS 16)" +"qa_account_500901","Loss on Fixed Assets Disposal","500901","expense","False","خسائر التصرف في الأصول الثابتة" +"qa_account_500902","Cash Shortage","500902","expense","False","القصور النقدي" +"qa_account_500903","Loss on Difference on Exchange","500903","expense","False","حسائر فرق صرف العملة" +"qa_account_500904","Write Off Receivables & Payables","500904","expense","False","شطب الحسابات المدينة والدائنة" +"qa_account_500905","Write Off Inventory","500905","expense","False","شطب المخزون" +"qa_account_500906","Others - Provision & Write Off","500906","expense","False","غير ذلك - المَحافظ والتعديلات" +"qa_account_500907","Others","500907","expense","False","غير ذلك" +"qa_account_500908","Other Non-Operating Expenses","500908","expense","False","النفقات الأخرى غير التشغيلية" +"qa_account_500909","Cash Difference Loss","500909","expense","False","خسائر فريق النقد" +"qa_account_501101","Telephone","501101","expense","False","الهاتف" +"qa_account_501102","Others - Communication","501102","expense","False","غير ذلك - التواصل" +"qa_account_501103","Maintenance","501103","expense","False","الصيانة" +"qa_account_501104","Security & Guard","501104","expense","False","الأمن والحراسة" +"qa_account_501105","Cleaning","501105","expense","False","التنظيف" +"qa_account_501106","Others - Office Various Expenses","501106","expense","False","غير ذلك - نفقات المكتب المختلفة" +"qa_account_501107","Cash Discount Loss","501107","expense","False","خسارة الخصم النقدي" diff --git a/addons/l10n_qa/data/template/account.group-qa.csv b/addons/l10n_qa/data/template/account.group-qa.csv new file mode 100644 index 0000000000000..dde52445f8106 --- /dev/null +++ b/addons/l10n_qa/data/template/account.group-qa.csv @@ -0,0 +1,32 @@ +"id","code_prefix_start","code_prefix_end","name","name@ar_001" +"qa_group_01","1000","1000","Liquidity","السيولة" +"qa_group_02","1001","1001","Liquidity","السيولة" +"qa_group_03","1009","1009","Liquidity","السيولة" +"qa_group_04","1002","1002","Receivables","الحسابات المدينة" +"qa_group_05","1003","1003","Deposits","الإيداعات" +"qa_group_06","1004","1004","Prepaid Expenses","النفقات مسبقة الدفع" +"qa_group_07","1005","1005","Inventory","المخزون" +"qa_group_08","1006","1006","Company Assets & Depreciation","أصول الشركة والإهلاك" +"qa_group_09","1007","1007","Licensing and Copyrights","الترخيص وحقوق النشر" +"qa_group_10","1008","1008","IFRS16 Assets & Depreciation","أصول IFRS16 والإهلاك" +"qa_group_11","2001","2001","Payables","الحسابات الدائنة" +"qa_group_12","2002","2002","Accrued Employee Expenses","نفقات الموظفين المستحقة" +"qa_group_13","2003","2003","Accrued Expenses","النفقات المستحقة" +"qa_group_14","2004","2004","Deferrals","التأجيلات" +"qa_group_15","2005","2005","Provisions","الأحكام" +"qa_group_16","2009","2009"," VAT","ضريبة القيمة المضافة" +"qa_group_17","4001","4001","Operating Income","الإيرادات التشغيلية" +"qa_group_18","4002","4002","Non-Operating Income","الإيرادات غير التشغيلية" +"qa_group_19","4003","4003","Other gains & losses - Other Income","المكاسب والخسائر الأخرى - إيرادات أخرى" +"qa_group_20","5001","5001","Cost of Sales","تكلفة المبيعات" +"qa_group_21","5002","5002","Employees Expenses","مصروفات الموظفين" +"qa_group_22","5003","5003","Payroll Expenses","مصروفات الرواتب" +"qa_group_23","5004","5004","Office and Location Expenses","نفقات المكتب والموقع" +"qa_group_24","5005","5005","Company Expenses","مصروفات الشركة" +"qa_group_25","500600","500649","Finance Expenses","المصروفات المالية" +"qa_group_26","500650","500699","Income Tax","ضريبة الدخل" +"qa_group_27","5007","5007","Misc. Company Expenses","متفرقات. مصروفات الشركة" +"qa_group_28","500800","500849","Assets Depreciation Expenses","مصروفات استهلاك الأصول" +"qa_group_29","500851","500899","IFRS16 Depreciation","IFRS16 الإهلاك" +"qa_group_30","5009","5009","Other gains & losses - Expenses","الأرباح والخسائر الأخرى - المصروفات" +"qa_group_31","5011","5011","Misc. Office Expenses","متفرقات. نفقات مكتبية" diff --git a/addons/l10n_qa/demo/demo_company.xml b/addons/l10n_qa/demo/demo_company.xml new file mode 100644 index 0000000000000..1e19ad1c0b121 --- /dev/null +++ b/addons/l10n_qa/demo/demo_company.xml @@ -0,0 +1,35 @@ + + + + QA Company + + 117 Street 7, Block 4, Baaya, Qatar + Unit 07 - 10, 38/F Baaya + Baaya + + + +97423245875 + qatarcompany@example.com + www.qaexample.com + + + + QA Company + + + + + + + + + + + + + + + qa + + + diff --git a/addons/l10n_qa/i18n/ar_001.po b/addons/l10n_qa/i18n/ar_001.po new file mode 100644 index 0000000000000..399adb7d0091a --- /dev/null +++ b/addons/l10n_qa/i18n/ar_001.po @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_qa +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-08-29 11:32+0000\n" +"PO-Revision-Date: 2024-08-29 11:32+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: l10n_qa +#: model:ir.model,name:l10n_qa.model_account_chart_template +msgid "Account Chart Template" +msgstr "قالب شجرة الحسابات" diff --git a/addons/l10n_qa/i18n/l10n_qa.pot b/addons/l10n_qa/i18n/l10n_qa.pot new file mode 100644 index 0000000000000..f199dc86f3127 --- /dev/null +++ b/addons/l10n_qa/i18n/l10n_qa.pot @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_qa +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-08-29 11:32+0000\n" +"PO-Revision-Date: 2024-08-29 11:32+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: l10n_qa +#: model:ir.model,name:l10n_qa.model_account_chart_template +msgid "Account Chart Template" +msgstr "" diff --git a/addons/l10n_qa/models/__init__.py b/addons/l10n_qa/models/__init__.py new file mode 100644 index 0000000000000..2b9aa701cefd3 --- /dev/null +++ b/addons/l10n_qa/models/__init__.py @@ -0,0 +1 @@ +from . import template_qa diff --git a/addons/l10n_qa/models/template_qa.py b/addons/l10n_qa/models/template_qa.py new file mode 100644 index 0000000000000..5772645911db0 --- /dev/null +++ b/addons/l10n_qa/models/template_qa.py @@ -0,0 +1,45 @@ +from odoo import models +from odoo.addons.account.models.chart_template import template + + +class AccountChartTemplate(models.AbstractModel): + _inherit = 'account.chart.template' + + @template('qa') + def _get_qa_template_data(self): + return { + 'property_account_receivable_id': 'qa_account_100201', + 'property_account_payable_id': 'qa_account_200101', + 'property_account_expense_categ_id': 'qa_account_500101', + 'property_account_income_categ_id': 'qa_account_400101', + 'property_account_expense_id': 'qa_account_500101', + 'property_account_income_id': 'qa_account_400101', + 'property_stock_valuation_account_id': 'qa_account_100502', + 'property_stock_account_input_categ_id': 'qa_account_100503', + 'property_stock_account_output_categ_id': 'qa_account_100504', + 'property_stock_account_production_cost_id': 'qa_account_100505', + 'code_digits': '6', + } + + @template('qa', 'res.company') + def _get_qa_res_company(self): + return { + self.env.company.id: { + 'account_fiscal_country_id': 'base.qa', + 'bank_account_code_prefix': '1000', + 'cash_account_code_prefix': '1009', + 'transfer_account_code_prefix': '1001', + 'account_default_pos_receivable_account_id': 'qa_account_100202', + 'income_currency_exchange_account_id': 'qa_account_400301', + 'expense_currency_exchange_account_id': 'qa_account_500903', + 'account_journal_suspense_account_id': 'qa_account_100102', + 'account_journal_early_pay_discount_loss_account_id': 'qa_account_501107', + 'account_journal_early_pay_discount_gain_account_id': 'qa_account_400304', + 'account_journal_payment_debit_account_id': 'qa_account_100103', + 'account_journal_payment_credit_account_id': 'qa_account_100104', + 'default_cash_difference_income_account_id': 'qa_account_400302', + 'default_cash_difference_expense_account_id': 'qa_account_500909', + 'deferred_expense_account_id': 'qa_account_100416', + 'deferred_revenue_account_id': 'qa_account_200401', + }, + } From 0cb6f6d50a32fd2182197cfc53798409f499827b Mon Sep 17 00:00:00 2001 From: "Pedram (pebr)" Date: Fri, 13 Sep 2024 18:56:12 +0200 Subject: [PATCH 06/15] [FIX] point_of_sale: handle unloaded products in orderlines Before this commit, the PoS would fail to load if an orderline contained a product that was not loaded into the PoS. This issue could arise, for example, when category restrictions are applied after creating draft orders, preventing the PoS from loading. opw-4119028 closes odoo/odoo#180230 Signed-off-by: David Monnom (moda) --- addons/point_of_sale/static/src/app/store/models.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/point_of_sale/static/src/app/store/models.js b/addons/point_of_sale/static/src/app/store/models.js index ba4ab588c8014..a1f74cea96339 100644 --- a/addons/point_of_sale/static/src/app/store/models.js +++ b/addons/point_of_sale/static/src/app/store/models.js @@ -1421,7 +1421,9 @@ export class Order extends PosModel { this.init_from_JSON(options.json); const linesById = Object.fromEntries(this.orderlines.map((l) => [l.id || l.cid, l])); for (const line of this.orderlines) { - line.comboLines = line.combo_line_ids?.map((id) => linesById[id]); + line.comboLines = line.combo_line_ids + ?.filter((id) => linesById[id]) + .map((id) => linesById[id]); const combo_parent_id = line.combo_parent_id?.[0] || line.combo_parent_id; if (combo_parent_id) { line.comboParent = linesById[combo_parent_id]; From 1135261f1d1cbad0bd34a5f6637c94a6ee2dd1a3 Mon Sep 17 00:00:00 2001 From: "Arthur Pierrot (arpi)" Date: Mon, 16 Sep 2024 11:25:41 +0200 Subject: [PATCH 07/15] [IMP] l10n_us_hr_payroll: add accrual hours to payslip For the US, it is mandatory to have the accrual gains, usage and balance on the payslip. This adds a new table with the information for the current period. closes odoo/odoo#180288 Task: 3993175 Related: odoo/enterprise#66563 Signed-off-by: Bertrand Dossogne (bedo) --- .../models/hr_work_entry.py | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/addons/hr_work_entry_holidays/models/hr_work_entry.py b/addons/hr_work_entry_holidays/models/hr_work_entry.py index 13906ddddcf88..d85e62561c2f4 100644 --- a/addons/hr_work_entry_holidays/models/hr_work_entry.py +++ b/addons/hr_work_entry_holidays/models/hr_work_entry.py @@ -1,7 +1,9 @@ -# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import fields, models +from collections import defaultdict +from dateutil.relativedelta import relativedelta + +from odoo import api, fields, models class HrWorkEntry(models.Model): @@ -76,6 +78,27 @@ def action_refuse_leave(self): if leave_sudo: leave_sudo.action_refuse() + @api.model + def _get_leaves_duration_between_two_dates(self, employee_id, date_from, date_to): + date_from += relativedelta(hour=0, minute=0, second=0) + date_to += relativedelta(hour=23, minute=59, second=59) + leaves_work_entries = self.env['hr.work.entry'].search([ + ('employee_id', '=', employee_id.id), + ('date_start', '>=', date_from), + ('date_stop', '<=', date_to), + ('state', '!=', 'cancelled'), + ('leave_id', '!=', False), + ('leave_state', '=', 'validate'), + ]) + entries_by_leave_type = defaultdict(lambda: self.env['hr.work.entry']) + for work_entry in leaves_work_entries: + entries_by_leave_type[work_entry.leave_id.holiday_status_id] |= work_entry + + durations_by_leave_type = {} + for leave_type, work_entries in entries_by_leave_type.items(): + durations_by_leave_type[leave_type] = sum(work_entries.mapped('duration')) + return durations_by_leave_type + class HrWorkEntryType(models.Model): _inherit = 'hr.work.entry.type' From 208de76fa511680969357a486be3967efa313e4e Mon Sep 17 00:00:00 2001 From: Parth Solanki Date: Tue, 16 Jul 2024 10:44:25 +0530 Subject: [PATCH 08/15] [FIX] pos_online_payment: error while paying online by razorpay Steps: - Install the Point of Sale module with demo data. - Set up online payment provider (e.g. Razorpay) for the Indian company. - Enable online payment method in Point of sale app configuration - Add the payment method in Point of sale shop configuration. - Make a successful online payment in the Point of sale app. Issue: - Error occurs after successful payment, preventing the payment from being processed and confirmed in POS module and the payment entry from being posted. Cause: - Payment transactions status were failing due to company mismatch between the partner(admin)'s company and the pos order's company. FIX: - If customer is not selected in pos order, we consider the order and payment from public user not from the admin user. Improvement: - env is not accessible with self in controller for self.env.ref('base.public_user') fixed with request.env.ref('base.public_user') - Unused code removed from `_get_partner_sudo` method task-3989409 closes odoo/odoo#173268 Signed-off-by: Joseph Caburnay (jcb) --- addons/pos_online_payment/controllers/payment_portal.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/addons/pos_online_payment/controllers/payment_portal.py b/addons/pos_online_payment/controllers/payment_portal.py index 9ac4fad5f42a5..f10aee7f82fa7 100644 --- a/addons/pos_online_payment/controllers/payment_portal.py +++ b/addons/pos_online_payment/controllers/payment_portal.py @@ -29,10 +29,7 @@ def _ensure_session_open(pos_order_sudo): raise AccessError(_("The POS session is not opened.")) def _get_partner_sudo(self, user_sudo): - partner_sudo = user_sudo.partner_id - if not partner_sudo and user_sudo._is_public(): - partner_sudo = self.env.ref('base.public_user') - return partner_sudo + return user_sudo.partner_id def _redirect_login(self): return request.redirect('/web/login?' + url_encode({'redirect': request.httprequest.full_path})) @@ -98,6 +95,8 @@ def pos_order_pay(self, pos_order_id, access_token=None, exit_route=None): self._ensure_session_open(pos_order_sudo) user_sudo = request.env.user + if not pos_order_sudo.partner_id: + user_sudo = request.env.ref('base.public_user') logged_in = not user_sudo._is_public() partner_sudo = pos_order_sudo.partner_id or self._get_partner_sudo(user_sudo) if not partner_sudo: @@ -178,6 +177,8 @@ def pos_order_pay_transaction(self, pos_order_id, access_token=None, **kwargs): self._ensure_session_open(pos_order_sudo) exit_route = request.httprequest.args.get('exit_route') user_sudo = request.env.user + if not pos_order_sudo.partner_id: + user_sudo = request.env.ref('base.public_user') logged_in = not user_sudo._is_public() partner_sudo = pos_order_sudo.partner_id or self._get_partner_sudo(user_sudo) if not partner_sudo: From 53d9b10bc9717b7653998fcc65e64e26b52716c1 Mon Sep 17 00:00:00 2001 From: guva-odoo Date: Thu, 8 Aug 2024 15:20:55 +0000 Subject: [PATCH 09/15] [ADD] account_edi_ubl_cii_tax_extension: add tax category codes and tax exemption reasons With this commit we extend the account_tax model to add tax category code and tax exemption reason, that will be used when generating peppol xml. Without that we can only do some incomplete computation leading to missing informations in peppol xml. opw-4061329 closes odoo/odoo#180309 X-original-commit: 1026974abdea493b26961dc12de0d512fdb1cab9 Signed-off-by: Julien Van Roy (juvr) Signed-off-by: Guillaume Vanleynseele (guva) --- .../__init__.py | 3 + .../__manifest__.py | 18 + .../account_edi_ubl_cii_tax_extension.pot | 491 ++++++++++++++++++ .../models/__init__.py | 2 + .../models/account_edi_common.py | 77 +++ .../models/account_tax.py | 97 ++++ .../tests/__init__.py | 1 + .../tests/test_ubl_cii_tax_extension.py | 36 ++ .../views/account_tax_views.xml | 17 + 9 files changed, 742 insertions(+) create mode 100644 addons/account_edi_ubl_cii_tax_extension/__init__.py create mode 100644 addons/account_edi_ubl_cii_tax_extension/__manifest__.py create mode 100644 addons/account_edi_ubl_cii_tax_extension/i18n/account_edi_ubl_cii_tax_extension.pot create mode 100644 addons/account_edi_ubl_cii_tax_extension/models/__init__.py create mode 100644 addons/account_edi_ubl_cii_tax_extension/models/account_edi_common.py create mode 100644 addons/account_edi_ubl_cii_tax_extension/models/account_tax.py create mode 100644 addons/account_edi_ubl_cii_tax_extension/tests/__init__.py create mode 100644 addons/account_edi_ubl_cii_tax_extension/tests/test_ubl_cii_tax_extension.py create mode 100644 addons/account_edi_ubl_cii_tax_extension/views/account_tax_views.xml diff --git a/addons/account_edi_ubl_cii_tax_extension/__init__.py b/addons/account_edi_ubl_cii_tax_extension/__init__.py new file mode 100644 index 0000000000000..d6210b1285d37 --- /dev/null +++ b/addons/account_edi_ubl_cii_tax_extension/__init__.py @@ -0,0 +1,3 @@ +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import models diff --git a/addons/account_edi_ubl_cii_tax_extension/__manifest__.py b/addons/account_edi_ubl_cii_tax_extension/__manifest__.py new file mode 100644 index 0000000000000..f3bd0cb4a44e5 --- /dev/null +++ b/addons/account_edi_ubl_cii_tax_extension/__manifest__.py @@ -0,0 +1,18 @@ +# Part of Odoo. See LICENSE file for full copyright and licensing details. +{ + 'name': 'Tax extension for UBL/CII', + 'version': '1.0', + 'summary': 'Tax extension for UBL/CII', + 'description': """ + This module adds 2 useful fields on the taxes for electronic invoicing: the tax category code and the tax exemption reason code. + These fields will be read when generating Peppol Bis 3 or Factur-X xml, for instance. + """, + 'category': 'Accounting/Accounting', + 'website': 'https://www.odoo.com/app/invoicing', + 'depends': ['account_edi_ubl_cii'], + 'data': [ + 'views/account_tax_views.xml', + ], + 'installable': True, + 'license': 'LGPL-3', +} diff --git a/addons/account_edi_ubl_cii_tax_extension/i18n/account_edi_ubl_cii_tax_extension.pot b/addons/account_edi_ubl_cii_tax_extension/i18n/account_edi_ubl_cii_tax_extension.pot new file mode 100644 index 0000000000000..af7b0be6d2dfd --- /dev/null +++ b/addons/account_edi_ubl_cii_tax_extension/i18n/account_edi_ubl_cii_tax_extension.pot @@ -0,0 +1,491 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_edi_ubl_cii_tax_extension +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-09-16 07:48+0000\n" +"PO-Revision-Date: 2024-09-16 07:48+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_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_category_code__ae +msgid "AE - Vat Reverse Charge" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_category_code__b +msgid "B - Transferred (VAT), In Italy" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model,name:account_edi_ubl_cii_tax_extension.model_account_edi_common +msgid "" +"Common functions for EDI documents: generate the data, the constraints, etc" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_category_code__e +msgid "E - Exempt from Tax" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_category_code__g +msgid "G - Free export item, VAT not charged" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_category_code__k +msgid "K - VAT exempt for EEA intra-community supply of goods and services" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_category_code__l +msgid "L - Canary Islands general indirect tax" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_category_code__m +msgid "M - Tax for production, services and importation in Ceuta and Melilla" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_category_code__o +msgid "O - Services outside scope of tax" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_category_code__s +msgid "S - Standard rate" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model,name:account_edi_ubl_cii_tax_extension.model_account_tax +msgid "Tax" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields,field_description:account_edi_ubl_cii_tax_extension.field_account_tax__ubl_cii_tax_category_code +msgid "Tax Category Code" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields,field_description:account_edi_ubl_cii_tax_extension.field_account_tax__ubl_cii_tax_exemption_reason_code +msgid "Tax Exemption Reason Code" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields,help:account_edi_ubl_cii_tax_extension.field_account_tax__ubl_cii_tax_category_code +msgid "The VAT category code used for electronic invoicing purposes." +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields,help:account_edi_ubl_cii_tax_extension.field_account_tax__ubl_cii_tax_exemption_reason_code +msgid "" +"The reason why the amount is exempted from VAT or why no VAT is being " +"charged, used for electronic invoicing purposes." +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132 +msgid "" +"VATEX-EU-132 - Exempt based on article 132 of Council Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1a +msgid "" +"VATEX-EU-132-1A - Exempt based on article 132, section 1 (a) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1b +msgid "" +"VATEX-EU-132-1B - Exempt based on article 132, section 1 (b) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1c +msgid "" +"VATEX-EU-132-1C - Exempt based on article 132, section 1 (c) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1d +msgid "" +"VATEX-EU-132-1D - Exempt based on article 132, section 1 (d) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1e +msgid "" +"VATEX-EU-132-1E - Exempt based on article 132, section 1 (e) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1f +msgid "" +"VATEX-EU-132-1F - Exempt based on article 132, section 1 (f) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1g +msgid "" +"VATEX-EU-132-1G - Exempt based on article 132, section 1 (g) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1h +msgid "" +"VATEX-EU-132-1H - Exempt based on article 132, section 1 (h) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1i +msgid "" +"VATEX-EU-132-1I - Exempt based on article 132, section 1 (i) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1j +msgid "" +"VATEX-EU-132-1J - Exempt based on article 132, section 1 (j) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1k +msgid "" +"VATEX-EU-132-1K - Exempt based on article 132, section 1 (k) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1l +msgid "" +"VATEX-EU-132-1L - Exempt based on article 132, section 1 (l) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1m +msgid "" +"VATEX-EU-132-1M - Exempt based on article 132, section 1 (m) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1n +msgid "" +"VATEX-EU-132-1N - Exempt based on article 132, section 1 (n) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1o +msgid "" +"VATEX-EU-132-1O - Exempt based on article 132, section 1 (o) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1p +msgid "" +"VATEX-EU-132-1P - Exempt based on article 132, section 1 (p) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-132-1q +msgid "" +"VATEX-EU-132-1Q - Exempt based on article 132, section 1 (q) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-143 +msgid "" +"VATEX-EU-143 - Exempt based on article 143 of Council Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-143-1a +msgid "" +"VATEX-EU-143-1A - Exempt based on article 143, section 1 (a) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-143-1b +msgid "" +"VATEX-EU-143-1B - Exempt based on article 143, section 1 (b) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-143-1c +msgid "" +"VATEX-EU-143-1C - Exempt based on article 143, section 1 (c) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-143-1d +msgid "" +"VATEX-EU-143-1D - Exempt based on article 143, section 1 (d) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-143-1e +msgid "" +"VATEX-EU-143-1E - Exempt based on article 143, section 1 (e) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-143-1f +msgid "" +"VATEX-EU-143-1F - Exempt based on article 143, section 1 (f) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-143-1fa +msgid "" +"VATEX-EU-143-1FA - Exempt based on article 143, section 1 (fa) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-143-1g +msgid "" +"VATEX-EU-143-1G - Exempt based on article 143, section 1 (g) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-143-1h +msgid "" +"VATEX-EU-143-1H - Exempt based on article 143, section 1 (h) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-143-1i +msgid "" +"VATEX-EU-143-1I - Exempt based on article 143, section 1 (i) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-143-1j +msgid "" +"VATEX-EU-143-1J - Exempt based on article 143, section 1 (j) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-143-1k +msgid "" +"VATEX-EU-143-1K - Exempt based on article 143, section 1 (k) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-143-1l +msgid "" +"VATEX-EU-143-1L - Exempt based on article 143, section 1 (l) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-148 +msgid "" +"VATEX-EU-148 - Exempt based on article 148 of Council Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-148-a +msgid "" +"VATEX-EU-148-A - Exempt based on article 148, section (a) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-148-b +msgid "" +"VATEX-EU-148-B - Exempt based on article 148, section (b) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-148-c +msgid "" +"VATEX-EU-148-C - Exempt based on article 148, section (c) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-148-d +msgid "" +"VATEX-EU-148-D - Exempt based on article 148, section (d) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-148-e +msgid "" +"VATEX-EU-148-E - Exempt based on article 148, section (e) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-148-f +msgid "" +"VATEX-EU-148-F - Exempt based on article 148, section (f) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-148-g +msgid "" +"VATEX-EU-148-G - Exempt based on article 148, section (g) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-151 +msgid "" +"VATEX-EU-151 - Exempt based on article 151 of Council Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-151-1a +msgid "" +"VATEX-EU-151-1A - Exempt based on article 151, section 1 (a) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-151-1aa +msgid "" +"VATEX-EU-151-1AA - Exempt based on article 151, section 1 (aa) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-151-1b +msgid "" +"VATEX-EU-151-1B - Exempt based on article 151, section 1 (b) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-151-1c +msgid "" +"VATEX-EU-151-1C - Exempt based on article 151, section 1 (c) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-151-1d +msgid "" +"VATEX-EU-151-1D - Exempt based on article 151, section 1 (d) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-151-1e +msgid "" +"VATEX-EU-151-1E - Exempt based on article 151, section 1 (e) of Council " +"Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-309 +msgid "" +"VATEX-EU-309 - Exempt based on article 309 of Council Directive 2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex-eu-79-c +msgid "" +"VATEX-EU-79-C - Exempt based on article 79, point c of Council Directive " +"2006/112/EC" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex_eu_ae +msgid "VATEX-EU-AE - Reverse charge" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex_eu_d +msgid "" +"VATEX-EU-D - Intra-Community acquisition from second hand means of transport" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex_eu_f +msgid "VATEX-EU-F - Intra-Community acquisition of second hand goods" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex_eu_g +msgid "VATEX-EU-G - Export outside the EU" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex_eu_i +msgid "VATEX-EU-I - Intra-Community acquisition of works of art" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex_eu_ic +msgid "VATEX-EU-IC - Intra-Community supply" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex_eu_j +msgid "" +"VATEX-EU-J - Intra-Community acquisition of collectors items and antiques" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex_eu_o +msgid "VATEX-EU-O - Not subject to VAT" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex_fr-cnwvat +msgid "" +"VATEX-FR-CNWVAT - France domestic Credit Notes without VAT, due to supplier " +"forfeit of VAT for discount" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_exemption_reason_code__vatex_fr-franchise +msgid "VATEX-FR-FRANCHISE - France domestic VAT franchise in base" +msgstr "" + +#. module: account_edi_ubl_cii_tax_extension +#: model:ir.model.fields.selection,name:account_edi_ubl_cii_tax_extension.selection__account_tax__ubl_cii_tax_category_code__z +msgid "Z - Zero rated goods" +msgstr "" diff --git a/addons/account_edi_ubl_cii_tax_extension/models/__init__.py b/addons/account_edi_ubl_cii_tax_extension/models/__init__.py new file mode 100644 index 0000000000000..c05dfd8cb57b1 --- /dev/null +++ b/addons/account_edi_ubl_cii_tax_extension/models/__init__.py @@ -0,0 +1,2 @@ +from . import account_tax +from . import account_edi_common diff --git a/addons/account_edi_ubl_cii_tax_extension/models/account_edi_common.py b/addons/account_edi_ubl_cii_tax_extension/models/account_edi_common.py new file mode 100644 index 0000000000000..8c9141576a6d2 --- /dev/null +++ b/addons/account_edi_ubl_cii_tax_extension/models/account_edi_common.py @@ -0,0 +1,77 @@ +from odoo import models + +TAX_EXEMPTION_MAPPING = { + 'VATEX-EU-79-C': 'Exempt based on article 79, point c of Council Directive 2006/112/EC', + 'VATEX-EU-132': 'Exempt based on article 132 of Council Directive 2006/112/EC', + 'VATEX-EU-132-1A': 'Exempt based on article 132, section 1 (a) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1B': 'Exempt based on article 132, section 1 (b) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1C': 'Exempt based on article 132, section 1 (c) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1D': 'Exempt based on article 132, section 1 (d) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1E': 'Exempt based on article 132, section 1 (e) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1F': 'Exempt based on article 132, section 1 (f) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1G': 'Exempt based on article 132, section 1 (g) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1H': 'Exempt based on article 132, section 1 (h) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1I': 'Exempt based on article 132, section 1 (i) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1J': 'Exempt based on article 132, section 1 (j) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1K': 'Exempt based on article 132, section 1 (k) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1L': 'Exempt based on article 132, section 1 (l) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1M': 'Exempt based on article 132, section 1 (m) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1N': 'Exempt based on article 132, section 1 (n) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1O': 'Exempt based on article 132, section 1 (o) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1P': 'Exempt based on article 132, section 1 (p) of Council Directive 2006/112/EC', + 'VATEX-EU-132-1Q': 'Exempt based on article 132, section 1 (q) of Council Directive 2006/112/EC', + 'VATEX-EU-143': 'Exempt based on article 143 of Council Directive 2006/112/EC', + 'VATEX-EU-143-1A': 'Exempt based on article 143, section 1 (a) of Council Directive 2006/112/EC', + 'VATEX-EU-143-1B': 'Exempt based on article 143, section 1 (b) of Council Directive 2006/112/EC', + 'VATEX-EU-143-1C': 'Exempt based on article 143, section 1 (c) of Council Directive 2006/112/EC', + 'VATEX-EU-143-1D': 'Exempt based on article 143, section 1 (d) of Council Directive 2006/112/EC', + 'VATEX-EU-143-1E': 'Exempt based on article 143, section 1 (e) of Council Directive 2006/112/EC', + 'VATEX-EU-143-1F': 'Exempt based on article 143, section 1 (f) of Council Directive 2006/112/EC', + 'VATEX-EU-143-1FA': 'Exempt based on article 143, section 1 (fa) of Council Directive 2006/112/EC', + 'VATEX-EU-143-1G': 'Exempt based on article 143, section 1 (g) of Council Directive 2006/112/EC', + 'VATEX-EU-143-1H': 'Exempt based on article 143, section 1 (h) of Council Directive 2006/112/EC', + 'VATEX-EU-143-1I': 'Exempt based on article 143, section 1 (i) of Council Directive 2006/112/EC', + 'VATEX-EU-143-1J': 'Exempt based on article 143, section 1 (j) of Council Directive 2006/112/EC', + 'VATEX-EU-143-1K': 'Exempt based on article 143, section 1 (k) of Council Directive 2006/112/EC', + 'VATEX-EU-143-1L': 'Exempt based on article 143, section 1 (l) of Council Directive 2006/112/EC', + 'VATEX-EU-148': 'Exempt based on article 148 of Council Directive 2006/112/EC', + 'VATEX-EU-148-A': 'Exempt based on article 148, section (a) of Council Directive 2006/112/EC', + 'VATEX-EU-148-B': 'Exempt based on article 148, section (b) of Council Directive 2006/112/EC', + 'VATEX-EU-148-C': 'Exempt based on article 148, section (c) of Council Directive 2006/112/EC', + 'VATEX-EU-148-D': 'Exempt based on article 148, section (d) of Council Directive 2006/112/EC', + 'VATEX-EU-148-E': 'Exempt based on article 148, section (e) of Council Directive 2006/112/EC', + 'VATEX-EU-148-F': 'Exempt based on article 148, section (f) of Council Directive 2006/112/EC', + 'VATEX-EU-148-G': 'Exempt based on article 148, section (g) of Council Directive 2006/112/EC', + 'VATEX-EU-151': 'Exempt based on article 151 of Council Directive 2006/112/EC', + 'VATEX-EU-151-1A': 'Exempt based on article 151, section 1 (a) of Council Directive 2006/112/EC', + 'VATEX-EU-151-1AA': 'Exempt based on article 151, section 1 (aa) of Council Directive 2006/112/EC', + 'VATEX-EU-151-1B': 'Exempt based on article 151, section 1 (b) of Council Directive 2006/112/EC', + 'VATEX-EU-151-1C': 'Exempt based on article 151, section 1 (c) of Council Directive 2006/112/EC', + 'VATEX-EU-151-1D': 'Exempt based on article 151, section 1 (d) of Council Directive 2006/112/EC', + 'VATEX-EU-151-1E': 'Exempt based on article 151, section 1 (e) of Council Directive 2006/112/EC', + 'VATEX-EU-309': 'Exempt based on article 309 of Council Directive 2006/112/EC', + 'VATEX-EU-AE': 'Reverse charge', + 'VATEX-EU-D': 'Intra-Community acquisition from second hand means of transport', + 'VATEX-EU-F': 'Intra-Community acquisition of second hand goods', + 'VATEX-EU-G': 'Export outside the EU', + 'VATEX-EU-I': 'Intra-Community acquisition of works of art', + 'VATEX-EU-IC': 'Intra-Community supply', + 'VATEX-EU-O': 'Not subject to VAT', + 'VATEX-EU-J': 'Intra-Community acquisition of collectors items and antiques', + 'VATEX-FR-FRANCHISE': 'France domestic VAT franchise in base', + 'VATEX-FR-CNWVAT': 'France domestic Credit Notes without VAT, due to supplier forfeit of VAT for discount', +} + + +class AccountEdiCommon(models.AbstractModel): + _inherit = "account.edi.common" + + def _get_tax_unece_codes(self, invoice, tax): + if tax.ubl_cii_tax_category_code: + tax_exemption_reason = TAX_EXEMPTION_MAPPING.get(tax.ubl_cii_tax_exemption_reason_code) + return { + 'tax_category_code': tax.ubl_cii_tax_category_code, + 'tax_exemption_reason_code': tax.ubl_cii_tax_exemption_reason_code, + 'tax_exemption_reason': tax_exemption_reason, + } + return super()._get_tax_unece_codes(invoice, tax) diff --git a/addons/account_edi_ubl_cii_tax_extension/models/account_tax.py b/addons/account_edi_ubl_cii_tax_extension/models/account_tax.py new file mode 100644 index 0000000000000..caeda6eeeeeaf --- /dev/null +++ b/addons/account_edi_ubl_cii_tax_extension/models/account_tax.py @@ -0,0 +1,97 @@ +from odoo import api, fields, models + + +class AccountTax(models.Model): + _inherit = 'account.tax' + + ubl_cii_tax_category_code = fields.Selection( + help="The VAT category code used for electronic invoicing purposes.", + string="Tax Category Code", + selection=[ + ('AE', 'AE - Vat Reverse Charge'), + ('E', 'E - Exempt from Tax'), + ('S', 'S - Standard rate'), + ('Z', 'Z - Zero rated goods'), + ('G', 'G - Free export item, VAT not charged'), + ('O', 'O - Services outside scope of tax'), + ('K', 'K - VAT exempt for EEA intra-community supply of goods and services'), + ('L', 'L - Canary Islands general indirect tax'), + ('M', 'M - Tax for production, services and importation in Ceuta and Melilla'), + ('B', 'B - Transferred (VAT), In Italy') + ] + ) + ubl_cii_tax_exemption_reason_code = fields.Selection( + help="The reason why the amount is exempted from VAT or why no VAT is being charged, used for electronic invoicing purposes.", + string="Tax Exemption Reason Code", + selection=[ + ('VATEX-EU-79-C', 'VATEX-EU-79-C - Exempt based on article 79, point c of Council Directive 2006/112/EC'), + ('VATEX-EU-132', 'VATEX-EU-132 - Exempt based on article 132 of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1A', 'VATEX-EU-132-1A - Exempt based on article 132, section 1 (a) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1B', 'VATEX-EU-132-1B - Exempt based on article 132, section 1 (b) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1C', 'VATEX-EU-132-1C - Exempt based on article 132, section 1 (c) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1D', 'VATEX-EU-132-1D - Exempt based on article 132, section 1 (d) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1E', 'VATEX-EU-132-1E - Exempt based on article 132, section 1 (e) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1F', 'VATEX-EU-132-1F - Exempt based on article 132, section 1 (f) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1G', 'VATEX-EU-132-1G - Exempt based on article 132, section 1 (g) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1H', 'VATEX-EU-132-1H - Exempt based on article 132, section 1 (h) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1I', 'VATEX-EU-132-1I - Exempt based on article 132, section 1 (i) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1J', 'VATEX-EU-132-1J - Exempt based on article 132, section 1 (j) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1K', 'VATEX-EU-132-1K - Exempt based on article 132, section 1 (k) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1L', 'VATEX-EU-132-1L - Exempt based on article 132, section 1 (l) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1M', 'VATEX-EU-132-1M - Exempt based on article 132, section 1 (m) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1N', 'VATEX-EU-132-1N - Exempt based on article 132, section 1 (n) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1O', 'VATEX-EU-132-1O - Exempt based on article 132, section 1 (o) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1P', 'VATEX-EU-132-1P - Exempt based on article 132, section 1 (p) of Council Directive 2006/112/EC'), + ('VATEX-EU-132-1Q', 'VATEX-EU-132-1Q - Exempt based on article 132, section 1 (q) of Council Directive 2006/112/EC'), + ('VATEX-EU-143', 'VATEX-EU-143 - Exempt based on article 143 of Council Directive 2006/112/EC'), + ('VATEX-EU-143-1A', 'VATEX-EU-143-1A - Exempt based on article 143, section 1 (a) of Council Directive 2006/112/EC'), + ('VATEX-EU-143-1B', 'VATEX-EU-143-1B - Exempt based on article 143, section 1 (b) of Council Directive 2006/112/EC'), + ('VATEX-EU-143-1C', 'VATEX-EU-143-1C - Exempt based on article 143, section 1 (c) of Council Directive 2006/112/EC'), + ('VATEX-EU-143-1D', 'VATEX-EU-143-1D - Exempt based on article 143, section 1 (d) of Council Directive 2006/112/EC'), + ('VATEX-EU-143-1E', 'VATEX-EU-143-1E - Exempt based on article 143, section 1 (e) of Council Directive 2006/112/EC'), + ('VATEX-EU-143-1F', 'VATEX-EU-143-1F - Exempt based on article 143, section 1 (f) of Council Directive 2006/112/EC'), + ('VATEX-EU-143-1FA', 'VATEX-EU-143-1FA - Exempt based on article 143, section 1 (fa) of Council Directive 2006/112/EC'), + ('VATEX-EU-143-1G', 'VATEX-EU-143-1G - Exempt based on article 143, section 1 (g) of Council Directive 2006/112/EC'), + ('VATEX-EU-143-1H', 'VATEX-EU-143-1H - Exempt based on article 143, section 1 (h) of Council Directive 2006/112/EC'), + ('VATEX-EU-143-1I', 'VATEX-EU-143-1I - Exempt based on article 143, section 1 (i) of Council Directive 2006/112/EC'), + ('VATEX-EU-143-1J', 'VATEX-EU-143-1J - Exempt based on article 143, section 1 (j) of Council Directive 2006/112/EC'), + ('VATEX-EU-143-1K', 'VATEX-EU-143-1K - Exempt based on article 143, section 1 (k) of Council Directive 2006/112/EC'), + ('VATEX-EU-143-1L', 'VATEX-EU-143-1L - Exempt based on article 143, section 1 (l) of Council Directive 2006/112/EC'), + ('VATEX-EU-148', 'VATEX-EU-148 - Exempt based on article 148 of Council Directive 2006/112/EC'), + ('VATEX-EU-148-A', 'VATEX-EU-148-A - Exempt based on article 148, section (a) of Council Directive 2006/112/EC'), + ('VATEX-EU-148-B', 'VATEX-EU-148-B - Exempt based on article 148, section (b) of Council Directive 2006/112/EC'), + ('VATEX-EU-148-C', 'VATEX-EU-148-C - Exempt based on article 148, section (c) of Council Directive 2006/112/EC'), + ('VATEX-EU-148-D', 'VATEX-EU-148-D - Exempt based on article 148, section (d) of Council Directive 2006/112/EC'), + ('VATEX-EU-148-E', 'VATEX-EU-148-E - Exempt based on article 148, section (e) of Council Directive 2006/112/EC'), + ('VATEX-EU-148-F', 'VATEX-EU-148-F - Exempt based on article 148, section (f) of Council Directive 2006/112/EC'), + ('VATEX-EU-148-G', 'VATEX-EU-148-G - Exempt based on article 148, section (g) of Council Directive 2006/112/EC'), + ('VATEX-EU-151', 'VATEX-EU-151 - Exempt based on article 151 of Council Directive 2006/112/EC'), + ('VATEX-EU-151-1A', 'VATEX-EU-151-1A - Exempt based on article 151, section 1 (a) of Council Directive 2006/112/EC'), + ('VATEX-EU-151-1AA', 'VATEX-EU-151-1AA - Exempt based on article 151, section 1 (aa) of Council Directive 2006/112/EC'), + ('VATEX-EU-151-1B', 'VATEX-EU-151-1B - Exempt based on article 151, section 1 (b) of Council Directive 2006/112/EC'), + ('VATEX-EU-151-1C', 'VATEX-EU-151-1C - Exempt based on article 151, section 1 (c) of Council Directive 2006/112/EC'), + ('VATEX-EU-151-1D', 'VATEX-EU-151-1D - Exempt based on article 151, section 1 (d) of Council Directive 2006/112/EC'), + ('VATEX-EU-151-1E', 'VATEX-EU-151-1E - Exempt based on article 151, section 1 (e) of Council Directive 2006/112/EC'), + ('VATEX-EU-309', 'VATEX-EU-309 - Exempt based on article 309 of Council Directive 2006/112/EC'), + ('VATEX_EU_AE', 'VATEX-EU-AE - Reverse charge'), + ('VATEX_EU_D', 'VATEX-EU-D - Intra-Community acquisition from second hand means of transport'), + ('VATEX_EU_F', 'VATEX-EU-F - Intra-Community acquisition of second hand goods'), + ('VATEX_EU_G', 'VATEX-EU-G - Export outside the EU'), + ('VATEX_EU_I', 'VATEX-EU-I - Intra-Community acquisition of works of art'), + ('VATEX_EU_IC', 'VATEX-EU-IC - Intra-Community supply'), + ('VATEX_EU_O', 'VATEX-EU-O - Not subject to VAT'), + ('VATEX_EU_J', 'VATEX-EU-J - Intra-Community acquisition of collectors items and antiques'), + ('VATEX_FR-FRANCHISE', 'VATEX-FR-FRANCHISE - France domestic VAT franchise in base'), + ('VATEX_FR-CNWVAT', 'VATEX-FR-CNWVAT - France domestic Credit Notes without VAT, due to supplier forfeit of VAT for discount'), + ] + ) + + def _requires_exemption_reason(self): + self.ensure_one() + return self.ubl_cii_tax_category_code in ['AE', 'E', 'G', 'O', 'K'] + + @api.onchange("ubl_cii_tax_category_code") + def _onchange_ubl_cii_tax_category_code(self): + for tax in self: + if not tax._requires_exemption_reason(): + tax.ubl_cii_tax_exemption_reason_code = False diff --git a/addons/account_edi_ubl_cii_tax_extension/tests/__init__.py b/addons/account_edi_ubl_cii_tax_extension/tests/__init__.py new file mode 100644 index 0000000000000..94de31e8a5ac6 --- /dev/null +++ b/addons/account_edi_ubl_cii_tax_extension/tests/__init__.py @@ -0,0 +1 @@ +from . import test_ubl_cii_tax_extension diff --git a/addons/account_edi_ubl_cii_tax_extension/tests/test_ubl_cii_tax_extension.py b/addons/account_edi_ubl_cii_tax_extension/tests/test_ubl_cii_tax_extension.py new file mode 100644 index 0000000000000..79fe0bbd6e05b --- /dev/null +++ b/addons/account_edi_ubl_cii_tax_extension/tests/test_ubl_cii_tax_extension.py @@ -0,0 +1,36 @@ +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from lxml import etree +from odoo import Command +from odoo.addons.account.tests.common import AccountTestInvoicingCommon +from odoo.tests import tagged + + +@tagged('post_install', '-at_install') +class TestAccountEdiUblCiiTaxExtension(AccountTestInvoicingCommon): + + @classmethod + def setUpClass(cls, chart_template_ref=None): + super().setUpClass(chart_template_ref=chart_template_ref) + + cls.reverse_charge_tax = cls.company_data['default_tax_sale'].copy({'name': 'Reverse charge tax', 'ubl_cii_tax_category_code': 'AE', 'ubl_cii_tax_exemption_reason_code': 'VATEX_EU_AE'}) + cls.zero_rated_tax = cls.company_data['default_tax_sale'].copy({'name': 'Zero rated tax', 'ubl_cii_tax_category_code': 'Z'}) + cls.prod_tax = cls.company_data['default_tax_sale'].copy({'name': 'Production tax', 'ubl_cii_tax_category_code': 'M'}) + cls.free_export_tax = cls.company_data['default_tax_sale'].copy({'name': 'Free export tax', 'ubl_cii_tax_category_code': 'G', 'ubl_cii_tax_exemption_reason_code': 'VATEX-EU-132-1G'}) + + def test_classified_tax_category_codes(self): + ubl_taxes = (self.reverse_charge_tax + self.zero_rated_tax + self.prod_tax + self.free_export_tax) + # test tax by tax then with multiple taxes + tax_list = list(ubl_taxes) + [ubl_taxes] + for taxes in tax_list: + invoice = self.env["account.move"].create({ + "partner_id": self.partner_a.id, + "move_type": "out_invoice", + "invoice_line_ids": [Command.create({"name": "Test product", "price_unit": 100, "tax_ids": [Command.set(taxes.ids)]})], + }) + invoice.action_post() + xml = self.env['account.edi.xml.ubl_bis3']._export_invoice(invoice)[0] + root = etree.fromstring(xml) + for tax, node in zip(taxes, root.findall('.//{*}Item/{*}ClassifiedTaxCategory')): + self.assertEqual(node.findtext('.//{*}ID') or False, tax.ubl_cii_tax_category_code) + self.assertEqual(node.findtext('.//{*}TaxExemptionReasonCode') or False, tax.ubl_cii_tax_exemption_reason_code) diff --git a/addons/account_edi_ubl_cii_tax_extension/views/account_tax_views.xml b/addons/account_edi_ubl_cii_tax_extension/views/account_tax_views.xml new file mode 100644 index 0000000000000..a51064ea765f2 --- /dev/null +++ b/addons/account_edi_ubl_cii_tax_extension/views/account_tax_views.xml @@ -0,0 +1,17 @@ + + + + account.tax.form.inherit + account.tax + + + + + + + + + From 83f11aa16524fa39c355c18ed626f07fd932b99f Mon Sep 17 00:00:00 2001 From: Harsh Modi Date: Mon, 16 Sep 2024 15:24:31 +0530 Subject: [PATCH 10/15] [FIX] l10n_in_{sale,purchase}_stock: fix price unit compute with different currency Before this commit: While generating E-waybill from a SO/PO with different currency the price unit in E-waybill is displayed incorrect in INR, the currency conversion rate is not applied and the price unit is displayed as it is in INR which is incorrect After this commit: We resolve the above issue. Now the currency conversation rate is applied correctly on the price unit while generating E-waybill from SO/PO closes odoo/odoo#180289 Signed-off-by: Josse Colpaert (jco) --- addons/l10n_in_purchase_stock/models/stock_move.py | 9 ++++++++- addons/l10n_in_sale_stock/models/stock_move.py | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/addons/l10n_in_purchase_stock/models/stock_move.py b/addons/l10n_in_purchase_stock/models/stock_move.py index 5d9c415950c9a..5a4465e1473c4 100644 --- a/addons/l10n_in_purchase_stock/models/stock_move.py +++ b/addons/l10n_in_purchase_stock/models/stock_move.py @@ -10,7 +10,14 @@ def _l10n_in_get_product_price_unit(self): self.ensure_one() if line_id := self.purchase_line_id: if qty := line_id.product_qty: - return line_id.price_subtotal / qty + company_id = line_id.company_id + return line_id.currency_id._convert( + line_id.price_subtotal / qty, + company_id.currency_id, + company_id, + self.date, + round=False + ) return 0.00 return super()._l10n_in_get_product_price_unit() diff --git a/addons/l10n_in_sale_stock/models/stock_move.py b/addons/l10n_in_sale_stock/models/stock_move.py index bd7ed6db917f8..52799086c1ffc 100644 --- a/addons/l10n_in_sale_stock/models/stock_move.py +++ b/addons/l10n_in_sale_stock/models/stock_move.py @@ -10,7 +10,14 @@ def _l10n_in_get_product_price_unit(self): self.ensure_one() if line_id := self.sale_line_id: if qty := line_id.product_uom_qty: - return line_id.price_subtotal / qty + company_id = line_id.company_id + return line_id.currency_id._convert( + line_id.price_subtotal / qty, + company_id.currency_id, + company_id, + self.date, + round=False + ) return 0.00 return super()._l10n_in_get_product_price_unit() From 03ae163b69ddf0b1858817cd5b4bea036a5d528d Mon Sep 17 00:00:00 2001 From: guva-odoo Date: Thu, 12 Sep 2024 13:22:31 +0000 Subject: [PATCH 11/15] [FIX] account_edi_ubl_cii: partner information missing When uploading a bill via xml, if the file does not contain the node 'Name` in accounting parties informations, we don't set the partner at all on the bill. With this commit, if the node `Name` is missing, we fallback to the node `RegistrationName`. opw-4154071 closes odoo/odoo#180308 X-original-commit: 51bab78d14d575426eaee23ad45c83410c974c0b Signed-off-by: Julien Van Roy (juvr) Signed-off-by: Guillaume Vanleynseele (guva) --- addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py b/addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py index 31f41919ff3fc..620b35173b9bc 100644 --- a/addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py +++ b/addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py @@ -611,7 +611,8 @@ def _import_retrieve_partner_vals(self, tree, role): 'vat': self._find_value(f'.//cac:Accounting{role}Party/cac:Party//cbc:CompanyID[string-length(text()) > 5]', tree), 'phone': self._find_value(f'.//cac:Accounting{role}Party/cac:Party//cbc:Telephone', tree), 'mail': self._find_value(f'.//cac:Accounting{role}Party/cac:Party//cbc:ElectronicMail', tree), - 'name': self._find_value(f'.//cac:Accounting{role}Party/cac:Party//cbc:Name', tree), + 'name': self._find_value(f'.//cac:Accounting{role}Party/cac:Party//cbc:Name', tree) or + self._find_value(f'.//cac:Accounting{role}Party/cac:Party//cbc:RegistrationName', tree), 'country_code': self._find_value(f'.//cac:Accounting{role}Party/cac:Party//cac:Country//cbc:IdentificationCode', tree), } From d768e1d683a891854bc068ee138f9f7b2ba4a4e0 Mon Sep 17 00:00:00 2001 From: Damien Bouvy Date: Tue, 17 Sep 2024 11:50:33 +0200 Subject: [PATCH 12/15] [IMP] stock: allow custom domain in SML X2many field The custom stock.move.line's x2many field computes a domain automatically for the SML that can be selected from the stock.move records (e.g. when trying to find a specific lot, etc. to fulfill a demand). This commit makes it possible to include the domain defined on the field in the final constructed domain, making it possible to somewhat customize this behaviour without the need for a js override. Task-4116000 closes odoo/odoo#180421 Signed-off-by: Arnold Moyaux (arm) --- .../stock/static/src/fields/stock_move_line_x2_many_field.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/stock/static/src/fields/stock_move_line_x2_many_field.js b/addons/stock/static/src/fields/stock_move_line_x2_many_field.js index c5e0e9398c894..edc7aac85640d 100644 --- a/addons/stock/static/src/fields/stock_move_line_x2_many_field.js +++ b/addons/stock/static/src/fields/stock_move_line_x2_many_field.js @@ -42,10 +42,13 @@ export class SMLX2ManyField extends X2ManyField { const productName = this.props.record.data.product_id[1]; const title = _t("Add line: %s", productName); const alreadySelected = this.props.record.data.move_line_ids.records.filter((line) => line.data.quant_id?.[0]); - const domain = [ + let domain = [ ["product_id", "=", this.props.record.data.product_id[0]], ["location_id", "child_of", this.props.context.default_location_id], ]; + if (this.props.domain) { + domain = [...domain, ...this.props.domain()]; + } if (alreadySelected.length) { domain.push(["id", "not in", alreadySelected.map((line) => line.data.quant_id[0])]); } From ddc2ba3f6cbca82a6d68d4b1c0cb8464091934c1 Mon Sep 17 00:00:00 2001 From: guva-odoo Date: Tue, 17 Sep 2024 13:50:43 +0200 Subject: [PATCH 13/15] [FIX] l10n_fr: fix type of accounts 14 -> 19 On accounts from 14... to 19..., there are current liabilities while they should be non-current libialities. opw-4134510 closes odoo/odoo#180446 Signed-off-by: Antoine Dupuis (andu) --- .../data/template/account.account-fr.csv | 106 +++++++++--------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/addons/l10n_fr/data/template/account.account-fr.csv b/addons/l10n_fr/data/template/account.account-fr.csv index b348db3664105..e48fc3cfbf617 100644 --- a/addons/l10n_fr/data/template/account.account-fr.csv +++ b/addons/l10n_fr/data/template/account.account-fr.csv @@ -54,60 +54,60 @@ "pcg_13917","Investment grants credited to the profit and loss account - Enterprises and private bodies","139170","equity","","False","Subventions d'équipement inscrites au compte de résultat - Entreprises et organismes privés" "pcg_13918","Investment grants credited to the profit and loss account - Other","139180","equity","","False","Subventions d'équipement inscrites au compte de résultat - Autres" "pcg_1398","Other investment grants (same location as for Account 1391)","139800","equity","","False","Autres subventions d'investissement (même ventilation que celle du compte 1391)" -"pcg_1423","Provisions for reconstitution of mining and petroleum deposits","142300","liability_current","","False","Provisions reconstitution des gisements miniers et pétroliers" -"pcg_1424","Provisions for investment (employee profit share)","142400","liability_current","","False","Provisions pour investissement (participation des salariés)" -"pcg_1431","Regulated provisions for inventories - Price increase","143100","liability_current","","False","Provisions réglementées relatives aux stocks - Hausse de prix" -"pcg_1432","Regulated provisions for inventories - Exchange rate fluctuations","143200","liability_current","","False","Provisions réglementées relatives aux stocks - Fluctuation des cours" -"pcg_144","Tax-regulated provisions relating to other asset components","144000","liability_current","","False","Provisions réglementées relatives aux autres éléments de l'actif" -"pcg_145","Depreciation by derogation","145000","liability_current","","False","Amortissements dérogatoires" -"pcg_146","Special revaluation provision","146000","liability_current","","False","Provision spéciale de réévaluation" -"pcg_147","Capital gains reinvested","147000","liability_current","","False","Plus-values réinvesties" -"pcg_148","Other tax-regulated provisions","148000","liability_current","","False","Autres provisions réglementées" -"pcg_1511","Provisions for litigation","151100","liability_current","","False","Provisions pour litiges" -"pcg_1512","Provisions for customer warranties","151200","liability_current","","False","Provisions pour garanties données aux clients" -"pcg_1513","Provisions for losses on futures","151300","liability_current","","False","Provisions pour pertes sur marchés à terme" -"pcg_1514","Provisions for fines and penalties","151400","liability_current","","False","Provisions pour amendes et pénalités" -"pcg_1515","Provisions for foreign exchange losses","151500","liability_current","","False","Provisions pour pertes de change" -"pcg_1516","Provisions for losses on contracts","151600","liability_current","","False","Provisions pour pertes sur contrats" -"pcg_1518","Other provisions for liabilities","151800","liability_current","","False","Autres provisions pour risques" -"pcg_153","Provisions for pensions and similar obligations","153000","liability_current","","False","Provisions pour pensions et obligations similaires" -"pcg_154","Provisions for restructuring","154000","liability_current","","False","Provisions pour restructurations" -"pcg_155","Provisions for taxation","155000","liability_current","","False","Provisions pour impôts" -"pcg_156","Provisions for fixed asset renewal (concession entities)","156000","liability_current","","False","Provisions pour renouvellement des immobilisations (entreprises concessionnaires)" -"pcg_157","Provisions for deferred charges","157000","liability_current","","False","Provisions pour charges à répartir sur plusieurs exercices" -"pcg_1572","Provisions for expenses to be spread over several years - Major maintenance or overhauls","157200","liability_current","","False","Provisions pour charges à répartir sur plusieurs exercices - Gros entretien ou grandes révisions" -"pcg_1581","Provisions for remediation","158100","liability_current","","False","Provisions pour remises en état" -"pcg_161","Convertible debenture loans","161000","liability_current","","False","Emprunts obligataires convertibles" -"pcg_162","Bonds representing net liabilities given in trust","162000","liability_current","","False","Obligations représentatives de passifs nets remis en fiducie" -"pcg_163","Other debenture loans","163000","liability_current","","False","Autres emprunts obligataires" -"pcg_164","Loans from credit institutions","164000","liability_current","","False","Emprunts auprès des établissements de crédit" -"pcg_1651","Deposits","165100","liability_current","","False","Dépôts" -"pcg_1655","Sureties","165500","liability_current","","False","Cautionnements" -"pcg_1661","Employee profit sharing - Blocked accounts","166100","liability_current","","False","Participation des salariés aux résultats - Comptes bloqués" -"pcg_1662","Employee profit sharing - Profit share funds","166200","liability_current","","False","Participation des salariés aux résultats - Fonds de participation" -"pcg_1671","Loans and debts with special conditions - Issues of non-voting shares","167100","liability_current","","False","Emprunts et dettes assortis de conditions particulières - Emissions de titres participatifs" -"pcg_1674","Loans and debts with special conditions - Advances by the state subject to conditions","167400","liability_current","","False","Emprunts et dettes assortis de conditions particulières - Avances conditionnées de l'État" -"pcg_1675","Loans and debts with special conditions - Participating loans","167500","liability_current","","False","Prêts participatifs" -"pcg_1681","Other loans and similar debts payable - Other loans","168100","liability_current","","False","Autres emprunts et dettes assimilées - Autres emprunts" -"pcg_1685","Other loans and similar debts payable - Capitalised life annuities","168500","liability_current","","False","Autres emprunts et dettes assimilées - Rentes viagères capitalisées" -"pcg_1687","Other loans and similar debts payable - Other debts payable","168700","liability_current","","False","Autres emprunts et dettes assimilées - Autres dettes" -"pcg_1688","Accrued interest","168800","liability_current","","False","Intérêts courus" -"pcg_16881","Accrued interest on convertible debenture loans","168810","liability_current","","False","Intérêts courus sur emprunts obligataires convertibles" -"pcg_16883","Accrued interest on other debenture loans","168830","liability_current","","False","Intérêts courus sur autres emprunts obligataires" -"pcg_16884","Accrued interest on loans from credit institutions","168840","liability_current","","False","Intérêts courus sur emprunts auprès des établissements de crédit" -"pcg_16885","Accrued interest on deposits and sureties received","168850","liability_current","","False","Intérêts courus sur dépôts et cautionnements reçus" -"pcg_16886","Accrued interest on employee profit share","168860","liability_current","","False","Intérêts courus sur participation des salariés aux résultats" -"pcg_16887","Accrued interest on loans and debts payable subject to particular conditions","168870","liability_current","","False","Intérêts courus sur emprunts et dettes assortis de conditions particulières" -"pcg_16888","Accrued interest on other loans and similar debts payable","168880","liability_current","","False","Intérêts courus sur autres emprunts et dettes assimilées" +"pcg_1423","Provisions for reconstitution of mining and petroleum deposits","142300","liability_non_current","","False","Provisions reconstitution des gisements miniers et pétroliers" +"pcg_1424","Provisions for investment (employee profit share)","142400","liability_non_current","","False","Provisions pour investissement (participation des salariés)" +"pcg_1431","Regulated provisions for inventories - Price increase","143100","liability_non_current","","False","Provisions réglementées relatives aux stocks - Hausse de prix" +"pcg_1432","Regulated provisions for inventories - Exchange rate fluctuations","143200","liability_non_current","","False","Provisions réglementées relatives aux stocks - Fluctuation des cours" +"pcg_144","Tax-regulated provisions relating to other asset components","144000","liability_non_current","","False","Provisions réglementées relatives aux autres éléments de l'actif" +"pcg_145","Depreciation by derogation","145000","liability_non_current","","False","Amortissements dérogatoires" +"pcg_146","Special revaluation provision","146000","liability_non_current","","False","Provision spéciale de réévaluation" +"pcg_147","Capital gains reinvested","147000","liability_non_current","","False","Plus-values réinvesties" +"pcg_148","Other tax-regulated provisions","148000","liability_non_current","","False","Autres provisions réglementées" +"pcg_1511","Provisions for litigation","151100","liability_non_current","","False","Provisions pour litiges" +"pcg_1512","Provisions for customer warranties","151200","liability_non_current","","False","Provisions pour garanties données aux clients" +"pcg_1513","Provisions for losses on futures","151300","liability_non_current","","False","Provisions pour pertes sur marchés à terme" +"pcg_1514","Provisions for fines and penalties","151400","liability_non_current","","False","Provisions pour amendes et pénalités" +"pcg_1515","Provisions for foreign exchange losses","151500","liability_non_current","","False","Provisions pour pertes de change" +"pcg_1516","Provisions for losses on contracts","151600","liability_non_current","","False","Provisions pour pertes sur contrats" +"pcg_1518","Other provisions for liabilities","151800","liability_non_current","","False","Autres provisions pour risques" +"pcg_153","Provisions for pensions and similar obligations","153000","liability_non_current","","False","Provisions pour pensions et obligations similaires" +"pcg_154","Provisions for restructuring","154000","liability_non_current","","False","Provisions pour restructurations" +"pcg_155","Provisions for taxation","155000","liability_non_current","","False","Provisions pour impôts" +"pcg_156","Provisions for fixed asset renewal (concession entities)","156000","liability_non_current","","False","Provisions pour renouvellement des immobilisations (entreprises concessionnaires)" +"pcg_157","Provisions for deferred charges","157000","liability_non_current","","False","Provisions pour charges à répartir sur plusieurs exercices" +"pcg_1572","Provisions for expenses to be spread over several years - Major maintenance or overhauls","157200","liability_non_current","","False","Provisions pour charges à répartir sur plusieurs exercices - Gros entretien ou grandes révisions" +"pcg_1581","Provisions for remediation","158100","liability_non_current","","False","Provisions pour remises en état" +"pcg_161","Convertible debenture loans","161000","liability_non_current","","False","Emprunts obligataires convertibles" +"pcg_162","Bonds representing net liabilities given in trust","162000","liability_non_current","","False","Obligations représentatives de passifs nets remis en fiducie" +"pcg_163","Other debenture loans","163000","liability_non_current","","False","Autres emprunts obligataires" +"pcg_164","Loans from credit institutions","164000","liability_non_current","","False","Emprunts auprès des établissements de crédit" +"pcg_1651","Deposits","165100","liability_non_current","","False","Dépôts" +"pcg_1655","Sureties","165500","liability_non_current","","False","Cautionnements" +"pcg_1661","Employee profit sharing - Blocked accounts","166100","liability_non_current","","False","Participation des salariés aux résultats - Comptes bloqués" +"pcg_1662","Employee profit sharing - Profit share funds","166200","liability_non_current","","False","Participation des salariés aux résultats - Fonds de participation" +"pcg_1671","Loans and debts with special conditions - Issues of non-voting shares","167100","liability_non_current","","False","Emprunts et dettes assortis de conditions particulières - Emissions de titres participatifs" +"pcg_1674","Loans and debts with special conditions - Advances by the state subject to conditions","167400","liability_non_current","","False","Emprunts et dettes assortis de conditions particulières - Avances conditionnées de l'État" +"pcg_1675","Loans and debts with special conditions - Participating loans","167500","liability_non_current","","False","Prêts participatifs" +"pcg_1681","Other loans and similar debts payable - Other loans","168100","liability_non_current","","False","Autres emprunts et dettes assimilées - Autres emprunts" +"pcg_1685","Other loans and similar debts payable - Capitalised life annuities","168500","liability_non_current","","False","Autres emprunts et dettes assimilées - Rentes viagères capitalisées" +"pcg_1687","Other loans and similar debts payable - Other debts payable","168700","liability_non_current","","False","Autres emprunts et dettes assimilées - Autres dettes" +"pcg_1688","Accrued interest","168800","liability_non_current","","False","Intérêts courus" +"pcg_16881","Accrued interest on convertible debenture loans","168810","liability_non_current","","False","Intérêts courus sur emprunts obligataires convertibles" +"pcg_16883","Accrued interest on other debenture loans","168830","liability_non_current","","False","Intérêts courus sur autres emprunts obligataires" +"pcg_16884","Accrued interest on loans from credit institutions","168840","liability_non_current","","False","Intérêts courus sur emprunts auprès des établissements de crédit" +"pcg_16885","Accrued interest on deposits and sureties received","168850","liability_non_current","","False","Intérêts courus sur dépôts et cautionnements reçus" +"pcg_16886","Accrued interest on employee profit share","168860","liability_non_current","","False","Intérêts courus sur participation des salariés aux résultats" +"pcg_16887","Accrued interest on loans and debts payable subject to particular conditions","168870","liability_non_current","","False","Intérêts courus sur emprunts et dettes assortis de conditions particulières" +"pcg_16888","Accrued interest on other loans and similar debts payable","168880","liability_non_current","","False","Intérêts courus sur autres emprunts et dettes assimilées" "pcg_169","Debt redemption premiums","169000","asset_current","","False","Primes de remboursement des obligations" -"pcg_171","Debts payable related to participating interests (group)","171000","liability_current","","False","Dettes rattachées à des participations (groupe)" -"pcg_174","Debts payable related to participating interests (apart from group)","174000","liability_current","","False","Dettes rattachées à des participations (hors groupe)" -"pcg_1781","Debts payable related to joint ventures - Principal","178100","liability_current","","False","Dettes rattachées à des sociétés en participation - Principal" -"pcg_1788","Debts payable related to joint ventures - Accrued interest","178800","liability_current","","False","Dettes rattachées à des sociétés en participation - Intérêts courus" -"pcg_181","Reciprocal branch accounts","181000","liability_current","","False","Comptes de liaison des établissements" -"pcg_186","Goods and services exchanged between establishments (expenses)","186000","liability_current","","False","Biens et prestations de services échangés entre établissements (charges)" -"pcg_187","Goods and services exchanged between establishments (income)","187000","liability_current","","False","Biens et prestations de services échangés entre établissements (produits)" -"pcg_188","Reciprocal joint venture accounts","188000","liability_current","","False","Comptes de liaison des sociétés en participation" +"pcg_171","Debts payable related to participating interests (group)","171000","liability_non_current","","False","Dettes rattachées à des participations (groupe)" +"pcg_174","Debts payable related to participating interests (apart from group)","174000","liability_non_current","","False","Dettes rattachées à des participations (hors groupe)" +"pcg_1781","Debts payable related to joint ventures - Principal","178100","liability_non_current","","False","Dettes rattachées à des sociétés en participation - Principal" +"pcg_1788","Debts payable related to joint ventures - Accrued interest","178800","liability_non_current","","False","Dettes rattachées à des sociétés en participation - Intérêts courus" +"pcg_181","Reciprocal branch accounts","181000","liability_non_current","","False","Comptes de liaison des établissements" +"pcg_186","Goods and services exchanged between establishments (expenses)","186000","liability_non_current","","False","Biens et prestations de services échangés entre établissements (charges)" +"pcg_187","Goods and services exchanged between establishments (income)","187000","liability_non_current","","False","Biens et prestations de services échangés entre établissements (produits)" +"pcg_188","Reciprocal joint venture accounts","188000","liability_non_current","","False","Comptes de liaison des sociétés en participation" "pcg_2011","Intangible fixed assets - Establishment costs - Incorporation costs","201100","asset_fixed","","False","Immobilisations incorporelles - Frais d'établissement - Frais de constitution" "pcg_2012","Intangible fixed assets - Establishment costs - Start-up costs","201200","asset_fixed","","False","Frais de premier établissement" "pcg_20121","Intangible fixed assets - Establishment costs - Commercial assessment costs","201210","asset_fixed","","False","Immobilisations incorporelles - Frais d'établissement - Frais de prospection" From f88716abb8e948878467649571e9d345f2669f90 Mon Sep 17 00:00:00 2001 From: "Maximilien (malb)" Date: Thu, 12 Sep 2024 11:33:17 +0200 Subject: [PATCH 14/15] [IMP] l10n_es: deferred accounts This commit will set the deferred accounts for spain template. closes odoo/odoo#180004 Task: 4181499 Signed-off-by: John Laterre (jol) --- addons/l10n_es/models/template_es_common.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/l10n_es/models/template_es_common.py b/addons/l10n_es/models/template_es_common.py index 9db2ee89e989c..d79aec73ef0af 100644 --- a/addons/l10n_es/models/template_es_common.py +++ b/addons/l10n_es/models/template_es_common.py @@ -37,6 +37,8 @@ def _get_es_common_res_company(self): 'default_cash_difference_expense_account_id': 'account_common_678', 'account_sale_tax_id': 'account_tax_template_s_iva21b', 'account_purchase_tax_id': 'account_tax_template_p_iva21_bc', + 'deferred_expense_account_id': 'account_common_480', + 'deferred_revenue_account_id': 'account_common_485', }, } From 42ab53925b140508e2aa837ce09c914b8f243b21 Mon Sep 17 00:00:00 2001 From: zel-odoo Date: Tue, 17 Sep 2024 16:16:14 +0200 Subject: [PATCH 15/15] [FIX] mail: unwanted flickering in chatwindow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the message in the chatwindow is too long, the textarea in the chatwindow is constantly showing the scorllbar. This causes the chatwindow to flicker when the user is typing a message. This commit fixes the issue by setting excatly the right class for the fake textarea in the chatwindow so that it can get the real height of the textarea. closes odoo/odoo#180483 Signed-off-by: Alexandre Kühn (aku) --- addons/mail/static/src/core/common/composer.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/mail/static/src/core/common/composer.xml b/addons/mail/static/src/core/common/composer.xml index 67d76d86614fd..e9a8422fe940c 100644 --- a/addons/mail/static/src/core/common/composer.xml +++ b/addons/mail/static/src/core/common/composer.xml @@ -38,7 +38,9 @@ }" >
-