diff --git a/sale.py b/sale.py index 8184e4b..b617aef 100644 --- a/sale.py +++ b/sale.py @@ -2,6 +2,7 @@ from trytond.pool import Pool, PoolMeta from trytond.model import ModelView, fields from trytond.transaction import Transaction from trytond.modules.currency.fields import Monetary +from trytond.pyson import Eval from decimal import Decimal import requests @@ -23,6 +24,7 @@ class Sale(metaclass=PoolMeta): "Total Tip", digits='currency', currency='currency'), 'get_amount') total_tip_cache = fields.Numeric("Total Tip cache", digits="currency") + @classmethod def __setup__(cls): @@ -340,7 +342,19 @@ class Line(metaclass=PoolMeta): pizza = fields.Integer("Pizza") impreso = fields.Boolean("Impreso") bought_pizza = fields.Boolean("Sold pizza") + rate = fields.Numeric( + "Rate", digits=(16, 4), + states={ + 'invisible': Eval('type') != 'line', + 'readonly': Eval('sale_state') != 'draft', + }, + depends=['type', 'sale_state']) + + @classmethod + def default_rate(cls): + return 0 + @fields.depends('product', 'unit', 'sale', '_parent_sale.party', '_parent_sale.invoice_party', '_parent_sale.pizza_number', @@ -359,3 +373,8 @@ class Line(metaclass=PoolMeta): Production = super(Line, self).get_production() return Production + + @fields.depends('discount_rate') + def on_change_discount_rate(self): + if self.discount_rate: + self.rate = self.discount_rate diff --git a/view/sale_line_form.xml b/view/sale_line_form.xml index 5a0105a..1d590ed 100644 --- a/view/sale_line_form.xml +++ b/view/sale_line_form.xml @@ -10,4 +10,8 @@