Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造功能优化

# Conflicts:
#	sf_manufacturing/security/ir.model.access.csv
This commit is contained in:
mgw
2025-01-09 16:14:23 +08:00
11 changed files with 89 additions and 125 deletions

View File

@@ -459,7 +459,7 @@ class MrpProduction(models.Model):
process_parameters.append(special.process_parameters_id.display_name)
if account_moves:
raise UserError(_("请联系工厂生产经理对采购订单%s生成的账单进行取消", ", ".join(account_moves)))
raise UserError(_("请联系工厂生产经理对会计凭证%s生成的账单进行取消", ", ".join([move.name for move in account_moves])))
if parameters_not:
raise UserError(_("【工艺设计】-【工序】为%s未选择参数,请选择", ", ".join(parameters_not)))
if process_parameters:
@@ -1189,7 +1189,8 @@ class MrpProduction(models.Model):
'res_model': 'sf.production.wizard',
'target': 'new',
'context': {
'default_production_id': self.id,
'default_mrp_production_id': self.id,
'is_remanufacture_flag': True,
'default_reprogramming_num': cloud_programming['reprogramming_num'],
'default_programming_states': cloud_programming['programming_state'],
'default_is_reprogramming': True if cloud_programming['programming_state'] in ['已下发'] else False
@@ -1348,10 +1349,6 @@ class MrpProduction(models.Model):
if self.is_scrap is True:
procurement_requests = []
sale_order = self.env['sale.order'].sudo().search([('name', '=', self.origin)])
values = self.env['mrp.production'].create_production1_values(self)
# productions = self.env['mrp.production'].with_user(SUPERUSER_ID).sudo().with_company(
# self.company_id).create(
# values)
# 查询出库移动记录
out_picking = self.env['stock.picking'].search(
[('origin', '=', sale_order.name), ('name', 'ilike', 'WH/OUT/')])
@@ -1375,31 +1372,14 @@ class MrpProduction(models.Model):
productions = self.env['mrp.production'].sudo().search(
[('origin', '=', self.origin)], order='id desc', limit=1)
productions.write({'programming_no': self.programming_no, 'is_remanufacture': True})
move = self.env['stock.move'].search([('origin', '=', productions.name)], order='id desc')
for mo in move:
domain = []
if mo.location_id.barcode == 'WH-POSTPRODUCTION' and mo.rule_id.picking_type_id.barcode == 'PC':
domain = [('barcode', '=', 'WH-PC'), ('sequence_code', '=', 'PC')]
elif mo.location_id.barcode == 'PL' and mo.rule_id.picking_type_id.barcode == 'INT':
domain = [('barcode', '=', 'WH-INTERNAL'), ('sequence_code', '=', 'INT')]
if domain:
picking_type = self.env['stock.picking.type'].search(domain)
mo.write({'picking_type_id': picking_type.id})
mo._assign_picking()
else:
if mo.reference != productions.name:
mo.reference = productions.name
if mo.production_id:
if mo.production_id != productions:
mo.production_id = False
mo_move = self.env['stock.move'].search(
[('origin', '=', sale_order.name), ('reference', 'ilike', 'WH/MO/')])
if mo_move:
sfp_move = self.env['stock.move'].search(
[('origin', '=', sale_order.name), ('reference', 'ilike', 'WH/SFP/')], limit=1)
mo_move.write({'reference': sfp_move.reference, 'partner_id': sfp_move.partner_id.id,
'picking_id': sfp_move.picking_id.id, 'picking_type_id': sfp_move.picking_type_id.id,
'production_id': False})
# mo_move = self.env['stock.move'].search(
# [('origin', '=', sale_order.name), ('reference', 'ilike', 'WH/MO/')])
# if mo_move:
# sfp_move = self.env['stock.move'].search(
# [('origin', '=', sale_order.name), ('reference', 'ilike', 'WH/SFP/')], limit=1)
# mo_move.write({'reference': sfp_move.reference, 'partner_id': sfp_move.partner_id.id,
# 'picking_id': sfp_move.picking_id.id, 'picking_type_id': sfp_move.picking_type_id.id,
# 'production_id': False})
# productions.procurement_group_id.mrp_production_ids.move_dest_ids.write(
# {'group_id': self.env['procurement.group'].search([('name', '=', sale_order.name)])})
stock_picking_remanufacture = self.env['stock.picking'].search([('origin', '=', productions.name)])
@@ -1500,7 +1480,7 @@ class MrpProduction(models.Model):
"""
重载创建制造订单的方法,单个制造订单,同一成品只创建一个采购组,用于后续单据的创建
"""
product_group_id = {}
group_id = self.env["procurement.group"].create({'name':vals_list[0].get('origin')}).id
for vals in vals_list:
if not vals.get('name', False) or vals['name'] == _('New'):
picking_type_id = vals.get('picking_type_id')
@@ -1509,15 +1489,7 @@ class MrpProduction(models.Model):
vals['picking_type_id'] = picking_type_id
vals['name'] = self.env['stock.picking.type'].browse(picking_type_id).sequence_id.next_by_id()
if not vals.get('procurement_group_id'):
product_id = self.env['product.product'].browse(vals['product_id'])
if product_id.product_tmpl_id.single_manufacturing:
if product_id.id not in product_group_id.keys():
procurement_group_vals = self._prepare_procurement_group_vals(vals)
group_id = self.env["procurement.group"].create(procurement_group_vals).id
vals['procurement_group_id'] = group_id
product_group_id[product_id.id] = group_id
else:
vals['procurement_group_id'] = product_group_id[product_id.id]
vals['procurement_group_id'] = group_id
return super(MrpProduction, self).create(vals_list)
@api.depends('procurement_group_id.stock_move_ids.created_purchase_line_id.order_id',
@@ -1540,7 +1512,7 @@ class MrpProduction(models.Model):
@api.depends('procurement_group_id', 'procurement_group_id.stock_move_ids.group_id')
def _compute_picking_ids(self):
for order in self:
if order.product_id.product_tmpl_id.single_manufacturing == True:
if order.product_id.product_tmpl_id.single_manufacturing == True and not order.is_remanufacture:
first_order = self.env['mrp.production'].search(
[('origin', '=', order.origin), ('product_id', '=', order.product_id.id)], limit=1, order='id asc')
order.picking_ids = self.env['stock.picking'].search([