diff --git a/modules/purchase_trade/__init__.py b/modules/purchase_trade/__init__.py
index 73fe546..171353f 100755
--- a/modules/purchase_trade/__init__.py
+++ b/modules/purchase_trade/__init__.py
@@ -169,6 +169,9 @@ def register():
purchase.PurchaseStrategy,
purchase.PriceComposition,
purchase.QualityAnalysis,
+ purchase.Assay,
+ purchase.AssayLine,
+ purchase.AssayElement,
backtoback.Backtoback,
dimension.AnalyticDimension,
dimension.AnalyticDimensionValue,
diff --git a/modules/purchase_trade/purchase.py b/modules/purchase_trade/purchase.py
index a1097a6..56318b1 100755
--- a/modules/purchase_trade/purchase.py
+++ b/modules/purchase_trade/purchase.py
@@ -528,7 +528,69 @@ class PriceComposition(ModelSQL,ModelView):
line = fields.Many2One('purchase.line',"Purchase line")
component = fields.Char("Component")
price = fields.Numeric("Price")
-
+
+class Assay(ModelSQL, ModelView):
+ __name__ = 'assay.assay'
+
+ line = fields.Many2One('purchase.line',"Purchase Line")
+
+ reference = fields.Char("Lab Reference")
+ date = fields.Date("Analysis Date")
+
+ type = fields.Selection([
+ ('provisional', 'Provisional'),
+ ('final', 'Final'),
+ ('umpire', 'Umpire'),
+ ], "Type")
+
+ status = fields.Selection([
+ ('draft', 'Draft'),
+ ('validated', 'Validated'),
+ ], "Status")
+
+ laboratory = fields.Char("Laboratory")
+
+ lines = fields.One2Many(
+ 'assay.line', 'assay', "Assay Lines"
+ )
+
+ document = fields.Binary("Analysis", filename='filename')
+ filename = fields.Char('Analysis')
+
+class AssayLine(ModelSQL, ModelView):
+ __name__ = 'assay.line'
+
+ assay = fields.Many2One('assay.assay', "Assay")
+
+ element = fields.Many2One('assay.element', "Element")
+
+ value = fields.Float("Value")
+
+ unit = fields.Many2One('product.uom', "Unit")
+
+ category = fields.Selection([
+ ('assay', 'Assay'),
+ ('penalty', 'Penalty'),
+ ('moisture', 'Moisture'),
+ ], "Category")
+
+ method = fields.Char("Method")
+
+ is_payable = fields.Boolean("Payable")
+
+class AssayElement(ModelSQL, ModelView):
+ __name__ = 'assay.element'
+
+ name = fields.Char("Code") # Cu, Au, As
+ description = fields.Char("Description")
+
+ default_unit = fields.Many2One('product.uom', "Default Unit")
+
+ type = fields.Selection([
+ ('metal', 'Metal'),
+ ('impurity', 'Impurity'),
+ ])
+
class QualityAnalysis(ModelSQL,ModelView):
"Quality Analysis"
__name__ = 'quality.analysis'
@@ -690,6 +752,7 @@ class Line(metaclass=PoolMeta):
finished = fields.Boolean("Mark as finished")
quality_analysis = fields.One2Many('quality.analysis','line',"Quality analysis")
+ assays = fields.One2Many('assay.assay','line',"Assays")
@classmethod
def default_finished(cls):
diff --git a/modules/purchase_trade/purchase.xml b/modules/purchase_trade/purchase.xml
index d692377..9ff5df5 100755
--- a/modules/purchase_trade/purchase.xml
+++ b/modules/purchase_trade/purchase.xml
@@ -173,6 +173,27 @@ this repository contains the full copyright notices and license terms. -->
quality_analysis_form
+
+ assay.assay
+ tree
+ assay_tree
+
+
+ assay.assay
+ form
+ assay_form
+
+
+ assay.line
+ tree
+ assay_line_tree
+
+
+ assay.element
+ form
+ assay_element_form
+
+