changeset 9bd7dc626b00 in modules/sale_subscription:default
details: 
https://hg.tryton.org/modules/sale_subscription?cmd=changeset&node=9bd7dc626b00
description:
        Provide digits from unit of measure

        issue10677
        review365801002
diffstat:

 subscription.py |  27 +++++++--------------------
 1 files changed, 7 insertions(+), 20 deletions(-)

diffs (77 lines):

diff -r 44e620bac83e -r 9bd7dc626b00 subscription.py
--- a/subscription.py   Sat Aug 21 09:09:56 2021 +0200
+++ b/subscription.py   Mon Aug 30 00:27:13 2021 +0200
@@ -492,13 +492,12 @@
         depends=['subscription_state'])
 
     quantity = fields.Float(
-        "Quantity", digits=(16, Eval('unit_digits', 2)),
+        "Quantity", digits='unit',
         states={
             'readonly': Eval('subscription_state') != 'draft',
             'required': Bool(Eval('consumption_recurrence')),
             },
-        depends=[
-            'unit_digits', 'subscription_state', 'consumption_recurrence'])
+        depends=['subscription_state', 'consumption_recurrence'])
     unit = fields.Many2One(
         'product.uom', "Unit", required=True,
         states={
@@ -510,8 +509,6 @@
                 ('category', '!=', -1)),
             ],
         depends=['subscription_state', 'service_unit_category'])
-    unit_digits = fields.Function(
-        fields.Integer("Unit Digits"), 'on_change_with_unit_digits')
     service_unit_category = fields.Function(
         fields.Many2One('product.uom.category', "Service Unit Category"),
         'on_change_with_service_unit_category')
@@ -652,12 +649,6 @@
     def default_quantity(cls):
         return 1
 
-    @fields.depends('unit')
-    def on_change_with_unit_digits(self, name=None):
-        if self.unit:
-            return self.unit.digits
-        return 2
-
     @fields.depends('subscription', '_parent_subscription.currency')
     def on_change_with_currency(self, name=None):
         if self.subscription and self.subscription.currency:
@@ -691,7 +682,6 @@
         category = product.sale_uom.category
         if not self.unit or self.unit.category != category:
             self.unit = product.sale_uom
-            self.unit_digits = product.sale_uom.digits
 
         with Transaction().set_context(self._get_context_sale_price()):
             self.unit_price = Product.get_sale_price(
@@ -863,11 +853,9 @@
     line = fields.Many2One(
         'sale.subscription.line', "Line", required=True, select=True,
         ondelete='RESTRICT')
-    quantity = fields.Float(
-        "Quantity", digits=(16, Eval('unit_digits', 2)), required=True,
-        depends=['unit_digits'])
-    unit_digits = fields.Function(
-        fields.Integer("Unit Digits"), 'on_change_with_unit_digits')
+    quantity = fields.Float("Quantity", digits='unit', required=True)
+    unit = fields.Function(fields.Many2One(
+            'product.uom', "Unit"), 'on_change_with_unit')
     date = fields.Date("Date", required=True)
     invoice_line = fields.Many2One(
         'account.invoice.line', "Invoice Line", readonly=True)
@@ -879,10 +867,9 @@
         cls._order.insert(0, ('date', 'DESC'))
 
     @fields.depends('line')
-    def on_change_with_unit_digits(self, name=None):
+    def on_change_with_unit(self, name=None):
         if self.line and self.line.unit:
-            return self.line.unit.digits
-        return 2
+            return self.line.unit.id
 
     @classmethod
     def copy(cls, consumptions, default=None):

Reply via email to