diff --git a/sale_discount_display_amount/__manifest__.py b/sale_discount_display_amount/__manifest__.py index cc5ca76aa0e7..3ac287c50315 100644 --- a/sale_discount_display_amount/__manifest__.py +++ b/sale_discount_display_amount/__manifest__.py @@ -6,7 +6,7 @@ 'summary': """ This addon intends to display the amount of the discount computed on sale_order_line and sale_order level""", - 'version': '12.0.1.2.0', + 'version': '12.0.1.3.0', 'license': 'AGPL-3', 'author': 'ACSONE SA/NV,Odoo Community Association (OCA)', 'website': 'https://github.com/OCA/sale-workflow', diff --git a/sale_discount_display_amount/hooks.py b/sale_discount_display_amount/hooks.py index 22cc3d3f98a7..1a646dfb129c 100644 --- a/sale_discount_display_amount/hooks.py +++ b/sale_discount_display_amount/hooks.py @@ -10,10 +10,12 @@ COLUMNS = ( ("sale_order", "price_total_no_discount"), ("sale_order", "discount_total"), + ("sale_order", "discount_subtotal"), ("sale_order", "price_subtotal_no_discount"), ("sale_order_line", "price_subtotal_no_discount"), ("sale_order_line", "price_total_no_discount"), ("sale_order_line", "discount_total"), + ("sale_order_line", "discount_subtotal"), ) diff --git a/sale_discount_display_amount/i18n/it.po b/sale_discount_display_amount/i18n/it.po index 0663ba49f4fe..b1dd6565b455 100644 --- a/sale_discount_display_amount/i18n/it.po +++ b/sale_discount_display_amount/i18n/it.po @@ -1,20 +1,19 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * sale_discount_display_amount +# * sale_discount_display_amount # msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-09-03 13:37+0000\n" -"Last-Translator: Francesco Foresti \n" -"Language-Team: none\n" -"Language: it\n" +"POT-Creation-Date: 2024-03-11 08:38+0000\n" +"PO-Revision-Date: 2024-03-11 08:38+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.17\n" +"Plural-Forms: \n" #. module: sale_discount_display_amount #: model_terms:ir.ui.view,arch_db:sale_discount_display_amount.report_saleorder_document_inherit @@ -26,11 +25,17 @@ msgstr "Subtotale Sconto" msgid "Subtotal Without Discount" msgstr "Subtotale senza sconto" +#. module: sale_discount_display_amount +#: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order__discount_subtotal +#: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order_line__discount_subtotal +msgid "Discount Subtotal" +msgstr "Sconto concordato" + #. module: sale_discount_display_amount #: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order__discount_total #: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order_line__discount_total -msgid "Discount Subtotal" -msgstr "Subtotale sconto" +msgid "Discount total" +msgstr "Sconto concordato" #. module: sale_discount_display_amount #: model:ir.model,name:sale_discount_display_amount.model_sale_order @@ -40,10 +45,17 @@ msgstr "Ordine di vendita" #. module: sale_discount_display_amount #: model:ir.model,name:sale_discount_display_amount.model_sale_order_line msgid "Sales Order Line" -msgstr "Riga ordine di vendita" +msgstr "Linea d'ordine di vendita" + +#. module: sale_discount_display_amount +#: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order__price_subtotal_no_discount +#: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order_line__price_subtotal_no_discount +msgid "Subtotal Without Discount" +msgstr "Imponibile parziale" #. module: sale_discount_display_amount #: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order__price_total_no_discount #: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order_line__price_total_no_discount -msgid "Subtotal Without Discount" -msgstr "Subtotale senza sconto" +msgid "Total Without Discount" +msgstr "Imponibile parziale" + diff --git a/sale_discount_display_amount/i18n/sale_discount_display_amount.pot b/sale_discount_display_amount/i18n/sale_discount_display_amount.pot index 8ef1065be73d..d2803f9cca14 100644 --- a/sale_discount_display_amount/i18n/sale_discount_display_amount.pot +++ b/sale_discount_display_amount/i18n/sale_discount_display_amount.pot @@ -6,6 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-03-11 09:07+0000\n" +"PO-Revision-Date: 2024-03-11 09:07+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -23,10 +25,16 @@ msgstr "" msgid "Subtotal Without Discount" msgstr "" +#. module: sale_discount_display_amount +#: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order__discount_subtotal +#: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order_line__discount_subtotal +msgid "Discount Subtotal" +msgstr "" + #. module: sale_discount_display_amount #: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order__discount_total #: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order_line__discount_total -msgid "Discount Subtotal" +msgid "Discount total" msgstr "" #. module: sale_discount_display_amount @@ -39,9 +47,15 @@ msgstr "" msgid "Sales Order Line" msgstr "" +#. module: sale_discount_display_amount +#: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order__price_subtotal_no_discount +#: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order_line__price_subtotal_no_discount +msgid "Subtotal Without Discount" +msgstr "" + #. module: sale_discount_display_amount #: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order__price_total_no_discount #: model:ir.model.fields,field_description:sale_discount_display_amount.field_sale_order_line__price_total_no_discount -msgid "Subtotal Without Discount" +msgid "Total Without Discount" msgstr "" diff --git a/sale_discount_display_amount/migrations/12.0.1.3.0/post-compute-subtotal-columns.py b/sale_discount_display_amount/migrations/12.0.1.3.0/post-compute-subtotal-columns.py new file mode 100644 index 000000000000..33c7439ecf55 --- /dev/null +++ b/sale_discount_display_amount/migrations/12.0.1.3.0/post-compute-subtotal-columns.py @@ -0,0 +1,21 @@ +import logging + +from odoo import SUPERUSER_ID +from odoo.api import Environment + +_logger = logging.getLogger(__name__) + + +def migrate(cr, version): + _logger.info("Compute discount columns") + env = Environment(cr, SUPERUSER_ID, {}) + + query = """ + select distinct order_id from sale_order_line where discount > 0.0; + """ + + cr.execute(query) + order_ids = cr.fetchall() + + orders = env["sale.order"].search([("id", "in", order_ids)]) + orders.mapped("order_line")._compute_discount() diff --git a/sale_discount_display_amount/migrations/12.0.1.3.0/pre-add-subtotal-columns.py b/sale_discount_display_amount/migrations/12.0.1.3.0/pre-add-subtotal-columns.py new file mode 100644 index 000000000000..8be68f33d72b --- /dev/null +++ b/sale_discount_display_amount/migrations/12.0.1.3.0/pre-add-subtotal-columns.py @@ -0,0 +1,17 @@ +import logging + +from odoo.tools.sql import column_exists, create_column + +_logger = logging.getLogger(__name__) + +COLUMNS = ( + ("sale_order", "discount_subtotal"), + ("sale_order_line", "discount_subtotal"), +) + + +def migrate(cr, version): + for table, column in COLUMNS: + if not column_exists(cr, table, column): + _logger.info("Create discount column %s in database", column) + create_column(cr, table, column, "numeric") diff --git a/sale_discount_display_amount/models/sale_order.py b/sale_discount_display_amount/models/sale_order.py index f43178004681..f4271ff6e70b 100644 --- a/sale_discount_display_amount/models/sale_order.py +++ b/sale_discount_display_amount/models/sale_order.py @@ -9,6 +9,12 @@ class SaleOrder(models.Model): _inherit = 'sale.order' discount_total = fields.Monetary( + compute="_compute_discount_total", + string="Discount total", + currency_field="currency_id", + store=True, + ) + discount_subtotal = fields.Monetary( compute='_compute_discount_total', string='Discount Subtotal', currency_field='currency_id', @@ -21,7 +27,7 @@ class SaleOrder(models.Model): ) price_total_no_discount = fields.Monetary( compute='_compute_discount_total', - string='Subtotal Without Discount', + string='Total Without Discount', currency_field='currency_id', store=True) @@ -37,6 +43,8 @@ def _get_compute_discount_total_depends(self): def _compute_discount_total(self): for order in self: discount_total = sum(order.order_line.mapped('discount_total')) + discount_subtotal = sum( + order.order_line.mapped("discount_subtotal")) price_subtotal_no_discount = sum( order.order_line.mapped('price_subtotal_no_discount') ) @@ -46,6 +54,7 @@ def _compute_discount_total(self): order.update( { 'discount_total': discount_total, + "discount_subtotal": discount_subtotal, 'price_subtotal_no_discount': price_subtotal_no_discount, 'price_total_no_discount': price_total_no_discount, } diff --git a/sale_discount_display_amount/models/sale_order_line.py b/sale_discount_display_amount/models/sale_order_line.py index daa7f14c25cf..d0361f90392b 100644 --- a/sale_discount_display_amount/models/sale_order_line.py +++ b/sale_discount_display_amount/models/sale_order_line.py @@ -9,6 +9,9 @@ class SaleOrderLine(models.Model): _inherit = 'sale.order.line' discount_total = fields.Monetary( + compute="_compute_amount", string="Discount total", store=True + ) + discount_subtotal = fields.Monetary( compute='_compute_amount', string='Discount Subtotal', store=True) @@ -19,7 +22,7 @@ class SaleOrderLine(models.Model): ) price_total_no_discount = fields.Monetary( compute='_compute_amount', - string='Subtotal Without Discount', + string='Total Without Discount', store=True) def _compute_discount(self): @@ -39,9 +42,11 @@ def _compute_discount(self): price_subtotal_no_discount = taxes['total_excluded'] price_total_no_discount = taxes['total_included'] discount_total = price_total_no_discount - line.price_total + discount_subtotal = price_subtotal_no_discount - line.price_subtotal line.update({ 'discount_total': discount_total, + "discount_subtotal": discount_subtotal, 'price_subtotal_no_discount': price_subtotal_no_discount, 'price_total_no_discount': price_total_no_discount }) diff --git a/sale_discount_display_amount/tests/test_discount_display_amount.py b/sale_discount_display_amount/tests/test_discount_display_amount.py index 1f6a308c9cef..3d6410ac8d36 100644 --- a/sale_discount_display_amount/tests/test_discount_display_amount.py +++ b/sale_discount_display_amount/tests/test_discount_display_amount.py @@ -30,3 +30,4 @@ def test_sale_discount_value(self): self.assertAlmostEqual(so.price_subtotal_no_discount, 30.75) self.assertAlmostEqual(so.price_total_no_discount, 35.36) self.assertAlmostEqual(so.discount_total, 3.53) + self.assertAlmostEqual(so.discount_subtotal, 3.07) diff --git a/sale_discount_display_amount/views/sale_view.xml b/sale_discount_display_amount/views/sale_view.xml index 06d7dbf80c9c..9b23d9af138e 100644 --- a/sale_discount_display_amount/views/sale_view.xml +++ b/sale_discount_display_amount/views/sale_view.xml @@ -8,9 +8,10 @@ - - - + + + + diff --git a/sale_order_lot_selection/models/sale.py b/sale_order_lot_selection/models/sale.py index 8665bdeb96b6..d47fba910f92 100644 --- a/sale_order_lot_selection/models/sale.py +++ b/sale_order_lot_selection/models/sale.py @@ -10,9 +10,9 @@ class SaleOrderLine(models.Model): @api.multi @api.onchange('product_id') def product_id_change(self): - result = super(SaleOrderLine, self).product_id_change() + res = super(SaleOrderLine, self).product_id_change() self.lot_id = False - return result + return res @api.onchange('product_id') def _onchange_product_id_set_lot_domain(self):