From 2ffdbae30e74f1bef84dfa767dc0ebd7393e121e Mon Sep 17 00:00:00 2001
From: qdp-odoo
Date: Thu, 13 Aug 2015 10:58:36 +0200
Subject: [PATCH] [FIX] l10n_eu_service made compliant with the new accounting
design
---
addons/account/models/account.py | 2 +-
.../l10n_eu_service.service_tax_rate.csv | 58 ++++++++---------
addons/l10n_eu_service/wizard/wizard.py | 64 +++----------------
addons/l10n_eu_service/wizard/wizard.xml | 9 +--
4 files changed, 41 insertions(+), 92 deletions(-)
diff --git a/addons/account/models/account.py b/addons/account/models/account.py
index c6b6d4978f5..fd4ca55de1e 100644
--- a/addons/account/models/account.py
+++ b/addons/account/models/account.py
@@ -432,7 +432,7 @@ class AccountTax(models.Model):
name = fields.Char(string='Tax Name', required=True, translate=True)
type_tax_use = fields.Selection([('sale', 'Sales'), ('purchase', 'Purchases'), ('none', 'None')], string='Tax Scope', required=True, default="sale",
help="Determines where the tax is selectable. Note : 'None' means a tax can't be used by itself, however it can still be used in a group.")
- amount_type = fields.Selection(default='percent', string="Tax Computation", required=True,
+ amount_type = fields.Selection(default='percent', string="Tax Computation", required=True, oldname='type',
selection=[('group', 'Group of Taxes'), ('fixed', 'Fixed'), ('percent', 'Percentage of Price'), ('division', 'Percentage of Price Tax Included')])
active = fields.Boolean(default=True, help="Set active to false to hide the tax without removing it.")
company_id = fields.Many2one('res.company', string='Company', required=True, default=lambda self: self.env.user.company_id)
diff --git a/addons/l10n_eu_service/wizard/l10n_eu_service.service_tax_rate.csv b/addons/l10n_eu_service/wizard/l10n_eu_service.service_tax_rate.csv
index 2f402f5d542..bd308d580ce 100644
--- a/addons/l10n_eu_service/wizard/l10n_eu_service.service_tax_rate.csv
+++ b/addons/l10n_eu_service/wizard/l10n_eu_service.service_tax_rate.csv
@@ -1,30 +1,30 @@
id,country_id:id,rate
-eu_rate_at,base.at,0.21
-eu_rate_be,base.be,0.21
-eu_rate_bg,base.bg,0.20
-eu_rate_hr,base.hr,0.25
-eu_rate_cy,base.cy,0.21
-eu_rate_cz,base.cz,0.21
-eu_rate_dk,base.dk,0.25
-eu_rate_ee,base.ee,0.20
-eu_rate_fi,base.fi,0.24
-eu_rate_fr,base.fr,0.20
-eu_rate_de,base.de,0.19
-eu_rate_gr,base.gr,0.23
-eu_rate_hu,base.hu,0.27
-eu_rate_ie,base.ie,0.23
-eu_rate_it,base.it,0.22
-eu_rate_lv,base.lv,0.21
-eu_rate_lt,base.lt,0.21
-eu_rate_lu,base.lu,0.17
-eu_rate_mt,base.mt,0.18
-eu_rate_nl,base.nl,0.21
-eu_rate_pl,base.pl,0.23
-eu_rate_pt,base.pt,0.23
-eu_rate_ro,base.ro,0.24
-eu_rate_pt,base.pt,0.23
-eu_rate_sk,base.sk,0.20
-eu_rate_si,base.si,0.22
-eu_rate_es,base.es,0.21
-eu_rate_se,base.se,0.24
-eu_rate_uk,base.uk,0.20
\ No newline at end of file
+eu_rate_at,base.at,21
+eu_rate_be,base.be,21
+eu_rate_bg,base.bg,20
+eu_rate_hr,base.hr,25
+eu_rate_cy,base.cy,21
+eu_rate_cz,base.cz,21
+eu_rate_dk,base.dk,25
+eu_rate_ee,base.ee,20
+eu_rate_fi,base.fi,24
+eu_rate_fr,base.fr,20
+eu_rate_de,base.de,19
+eu_rate_gr,base.gr,23
+eu_rate_hu,base.hu,27
+eu_rate_ie,base.ie,23
+eu_rate_it,base.it,22
+eu_rate_lv,base.lv,21
+eu_rate_lt,base.lt,21
+eu_rate_lu,base.lu,17
+eu_rate_mt,base.mt,18
+eu_rate_nl,base.nl,21
+eu_rate_pl,base.pl,23
+eu_rate_pt,base.pt,23
+eu_rate_ro,base.ro,24
+eu_rate_pt,base.pt,23
+eu_rate_sk,base.sk,20
+eu_rate_si,base.si,22
+eu_rate_es,base.es,21
+eu_rate_se,base.se,24
+eu_rate_uk,base.uk,20
diff --git a/addons/l10n_eu_service/wizard/wizard.py b/addons/l10n_eu_service/wizard/wizard.py
index 68d3ffed83f..e8263de8bf6 100644
--- a/addons/l10n_eu_service/wizard/wizard.py
+++ b/addons/l10n_eu_service/wizard/wizard.py
@@ -19,10 +19,8 @@ class l10n_eu_service(models.TransientModel):
'Please update the base module.'))
return eu_group
- def _default_chart_id(self):
- user = self.env.user
- return self.env['account.account'].search(
- [('company_id', '=', user.company_id.id), ('parent_id', '=', False)], limit=1)
+ def _get_default_company_id(self):
+ return self.env.user.company_id.id
def _default_fiscal_position_id(self):
user = self.env.user
@@ -35,8 +33,7 @@ class l10n_eu_service(models.TransientModel):
user = self.env.user
return self.env['account.tax'].search(
[('company_id', '=', user.company_id.id), ('type_tax_use', '=', 'sale'),
- ('type', '=', 'percent'), ('account_collected_id', '!=', False),
- ('tax_code_id', '!=', False)], limit=1, order='amount desc')
+ ('amount_type', '=', 'percent'), ('account_id', '!=', False)], limit=1, order='amount desc')
def _default_done_country_ids(self):
user = self.env.user
@@ -51,12 +48,9 @@ class l10n_eu_service(models.TransientModel):
('vat_required', '=', False), ('auto_apply', '=', True),
('company_id', '=', user.company_id.id)])
return eu_country_group.country_ids - eu_fiscal.mapped('country_id') - user.company_id.country_id
-
- chart_id = fields.Many2one(
- "account.account", string="Chart of Accounts", required=True, default=_default_chart_id)
+
company_id = fields.Many2one(
- 'res.company', string='Company', required=True,
- related='chart_id.company_id', readonly=True)
+ 'res.company', string='Company', required=True, default=_get_default_company_id)
fiscal_position_id = fields.Many2one(
'account.fiscal.position', string='Fiscal Position', default=_default_fiscal_position_id,
help="Optional fiscal position to use as template for general account mapping. "
@@ -80,59 +74,19 @@ class l10n_eu_service(models.TransientModel):
@api.multi
def generate_eu_service(self):
- imd = self.env['ir.model.data']
- tax_code = self.env['account.tax.code']
tax_rate = self.env["l10n_eu_service.service_tax_rate"]
account_tax = self.env['account.tax']
fpos = self.env['account.fiscal.position']
- chart_xid = 'l10n_eu_service.tax_chart_service_eu_company_%s' % self.company_id.name
- chart = self.env.ref(chart_xid, raise_if_not_found=False)
- if not chart:
- vals = {
- 'name': _("EU MOSS VAT Chart - %(company)s") % {'company': self.company_id.name},
- 'company_id': self.company_id.id,
- 'parent_id': False
- }
- chart_id = tax_code.create(vals).id
- vals_data = {
- 'name': 'tax_chart_service_eu_company_%s'%(self.company_id.name),
- 'model': 'account.tax.code',
- 'module': 'l10n_eu_service',
- 'res_id': chart_id,
- 'noupdate': True, # Don't drop it when module is updated
- }
- imd.create(vals_data)
- else:
- chart_id = chart.id
for country in self.todo_country_ids:
format_params = {'country_name': country.name}
- tx_base_code_data = {
- 'name': _("Base - VAT for EU Services to %(country_name)s") % format_params,
- 'code': "BASE-EU-VAT-%s" % country.code,
- 'parent_id': chart_id,
- }
tax_name = _("VAT for EU Services to %(country_name)s") % format_params
- tx_code_data = {
- 'name': tax_name,
- 'code': "EU-VAT-%s" % country.code,
- 'parent_id': chart_id,
- }
- tx_base_code = tax_code.create(tx_base_code_data)
- tx_code = tax_code.create(tx_code_data)
#create a new tax based on the selected service tax
data_tax = {
'name': tax_name,
'amount': tax_rate.search([('country_id', '=', country.id)]).rate,
- 'base_code_id': self.tax_id.base_code_id.id,
- 'account_collected_id': self.account_collected_id.id or self.tax_id.account_collected_id.id,
- 'account_paid_id': self.account_collected_id.id or self.tax_id.account_collected_id.id,
+ 'account_id': self.account_collected_id.id or self.tax_id.account_id.id,
+ 'refund_account_id': self.account_collected_id.id or self.tax_id.refund_account_id.id,
'type_tax_use': 'sale',
- 'base_code_id': tx_base_code.id,
- 'ref_base_code_id': tx_base_code.id,
- 'tax_code_id': tx_code.id,
- 'ref_tax_code_id': tx_code.id,
- 'ref_base_sign': -1,
- 'ref_tax_sign': -1,
'description': "EU-VAT-%s-S" % country.code,
'sequence': 1000,
}
@@ -146,7 +100,7 @@ class l10n_eu_service(models.TransientModel):
fiscal_pos_name += " (EU-VAT-%s)" % country.code
data_fiscal = {
'name': fiscal_pos_name,
- 'company_id': self.chart_id.company_id.id,
+ 'company_id': self.company_id.id,
'vat_required': False,
'auto_apply': True,
'country_id': country.id,
@@ -156,5 +110,3 @@ class l10n_eu_service(models.TransientModel):
fpos.create(data_fiscal)
return {'type': 'ir.actions.act_window_close'}
-
-
diff --git a/addons/l10n_eu_service/wizard/wizard.xml b/addons/l10n_eu_service/wizard/wizard.xml
index 784d661e822..33db37ef9c0 100644
--- a/addons/l10n_eu_service/wizard/wizard.xml
+++ b/addons/l10n_eu_service/wizard/wizard.xml
@@ -18,17 +18,14 @@
You can use the wizard again later to add more countries.
-
-
+