From 282f48db3e6516b931b9aebf190e3743014279f0 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Tue, 27 Feb 2024 12:34:25 +0100 Subject: [PATCH] sale_order_route: fix crash upon module installation and add route_id in sale.report sale_stock_usability: direct access to warehouse_id in the sale.report pivot view --- sale_order_route/__manifest__.py | 4 ++-- sale_order_route/models/__init__.py | 1 + sale_order_route/models/sale_order.py | 17 ++++++++++++++++- sale_order_route/models/sale_report.py | 21 +++++++++++++++++++++ sale_order_route/views/sale_order.xml | 5 ----- sale_order_route/views/sale_report.xml | 20 ++++++++++++++++++++ sale_stock_usability/__manifest__.py | 1 + sale_stock_usability/views/sale_report.xml | 20 ++++++++++++++++++++ 8 files changed, 81 insertions(+), 8 deletions(-) create mode 100644 sale_order_route/models/sale_report.py create mode 100644 sale_order_route/views/sale_report.xml create mode 100644 sale_stock_usability/views/sale_report.xml diff --git a/sale_order_route/__manifest__.py b/sale_order_route/__manifest__.py index f746297..6814811 100644 --- a/sale_order_route/__manifest__.py +++ b/sale_order_route/__manifest__.py @@ -16,7 +16,7 @@ This module has been written by Alexis de Lattre from Akretion """, 'author': 'Akretion', 'website': 'http://www.akretion.com', - 'depends': ['sale_stock', 'base_view_inheritance_extension'], - 'data': ['views/sale_order.xml'], + 'depends': ['sale_stock'], + 'data': ['views/sale_order.xml', 'views/sale_report.xml'], 'installable': True, } diff --git a/sale_order_route/models/__init__.py b/sale_order_route/models/__init__.py index 6aacb75..6b9bbd7 100644 --- a/sale_order_route/models/__init__.py +++ b/sale_order_route/models/__init__.py @@ -1 +1,2 @@ from . import sale_order +from . import sale_report diff --git a/sale_order_route/models/sale_order.py b/sale_order_route/models/sale_order.py index 348a751..369e147 100644 --- a/sale_order_route/models/sale_order.py +++ b/sale_order_route/models/sale_order.py @@ -2,7 +2,7 @@ # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import fields, models +from odoo import api, fields, models class SaleOrder(models.Model): @@ -24,3 +24,18 @@ class SaleOrder(models.Model): lambda l: l.product_id and l.product_id.type in ('product', 'consu')).write(vals) return super()._action_confirm() + + +class SaleOrderLine(models.Model): + _inherit = 'sale.order.line' + + # It's important when you add a line AFTER order confirmation + route_id = fields.Many2one(compute='_compute_route_id', readonly=False, store=True, precompute=True) + + @api.depends('display_type', 'product_id') + def _compute_route_id(self): + for line in self: + if not line.display_type and line.product_id and line.product_id.type in ('product', 'consu'): + line.route_id = line.order_id.route_id or False + else: + line.route_id = False diff --git a/sale_order_route/models/sale_report.py b/sale_order_route/models/sale_report.py new file mode 100644 index 0000000..f161690 --- /dev/null +++ b/sale_order_route/models/sale_report.py @@ -0,0 +1,21 @@ +# Copyright 2024 Akretion France (http://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class SaleReport(models.Model): + _inherit = "sale.report" + + route_id = fields.Many2one('stock.route', string='Route', readonly=True) + + def _select_additional_fields(self): + res = super()._select_additional_fields() + res['route_id'] = "s.route_id" + return res + + def _group_by_sale(self): + res = super()._group_by_sale() + res += ', s.route_id' + return res diff --git a/sale_order_route/views/sale_order.xml b/sale_order_route/views/sale_order.xml index dec83ae..41588bd 100644 --- a/sale_order_route/views/sale_order.xml +++ b/sale_order_route/views/sale_order.xml @@ -15,11 +15,6 @@ - - - route_id - diff --git a/sale_order_route/views/sale_report.xml b/sale_order_route/views/sale_report.xml new file mode 100644 index 0000000..416a0a4 --- /dev/null +++ b/sale_order_route/views/sale_report.xml @@ -0,0 +1,20 @@ + + + + + + + sale.report + + + + + + + + + diff --git a/sale_stock_usability/__manifest__.py b/sale_stock_usability/__manifest__.py index 11a95b0..5f04545 100644 --- a/sale_stock_usability/__manifest__.py +++ b/sale_stock_usability/__manifest__.py @@ -24,6 +24,7 @@ This module has been written by Alexis de Lattre from Akretion + + + + + + sale.report + + + + + + + + +