[FIX] l10n_eu_service made compliant with the new accounting design

This commit is contained in:
qdp-odoo
2015-08-13 10:59:04 +02:00
parent d4bf5a2efc
commit 2ffdbae30e
4 changed files with 41 additions and 92 deletions
+1 -1
View File
@@ -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)
@@ -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
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
1 id country_id:id rate
2 eu_rate_at base.at 0.21 21
3 eu_rate_be base.be 0.21 21
4 eu_rate_bg base.bg 0.20 20
5 eu_rate_hr base.hr 0.25 25
6 eu_rate_cy base.cy 0.21 21
7 eu_rate_cz base.cz 0.21 21
8 eu_rate_dk base.dk 0.25 25
9 eu_rate_ee base.ee 0.20 20
10 eu_rate_fi base.fi 0.24 24
11 eu_rate_fr base.fr 0.20 20
12 eu_rate_de base.de 0.19 19
13 eu_rate_gr base.gr 0.23 23
14 eu_rate_hu base.hu 0.27 27
15 eu_rate_ie base.ie 0.23 23
16 eu_rate_it base.it 0.22 22
17 eu_rate_lv base.lv 0.21 21
18 eu_rate_lt base.lt 0.21 21
19 eu_rate_lu base.lu 0.17 17
20 eu_rate_mt base.mt 0.18 18
21 eu_rate_nl base.nl 0.21 21
22 eu_rate_pl base.pl 0.23 23
23 eu_rate_pt base.pt 0.23 23
24 eu_rate_ro base.ro 0.24 24
25 eu_rate_pt base.pt 0.23 23
26 eu_rate_sk base.sk 0.20 20
27 eu_rate_si base.si 0.22 22
28 eu_rate_es base.es 0.21 21
29 eu_rate_se base.se 0.24 24
30 eu_rate_uk base.uk 0.20 20
+8 -56
View File
@@ -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'}
+3 -6
View File
@@ -18,17 +18,14 @@
You can use the wizard again later to add more countries.
</p>
<group>
<field name="chart_id" domain="[('deprecated','=', False)]"
context="{'company_id': company_id}" options="{'no_create': True}"/>
<field name="company_id" invisible="1"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="fiscal_position_id" domain="[('company_id','=', company_id)]"
options="{'no_create': True}"
placeholder="Current EU B2C Fiscal Position, if any"/>
<field name="tax_id"
domain="[('type_tax_use', '=', 'sale'),
('type', '=', 'percent'),
('account_collected_id', '!=', False),
('tax_code_id', '!=', False),
('amount_type', '=', 'percent'),
('account_id', '!=', False),
('company_id','=', company_id)]"
options="{'no_create': True}"/>
<field name="account_collected_id"