[IMP] account: added some functions to help updating VAT reports in localization modules. [FIX] l10n_ch: better tags on taxes in order to have an enhanced VAT report

This commit is contained in:
qdp-odoo
2016-01-21 17:35:16 +01:00
parent 564fda4d8f
commit a2ff33faac
6 changed files with 138 additions and 127 deletions
+21
View File
@@ -9,10 +9,31 @@ from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
from openerp.exceptions import AccessError, UserError, ValidationError
import openerp.addons.decimal_precision as dp
from openerp import api, fields, models, _
from openerp import SUPERUSER_ID
import logging
_logger = logging.getLogger(__name__)
def migrate_set_tags_and_taxes_updatable(cr, registry, module):
''' This is a utility function used to manually set the flag noupdate to False on tags and account tax templates on localization modules
that need migration (for example in case of VAT report improvements)
'''
xml_record_ids = registry['ir.model.data'].search(cr, SUPERUSER_ID, [('model', 'in', ['account.tax.template', 'account.account.tag']), ('module', 'like', module)])
cr.execute("update ir_model_data set noupdate = 'f' where id in %s", (tuple(xml_record_ids),))
def migrate_tags_on_taxes(cr, registry):
''' This is a utiliy function to help migrate the tags of taxes when the localization has been modified on stable version. If
called accordingly in a post_init_hooked function, it will reset the tags set on taxes as per their equivalent template.
Note: This unusual decision has been made in order to help the improvement of VAT reports on version 9.0, to have them more flexible
and working out of the box when people are creating/using new taxes.
'''
xml_record_ids = registry['ir.model.data'].search(cr, SUPERUSER_ID, [('model', '=', 'account.tax.template'), ('module', 'like', 'l10n_%')])
tax_template_ids = [x['res_id'] for x in registry['ir.model.data'].read(cr, SUPERUSER_ID, xml_record_ids, ['res_id'])]
for tax_template in registry['account.tax.template'].browse(cr, SUPERUSER_ID, tax_template_ids):
tax_id = registry['account.tax'].search(cr, SUPERUSER_ID, [('name', '=', tax_template.name), ('type_tax_use', '=', tax_template.type_tax_use), ('description', '=', tax_template.description)])
if len(tax_id) == 1:
registry['account.tax'].write(cr, SUPERUSER_ID, tax_id, {'tag_ids': [(6,0,[x.id for x in tax_template.tag_ids])]})
# ---------------------------------------------------------------
# Account Templates: Account, Tax, Tax Code and chart. + Wizard
+1 -1
View File
@@ -10,4 +10,4 @@ from openerp import SUPERUSER_ID
def load_translations(cr, registry):
chart_template = registry['ir.model.data'].xmlid_to_object(cr, SUPERUSER_ID, 'l10n_ch.l10nch_chart_template')
chart_template.process_coa_translations()
chart_template.process_coa_translations()
+1 -1
View File
@@ -38,7 +38,7 @@ The swiss localization addons are organized this way:
``l10n_ch`` is located in the core Odoo modules. The other modules are in:
https://github.com/OCA/l10n-switzerland
""",
'version': '8.0',
'version': '9.0',
'author': 'Camptocamp',
'category': 'Localization/Account Charts',
'website': 'http://www.camptocamp.com',
+102 -125
View File
@@ -1,115 +1,93 @@
<?xml version="1.0"?>
<odoo>
<data noupdate="1">
<record id="tag_8" model="account.account.tag">
<field name="name">8.0%</field>
<data>
<record id="vat_tag_200" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 200</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_220" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 220</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_221" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 221</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_225" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 225</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_230" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 230</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_235" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 235</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_280" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 280</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_301_a" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 301 base</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_311_a" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 311 base</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_341_a" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 341 base</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_381_a" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 381 base</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_301_b" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 301 tax</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_311_b" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 311 tax</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_341_b" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 341 tax</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_381_b" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 381 tax</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_400" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 400</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_405" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 405</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_410" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 410</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_415" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 415</field>
<field name="applicability">taxes</field>
</record>
<record id="vat_tag_420" model="account.account.tag">
<field name="name">Switzerland VAT Form: grid 420</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_8_incl" model="account.account.tag">
<field name="name">8.0% Incl.</field>
<record id="vat_tag_dedouanement" model="account.account.tag">
<field name="name">Switzerland VAT Form: 100% dédouanement (base in grid 400)</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_2_5" model="account.account.tag">
<field name="name">2.5%</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_2_5_incl" model="account.account.tag">
<field name="name">2.5% Incl.</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_3_8" model="account.account.tag">
<field name="name">3.8%</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_3_8_incl" model="account.account.tag">
<field name="name">3.8% Incl.</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_8_achat" model="account.account.tag">
<field name="name">8.0% achat</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_8_achat_incl" model="account.account.tag">
<field name="name">8.0% achat Incl.</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_2_5_achat" model="account.account.tag">
<field name="name">2.5% achat</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_2_5_achat_incl" model="account.account.tag">
<field name="name">2.5% achat Incl.</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_0_import" model="account.account.tag">
<field name="name">0% import.</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_100%_imp" model="account.account.tag">
<field name="name">100% imp.</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_3_8_achat" model="account.account.tag">
<field name="name">3.8% achat</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_3_8_achat_incl" model="account.account.tag">
<field name="name">3.8% achat Incl.</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_8_invest" model="account.account.tag">
<field name="name">8.0% invest.</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_8_invest_incl" model="account.account.tag">
<field name="name">8.0% invest. Incl.</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_2_5_invest" model="account.account.tag">
<field name="name">2.5% invest.</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_2_5_invest_incl" model="account.account.tag">
<field name="name">2.5% invest. Incl.</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_3_8_invest" model="account.account.tag">
<field name="name">3.8% invest</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_3_8_invest_incl" model="account.account.tag">
<field name="name">3.8% invest Incl.</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_0%" model="account.account.tag">
<field name="name">0%</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_0%_excl" model="account.account.tag">
<field name="name">0% excl.</field>
<field name="applicability">taxes</field>
</record>
<!--
# TVA - Taxe sur la Valeur Ajoutée
-->
@@ -122,7 +100,7 @@
<field name="refund_account_id" ref="ch_coa_2200"/>
<field name="account_id" ref="ch_coa_2200"/>
<field name="type_tax_use">sale</field>
<field name="tag_ids" eval="[(6,0,[ref('tag_2_5')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_311_a'), ref('vat_tag_311_b')])]"/>
</record>
<record model="account.tax.template" id="vat_25_incl">
<field name="name">TVA due à 2.5% (Incl. TR)</field>
@@ -134,7 +112,7 @@
<field name="refund_account_id" ref="ch_coa_2200"/>
<field name="account_id" ref="ch_coa_2200"/>
<field name="type_tax_use">sale</field>
<field name="tag_ids" eval="[(6,0,[ref('tag_2_5_incl')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_311_a'), ref('vat_tag_311_b')])]"/>
</record>
<record model="account.tax.template" id="vat_25_purchase">
<field name="name">TVA 2.5% sur achat B&amp;S (TR)</field>
@@ -145,7 +123,7 @@
<field name="type_tax_use">purchase</field>
<field name="refund_account_id" ref="ch_coa_1170"/>
<field name="account_id" ref="ch_coa_1170"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_2_5_achat')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_400')])]"/>
</record>
<record model="account.tax.template" id="vat_25_purchase_incl">
<field name="name">TVA 2.5% sur achat B&amp;S (Incl. TR)</field>
@@ -157,7 +135,7 @@
<field name="type_tax_use">purchase</field>
<field name="refund_account_id" ref="ch_coa_1170"/>
<field name="account_id" ref="ch_coa_1170"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_2_5_achat_incl')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_400')])]"/>
</record>
<record model="account.tax.template" id="vat_25_invest">
<field name="name">TVA 2.5% sur invest. et autres ch. (TR)</field>
@@ -168,7 +146,7 @@
<field name="type_tax_use">purchase</field>
<field name="refund_account_id" ref="ch_coa_1171"/>
<field name="account_id" ref="ch_coa_1171"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_2_5_invest')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_405')])]"/>
</record>
<record model="account.tax.template" id="vat_25_invest_incl">
<field name="name">TVA 2.5% sur invest. et autres ch. (Incl. TR)</field>
@@ -180,7 +158,7 @@
<field name="type_tax_use">purchase</field>
<field name="refund_account_id" ref="ch_coa_1171"/>
<field name="account_id" ref="ch_coa_1171"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_2_5_invest_incl')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_405')])]"/>
</record>
<record model="account.tax.template" id="vat_38">
@@ -192,7 +170,7 @@
<field name="type_tax_use">sale</field>
<field name="refund_account_id" ref="ch_coa_2200"/>
<field name="account_id" ref="ch_coa_2200"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_3_8')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_341_a'), ref('vat_tag_341_b')])]"/>
</record>
<record model="account.tax.template" id="vat_38_incl">
<field name="name">TVA due à 3.8% (Incl. TS)</field>
@@ -204,7 +182,7 @@
<field name="type_tax_use">sale</field>
<field name="refund_account_id" ref="ch_coa_2200"/>
<field name="account_id" ref="ch_coa_2200"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_3_8_incl')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_341_a'), ref('vat_tag_341_b')])]"/>
</record>
<record model="account.tax.template" id="vat_38_purchase">
<field name="name">TVA 3.8% sur achat B&amp;S (TS)</field>
@@ -215,7 +193,7 @@
<field name="type_tax_use">purchase</field>
<field name="refund_account_id" ref="ch_coa_1170"/>
<field name="account_id" ref="ch_coa_1170"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_3_8_achat')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_400')])]"/>
</record>
<record model="account.tax.template" id="vat_38_purchase_incl">
<field name="name">TVA 3.8% sur achat B&amp;S (Incl. TS)</field>
@@ -227,7 +205,7 @@
<field name="type_tax_use">purchase</field>
<field name="refund_account_id" ref="ch_coa_1170"/>
<field name="account_id" ref="ch_coa_1170"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_3_8_achat_incl')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_400')])]"/>
</record>
<record model="account.tax.template" id="vat_38_invest">
<field name="name">TVA 3.8% sur invest. et autres ch. (TS)</field>
@@ -238,7 +216,7 @@
<field name="type_tax_use">purchase</field>
<field name="refund_account_id" ref="ch_coa_1171"/>
<field name="account_id" ref="ch_coa_1171"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_3_8_invest')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_405')])]"/>
</record>
<record model="account.tax.template" id="vat_38_invest_incl">
<field name="name">TVA 3.8% sur invest. et autres ch. (Incl. TS)</field>
@@ -250,7 +228,7 @@
<field name="type_tax_use">purchase</field>
<field name="refund_account_id" ref="ch_coa_1171"/>
<field name="account_id" ref="ch_coa_1171"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_3_8_invest_incl')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_405')])]"/>
</record>
<record model="account.tax.template" id="vat_80">
<field name="name">TVA due a 8.0% (TN)</field>
@@ -262,7 +240,7 @@
<field name="type_tax_use">sale</field>
<field name="refund_account_id" ref="ch_coa_2200"/>
<field name="account_id" ref="ch_coa_2200"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_8')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_301_a'), ref('vat_tag_301_b')])]"/>
</record>
<record model="account.tax.template" id="vat_80_incl">
<field name="name">TVA due à 8.0% (Incl. TN)</field>
@@ -275,7 +253,7 @@
<field name="type_tax_use">sale</field>
<field name="refund_account_id" ref="ch_coa_2200"/>
<field name="account_id" ref="ch_coa_2200"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_8_incl')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_301_a'), ref('vat_tag_301_b')])]"/>
</record>
<record model="account.tax.template" id="vat_80_purchase">
<field name="name">TVA 8.0% sur achat B&amp;S (TN)</field>
@@ -287,7 +265,7 @@
<field name="type_tax_use">purchase</field>
<field name="refund_account_id" ref="ch_coa_1170"/>
<field name="account_id" ref="ch_coa_1170"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_8_achat')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_400')])]"/>
</record>
<record model="account.tax.template" id="vat_80_purchase_incl">
<field name="name">TVA 8.0% sur achat B&amp;S (Incl. TN)</field>
@@ -300,7 +278,7 @@
<field name="type_tax_use">purchase</field>
<field name="refund_account_id" ref="ch_coa_1170"/>
<field name="account_id" ref="ch_coa_1170"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_8_achat_incl')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_400')])]"/>
</record>
<record model="account.tax.template" id="vat_80_invest">
<field name="name">TVA 8.0% sur invest. et autres ch. (TN)</field>
@@ -311,7 +289,7 @@
<field name="type_tax_use">purchase</field>
<field name="refund_account_id" ref="ch_coa_1171"/>
<field name="account_id" ref="ch_coa_1171"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_8_invest')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_405')])]"/>
</record>
<record model="account.tax.template" id="vat_80_invest_incl">
<field name="name">TVA 8.0% sur invest. et autres ch. (Incl. TN)</field>
@@ -323,7 +301,7 @@
<field name="type_tax_use">purchase</field>
<field name="refund_account_id" ref="ch_coa_1171"/>
<field name="account_id" ref="ch_coa_1171"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_8_invest_incl')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_405')])]"/>
</record>
<record model="account.tax.template" id="vat_XO">
<field name="name">TVA due a 0% (Exportations)</field>
@@ -334,7 +312,7 @@
<field name="type_tax_use">sale</field>
<field name="refund_account_id" ref="ch_coa_2200"/>
<field name="account_id" ref="ch_coa_2200"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_0%')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_220')])]"/>
</record>
<record model="account.tax.template" id="vat_O_exclude">
<field name="name">TVA 0% exclue</field>
@@ -345,7 +323,7 @@
<field name="type_tax_use">sale</field>
<field name="refund_account_id" ref="ch_coa_2200"/>
<field name="account_id" ref="ch_coa_2200"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_0%_excl')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_230')])]"/>
</record>
<record model="account.tax.template" id="vat_O_import">
<field name="name">TVA 0% Importations de biens et services</field>
@@ -356,7 +334,6 @@
<field name="type_tax_use">purchase</field>
<field name="refund_account_id" ref="ch_coa_1171"/>
<field name="account_id" ref="ch_coa_1171"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_0_import')])]"/>
</record>
<!--# 100% on import !! the tax percentage is 00-->
<record model="account.tax.template" id="vat_100_import">
@@ -368,7 +345,7 @@
<field name="type_tax_use">purchase</field>
<field name="refund_account_id" ref="ch_coa_1171"/>
<field name="account_id" ref="ch_coa_1171"/>
<field name="tag_ids" eval="[(6,0,[ref('tag_100%_imp')])]"/>
<field name="tag_ids" eval="[(6,0,[ref('vat_tag_dedouanement')])]"/>
</record>
</data>
</odoo>
@@ -0,0 +1,6 @@
from openerp.modules.registry import RegistryManager
def migrate(cr, version):
registry = RegistryManager.get(cr.dbname)
from openerp.addons.account.models.chart_template import migrate_tags_on_taxes
migrate_tags_on_taxes(cr, registry)
@@ -0,0 +1,7 @@
from openerp.modules.registry import RegistryManager
def migrate(cr, version):
registry = RegistryManager.get(cr.dbname)
from openerp.addons.account.models.chart_template import migrate_set_tags_and_taxes_updatable
migrate_set_tags_and_taxes_updatable(cr, registry, 'l10n_ch')