changeset c3acd50748ba in modules/purchase_shipment_cost:default
details:
https://hg.tryton.org/modules/purchase_shipment_cost?cmd=changeset&node=c3acd50748ba
description:
Replace invisible state by readonly for field edited with checkbox
issue10431
review363351002
diffstat:
stock.py | 33 ++++++++++++++++-----------------
view/shipment_in_form.xml | 7 ++-----
2 files changed, 18 insertions(+), 22 deletions(-)
diffs (80 lines):
diff -r 2b38161fd7a2 -r c3acd50748ba stock.py
--- a/stock.py Sun Apr 10 19:11:39 2022 +0200
+++ b/stock.py Tue Apr 12 20:28:14 2022 +0200
@@ -19,29 +19,25 @@
cost_currency_used = fields.Function(fields.Many2One(
'currency.currency', "Cost Currency",
states={
- 'invisible': Eval('cost_edit', False),
+ 'readonly': ~(Eval('state').in_(['draft'])
+ & Eval('cost_edit', False)),
}),
- 'on_change_with_cost_currency_used')
+ 'on_change_with_cost_currency_used', setter='set_cost')
cost_currency = fields.Many2One(
'currency.currency', "Cost Currency",
states={
'required': Bool(Eval('cost')),
- 'invisible': ~Eval('cost_edit', False),
'readonly': ~Eval('state').in_(['draft']),
})
cost_used = fields.Function(fields.Numeric(
"Cost", digits=price_digits,
states={
- 'invisible': Eval('cost_edit', False),
+ 'readonly': ~(Eval('state').in_(['draft'])
+ & Eval('cost_edit', False)),
}),
- 'on_change_with_cost_used')
+ 'on_change_with_cost_used', setter='set_cost')
cost = fields.Numeric(
- "Cost", digits=price_digits,
- states={
- 'invisible': ~Eval('cost_edit', False),
- 'readonly': ~Eval('state').in_(['draft']),
- })
-
+ "Cost", digits=price_digits, readonly=True)
cost_edit = fields.Boolean(
"Edit Cost",
states={
@@ -83,12 +79,15 @@
else:
return self.cost
- @fields.depends(
- 'cost_edit', 'cost_used', 'cost_currency_used')
- def on_change_cost_edit(self):
- if self.cost_edit:
- self.cost = self.cost_used
- self.cost_currency = self.cost_currency_used
+ @classmethod
+ def set_cost(cls, lines, name, value):
+ if not value:
+ return
+ if name.endswith('_used'):
+ name = name[:-len('_used')]
+ cls.write([l for l in lines if l.cost_edit], {
+ name: value,
+ })
def allocate_cost_by_value(self):
pool = Pool()
diff -r 2b38161fd7a2 -r c3acd50748ba view/shipment_in_form.xml
--- a/view/shipment_in_form.xml Sun Apr 10 19:11:39 2022 +0200
+++ b/view/shipment_in_form.xml Tue Apr 12 20:28:14 2022 +0200
@@ -5,12 +5,9 @@
<xpath expr="/form/notebook" position="after">
<label name="carrier"/>
<field name="carrier"/>
- <group id="costs" col="-1" colspan="2">
- <label name="cost"/>
- <label name="cost_used"/>
- <field name="cost"/>
+ <label name="cost_used"/>
+ <group id="costs" col="-1">
<field name="cost_used"/>
- <field name="cost_currency"/>
<field name="cost_currency_used"/>
<field name="cost_edit"/>
</group>