mirror of
https://github.com/OCA/manufacture.git
synced 2025-01-28 16:37:15 +02:00
40 lines
1.6 KiB
Python
40 lines
1.6 KiB
Python
# Copyright 2022 Camptocamp SA
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
|
|
|
from odoo import models
|
|
|
|
|
|
class StockPicking(models.Model):
|
|
_inherit = "stock.picking"
|
|
|
|
def _get_manufacturing_orders(self, states=None):
|
|
self.ensure_one()
|
|
if states is None:
|
|
states = ("confirmed", "progress")
|
|
return self.move_lines.move_dest_ids.raw_material_production_id.filtered(
|
|
lambda o: o.state in states
|
|
)
|
|
|
|
def _action_done(self):
|
|
res = super()._action_done()
|
|
for picking in self:
|
|
if picking.state != "done":
|
|
continue
|
|
orders = picking._get_manufacturing_orders()
|
|
if not orders:
|
|
continue
|
|
for order in orders:
|
|
# NOTE: use of 'reservation_state' doesn't allow to produce
|
|
# at least 1 finished product even if there is enough components,
|
|
# but Odoo expects to work this way.
|
|
if order.auto_validate and order.reservation_state == "assigned":
|
|
# 'stock.immediate.transfer' could set the 'skip_immediate'
|
|
# key to process the transfer. The same ctx key is used by
|
|
# MO validation methods, but they are not the same!
|
|
# Unset the key in such case.
|
|
# TODO add a test
|
|
if order.env.context.get("skip_immediate"):
|
|
order = order.with_context(skip_immediate=False)
|
|
order._auto_validate_after_picking()
|
|
return res
|