From 6d9b4c92ebc70f338b9a3689a976043568ab6cd6 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Mon, 30 Sep 2024 08:18:37 +0200 Subject: [PATCH] sale_stock_usability: add method to display delivery order on out invoice report --- sale_stock_usability/models/__init__.py | 1 + sale_stock_usability/models/account_move.py | 33 +++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 sale_stock_usability/models/account_move.py diff --git a/sale_stock_usability/models/__init__.py b/sale_stock_usability/models/__init__.py index 6aacb75..2eade25 100644 --- a/sale_stock_usability/models/__init__.py +++ b/sale_stock_usability/models/__init__.py @@ -1 +1,2 @@ from . import sale_order +from . import account_move diff --git a/sale_stock_usability/models/account_move.py b/sale_stock_usability/models/account_move.py new file mode 100644 index 0000000..07ca299 --- /dev/null +++ b/sale_stock_usability/models/account_move.py @@ -0,0 +1,33 @@ +# Copyright 2024 Akretion France (http://www.akretion.com) +# @author Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class AccountMove(models.Model): + _inherit = 'account.move' + + def _report_get_sale_pickings(self, sale_order=None): + self.ensure_one() + # the sale_order arg is usefull when using + # py3o_lines_layout_groupby_order() to display the delivery orders + # linked to a specific sale_order + assert self.move_type in ('out_invoice', 'out_refund') + sale_orders = sale_order or self.sale_ids + picking_domain = [ + ('id', 'in', sale_orders.picking_ids.ids), + ('state', '=', 'done'), + ('date_done', '<', self.create_date), + ('company_id', '=', self.company_id.id), + ] + previous_inv = self.env['account.move'].search([ + ('move_type', 'in', ('out_invoice', 'out_refund')), + ('create_date', '<', self.create_date), + ('id', 'in', sale_orders.invoice_ids.ids), + ('company_id', '=', self.company_id.id), + ], limit=1, order='id desc') + if previous_inv: + picking_domain.append(('date_done', '>', previous_inv.create_date)) + pickings = self.env['stock.picking'].search(picking_domain) + return pickings