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.

- - +