[IMP] sale: Convert _onchange_partner_shipping_id into computed field
This commit is contained in:
@@ -284,9 +284,9 @@ class AccountMove(models.Model):
|
||||
# =========================================================
|
||||
|
||||
# ==== Business fields ====
|
||||
fiscal_position_id = fields.Many2one('account.fiscal.position', string='Fiscal Position', readonly=True,
|
||||
states={'draft': [('readonly', False)]},
|
||||
check_company=True,
|
||||
fiscal_position_id = fields.Many2one(
|
||||
'account.fiscal.position', string='Fiscal Position', readonly=True,
|
||||
states={'draft': [('readonly', False)]}, check_company=True,
|
||||
domain="[('company_id', '=', company_id)]", ondelete="restrict",
|
||||
help="Fiscal positions are used to adapt taxes and accounts for particular customers or sales orders/invoices. "
|
||||
"The default value comes from the customer.")
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class AccountMove(models.Model):
|
||||
_name = 'account.move'
|
||||
_inherit = ['account.move', 'utm.mixin']
|
||||
@@ -24,22 +25,25 @@ class AccountMove(models.Model):
|
||||
states={'draft': [('readonly', False)]},
|
||||
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]",
|
||||
help="Delivery address for current invoice.")
|
||||
|
||||
# UTMs - enforcing the fact that we want to 'set null' when relation is unlinked
|
||||
campaign_id = fields.Many2one(ondelete='set null')
|
||||
medium_id = fields.Many2one(ondelete='set null')
|
||||
source_id = fields.Many2one(ondelete='set null')
|
||||
|
||||
@api.onchange('partner_shipping_id', 'company_id')
|
||||
def _onchange_partner_shipping_id(self):
|
||||
"""
|
||||
Trigger the change of fiscal position when the shipping address is modified.
|
||||
"""
|
||||
delivery_partner = self.env['res.partner'].browse(self._get_invoice_delivery_partner_id())
|
||||
fiscal_position = self.env['account.fiscal.position'].with_company(self.company_id)._get_fiscal_position(
|
||||
self.partner_id, delivery=delivery_partner)
|
||||
fiscal_position_id = fields.Many2one(
|
||||
compute='_compute_fiscal_position_id', store=True, pre_compute=True)
|
||||
|
||||
if fiscal_position:
|
||||
self.fiscal_position_id = fiscal_position
|
||||
|
||||
@api.depends('partner_shipping_id', 'company_id')
|
||||
def _compute_fiscal_position_id(self):
|
||||
# Trigger the change of fiscal position when the shipping address is modified.
|
||||
for move in self:
|
||||
delivery_partner = self.env['res.partner'].browse(move._get_invoice_delivery_partner_id())
|
||||
fiscal_position = self.env['account.fiscal.position'].with_company(
|
||||
move.company_id)._get_fiscal_position(move.partner_id, delivery=delivery_partner)
|
||||
if fiscal_position:
|
||||
move.fiscal_position_id = fiscal_position
|
||||
|
||||
def unlink(self):
|
||||
downpayment_lines = self.mapped('line_ids.sale_line_ids').filtered(lambda line: line.is_downpayment and line.invoice_lines <= self.mapped('line_ids'))
|
||||
|
||||
Reference in New Issue
Block a user