新增出库单验证前置和后置条件,外协工单点击完成时生成询价单
This commit is contained in:
@@ -5,6 +5,7 @@ from re import findall as regex_findall
|
||||
from re import split as regex_split
|
||||
from odoo import SUPERUSER_ID, _, api, fields, models
|
||||
from odoo.tools import float_compare
|
||||
import logging
|
||||
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
@@ -238,7 +239,8 @@ class StockPicking(models.Model):
|
||||
|
||||
# 设置外协出入单的名称
|
||||
def _get_name_Res(self, rescode):
|
||||
count = self.env['ir.sequence'].search_count([('prefix', 'like', rescode)])
|
||||
count = self.env['stock.picking'].search_count([('name', 'like', rescode)])
|
||||
logging.info('count:' + str(count))
|
||||
if not count:
|
||||
num = "%04d" % 1
|
||||
else:
|
||||
@@ -246,6 +248,21 @@ class StockPicking(models.Model):
|
||||
num = "%04d" % m
|
||||
return '%s%s' % (rescode, num)
|
||||
|
||||
def button_validate(self):
|
||||
if self.workorder_out_id:
|
||||
workorder_in = self.workorder_out_id.filtered(lambda p: p.state == 'progress' and p.is_subcontract is True)
|
||||
if workorder_in:
|
||||
picking_in = self.env['stock.picking'].search([('id', '=', workorder_in.picking_in_id.id)])
|
||||
if picking_in:
|
||||
picking_in.write({'state': 'assigned'})
|
||||
else:
|
||||
workorder_subcontract = self.workorder_out_id.filtered(
|
||||
lambda p: p.state == 'pending' and p.is_subcontract is True)
|
||||
if workorder_subcontract:
|
||||
raise UserError(_('该出库单对应的工单还未开始,不能进行验证操作!'))
|
||||
res = super().button_validate()
|
||||
return res
|
||||
|
||||
# 创建 外协出库入单
|
||||
def create_outcontract_picking(self, sorted_workorders_arr, item):
|
||||
m = 0
|
||||
@@ -270,7 +287,7 @@ class StockPicking(models.Model):
|
||||
outcontract_picking_type_out))
|
||||
new_picking = True
|
||||
picking_in = self.env['stock.picking'].create(
|
||||
moves_in._get_new_picking_values_Res(item, sorted_workorders,'WH/OCIN/'))
|
||||
moves_in._get_new_picking_values_Res(item, sorted_workorders, 'WH/OCIN/'))
|
||||
picking_out = self.env['stock.picking'].create(
|
||||
moves_out._get_new_picking_values_Res(item, sorted_workorders, 'WH/OCOUT/'))
|
||||
moves_in.write({'picking_id': picking_in.id})
|
||||
@@ -285,6 +302,7 @@ class ReStockMove(models.Model):
|
||||
_inherit = 'stock.move'
|
||||
|
||||
def _get_new_picking_values_Res(self, item, sorted_workorders, rescode):
|
||||
logging.info('new_picking-rescode: %s' % rescode)
|
||||
return {
|
||||
'name': self.env['stock.picking']._get_name_Res(rescode),
|
||||
'origin': item.name,
|
||||
@@ -295,5 +313,6 @@ class ReStockMove(models.Model):
|
||||
'picking_type_id': self.mapped('picking_type_id').id,
|
||||
'location_id': self.mapped('location_id').id,
|
||||
'location_dest_id': self.mapped('location_dest_id').id,
|
||||
'state': 'draft',
|
||||
'state': 'confirmed',
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user