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