This commit is contained in:
jinling.yang
2023-05-17 14:22:52 +08:00
5 changed files with 36 additions and 24 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,7 +214,10 @@ 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:
self.env['stock.picking'].create_outcontract_picking(sorted_workorders[i], production) 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)
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

@@ -434,6 +434,11 @@ class ResMrpWorkOrder(models.Model):
def button_start(self): def button_start(self):
if self.routing_type == '装夹': if self.routing_type == '装夹':
self.pro_code = self.production_id.move_raw_ids[0].move_line_ids[0].lot_id.name self.pro_code = self.production_id.move_raw_ids[0].move_line_ids[0].lot_id.name
# 外协出库单,从“正在等待”变为“就绪”状态
if self.is_subcontract is True:
picking_out = self.env['stock.picking'].search([('id', '=', self.picking_out_id.id)])
if picking_out.state == 'confirmed':
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':
self.move_raw_ids = self.production_id.move_raw_ids self.move_raw_ids = self.production_id.move_raw_ids
self.ensure_one() self.ensure_one()
@@ -479,11 +484,6 @@ class ResMrpWorkOrder(models.Model):
if self.date_planned_finished and self.date_planned_finished < start_date: if self.date_planned_finished and self.date_planned_finished < start_date:
vals['date_planned_finished'] = start_date vals['date_planned_finished'] = start_date
return self.write(vals) return self.write(vals)
# 外协出库单,从“正在等待”变为“就绪”状态
if self.is_subcontract is True:
picking_out = self.env['stock.picking'].search([('id', '=', self.picking_out_id.id)])
if picking_out:
picking_out.write({'state': 'assigned'})
else: else:
raise UserError(_('请先完成上一步工单')) raise UserError(_('请先完成上一步工单'))

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,12 +297,12 @@ 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}) moves_in.write({'picking_id': picking_in.id, 'state': 'confirmed'})
moves_out.write({'picking_id': picking_out.id}) moves_out.write({'picking_id': picking_out.id, 'state': 'confirmed'})
moves_in._assign_picking_post_process(new=new_picking) moves_in._assign_picking_post_process(new=new_picking)
moves_out._assign_picking_post_process(new=new_picking) moves_out._assign_picking_post_process(new=new_picking)
m += 1 m += 1
@@ -315,4 +326,3 @@ class ReStockMove(models.Model):
'location_dest_id': self.mapped('location_dest_id').id, 'location_dest_id': self.mapped('location_dest_id').id,
'state': 'confirmed', 'state': 'confirmed',
} }