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 @@
+
+
+