diff options
| author | Victor Feyens <vfe@odoo.com> | 2019-11-19 18:12:25 +0000 |
|---|---|---|
| committer | Victor Feyens <vfe@odoo.com> | 2019-11-20 14:42:07 +0000 |
| commit | 81245528d18723845f80a5e4d348d044b730b655 (patch) | |
| tree | 23a59b9a2c8f992f209998ca310cc0f87463a28c | |
| parent | 11978215835e4ed4d5846736698ca679c211a075 (diff) | |
[IMP] account: get_fiscal_position returns a recordset
| -rw-r--r-- | addons/account/models/partner.py | 13 | ||||
| -rw-r--r-- | addons/l10n_ar/models/account_fiscal_position.py | 2 | ||||
| -rw-r--r-- | addons/website_sale/models/website.py | 3 |
3 files changed, 11 insertions, 7 deletions
diff --git a/addons/account/models/partner.py b/addons/account/models/partner.py index 40a200950c2..4dc1252eded 100644 --- a/addons/account/models/partner.py +++ b/addons/account/models/partner.py @@ -147,12 +147,17 @@ class AccountFiscalPosition(models.Model): if not fpos: # Fallback on catchall (no country, no group) fpos = self.search(base_domain + null_country_dom, limit=1) - return fpos or False + return fpos @api.model def get_fiscal_position(self, partner_id, delivery_id=None): + """ + :return: fiscal position found (recordset) + :rtype: :class:`account.fiscal.position` + """ if not partner_id: - return False + return self.env['account.fiscal.position'] + # This can be easily overridden to apply more complex fiscal rules PartnerObj = self.env['res.partner'] partner = PartnerObj.browse(partner_id) @@ -165,7 +170,7 @@ class AccountFiscalPosition(models.Model): # partner manually set fiscal position always win if delivery.property_account_position_id or partner.property_account_position_id: - return delivery.property_account_position_id.id or partner.property_account_position_id.id + return delivery.property_account_position_id or partner.property_account_position_id # First search only matching VAT positions vat_required = bool(partner.vat) @@ -175,7 +180,7 @@ class AccountFiscalPosition(models.Model): if not fp and vat_required: fp = self._get_fpos_by_region(delivery.country_id.id, delivery.state_id.id, delivery.zip, False) - return fp.id if fp else False + return fp or self.env['account.fiscal.position'] class AccountFiscalPositionTax(models.Model): diff --git a/addons/l10n_ar/models/account_fiscal_position.py b/addons/l10n_ar/models/account_fiscal_position.py index d2032de8f7b..82b7b7618ef 100644 --- a/addons/l10n_ar/models/account_fiscal_position.py +++ b/addons/l10n_ar/models/account_fiscal_position.py @@ -21,7 +21,7 @@ class AccountFiscalPosition(models.Model): partner_id).l10n_ar_afip_responsibility_type_id.id), ('company_id', '=', company.id), ] - return self.search(domain, limit=1).id + return self.search(domain, limit=1) return super().get_fiscal_position(partner_id, delivery_id=delivery_id) @api.onchange('l10n_ar_afip_responsibility_type_ids', 'country_group_id', 'country_id', 'zip_from', 'zip_to') diff --git a/addons/website_sale/models/website.py b/addons/website_sale/models/website.py index 89c7dcdcd08..147e024fd61 100644 --- a/addons/website_sale/models/website.py +++ b/addons/website_sale/models/website.py @@ -283,8 +283,7 @@ class Website(models.Model): country_code = request.session['geoip'].get('country_code') if country_code: country_id = request.env['res.country'].search([('code', '=', country_code)], limit=1).id - fp_id = request.env['account.fiscal.position'].sudo().with_company(request.website.company_id.id)._get_fpos_by_region(country_id) - sale_order.fiscal_position_id = fp_id + sale_order.fiscal_position_id = request.env['account.fiscal.position'].sudo().with_company(request.website.company_id.id)._get_fpos_by_region(country_id) else: # if no geolocation, use the public user fp sale_order.onchange_partner_shipping_id() |
