[ADD] domain to choice of order in annex, new way to generate name

This commit is contained in:
Stepan Savelyev 2019-12-19 12:33:21 +05:00
parent da869db151
commit 75a51ed982
3 changed files with 33 additions and 15 deletions

View File

@ -20,6 +20,9 @@ class PartnerContract(models.Model):
string="Annexes", string="Annexes",
help="Annexes to this contract", help="Annexes to this contract",
) )
contract_annex_number = fields.Integer(
default=1, help="Counter for generate Annex name"
)
partner_id = fields.Many2one( partner_id = fields.Many2one(
"res.partner", "res.partner",
string="Partner", string="Partner",

View File

@ -8,30 +8,42 @@ class ContractOrderAnnex(models.Model):
_description = "Contract Order Annex" _description = "Contract Order Annex"
name = fields.Char(string="Name", help="The Number of Annex") name = fields.Char(string="Name", help="The Number of Annex")
order_id = fields.Many2one( order_id = fields.Many2one("sale.order", string="Order", required=True,)
"sale.order",
string="Order",
domain=[("contract_annex_id", "=", False)],
required=True,
)
contract_id = fields.Many2one( 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 @api.model
def create(self, values): def create(self, values):
record = super().create(values) record = super().create(values)
# Compute name if there is no custom name # Fill annex_id to domain it in future
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
)
record.order_id.contract_annex_id = record.id record.order_id.contract_annex_id = record.id
# Add counter
record.contract_id.contract_annex_number += 1
return record return record
@api.multi @api.multi

View File

@ -36,6 +36,9 @@
<field name="date_conclusion" attrs="{'readonly': [('state', 'in', ['sign', 'close'])]}"/> <field name="date_conclusion" attrs="{'readonly': [('state', 'in', ['sign', 'close'])]}"/>
<field name="date_conclusion_fix"/> <field name="date_conclusion_fix"/>
<field name="partner_id" readonly="1"/> <field name="partner_id" readonly="1"/>
<!-- Uses to generate number of Annex -->
<field name="contract_annex_number" invisible="1"/>
</group> </group>
<group string="Annexed orders" name="multi_params"> <group string="Annexed orders" name="multi_params">
<field name="contract_annex_ids" attrs="{'readonly': [('state', 'in', ['sign', 'close'])]}"> <field name="contract_annex_ids" attrs="{'readonly': [('state', 'in', ['sign', 'close'])]}">