From c8cf532b486727e87e26b6185f00c86c3ccb9153 Mon Sep 17 00:00:00 2001 From: Andreas Osim Date: Tue, 25 Feb 2025 11:02:40 +0100 Subject: [PATCH] UBL Integration --- .../account_payment_unece/README.rst | 58 ++ .../account_payment_unece/__init__.py | 3 + .../account_payment_unece/__manifest__.py | 24 + .../data/account_payment_method.xml | 12 + .../account_payment_unece/data/unece.xml | 582 ++++++++++++++++++ .../i18n/account_payment_unece.pot | 40 ++ .../account_payment_unece/models/__init__.py | 4 + .../models/account_payment_method.py | 19 + .../models/unece_code_list.py | 12 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../account_payment_unece/tests/__init__.py | 3 + .../tests/test_account_invoice.py | 94 +++ .../views/account_payment_method.xml | 29 + 13 files changed, 880 insertions(+) create mode 100644 ext/custom-addons/account_payment_unece/README.rst create mode 100644 ext/custom-addons/account_payment_unece/__init__.py create mode 100644 ext/custom-addons/account_payment_unece/__manifest__.py create mode 100644 ext/custom-addons/account_payment_unece/data/account_payment_method.xml create mode 100644 ext/custom-addons/account_payment_unece/data/unece.xml create mode 100644 ext/custom-addons/account_payment_unece/i18n/account_payment_unece.pot create mode 100644 ext/custom-addons/account_payment_unece/models/__init__.py create mode 100644 ext/custom-addons/account_payment_unece/models/account_payment_method.py create mode 100644 ext/custom-addons/account_payment_unece/models/unece_code_list.py create mode 100644 ext/custom-addons/account_payment_unece/static/description/icon.png create mode 100644 ext/custom-addons/account_payment_unece/tests/__init__.py create mode 100644 ext/custom-addons/account_payment_unece/tests/test_account_invoice.py create mode 100644 ext/custom-addons/account_payment_unece/views/account_payment_method.xml diff --git a/ext/custom-addons/account_payment_unece/README.rst b/ext/custom-addons/account_payment_unece/README.rst new file mode 100644 index 00000000..f42103d2 --- /dev/null +++ b/ext/custom-addons/account_payment_unece/README.rst @@ -0,0 +1,58 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +===================== +Account Payment UNECE +===================== + +This module adds a field *UNECE Payment Mean* on *Payment Methods* to be able to use a standard written by the `United Nations Economic Commission for Europe `_ (which has 56 members states in Europe, America and Central Asia, cf `Wikipedia `_). This standard define a codification of the payment modes, cf the `official code list `_. + +This codification is used for example in the two main international standards for electronic invoicing: + +* `Cross Industry Invoice `_ (CII), +* `Universal Business Language `_ (UBL) + +Configuration +============= + +Go to the menu *Accounting > Configuration > Management > Payment Methods* and, on each payment method, select the appropriate value for the *UNECE Code*. + +Usage +===== + + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/101/11.0 + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smash it by providing detailed and welcomed feedback. + +Credits +======= + +Contributors +------------ + +* Alexis de Lattre + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/ext/custom-addons/account_payment_unece/__init__.py b/ext/custom-addons/account_payment_unece/__init__.py new file mode 100644 index 00000000..31660d6a --- /dev/null +++ b/ext/custom-addons/account_payment_unece/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models diff --git a/ext/custom-addons/account_payment_unece/__manifest__.py b/ext/custom-addons/account_payment_unece/__manifest__.py new file mode 100644 index 00000000..cde7cbb3 --- /dev/null +++ b/ext/custom-addons/account_payment_unece/__manifest__.py @@ -0,0 +1,24 @@ +# Copyright 2016 Akretion (http://www.akretion.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +# @author Alexis de Lattre + +{ + 'name': 'Account Payment UNECE', + 'version': '11.0.1.0.1', + 'category': 'Accounting & Finance', + 'license': 'AGPL-3', + 'summary': 'UNECE nomenclature for the payment methods', + 'author': 'Akretion,Odoo Community Association (OCA)', + "website": "https://github.com/OCA/community-data-files", + 'depends': [ + 'account_payment_mode', + 'base_unece', + 'account_tax_unece' + ], + 'data': [ + 'data/unece.xml', + 'data/account_payment_method.xml', + 'views/account_payment_method.xml', + ], + 'installable': True, +} diff --git a/ext/custom-addons/account_payment_unece/data/account_payment_method.xml b/ext/custom-addons/account_payment_unece/data/account_payment_method.xml new file mode 100644 index 00000000..5c0adb03 --- /dev/null +++ b/ext/custom-addons/account_payment_unece/data/account_payment_method.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/ext/custom-addons/account_payment_unece/data/unece.xml b/ext/custom-addons/account_payment_unece/data/unece.xml new file mode 100644 index 00000000..f65676fe --- /dev/null +++ b/ext/custom-addons/account_payment_unece/data/unece.xml @@ -0,0 +1,582 @@ + + + + + + + payment_means + 1 + Instrument not defined + Not defined legally enforceable agreement between two or more parties (expressing a contractual right or a right to the payment of money). + + + + payment_means + 2 + Automated clearing house credit + A credit transaction made through the automated clearing house system. + + + + payment_means + 3 + Automated clearing house debit + A debit transaction made through the automated clearing house system. + + + + payment_means + 4 + ACH demand debit reversal + A request to reverse an ACH debit transaction to a demand deposit account. + + + + payment_means + 5 + ACH demand credit reversal + A request to reverse a credit transaction to a demand deposit account. + + + + payment_means + 6 + ACH demand credit + A credit transaction made through the ACH system to a demand deposit account. + + + + payment_means + 7 + ACH demand debit + A debit transaction made through the ACH system to a demand deposit account. + + + + payment_means + 8 + Hold + Indicates that the bank should hold the payment for collection by the beneficiary or other instructions. + + + + payment_means + 9 + National or regional clearing + Indicates that the payment should be made using the national or regional clearing. + + + + payment_means + 10 + In cash + Payment by currency (including bills and coins) in circulation, including checking account deposits. + + + + payment_means + 11 + ACH savings credit reversal + A request to reverse an ACH credit transaction to a savings account. + + + + payment_means + 12 + ACH savings debit reversal + A request to reverse an ACH debit transaction to a savings account. + + + + payment_means + 13 + ACH savings credit + A credit transaction made through the ACH system to a savings account. + + + + payment_means + 14 + ACH savings debit + A debit transaction made through the ACH system to a savings account. + + + + payment_means + 15 + Bookentry credit + A credit entry between two accounts at the same bank branch. Synonym: house credit. + + + + payment_means + 16 + Bookentry debit + A debit entry between two accounts at the same bank branch. Synonym: house debit. + + + + payment_means + 17 + ACH demand cash concentration/disbursement (CCD) credit + A credit transaction made through the ACH system to a demand deposit account using the CCD payment format. + + + + payment_means + 18 + ACH demand cash concentration/disbursement (CCD) debit + A debit transaction made through the ACH system to a demand deposit account using the CCD payment format. + + + + payment_means + 19 + ACH demand corporate trade payment (CTP) credit + A credit transaction made through the ACH system to a demand deposit account using the CTP payment format. + + + + payment_means + 20 + Cheque + Payment by a pre-printed form on which instructions are given to an account holder (a bank or building society) to pay a stated sum to a named recipient. + + + + payment_means + 21 + Banker's draft + Issue of a banker's draft in payment of the funds. + + + + payment_means + 22 + Certified banker's draft + Cheque drawn by a bank on itself or its agent. A person who owes money to another buys the draft from a bank for cash and hands it to the creditor who need have no fear that it might be dishonoured. + + + + payment_means + 23 + Bank cheque (issued by a banking or similar establishment) + Payment by a pre-printed form, which has been completed by a financial institution, on which instructions are given to an account holder (a bank or building society) to pay a stated sum to a named recipient. + + + + payment_means + 24 + Bill of exchange awaiting acceptance + Bill drawn by the creditor on the debtor but not yet accepted by the debtor. + + + + payment_means + 25 + Certified cheque + Payment by a pre-printed form stamped with the paying bank's certification on which instructions are given to an account holder (a bank or building society) to pay a stated sum to a named recipient. + + + + payment_means + 26 + Local cheque + Indicates that the cheque is given local to the recipient. + + + + payment_means + 27 + ACH demand corporate trade payment (CTP) debit + A debit transaction made through the ACH system to a demand deposit account using the CTP payment format. + + + + payment_means + 28 + ACH demand corporate trade exchange (CTX) credit + A credit transaction made through the ACH system to a demand deposit account using the CTX payment format. + + + + payment_means + 29 + ACH demand corporate trade exchange (CTX) debit + A debit transaction made through the ACH system to a demand account using the CTX payment format. + + + + payment_means + 30 + Credit transfer + Payment by credit movement of funds from one account to another. + + + + payment_means + 31 + Debit transfer + Payment by debit movement of funds from one account to another. + + + + payment_means + 32 + ACH demand cash concentration/disbursement plus (CCD+) credit + A credit transaction made through the ACH system to a demand deposit account using the CCD+ payment format. + + + + payment_means + 33 + ACH demand cash concentration/disbursement plus (CCD+) debit + A debit transaction made through the ACH system to a demand deposit account using the CCD+ payment format. + + + + payment_means + 34 + ACH prearranged payment and deposit (PPD) + A consumer credit transaction made through the ACH system to a demand deposit or savings account. + + + + payment_means + 35 + ACH savings cash concentration/disbursement (CCD) credit + A credit transaction made through the ACH system to a demand deposit or savings account. + + + + payment_means + 36 + ACH savings cash concentration/disbursement (CCD) debit + A debit transaction made through the ACH system to a savings account using the CCD payment format. + + + + payment_means + 37 + ACH savings corporate trade payment (CTP) credit + A credit transaction made through the ACH system to a savings account using the CTP payment format. + + + + payment_means + 38 + ACH savings corporate trade payment (CTP) debit + A debit transaction made through the ACH system to a savings account using the CTP payment format. + + + + payment_means + 39 + ACH savings corporate trade exchange (CTX) credit + A credit transaction made through the ACH system to a savings account using the CTX payment format. + + + + payment_means + 40 + ACH savings corporate trade exchange (CTX) debit + A debit transaction made through the ACH system to a savings account using the CTX payment format. + + + + payment_means + 41 + ACH savings cash concentration/disbursement plus (CCD+) credit + A credit transaction made through the ACH system to a savings account using the CCD+ payment format. + + + + payment_means + 42 + Payment to bank account + Payment by an arrangement for settling debts that is operated by the Post Office. + + + + payment_means + 43 + ACH savings cash concentration/disbursement plus (CCD+) debit + A debit transaction made through the ACH system to a savings account using the CCD+ payment format. + + + + payment_means + 44 + Accepted bill of exchange + Bill drawn by the creditor on the debtor and accepted by the debtor. + + + + payment_means + 45 + Referenced home-banking credit transfer + A referenced credit transfer initiated through home-banking. + + + + payment_means + 46 + Interbank debit transfer + A debit transfer via interbank means. + + + + payment_means + 47 + Home-banking debit transfer + A debit transfer initiated through home-banking. + + + + payment_means + 48 + Bank card + Payment by means of a card issued by a bank or other financial institution. + + + + payment_means + 49 + Direct debit + The amount is to be, or has been, directly debited to the customer's bank account. + + + + payment_means + 50 + Payment by postgiro + A method for the transmission of funds through the postal system rather than through the banking system. + + + + payment_means + 51 + FR, norme 6 97-Telereglement CFONB (French Organisation for Banking Standards) - Option A + A French standard procedure that allows a debtor to pay an amount due to a creditor. The creditor will forward it to its bank, which will collect the money on the bank account of the debtor. + + + + payment_means + 52 + Urgent commercial payment + Payment order which requires guaranteed processing by the most appropriate means to ensure it occurs on the requested execution date, provided that it is issued to the ordered bank before the agreed cut-off time. + + + + payment_means + 53 + Urgent Treasury Payment + Payment order or transfer which must be executed, by the most appropriate means, as urgently as possible and before urgent commercial payments. + + + + payment_means + 54 + Credit card + Payment made by means of credit card. + + + + payment_means + 55 + Debit card + Payment made by means of debit card. + + + + payment_means + 56 + Bankgiro + Payment will be, or has been, made by bankgiro. + + + + payment_means + 57 + Standing agreement + The payment means have been previously agreed between seller and buyer and thus are not stated again. + + + + payment_means + 58 + SEPA credit transfer + Credit transfer inside the Single Euro Payment Area (SEPA) system. + + + + payment_means + 59 + SEPA direct debit + Direct debit inside the Single Euro Payment Area (SEPA) system. + + + + payment_means + 60 + Promissory note + Payment by an unconditional promise in writing made by one person to another, signed by the maker, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer. + + + + payment_means + 61 + Promissory note signed by the debtor + Payment by an unconditional promise in writing made by the debtor to another person, signed by the debtor, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer. + + + + payment_means + 62 + Promissory note signed by the debtor and endorsed by a bank + Payment by an unconditional promise in writing made by the debtor to another person, signed by the debtor and endorsed by a bank, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer. + + + + payment_means + 63 + Promissory note signed by the debtor and endorsed by a third party + Payment by an unconditional promise in writing made by the debtor to another person, signed by the debtor and endorsed by a third party, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer. + + + + payment_means + 64 + Promissory note signed by a bank + Payment by an unconditional promise in writing made by the bank to another person, signed by the bank, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer. + + + + payment_means + 65 + Promissory note signed by a bank and endorsed by another bank + Payment by an unconditional promise in writing made by the bank to another person, signed by the bank and endorsed by another bank, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer. + + + + payment_means + 66 + Promissory note signed by a third party + Payment by an unconditional promise in writing made by a third party to another person, signed by the third party, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer. + + + + payment_means + 67 + Promissory note signed by a third party and endorsed by a bank + Payment by an unconditional promise in writing made by a third party to another person, signed by the third party and endorsed by a bank, engaging to pay on demand or at a fixed or determinable future time a sum certain in money, to order or to bearer. + + + + payment_means + 68 + Online payment service + Payment will be made or has been made by an online payment service. + + + + payment_means + 70 + Bill drawn by the creditor on the debtor + Bill drawn by the creditor on the debtor. + + + + payment_means + 74 + Bill drawn by the creditor on a bank + Bill drawn by the creditor on a bank. + + + + payment_means + 75 + Bill drawn by the creditor, endorsed by another bank + Bill drawn by the creditor, endorsed by another bank. + + + + payment_means + 76 + Bill drawn by the creditor on a bank and endorsed by a third party + Bill drawn by the creditor on a bank and endorsed by a third party. + + + + payment_means + 77 + Bill drawn by the creditor on a third party + Bill drawn by the creditor on a third party. + + + + payment_means + 78 + Bill drawn by creditor on third party, accepted and endorsed by bank + Bill drawn by creditor on third party, accepted and endorsed by bank. + + + + payment_means + 91 + Not transferable banker's draft + Issue a bankers draft not endorsable. + + + + payment_means + 92 + Not transferable local cheque + Issue a cheque not endorsable in payment of the funds. + + + + payment_means + 93 + Reference giro + Ordering customer tells the bank to use the payment system 'Reference giro'. Used in the Finnish national banking system. + + + + payment_means + 94 + Urgent giro + Ordering customer tells the bank to use the bank service 'Urgent Giro' when transferring the payment. Used in Finnish national banking system. + + + + payment_means + 95 + Free format giro + Ordering customer tells the ordering bank to use the bank service 'Free Format Giro' when transferring the payment. Used in Finnish national banking system. + + + + payment_means + 96 + Requested method for payment was not used + If the requested method for payment was or could not be used, this code indicates that. + + + + payment_means + 97 + Clearing between partners + Amounts which two partners owe to each other to be compensated in order to avoid useless payments. + + + + payment_means + ZZZ + Mutually defined + A code assigned within a code list to be used on an interim basis and as defined among trading partners until a precise code can be assigned to the code list. + + + + diff --git a/ext/custom-addons/account_payment_unece/i18n/account_payment_unece.pot b/ext/custom-addons/account_payment_unece/i18n/account_payment_unece.pot new file mode 100644 index 00000000..9bc3c091 --- /dev/null +++ b/ext/custom-addons/account_payment_unece/i18n/account_payment_unece.pot @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_payment_unece +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_payment_unece +#: model:ir.model,name:account_payment_unece.model_account_payment_method +msgid "Payment Methods" +msgstr "" + +#. module: account_payment_unece +#: model:ir.model.fields,help:account_payment_unece.field_account_payment_method_unece_id +msgid "Standard nomenclature of the United Nations Economic Commission for Europe (UNECE) defined in UN/EDIFACT Data Element 4461" +msgstr "" + +#. module: account_payment_unece +#: model:ir.model.fields,field_description:account_payment_unece.field_account_payment_method_unece_code +msgid "UNECE Code" +msgstr "" + +#. module: account_payment_unece +#: model:ir.model.fields,field_description:account_payment_unece.field_account_payment_method_unece_id +msgid "UNECE Payment Mean" +msgstr "" + +#. module: account_payment_unece +#: model:ir.model,name:account_payment_unece.model_unece_code_list +msgid "UNECE nomenclatures" +msgstr "" + diff --git a/ext/custom-addons/account_payment_unece/models/__init__.py b/ext/custom-addons/account_payment_unece/models/__init__.py new file mode 100644 index 00000000..4883d2f8 --- /dev/null +++ b/ext/custom-addons/account_payment_unece/models/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import unece_code_list +from . import account_payment_method diff --git a/ext/custom-addons/account_payment_unece/models/account_payment_method.py b/ext/custom-addons/account_payment_unece/models/account_payment_method.py new file mode 100644 index 00000000..d02e370b --- /dev/null +++ b/ext/custom-addons/account_payment_unece/models/account_payment_method.py @@ -0,0 +1,19 @@ +# Copyright 2016 Akretion (http://www.akretion.com) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models, fields + + +class AccountPaymentMethod(models.Model): + _inherit = 'account.payment.method' + + unece_id = fields.Many2one( + 'unece.code.list', string='UNECE Payment Mean', + domain=[('type', '=', 'payment_means')], ondelete='restrict', + help="Standard nomenclature of the United Nations Economic " + "Commission for Europe (UNECE) defined in UN/EDIFACT Data " + "Element 4461") + unece_code = fields.Char( + related='unece_id.code', store=True, readonly=True, + string='UNECE Code') diff --git a/ext/custom-addons/account_payment_unece/models/unece_code_list.py b/ext/custom-addons/account_payment_unece/models/unece_code_list.py new file mode 100644 index 00000000..add749fe --- /dev/null +++ b/ext/custom-addons/account_payment_unece/models/unece_code_list.py @@ -0,0 +1,12 @@ +# Copyright 2016 Akretion (http://www.akretion.com) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models, fields + + +class UneceCodeList(models.Model): + _inherit = 'unece.code.list' + + type = fields.Selection(selection_add=[ + ('payment_means', 'Payment Means (UNCL 4461)')]) diff --git a/ext/custom-addons/account_payment_unece/static/description/icon.png b/ext/custom-addons/account_payment_unece/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 zcmW++2RxMjAAjx~&dlBk9S+%}OXg)AGE&Cb*&}d0jUxM@u(PQx^-s)697TX`ehR4?GS^qbkof1cslKgkU)h65qZ9Oc=ml_0temigYLJfnz{IDzUf>bGs4N!v3=Z3jMq&A#7%rM5eQ#dc?k~! zVpnB`o+K7|Al`Q_U;eD$B zfJtP*jH`siUq~{KE)`jP2|#TUEFGRryE2`i0**z#*^6~AI|YzIWy$Cu#CSLW3q=GA z6`?GZymC;dCPk~rBS%eCb`5OLr;RUZ;D`}um=H)BfVIq%7VhiMr)_#G0N#zrNH|__ zc+blN2UAB0=617@>_u;MPHN;P;N#YoE=)R#i$k_`UAA>WWCcEVMh~L_ zj--gtp&|K1#58Yz*AHCTMziU1Jzt_jG0I@qAOHsk$2}yTmVkBp_eHuY$A9)>P6o~I z%aQ?!(GqeQ-Y+b0I(m9pwgi(IIZZzsbMv+9w{PFtd_<_(LA~0H(xz{=FhLB@(1&qHA5EJw1>>=%q2f&^X>IQ{!GJ4e9U z&KlB)z(84HmNgm2hg2C0>WM{E(DdPr+EeU_N@57;PC2&DmGFW_9kP&%?X4}+xWi)( z;)z%wI5>D4a*5XwD)P--sPkoY(a~WBw;E~AW`Yue4kFa^LM3X`8x|}ZUeMnqr}>kH zG%WWW>3ml$Yez?i%)2pbKPI7?5o?hydokgQyZsNEr{a|mLdt;X2TX(#B1j35xPnPW z*bMSSOauW>o;*=kO8ojw91VX!qoOQb)zHJ!odWB}d+*K?#sY_jqPdg{Sm2HdYzdEx zOGVPhVRTGPtv0o}RfVP;Nd(|CB)I;*t&QO8h zFfekr30S!-LHmV_Su-W+rEwYXJ^;6&3|L$mMC8*bQptyOo9;>Qb9Q9`ySe3%V$A*9 zeKEe+b0{#KWGp$F+tga)0RtI)nhMa-K@JS}2krK~n8vJ=Ngm?R!9G<~RyuU0d?nz# z-5EK$o(!F?hmX*2Yt6+coY`6jGbb7tF#6nHA zuKk=GGJ;ZwON1iAfG$E#Y7MnZVmrY|j0eVI(DN_MNFJmyZ|;w4tf@=CCDZ#5N_0K= z$;R~bbk?}TpfDjfB&aiQ$VA}s?P}xPERJG{kxk5~R`iRS(SK5d+Xs9swCozZISbnS zk!)I0>t=A<-^z(cmSFz3=jZ23u13X><0b)P)^1T_))Kr`e!-pb#q&J*Q`p+B6la%C zuVl&0duN<;uOsB3%T9Fp8t{ED108<+W(nOZd?gDnfNBC3>M8WE61$So|P zVvqH0SNtDTcsUdzaMDpT=Ty0pDHHNL@Z0w$Y`XO z2M-_r1S+GaH%pz#Uy0*w$Vdl=X=rQXEzO}d6J^R6zjM1u&c9vYLvLp?W7w(?np9x1 zE_0JSAJCPB%i7p*Wvg)pn5T`8k3-uR?*NT|J`eS#_#54p>!p(mLDvmc-3o0mX*mp_ zN*AeS<>#^-{S%W<*mz^!X$w_2dHWpcJ6^j64qFBft-o}o_Vx80o0>}Du;>kLts;$8 zC`7q$QI(dKYG`Wa8#wl@V4jVWBRGQ@1dr-hstpQL)Tl+aqVpGpbSfN>5i&QMXfiZ> zaA?T1VGe?rpQ@;+pkrVdd{klI&jVS@I5_iz!=UMpTsa~mBga?1r}aRBm1WS;TT*s0f0lY=JBl66Upy)-k4J}lh=P^8(SXk~0xW=T9v*B|gzIhN z>qsO7dFd~mgxAy4V?&)=5ieYq?zi?ZEoj)&2o)RLy=@hbCRcfT5jigwtQGE{L*8<@Yd{zg;CsL5mvzfDY}P-wos_6PfprFVaeqNE%h zKZhLtcQld;ZD+>=nqN~>GvROfueSzJD&BE*}XfU|H&(FssBqY=hPCt`d zH?@s2>I(|;fcW&YM6#V#!kUIP8$Nkdh0A(bEVj``-AAyYgwY~jB zT|I7Bf@%;7aL7Wf4dZ%VqF$eiaC38OV6oy3Z#TER2G+fOCd9Iaoy6aLYbPTN{XRPz z;U!V|vBf%H!}52L2gH_+j;`bTcQRXB+y9onc^wLm5wi3-Be}U>k_u>2Eg$=k!(l@I zcCg+flakT2Nej3i0yn+g+}%NYb?ta;R?(g5SnwsQ49U8Wng8d|{B+lyRcEDvR3+`O{zfmrmvFrL6acVP%yG98X zo&+VBg@px@i)%o?dG(`T;n*$S5*rnyiR#=wW}}GsAcfyQpE|>a{=$Hjg=-*_K;UtD z#z-)AXwSRY?OPefw^iI+ z)AXz#PfEjlwTes|_{sB?4(O@fg0AJ^g8gP}ex9Ucf*@_^J(s_5jJV}c)s$`Myn|Kd z$6>}#q^n{4vN@+Os$m7KV+`}c%4)4pv@06af4-x5#wj!KKb%caK{A&Y#Rfs z-po?Dcb1({W=6FKIUirH&(yg=*6aLCekcKwyfK^JN5{wcA3nhO(o}SK#!CINhI`-I z1)6&n7O&ZmyFMuNwvEic#IiOAwNkR=u5it{B9n2sAJV5pNhar=j5`*N!Na;c7g!l$ z3aYBqUkqqTJ=Re-;)s!EOeij=7SQZ3Hq}ZRds%IM*PtM$wV z@;rlc*NRK7i3y5BETSKuumEN`Xu_8GP1Ri=OKQ$@I^ko8>H6)4rjiG5{VBM>B|%`&&s^)jS|-_95&yc=GqjNo{zFkw%%HHhS~e=s zD#sfS+-?*t|J!+ozP6KvtOl!R)@@-z24}`9{QaVLD^9VCSR2b`b!KC#o;Ki<+wXB6 zx3&O0LOWcg4&rv4QG0)4yb}7BFSEg~=IR5#ZRj8kg}dS7_V&^%#Do==#`u zpy6{ox?jWuR(;pg+f@mT>#HGWHAJRRDDDv~@(IDw&R>9643kK#HN`!1vBJHnC+RM&yIh8{gG2q zA%e*U3|N0XSRa~oX-3EAneep)@{h2vvd3Xvy$7og(sayr@95+e6~Xvi1tUqnIxoIH zVWo*OwYElb#uyW{Imam6f2rGbjR!Y3`#gPqkv57dB6K^wRGxc9B(t|aYDGS=m$&S!NmCtrMMaUg(c zc2qC=2Z`EEFMW-me5B)24AqF*bV5Dr-M5ig(l-WPS%CgaPzs6p_gnCIvTJ=Y<6!gT zVt@AfYCzjjsMEGi=rDQHo0yc;HqoRNnNFeWZgcm?f;cp(6CNylj36DoL(?TS7eU#+ z7&mfr#y))+CJOXQKUMZ7QIdS9@#-}7y2K1{8)cCt0~-X0O!O?Qx#E4Og+;A2SjalQ zs7r?qn0H044=sDN$SRG$arw~n=+T_DNdSrarmu)V6@|?1-ZB#hRn`uilTGPJ@fqEy zGt(f0B+^JDP&f=r{#Y_wi#AVDf-y!RIXU^0jXsFpf>=Ji*TeqSY!H~AMbJdCGLhC) zn7Rx+sXw6uYj;WRYrLd^5IZq@6JI1C^YkgnedZEYy<&4(z%Q$5yv#Boo{AH8n$a zhb4Y3PWdr269&?V%uI$xMcUrMzl=;w<_nm*qr=c3Rl@i5wWB;e-`t7D&c-mcQl7x! zZWB`UGcw=Y2=}~wzrfLx=uet<;m3~=8I~ZRuzvMQUQdr+yTV|ATf1Uuomr__nDf=X zZ3WYJtHp_ri(}SQAPjv+Y+0=fH4krOP@S&=zZ-t1jW1o@}z;xk8 z(Nz1co&El^HK^NrhVHa-_;&88vTU>_J33=%{if;BEY*J#1n59=07jrGQ#IP>@u#3A z;!q+E1Rj3ZJ+!4bq9F8PXJ@yMgZL;>&gYA0%_Kbi8?S=XGM~dnQZQ!yBSgcZhY96H zrWnU;k)qy`rX&&xlDyA%(a1Hhi5CWkmg(`Gb%m(HKi-7Z!LKGRP_B8@`7&hdDy5n= z`OIxqxiVfX@OX1p(mQu>0Ai*v_cTMiw4qRt3~NBvr9oBy0)r>w3p~V0SCm=An6@3n)>@z!|o-$HvDK z|3D2ZMJkLE5loMKl6R^ez@Zz%S$&mbeoqH5`Bb){Ei21q&VP)hWS2tjShfFtGE+$z zzCR$P#uktu+#!w)cX!lWN1XU%K-r=s{|j?)Akf@q#3b#{6cZCuJ~gCxuMXRmI$nGtnH+-h z+GEi!*X=AP<|fG`1>MBdTb?28JYc=fGvAi2I<$B(rs$;eoJCyR6_bc~p!XR@O-+sD z=eH`-ye})I5ic1eL~TDmtfJ|8`0VJ*Yr=hNCd)G1p2MMz4C3^Mj?7;!w|Ly%JqmuW zlIEW^Ft%z?*|fpXda>Jr^1noFZEwFgVV%|*XhH@acv8rdGxeEX{M$(vG{Zw+x(ei@ zmfXb22}8-?Fi`vo-YVrTH*C?a8%M=Hv9MqVH7H^J$KsD?>!SFZ;ZsvnHr_gn=7acz z#W?0eCdVhVMWN12VV^$>WlQ?f;P^{(&pYTops|btm6aj>_Uz+hqpGwB)vWp0Cf5y< zft8-je~nn?W11plq}N)4A{l8I7$!ks_x$PXW-2XaRFswX_BnF{R#6YIwMhAgd5F9X zGmwdadS6(a^fjHtXg8=l?Rc0Sm%hk6E9!5cLVloEy4eh(=FwgP`)~I^5~pBEWo+F6 zSf2ncyMurJN91#cJTy_u8Y}@%!bq1RkGC~-bV@SXRd4F{R-*V`bS+6;W5vZ(&+I<9$;-V|eNfLa5n-6% z2(}&uGRF;p92eS*sE*oR$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(| z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4PdpwWDop%^}n;dD#K4s#DYA8SHZ z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^WYu2u5kubqmwp%drJ6 z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d} z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k&YOi-3|1QKB z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/ext/custom-addons/account_payment_unece/tests/__init__.py b/ext/custom-addons/account_payment_unece/tests/__init__.py new file mode 100644 index 00000000..383b00bc --- /dev/null +++ b/ext/custom-addons/account_payment_unece/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_account_invoice diff --git a/ext/custom-addons/account_payment_unece/tests/test_account_invoice.py b/ext/custom-addons/account_payment_unece/tests/test_account_invoice.py new file mode 100644 index 00000000..b51fba82 --- /dev/null +++ b/ext/custom-addons/account_payment_unece/tests/test_account_invoice.py @@ -0,0 +1,94 @@ +# Copyright 2017 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo.tests.common import HttpCase + + +class TestAccountInvoice(HttpCase): + + # Since odoo v9, there are no more demo invoices. + # This method is used by both account_invoice_ubl and + # account_invoice_factur-x. As those 2 modules use account_payment_unece, + # it allows to factorise the code. + # Creating a new invoice in automated tests requires so many lines of code + # that I decided to mutualise the code here. + def test_only_create_invoice( + self, product=False, qty=1, price=12.42, discount=0, + validate=True): + aio = self.env['account.invoice'] + ailo = self.env['account.invoice.line'] + aao = self.env['account.account'] + ato = self.env['account.tax'] + company = self.env.ref('base.main_company') + account_receivable = aao.search([ + ('code', '=', '411100'), + ('company_id', '=', company.id), + ], limit=1) + if not account_receivable: + account_receivable = aao.create({ + "code": '411100', + "name": "Debtors - (test)", + "company_id": company.id, + "reconcile": True, + "user_type_id": + self.env.ref('account.data_account_type_receivable').id, + }) + account_revenue = aao.search([ + ('code', '=', '707100'), + ('company_id', '=', company.id), + ], limit=1) + if not account_revenue: + account_revenue = aao.create({ + "code": '707100', + "name": "Product Sales - (test)", + "company_id": company.id, + "user_type_id": + self.env.ref('account.data_account_type_revenue').id, + }) + taxes = ato.search([ + ('company_id', '=', company.id), + ('type_tax_use', '=', 'sale'), + ('unece_type_id', '!=', False), + ('unece_categ_id', '!=', False), + ('amount_type', '=', 'percent')]) + if taxes: + tax = taxes[0] + else: + unece_type_id = self.env.ref('account_tax_unece.tax_type_vat').id + unece_categ_id = self.env.ref('account_tax_unece.tax_categ_s').id + tax = ato.create({ + 'name': u'German VAT purchase 18.0%', + 'description': 'DE-VAT-sale-18.0', + 'company_id': company.id, + 'type_tax_use': 'sale', + 'price_include': False, + 'amount': 18, + 'amount_type': 'percent', + 'unece_type_id': unece_type_id, + 'unece_categ_id': unece_categ_id, + }) + # validate invoice + invoice = aio.create({ + 'partner_id': self.env.ref("base.res_partner_2").id, + 'currency_id': self.env.ref("base.EUR").id, + 'type': 'out_invoice', + 'company_id': company.id, + 'account_id': account_receivable.id, + 'name': 'SO1242', + }) + if not product: + product = self.env.ref("product.product_product_4") + ailo.create({ + 'product_id': product.id, + 'uom_id': product.uom_id.id, + 'quantity': qty, + 'price_unit': price, + 'discount': discount, + 'invoice_id': invoice.id, + 'name': product.name, + 'account_id': account_revenue.id, + 'invoice_line_tax_ids': [(6, 0, [tax.id])], + }) + if validate: + invoice.action_invoice_open() + return invoice diff --git a/ext/custom-addons/account_payment_unece/views/account_payment_method.xml b/ext/custom-addons/account_payment_unece/views/account_payment_method.xml new file mode 100644 index 00000000..4edc09d5 --- /dev/null +++ b/ext/custom-addons/account_payment_unece/views/account_payment_method.xml @@ -0,0 +1,29 @@ + + + + + + account.payment.method + + + + + + + + + + account.payment.method + + + + + + + + +