客供料调拨单合并

This commit is contained in:
liaodanlong
2025-01-09 14:32:17 +08:00
parent c4b2a42ac5
commit ebf290fbb3
2 changed files with 20 additions and 48 deletions

View File

@@ -1480,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')
@@ -1489,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',

View File

@@ -72,35 +72,6 @@ class StockRule(models.Model):
moves_values_by_company = defaultdict(list)
mtso_products_by_locations = defaultdict(list)
# To handle the `mts_else_mto` procure method, we do a preliminary loop to
# isolate the products we would need to read the forecasted quantity,
# in order to to batch the read. We also make a sanitary check on the
# `location_src_id` field.
# list1 = []
# for item in procurements:
# num = int(item[0].product_qty)
# if num > 1:
# for no in range(1, num+1):
#
# Procurement = namedtuple('Procurement', ['product_id', 'product_qty',
# 'product_uom', 'location_id', 'name', 'origin',
# 'company_id',
# 'values'])
# s = Procurement(product_id=item[0].product_id,product_qty=1.0,product_uom=item[0].product_uom,
# location_id=item[0].location_id,
# name=item[0].name,
# origin=item[0].origin,
# company_id=item[0].company_id,
# values=item[0].values,
# )
# item1 = list(item)
# item1[0]=s
#
# list1.append(tuple(item1))
# else:
# list1.append(item)
for procurement, rule in procurements:
if not rule.location_src_id:
msg = _('No source location defined on stock rule: %s!') % (rule.name,)
@@ -618,15 +589,21 @@ class StockPicking(models.Model):
item.address_of_delivery = sale_info.address_of_delivery
# 设置外协出入单的名称
def _get_name_Res(self, rescode):
last_picking = self.sudo().search([('name', 'ilike', rescode)], order='create_date desc,id desc', limit=1)
if not last_picking:
num = "%04d" % 1
def _get_name_Res(self, rescode,sequence):
last_picking = self.sudo().search([('name', 'ilike', rescode)], order='name desc', limit=1)
sequence_id = sequence.next_by_id()
name_without_prefix = last_picking.name.removeprefix(rescode)
try:
name_value = int(name_without_prefix) # 假设 name 是一个数字字符串
except ValueError:
name_value = 0
if name_value >= int(sequence_id.removeprefix(rescode)):
sequence.write({
'number_next': name_value + 1,
})
return sequence.next_by_id()
else:
logging.info('编号:' + last_picking.name)
m = int(last_picking.name[-3:]) + 1
num = "%04d" % m
return '%s%s' % (rescode, num)
return sequence_id
def button_validate(self):
res = super().button_validate()
@@ -787,12 +764,15 @@ class ReStockMove(models.Model):
def _get_new_picking_values_Res(self, item, sorted_workorders, rescode):
picking_type_id = self.mapped('picking_type_id').id
sequence = False
if rescode == 'WH/OCOUT/':
picking_type_id = self.env.ref('sf_manufacturing.outcontract_picking_out').id
sequence = self.env.ref('sf_manufacturing.sequence_stock_picking_out')
elif rescode == 'WH/OCIN/':
picking_type_id = self.env.ref('sf_manufacturing.outcontract_picking_in').id
sequence = self.env.ref('sf_manufacturing.sequence_stock_picking_in')
return {
'name': self.env['stock.picking']._get_name_Res(rescode),
'name': self.env['stock.picking']._get_name_Res(rescode,sequence),
'origin': item.name,
'surface_technics_parameters_id': sorted_workorders.surface_technics_parameters_id.id,
'company_id': self.mapped('company_id').id,