From c1a4b442a3f2070dfb11a767adc985829b43391d Mon Sep 17 00:00:00 2001 From: laurentbarontini Date: Sat, 7 Feb 2026 20:21:51 +0100 Subject: [PATCH] 07.02.26 --- modules/purchase_trade/__init__.py | 4 + modules/purchase_trade/dimension.py | 79 +++++++++++++++++++ modules/purchase_trade/dimension.xml | 34 ++++++++ modules/purchase_trade/purchase.py | 5 ++ modules/purchase_trade/tryton.cfg | 3 +- .../view/dimension_ass_form.xml | 6 ++ .../view/dimension_ass_tree.xml | 4 + .../purchase_trade/view/dimension_form.xml | 8 ++ .../purchase_trade/view/dimension_tree.xml | 5 ++ .../view/dimension_value_form.xml | 14 ++++ .../view/dimension_value_tree.xml | 7 ++ modules/purchase_trade/view/purchase_form.xml | 3 + 12 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 modules/purchase_trade/dimension.py create mode 100644 modules/purchase_trade/dimension.xml create mode 100644 modules/purchase_trade/view/dimension_ass_form.xml create mode 100644 modules/purchase_trade/view/dimension_ass_tree.xml create mode 100644 modules/purchase_trade/view/dimension_form.xml create mode 100644 modules/purchase_trade/view/dimension_tree.xml create mode 100644 modules/purchase_trade/view/dimension_value_form.xml create mode 100644 modules/purchase_trade/view/dimension_value_tree.xml diff --git a/modules/purchase_trade/__init__.py b/modules/purchase_trade/__init__.py index b2fa644..3ef10bb 100755 --- a/modules/purchase_trade/__init__.py +++ b/modules/purchase_trade/__init__.py @@ -28,6 +28,7 @@ from . import ( open_position, credit_risk, valuation, + dimension, weight_report, service, ) @@ -164,6 +165,9 @@ def register(): purchase.DocTemplate, purchase.DocTypeTemplate, purchase.PurchaseStrategy, + dimension.AnalyticDimension, + dimension.AnalyticDimensionValue, + dimension.AnalyticDimensionAssignment, weight_report.WeightReport, module='purchase', type_='model') Pool.register( diff --git a/modules/purchase_trade/dimension.py b/modules/purchase_trade/dimension.py new file mode 100644 index 0000000..ab3745c --- /dev/null +++ b/modules/purchase_trade/dimension.py @@ -0,0 +1,79 @@ +from trytond.model import fields +from trytond.pool import Pool, PoolMeta +from trytond.pyson import Bool, Eval, Id +from trytond.model import (ModelSQL, ModelView) +from trytond.tools import is_full_text, lstrip_wildcard +from trytond.transaction import Transaction, inactive_records +from decimal import getcontext, Decimal, ROUND_HALF_UP +from sql.aggregate import Count, Max, Min, Sum, Avg, BoolOr +from sql.conditionals import Case +from sql import Column, Literal +from sql.functions import CurrentTimestamp, DateTrunc +from trytond.wizard import Button, StateTransition, StateView, Wizard +import datetime +import logging + +class AnalyticDimension(ModelSQL, ModelView): + 'Analytic Dimension' + __name__ = 'analytic.dimension' + + name = fields.Char('Name', required=True) + code = fields.Char('Code', required=True) + active = fields.Boolean('Active') + +class AnalyticDimensionValue(ModelSQL, ModelView): + 'Analytic Dimension Value' + __name__ = 'analytic.dimension.value' + + dimension = fields.Many2One( + 'analytic.dimension', + 'Dimension', + required=True, + ondelete='CASCADE' + ) + + name = fields.Char('Name', required=True) + code = fields.Char('Code') + + parent = fields.Many2One( + 'analytic.dimension.value', + 'Parent', + domain=[ + ('dimension', '=', Eval('dimension')), + ], + depends=['dimension'] + ) + + children = fields.One2Many( + 'analytic.dimension.value', + 'parent', + 'Children' + ) + + active = fields.Boolean('Active') + +class AnalyticDimensionAssignment(ModelSQL, ModelView): + 'Analytic Dimension Assignment' + __name__ = 'analytic.dimension.assignment' + + dimension = fields.Many2One( + 'analytic.dimension', + 'Dimension', + required=True + ) + + value = fields.Many2One( + 'analytic.dimension.value', + 'Value', + required=True, + domain=[ + ('dimension', '=', Eval('dimension')), + ], + depends=['dimension'] + ) + + purchase = fields.Many2One( + 'purchase.purchase', + 'Purchase', + ondelete='CASCADE' + ) \ No newline at end of file diff --git a/modules/purchase_trade/dimension.xml b/modules/purchase_trade/dimension.xml new file mode 100644 index 0000000..bd896cf --- /dev/null +++ b/modules/purchase_trade/dimension.xml @@ -0,0 +1,34 @@ + + + + analytic.dimension + form + dimension_form + + + analytic.dimension + tree + dimension_tree + + + analytic.dimension.value + form + dimension_value_form + + + analytic.dimension.value + tree + dimension_value_tree + + + analytic.dimension.assignment + form + dimension_ass_form + + + analytic.dimension.assignment + tree + dimension_ass_tree + + + \ No newline at end of file diff --git a/modules/purchase_trade/purchase.py b/modules/purchase_trade/purchase.py index fe05f6c..228e79c 100755 --- a/modules/purchase_trade/purchase.py +++ b/modules/purchase_trade/purchase.py @@ -269,6 +269,11 @@ class Purchase(metaclass=PoolMeta): doc_template = fields.Many2One('doc.template',"Template") required_documents = fields.Many2Many( 'contract.document.type', 'purchase', 'doc_type', 'Required Documents') + analytic_dimensions = fields.One2Many( + 'analytic.dimension.assignment', + 'purchase', + 'Analytic Dimensions' + ) @classmethod def default_viewer(cls): diff --git a/modules/purchase_trade/tryton.cfg b/modules/purchase_trade/tryton.cfg index 5686126..16a1f53 100755 --- a/modules/purchase_trade/tryton.cfg +++ b/modules/purchase_trade/tryton.cfg @@ -30,4 +30,5 @@ xml: global_reporting.xml derivative.xml valuation.xml - weight_report.xml \ No newline at end of file + weight_report.xml + dimension.xml \ No newline at end of file diff --git a/modules/purchase_trade/view/dimension_ass_form.xml b/modules/purchase_trade/view/dimension_ass_form.xml new file mode 100644 index 0000000..6e5983a --- /dev/null +++ b/modules/purchase_trade/view/dimension_ass_form.xml @@ -0,0 +1,6 @@ +
+