from odoo import models, fields, api from odoo.tools.float_utils import float_compare class StockBackorderConfirmation(models.TransientModel): _inherit = 'stock.backorder.confirmation' def process(self): pickings_to_do = self.env['stock.picking'] pickings_not_to_do = self.env['stock.picking'] for line in self.backorder_confirmation_line_ids: line.picking_id.send_mail_bills() # line.picking_id.send_koli_to_so() if line.to_backorder is True: pickings_to_do |= line.picking_id else: pickings_not_to_do |= line.picking_id for pick_id in pickings_not_to_do: moves_to_log = {} for move in pick_id.move_lines: if float_compare(move.product_uom_qty, move.quantity_done, precision_rounding=move.product_uom.rounding) > 0: moves_to_log[move] = (move.quantity_done, move.product_uom_qty) pick_id._log_less_quantities_than_expected(moves_to_log) pickings_to_validate = self.env.context.get('button_validate_picking_ids') if pickings_to_validate: pickings_to_validate = self.env['stock.picking'].browse(pickings_to_validate).with_context(skip_backorder=True) if pickings_not_to_do: pickings_to_validate = pickings_to_validate.with_context(picking_ids_not_to_backorder=pickings_not_to_do.ids) return pickings_to_validate.button_validate() return True