diff --git a/modules/purchase_trade/__init__.py b/modules/purchase_trade/__init__.py
index 30a7040..f7c201e 100755
--- a/modules/purchase_trade/__init__.py
+++ b/modules/purchase_trade/__init__.py
@@ -173,6 +173,9 @@ def register():
purchase.AssayLine,
purchase.AssayElement,
purchase.AssayUnit,
+ purchase.PayableRule,
+ purchase.PenaltyRule,
+ purchase.ConcentrateTerm,
backtoback.Backtoback,
dimension.AnalyticDimension,
dimension.AnalyticDimensionValue,
diff --git a/modules/purchase_trade/purchase.py b/modules/purchase_trade/purchase.py
index c01f26c..cca9aef 100755
--- a/modules/purchase_trade/purchase.py
+++ b/modules/purchase_trade/purchase.py
@@ -760,6 +760,67 @@ class AssayElement(ModelSQL, ModelView):
('impurity', 'Impurity'),
], "Type")
+class PayableRule(ModelSQL, ModelView):
+ "Payable Rule"
+ __name__ = 'payable.rule'
+
+ element = fields.Many2One('assay.element', "Element")
+
+ payable_percent = fields.Numeric("Payable %")
+
+ deduction_value = fields.Numeric("Deduction Value")
+ deduction_unit = fields.Many2One('assay.unit',"Unit")
+
+class PenaltyRule(ModelSQL, ModelView):
+ "Penalty Rule"
+ __name__ = 'penalty.rule'
+
+ element = fields.Many2One('assay.element', "Element")
+
+ threshold = fields.Numeric("Treshold")
+ threshold_unit = fields.Many2One('assay.unit',"Unit")
+
+ step = fields.Numeric("Step")
+ penalty_value = fields.Numeric("Penalty Value")
+ currency = fields.Many2One('currency.currency',"Curr")
+ unit = fields.Many2One('product.uom',"Unit")
+
+class ConcentrateTerm(ModelSQL, ModelView):
+ "Concentrate Term"
+ __name__ = 'concentrate.term'
+
+ line = fields.Many2One(
+ 'purchase.line', "Line",
+ ondelete='CASCADE'
+ )
+
+ element = fields.Many2One('assay.element',"Element")
+
+ component = fields.Many2One(
+ 'pricing.component',
+ "Price Component"
+ )
+
+ manual_price = fields.Numeric(
+ "Manual Price",
+ digits=(16, 6)
+ )
+
+ currency = fields.Many2One('currency.currency',"Curr")
+ unit = fields.Many2One('product.uom',"Unit")
+
+ payable_rule = fields.Many2One(
+ 'payable.rule',"Payable Rule"
+ )
+
+ penalty_rules = fields.Many2One(
+ 'penalty.rule',
+ "Penalties"
+ )
+
+ valid_from = fields.Date("Valid From")
+ valid_to = fields.Date("Valid To")
+
class QualityAnalysis(ModelSQL,ModelView):
"Quality Analysis"
__name__ = 'quality.analysis'
@@ -922,6 +983,7 @@ class Line(metaclass=PoolMeta):
quality_analysis = fields.One2Many('quality.analysis','line',"Quality analysis")
assays = fields.One2Many('assay.assay','line',"Assays")
+ terms = fields.One2Many('concentrate.term','line',"Terms")
@classmethod
def default_finished(cls):
diff --git a/modules/purchase_trade/purchase.xml b/modules/purchase_trade/purchase.xml
index 9ff5df5..2576cbd 100755
--- a/modules/purchase_trade/purchase.xml
+++ b/modules/purchase_trade/purchase.xml
@@ -194,6 +194,17 @@ this repository contains the full copyright notices and license terms. -->
assay_element_form
+
+ concentrate.term
+ tree
+ concentrate_tree
+
+
+ concentrate.term
+ form
+ concentrate_form
+
+