From 75a51ed982e74520c6c896773c9ec2c10c5dcdfd Mon Sep 17 00:00:00 2001 From: Stepan Savelyev Date: Thu, 19 Dec 2019 12:33:21 +0500 Subject: [PATCH] [ADD] domain to choice of order in annex, new way to generate name --- models/res_partner_contract.py | 3 ++ models/res_partner_contract_annex.py | 42 ++++++++++++++++++---------- views/res_partner_contract.xml | 3 ++ 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/models/res_partner_contract.py b/models/res_partner_contract.py index a821f95..1995432 100644 --- a/models/res_partner_contract.py +++ b/models/res_partner_contract.py @@ -20,6 +20,9 @@ class PartnerContract(models.Model): string="Annexes", help="Annexes to this contract", ) + contract_annex_number = fields.Integer( + default=1, help="Counter for generate Annex name" + ) partner_id = fields.Many2one( "res.partner", string="Partner", diff --git a/models/res_partner_contract_annex.py b/models/res_partner_contract_annex.py index 80e8ea3..d7770b9 100644 --- a/models/res_partner_contract_annex.py +++ b/models/res_partner_contract_annex.py @@ -8,30 +8,42 @@ class ContractOrderAnnex(models.Model): _description = "Contract Order Annex" name = fields.Char(string="Name", help="The Number of Annex") - order_id = fields.Many2one( - "sale.order", - string="Order", - domain=[("contract_annex_id", "=", False)], - required=True, - ) + order_id = fields.Many2one("sale.order", string="Order", required=True,) contract_id = fields.Many2one( - "res.partner.contract", string="Contract", readonly=True + "res.partner.contract", string="Contract", readonly=True, ) + @api.onchange("contract_id") + def _onchange_contract_id(self): + # Compute name if there is no custom name + contract_number = self.contract_id.name + annex_number = self.contract_id.contract_annex_number + + self.name = "{contract}--{annex}".format( + contract=contract_number, annex=annex_number + ) + + # Compute domain for order_id because of bug with + # not working correctly domain in model + return { + "domain": { + "order_id": [ + ("partner_id", "=", self.contract_id.partner_id.id), + ("contract_annex_id", "=", False), + ] + } + } + @api.model def create(self, values): record = super().create(values) - # Compute name if there is no custom name - if not record.name: - contract_number = record.contract_id.name - annex_number = len(record.contract_id.contract_annex_ids.ids) - - record.name = "{contract}--{annex}".format( - contract=contract_number, annex=annex_number - ) + # Fill annex_id to domain it in future record.order_id.contract_annex_id = record.id + # Add counter + record.contract_id.contract_annex_number += 1 + return record @api.multi diff --git a/views/res_partner_contract.xml b/views/res_partner_contract.xml index cee51cd..6f871fa 100644 --- a/views/res_partner_contract.xml +++ b/views/res_partner_contract.xml @@ -36,6 +36,9 @@ + + +