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 @@
+
+
+
+