# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from collections import defaultdict from odoo import api, fields, models, _ from odoo.tools import OrderedSet # _get_surface_technics_purchase_ids class PurchaseOrder(models.Model): _inherit = 'purchase.order' def button_confirm(self): super().button_confirm() workorders = self.env['mrp.workorder'].search([('purchase_id', '=', self.id)]) for workorder in workorders: if workorder.routing_type == '表面工艺' and workorder.is_subcontract is True: move_out = workorder.move_subcontract_workorder_ids[1] # move_out = self.env['stock.move'].search( # [('location_id', '=', self.env['stock.location'].search( # [('barcode', 'ilike', 'WH-PREPRODUCTION')]).id), # ('location_dest_id', '=', self.env['stock.location'].search( # [('barcode', 'ilike', 'VL-SPOC')]).id), # ('origin', '=', self.production_id.name), ('state', 'not in', ['cancel', 'done'])]) for mo in move_out: if mo.state != 'done': mo.write({'state': 'assigned', 'production_id': False}) if not mo.move_line_ids: self.env['stock.move.line'].create(mo.get_move_line(workorder.production_id, workorder)) return True