Skip to content

Commit 3e2672a

Browse files
committed
[16.0][IMP] contract: Added domain for pricelist_id
Using domain for field "pricelist_id" which lists pricelist whose currency is matched with journal_id currency. This domain helps to avoid using different currency within same contract.
1 parent 69b97e0 commit 3e2672a

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

contract/models/abstract_contract.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,15 @@ class ContractAbstractContract(models.AbstractModel):
2323
partner_id = fields.Many2one(
2424
comodel_name="res.partner", string="Partner", index=True
2525
)
26-
pricelist_id = fields.Many2one(comodel_name="product.pricelist", string="Pricelist")
26+
pricelist_id_domain = fields.Binary(
27+
compute="_compute_pricelist_id_domain", readonly=True, store=False
28+
)
29+
pricelist_id = fields.Many2one(
30+
comodel_name="product.pricelist",
31+
string="Pricelist",
32+
compute="_compute_pricelist_id",
33+
store=True,
34+
)
2735
contract_type = fields.Selection(
2836
selection=[("sale", "Customer"), ("purchase", "Supplier")],
2937
default="sale",
@@ -80,3 +88,21 @@ def _compute_journal_id(self):
8088
contract.journal_id = journal.id
8189
else:
8290
contract.journal_id = None
91+
92+
@api.depends("journal_id")
93+
def _compute_pricelist_id_domain(self):
94+
for rec in self:
95+
rec.pricelist_id_domain = (
96+
[("currency_id", "=", rec.journal_id.currency_id.id)]
97+
if rec.journal_id.currency_id
98+
else []
99+
)
100+
101+
@api.depends("journal_id")
102+
def _compute_pricelist_id(self):
103+
for rec in self:
104+
if (
105+
rec.journal_id.currency_id
106+
and rec.journal_id.currency_id != rec.pricelist_id.currency_id
107+
):
108+
rec.pricelist_id = None

contract/views/contract.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@
105105
<group name="main">
106106
<group>
107107
<field name="commercial_partner_id" invisible="1" />
108+
<field name="pricelist_id_domain" invisible="1" />
108109
<field
109110
name="partner_id"
110111
required="1"
@@ -113,6 +114,7 @@
113114
<field
114115
name="pricelist_id"
115116
attrs="{'readonly': [('is_terminated','=',True)]}"
117+
domain="pricelist_id_domain"
116118
/>
117119
<field
118120
name="payment_term_id"

0 commit comments

Comments
 (0)