From 05bcb54779d8b9d3bce645a1371653db119abd64 Mon Sep 17 00:00:00 2001 From: Rodia Date: Sat, 25 Jan 2025 22:14:29 -0500 Subject: [PATCH] Fix: Correccion Tests --- sale_order.py | 39 ++++++++++++++++++++++++++------------- tryton.cfg | 1 + view/line_form.xml | 5 +++++ view/line_tree.xml | 5 +++++ 4 files changed, 37 insertions(+), 13 deletions(-) create mode 100644 view/line_form.xml create mode 100644 view/line_tree.xml diff --git a/sale_order.py b/sale_order.py index 35f48f0..cc361bd 100644 --- a/sale_order.py +++ b/sale_order.py @@ -1,9 +1,10 @@ # This file is part of Tryton. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. from trytond.model import ModelView, ModelSQL, fields +from trytond.pool import Pool +from trytond.transaction import Transaction from trytond.modules.currency.fields import Monetary from trytond.modules.product import price_digits -from trytond.pyson import Eval from decimal import Decimal @@ -27,19 +28,18 @@ class OrderLine(ModelView, ModelSQL): "Order Line" __name__ = 'order.line' + company = fields.Many2One( + 'company.company', "Company", required=True) order = fields.Many2One( 'sale.order', "Sale" ) + currency = fields.Many2One( + 'currency.currency', 'Currency', required=True) product = fields.Many2One( 'product.product', 'Product', required=True ) unit = fields.Many2One( - 'product.uom', 'Unit', - domain=[ - ('category', '=', Eval('product_uom_category')), - ], - depends=['product_uom_category'] - ) + 'product.uom', 'Unit') product_uom_category = fields.Function( fields.Many2One('product.uom.category', 'Product UOM Category'), 'on_change_with_product_uom_category' @@ -52,9 +52,23 @@ class OrderLine(ModelView, ModelSQL): ) total_amount = fields.Function( Monetary("Total Amount", currency='currency', digits='currency'), - 'get_total_amount' + 'on_change_with_total_amount' ) + @staticmethod + def default_company(): + return Transaction().context.get('company') + + @classmethod + def default_currency(cls, **pattern): + pool = Pool() + Company = pool.get('company.company') + company = pattern.get('company') + if not company: + company = cls.default_company() + if company: + return Company(company).currency.id + @fields.depends('product') def on_change_with_product_uom_category(self, name=None): if self.product: @@ -62,9 +76,8 @@ class OrderLine(ModelView, ModelSQL): return None @fields.depends('quantity', 'unitprice') - def on_change_with_total_amount(self): - total_amount = self.unitprice * Decimal(self.quantity) - return total_amount + def on_change_with_total_amount(self, name=None): + if self.unitprice and self.quantity: + total_amount = self.unitprice * Decimal(self.quantity) - def get_total_amount(self): - return self.on_change_with_total_amount() + return total_amount diff --git a/tryton.cfg b/tryton.cfg index e539420..7f44b41 100644 --- a/tryton.cfg +++ b/tryton.cfg @@ -5,3 +5,4 @@ depends: party product xml: + sale_order.xml diff --git a/view/line_form.xml b/view/line_form.xml new file mode 100644 index 0000000..68843d4 --- /dev/null +++ b/view/line_form.xml @@ -0,0 +1,5 @@ + + +
+
diff --git a/view/line_tree.xml b/view/line_tree.xml new file mode 100644 index 0000000..3b1cd8d --- /dev/null +++ b/view/line_tree.xml @@ -0,0 +1,5 @@ + + + +