From e6cfef70849fbd6de42e055f57f5f0948a851cf5 Mon Sep 17 00:00:00 2001 From: "Paolo Gatti (pgi)" Date: Fri, 16 Feb 2024 18:28:43 +0100 Subject: [PATCH] [IMP] l10n_it, l10n_it_edi: Internal Reverse Charge, import & export Add support for Internal Reverse Charge invoicing flows in Italy. - Add 0% sale taxes and purchase taxes targeting VJ grids in `l10n_it` for every Tax Exemption Reason involved (Scrap, Gold...) - Add a Fiscal Position (equivalent to the Belgian "CoContractant" one) mapping the sale tax and purchase taxes to their Reverse Charge corresponding taxes. Those fiscal positions all have a different law-required note (with the law reference) that has to be printed on the PDF invoice through Odoo standard mechanisms. - The way we compare the invoice features and each document type requirements has been revised and expanded for the tax_tags sets case. Now it should also avoid comparisons after the first failure, instead of doing all the comparison anyway. - Imported vendor bills that have TD16, TD17, TD18 now have their 0% reverse charge sale taxes converted to their purchase 22% VAT reverse charge corresponding tax impacting VJ tax grids, following this mapping: Sale tax examption reason -> VJ grid targeted by purchase tax N3.2: VJ3 N3.3: VJ1 N6.1: VJ6 N6.2: VJ7 N6.3: VJ12 N6.4: VJ13 N6.5: VJ14 N6.6: VJ15 N6.7: VJ16 N6.8: VJ17 - Vendor bills that have taxes targeting grids VJ6, VJ7, VJ8, VJ12, VJ13, VJ14, VJ15, VJ16, VJ17 are exported as Tax Integrations XMLs to be sent to the Tax Agency with the document type TD16 - Vendor bills that have taxes targeting grids VJ3 are exported as Tax Integrations XMLs to be sent to the Tax Agency with the document type TD17 - Vendor bills that have taxes targeting grids VJ9 are exported as Tax Integrations XMLs to be sent to the Tax Agency with the document type TD18 Link: https://www.odoo.com/web#model=project.task&id=3724926 task-3724926 closes odoo/odoo#153556 Signed-off-by: Josse Colpaert --- .../template/account.fiscal.position-it.csv | 7 +- .../l10n_it/data/template/account.tax-it.csv | 650 ++++++++++++------ addons/l10n_it_edi/models/account_move.py | 117 ++-- addons/l10n_it_edi/tests/common.py | 4 + ...ml => invoice_external_reverse_charge.xml} | 0 .../invoice_internal_reverse_charge.xml | 129 ++++ .../tests/import_xmls/IT01234567888_FPR01.xml | 13 +- .../tests/import_xmls/IT01234567891_FPR01.xml | 129 ++++ .../tests/test_edi_reverse_charge.py | 85 ++- .../models/account_move.py | 6 +- 10 files changed, 883 insertions(+), 257 deletions(-) rename addons/l10n_it_edi/tests/export_xmls/{invoice_reverse_charge.xml => invoice_external_reverse_charge.xml} (100%) create mode 100644 addons/l10n_it_edi/tests/export_xmls/invoice_internal_reverse_charge.xml create mode 100644 addons/l10n_it_edi/tests/import_xmls/IT01234567891_FPR01.xml diff --git a/addons/l10n_it/data/template/account.fiscal.position-it.csv b/addons/l10n_it/data/template/account.fiscal.position-it.csv index b310a869845..8b68a7273df 100644 --- a/addons/l10n_it/data/template/account.fiscal.position-it.csv +++ b/addons/l10n_it/data/template/account.fiscal.position-it.csv @@ -20,4 +20,9 @@ "split_payment_fiscal_position","Split Payment","5","0","0",,,"22v","22vsp_group","Scissione dei Pagamenti","Operations subject to split payment – the seller does not collect the VAT pursuant to ex art.17-ter of the D.P.R. 633/1972, the buyer is obliged to pay the Revenue Agency.","Operazione soggetta a split payment – il cedente non incassa l’Iva ai sensi dell’ex art.17-ter del D.P.R. 633/1972, l’acquirente è obbligato al versamento all’Agenzia delle Entrate." "","","","","","","","10v","10vsp_group","","","" "","","","","","","","5v","5vsp_group","","","" -"","","","","","","","4v","4vsp_group","","","" \ No newline at end of file +"","","","","","","","4v","4vsp_group","","","" +"construction_fiscal_position","Construction Subcontractors - RC","9","0","0",,,"22as","22rc_n63","Subappalto Edilizia - IC","Operation subject to Reverse Charge and exempt from stamp duty – the seller does not collect the VAT pursuant to ex art.17, comma 6, letter a, DPR 633/1972","Operazione soggetta a reverse charge ed esente da imposta da bollo – il cedente non incassa l’Iva ai sensi dell’ex art. 17, comma 6, lettera a, DPR 633/1972." +"","","","","","","","10as","10rc_n63","","","" +"","","","","","","","5as","5rc_n63","","","" +"","","","","","","","4as","4rc_n63","","","" +"","","","","","","","00v","0rc_n63","","","" diff --git a/addons/l10n_it/data/template/account.tax-it.csv b/addons/l10n_it/data/template/account.tax-it.csv index 2fd9cb1b20a..0d8dcff626c 100644 --- a/addons/l10n_it/data/template/account.tax-it.csv +++ b/addons/l10n_it/data/template/account.tax-it.csv @@ -1,199 +1,451 @@ -"id","description","invoice_label","name","sequence","amount","amount_type","type_tax_use","price_include","tax_group_id","active","tax_scope","repartition_line_ids/repartition_type","repartition_line_ids/document_type","repartition_line_ids/tag_ids","repartition_line_ids/account_id","repartition_line_ids/factor_percent","name@it","children_tax_ids","l10n_it_exempt_reason","l10n_it_law_reference" -"22v","","22%","22%","30","22.0","percent","sale","False","tax_group_iva_22","","","base","invoice","+02","","","22%","","","" -"","","","","","","","","","","","","tax","invoice","+4v","2601","","","","","" -"","","","","","","","","","","","","base","refund","-02","","","","","","" -"","","","","","","","","","","","","tax","refund","-4v","2601","","","","","" -"10v","","10%","10%","40","10.0","percent","sale","False","tax_group_iva_10","","","base","invoice","+02","","","10%","","","" -"","","","","","","","","","","","","tax","invoice","+4v","2601","","","","","" -"","","","","","","","","","","","","base","refund","-02","","","","","","" -"","","","","","","","","","","","","tax","refund","-4v","2601","","","","","" -"5v","","5%","5%","50","5.0","percent","sale","False","tax_group_iva_5","False","","base","invoice","+02","","","","","","" -"","","","","","","","","","","","","tax","invoice","+4v","2601","","","","","" -"","","","","","","","","","","","","base","refund","-02","","","","","","" -"","","","","","","","","","","","","tax","refund","-4v","2601","","","","","" -"4v","","4%","4%","60","4.0","percent","sale","False","tax_group_iva_4","False","","base","invoice","+02","","","","","","" -"","","","","","","","","","","","","tax","invoice","+4v","2601","","","","","" -"","","","","","","","","","","","","base","refund","-02","","","","","","" -"","","","","","","","","","","","","tax","refund","-4v","2601","","","","","" -"00v","","0%","0%","70","0.0","percent","sale","False","tax_group_fuori","","","base","invoice","","","","","","N1","Art. 15 DPR 633/1972" -"","","","","","","","","","","","","tax","invoice","","","","","","","" -"","","","","","","","","","","","","base","refund","","","","","","","" -"","","","","","","","","","","","","tax","refund","","","","","","","" -"22am","","22%","22% G","80","22.0","percent","purchase","False","tax_group_iva_22","","consu","base","invoice","+03","","","22% M","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","base","refund","-03","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"10am","","10%","10% G","90","10.0","percent","purchase","False","tax_group_iva_10","","consu","base","invoice","+03","","","10% M","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","base","refund","-03","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"5am","","5%","5% G","100","5.0","percent","purchase","False","tax_group_iva_5","False","consu","base","invoice","+03","","","5% M","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","base","refund","-03","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"4am","","4%","4% G","110","4.0","percent","purchase","False","tax_group_iva_4","False","consu","base","invoice","+03","","","4% M","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","base","refund","-03","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"00am","","0%","0% G","120","0.0","percent","purchase","False","tax_group_fuori","","consu","base","invoice","+03","","","0% M","","N1","Art. 15 DPR 633/1972" -"","","","","","","","","","","","","tax","invoice","","","","","","","" -"","","","","","","","","","","","","base","refund","-03","","","","","","" -"","","","","","","","","","","","","tax","refund","","","","","","","" -"22as","","22%","22% S","130","22.0","percent","purchase","False","tax_group_iva_22","","service","base","invoice","+03","","","22% S","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","base","refund","-03","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"10as","","10%","10% S","140","10.0","percent","purchase","False","tax_group_iva_10","","service","base","invoice","+03","","","10% S","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","base","refund","-03","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"5as","","5%","5% S","150","5.0","percent","purchase","False","tax_group_iva_5","False","service","base","invoice","+03","","","5% S","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","base","refund","-03","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"4as","","4%","4% S","160","4.0","percent","purchase","False","tax_group_iva_4","False","service","base","invoice","+03","","","4% S","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","base","refund","-03","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"00as","","0%","0% S","170","0.0","percent","purchase","False","tax_group_fuori","","service","base","invoice","+02","","","0% S","","N1","Art. 15 DPR 633/1972" -"","","","","","","","","","","","","tax","invoice","","","","","","","" -"","","","","","","","","","","","","base","refund","-03","","","","","","" -"","","","","","","","","","","","","tax","refund","","","","","","","" -"00eu","","0%","0% EU","180","0.0","percent","sale","False","tax_group_fuori","","","base","invoice","+02","","","0% EU","","N3.2","Art. 41, DL 331/93" -"","","","","","","","","","","","","tax","invoice","","","","","","","" -"","","","","","","","","","","","","base","refund","-02","","","","","","" -"","","","","","","","","","","","","tax","refund","","","","","","","" -"00art15v","","0%","0% Art.15","190","0.0","percent","sale","False","tax_group_imp_esc_art_15","","","base","invoice","+02","","","0% Art.15","","N1","Art. 15 DPR 633/1972" -"","","","","","","","","","","","","tax","invoice","","","","","","","" -"","","","","","","","","","","","","base","refund","-02","","","","","","" -"","","","","","","","","","","","","tax","refund","","","","","","","" -"00art15a","","00art15a","0% Art.15","200","0.0","percent","purchase","False","tax_group_imp_esc_art_15","","","base","invoice","+03","","","0% Art.15","","N1","Art. 15 DPR 633/1972" -"","","","","","","","","","","","","tax","invoice","","","","","","","" -"","","","","","","","","","","","","base","refund","-03","","","","","","" -"","","","","","","","","","","","","tax","refund","","","","","","","" -"22rcs","","22%","22% S RC","210","22.0","percent","purchase","False","tax_group_iva_22","","service","base","invoice","+03||+vj3","","","22% S IC","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","" -"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","" -"10rcs","","10%","10% S RC","220","10.0","percent","purchase","False","tax_group_iva_10","","service","base","invoice","+03||+vj3","","","10% S IC","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","" -"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","" -"5rcs","","5%","5% S RC","230","5.0","percent","purchase","False","tax_group_iva_5","False","service","base","invoice","+03||+vj3","","","5% S IC","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","" -"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","" -"4rcs","","4%","4% S RC","240","4.0","percent","purchase","False","tax_group_iva_4","False","service","base","invoice","+03||+vj3","","","4% S IC","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","" -"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","" -"00rcs","","0%","0% S RC","250","0.0","percent","purchase","False","tax_group_fuori","","service","base","invoice","+03||+vj3","","","0% S CI","","N1","Art. 15 DPR 633/1972" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","" -"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","" -"22rcm","","22%","22% G RC","260","22.0","percent","purchase","False","tax_group_iva_22","","consu","base","invoice","+03||+vj9","","","22% M IC","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","" -"","","","","","","","","","","","","base","refund","-03||-vj9","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","" -"10rcm","","10%","10% G RC","270","10.0","percent","purchase","False","tax_group_iva_10","","consu","base","invoice","+03||+vj9","","","10% M IC","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","" -"","","","","","","","","","","","","base","refund","-03||-vj9","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","" -"5rcm","","5%","5% G RC","280","5.0","percent","purchase","False","tax_group_iva_5","False","consu","base","invoice","+03||+vj9","","","5% M IC","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","" -"","","","","","","","","","","","","base","refund","-03||-vj9","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","" -"4rcm","","4%","4% G RC","290","4.0","percent","purchase","False","tax_group_iva_4","False","consu","base","invoice","+03||+vj9","","","4% M IC","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","" -"","","","","","","","","","","","","base","refund","-03||-vj9","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","" -"00rcm","","0%","0% G RC","300","0.0","percent","purchase","False","tax_group_fuori","","consu","base","invoice","+03||+vj9","","","0% M CI","","N1","Art. 15 DPR 633/1972" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","" -"","","","","","","","","","","","","base","refund","-03||-vj9","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","" -"22rcd","22% G Deposit","22%","22% G D","310","22.0","percent","purchase","False","tax_group_iva_22","","consu","base","invoice","+03||+vj3","","","22% M Deposito","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","" -"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","" -"10rcd","10% G Deposit","10%","10% G D","320","10.0","percent","purchase","False","tax_group_iva_10","","consu","base","invoice","+03||+vj3","","","10% M Deposito","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","" -"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","" -"5rcd","5% G Deposit","5%","5% G D","330","5.0","percent","purchase","False","tax_group_iva_5","False","consu","base","invoice","+03||+vj3","","","5% M Deposito","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","" -"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","" -"4rcd","4% G Deposit","4%","4% G D","340","4.0","percent","purchase","False","tax_group_iva_4","False","consu","base","invoice","+03||+vj3","","","4% M Deposito","","","" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","" -"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","" -"00rcd","0% G Deposit","0%","0% G D","350","0.0","percent","purchase","False","tax_group_fuori","","service","base","invoice","+03||+vj3","","","0% M Deposito","","N1","Art. 15 DPR 633/1972" -"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","" -"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","" -"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","" -"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","" -"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","" -"22vsp","22% Scissione dei Pagamenti pos.","22%","22% SP pos.","360","22.0","percent","none","False","tax_group_iva_22","","","base","invoice","+02||+ve38","","","","","","" -"","","","","","","","","","","","","tax","invoice","","2608","","","","","" -"","","","","","","","","","","","","base","refund","-02||-ve38","","","","","","" -"","","","","","","","","","","","","tax","refund","","2608","","","","","" -"22vsp_storno","22% Scissione dei Pagamenti neg.","22%","22% SP neg.","360","-22.0","percent","none","False","tax_group_split_payment","","","base","invoice","","","","","","","" -"","","","","","","","","","","","","tax","invoice","","2608","","","","","" -"","","","","","","","","","","","","base","refund","","","","","","","" -"","","","","","","","","","","","","tax","refund","","2608","","","","","" -"22vsp_group","","22%","22% SP","360","","group","sale","False","tax_group_split_payment","","","","","","","","","22vsp,22vsp_storno","","" -"10vsp","10% Scissione dei Pagamenti pos.","10%","10% SP pos.","360","10.0","percent","none","False","tax_group_iva_10","","","base","invoice","+02||+ve38","","","","","","" -"","","","","","","","","","","","","tax","invoice","","2608","","","","","" -"","","","","","","","","","","","","base","refund","-02||-ve38","","","","","","" -"","","","","","","","","","","","","tax","refund","","2608","","","","","" -"10vsp_storno","10% Scissione dei Pagamenti neg.","10%","10% SP neg.","360","-10.0","percent","none","False","tax_group_split_payment","","","base","invoice","","","","","","","" -"","","","","","","","","","","","","tax","invoice","","2608","","","","","" -"","","","","","","","","","","","","base","refund","","","","","","","" -"","","","","","","","","","","","","tax","refund","","2608","","","","","" -"10vsp_group","","10%","10% SP","360","","group","sale","False","tax_group_split_payment","","","","","","","","","10vsp,10vsp_storno","","" -"5vsp","5% Scissione dei Pagamenti pos.","5%","5% SP pos.","360","5.0","percent","none","False","tax_group_iva_5","","","base","invoice","+02||+ve38","","","","","","" -"","","","","","","","","","","","","tax","invoice","","2608","","","","","" -"","","","","","","","","","","","","base","refund","-02||-ve38","","","","","","" -"","","","","","","","","","","","","tax","refund","","2608","","","","","" -"5vsp_storno","5% Scissione dei Pagamenti neg.","5%","5% SP neg.","360","-5.0","percent","none","False","tax_group_split_payment","","","base","invoice","","","","","","","" -"","","","","","","","","","","","","tax","invoice","","2608","","","","","" -"","","","","","","","","","","","","base","refund","","","","","","","" -"","","","","","","","","","","","","tax","refund","","2608","","","","","" -"5vsp_group","","5%","5% SP","360","","group","sale","False","tax_group_split_payment","","","","","","","","","5vsp,5vsp_storno","","" -"4vsp","4% Scissione dei Pagamenti pos.","4%","4% SP pos.","360","4.0","percent","none","False","tax_group_iva_4","","","base","invoice","+02||+ve38","","","","","","" -"","","","","","","","","","","","","tax","invoice","","2608","","","","","" -"","","","","","","","","","","","","base","refund","-02||-ve38","","","","","","" -"","","","","","","","","","","","","tax","refund","","2608","","","","","" -"4vsp_storno","4% Scissione dei Pagamenti neg.","4%","4% SP neg.","360","-4.0","percent","none","False","tax_group_split_payment","","","base","invoice","","","","","","","" -"","","","","","","","","","","","","tax","invoice","","2608","","","","","" -"","","","","","","","","","","","","base","refund","","","","","","","" -"","","","","","","","","","","","","tax","refund","","2608","","","","","" -"4vsp_group","","4%","4% SP","360","","group","sale","False","tax_group_split_payment","","","","","","","","","4vsp,4vsp_storno","","" \ No newline at end of file +"id","description","invoice_label","name","sequence","amount","amount_type","type_tax_use","price_include","tax_group_id","active","tax_scope","repartition_line_ids/repartition_type","repartition_line_ids/document_type","repartition_line_ids/tag_ids","repartition_line_ids/account_id","repartition_line_ids/factor_percent","name@it","children_tax_ids","l10n_it_exempt_reason","l10n_it_law_reference","description@it" +"22v","","22%","22%","30","22.0","percent","sale","False","tax_group_iva_22","","","base","invoice","+02","","","22%","","","","" +"","","","","","","","","","","","","tax","invoice","+4v","2601","","","","","","" +"","","","","","","","","","","","","base","refund","-02","","","","","","","" +"","","","","","","","","","","","","tax","refund","-4v","2601","","","","","","" +"10v","","10%","10%","40","10.0","percent","sale","False","tax_group_iva_10","","","base","invoice","+02","","","10%","","","","" +"","","","","","","","","","","","","tax","invoice","+4v","2601","","","","","","" +"","","","","","","","","","","","","base","refund","-02","","","","","","","" +"","","","","","","","","","","","","tax","refund","-4v","2601","","","","","","" +"5v","","5%","5%","50","5.0","percent","sale","False","tax_group_iva_5","False","","base","invoice","+02","","","","","","","" +"","","","","","","","","","","","","tax","invoice","+4v","2601","","","","","","" +"","","","","","","","","","","","","base","refund","-02","","","","","","","" +"","","","","","","","","","","","","tax","refund","-4v","2601","","","","","","" +"4v","","4%","4%","60","4.0","percent","sale","False","tax_group_iva_4","False","","base","invoice","+02","","","","","","","" +"","","","","","","","","","","","","tax","invoice","+4v","2601","","","","","","" +"","","","","","","","","","","","","base","refund","-02","","","","","","","" +"","","","","","","","","","","","","tax","refund","-4v","2601","","","","","","" +"00v","","0%","0%","70","0.0","percent","sale","False","tax_group_fuori","","","base","invoice","","","","","","N1","Art. 15 DPR 633/1972","" +"","","","","","","","","","","","","tax","invoice","","","","","","","","" +"","","","","","","","","","","","","base","refund","","","","","","","","" +"","","","","","","","","","","","","tax","refund","","","","","","","","" +"22am","","22%","22% G","80","22.0","percent","purchase","False","tax_group_iva_22","","consu","base","invoice","+03","","","22% M","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","base","refund","-03","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"10am","","10%","10% G","90","10.0","percent","purchase","False","tax_group_iva_10","","consu","base","invoice","+03","","","10% M","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","base","refund","-03","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"5am","","5%","5% G","100","5.0","percent","purchase","False","tax_group_iva_5","False","consu","base","invoice","+03","","","5% M","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","base","refund","-03","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"4am","","4%","4% G","110","4.0","percent","purchase","False","tax_group_iva_4","False","consu","base","invoice","+03","","","4% M","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","base","refund","-03","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"00am","","0%","0% G","120","0.0","percent","purchase","False","tax_group_fuori","","consu","base","invoice","+03","","","0% M","","N1","Art. 15 DPR 633/1972","" +"","","","","","","","","","","","","tax","invoice","","","","","","","","" +"","","","","","","","","","","","","base","refund","-03","","","","","","","" +"","","","","","","","","","","","","tax","refund","","","","","","","","" +"22as","","22%","22% S","130","22.0","percent","purchase","False","tax_group_iva_22","","service","base","invoice","+03","","","22% S","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","base","refund","-03","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"10as","","10%","10% S","140","10.0","percent","purchase","False","tax_group_iva_10","","service","base","invoice","+03","","","10% S","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","base","refund","-03","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"5as","","5%","5% S","150","5.0","percent","purchase","False","tax_group_iva_5","False","service","base","invoice","+03","","","5% S","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","base","refund","-03","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"4as","","4%","4% S","160","4.0","percent","purchase","False","tax_group_iva_4","False","service","base","invoice","+03","","","4% S","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","base","refund","-03","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"00as","","0%","0% S","170","0.0","percent","purchase","False","tax_group_fuori","","service","base","invoice","+02","","","0% S","","N1","Art. 15 DPR 633/1972","" +"","","","","","","","","","","","","tax","invoice","","","","","","","","" +"","","","","","","","","","","","","base","refund","-03","","","","","","","" +"","","","","","","","","","","","","tax","refund","","","","","","","","" +"00eu","","0%","0% EU","180","0.0","percent","sale","False","tax_group_fuori","","","base","invoice","+02","","","0% EU","","N3.2","Art. 41, DL 331/93","" +"","","","","","","","","","","","","tax","invoice","","","","","","","","" +"","","","","","","","","","","","","base","refund","-02","","","","","","","" +"","","","","","","","","","","","","tax","refund","","","","","","","","" +"00art15v","","0%","0% Art.15","190","0.0","percent","sale","False","tax_group_imp_esc_art_15","","","base","invoice","+02","","","0% Art.15","","N1","Art. 15 DPR 633/1972","" +"","","","","","","","","","","","","tax","invoice","","","","","","","","" +"","","","","","","","","","","","","base","refund","-02","","","","","","","" +"","","","","","","","","","","","","tax","refund","","","","","","","","" +"00art15a","","00art15a","0% Art.15","200","0.0","percent","purchase","False","tax_group_imp_esc_art_15","","","base","invoice","+03","","","0% Art.15","","N1","Art. 15 DPR 633/1972","" +"","","","","","","","","","","","","tax","invoice","","","","","","","","" +"","","","","","","","","","","","","base","refund","-03","","","","","","","" +"","","","","","","","","","","","","tax","refund","","","","","","","","" +"22rcs","","22%","22% S RC","210","22.0","percent","purchase","False","tax_group_iva_22","","service","base","invoice","+03||+vj3","","","22% S IC","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","","" +"10rcs","","10%","10% S RC","220","10.0","percent","purchase","False","tax_group_iva_10","","service","base","invoice","+03||+vj3","","","10% S IC","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","","" +"5rcs","","5%","5% S RC","230","5.0","percent","purchase","False","tax_group_iva_5","False","service","base","invoice","+03||+vj3","","","5% S IC","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","","" +"4rcs","","4%","4% S RC","240","4.0","percent","purchase","False","tax_group_iva_4","False","service","base","invoice","+03||+vj3","","","4% S IC","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","","" +"00rcs","","0%","0% S RC","250","0.0","percent","purchase","False","tax_group_fuori","","service","base","invoice","+03||+vj3","","","0% S CI","","N1","Art. 15 DPR 633/1972","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","","" +"22rcm","","22%","22% G RC","260","22.0","percent","purchase","False","tax_group_iva_22","","consu","base","invoice","+03||+vj9","","","22% M IC","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj9","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","","" +"10rcm","","10%","10% G RC","270","10.0","percent","purchase","False","tax_group_iva_10","","consu","base","invoice","+03||+vj9","","","10% M IC","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj9","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","","" +"5rcm","","5%","5% G RC","280","5.0","percent","purchase","False","tax_group_iva_5","False","consu","base","invoice","+03||+vj9","","","5% M IC","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj9","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","","" +"4rcm","","4%","4% G RC","290","4.0","percent","purchase","False","tax_group_iva_4","False","consu","base","invoice","+03||+vj9","","","4% M IC","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj9","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","","" +"00rcm","","0%","0% G RC","300","0.0","percent","purchase","False","tax_group_fuori","","consu","base","invoice","+03||+vj9","","","0% M CI","","N1","Art. 15 DPR 633/1972","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj9","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","","" +"22rcd","22% G Deposit","22%","22% G D","310","22.0","percent","purchase","False","tax_group_iva_22","","consu","base","invoice","+03||+vj3","","","22% M Deposito","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","","" +"10rcd","10% G Deposit","10%","10% G D","320","10.0","percent","purchase","False","tax_group_iva_10","","consu","base","invoice","+03||+vj3","","","10% M Deposito","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","","" +"5rcd","5% G Deposit","5%","5% G D","330","5.0","percent","purchase","False","tax_group_iva_5","False","consu","base","invoice","+03||+vj3","","","5% M Deposito","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","","" +"4rcd","4% G Deposit","4%","4% G D","340","4.0","percent","purchase","False","tax_group_iva_4","False","consu","base","invoice","+03||+vj3","","","4% M Deposito","","","","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","","" +"00rcd","0% G Deposit","0%","0% G D","350","0.0","percent","purchase","False","tax_group_fuori","","service","base","invoice","+03||+vj3","","","0% M Deposito","","N1","Art. 15 DPR 633/1972","" +"","","","","","","","","","","","","tax","invoice","+5v","1601","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","2601","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj3","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","1601","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","2601","-100","","","","","" +"22vsp","22% Split Payment pos.","22%","22% SP pos.","360","22.0","percent","none","False","tax_group_iva_22","","","base","invoice","+02||+ve38","","","","","","","22% Scissione dei Pagamenti pos." +"","","","","","","","","","","","","tax","invoice","","2608","","","","","","" +"","","","","","","","","","","","","base","refund","-02||-ve38","","","","","","","" +"","","","","","","","","","","","","tax","refund","","2608","","","","","","" +"22vsp_storno","22% Split Payment neg.","22%","22% SP neg.","360","-22.0","percent","none","False","tax_group_split_payment","","","base","invoice","","","","","","","","22% Scissione dei Pagamenti neg." +"","","","","","","","","","","","","tax","invoice","","2608","","","","","","" +"","","","","","","","","","","","","base","refund","","","","","","","","" +"","","","","","","","","","","","","tax","refund","","2608","","","","","","" +"22vsp_group","","22%","22% SP","360","","group","sale","False","tax_group_split_payment","","","","","","","","","22vsp,22vsp_storno","","","" +"10vsp","10% Split Payment pos.","10%","10% SP pos.","360","10.0","percent","none","False","tax_group_iva_10","","","base","invoice","+02||+ve38","","","","","","","10% Scissione dei Pagamenti pos." +"","","","","","","","","","","","","tax","invoice","","2608","","","","","","" +"","","","","","","","","","","","","base","refund","-02||-ve38","","","","","","","" +"","","","","","","","","","","","","tax","refund","","2608","","","","","","" +"10vsp_storno","10% Split Payment neg.","10%","10% SP neg.","360","-10.0","percent","none","False","tax_group_split_payment","","","base","invoice","","","","","","","","10% Scissione dei Pagamenti neg." +"","","","","","","","","","","","","tax","invoice","","2608","","","","","","" +"","","","","","","","","","","","","base","refund","","","","","","","","" +"","","","","","","","","","","","","tax","refund","","2608","","","","","","" +"10vsp_group","","10%","10% SP","360","","group","sale","False","tax_group_split_payment","","","","","","","","","10vsp,10vsp_storno","","","" +"5vsp","5% Split Payment pos.","5%","5% SP pos.","360","5.0","percent","none","False","tax_group_iva_5","","","base","invoice","+02||+ve38","","","","","","","5% Scissione dei Pagamenti pos." +"","","","","","","","","","","","","tax","invoice","","2608","","","","","","" +"","","","","","","","","","","","","base","refund","-02||-ve38","","","","","","","" +"","","","","","","","","","","","","tax","refund","","2608","","","","","","" +"5vsp_storno","5% Split Payment neg.","5%","5% SP neg.","360","-5.0","percent","none","False","tax_group_split_payment","","","base","invoice","","","","","","","","5% Scissione dei Pagamenti neg." +"","","","","","","","","","","","","tax","invoice","","2608","","","","","","" +"","","","","","","","","","","","","base","refund","","","","","","","","" +"","","","","","","","","","","","","tax","refund","","2608","","","","","","" +"5vsp_group","","5%","5% SP","360","","group","sale","False","tax_group_split_payment","","","","","","","","","5vsp,5vsp_storno","","","" +"4vsp","4% Split Payment pos.","4%","4% SP pos.","360","4.0","percent","none","False","tax_group_iva_4","","","base","invoice","+02||+ve38","","","","","","","4% Scissione dei Pagamenti pos." +"","","","","","","","","","","","","tax","invoice","","2608","","","","","","" +"","","","","","","","","","","","","base","refund","-02||-ve38","","","","","","","" +"","","","","","","","","","","","","tax","refund","","2608","","","","","","" +"4vsp_storno","4% Split Payment neg.","4%","4% SP neg.","360","-4.0","percent","none","False","tax_group_split_payment","","","base","invoice","","","","","","","","4% Scissione dei Pagamenti neg." +"","","","","","","","","","","","","tax","invoice","","2608","","","","","","" +"","","","","","","","","","","","","base","refund","","","","","","","","" +"","","","","","","","","","","","","tax","refund","","2608","","","","","","" +"4vsp_group","","4%","4% SP","460","","group","sale","False","tax_group_split_payment","","","","","","","","","4vsp,4vsp_storno","","","" +"0rc_n61","Scrap","0%","0% RC N6.1","500","0.0","percent","sale","False","tax_group_fuori","False","","base","invoice","+02","","","0% IC N6.1","","N6.1","art.74, comma 7-8, D.P.R. 633/1972","Materiali di Scarto" +"","","","","","","","","","","","","tax","invoice","+4v","","","","","","","" +"","","","","","","","","","","","","base","refund","-02","","","","","","","" +"","","","","","","","","","","","","tax","refund","-4v","","","","","","","" +"0rc_n62","Gold","0%","0% RC N6.2","510","0.0","percent","sale","False","tax_group_fuori","False","","base","invoice","+02","","","0% IC N6.2","","N6.2","art.17, comma 5, D.P.R. 633/1972","Oro" +"","","","","","","","","","","","","tax","invoice","+4v","","","","","","","" +"","","","","","","","","","","","","base","refund","-02","","","","","","","" +"","","","","","","","","","","","","tax","refund","-4v","","","","","","","" +"0rc_n62b","Gold Investments","0%","0% RC N6.2b","520","0.0","percent","sale","False","tax_group_fuori","False","","base","invoice","+02","","","0% IC N6.2b","","N6.2","art.17, comma 5, D.P.R. 633/1972","Investimenti in Oro" +"","","","","","","","","","","","","tax","invoice","+4v","","","","","","","" +"","","","","","","","","","","","","base","refund","-02","","","","","","","" +"","","","","","","","","","","","","tax","refund","-4v","","","","","","","" +"0rc_n63","Construction subcontractors","0%","0% RC N6.3","530","0.0","percent","sale","False","tax_group_fuori","False","","base","invoice","+02","","","0% IC N6.3","","N6.3","art.17, comma 6, lett. a, D.P.R. 633/1972","Subappalto Edilizia" +"","","","","","","","","","","","","tax","invoice","+4v","","","","","","","" +"","","","","","","","","","","","","base","refund","-02","","","","","","","" +"","","","","","","","","","","","","tax","refund","-4v","","","","","","","" +"0rc_n64","Investments in construction","0%","0% RC N6.4","540","0.0","percent","sale","False","tax_group_fuori","False","","base","invoice","+02","","","0% IC N6.4","","N6.4","art.17, comma 6, lett. a-bis, D.P.R. 633/1972","Investimenti in Edilizia" +"","","","","","","","","","","","","tax","invoice","+4v","","","","","","","" +"","","","","","","","","","","","","base","refund","-02","","","","","","","" +"","","","","","","","","","","","","tax","refund","-4v","","","","","","","" +"0rc_n65","Cellphones","0%","0% RC N6.5","550","0.0","percent","sale","False","tax_group_fuori","False","","base","invoice","+02","","","0% IC N6.5","","N6.5","art.17, comma 6, lett. b, D.P.R. 633/1972","Cellulari" +"","","","","","","","","","","","","tax","invoice","+4v","","","","","","","" +"","","","","","","","","","","","","base","refund","-02","","","","","","","" +"","","","","","","","","","","","","tax","refund","-4v","","","","","","","" +"0rc_n66","Electronics","0%","0% RC N6.6","560","0.0","percent","sale","False","tax_group_fuori","False","","base","invoice","+02","","","0% IC N6.6","","N6.6","art.17, comma 6, lett. c, D.P.R. 633/1972","Elettronica" +"","","","","","","","","","","","","tax","invoice","+4v","","","","","","","" +"","","","","","","","","","","","","base","refund","-02","","","","","","","" +"","","","","","","","","","","","","tax","refund","-4v","","","","","","","" +"0rc_n67","Construction services","0%","0% RC N6.7","570","0.0","percent","sale","False","tax_group_fuori","True","","base","invoice","+02","","","0% IC N6.7","","N6.7","art 17, comma 6, lett. a-ter, D.P.R. 633/1972","Servizi edilizia" +"","","","","","","","","","","","","tax","invoice","+4v","","","","","","","" +"","","","","","","","","","","","","base","refund","-02","","","","","","","" +"","","","","","","","","","","","","tax","refund","-4v","","","","","","","" +"0rc_n68","Energy","0%","0% RC N6.8","580","0.0","percent","sale","False","tax_group_fuori","False","","base","invoice","+02","","","0% IC N6.8","","N6.8","art.17, comma 6, lett. d-bis, d-ter, d-quater, D.P.R. 633/1972","Energia" +"","","","","","","","","","","","","tax","invoice","+4v","","","","","","","" +"","","","","","","","","","","","","base","refund","-02","","","","","","","" +"","","","","","","","","","","","","tax","refund","-4v","","","","","","","" +"4rc_n61","Scrap","4%","4% RC N6.1","590","4.0","percent","purchase","False","tax_group_iva_4","False","","base","invoice","+03||+vj6","","","4% IC N6.1","","","","Materiali di Scarto" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj6","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"4rc_n62","Gold","4%","4% RC N6.2","600","4.0","percent","purchase","False","tax_group_iva_4","False","","base","invoice","+03||+vj7","","","4% IC N6.2","","","","Oro" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj7","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"4rc_n62b","Investments in gold","4%","4% RC N6.2b","610","4.0","percent","purchase","False","tax_group_iva_4","False","","base","invoice","+03||+vj8","","","4% IC N6.2b","","","","Investimenti in Oro" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj8","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"4rc_n63","Construction subcontractors","4%","4% RC N6.3","620","4.0","percent","purchase","False","tax_group_iva_4","False","","base","invoice","+03||+vj12","","","4% IC N6.3","","","","Subappalto Edilizia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj12","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"4rc_n64","Investments in construction","4%","4% RC N6.4","630","4.0","percent","purchase","False","tax_group_iva_4","False","","base","invoice","+03||+vj13","","","4% IC N6.4","","","","Investimenti in Edilizia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj13","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"4rc_n65","Cellphones","4%","4% RC N6.5","640","4.0","percent","purchase","False","tax_group_iva_4","False","","base","invoice","+03||+vj14","","","4% IC N6.5","","","","Cellulari" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj14","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"4rc_n66","Electronics","4%","4% RC N6.6","650","4.0","percent","purchase","False","tax_group_iva_4","False","","base","invoice","+03||+vj15","","","4% IC N6.6","","","","Elettronica" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj15","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"4rc_n67","Construction services","4%","4% RC N6.7","660","4.0","percent","purchase","False","tax_group_iva_4","False","","base","invoice","+03||+vj16","","","4% IC N6.7","","","","Servizi Edilizia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj16","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"4rc_n68","Energy","4%","4% RC N6.8","670","4.0","percent","purchase","False","tax_group_iva_4","False","","base","invoice","+03||+vj17","","","4% IC N6.8","","","","Energia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj17","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"5rc_n61","Scrap","5%","5% RC N6.1","680","5.0","percent","purchase","False","tax_group_iva_5","False","","base","invoice","+03||+vj6","","","5% IC N6.1","","","","Materiali di Scarto" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj6","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"5rc_n62","Gold","5%","5% RC N6.2","690","5.0","percent","purchase","False","tax_group_iva_5","False","","base","invoice","+03||+vj7","","","5% IC N6.2","","","","Oro" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj7","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"5rc_n62b","Investments in gold","5%","5% RC N6.2b","700","5.0","percent","purchase","False","tax_group_iva_5","False","","base","invoice","+03||+vj8","","","5% IC N6.2b","","","","Investimenti in Oro" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj8","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"5rc_n63","Construction subcontractors","5%","5% RC N6.3","710","5.0","percent","purchase","False","tax_group_iva_5","False","","base","invoice","+03||+vj12","","","5% IC N6.3","","","","Subappalti Edilizia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj12","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"5rc_n64","Investments in construction","5%","5% RC N6.4","720","5.0","percent","purchase","False","tax_group_iva_5","False","","base","invoice","+03||+vj13","","","5% IC N6.4","","","","Investimenti in Edilizia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj13","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"5rc_n65","Cellphones","5%","5% RC N6.5","730","5.0","percent","purchase","False","tax_group_iva_5","False","","base","invoice","+03||+vj14","","","5% IC N6.5","","","","Cellulari" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj14","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"5rc_n66","Electronics","5%","5% RC N6.6","740","5.0","percent","purchase","False","tax_group_iva_5","False","","base","invoice","+03||+vj15","","","5% IC N6.6","","","","Elettronica" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj15","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"5rc_n67","Construction services","5%","5% RC N6.7","750","5.0","percent","purchase","False","tax_group_iva_5","False","","base","invoice","+03||+vj16","","","5% IC N6.7","","","","Servizi Edilizia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj16","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"5rc_n68","Energy","5%","5% RC N6.8","760","5.0","percent","purchase","False","tax_group_iva_5","False","","base","invoice","+03||+vj17","","","5% IC N6.8","","","","Energia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj17","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"10rc_n61","Scrap","10%","10% RC N6.1","770","10.0","percent","purchase","False","tax_group_iva_10","False","","base","invoice","+03||+vj6","","","10% IC N6.1","","","","Materiali di Scarto" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj6","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"10rc_n62","Gold","10%","10% RC N6.2","780","10.0","percent","purchase","False","tax_group_iva_10","False","","base","invoice","+03||+vj7","","","10% IC N6.2","","","","Oro" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj7","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"10rc_n62b","Investments in gold","10%","10% RC N6.2b","790","10.0","percent","purchase","False","tax_group_iva_10","False","","base","invoice","+03||+vj8","","","10% IC N6.2b","","","","Investimenti in Oro" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj8","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"10rc_n63","Construction subcontractors","10%","10% RC N6.3","800","10.0","percent","purchase","False","tax_group_iva_10","False","","base","invoice","+03||+vj12","","","10% IC N6.3","","","","Subappalti Edilizia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj12","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"10rc_n64","Investments in construction","10%","10% RC N6.4","810","10.0","percent","purchase","False","tax_group_iva_10","False","","base","invoice","+03||+vj13","","","10% IC N6.4","","","","Investimenti in Edilizia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj13","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"10rc_n65","Cellphones","10%","10% RC N6.5","820","10.0","percent","purchase","False","tax_group_iva_10","False","","base","invoice","+03||+vj14","","","10% IC N6.5","","","","Cellulari" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj14","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"10rc_n66","Electronics","10%","10% RC N6.6","830","10.0","percent","purchase","False","tax_group_iva_10","False","","base","invoice","+03||+vj15","","","10% IC N6.6","","","","Elettronica" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj15","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"10rc_n67","Construction services","10%","10% RC N6.7","840","10.0","percent","purchase","False","tax_group_iva_10","True","","base","invoice","+03||+vj16","","","10% IC N6.7","","","","Servizi Edilizia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj16","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"10rc_n68","Energy","10%","10% RC N6.8","850","10.0","percent","purchase","False","tax_group_iva_10","False","","base","invoice","+03||+vj17","","","10% IC N6.8","","","","Energia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj17","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"22rc_n61","Scrap","22%","22% RC N6.1","860","22.0","percent","purchase","False","tax_group_iva_22","False","","base","invoice","+03||+vj6","","","22% IC N6.1","","","","Materiali di Scarto" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj6","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"22rc_n62","Gold","22%","22% RC N6.2","870","22.0","percent","purchase","False","tax_group_iva_22","False","","base","invoice","+03||+vj7","","","22% IC N6.2","","","","Oro" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj7","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"22rc_n62b","Investments in gold","22%","22% RC N6.2b","880","22.0","percent","purchase","False","tax_group_iva_22","False","","base","invoice","+03||+vj8","","","22% IC N6.2b","","","","Investimenti in Oro" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj8","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"22rc_n63","Construction subcontractors","22%","22% RC N6.3","890","22.0","percent","purchase","False","tax_group_iva_22","False","","base","invoice","+03||+vj12","","","22% IC N6.3","","","","Subappalti Edilizia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj12","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"22rc_n64","Investments in construction","22%","22% RC N6.4","900","22.0","percent","purchase","False","tax_group_iva_22","False","","base","invoice","+03||+vj13","","","22% IC N6.4","","","","Investimenti in Edilizia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj13","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"22rc_n65","Cellphones","22%","22% RC N6.5","910","22.0","percent","purchase","False","tax_group_iva_22","False","","base","invoice","+03||+vj14","","","22% IC N6.5","","","","Cellulari" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj14","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"22rc_n66","Electronics","22%","22% RC N6.6","920","22.0","percent","purchase","False","tax_group_iva_22","False","","base","invoice","+03||+vj15","","","22% IC N6.6","","","","Elettronica" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj15","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"22rc_n67","Construction services","22%","22% RC N6.7","930","22.0","percent","purchase","False","tax_group_iva_22","True","","base","invoice","+03||+vj16","","","22% IC N6.7","","","","Servizi Edilizia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj16","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" +"22rc_n68","Energy","22%","22% RC N6.8","940","22.0","percent","purchase","False","tax_group_iva_22","False","","base","invoice","+03||+vj17","","","22% IC N6.8","","","","Energia" +"","","","","","","","","","","","","tax","invoice","+5v","","","","","","","" +"","","","","","","","","","","","","tax","invoice","-4v","","-100","","","","","" +"","","","","","","","","","","","","base","refund","-03||-vj17","","","","","","","" +"","","","","","","","","","","","","tax","refund","-5v","","","","","","","" +"","","","","","","","","","","","","tax","refund","+4v","","-100","","","","","" diff --git a/addons/l10n_it_edi/models/account_move.py b/addons/l10n_it_edi/models/account_move.py index bb4bd5d5200..5603e565443 100644 --- a/addons/l10n_it_edi/models/account_move.py +++ b/addons/l10n_it_edi/models/account_move.py @@ -125,18 +125,34 @@ class AccountMove(models.Model): We recognize these cases based on the taxes that target the VJ tax grids, which imply the use of VAT External Reverse Charge. """ - it_tax_report_vj_lines = self.env['account.report.line'].search([ - ('report_id.country_id.code', '=', 'IT'), - ('code', '=like', 'VJ%'), - ]) - vj_lines_tags = it_tax_report_vj_lines.expression_ids._get_matching_tags() - for move in self: - if not move.is_purchase_document(): - move.l10n_it_edi_is_self_invoice = False - continue - invoice_lines_tags = move.line_ids.tax_tag_ids - ids_intersection = set(invoice_lines_tags.ids) & set(vj_lines_tags.ids) - move.l10n_it_edi_is_self_invoice = bool(ids_intersection) + purchases = self.filtered(lambda m: m.is_purchase_document()) + others = self - purchases + for move in others: + move.l10n_it_edi_is_self_invoice = False + if purchases: + it_tax_report_vj_lines = self.env['account.report.line'].search([ + ('report_id.country_id.code', '=', 'IT'), + ('code', '=like', 'VJ%') + ]) + vj_lines_tags = it_tax_report_vj_lines.expression_ids._get_matching_tags() + for move in purchases: + invoice_lines_tags = move.line_ids.tax_tag_ids + ids_intersection = set(invoice_lines_tags.ids) & set(vj_lines_tags.ids) + move.l10n_it_edi_is_self_invoice = bool(ids_intersection) + + def _l10n_it_edi_exempt_reason_tag_mapping(self): + return { + "N3.2": "VJ3", + "N3.3": "VJ1", + "N6.1": "VJ6", + "N6.2": "VJ7", + "N6.3": "VJ12", + "N6.4": "VJ13", + "N6.5": "VJ14", + "N6.6": "VJ15", + "N6.7": "VJ16", + "N6.8": "VJ17", + } # ------------------------------------------------------------------------- # Overrides @@ -327,7 +343,7 @@ class AccountMove(models.Model): document_type = self._l10n_it_edi_get_document_type() # Represent if the document is a reverse charge refund in a single variable - reverse_charge = document_type in ['TD17', 'TD18', 'TD19'] + reverse_charge = document_type in ['TD16', 'TD17', 'TD18', 'TD19'] is_downpayment = document_type in ['TD02'] reverse_charge_refund = self.move_type == 'in_refund' and reverse_charge convert_to_euros = self.currency_id.name != 'EUR' @@ -479,6 +495,7 @@ class AccountMove(models.Model): 'partner_country_code': partner_values.get('country_code', False), 'simplified': self._l10n_it_edi_is_simplified(), 'self_invoice': self.l10n_it_edi_is_self_invoice, + 'tax_tags': {tag for tag in self.line_ids.tax_tag_ids.mapped(lambda x: (x.name or '').upper().replace("+", "").replace("-", "")) if tag}, 'downpayment': self._is_downpayment(), 'services_or_goods': services_or_goods, 'goods_in_italy': services_or_goods == 'consu' and self._l10n_it_edi_goods_in_italy(), @@ -518,42 +535,54 @@ class AccountMove(models.Model): 'simplified': False, 'self_invoice': True, 'partner_country_code': "SM"}, + 'TD16': {'move_types': ['in_invoice', 'in_refund'], + 'import_type': 'in_invoice', + 'simplified': False, + 'self_invoice': True, + 'tax_tags': {'VJ6', 'VJ7', 'VJ8', 'VJ12', 'VJ13', 'VJ14', 'VJ15', 'VJ16', 'VJ17'}}, 'TD17': {'move_types': ['in_invoice', 'in_refund'], 'import_type': 'in_invoice', 'simplified': False, 'self_invoice': True, - 'services_or_goods': "service"}, + 'services_or_goods': "service", + 'tax_tags': {'VJ3'}}, 'TD18': {'move_types': ['in_invoice', 'in_refund'], 'import_type': 'in_invoice', 'simplified': False, 'self_invoice': True, 'services_or_goods': "consu", 'goods_in_italy': False, - 'partner_in_eu': True}, + 'partner_in_eu': True, + 'tax_tags': {'VJ9'}}, 'TD19': {'move_types': ['in_invoice', 'in_refund'], 'import_type': 'in_invoice', 'simplified': False, 'self_invoice': True, 'services_or_goods': "consu", - 'goods_in_italy': True}, + 'goods_in_italy': True, + 'tax_tags': {'VJ3'}}, } def _l10n_it_edi_get_document_type(self): - """ Compare the features of the invoice to the requirements of each TDxx FatturaPA - document type until you find a valid one. """ + """ Compare the features of the invoice to the requirements of each Document Type (TDxx) + FatturaPA until you find a valid one. """ + + def compare(actual_values, expected_values): + """ Compare a single entry from the invoice features with the one of the document_type """ + if isinstance(expected_values, set | list | tuple): + # i.e. When we compare actual tax_tags from the invoice with expected tags, we see if there is at least one in common + if isinstance(actual_values, set): + return actual_values & set(expected_values) + # i.e. When we compare the move_type with the available ones, these can be more than one + return actual_values in expected_values + # We compare other features directly, one on one + return actual_values == expected_values + invoice_features = self._l10n_it_edi_features_for_document_type_selection() - for code, document_type_features in self._l10n_it_edi_document_type_mapping().items(): - comparisons = [] - for key, invoice_feature in invoice_features.items(): - if key not in document_type_features: - continue - document_type_feature = document_type_features.get(key) - if isinstance(document_type_feature, list): - comparisons.append(invoice_feature in document_type_feature) - else: - comparisons.append(invoice_feature == document_type_feature) - if all(comparisons): - return code + for document_type_code, document_type_features in self._l10n_it_edi_document_type_mapping().items(): + # By using a generator instead of a list, we can avoid some comparisons + if all(compare(invoice_values, document_type_features[k]) for k, invoice_values in invoice_features.items() if k in document_type_features): + return document_type_code return False def _l10n_it_edi_is_simplified_document_type(self, document_type): @@ -701,21 +730,30 @@ class AccountMove(models.Model): return partner return self.env['res.partner'] - def _l10n_it_edi_search_tax_for_import(self, company, percentage, extra_domain=None): + def _l10n_it_edi_search_tax_for_import(self, company, percentage, extra_domain=None, l10n_it_exempt_reason=None): """ Returns the VAT, Withholding or Pension Fund tax that suits the conditions given and matches the percentage found in the XML for the company. """ + domain = [ *self.env['account.tax']._check_company_domain(company), - ('amount', '=', percentage), ('amount_type', '=', 'percent'), ('type_tax_use', '=', 'purchase'), ] + (extra_domain or []) - # As we're importing vendor bills, we're excluding Reverse Charge Taxes - # which have a [100.0, 100.0, -100.0] repartition lines factor_percent distribution. - # We only allow for taxes that have all positive repartition lines factor_percent distribution. - taxes = self.env['account.tax'].search(domain).filtered( - lambda tax: all(rep_line.factor_percent >= 0 for rep_line in tax.invoice_repartition_line_ids)) + # We suppose we're importing a file that comes in as a customer invoice where the sale tax will be 0%. + # To retrieve the correct purchase tax, we examine the sale tax's l10n_it_exempt_reason. + # We determine whether the l10n_it_exempt_reason is specific to reverse charge. + reversed_tax_tag = self._l10n_it_edi_exempt_reason_tag_mapping().get(l10n_it_exempt_reason, '') + if not reversed_tax_tag: + # Normal VAT taxes have a known percentage and generally have all positive repartition lines + domain += [('amount', '=', percentage), ('l10n_it_exempt_reason', '=', l10n_it_exempt_reason)] + taxes = self.env['account.tax'].search(domain).filtered( + lambda tax: all(rep_line.factor_percent >= 0 for rep_line in tax.invoice_repartition_line_ids)) + else: + # In case of reverse charge, the purchase tax has a negative repartition line. + domain += [('invoice_repartition_line_ids.tag_ids.name', '=', f'+{reversed_tax_tag.lower()}')] + taxes = self.env['account.tax'].search(domain, order="amount desc").filtered( + lambda tax: any(rep_line.factor_percent < 0 for rep_line in tax.invoice_repartition_line_ids)) return taxes[0] if taxes else taxes @@ -978,9 +1016,8 @@ class AccountMove(models.Model): move_line.tax_ids = [] if percentage is not None: - l10n_it_exempt_reason = get_text(element, './/Natura') or False - conditions = [('l10n_it_exempt_reason', '=', l10n_it_exempt_reason)] - if tax := self._l10n_it_edi_search_tax_for_import(company, percentage, conditions): + l10n_it_exempt_reason = get_text(element, './/Natura').upper() or False + if tax := self._l10n_it_edi_search_tax_for_import(company, percentage, None, l10n_it_exempt_reason=l10n_it_exempt_reason): move_line.tax_ids += tax else: message = Markup("
").join(( diff --git a/addons/l10n_it_edi/tests/common.py b/addons/l10n_it_edi/tests/common.py index 066048085da..292112e5b88 100644 --- a/addons/l10n_it_edi/tests/common.py +++ b/addons/l10n_it_edi/tests/common.py @@ -113,6 +113,10 @@ class TestItEdi(AccountTestInvoicingCommon): raise def _assert_import_invoice(self, filename, expected_values_list, xml_to_apply=None): + """ Tests an invoice imported from an XML vendor bill file on the filesystem + against expected values. XPATHs can be applied with the `xml_to_apply` + argument to the XML content before it's imported. + """ path = f'{self.module}/tests/import_xmls/{filename}' with tools.file_open(path, mode='rb') as fd: import_content = fd.read() diff --git a/addons/l10n_it_edi/tests/export_xmls/invoice_reverse_charge.xml b/addons/l10n_it_edi/tests/export_xmls/invoice_external_reverse_charge.xml similarity index 100% rename from addons/l10n_it_edi/tests/export_xmls/invoice_reverse_charge.xml rename to addons/l10n_it_edi/tests/export_xmls/invoice_external_reverse_charge.xml diff --git a/addons/l10n_it_edi/tests/export_xmls/invoice_internal_reverse_charge.xml b/addons/l10n_it_edi/tests/export_xmls/invoice_internal_reverse_charge.xml new file mode 100644 index 00000000000..898d3d02ec7 --- /dev/null +++ b/addons/l10n_it_edi/tests/export_xmls/invoice_internal_reverse_charge.xml @@ -0,0 +1,129 @@ + + + + + + IT + 01234560157 + + ___ignore___ + FPR12 + 0000000 + + 0266766700 + test@test.it + + + + + + IT + 01234560157 + + 01234560157 + + company_2_data + + RF01 + + + 1234 Test Street + 12345 + Prova + IT + + + + + + IT + 00465840031 + + 93026890017 + + Alessi + + + + Via Privata Alessi 6 + 28887 + Milan + IT + + + + + + + TD01 + EUR + 2022-03-24 + ___ignore___ + 750.00 + + + + + 1 + + Construction subcontracting service January + + 1.00 + 350.000000 + 350.00 + 0.00 + N6.3 + + + 2 + + Construction subcontracting service February + + 1.00 + 300.000000 + 300.00 + 0.00 + N6.3 + + + 3 + + Construction subcontracting service March + + 1.00 + 50.000000 + 50.00 + 0.00 + N6.3 + + + 4 + + Construction subcontracting service April + + 1.00 + 50.000000 + 50.00 + 0.00 + N6.3 + + + 0.00 + N6.3 + 750.00 + 0.00 + I + test + + + + TP02 + + MP05 + 2022-03-24 + 750.00 + ___ignore___ + + + + diff --git a/addons/l10n_it_edi/tests/import_xmls/IT01234567888_FPR01.xml b/addons/l10n_it_edi/tests/import_xmls/IT01234567888_FPR01.xml index 7c602f58685..e6529911b18 100644 --- a/addons/l10n_it_edi/tests/import_xmls/IT01234567888_FPR01.xml +++ b/addons/l10n_it_edi/tests/import_xmls/IT01234567888_FPR01.xml @@ -99,8 +99,7 @@ 5.00 22.00 - - + 2 OtherAccount 3.00 @@ -108,7 +107,6 @@ 24.00 22.00 - 3 GuessTaxes @@ -116,13 +114,10 @@ 10.00 10.00 - - 10.00 22.00 - - 39.00 - 7.38 + 29.00 + 6.38 I @@ -131,7 +126,7 @@ MP01 2015-01-30 - 46.38 + 36.48 diff --git a/addons/l10n_it_edi/tests/import_xmls/IT01234567891_FPR01.xml b/addons/l10n_it_edi/tests/import_xmls/IT01234567891_FPR01.xml new file mode 100644 index 00000000000..3a4e5ea8283 --- /dev/null +++ b/addons/l10n_it_edi/tests/import_xmls/IT01234567891_FPR01.xml @@ -0,0 +1,129 @@ + + + + + + IT + 01234560157 + + ___ignore___ + FPR12 + 0000000 + + 0266766700 + test@test.it + + + + + + IT + 00465840031 + + 93026890017 + + Alessi + + RF01 + + + Via Privata Alessi 6 + 28887 + Milan + IT + + + + + + IT + 01234560157 + + 01234560157 + + company_2_data + + + + 1234 Test Street + 12345 + Prova + IT + + + + + + + TD01 + EUR + 2022-03-24 + ___ignore___ + 750.00 + + + + + 1 + + Construction subcontracting service January + + 1.00 + 350.000000 + 350.00 + 0.00 + N6.3 + + + 2 + + Construction subcontracting service February + + 1.00 + 300.000000 + 300.00 + 0.00 + N6.3 + + + 3 + + Construction subcontracting service March + + 1.00 + 50.000000 + 50.00 + 0.00 + N6.3 + + + 4 + + Construction subcontracting service April + + 1.00 + 50.000000 + 50.00 + 0.00 + N6.3 + + + 0.00 + N6.3 + 750.00 + 0.00 + I + test + + + + TP02 + + MP05 + 2022-03-24 + 750.00 + ___ignore___ + + + + diff --git a/addons/l10n_it_edi/tests/test_edi_reverse_charge.py b/addons/l10n_it_edi/tests/test_edi_reverse_charge.py index a6376f15b94..e104d2d5254 100644 --- a/addons/l10n_it_edi/tests/test_edi_reverse_charge.py +++ b/addons/l10n_it_edi/tests/test_edi_reverse_charge.py @@ -3,7 +3,7 @@ from collections import namedtuple -from odoo import Command +from odoo import Command, fields from odoo.tests import tagged from odoo.addons.l10n_it_edi.tests.common import TestItEdi @@ -71,7 +71,7 @@ class TestItEdiReverseCharge(TestItEdi): # Purchase tax 4% with Reverse Charge cls.purchase_tax_4p = cls.env['account.tax'].with_company(cls.company).create(tax_data) - # Purchase tax 4% with Reverse Charge, targeting the tax grid for import of goods + # Purchase tax 4% with External Reverse Charge, targeting the tax grid for import of goods # already in Italy in a VAT deposit cls.purchase_tax_4p_already_in_italy = cls.env['account.tax'].with_company(cls.company).create({ **tax_data, @@ -86,6 +86,22 @@ class TestItEdiReverseCharge(TestItEdi): RepartitionLine(-100, 'tax', False)), }) + # Purchase tax 22% with Reverse Charge, targeting the tax grid for Construction Subcontractors + # already in Italy in a VAT deposit + cls.purchase_tax_vj12 = cls.env['account.tax'].with_company(cls.company).create({ + **tax_data, + 'name': '22% purchase RC Construction Subcontractors', + 'amount': 22.0, + 'invoice_repartition_line_ids': repartition_lines( + RepartitionLine(100, 'base', ('+03', '+vj12')), + RepartitionLine(100, 'tax', ('+5v',)), + RepartitionLine(-100, 'tax', ('-4v',))), + 'refund_repartition_line_ids': repartition_lines( + RepartitionLine(100, 'base', ('-03', '-vj12')), + RepartitionLine(100, 'tax', False), + RepartitionLine(-100, 'tax', False)), + }) + # Purchase tax 22% with Reverse Charge cls.purchase_tax_22p = cls.env['account.tax'].with_company(cls.company).create({ **tax_data, @@ -97,13 +113,24 @@ class TestItEdiReverseCharge(TestItEdi): cls.sale_tax_0v = cls.env['account.tax'].with_company(cls.company).create({ **tax_data, 'type_tax_use': 'sale', - 'amount': 0, + 'amount': 0.0, 'amount_type': 'percent', 'l10n_it_exempt_reason': 'N1', 'l10n_it_law_reference': 'test', }) - def test_invoice_reverse_charge(self): + # Export tax 0% Internal Reverse Charge + cls.sale_tax_n63 = cls.env['account.tax'].with_company(cls.company).create({ + **tax_data, + 'name': 'Construction subcontractors', + 'type_tax_use': 'sale', + 'amount': 0.0, + 'amount_type': 'percent', + 'l10n_it_exempt_reason': 'N6.3', + 'l10n_it_law_reference': 'test', + }) + + def test_invoice_external_reverse_charge(self): invoice = self.env['account.move'].with_company(self.company).create({ 'move_type': 'out_invoice', 'invoice_date': '2022-03-24', @@ -126,7 +153,26 @@ class TestItEdiReverseCharge(TestItEdi): ], }) invoice.action_post() - self._assert_export_invoice(invoice, 'invoice_reverse_charge.xml') + self._assert_export_invoice(invoice, 'invoice_external_reverse_charge.xml') + + def test_invoice_internal_reverse_charge(self): + invoice = self.env['account.move'].with_company(self.company).create({ + 'move_type': 'out_invoice', + 'invoice_date': '2022-03-24', + 'invoice_date_due': '2022-03-24', + 'partner_id': self.italian_partner_a.id, + 'partner_bank_id': self.test_bank.id, + 'invoice_line_ids': [ + Command.create({ + 'name': f"Construction subcontracting service {month}", + 'product_id': self.product_a.id, + 'price_unit': price, + 'tax_ids': [Command.set(self.sale_tax_n63.ids)], + }) for month, price in [("January", 350.0), ("February", 300.0), ("March", 50.0), ("April", 50.0)] + ], + }) + invoice.action_post() + self._assert_export_invoice(invoice, 'invoice_internal_reverse_charge.xml') def test_bill_reverse_charge_and_refund(self): bill = self.env['account.move'].with_company(self.company).create({ @@ -206,3 +252,32 @@ class TestItEdiReverseCharge(TestItEdi): }) bill.action_post() self._assert_export_invoice(bill, 'bill_reverse_charge_san_marino.xml') + + def test_receive_bill_reverse_charge_internal(self): + """ Imported Internal Reverse Charge bill about Construction Subcontractors + has the Sale 0% RC Tax Exemption N6.3 tax turned into Purchase 22% RC tax, + targeting tag +VJ12 + """ + invoice = self._assert_import_invoice('IT01234567891_FPR01.xml', [{ + 'invoice_date': fields.Date.from_string('2022-03-24'), + 'amount_untaxed': 750.0, + 'amount_tax': 0.0, + 'invoice_line_ids': [{ + 'name': 'Construction subcontracting service January', + 'price_unit': 350.0, + }, { + 'name': 'Construction subcontracting service February', + 'price_unit': 300.0, + }, { + 'name': 'Construction subcontracting service March', + 'price_unit': 50.0, + }, { + 'name': 'Construction subcontracting service April', + 'price_unit': 50.0, + }] + }]) + for line in invoice.invoice_line_ids: + self.assertEqual(len(line.tax_ids), 1) + rc_tax = line.tax_ids[0] + self.assertEqual(rc_tax.amount, 22.0) + self.assertTrue('+vj12' in rc_tax.invoice_repartition_line_ids[0].tag_ids.mapped("name")) diff --git a/addons/l10n_it_edi_withholding/models/account_move.py b/addons/l10n_it_edi_withholding/models/account_move.py index 18489f1238f..709c2420fd2 100644 --- a/addons/l10n_it_edi_withholding/models/account_move.py +++ b/addons/l10n_it_edi_withholding/models/account_move.py @@ -117,13 +117,13 @@ class AccountMove(models.Model): # Import # ------------------------------------------------------------------------- - def _l10n_it_edi_search_tax_for_import(self, company, percentage, extra_domain=None, vat_only=True): + def _l10n_it_edi_search_tax_for_import(self, company, percentage, extra_domain=None, vat_only=True, l10n_it_exempt_reason=False): """ In case no withholding_type or pension_fund is specified, exclude taxes that have it. It means that we're searching for VAT taxes, especially in the base l10n_it_edi module """ if vat_only: - extra_domain += [('l10n_it_withholding_type', '=', False), ('l10n_it_pension_fund_type', '=', False)] - return super()._l10n_it_edi_search_tax_for_import(company, percentage, extra_domain) + extra_domain = (extra_domain or []) + [('l10n_it_withholding_type', '=', False), ('l10n_it_pension_fund_type', '=', False)] + return super()._l10n_it_edi_search_tax_for_import(company, percentage, extra_domain=extra_domain, l10n_it_exempt_reason=l10n_it_exempt_reason) def _l10n_it_edi_get_extra_info(self, company, document_type, body_tree): extra_info, message_to_log = super()._l10n_it_edi_get_extra_info(company, document_type, body_tree)