changeset 789cd5edfde4 in modules/sale_shipment_cost:default
details: 
https://hg.tryton.org/modules/sale_shipment_cost?cmd=changeset&node=789cd5edfde4
description:
        Replace invisible state by readonly for field edited with checkbox

        issue10431
        review363351002
diffstat:

 stock.py                   |  34 +++++++++++-----------------------
 view/shipment_out_form.xml |  11 +++++------
 2 files changed, 16 insertions(+), 29 deletions(-)

diffs (85 lines):

diff -r 7579de14215c -r 789cd5edfde4 stock.py
--- a/stock.py  Sun Apr 10 19:11:39 2022 +0200
+++ b/stock.py  Tue Apr 12 20:28:14 2022 +0200
@@ -16,35 +16,30 @@
     cost_sale_currency_used = fields.Function(fields.Many2One(
             'currency.currency', "Cost Sale Currency",
             states={
-                'invisible': (
-                    Eval('cost_edit', False)
-                    | (Eval('cost_method') != 'shipment')),
+                'invisible': Eval('cost_method') != 'shipment',
+                'readonly': (Eval('state').in_(['done', 'cancelled'])
+                    | ~Eval('cost_edit', False)),
                 }),
-        'on_change_with_cost_sale_currency_used')
+        'on_change_with_cost_sale_currency_used', setter='set_cost')
     cost_sale_currency = fields.Many2One(
         'currency.currency', "Cost Sale Currency",
         states={
-            'invisible': (
-                ~Eval('cost_edit', False)
-                | (Eval('cost_method') != 'shipment')),
+            'invisible': Eval('cost_method') != 'shipment',
             'required': Bool(Eval('cost_sale')),
             'readonly': Eval('state').in_(['done', 'cancelled']),
             })
     cost_sale_used = fields.Function(fields.Numeric(
             "Cost Sale", digits=price_digits,
             states={
-                'invisible': (
-                    Eval('cost_edit', False)
-                    | (Eval('cost_method') != 'shipment')),
+                'invisible': Eval('cost_method') != 'shipment',
+                'readonly': (Eval('state').in_(['done', 'cancelled'])
+                    | ~Eval('cost_edit', False)),
                 }),
-        'on_change_with_cost_sale_used')
+        'on_change_with_cost_sale_used', setter='set_cost')
     cost_sale = fields.Numeric(
-        "Cost Sale", digits=price_digits,
+        "Cost Sale", digits=price_digits, readonly=True,
         states={
-            'invisible': (
-                ~Eval('cost_edit', False)
-                | (Eval('cost_method') != 'shipment')),
-            'readonly': Eval('state').in_(['done', 'cancelled']),
+            'invisible': Eval('cost_method') != 'shipment',
             })
 
     cost_invoice_line = fields.Many2One('account.invoice.line',
@@ -107,13 +102,6 @@
         elif self.cost_sale_currency:
             return self.cost_sale_currency.id
 
-    @fields.depends('cost_edit', 'cost_sale_used', 'cost_sale_currency_used')
-    def on_change_cost_edit(self):
-        super().on_change_cost_edit()
-        if self.cost_edit:
-            self.cost_sale = self.cost_sale_used
-            self.cost_sale_currency = self.cost_sale_currency_used
-
     @classmethod
     def get_cost_methods(cls):
         pool = Pool()
diff -r 7579de14215c -r 789cd5edfde4 view/shipment_out_form.xml
--- a/view/shipment_out_form.xml        Sun Apr 10 19:11:39 2022 +0200
+++ b/view/shipment_out_form.xml        Tue Apr 12 20:28:14 2022 +0200
@@ -2,12 +2,11 @@
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
 <data>
-    <xpath expr="//field[@name='cost_used']" position="after">
-        <label name="cost_sale"/>
+    <xpath expr="//group[@id='cost_used']" position="after">
         <label name="cost_sale_used"/>
-        <field name="cost_sale"/>
-        <field name="cost_sale_used"/>
-        <field name="cost_sale_currency"/>
-        <field name="cost_sale_currency_used"/>
+        <group id="cost_sale_used" col="-1" colspan="3">
+            <field name="cost_sale_used" xexpand="0"/>
+            <field name="cost_sale_currency_used" xexpand="0" xalign="0"/>
+        </group>
     </xpath>
 </data>

Reply via email to