- Create a product route containing a procurement rule that will generate a move from Stock for every procurement created in Output - !record {model: stock.location.route, id: product_route}: name: Stock -> output route product_selectable: True pull_ids: - name: Stock -> output rule action: move picking_type_id: stock.picking_type_internal location_src_id: stock.stock_location_stock location_id: stock.stock_location_output - Set this route on `product.product_product_3` - !python {model: product.product, id: product.product_product_3}: | self.write({'route_ids': [(4, ref('stock.product_route'))]}) - Create Delivery Order of 10 `product.product_product_3` from Output -> Customer - !record {model: stock.picking, id: pick_output}: name: Delivery order for procurement partner_id: base.res_partner_2 picking_type_id: stock.picking_type_out location_id: stock.stock_location_output location_dest_id: stock.stock_location_customers move_lines: - product_id: product.product_product_3 product_uom_qty: 10.00 procure_method: make_to_order - Confirm delivery order. - !python {model: stock.picking, id: pick_output}: | self.action_confirm() - I run the scheduler. - !python {model: procurement.group, id: False}: | self.run_scheduler() - Check that a picking was created from stock to output. - !python {model: stock.move, id: False}: | picking = self.env["stock.picking"].browse(ref("pick_output")) moves = self.search([ ('product_id', '=', ref('product.product_product_3')), ('location_id', '=', ref('stock.stock_location_stock')), ('location_dest_id', '=', ref('stock.stock_location_output')), ('move_dest_ids', 'in', [picking.move_lines[0].id]) ]) assert len(moves.ids) == 1, "It should have created a picking from Stock to Output with the original picking as destination"