出入库单新增验证及单个外协表面工艺Bug修复

This commit is contained in:
jinling.yang
2023-05-17 14:18:23 +08:00
parent d04e98a5fd
commit f2218f7afb
5 changed files with 31 additions and 19 deletions

View File

@@ -4,7 +4,7 @@ csv_internal_sep = ,
data_dir = /var/lib/odoo data_dir = /var/lib/odoo
db_host = 172.17.0.2 db_host = 172.17.0.2
db_maxconn = 64 db_maxconn = 64
db_name = sf_dev_odoo db_name = sf_cs_dev
db_password = sf db_password = sf
db_port = 5432 db_port = 5432
db_sslmode = prefer db_sslmode = prefer

View File

@@ -1,6 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<odoo> <odoo>
<data noupdate="1"> <data noupdate="1">
<record id="sequence_stock_picking_out" model="ir.sequence">
<field name="name">YourCompany Sequence ocout</field>
<field name="prefix">WH/OCOUT/</field>
<field name="padding">5</field>
</record>
<record id="sequence_stock_picking_in" model="ir.sequence"> <record id="sequence_stock_picking_in" model="ir.sequence">
<field name="name">YourCompany Sequence ocin</field> <field name="name">YourCompany Sequence ocin</field>
@@ -8,12 +13,6 @@
<field name="padding">5</field> <field name="padding">5</field>
</record> </record>
<record id="sequence_stock_picking_out" model="ir.sequence">
<field name="name">YourCompany Sequence ocout</field>
<field name="prefix">WH/OCOUT/</field>
<field name="padding">5</field>
</record>
<record id="stock_location_locations_virtual_outcontract" model="stock.location"> <record id="stock_location_locations_virtual_outcontract" model="stock.location">
<field name="name">外协</field> <field name="name">外协</field>
<field name="location_id" ref="stock.stock_location_locations_virtual"/> <field name="location_id" ref="stock.stock_location_locations_virtual"/>

View File

@@ -214,6 +214,9 @@ class MrpProduction(models.Model):
if m == len(consecutive_workorders) - 1 and m != 0: if m == len(consecutive_workorders) - 1 and m != 0:
self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, production) self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, production)
if is_pick is False and m == 0: if is_pick is False and m == 0:
if len(sorted_workorders) == 1:
self.env['stock.picking'].create_outcontract_picking(sorted_workorders, production)
else:
self.env['stock.picking'].create_outcontract_picking(sorted_workorders[i], production) self.env['stock.picking'].create_outcontract_picking(sorted_workorders[i], production)
for workorder in production.workorder_ids: for workorder in production.workorder_ids:
workorder.duration_expected = workorder._get_duration_expected() workorder.duration_expected = workorder._get_duration_expected()

View File

@@ -437,7 +437,6 @@ class ResMrpWorkOrder(models.Model):
# 外协出库单,从“正在等待”变为“就绪”状态 # 外协出库单,从“正在等待”变为“就绪”状态
if self.is_subcontract is True: if self.is_subcontract is True:
picking_out = self.env['stock.picking'].search([('id', '=', self.picking_out_id.id)]) picking_out = self.env['stock.picking'].search([('id', '=', self.picking_out_id.id)])
if picking_out:
if picking_out.state == 'confirmed': if picking_out.state == 'confirmed':
picking_out.write({'state': 'assigned'}) picking_out.write({'state': 'assigned'})
if self.state == 'waiting' or self.state == 'ready' or self.state == 'progress': if self.state == 'waiting' or self.state == 'ready' or self.state == 'progress':

View File

@@ -239,27 +239,38 @@ class StockPicking(models.Model):
# 设置外协出入单的名称 # 设置外协出入单的名称
def _get_name_Res(self, rescode): def _get_name_Res(self, rescode):
count = self.env['stock.picking'].search_count([('name', 'like', rescode)]) last_picking = self.sudo().search([('name', 'like', rescode)], order='create_date DESC', limit=1)
logging.info('count:' + str(count)) logging.info('编号:' + last_picking.name)
if not count: if not last_picking:
num = "%04d" % 1 num = "%04d" % 1
else: else:
m = int(count) + 1 m = int(last_picking.name[-3:]) + 1
num = "%04d" % m num = "%04d" % m
return '%s%s' % (rescode, num) return '%s%s' % (rescode, num)
def button_validate(self): def button_validate(self):
# 出库单验证
if self.workorder_out_id: if self.workorder_out_id:
workorder_in = self.workorder_out_id.filtered(lambda p: p.state == 'progress' and p.is_subcontract is True) workorder_in = self.workorder_out_id.filtered(lambda p: p.state == 'progress' and p.is_subcontract is True)
if workorder_in: if workorder_in:
picking_in = self.env['stock.picking'].search([('id', '=', workorder_in.picking_in_id.id)]) picking_in = self.sudo().search([('id', '=', workorder_in.picking_in_id.id)])
if picking_in: if picking_in:
picking_in.write({'state': 'assigned'}) picking_in.write({'state': 'assigned'})
else: else:
workorder_subcontract = self.workorder_out_id.filtered( workorder_subcontract = self.workorder_out_id.filtered(
lambda p: p.state == 'pending' and p.is_subcontract is True) lambda p: p.state == 'pending' and p.is_subcontract is True)
if workorder_subcontract: if workorder_subcontract:
raise UserError(_('该出库单对应的工单还未开始,不能进行验证操作!')) raise UserError(
_('该出库单里源单据内的单号为%s的工单还未开始,不能进行验证操作!' % workorder_subcontract[0].name))
# 入库单验证
if self.workorder_in_id:
workorder_out = self.workorder_in_id.filtered(lambda p: p.state == 'progress' and p.is_subcontract is True)
if workorder_out:
picking_out = self.sudo().search([('id', '=', workorder_out.picking_out_id.id)])
if picking_out.state != 'done':
raise UserError(
_('该入库单对应的单号为%s的出库单还未完成,不能进行验证操作!' % picking_out.name))
res = super().button_validate() res = super().button_validate()
return res return res
@@ -286,9 +297,9 @@ class StockPicking(models.Model):
item._get_stock_move_values_Res(item, location_dest_id, location_id, item._get_stock_move_values_Res(item, location_dest_id, location_id,
outcontract_picking_type_out)) outcontract_picking_type_out))
new_picking = True new_picking = True
picking_in = self.env['stock.picking'].create( picking_in = self.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( picking_out = self.create(
moves_out._get_new_picking_values_Res(item, sorted_workorders, 'WH/OCOUT/')) moves_out._get_new_picking_values_Res(item, sorted_workorders, 'WH/OCOUT/'))
moves_in.write({'picking_id': picking_in.id, 'state': 'confirmed'}) moves_in.write({'picking_id': picking_in.id, 'state': 'confirmed'})
moves_out.write({'picking_id': picking_out.id, 'state': 'confirmed'}) moves_out.write({'picking_id': picking_out.id, 'state': 'confirmed'})