changeset e5199cde6738 in modules/purchase:default
details: https://hg.tryton.org/modules/purchase?cmd=changeset&node=e5199cde6738
description:
Replace invisible state by readonly for field edited with checkbox
issue10431
review363351002
diffstat:
purchase.py | 40 +++++++++++++++++++++++++---------------
view/purchase_line_form.xml | 3 +--
2 files changed, 26 insertions(+), 17 deletions(-)
diffs (78 lines):
diff -r 245b1822ebde -r e5199cde6738 purchase.py
--- a/purchase.py Mon Apr 11 21:27:52 2022 +0200
+++ b/purchase.py Tue Apr 12 20:28:14 2022 +0200
@@ -1168,29 +1168,27 @@
'To Location'), 'get_to_location')
delivery_date = fields.Function(fields.Date('Delivery Date',
states={
- 'invisible': ((Eval('type') != 'line')
- | (Eval('delivery_date_edit', False)
- & ~Eval('purchase_state').in_(
- ['processing', 'done', 'cancelled']))),
+ 'invisible': Eval('type') != 'line',
+ 'readonly': (Eval('purchase_state').in_(
+ ['processing', 'done', 'cancelled'])
+ | ~Eval('delivery_date_edit', False)),
}),
- 'on_change_with_delivery_date')
+ 'on_change_with_delivery_date', setter='set_delivery_date')
delivery_date_edit = fields.Boolean(
"Edit Delivery Date",
states={
- 'invisible': Eval('type') != 'line',
- 'readonly': Eval('purchase_state').in_([
- 'processing', 'done', 'cancelled']),
+ 'invisible': (
+ (Eval('type') != 'line')
+ | Eval('purchase_state').in_(
+ ['processing', 'done', 'cancelled'])),
+ 'readonly': Eval('purchase_state').in_(
+ ['processing', 'done', 'cancelled']),
},
help="Check to edit the delivery date.")
delivery_date_store = fields.Date(
- "Delivery Date",
+ "Delivery Date", readonly=True,
states={
- 'invisible': ((Eval('type') != 'line')
- | ~Eval('delivery_date_edit', False)
- | Eval('purchase_state').in_(
- ['processing', 'done', 'cancelled'])),
- 'readonly': Eval('purchase_state').in_([
- 'processing', 'done', 'cancelled']),
+ 'invisible': Eval('type') != 'line',
})
purchase_state = fields.Function(
fields.Selection('get_purchase_states', 'Purchase State'),
@@ -1454,6 +1452,18 @@
return min(dates, default=None)
return self.planned_delivery_date
+ @classmethod
+ def set_delivery_date(cls, lines, name, value):
+ cls.write([l for l in lines if l.delivery_date_edit], {
+ 'delivery_date_store': value,
+ })
+
+ @fields.depends('delivery_date_edit', 'delivery_date',
+ methods=['planned_delivery_date'])
+ def on_change_delivery_date_edit(self):
+ if not self.delivery_date_edit:
+ self.delivery_date = self.planned_delivery_date
+
@property
@fields.depends(
'product_supplier', 'quantity', 'purchase',
diff -r 245b1822ebde -r e5199cde6738 view/purchase_line_form.xml
--- a/view/purchase_line_form.xml Mon Apr 11 21:27:52 2022 +0200
+++ b/view/purchase_line_form.xml Tue Apr 12 20:28:14 2022 +0200
@@ -26,8 +26,7 @@
<label id="delivery_date" string="Delivery Date:"/>
<group id="delivery_date" col="-1">
<field name="delivery_date" xexpand="0"/>
- <field name="delivery_date_store" xexpand="0"/>
- <field name="delivery_date_edit" xexpand="0"/>
+ <field name="delivery_date_edit" xexpand="0" xalign="0"/>
</group>
<separator name="description" colspan="4"/>
<field name="description" colspan="4"/>