From 405884ba9eefbd06eea9bdefc59d509f4851b4ee Mon Sep 17 00:00:00 2001 From: Stepan Savelyev Date: Mon, 20 Jan 2020 19:03:22 +0500 Subject: [PATCH] [IMP] compute partner_id and company_id in annex model --- data/fields_default.xml | 4 +-- models/res_partner_contract_annex.py | 3 ++- wizard/res_partner_contract_wizard.py | 38 +++++++++------------------ 3 files changed, 17 insertions(+), 28 deletions(-) diff --git a/data/fields_default.xml b/data/fields_default.xml index 55a7c56..98fe889 100644 --- a/data/fields_default.xml +++ b/data/fields_default.xml @@ -151,8 +151,8 @@ action = ctx # Aliases self = record -seller = self.contract_id.company_id -partner = self.contract_id.partner_id +seller = self.company_id +partner = self.partner_id seller_bank = seller.bank_ids and seller.bank_ids[0] seller_bank_name = seller_bank.bank_id.name + (" г. {city}".format(city=seller_bank.bank_id.city) if seller_bank.bank_id.city else "") diff --git a/models/res_partner_contract_annex.py b/models/res_partner_contract_annex.py index 76d68ff..cc77722 100644 --- a/models/res_partner_contract_annex.py +++ b/models/res_partner_contract_annex.py @@ -17,7 +17,8 @@ class ContractOrderAnnex(models.Model, IDocument, Extension): contract_id = fields.Many2one( "res.partner.contract", string="Contract", readonly=True, ) - partner_id = fields.Many2one(related="contract_id.partner_id") + company_id = fields.Many2one("res.partner", related="contract_id.company_id",) + partner_id = fields.Many2one("res.partner", related="contract_id.partner_id",) order_id = fields.Many2one( "sale.order", string="Order", diff --git a/wizard/res_partner_contract_wizard.py b/wizard/res_partner_contract_wizard.py index 9cca02d..b97c330 100644 --- a/wizard/res_partner_contract_wizard.py +++ b/wizard/res_partner_contract_wizard.py @@ -13,18 +13,12 @@ _logger = logging.getLogger(__name__) class ContractWizard(models.TransientModel): _name = "res.partner.contract.wizard" - def _get_default_partner(self): - current_id = self.env.context.get("active_id") - partner_id = self.env[self.active_model].browse(current_id).partner_id - return partner_id - def _get_default_template(self): - partner_id = self._get_default_partner() template_type = { "res.partner.contract": "contract", "res.partner.contract.annex": "annex", }.get(self.active_model, False) - company_type = partner_id.company_form if partner_id.is_company else "person" + company_type = self.partner_id.company_form if self.partner_id.is_company else "person" document_template_domain = [ ("template_type", "=", template_type), @@ -42,10 +36,8 @@ class ContractWizard(models.TransientModel): ], string="Target", ) - company_id = fields.Many2one("res.partner", string="Company") - partner_id = fields.Many2one( - "res.partner", string="Partner", default=_get_default_partner - ) + company_id = fields.Many2one("res.partner", string="Company", compute="_compute_company_id",) + partner_id = fields.Many2one("res.partner", string="Partner", compute="_compute_partner_id",) document_template = fields.Many2one( "res.partner.document.template", string="Document Template", @@ -68,6 +60,16 @@ class ContractWizard(models.TransientModel): if not self.document_template: raise ValidationError("You did not set up the template...") + @api.depends("company_id", "target") + def _compute_company_id(self): + if self.target: + self.company_id = self.target.company_id + + @api.depends("partner_id", "target") + def _compute_partner_id(self): + if self.target: + self.partner_id = self.target.partner_id + @api.depends("document_name", "document_template", "target") def _compute_document_name(self): self.document_name = self.target.get_name_by_document_template( @@ -90,20 +92,6 @@ class ContractWizard(models.TransientModel): model=self.active_model, target_id=int(self.env.context.get("self_id")) ) - # Check for model and get this meta fields - company_id = ( - self.target.company_id - if hasattr(self.target, "company_id") - else self.target.contract_id.company_id - ) - partner_id = ( - self.target.partner_id - if hasattr(self.target, "partner_id") - else self.target.contract_id.partner_id - ) - self.company_id = company_id - self.partner_id = partner_id - model_to_action = { "res.partner.contract": "action_get_contract_context", "res.partner.contract.annex": "action_get_annex_context",