[FIX] l10n_eu_service made compliant with the new accounting design
This commit is contained in:
@@ -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
|
||||
|
||||
|
@@ -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'}
|
||||
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user