diff --git a/odoo.conf b/odoo.conf index 04690e69..ac0ba724 100644 --- a/odoo.conf +++ b/odoo.conf @@ -4,7 +4,7 @@ csv_internal_sep = , data_dir = /var/lib/odoo db_host = 172.17.0.2 db_maxconn = 64 -db_name = sf_dev_odoo +db_name = sf_cs_dev db_password = sf db_port = 5432 db_sslmode = prefer diff --git a/sf_manufacturing/data/stock_data.xml b/sf_manufacturing/data/stock_data.xml index a50a948d..8efbdd55 100644 --- a/sf_manufacturing/data/stock_data.xml +++ b/sf_manufacturing/data/stock_data.xml @@ -1,6 +1,11 @@ + + YourCompany Sequence ocout + WH/OCOUT/ + 5 + YourCompany Sequence ocin @@ -8,12 +13,6 @@ 5 - - YourCompany Sequence ocout - WH/OCOUT/ - 5 - - 外协 diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 04cb1f48..71576d03 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -214,7 +214,10 @@ class MrpProduction(models.Model): if m == len(consecutive_workorders) - 1 and m != 0: self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, production) 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: workorder.duration_expected = workorder._get_duration_expected() diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 3e7edd2d..ad9f2253 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -437,9 +437,8 @@ class ResMrpWorkOrder(models.Model): # 外协出库单,从“正在等待”变为“就绪”状态 if self.is_subcontract is True: picking_out = self.env['stock.picking'].search([('id', '=', self.picking_out_id.id)]) - if picking_out: - if picking_out.state == 'confirmed': - picking_out.write({'state': 'assigned'}) + if picking_out.state == 'confirmed': + picking_out.write({'state': 'assigned'}) if self.state == 'waiting' or self.state == 'ready' or self.state == 'progress': self.move_raw_ids = self.production_id.move_raw_ids self.ensure_one() diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py index e4da2a35..6fdfbd8d 100644 --- a/sf_manufacturing/models/stock.py +++ b/sf_manufacturing/models/stock.py @@ -239,27 +239,38 @@ class StockPicking(models.Model): # 设置外协出入单的名称 def _get_name_Res(self, rescode): - count = self.env['stock.picking'].search_count([('name', 'like', rescode)]) - logging.info('count:' + str(count)) - if not count: + last_picking = self.sudo().search([('name', 'like', rescode)], order='create_date DESC', limit=1) + logging.info('编号:' + last_picking.name) + if not last_picking: num = "%04d" % 1 else: - m = int(count) + 1 + m = int(last_picking.name[-3:]) + 1 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)]) + picking_in = self.sudo().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(_('该出库单对应的工单还未开始,不能进行验证操作!')) + 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() return res @@ -286,9 +297,9 @@ class StockPicking(models.Model): item._get_stock_move_values_Res(item, location_dest_id, location_id, outcontract_picking_type_out)) 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/')) - picking_out = self.env['stock.picking'].create( + picking_out = self.create( moves_out._get_new_picking_values_Res(item, sorted_workorders, 'WH/OCOUT/')) moves_in.write({'picking_id': picking_in.id, 'state': 'confirmed'}) moves_out.write({'picking_id': picking_out.id, 'state': 'confirmed'})