diff --git a/addons/l10n_be/migrations/13.0.2.0/openupgrade_analysis_work.txt b/addons/l10n_be/migrations/13.0.2.0/openupgrade_analysis_work.txt new file mode 100644 index 000000000000..4e72134ed4fe --- /dev/null +++ b/addons/l10n_be/migrations/13.0.2.0/openupgrade_analysis_work.txt @@ -0,0 +1,172 @@ +---Models in module 'l10n_be'--- +---Fields in module 'l10n_be'--- +---XML records in module 'l10n_be'--- +DEL account.account.tag: l10n_be.tax_tag_00 +DEL account.account.tag: l10n_be.tax_tag_01 +DEL account.account.tag: l10n_be.tax_tag_02 +DEL account.account.tag: l10n_be.tax_tag_03 +DEL account.account.tag: l10n_be.tax_tag_44 +DEL account.account.tag: l10n_be.tax_tag_45 +DEL account.account.tag: l10n_be.tax_tag_46L +DEL account.account.tag: l10n_be.tax_tag_46T +DEL account.account.tag: l10n_be.tax_tag_47 +DEL account.account.tag: l10n_be.tax_tag_48s44 +DEL account.account.tag: l10n_be.tax_tag_48s46L +DEL account.account.tag: l10n_be.tax_tag_48s46T +DEL account.account.tag: l10n_be.tax_tag_49 +DEL account.account.tag: l10n_be.tax_tag_54 +DEL account.account.tag: l10n_be.tax_tag_55 +DEL account.account.tag: l10n_be.tax_tag_56 +DEL account.account.tag: l10n_be.tax_tag_57 +DEL account.account.tag: l10n_be.tax_tag_59 +DEL account.account.tag: l10n_be.tax_tag_61 +DEL account.account.tag: l10n_be.tax_tag_62 +DEL account.account.tag: l10n_be.tax_tag_63 +DEL account.account.tag: l10n_be.tax_tag_64 +DEL account.account.tag: l10n_be.tax_tag_81 +DEL account.account.tag: l10n_be.tax_tag_81_not_deductible +DEL account.account.tag: l10n_be.tax_tag_82 +DEL account.account.tag: l10n_be.tax_tag_82_not_deductible +DEL account.account.tag: l10n_be.tax_tag_83 +DEL account.account.tag: l10n_be.tax_tag_83_not_deductible +DEL account.account.tag: l10n_be.tax_tag_84 +DEL account.account.tag: l10n_be.tax_tag_85 +DEL account.account.tag: l10n_be.tax_tag_85_not_deductible +DEL account.account.tag: l10n_be.tax_tag_86 +DEL account.account.tag: l10n_be.tax_tag_87 +DEL account.account.tag: l10n_be.tax_tag_88 +NEW account.account.template: l10n_be.a4001 +NEW account.account.template: l10n_be.a62021 +NEW account.account.template: l10n_be.a62022 +NEW account.account.template: l10n_be.a6231 +NEW account.account.template: l10n_be.a7492 +NEW account.fiscal.position.template: l10n_be.fiscal_position_template_5 +NEW account.reconcile.model.template: l10n_be.compte_attente_template +DEL account.tax.group: l10n_be.tax_group_tva_0_eu (noupdate) +DEL account.tax.group: l10n_be.tax_group_tva_12_cocont (noupdate) +DEL account.tax.group: l10n_be.tax_group_tva_12_eu (noupdate) +DEL account.tax.group: l10n_be.tax_group_tva_12_non_eu (noupdate) +DEL account.tax.group: l10n_be.tax_group_tva_21_50_deductible (noupdate) +DEL account.tax.group: l10n_be.tax_group_tva_21_cocont (noupdate) +DEL account.tax.group: l10n_be.tax_group_tva_21_eu (noupdate) +DEL account.tax.group: l10n_be.tax_group_tva_21_non_eu (noupdate) +DEL account.tax.group: l10n_be.tax_group_tva_6_cocont (noupdate) +DEL account.tax.group: l10n_be.tax_group_tva_6_eu (noupdate) +DEL account.tax.group: l10n_be.tax_group_tva_6_non_eu (noupdate) +NEW account.tax.report.line: l10n_be.tax_report_line_00 +NEW account.tax.report.line: l10n_be.tax_report_line_01 +NEW account.tax.report.line: l10n_be.tax_report_line_02 +NEW account.tax.report.line: l10n_be.tax_report_line_03 +NEW account.tax.report.line: l10n_be.tax_report_line_44 +NEW account.tax.report.line: l10n_be.tax_report_line_45 +NEW account.tax.report.line: l10n_be.tax_report_line_46L +NEW account.tax.report.line: l10n_be.tax_report_line_46T +NEW account.tax.report.line: l10n_be.tax_report_line_47 +NEW account.tax.report.line: l10n_be.tax_report_line_48s44 +NEW account.tax.report.line: l10n_be.tax_report_line_48s46L +NEW account.tax.report.line: l10n_be.tax_report_line_48s46T +NEW account.tax.report.line: l10n_be.tax_report_line_49 +NEW account.tax.report.line: l10n_be.tax_report_line_54 +NEW account.tax.report.line: l10n_be.tax_report_line_55 +NEW account.tax.report.line: l10n_be.tax_report_line_56 +NEW account.tax.report.line: l10n_be.tax_report_line_57 +NEW account.tax.report.line: l10n_be.tax_report_line_59 +NEW account.tax.report.line: l10n_be.tax_report_line_61 +NEW account.tax.report.line: l10n_be.tax_report_line_62 +NEW account.tax.report.line: l10n_be.tax_report_line_63 +NEW account.tax.report.line: l10n_be.tax_report_line_64 +NEW account.tax.report.line: l10n_be.tax_report_line_71 +NEW account.tax.report.line: l10n_be.tax_report_line_72 +NEW account.tax.report.line: l10n_be.tax_report_line_81 +NEW account.tax.report.line: l10n_be.tax_report_line_82 +NEW account.tax.report.line: l10n_be.tax_report_line_83 +NEW account.tax.report.line: l10n_be.tax_report_line_84 +NEW account.tax.report.line: l10n_be.tax_report_line_85 +NEW account.tax.report.line: l10n_be.tax_report_line_86 +NEW account.tax.report.line: l10n_be.tax_report_line_87 +NEW account.tax.report.line: l10n_be.tax_report_line_88 +NEW account.tax.report.line: l10n_be.tax_report_title_operations +NEW account.tax.report.line: l10n_be.tax_report_title_operations_entree +NEW account.tax.report.line: l10n_be.tax_report_title_operations_sortie +NEW account.tax.report.line: l10n_be.tax_report_title_operations_sortie_46 +NEW account.tax.report.line: l10n_be.tax_report_title_operations_sortie_48 +NEW account.tax.report.line: l10n_be.tax_report_title_taxes +NEW account.tax.report.line: l10n_be.tax_report_title_taxes_deductibles +NEW account.tax.report.line: l10n_be.tax_report_title_taxes_dues +NEW account.tax.report.line: l10n_be.tax_report_title_taxes_soldes +DEL account.tax.template: l10n_be.attn_VAT-IN-V61 +DEL account.tax.template: l10n_be.attn_VAT-IN-V62 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-06-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-06-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-06-EU-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-06-EU-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-06-ROW-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-06-ROW-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-12-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-12-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-12-EU-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-12-EU-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-12-ROW-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-12-ROW-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-21-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-21-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-21-EU-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-21-EU-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-21-ROW-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V81-21-ROW-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-06-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-06-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-06-EU-G-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-06-EU-G-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-06-EU-S-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-06-EU-S-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-06-ROW-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-06-ROW-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-12-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-12-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-12-EU-G-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-12-EU-G-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-12-EU-S-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-12-EU-S-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-12-ROW-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-12-ROW-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-21-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-21-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-21-EU-G-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-21-EU-G-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-21-EU-S-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-21-EU-S-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-21-ROW-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-21-ROW-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-CAR-EXC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V82-CAR-EXC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-06-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-06-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-06-EU-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-06-EU-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-06-ROW-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-06-ROW-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-12-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-12-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-12-EU-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-12-EU-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-12-ROW-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-12-ROW-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-21-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-21-CC-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-21-EU-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-21-EU-C2 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-21-ROW-CC-C1 +DEL account.tax.template: l10n_be.attn_VAT-IN-V83-21-ROW-CC-C2 + +DEL res.country.state: l10n_be.state_be_van +DEL res.country.state: l10n_be.state_be_vbr +DEL res.country.state: l10n_be.state_be_vli +DEL res.country.state: l10n_be.state_be_vov +DEL res.country.state: l10n_be.state_be_vwv +DEL res.country.state: l10n_be.state_be_wbr +DEL res.country.state: l10n_be.state_be_wht +DEL res.country.state: l10n_be.state_be_wlg +DEL res.country.state: l10n_be.state_be_wlx +DEL res.country.state: l10n_be.state_be_wna +# DONE: pre-migration: delete ir.model.data entries diff --git a/addons/l10n_be/migrations/13.0.2.0/post-00-update_custom_taxes.py b/addons/l10n_be/migrations/13.0.2.0/post-00-update_custom_taxes.py new file mode 100644 index 000000000000..05948db64462 --- /dev/null +++ b/addons/l10n_be/migrations/13.0.2.0/post-00-update_custom_taxes.py @@ -0,0 +1,180 @@ +from openupgradelib import openupgrade +import logging + +_logger = logging.getLogger(__name__) + + +# This is tables of correspondance between old tags and the new tax tags +# based on the tax tag used in the account.tax.template +base_invoice_tag_xmlids = [ + ("tax_tag_00", "+00"), + ("tax_tag_01", "+01"), + ("tax_tag_02", "+02"), + ("tax_tag_03", "+03"), + ("tax_tag_44", "+44"), + ("tax_tag_45", "+45"), + ("tax_tag_46L", "+46L"), + ("tax_tag_46T", "+46T"), + ("tax_tag_47", "+47"), + ("tax_tag_81", "+81"), + ("tax_tag_82", "+82"), + ("tax_tag_83", "+83"), + ("tax_tag_86", "+86"), + ("tax_tag_87", "+87"), + ("tax_tag_88", "+88"), + ("tax_tag_81_not_deductible", "+81"), + ("tax_tag_82_not_deductible", "+82"), + ("tax_tag_83_not_deductible", "+83"), +] + +tax_invoice_tag_xmlids = [ + ("tax_tag_54", "+54"), + ("tax_tag_55", "-55"), + ("tax_tag_56", "-56"), + ("tax_tag_57", "-57"), + ("tax_tag_59", "+59"), + ("tax_tag_82", "+82"), + ("tax_tag_82_not_deductible", "+82"), +] + +base_refund_tag_xmlids = [ + ("tax_tag_48s44", "+48s44"), + ("tax_tag_48s46L", "+48s46L"), + ("tax_tag_48s46T", "+48s46T"), + ("tax_tag_49", "+49"), + ("tax_tag_81", "-81"), + ("tax_tag_82", "-82"), + ("tax_tag_83", "-83"), + ("tax_tag_84", "+84"), + ("tax_tag_85", "+85"), + ("tax_tag_86", "-86"), + ("tax_tag_87", "-87"), + ("tax_tag_88", "-88"), + ("tax_tag_81_not_deductible", "-81"), + ("tax_tag_82_not_deductible", "-82"), + ("tax_tag_83_not_deductible", "-83"), + ("tax_tag_85_not_deductible", "+85"), +] + +tax_refund_tag_xmlids = [ + ("tax_tag_63", "+63"), + ("tax_tag_64", "+64"), + ("tax_tag_82", "-82"), + ("tax_tag_82_not_deductible", "-82"), +] + +tax_unclassified_tag_xmlids = [ + "tax_tag_61", + "tax_tag_62", +] + + +def update_custom_account_tax(env): + """This function tries to update custom account.tax""" + # get old tags and extract their code names + correspondance = { + ("invoice", "base"): [ + (env.ref("l10n_be." + xmlid), new_name) + for xmlid, new_name in base_invoice_tag_xmlids + ], + ("invoice", "tax"): [ + (env.ref("l10n_be." + xmlid), new_name) + for xmlid, new_name in tax_invoice_tag_xmlids + ], + ("refund", "base"): [ + (env.ref("l10n_be." + xmlid), new_name) + for xmlid, new_name in base_refund_tag_xmlids + ], + ("refund", "tax"): [ + (env.ref("l10n_be." + xmlid), new_name) + for xmlid, new_name in tax_refund_tag_xmlids + ], + } + + def get_parent_tax_tags(account_tax): + """Return old tags that were linked on the parent tax if any""" + parent_tax_id = ( + env["account.tax"] + .with_context(active_test=False) + .search([("children_tax_ids", "in", account_tax.id)], limit=1) + ) + if not parent_tax_id: + return None + env.cr.execute( + """SELECT account_account_tag_id + FROM account_tax_account_tag + WHERE account_tax_id = %s + """, + (parent_tax_id.id,), + ) + parent_tax_tags = [int(res[0]) for res in env.cr.fetchall()] + parent_tax_tag_ids = ( + env["account.account.tag"] + .with_context(active_test=False) + .search([("id", "in", parent_tax_tags)]) + ) + return parent_tax_tag_ids + + def get_new_tag_names(tag_ids, old_tags): + """Return list of code and old_tags for tag_ids that exists in + old_tags + """ + keep_tags = [] + for tag in tag_ids: + for old_tag, new_name in old_tags: + if tag == old_tag: + keep_tags.append(new_name) + return keep_tags + + def repartition_lines_iter(account_tax): + """Special loop over repartition lines in an account.tax""" + for repartition in account_tax.invoice_repartition_line_ids: + yield ("invoice", repartition) + for repartition in account_tax.refund_repartition_line_ids: + yield ("refund", repartition) + + custom_account_tax_ids = ( + env["account.tax"] + .with_context(active_test=False) + .search([]) + ) + for account_tax in custom_account_tax_ids: + parent_tax_tag_ids = get_parent_tax_tags(account_tax) + for reptype, repartition in repartition_lines_iter(account_tax): + key = (reptype, repartition.repartition_type) + # keep right tags + if ( + repartition.repartition_type == "base" + and parent_tax_tag_ids is not None + ): + keep_tags = get_new_tag_names( + parent_tax_tag_ids, correspondance[key] + ) + else: + keep_tags = get_new_tag_names( + repartition.tag_ids, correspondance[key] + ) + # fix special cases + # tag "82" can not be set on tax lines if other tags are + # assigned to these tax lines + if ( + repartition.repartition_type == "tax" + and len(keep_tags) > 1 + ): + if "+82" in keep_tags: + keep_tags.remove("+82") + if "-82" in keep_tags: + keep_tags.remove("-82") + # convert tags + new_tags = env["account.account.tag"] + for new_name in keep_tags: + new_tag = env["account.account.tag"].search( + [("name", "=", new_name)], limit=1, + ) + new_tags |= new_tag + repartition.tag_ids = new_tags + + +@openupgrade.migrate() +def migrate(env, version): + update_custom_account_tax(env) diff --git a/addons/l10n_be/migrations/13.0.2.0/post-01-update_taxes_based_on_templates.py b/addons/l10n_be/migrations/13.0.2.0/post-01-update_taxes_based_on_templates.py new file mode 100644 index 000000000000..60bb599ca3bd --- /dev/null +++ b/addons/l10n_be/migrations/13.0.2.0/post-01-update_taxes_based_on_templates.py @@ -0,0 +1,1837 @@ +from openupgradelib import openupgrade +import logging + +_logger = logging.getLogger(__name__) + + +ACCOUNT_TAX_NAMES = [ + # In version 9.0 + { + "sale": { + "attn_VAT-OUT-21-S": "21% Services", + "attn_VAT-OUT-21-L": "21%", + "attn_VAT-OUT-12-S": "12% Services", + "attn_VAT-OUT-12-L": "12%", + "attn_VAT-OUT-06-S": "6% Services", + "attn_VAT-OUT-06-L": "6%", + "attn_VAT-OUT-00-S": "0% Services", + "attn_VAT-OUT-00-L": "0%", + "attn_VAT-OUT-00-CC": "0% Cocontractant", + "attn_VAT-OUT-00-EU-S": "0% EU Services", + "attn_VAT-OUT-00-EU-L": "0% EU L", + "attn_VAT-OUT-00-EU-T": "0% EU T", + "attn_VAT-OUT-00-ROW": "0% Export Non EU", + }, + "other": { + "attn_VAT-IN-V81-21": "21% Marchandises", + "attn_VAT-IN-V81-12": "12% Marchandises", + "attn_VAT-IN-V81-06": "6% Marchandises", + "attn_VAT-IN-V81-00": "0% Marchandises", + "attn_VAT-IN-V82-21-S": "21% Services", + "attn_VAT-IN-V82-21-G": "21% Biens divers", + "attn_VAT-IN-V82-12-S": "12% Services", + "attn_VAT-IN-V82-12-G": "12% Biens divers", + "attn_VAT-IN-V82-06-S": "6% Services", + "attn_VAT-IN-V82-06-G": "6% Biens divers", + "attn_VAT-IN-V82-00-S": "0% Services", + "attn_VAT-IN-V82-00-G": "0% Biens divers", + "attn_VAT-IN-V83-21": "21% Biens d'investissement", + "attn_VAT-IN-V83-12": "12% Biens d'investissement", + "attn_VAT-IN-V83-06": "6% Biens d'investissement", + "attn_VAT-IN-V83-00": "0% Biens d'investissement", + "attn_VAT-IN-V81-21-CC-C1": "VAT-IN-V81-21-CC-C1", + "attn_VAT-IN-V81-21-CC-C2": "VAT-IN-V81-21-CC-C2", + "attn_VAT-IN-V81-21-CC": "21% Cocontract. - Approvisionn. et marchandises", + "attn_VAT-IN-V81-12-CC-C1": "VAT-IN-V81-12-CC-C1", + "attn_VAT-IN-V81-12-CC-C2": "VAT-IN-V81-12-CC-C2", + "attn_VAT-IN-V81-12-CC": "12% Cocontract. - Approvisionn. et marchandises", + "attn_VAT-IN-V81-06-CC-C1": "VAT-IN-V81-06-CC-C1", + "attn_VAT-IN-V81-06-CC-C2": "VAT-IN-V81-06-CC-C2", + "attn_VAT-IN-V81-06-CC": "TVA Déductible 6% Cocontract. - Approvisionn. et marchandises", + "attn_VAT-IN-V81-00-CC": "TVA à l'entrée 0% Cocontract. - Approvisionn. et marchandises", + "attn_VAT-IN-V82-21-CC-C1": "VAT-IN-V82-21-CC-C1", + "attn_VAT-IN-V82-21-CC-C2": "VAT-IN-V82-21-CC-C2", + "attn_VAT-IN-V82-21-CC": "TVA Déductible 21% Cocontract. - Services and other goods", + "attn_VAT-IN-V82-12-CC-C1": "VAT-IN-V82-12-CC-C1", + "attn_VAT-IN-V82-12-CC-C2": "VAT-IN-V82-12-CC-C2", + "attn_VAT-IN-V82-12-CC": "TVA Déductible 12% Cocontract. - Services and other goods", + "attn_VAT-IN-V82-06-CC-C1": "VAT-IN-V82-06-CC-C1", + "attn_VAT-IN-V82-06-CC-C2": "VAT-IN-V82-06-CC-C2", + "attn_VAT-IN-V82-06-CC": "TVA Déductible 6% Cocontract. - Services and other goods", + "attn_VAT-IN-V82-00-CC": "TVA à l'entrée 0% Cocontract. - Services and other goods", + "attn_VAT-IN-V83-21-CC-C1": "VAT-IN-V83-21-CC-C1", + "attn_VAT-IN-V83-21-CC-C2": "VAT-IN-V83-21-CC-C2", + "attn_VAT-IN-V83-21-CC": "TVA Déductible 21% Cocontract. - Biens d'investissement", + "attn_VAT-IN-V83-12-CC-C1": "VAT-IN-V83-12-CC-C1", + "attn_VAT-IN-V83-12-CC-C2": "VAT-IN-V83-12-CC-C2", + "attn_VAT-IN-V83-12-CC": "TVA Déductible 12% Cocontract. - Biens d'investissement", + "attn_VAT-IN-V83-06-CC-C1": "VAT-IN-V83-06-CC-C1", + "attn_VAT-IN-V83-06-CC-C2": "VAT-IN-V83-06-CC-C2", + "attn_VAT-IN-V83-06-CC": "TVA Déductible 6% Cocontract. - Biens d'investissement", + "attn_VAT-IN-V83-00-CC": "TVA à l'entrée 0% Cocontract. - Biens d'investissement", + "attn_VAT-IN-V82-CAR-EXC-C1": "Frais de voiture - TVA 50% Non Deductible", + "attn_VAT-IN-V82-CAR-EXC-C2": "Frais de voiture - TVA 50% Deductible (Prix Excl.)", + "attn_VAT-IN-V82-CAR-EXC": "TVA Entrant - Frais de voiture - VAT 50% Non Deductible (Price Excl.)", + "attn_VAT-IN-V81-21-EU-C1": "VAT-IN-V81-21-EU-C1", + "attn_VAT-IN-V81-21-EU-C2": "VAT-IN-V81-21-EU-C2", + "attn_VAT-IN-V81-21-EU": "TVA Déductible 21% Intracomm. - Approvisionn. et marchandises", + "attn_VAT-IN-V81-12-EU-C1": "VAT-IN-V81-12-EU-C1", + "attn_VAT-IN-V81-12-EU-C2": "VAT-IN-V81-12-EU-C2", + "attn_VAT-IN-V81-12-EU": "TVA Déductible 12% Intracomm. - Approvisionn. et marchandises", + "attn_VAT-IN-V81-06-EU-C1": "VAT-IN-V81-06-EU-C1", + "attn_VAT-IN-V81-06-EU-C2": "VAT-IN-V81-06-EU-C2", + "attn_VAT-IN-V81-06-EU": "TVA Déductible 6% Intracomm. - Approvisionn. et marchandises", + "attn_VAT-IN-V81-00-EU": "TVA à l'entrée 0% Intracomm. - Approvisionn. et marchandises", + "attn_VAT-IN-V82-21-EU-S-C1": "VAT-IN-V82-21-EU-S-C1", + "attn_VAT-IN-V82-21-EU-S-C2": "VAT-IN-V82-21-EU-S-C2", + "attn_VAT-IN-V82-21-EU-S": "TVA Déductible 21% Intracomm. - Services", + "attn_VAT-IN-V82-21-EU-G-C1": "VAT-IN-V82-21-EU-G-C1", + "attn_VAT-IN-V82-21-EU-G-C2": "VAT-IN-V82-21-EU-G-C2", + "attn_VAT-IN-V82-21-EU-G": "TVA Déductible 21% Intracomm. - Biens divers", + "attn_VAT-IN-V82-12-EU-S-C1": "VAT-IN-V82-12-EU-S-C1", + "attn_VAT-IN-V82-12-EU-S-C2": "VAT-IN-V82-12-EU-S-C2", + "attn_VAT-IN-V82-12-EU-S": "TVA Déductible 12% Intracomm. - Services", + "attn_VAT-IN-V82-12-EU-G-C1": "VAT-IN-V82-12-EU-G-C1", + "attn_VAT-IN-V82-12-EU-G-C2": "VAT-IN-V82-12-EU-G-C2", + "attn_VAT-IN-V82-12-EU-G": "TVA Déductible 12% Intracomm. - Biens divers", + "attn_VAT-IN-V82-06-EU-S-C1": "VAT-IN-V82-06-EU-S-C1", + "attn_VAT-IN-V82-06-EU-S-C2": "VAT-IN-V82-06-EU-S-C2", + "attn_VAT-IN-V82-06-EU-S": "TVA Déductible 6% Intracomm. - Services", + "attn_VAT-IN-V82-06-EU-G-C1": "VAT-IN-V82-06-EU-G-C1", + "attn_VAT-IN-V82-06-EU-G-C2": "VAT-IN-V82-06-EU-G-C2", + "attn_VAT-IN-V82-06-EU-G": "TVA Déductible 6% Intracomm. - Biens divers", + "attn_VAT-IN-V82-00-EU-S": "TVA à l'entrée 0% Intracomm. - Services", + "attn_VAT-IN-V83-21-EU-C1": "VAT-IN-V83-21-EU-C1", + "attn_VAT-IN-V83-21-EU-C2": "VAT-IN-V83-21-EU-C2", + "attn_VAT-IN-V83-21-EU": "TVA Déductible 21% Intracomm. - Biens d'investissement", + "attn_VAT-IN-V82-00-EU-G": "TVA à l'entrée 0% Intracomm. - Biens divers", + "attn_VAT-IN-V83-12-EU-C1": "VAT-IN-V83-12-EU-C1", + "attn_VAT-IN-V83-12-EU-C2": "VAT-IN-V83-12-EU-C2", + "attn_VAT-IN-V83-12-EU": "TVA Déductible 12% Intracomm. - Biens d'investissement", + "attn_VAT-IN-V83-06-EU-C1": "VAT-IN-V83-06-EU-C1", + "attn_VAT-IN-V83-06-EU-C2": "VAT-IN-V83-06-EU-C2", + "attn_VAT-IN-V83-06-EU": "TVA Déductible 6% Intracomm. - Biens d'investissement", + "attn_VAT-IN-V83-00-EU": "TVA à l'entrée 0% Intracomm. - Biens d'investissement", + "attn_VAT-IN-V81-21-ROW-CC-C1": "VAT-IN-V81-21-ROW-CC-C1", + "attn_VAT-IN-V81-21-ROW-CC-C2": "VAT-IN-V81-21-ROW-CC-C2", + "attn_VAT-IN-V81-21-ROW-CC": "TVA Déductible 21% Hors EU - Approvisionn. et marchandises", + "attn_VAT-IN-V81-12-ROW-CC-C1": "VAT-IN-V81-12-ROW-CC-C1", + "attn_VAT-IN-V81-12-ROW-CC-C2": "VAT-IN-V81-12-ROW-CC-C2", + "attn_VAT-IN-V81-12-ROW-CC": "TVA Déductible 12% Hors EU - Approvisionn. et marchandises", + "attn_VAT-IN-V81-06-ROW-CC-C1": "VAT-IN-V81-06-ROW-CC-C1", + "attn_VAT-IN-V81-06-ROW-CC-C2": "VAT-IN-V81-06-ROW-CC-C2", + "attn_VAT-IN-V81-06-ROW-CC": "TVA Déductible 6% Hors EU - Approvisionn. et marchandises", + "attn_VAT-IN-V81-00-ROW-CC": "TVA à l'entrée 0% Hors EU - Approvisionn. et marchandises", + "attn_VAT-IN-V82-21-ROW-CC-C1": "VAT-IN-V82-21-ROW-CC-C1", + "attn_VAT-IN-V82-21-ROW-CC-C2": "VAT-IN-V82-21-ROW-CC-C2", + "attn_VAT-IN-V82-21-ROW-CC": "TVA Déductible 21% Hors EU - Services and other goods", + "attn_VAT-IN-V82-12-ROW-CC-C1": "VAT-IN-V82-12-ROW-CC-C1", + "attn_VAT-IN-V82-12-ROW-CC-C2": "VAT-IN-V82-12-ROW-CC-C2", + "attn_VAT-IN-V82-12-ROW-CC": "TVA Déductible 12% Hors EU - Services and other goods", + "attn_VAT-IN-V82-06-ROW-CC-C1": "VAT-IN-V82-06-ROW-CC-C1", + "attn_VAT-IN-V82-06-ROW-CC-C2": "VAT-IN-V82-06-ROW-CC-C2", + "attn_VAT-IN-V82-06-ROW-CC": "TVA Déductible 6% Hors EU - Services and other goods", + "attn_VAT-IN-V82-00-ROW-CC": "TVA à l'entrée 0% Hors EU - Services and other goods", + "attn_VAT-IN-V83-21-ROW-CC-C1": "VAT-IN-V83-21-ROW-CC-C1", + "attn_VAT-IN-V83-21-ROW-CC-C2": "VAT-IN-V83-21-ROW-CC-C2", + "attn_VAT-IN-V83-21-ROW-CC": "TVA Déductible 21% Hors EU - Biens d'investissement", + "attn_VAT-IN-V83-12-ROW-CC-C1": "VAT-IN-V83-12-ROW-CC-C1", + "attn_VAT-IN-V83-12-ROW-CC-C2": "VAT-IN-V83-12-ROW-CC-C2", + "attn_VAT-IN-V83-12-ROW-CC": "TVA Déductible 12% Hors EU - Biens d'investissement", + "attn_VAT-IN-V83-06-ROW-CC-C1": "VAT-IN-V83-06-ROW-CC-C1", + "attn_VAT-IN-V83-06-ROW-CC-C2": "VAT-IN-V83-06-ROW-CC-C2", + "attn_VAT-IN-V83-06-ROW-CC": "TVA Déductible 6% Hors EU - Biens d'investissement", + "attn_VAT-IN-V83-00-ROW-CC": "0% Non EU - Biens d'investissement", + "attn_VAT-IN-V61": "Régularisation en faveur de l'état", + "attn_VAT-IN-V62": "Régularisation en faveur du déclarant", + }, + }, + + # In version 10.0 + { + "other": { + "attn_VAT-IN-V83-21": "21% Biens d'investissement", + "attn_VAT-IN-V83-12": "12% Biens d'investissement", + "attn_VAT-IN-V83-06": "6% Biens d'investissement", + "attn_VAT-IN-V83-00": "0% Biens d'investissement", + "attn_VAT-IN-V81-21-CC-C1": "VAT-IN-V81-21-CC-C1", + "attn_VAT-IN-V81-21-CC-C2": "VAT-IN-V81-21-CC-C2", + "attn_VAT-IN-V81-21-CC": "21% Cocontract. - Approvisionn. et marchandises", + "attn_VAT-IN-V81-12-CC-C1": "VAT-IN-V81-12-CC-C1", + "attn_VAT-IN-V81-12-CC-C2": "VAT-IN-V81-12-CC-C2", + "attn_VAT-IN-V81-12-CC": "12% Cocontract. - Approvisionn. et marchandises", + "attn_VAT-IN-V81-06-CC-C1": "VAT-IN-V81-06-CC-C1", + "attn_VAT-IN-V81-06-CC-C2": "VAT-IN-V81-06-CC-C2", + "attn_VAT-IN-V81-06-CC": "TVA Déductible 6% Cocontract. - Approvisionn. et marchandises", + "attn_VAT-IN-V81-00-CC": "TVA à l'entrée 0% Cocontract. - Approvisionn. et marchandises", + "attn_VAT-IN-V82-21-CC-C1": "VAT-IN-V82-21-CC-C1", + "attn_VAT-IN-V82-21-CC-C2": "VAT-IN-V82-21-CC-C2", + "attn_VAT-IN-V82-21-CC": "TVA Déductible 21% Cocontract. - Services and other goods", + "attn_VAT-IN-V82-12-CC-C1": "VAT-IN-V82-12-CC-C1", + "attn_VAT-IN-V82-12-CC-C2": "VAT-IN-V82-12-CC-C2", + "attn_VAT-IN-V82-12-CC": "TVA Déductible 12% Cocontract. - Services and other goods", + "attn_VAT-IN-V82-06-CC-C1": "VAT-IN-V82-06-CC-C1", + "attn_VAT-IN-V82-06-CC-C2": "VAT-IN-V82-06-CC-C2", + "attn_VAT-IN-V82-06-CC": "TVA Déductible 6% Cocontract. - Services and other goods", + "attn_VAT-IN-V82-00-CC": "TVA à l'entrée 0% Cocontract. - Services and other goods", + "attn_VAT-IN-V83-21-CC-C1": "VAT-IN-V83-21-CC-C1", + "attn_VAT-IN-V83-21-CC-C2": "VAT-IN-V83-21-CC-C2", + "attn_VAT-IN-V83-21-CC": "TVA Déductible 21% Cocontract. - Biens d'investissement", + "attn_VAT-IN-V83-12-CC-C1": "VAT-IN-V83-12-CC-C1", + "attn_VAT-IN-V83-12-CC-C2": "VAT-IN-V83-12-CC-C2", + "attn_VAT-IN-V83-12-CC": "TVA Déductible 12% Cocontract. - Biens d'investissement", + "attn_VAT-IN-V83-06-CC-C1": "VAT-IN-V83-06-CC-C1", + "attn_VAT-IN-V83-06-CC-C2": "VAT-IN-V83-06-CC-C2", + "attn_VAT-IN-V83-06-CC": "TVA Déductible 6% Cocontract. - Biens d'investissement", + "attn_VAT-IN-V83-00-CC": "TVA à l'entrée 0% Cocontract. - Biens d'investissement", + "attn_VAT-IN-V82-CAR-EXC-C1": "Frais de voiture - TVA 50% Non Deductible", + "attn_VAT-IN-V82-CAR-EXC-C2": "Frais de voiture - TVA 50% Deductible (Prix Excl.)", + "attn_VAT-IN-V82-CAR-EXC": "TVA Entrant - Frais de voiture - VAT 50% Non Deductible (Price Excl.)", + "attn_VAT-IN-V81-21-EU-C1": "VAT-IN-V81-21-EU-C1", + "attn_VAT-IN-V81-21-EU-C2": "VAT-IN-V81-21-EU-C2", + "attn_VAT-IN-V81-21-EU": "TVA Déductible 21% Intracomm. - Approvisionn. et marchandises", + "attn_VAT-IN-V81-12-EU-C1": "VAT-IN-V81-12-EU-C1", + "attn_VAT-IN-V81-12-EU-C2": "VAT-IN-V81-12-EU-C2", + "attn_VAT-IN-V81-12-EU": "TVA Déductible 12% Intracomm. - Approvisionn. et marchandises", + "attn_VAT-IN-V81-06-EU-C1": "VAT-IN-V81-06-EU-C1", + "attn_VAT-IN-V81-06-EU-C2": "VAT-IN-V81-06-EU-C2", + "attn_VAT-IN-V81-06-EU": "TVA Déductible 6% Intracomm. - Approvisionn. et marchandises", + "attn_VAT-IN-V81-00-EU": "TVA à l'entrée 0% Intracomm. - Approvisionn. et marchandises", + "attn_VAT-IN-V82-21-EU-S-C1": "VAT-IN-V82-21-EU-S-C1", + "attn_VAT-IN-V82-21-EU-S-C2": "VAT-IN-V82-21-EU-S-C2", + "attn_VAT-IN-V82-21-EU-S": "TVA Déductible 21% Intracomm. - Services", + "attn_VAT-IN-V82-21-EU-G-C1": "VAT-IN-V82-21-EU-G-C1", + "attn_VAT-IN-V82-21-EU-G-C2": "VAT-IN-V82-21-EU-G-C2", + "attn_VAT-IN-V82-21-EU-G": "TVA Déductible 21% Intracomm. - Biens divers", + "attn_VAT-IN-V82-12-EU-S-C1": "VAT-IN-V82-12-EU-S-C1", + "attn_VAT-IN-V82-12-EU-S-C2": "VAT-IN-V82-12-EU-S-C2", + "attn_VAT-IN-V82-12-EU-S": "TVA Déductible 12% Intracomm. - Services", + "attn_VAT-IN-V82-12-EU-G-C1": "VAT-IN-V82-12-EU-G-C1", + "attn_VAT-IN-V82-12-EU-G-C2": "VAT-IN-V82-12-EU-G-C2", + "attn_VAT-IN-V82-12-EU-G": "TVA Déductible 12% Intracomm. - Biens divers", + "attn_VAT-IN-V82-06-EU-S-C1": "VAT-IN-V82-06-EU-S-C1", + "attn_VAT-IN-V82-06-EU-S-C2": "VAT-IN-V82-06-EU-S-C2", + "attn_VAT-IN-V82-06-EU-S": "TVA Déductible 6% Intracomm. - Services", + "attn_VAT-IN-V82-06-EU-G-C1": "VAT-IN-V82-06-EU-G-C1", + "attn_VAT-IN-V82-06-EU-G-C2": "VAT-IN-V82-06-EU-G-C2", + "attn_VAT-IN-V82-06-EU-G": "TVA Déductible 6% Intracomm. - Biens divers", + "attn_VAT-IN-V82-00-EU-S": "TVA à l'entrée 0% Intracomm. - Services", + "attn_VAT-IN-V83-21-EU-C1": "VAT-IN-V83-21-EU-C1", + "attn_VAT-IN-V83-21-EU-C2": "VAT-IN-V83-21-EU-C2", + "attn_VAT-IN-V83-21-EU": "TVA Déductible 21% Intracomm. - Biens d'investissement", + "attn_VAT-IN-V82-00-EU-G": "TVA à l'entrée 0% Intracomm. - Biens divers", + "attn_VAT-IN-V83-12-EU-C1": "VAT-IN-V83-12-EU-C1", + "attn_VAT-IN-V83-12-EU-C2": "VAT-IN-V83-12-EU-C2", + "attn_VAT-IN-V83-12-EU": "TVA Déductible 12% Intracomm. - Biens d'investissement", + "attn_VAT-IN-V83-06-EU-C1": "VAT-IN-V83-06-EU-C1", + "attn_VAT-IN-V83-06-EU-C2": "VAT-IN-V83-06-EU-C2", + "attn_VAT-IN-V83-06-EU": "TVA Déductible 6% Intracomm. - Biens d'investissement", + "attn_VAT-IN-V83-00-EU": "TVA à l'entrée 0% Intracomm. - Biens d'investissement", + "attn_VAT-IN-V81-21-ROW-CC-C1": "VAT-IN-V81-21-ROW-CC-C1", + "attn_VAT-IN-V81-21-ROW-CC-C2": "VAT-IN-V81-21-ROW-CC-C2", + "attn_VAT-IN-V81-21-ROW-CC": "TVA Déductible 21% Hors EU - Approvisionn. et marchandises", + "attn_VAT-IN-V81-12-ROW-CC-C1": "VAT-IN-V81-12-ROW-CC-C1", + "attn_VAT-IN-V81-12-ROW-CC-C2": "VAT-IN-V81-12-ROW-CC-C2", + "attn_VAT-IN-V81-12-ROW-CC": "TVA Déductible 12% Hors EU - Approvisionn. et marchandises", + "attn_VAT-IN-V81-06-ROW-CC-C1": "VAT-IN-V81-06-ROW-CC-C1", + "attn_VAT-IN-V81-06-ROW-CC-C2": "VAT-IN-V81-06-ROW-CC-C2", + "attn_VAT-IN-V81-06-ROW-CC": "TVA Déductible 6% Hors EU - Approvisionn. et marchandises", + "attn_VAT-IN-V81-00-ROW-CC": "TVA à l'entrée 0% Hors EU - Approvisionn. et marchandises", + "attn_VAT-IN-V82-21-ROW-CC-C1": "VAT-IN-V82-21-ROW-CC-C1", + "attn_VAT-IN-V82-21-ROW-CC-C2": "VAT-IN-V82-21-ROW-CC-C2", + "attn_VAT-IN-V82-21-ROW-CC": "TVA Déductible 21% Hors EU - Services and other goods", + "attn_VAT-IN-V82-12-ROW-CC-C1": "VAT-IN-V82-12-ROW-CC-C1", + "attn_VAT-IN-V82-12-ROW-CC-C2": "VAT-IN-V82-12-ROW-CC-C2", + "attn_VAT-IN-V82-12-ROW-CC": "TVA Déductible 12% Hors EU - Services and other goods", + "attn_VAT-IN-V82-06-ROW-CC-C1": "VAT-IN-V82-06-ROW-CC-C1", + "attn_VAT-IN-V82-06-ROW-CC-C2": "VAT-IN-V82-06-ROW-CC-C2", + "attn_VAT-IN-V82-06-ROW-CC": "TVA Déductible 6% Hors EU - Services and other goods", + "attn_VAT-IN-V82-00-ROW-CC": "TVA à l'entrée 0% Hors EU - Services and other goods", + "attn_VAT-IN-V83-21-ROW-CC-C1": "VAT-IN-V83-21-ROW-CC-C1", + "attn_VAT-IN-V83-21-ROW-CC-C2": "VAT-IN-V83-21-ROW-CC-C2", + "attn_VAT-IN-V83-21-ROW-CC": "TVA Déductible 21% Hors EU - Biens d'investissement", + "attn_VAT-IN-V83-12-ROW-CC-C1": "VAT-IN-V83-12-ROW-CC-C1", + "attn_VAT-IN-V83-12-ROW-CC-C2": "VAT-IN-V83-12-ROW-CC-C2", + "attn_VAT-IN-V83-12-ROW-CC": "TVA Déductible 12% Hors EU - Biens d'investissement", + "attn_VAT-IN-V83-06-ROW-CC-C1": "VAT-IN-V83-06-ROW-CC-C1", + "attn_VAT-IN-V83-06-ROW-CC-C2": "VAT-IN-V83-06-ROW-CC-C2", + "attn_VAT-IN-V83-06-ROW-CC": "TVA Déductible 6% Hors EU - Biens d'investissement", + "attn_VAT-IN-V83-00-ROW-CC": "0% Non EU - Biens d'investissement", + "attn_VAT-IN-V61": "Régularisation en faveur de l'état", + "attn_VAT-IN-V62": "Régularisation en faveur du déclarant", + }, + }, + + # In version 11.0 + { + "sale": { + "attn_VAT-OUT-21-S": "21% S.", + "attn_VAT-OUT-21-L": "21%", + "attn_VAT-OUT-12-S": "12% S.", + "attn_VAT-OUT-12-L": "12%", + "attn_VAT-OUT-06-S": "6% S.", + "attn_VAT-OUT-06-L": "6%", + "attn_VAT-OUT-00-S": "0% S.", + "attn_VAT-OUT-00-L": "0%", + "attn_VAT-OUT-00-CC": "0% Cocont.", + "attn_VAT-OUT-00-EU-S": "0% EU S.", + "attn_VAT-OUT-00-EU-L": "0% EU M.", + "attn_VAT-OUT-00-EU-T": "0% EU T.", + "attn_VAT-OUT-00-ROW": "0% Non EU", + }, + "other": { + "attn_VAT-IN-V81-21": "21% M.", + "attn_VAT-IN-V81-12": "12% M.", + "attn_VAT-IN-V81-06": "6% M.", + "attn_VAT-IN-V81-00": "0% M.", + "attn_TVA-21-inclus-dans-prix": "21% S. TTC", + "attn_VAT-IN-V82-21-S": "21% S.", + "attn_VAT-IN-V82-21-G": "21% Biens divers", + "attn_VAT-IN-V82-12-S": "12% S.", + "attn_VAT-IN-V82-12-G": "12% Biens divers", + "attn_VAT-IN-V82-06-S": "6% S.", + "attn_VAT-IN-V82-06-G": "6% Biens divers", + "attn_VAT-IN-V82-00-S": "0% S.", + "attn_VAT-IN-V82-00-G": "0% Biens divers", + "attn_VAT-IN-V83-21": "21% Biens d'investissement", + "attn_VAT-IN-V83-12": "12% Biens d'investissement", + "attn_VAT-IN-V83-06": "6% Biens d'investissement", + "attn_VAT-IN-V83-00": "0% Biens d'investissement", + "attn_VAT-IN-V81-21-CC-C1": "21% Cocont. Déductible M.", + "attn_VAT-IN-V81-21-CC-C2": "21% Cocont. Récupérable M.", + "attn_VAT-IN-V81-21-CC": "21% Cocont. M.", + "attn_VAT-IN-V81-12-CC-C1": "12% Cocont. Déductible M.", + "attn_VAT-IN-V81-12-CC-C2": "12% Cocont. Récupérable M.", + "attn_VAT-IN-V81-12-CC": "12% Cocont. M.", + "attn_VAT-IN-V81-06-CC-C1": "6% Cocont. Déductible M.", + "attn_VAT-IN-V81-06-CC-C2": "6% Cocont. Récupérable M.", + "attn_VAT-IN-V81-06-CC": "6% Cocont. M.", + "attn_VAT-IN-V81-00-CC": "0% Cocont. M.", + "attn_VAT-IN-V82-21-CC-C1": "21% Cocont. Déductible S.", + "attn_VAT-IN-V82-21-CC-C2": "21% Cocont. Récupérable S.", + "attn_VAT-IN-V82-21-CC": "21% Cocont .S.", + "attn_VAT-IN-V82-12-CC-C1": "12% Cocont. Déductible S.", + "attn_VAT-IN-V82-12-CC-C2": "12% Cocont. Récupérable S.", + "attn_VAT-IN-V82-12-CC": "12% Cocont. S.", + "attn_VAT-IN-V82-06-CC-C1": "6% Cocont. Déductible S.", + "attn_VAT-IN-V82-06-CC-C2": "6% Cocont. Récupérable S.", + "attn_VAT-IN-V82-06-CC": "6% Cocont. S.", + "attn_VAT-IN-V82-00-CC": "0% Cocont. S.", + "attn_VAT-IN-V83-21-CC-C1": "21% Cocont. Déductible - Biens d'investissement", + "attn_VAT-IN-V83-21-CC-C2": "21% Cocont. Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-21-CC": "21% Cocont. - Biens d'investissement", + "attn_VAT-IN-V83-12-CC-C1": "12% Cocont. Déductible - Biens d'investissement", + "attn_VAT-IN-V83-12-CC-C2": "12% Cocont. Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-12-CC": "12% Cocont. - Biens d'investissement", + "attn_VAT-IN-V83-06-CC-C1": "6% Cocont. Déductible - Biens d'investissement", + "attn_VAT-IN-V83-06-CC-C2": "6% Cocont. Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-06-CC": "6% Cocont. - Biens d'investissement", + "attn_VAT-IN-V83-00-CC": "0% Cocont. - Biens d'investissement", + "attn_VAT-IN-V82-CAR-EXC-C1": "50% Non Déductible - Frais de voiture", + "attn_VAT-IN-V82-CAR-EXC-C2": "50% Déductible - Frais de voiture (Prix Excl.)", + "attn_VAT-IN-V82-CAR-EXC": "50% Non Déductible - Frais de voiture (Prix Excl.)", + "attn_VAT-IN-V81-21-EU-C1": "21% EU Déductible M.", + "attn_VAT-IN-V81-21-EU-C2": "21% EU Récupérable M.", + "attn_VAT-IN-V81-21-EU": "21% EU M.", + "attn_VAT-IN-V81-12-EU-C1": "12% EU Déductible M.", + "attn_VAT-IN-V81-12-EU-C2": "12% EU Récupérable M.", + "attn_VAT-IN-V81-12-EU": "12% EU M.", + "attn_VAT-IN-V81-06-EU-C1": "6% EU Déductible M.", + "attn_VAT-IN-V81-06-EU-C2": "6% EU Récupérable M.", + "attn_VAT-IN-V81-06-EU": "6% EU M.", + "attn_VAT-IN-V81-00-EU": "0% EU M.", + "attn_VAT-IN-V82-21-EU-S-C1": "21% EU Déductible S.", + "attn_VAT-IN-V82-21-EU-S-C2": "21% EU Récupérable S.", + "attn_VAT-IN-V82-21-EU-S": "21% EU S.", + "attn_VAT-IN-V82-21-EU-G-C1": "21% EU Déductible - Biens divers", + "attn_VAT-IN-V82-21-EU-G-C2": "21% EU Récupérable - Biens divers", + "attn_VAT-IN-V82-21-EU-G": "21% EU - Biens divers", + "attn_VAT-IN-V82-12-EU-S-C1": "12% EU Déductible S.", + "attn_VAT-IN-V82-12-EU-S-C2": "12% EU Récupérable S.", + "attn_VAT-IN-V82-12-EU-S": "12% EU S.", + "attn_VAT-IN-V82-12-EU-G-C1": "12% EU Déductible - Biens divers", + "attn_VAT-IN-V82-12-EU-G-C2": "TVA 12% EU Récupérable - Biens divers", + "attn_VAT-IN-V82-12-EU-G": "12% EU - Biens divers", + "attn_VAT-IN-V82-06-EU-S-C1": "6% EU Déductible S.", + "attn_VAT-IN-V82-06-EU-S-C2": "6% EU Récupérable S.", + "attn_VAT-IN-V82-06-EU-S": "6% EU S.", + "attn_VAT-IN-V82-06-EU-G-C1": "6% EU Déductible - Biens divers", + "attn_VAT-IN-V82-06-EU-G-C2": "6% EU Récupérable - Biens divers", + "attn_VAT-IN-V82-06-EU-G": "6% EU - Biens divers", + "attn_VAT-IN-V82-00-EU-S": "0% EU S.", + "attn_VAT-IN-V83-21-EU-C1": "21% EU Déductible - Biens d'investissement", + "attn_VAT-IN-V83-21-EU-C2": "21% EU Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-21-EU": "21% EU - Biens d'investissement", + "attn_VAT-IN-V82-00-EU-G": "0% EU - Biens divers", + "attn_VAT-IN-V83-12-EU-C1": "12% EU Déductible - Biens d'investissement", + "attn_VAT-IN-V83-12-EU-C2": "12% EU Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-12-EU": "12% EU - Biens d'investissement", + "attn_VAT-IN-V83-06-EU-C1": "6% EU Déductible - Biens d'investissement", + "attn_VAT-IN-V83-06-EU-C2": "6% EU Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-06-EU": "6% EU - Biens d'investissement", + "attn_VAT-IN-V83-00-EU": "0% EU - Biens d'investissement", + "attn_VAT-IN-V81-21-ROW-CC-C1": "21% Non EU Déductible M.", + "attn_VAT-IN-V81-21-ROW-CC-C2": "21% Non EU Récupérable M.", + "attn_VAT-IN-V81-21-ROW-CC": "21% Non EU M.", + "attn_VAT-IN-V81-12-ROW-CC-C1": "12% Non EU Déductible M.", + "attn_VAT-IN-V81-12-ROW-CC-C2": "12% Non EU Récupérable M.", + "attn_VAT-IN-V81-12-ROW-CC": "12% Non EU M.", + "attn_VAT-IN-V81-06-ROW-CC-C1": "6% Non EU Déductible M.", + "attn_VAT-IN-V81-06-ROW-CC-C2": "6% Non EU Récupérable M.", + "attn_VAT-IN-V81-06-ROW-CC": "6% Non EU M.", + "attn_VAT-IN-V81-00-ROW-CC": "0% Non EU M.", + "attn_VAT-IN-V82-21-ROW-CC-C1": "21% Non EU Déductible S.", + "attn_VAT-IN-V82-21-ROW-CC-C2": "21% Non EU Récupérable S.", + "attn_VAT-IN-V82-21-ROW-CC": "21% Non EU S.", + "attn_VAT-IN-V82-12-ROW-CC-C1": "12% Non EU Déductible S.", + "attn_VAT-IN-V82-12-ROW-CC-C2": "12% Non EU Récupérable S.", + "attn_VAT-IN-V82-12-ROW-CC": "12% Non EU S.", + "attn_VAT-IN-V82-06-ROW-CC-C1": "6% Non EU Déductible S.", + "attn_VAT-IN-V82-06-ROW-CC-C2": "6% Non EU Récupérable S.", + "attn_VAT-IN-V82-06-ROW-CC": "6% Non EU S.", + "attn_VAT-IN-V82-00-ROW-CC": "0% Non EU S.", + "attn_VAT-IN-V83-21-ROW-CC-C1": "21% Non EU Déductible - Biens d'investissement", + "attn_VAT-IN-V83-21-ROW-CC-C2": "21% Non EU Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-21-ROW-CC": "21% Non EU - Biens d'investissement", + "attn_VAT-IN-V83-12-ROW-CC-C1": "12% Non EU Déductible - Biens d'investissement", + "attn_VAT-IN-V83-12-ROW-CC-C2": "12% Non EU Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-12-ROW-CC": "12% Non EU - Biens d'investissement", + "attn_VAT-IN-V83-06-ROW-CC-C1": "6% Non EU Déductible - Biens d'investissement", + "attn_VAT-IN-V83-06-ROW-CC-C2": "6% Non EU Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-06-ROW-CC": "6% Non EU - Biens d'investissement", + "attn_VAT-IN-V83-00-ROW-CC": "0% Non EU - Biens d'investissement", + "attn_VAT-IN-V61": "Régularisation en faveur de l'état", + "attn_VAT-IN-V62": "Régularisation en faveur du déclarant", + }, + }, + + # In version 12.0 + { + "sale": { + "attn_VAT-OUT-21-S": "21% S.", + "attn_VAT-OUT-21-L": "21%", + "attn_VAT-OUT-12-S": "12% S.", + "attn_VAT-OUT-12-L": "12%", + "attn_VAT-OUT-06-S": "6% S.", + "attn_VAT-OUT-06-L": "6%", + "attn_VAT-OUT-00-S": "0% S.", + "attn_VAT-OUT-00-L": "0%", + "attn_VAT-OUT-00-CC": "0% Cocont.", + "attn_VAT-OUT-00-EU-S": "0% EU S.", + "attn_VAT-OUT-00-EU-L": "0% EU M.", + "attn_VAT-OUT-00-EU-T": "0% EU T.", + "attn_VAT-OUT-00-ROW": "0% Non EU", + }, + "other": { + "attn_VAT-IN-V81-21": "21% M.", + "attn_VAT-IN-V81-12": "12% M.", + "attn_VAT-IN-V81-06": "6% M.", + "attn_VAT-IN-V81-00": "0% M.", + "attn_TVA-21-inclus-dans-prix": "21% S. TTC", + "attn_VAT-IN-V82-21-S": "21% S.", + "attn_VAT-IN-V82-21-G": "21% Biens divers", + "attn_VAT-IN-V82-12-S": "12% S.", + "attn_VAT-IN-V82-12-G": "12% Biens divers", + "attn_VAT-IN-V82-06-S": "6% S.", + "attn_VAT-IN-V82-06-G": "6% Biens divers", + "attn_VAT-IN-V82-00-S": "0% S.", + "attn_VAT-IN-V82-00-G": "0% Biens divers", + "attn_VAT-IN-V83-21": "21% Biens d'investissement", + "attn_VAT-IN-V83-12": "12% Biens d'investissement", + "attn_VAT-IN-V83-06": "6% Biens d'investissement", + "attn_VAT-IN-V83-00": "0% Biens d'investissement", + "attn_VAT-IN-V81-21-CC-C1": "21% Cocont. Déductible M.", + "attn_VAT-IN-V81-21-CC-C2": "21% Cocont. Récupérable M.", + "attn_VAT-IN-V81-21-CC": "21% Cocont. M.", + "attn_VAT-IN-V81-12-CC-C1": "12% Cocont. Déductible M.", + "attn_VAT-IN-V81-12-CC-C2": "12% Cocont. Récupérable M.", + "attn_VAT-IN-V81-12-CC": "12% Cocont. M.", + "attn_VAT-IN-V81-06-CC-C1": "6% Cocont. Déductible M.", + "attn_VAT-IN-V81-06-CC-C2": "6% Cocont. Récupérable M.", + "attn_VAT-IN-V81-06-CC": "6% Cocont. M.", + "attn_VAT-IN-V81-00-CC": "0% Cocont. M.", + "attn_VAT-IN-V82-21-CC-C1": "21% Cocont. Déductible S.", + "attn_VAT-IN-V82-21-CC-C2": "21% Cocont. Récupérable S.", + "attn_VAT-IN-V82-21-CC": "21% Cocont .S.", + "attn_VAT-IN-V82-12-CC-C1": "12% Cocont. Déductible S.", + "attn_VAT-IN-V82-12-CC-C2": "12% Cocont. Récupérable S.", + "attn_VAT-IN-V82-12-CC": "12% Cocont. S.", + "attn_VAT-IN-V82-06-CC-C1": "6% Cocont. Déductible S.", + "attn_VAT-IN-V82-06-CC-C2": "6% Cocont. Récupérable S.", + "attn_VAT-IN-V82-06-CC": "6% Cocont. S.", + "attn_VAT-IN-V82-00-CC": "0% Cocont. S.", + "attn_VAT-IN-V83-21-CC-C1": "21% Cocont. Déductible - Biens d'investissement", + "attn_VAT-IN-V83-21-CC-C2": "21% Cocont. Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-21-CC": "21% Cocont. - Biens d'investissement", + "attn_VAT-IN-V83-12-CC-C1": "12% Cocont. Déductible - Biens d'investissement", + "attn_VAT-IN-V83-12-CC-C2": "12% Cocont. Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-12-CC": "12% Cocont. - Biens d'investissement", + "attn_VAT-IN-V83-06-CC-C1": "6% Cocont. Déductible - Biens d'investissement", + "attn_VAT-IN-V83-06-CC-C2": "6% Cocont. Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-06-CC": "6% Cocont. - Biens d'investissement", + "attn_VAT-IN-V83-00-CC": "0% Cocont. - Biens d'investissement", + "attn_VAT-IN-V82-CAR-EXC-C1": "50% Non Déductible - Frais de voiture", + "attn_VAT-IN-V82-CAR-EXC-C2": "50% Déductible - Frais de voiture (Prix Excl.)", + "attn_VAT-IN-V82-CAR-EXC": "50% Non Déductible - Frais de voiture (Prix Excl.)", + "attn_VAT-IN-V81-21-EU-C1": "21% EU Déductible M.", + "attn_VAT-IN-V81-21-EU-C2": "21% EU Récupérable M.", + "attn_VAT-IN-V81-21-EU": "21% EU M.", + "attn_VAT-IN-V81-12-EU-C1": "12% EU Déductible M.", + "attn_VAT-IN-V81-12-EU-C2": "12% EU Récupérable M.", + "attn_VAT-IN-V81-12-EU": "12% EU M.", + "attn_VAT-IN-V81-06-EU-C1": "6% EU Déductible M.", + "attn_VAT-IN-V81-06-EU-C2": "6% EU Récupérable M.", + "attn_VAT-IN-V81-06-EU": "6% EU M.", + "attn_VAT-IN-V81-00-EU": "0% EU M.", + "attn_VAT-IN-V82-21-EU-S-C1": "21% EU Déductible S.", + "attn_VAT-IN-V82-21-EU-S-C2": "21% EU Récupérable S.", + "attn_VAT-IN-V82-21-EU-S": "21% EU S.", + "attn_VAT-IN-V82-21-EU-G-C1": "21% EU Déductible - Biens divers", + "attn_VAT-IN-V82-21-EU-G-C2": "21% EU Récupérable - Biens divers", + "attn_VAT-IN-V82-21-EU-G": "21% EU - Biens divers", + "attn_VAT-IN-V82-12-EU-S-C1": "12% EU Déductible S.", + "attn_VAT-IN-V82-12-EU-S-C2": "12% EU Récupérable S.", + "attn_VAT-IN-V82-12-EU-S": "12% EU S.", + "attn_VAT-IN-V82-12-EU-G-C1": "12% EU Déductible - Biens divers", + "attn_VAT-IN-V82-12-EU-G-C2": "TVA 12% EU Récupérable - Biens divers", + "attn_VAT-IN-V82-12-EU-G": "12% EU - Biens divers", + "attn_VAT-IN-V82-06-EU-S-C1": "6% EU Déductible S.", + "attn_VAT-IN-V82-06-EU-S-C2": "6% EU Récupérable S.", + "attn_VAT-IN-V82-06-EU-S": "6% EU S.", + "attn_VAT-IN-V82-06-EU-G-C1": "6% EU Déductible - Biens divers", + "attn_VAT-IN-V82-06-EU-G-C2": "6% EU Récupérable - Biens divers", + "attn_VAT-IN-V82-06-EU-G": "6% EU - Biens divers", + "attn_VAT-IN-V82-00-EU-S": "0% EU S.", + "attn_VAT-IN-V83-21-EU-C1": "21% EU Déductible - Biens d'investissement", + "attn_VAT-IN-V83-21-EU-C2": "21% EU Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-21-EU": "21% EU - Biens d'investissement", + "attn_VAT-IN-V82-00-EU-G": "0% EU - Biens divers", + "attn_VAT-IN-V83-12-EU-C1": "12% EU Déductible - Biens d'investissement", + "attn_VAT-IN-V83-12-EU-C2": "12% EU Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-12-EU": "12% EU - Biens d'investissement", + "attn_VAT-IN-V83-06-EU-C1": "6% EU Déductible - Biens d'investissement", + "attn_VAT-IN-V83-06-EU-C2": "6% EU Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-06-EU": "6% EU - Biens d'investissement", + "attn_VAT-IN-V83-00-EU": "0% EU - Biens d'investissement", + "attn_VAT-IN-V81-21-ROW-CC-C1": "21% Non EU Déductible M.", + "attn_VAT-IN-V81-21-ROW-CC-C2": "21% Non EU Récupérable M.", + "attn_VAT-IN-V81-21-ROW-CC": "21% Non EU M.", + "attn_VAT-IN-V81-12-ROW-CC-C1": "12% Non EU Déductible M.", + "attn_VAT-IN-V81-12-ROW-CC-C2": "12% Non EU Récupérable M.", + "attn_VAT-IN-V81-12-ROW-CC": "12% Non EU M.", + "attn_VAT-IN-V81-06-ROW-CC-C1": "6% Non EU Déductible M.", + "attn_VAT-IN-V81-06-ROW-CC-C2": "6% Non EU Récupérable M.", + "attn_VAT-IN-V81-06-ROW-CC": "6% Non EU M.", + "attn_VAT-IN-V81-00-ROW-CC": "0% Non EU M.", + "attn_VAT-IN-V82-21-ROW-CC-C1": "21% Non EU Déductible S.", + "attn_VAT-IN-V82-21-ROW-CC-C2": "21% Non EU Récupérable S.", + "attn_VAT-IN-V82-21-ROW-CC": "21% Non EU S.", + "attn_VAT-IN-V82-12-ROW-CC-C1": "12% Non EU Déductible S.", + "attn_VAT-IN-V82-12-ROW-CC-C2": "12% Non EU Récupérable S.", + "attn_VAT-IN-V82-12-ROW-CC": "12% Non EU S.", + "attn_VAT-IN-V82-06-ROW-CC-C1": "6% Non EU Déductible S.", + "attn_VAT-IN-V82-06-ROW-CC-C2": "6% Non EU Récupérable S.", + "attn_VAT-IN-V82-06-ROW-CC": "6% Non EU S.", + "attn_VAT-IN-V82-00-ROW-CC": "0% Non EU S.", + "attn_VAT-IN-V83-21-ROW-CC-C1": "21% Non EU Déductible - Biens d'investissement", + "attn_VAT-IN-V83-21-ROW-CC-C2": "21% Non EU Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-21-ROW-CC": "21% Non EU - Biens d'investissement", + "attn_VAT-IN-V83-12-ROW-CC-C1": "12% Non EU Déductible - Biens d'investissement", + "attn_VAT-IN-V83-12-ROW-CC-C2": "12% Non EU Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-12-ROW-CC": "12% Non EU - Biens d'investissement", + "attn_VAT-IN-V83-06-ROW-CC-C1": "6% Non EU Déductible - Biens d'investissement", + "attn_VAT-IN-V83-06-ROW-CC-C2": "6% Non EU Récupérable - Biens d'investissement", + "attn_VAT-IN-V83-06-ROW-CC": "6% Non EU - Biens d'investissement", + "attn_VAT-IN-V83-00-ROW-CC": "0% Non EU - Biens d'investissement", + "attn_VAT-IN-V61": "Régularisation en faveur de l'état", + "attn_VAT-IN-V62": "Régularisation en faveur du déclarant", + }, + }, +] + +# Based on l10n_be/data/account_tax_template_data.xml +NEW_ACCOUNT_TAX_CONFIG = { + "attn_VAT-OUT-21-S": { + "invoice": { + "base": ["+03"], + "tax": ["+54"], + }, + "refund": { + "base": ["+49"], + "tax": ["+64"], + }, + }, + + "attn_VAT-OUT-21-L": { + "invoice": { + "base": ["+03"], + "tax": ["+54"], + }, + "refund": { + "base": ["+49"], + "tax": ["+64"], + }, + }, + + "attn_VAT-OUT-12-S": { + "invoice": { + "base": ["+02"], + "tax": ["+54"], + }, + "refund": { + "base": ["+49"], + "tax": ["+64"], + }, + }, + + "attn_VAT-OUT-12-L": { + "invoice": { + "base": ["+02"], + "tax": ["+54"], + }, + "refund": { + "base": ["+49"], + "tax": ["+64"], + }, + }, + + "attn_VAT-OUT-06-S": { + "invoice": { + "base": ["+01"], + "tax": ["+54"], + }, + "refund": { + "base": ["+49"], + "tax": ["+64"], + }, + }, + + "attn_VAT-OUT-06-L": { + "invoice": { + "base": ["+01"], + "tax": ["+54"], + }, + "refund": { + "base": ["+49"], + "tax": ["+64"], + }, + }, + + "attn_VAT-OUT-00-S": { + "invoice": { + "base": ["+00"], + "tax": [], + }, + "refund": { + "base": ["+49"], + "tax": [], + }, + }, + + "attn_VAT-OUT-00-L": { + "invoice": { + "base": ["+00"], + "tax": [], + }, + "refund": { + "base": ["+49"], + "tax": [], + }, + }, + + "attn_VAT-OUT-00-CC": { + "invoice": { + "base": ["+45"], + "tax": [], + }, + "refund": { + "base": ["+49"], + "tax": [], + }, + }, + + "attn_VAT-OUT-00-EU-S": { + "invoice": { + "base": ["+44"], + "tax": [], + }, + "refund": { + "base": ["+48s44"], + "tax": [], + }, + }, + + "attn_VAT-OUT-00-EU-L": { + "invoice": { + "base": ["+46L"], + "tax": [], + }, + "refund": { + "base": ["+48s46L"], + "tax": [], + }, + }, + + "attn_VAT-OUT-00-EU-T": { + "invoice": { + "base": ["+46T"], + "tax": [], + }, + "refund": { + "base": ["+48s46T"], + "tax": [], + }, + }, + + "attn_VAT-OUT-00-ROW": { + "invoice": { + "base": ["+47"], + "tax": [], + }, + "refund": { + "base": ["+49"], + "tax": [], + }, + }, + + "attn_VAT-IN-V81-21": { + "invoice": { + "base": ["+81"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-81"], + "tax": ["+63"], + }, + }, + + "attn_VAT-IN-V81-12": { + "invoice": { + "base": ["+81"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-81"], + "tax": ["+63"], + }, + }, + + "attn_VAT-IN-V81-06": { + "invoice": { + "base": ["+81"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-81"], + "tax": ["+63"], + }, + }, + + "attn_VAT-IN-V81-00": { + "invoice": { + "base": ["+81"], + "tax": [], + }, + "refund": { + "base": ["+85", "-81"], + "tax": [], + }, + }, + + "attn_TVA-21-inclus-dans-prix": { + "invoice": { + "base": ["+82"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-82"], + "tax": ["+63"], + }, + }, + + "attn_VAT-IN-V82-21-S": { + "invoice": { + "base": ["+82"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-82"], + "tax": ["+63"], + }, + }, + + "attn_VAT-IN-V82-21-G": { + "invoice": { + "base": ["+82"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-82"], + "tax": ["+63"], + }, + }, + + "attn_VAT-IN-V82-12-S": { + "invoice": { + "base": ["+82"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-82"], + "tax": ["+63"], + }, + }, + + "attn_VAT-IN-V82-12-G": { + "invoice": { + "base": ["+82"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-82"], + "tax": ["+63"], + }, + }, + + "attn_VAT-IN-V82-06-S": { + "invoice": { + "base": ["+82"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-82"], + "tax": ["+63"], + }, + }, + + "attn_VAT-IN-V82-06-G": { + "invoice": { + "base": ["+82"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-82"], + "tax": ["+63"], + }, + }, + + "attn_VAT-IN-V82-00-S": { + "invoice": { + "base": ["+82"], + "tax": [], + }, + "refund": { + "base": ["+85", "-82"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-00-G": { + "invoice": { + "base": ["+82"], + "tax": [], + }, + "refund": { + "base": ["+85", "-82"], + "tax": [], + }, + }, + + "attn_VAT-IN-V83-21": { + "invoice": { + "base": ["+83"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-83"], + "tax": ["+63"], + }, + }, + + "attn_VAT-IN-V83-12": { + "invoice": { + "base": ["+83"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-83"], + "tax": ["+63"], + }, + }, + + "attn_VAT-IN-V83-06": { + "invoice": { + "base": ["+83"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-83"], + "tax": ["+63"], + }, + }, + + "attn_VAT-IN-V83-00": { + "invoice": { + "base": ["+83"], + "tax": [], + }, + "refund": { + "base": ["+85", "-83"], + "tax": [], + }, + }, + + "attn_VAT-IN-V81-21-CC-C1": { + "invoice": { + "base": ["+81", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-81", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V81-21-CC-C2": { + "invoice": { + "base": ["+81", "+87"], + "tax": ["-56"], + }, + "refund": { + "base": ["+85", "-81", "-87"], + "tax": [], + }, + }, + + + # group tax seed child taxes (above) + "attn_VAT-IN-V81-21-CC": "21% Cocont. M.", + + "attn_VAT-IN-V81-12-CC-C1": { + "invoice": { + "base": ["+81", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-81", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V81-12-CC-C2": { + "invoice": { + "base": ["+81", "+87"], + "tax": ["-56"], + }, + "refund": { + "base": ["+85", "-81", "-87"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V81-12-CC": "12% Cocont. M.", + + "attn_VAT-IN-V81-06-CC-C1": { + "invoice": { + "base": ["+81", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-81", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V81-06-CC-C2": { + "invoice": { + "base": ["+81", "+87"], + "tax": ["-56"], + }, + "refund": { + "base": ["+85", "-81", "-87"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V81-06-CC": "6% Cocont. M.", + + "attn_VAT-IN-V81-00-CC": { + "invoice": { + "base": ["+81", "+87"], + "tax": [], + }, + "refund": { + "base": ["+85", "-81", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-21-CC-C1": { + "invoice": { + "base": ["+82", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-82", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-21-CC-C2": { + "invoice": { + "base": ["+82", "+87"], + "tax": ["-56"], + }, + "refund": { + "base": ["+85", "-82", "-87"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V82-21-CC": "21% Cocont .S.", + + "attn_VAT-IN-V82-12-CC-C1": { + "invoice": { + "base": ["+82", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-82", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-12-CC-C2": { + "invoice": { + "base": ["+82", "+87"], + "tax": ["-56"], + }, + "refund": { + "base": ["+85", "-82", "-87"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V82-12-CC": "12% Cocont. S.", + + "attn_VAT-IN-V82-06-CC-C1": { + "invoice": { + "base": ["+82", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-82", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-06-CC-C2": { + "invoice": { + "base": ["+82", "+87"], + "tax": ["-56"], + }, + "refund": { + "base": ["+85", "-82", "-87"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V82-06-CC": "6% Cocont. S.", + + "attn_VAT-IN-V82-00-CC": { + "invoice": { + "base": ["+82", "+87"], + "tax": [], + }, + "refund": { + "base": ["+85", "-82", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V83-21-CC-C1": { + "invoice": { + "base": ["+83", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-83", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V83-21-CC-C2": { + "invoice": { + "base": ["+83", "+87"], + "tax": ["-56"], + }, + "refund": { + "base": ["+85", "-83", "-87"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V83-21-CC": "21% Cocont. - Biens d'investissement", + + "attn_VAT-IN-V83-12-CC-C1": { + "invoice": { + "base": ["+83", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-83", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V83-12-CC-C2": { + "invoice": { + "base": ["+83", "+87"], + "tax": ["-56"], + }, + "refund": { + "base": ["+85", "-83", "-87"], + "tax": [], + }, + }, + + + # group tax seed child taxes (above) + "attn_VAT-IN-V83-12-CC": "12% Cocont. - Biens d'investissement", + + "attn_VAT-IN-V83-06-CC-C1": { + "invoice": { + "base": ["+83", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-83", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V83-06-CC-C2": { + "invoice": { + "base": ["+83", "+87"], + "tax": ["-56"], + }, + "refund": { + "base": ["+85", "-83", "-87"], + "tax": [], + }, + }, + + + # group tax seed child taxes (above) + "attn_VAT-IN-V83-06-CC": "6% Cocont. - Biens d'investissement", + + "attn_VAT-IN-V83-00-CC": { + "invoice": { + "base": ["+83", "+87"], + "tax": [], + }, + "refund": { + "base": ["+85", "-83", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-CAR-EXC-C1": { + "invoice": { + "base": ["+82"], + "tax": ["+82"], + }, + "refund": { + "base": ["+85", "-82"], + "tax": ["+85", "-82"], + }, + }, + + "attn_VAT-IN-V82-CAR-EXC-C2": { + "invoice": { + "base": ["+82"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-82"], + "tax": ["+63"], + }, + }, + + + # group tax seed child taxes (above) + "attn_VAT-IN-V82-CAR-EXC": "50% Non Déductible - Frais de voiture (Prix Excl.)", + + "attn_VAT-IN-V81-21-EU-C1": { + "invoice": { + "base": ["+81", "+86"], + "tax": ["+59"], + }, + "refund": { + "base": ["+84", "-81", "-86"], + "tax": [], + }, + }, + + "attn_VAT-IN-V81-21-EU-C2": { + "invoice": { + "base": ["+81", "+86"], + "tax": ["-55"], + }, + "refund": { + "base": ["+84", "-81", "-86"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V81-21-EU": "21% EU M.", + + "attn_VAT-IN-V81-12-EU-C1": { + "invoice": { + "base": ["+81", "+86"], + "tax": ["+59"], + }, + "refund": { + "base": ["+84", "-81", "-86"], + "tax": [], + }, + }, + + "attn_VAT-IN-V81-12-EU-C2": { + "invoice": { + "base": ["+81", "+86"], + "tax": ["-55"], + }, + "refund": { + "base": ["+84", "-81", "-86"], + "tax": [], + }, + }, + + + # group tax seed child taxes (above) + "attn_VAT-IN-V81-12-EU": "12% EU M.", + + "attn_VAT-IN-V81-06-EU-C1": { + "invoice": { + "base": ["+81", "+86"], + "tax": ["+59"], + }, + "refund": { + "base": ["+84", "-81", "-86"], + "tax": [], + }, + }, + + "attn_VAT-IN-V81-06-EU-C2": { + "invoice": { + "base": ["+81", "+86"], + "tax": ["-55"], + }, + "refund": { + "base": ["+84", "-81", "-86"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V81-06-EU": "6% EU M.", + + "attn_VAT-IN-V81-00-EU": { + "invoice": { + "base": ["+81", "+86"], + "tax": [], + }, + "refund": { + "base": ["+84", "-81", "-86"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-21-EU-S-C1": { + "invoice": { + "base": ["+82", "+88"], + "tax": ["+59"], + }, + "refund": { + "base": ["+84", "-82", "-88"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-21-EU-S-C2": { + "invoice": { + "base": ["+82", "+88"], + "tax": ["-55"], + }, + "refund": { + "base": ["+84", "-82", "-88"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V82-21-EU-S": "21% EU S.", + + "attn_VAT-IN-V82-21-EU-G-C1": { + "invoice": { + "base": ["+82", "+86"], + "tax": ["+59"], + }, + "refund": { + "base": ["+84", "-82", "-86"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-21-EU-G-C2": { + "invoice": { + "base": ["+82", "+86"], + "tax": ["-55"], + }, + "refund": { + "base": ["+84", "-82", "-86"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V82-21-EU-G": "21% EU - Biens divers", + + "attn_VAT-IN-V82-12-EU-S-C1": { + "invoice": { + "base": ["+82", "+88"], + "tax": ["+59"], + }, + "refund": { + "base": ["+84", "-82", "-88"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-12-EU-S-C2": { + "invoice": { + "base": ["+82", "+88"], + "tax": ["-55"], + }, + "refund": { + "base": ["+84", "-82", "-88"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V82-12-EU-S": "12% EU S.", + + "attn_VAT-IN-V82-12-EU-G-C1": { + "invoice": { + "base": ["+82", "+86"], + "tax": ["+59"], + }, + "refund": { + "base": ["+84", "-82", "-86"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-12-EU-G-C2": { + "invoice": { + "base": ["+82", "+86"], + "tax": ["-55"], + }, + "refund": { + "base": ["+84", "-82", "-86"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V82-12-EU-G": "12% EU - Biens divers", + + "attn_VAT-IN-V82-06-EU-S-C1": { + "invoice": { + "base": ["+82", "+88"], + "tax": ["+59"], + }, + "refund": { + "base": ["+84", "-82", "-88"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-06-EU-S-C2": { + "invoice": { + "base": ["+82", "+88"], + "tax": ["-55"], + }, + "refund": { + "base": ["+84", "-82", "-88"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V82-06-EU-S": "6% EU S.", + + "attn_VAT-IN-V82-06-EU-G-C1": { + "invoice": { + "base": ["+82", "+86"], + "tax": ["+59"], + }, + "refund": { + "base": ["+84", "-82", "-86"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-06-EU-G-C2": { + "invoice": { + "base": ["+82", "+86"], + "tax": ["-55"], + }, + "refund": { + "base": ["+84", "-82", "-86"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V82-06-EU-G": "6% EU - Biens divers", + + "attn_VAT-IN-V82-00-EU-S": { + "invoice": { + "base": ["+82", "+88"], + "tax": [], + }, + "refund": { + "base": ["+84", "-82", "-88"], + "tax": [], + }, + }, + + "attn_VAT-IN-V83-21-EU-C1": { + "invoice": { + "base": ["+83", "+86"], + "tax": ["+59"], + }, + "refund": { + "base": ["+84", "-83", "-86"], + "tax": [], + }, + }, + + "attn_VAT-IN-V83-21-EU-C2": { + "invoice": { + "base": ["+83", "+86"], + "tax": ["-55"], + }, + "refund": { + "base": ["+84", "-83", "-86"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V83-21-EU": "21% EU - Biens d'investissement", + + "attn_VAT-IN-V82-00-EU-G": { + "invoice": { + "base": ["+82", "+86"], + "tax": [], + }, + "refund": { + "base": ["+84", "-82", "-86"], + "tax": [], + }, + }, + + "attn_VAT-IN-V83-12-EU-C1": { + "invoice": { + "base": ["+83", "+86"], + "tax": ["+59"], + }, + "refund": { + "base": ["+84", "-83", "-86"], + "tax": [], + }, + }, + + "attn_VAT-IN-V83-12-EU-C2": { + "invoice": { + "base": ["+83", "+86"], + "tax": ["-55"], + }, + "refund": { + "base": ["+84", "-83", "-86"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V83-12-EU": "12% EU - Biens d'investissement", + + "attn_VAT-IN-V83-06-EU-C1": { + "invoice": { + "base": ["+83", "+86"], + "tax": ["+59"], + }, + "refund": { + "base": ["+84", "-83", "-86"], + "tax": [], + }, + }, + + "attn_VAT-IN-V83-06-EU-C2": { + "invoice": { + "base": ["+83", "+86"], + "tax": ["-55"], + }, + "refund": { + "base": ["+84", "-83", "-86"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V83-06-EU": "6% EU - Biens d'investissement", + + "attn_VAT-IN-V83-00-EU": { + "invoice": { + "base": ["+83", "+86"], + "tax": [], + }, + "refund": { + "base": ["+84", "-83", "-86"], + "tax": [], + }, + }, + + "attn_VAT-IN-V81-21-ROW-CC-C1": { + "invoice": { + "base": ["+81", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-81", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V81-21-ROW-CC-C2": { + "invoice": { + "base": ["+81", "+87"], + "tax": ["-57"], + }, + "refund": { + "base": ["+85", "-81", "-87"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V81-21-ROW-CC": "21% Non EU M.", + + "attn_VAT-IN-V81-12-ROW-CC-C1": { + "invoice": { + "base": ["+81", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-81", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V81-12-ROW-CC-C2": { + "invoice": { + "base": ["+81", "+87"], + "tax": ["-57"], + }, + "refund": { + "base": ["+85", "-81", "-87"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V81-12-ROW-CC": "12% Non EU M.", + + "attn_VAT-IN-V81-06-ROW-CC-C1": { + "invoice": { + "base": ["+81", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-81", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V81-06-ROW-CC-C2": { + "invoice": { + "base": ["+81", "+87"], + "tax": ["-57"], + }, + "refund": { + "base": ["+85", "-81", "-87"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V81-06-ROW-CC": "6% Non EU M.", + + "attn_VAT-IN-V81-00-ROW-CC": { + "invoice": { + "base": ["+81", "+87"], + "tax": [], + }, + "refund": { + "base": ["+85", "-81", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-21-ROW-CC-C1": { + "invoice": { + "base": ["+82", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-82", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-21-ROW-CC-C2": { + "invoice": { + "base": ["+82", "+87"], + "tax": ["-57"], + }, + "refund": { + "base": ["+85", "-82", "-87"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V82-21-ROW-CC": "21% Non EU S.", + + "attn_VAT-IN-V82-12-ROW-CC-C1": { + "invoice": { + "base": ["+82", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-82", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-12-ROW-CC-C2": { + "invoice": { + "base": ["+82", "+87"], + "tax": ["-57"], + }, + "refund": { + "base": ["+85", "-82", "-87"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V82-12-ROW-CC": "12% Non EU S.", + + "attn_VAT-IN-V82-06-ROW-CC-C1": { + "invoice": { + "base": ["+82", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-82", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V82-06-ROW-CC-C2": { + "invoice": { + "base": ["+82", "+87"], + "tax": ["-57"], + }, + "refund": { + "base": ["+85", "-82", "-87"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V82-06-ROW-CC": "6% Non EU S.", + + "attn_VAT-IN-V82-00-ROW-CC": { + "invoice": { + "base": ["+82", "+87"], + "tax": [], + }, + "refund": { + "base": ["+85", "-82", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V83-21-ROW-CC-C1": { + "invoice": { + "base": ["+83", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-83", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V83-21-ROW-CC-C2": { + "invoice": { + "base": ["+83", "+87"], + "tax": ["-57"], + }, + "refund": { + "base": ["+85", "-83", "-87"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V83-21-ROW-CC": "21% Non EU - Biens d'investissement", + + "attn_VAT-IN-V83-12-ROW-CC-C1": { + "invoice": { + "base": ["+83", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-83", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V83-12-ROW-CC-C2": { + "invoice": { + "base": ["+83", "+87"], + "tax": ["-57"], + }, + "refund": { + "base": ["+85", "-83", "-87"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V83-12-ROW-CC": "12% Non EU - Biens d'investissement", + + "attn_VAT-IN-V83-06-ROW-CC-C1": { + "invoice": { + "base": ["+83", "+87"], + "tax": ["+59"], + }, + "refund": { + "base": ["+85", "-83", "-87"], + "tax": [], + }, + }, + + "attn_VAT-IN-V83-06-ROW-CC-C2": { + "invoice": { + "base": ["+83", "+87"], + "tax": ["-57"], + }, + "refund": { + "base": ["+85", "-83", "-87"], + "tax": [], + }, + }, + + # group tax seed child taxes (above) + "attn_VAT-IN-V83-06-ROW-CC": "6% Non EU - Biens d'investissement", + + "attn_VAT-IN-V83-00-ROW-CC": { + "invoice": { + "base": ["+83", "+87"], + "tax": [], + }, + "refund": { + "base": ["+85", "-83", "-87"], + "tax": [], + }, + }, + + # FIXME: not sure how to manage these items + "attn_VAT-IN-V61": "Régularisation en faveur de l'état", + "attn_VAT-IN-V62": "Régularisation en faveur du déclarant", +} + + +def _get_account_tax_template_xmlid(search_name, type_tax_use): + """Return the first account.tax.template xmlid that match name""" + for version in ACCOUNT_TAX_NAMES: + taxes = version.get(type_tax_use, {}) + for xmlid, name in taxes.items(): + if search_name == name: + return xmlid + return None + + +def _get_tags(env, names): + """Get records for account.account.tag that maches names""" + tags = env["account.account.tag"] + for name in names: + tag = env["account.account.tag"].search( + [("name", "=", name)], limit=1, + ) + tags |= tag + return tags + + +def _repartition_lines_iter(account_tax): + """Special loop over repartition lines in an account.tax""" + for repartition in account_tax.invoice_repartition_line_ids: + yield ("invoice", repartition) + for repartition in account_tax.refund_repartition_line_ids: + yield ("refund", repartition) + + +def update_account_tax_based_on_templates(env): + """ + Use account.tax.template to update existing account.tax + """ + account_tax_ids = ( + env["account.tax"] + .with_context(active_test=False) + .search([]) + ) + for account_tax in account_tax_ids: + if account_tax.type_tax_use == "sale": + type_group = "sale" + else: + type_group = "other" + xmlid = _get_account_tax_template_xmlid( + account_tax.name, type_group + ) + new_config = NEW_ACCOUNT_TAX_CONFIG.get(xmlid) + if isinstance(new_config, dict): + for reptype, repartition in _repartition_lines_iter(account_tax): + repartition.tag_ids = _get_tags( + env, + new_config[reptype][repartition.repartition_type], + ) + + +@openupgrade.migrate() +def migrate(env, version): + update_account_tax_based_on_templates(env) diff --git a/addons/l10n_be/migrations/13.0.2.0/post-02-migration.py b/addons/l10n_be/migrations/13.0.2.0/post-02-migration.py new file mode 100644 index 000000000000..1df9c5cf8721 --- /dev/null +++ b/addons/l10n_be/migrations/13.0.2.0/post-02-migration.py @@ -0,0 +1,236 @@ +from openupgradelib import openupgrade +import logging + +_logger = logging.getLogger(__name__) + +# Based on file l10n_be/data/account_tax_template_data.xml +# Also based on Mis Builder VAT report +# (Cadre I, II et III -> base, Cardre IV and following -> tax). +base_tag_xmlids = [ + "tax_tag_00", + "tax_tag_01", + "tax_tag_02", + "tax_tag_03", + "tax_tag_44", + "tax_tag_45", + "tax_tag_46L", + "tax_tag_46T", + "tax_tag_47", + "tax_tag_48s44", + "tax_tag_48s46L", + "tax_tag_48s46T", + "tax_tag_49", + "tax_tag_81", + "tax_tag_82", # Also in tax (see line 1816), consider it as base + "tax_tag_83", + "tax_tag_84", + "tax_tag_85", # Also in tax (see line 1839), consider it as base + "tax_tag_86", + "tax_tag_87", + "tax_tag_88", +] +tax_tag_xmlids = [ + "tax_tag_54", + "tax_tag_55", + "tax_tag_56", + "tax_tag_57", + "tax_tag_59", + "tax_tag_61", + "tax_tag_62", + "tax_tag_63", + "tax_tag_64", +] +# See replace_not_deductible_tag function +not_deductible_tag_xmlids = [ + "tax_tag_81_not_deductible", + "tax_tag_82_not_deductible", + "tax_tag_83_not_deductible", + "tax_tag_85_not_deductible", +] + + +def update_tags_on_move_line(env): + """Based on new account.tax, this function check that + account.account.tag on account.move.line are correct. + """ + _logger.info("Begin updating tags on account.move.line") + account_move_line_ids = ( + env["account.move.line"] + .with_context(active_test=False) + .search([]) + ) + for move_line_id in account_move_line_ids: + move_id = move_line_id.move_id + repartition_id = move_line_id.tax_repartition_line_id + tax_line_id = move_line_id.tax_line_id + tax_ids = move_line_id.tax_ids + tax_base_amount = move_line_id.tax_base_amount + _logger.info("Processing %s", move_line_id) + + # If a repartition line exists then apply tags form this + # repartition line + if repartition_id: + new_tag_ids = repartition_id.tag_ids + _logger.info( + "Found %s on %s, using tags from it: %s", + repartition_id, + move_line_id, + new_tag_ids, + ) + + # If tax_line_id exists, then find the right repartition line and + # apply tags from this repartition line + elif tax_line_id: + _logger.info( + "Found tax_line_id (%s) on %s." + " Searching for repartition_line.", + tax_line_id, + move_line_id + ) + repartition_line_ids = env["account.tax.repartition.line"] + if "invoice" in move_id.type or "entry" in move_id.type: + repartition_line_ids = tax_line_id.invoice_repartition_line_ids + elif "refund" in move_id.type: + repartition_line_ids = tax_line_id.refund_repartition_line_ids + tax_repartition_ids = repartition_line_ids.filtered( + lambda r: r.repartition_type == "tax" + ) + tax_repartition_id = env["account.tax.repartition.line"] + if len(tax_repartition_ids) > 1: + for rep in tax_repartition_ids: + if move_line_id.account_id == rep.account_id: + tax_repartition_id = rep + elif tax_repartition_ids: + tax_repartition_id = tax_repartition_ids + if not repartition_id: + _logger.error( + "No account.tax.repartition.line found for %s", + move_line_id, + ) + new_tag_ids = tax_repartition_id.tag_ids + _logger.info( + "Found %s to apply on %s, using tags from it: %s.", + tax_repartition_id, + move_line_id, + new_tag_ids, + ) + + # If tax_ids exists and the tax_base_amount is 0 or null + # then it's a base line, so apply base repartition line from + # taxes. + elif tax_ids and not tax_base_amount: + taxes = tax_ids | tax_ids.mapped("children_tax_ids") + _logger.info( + "Found taxes %s to apply on %s linked to %s with type %s", + taxes, + move_line_id, + move_id, + move_id.type, + ) + if "invoice" in move_id.type or "entry" in move_id.type: + repartition_line_ids = taxes.mapped( + "invoice_repartition_line_ids" + ) + elif "refund" in move_id.type: + repartition_line_ids = taxes.mapped( + "refund_repartition_line_ids" + ) + else: + repartition_line_ids = env["account.tax.repartition.line"] + base_repartition_ids = repartition_line_ids.filtered( + lambda r: r.repartition_type == "base" + ) + new_tag_ids = base_repartition_ids.mapped("tag_ids") + _logger.info( + "Found %s to apply on %s, using tags from it: %s.", + base_repartition_ids, + move_line_id, + new_tag_ids, + ) + + else: + new_tag_ids = env["account.account.tag"] + _logger.info("No tag to apply on %s", move_line_id) + + # Write new tags + openupgrade.logged_query( + env.cr, + """ + DELETE FROM account_account_tag_account_move_line_rel + WHERE account_move_line_id = %s + """, + (move_line_id.id,), + ) + for new_tag_id in new_tag_ids: + openupgrade.logged_query( + env.cr, + """ + INSERT INTO account_account_tag_account_move_line_rel ( + account_move_line_id, + account_account_tag_id + ) + VALUES (%s, %s) + """, + (move_line_id.id, new_tag_id.id), + ) + _logger.info("Finish updating tags on account.move.line") + + +def remove_wrong_tag(env): + """ + Remove tags on account.move.line that are not linked to an + account.tax. + """ + openupgrade.logged_query( + env.cr, + """ + DELETE FROM account_account_tag_account_move_line_rel + WHERE account_move_line_id IN ( + SELECT id FROM account_move_line + WHERE id NOT IN ( + SELECT DISTINCT account_move_line_id + FROM account_move_line_account_tax_rel + ) + ) + """ + ) + + +def unlink_tags_from_move_line(env, tag_xmlids): + """Unlink tags from account.move.line""" + openupgrade.logged_query( + env.cr, + """ + DELETE FROM account_account_tag_account_move_line_rel r + WHERE + account_account_tag_id IN ( + SELECT res_id FROM ir_model_data + WHERE + model = 'account.account.tag' AND + module = 'l10n_be' AND + name IN (%s) + ) + """ % ",".join("'"+xmlid+"'" for xmlid in tag_xmlids), + ) + + +def disable_troublesome_tags(env): + """Disable old tags""" + openupgrade.logged_query(env.cr, """ + UPDATE account_account_tag + SET active = FALSE + WHERE + name NOT LIKE '+%' AND + name NOT LIKE '-%' AND + applicability = 'taxes' + """) + + +@openupgrade.migrate() +def migrate(env, version): + remove_wrong_tag(env) + update_tags_on_move_line(env) + unlink_tags_from_move_line( + env, base_tag_xmlids + tax_tag_xmlids + not_deductible_tag_xmlids + ) + disable_troublesome_tags(env) diff --git a/addons/l10n_be/migrations/13.0.2.0/pre-migration.py b/addons/l10n_be/migrations/13.0.2.0/pre-migration.py new file mode 100644 index 000000000000..c8454620c881 --- /dev/null +++ b/addons/l10n_be/migrations/13.0.2.0/pre-migration.py @@ -0,0 +1,26 @@ +# SPDX-FileCopyrightText: 2025 Coop IT Easy SC +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +from openupgradelib import openupgrade + + +def remove_res_country_state_ir_model_data(env): + """ + remove obsolete ir.model.data entries, without removing the data itself, + in case it is used. + """ + openupgrade.logged_query( + env.cr, + """ + delete from ir_model_data + where + module = 'l10n_be' and + model = 'res.country.state' + """, + ) + + +@openupgrade.migrate() +def migrate(env, version): + remove_res_country_state_ir_model_data(env)