客供料优化
This commit is contained in:
@@ -148,8 +148,52 @@ class SaleOrder(models.Model):
|
||||
self.env.ref("base.user_admin")).bom_create(product, bom_type, 'product')
|
||||
product_bom_purchase.with_user(self.env.ref("base.user_admin")).bom_create_line_has(
|
||||
purchase_embryo)
|
||||
return super(SaleOrder, self).action_confirm()
|
||||
result = super(SaleOrder, self).action_confirm()
|
||||
self.merge_picking()
|
||||
return result
|
||||
|
||||
def merge_picking(self):
|
||||
"""
|
||||
合并多个stock.picking为一个新的stock.picking。
|
||||
:param picking_ids: 需要合并的stock.picking记录ID列表
|
||||
:return: 合并后的新的stock.picking对象
|
||||
"""
|
||||
picking_ids = self.env['stock.picking'].search([('retrospect_ref', '=', self.default_code)])
|
||||
if not picking_ids:
|
||||
return
|
||||
# 获取需要合并的 stock.picking 记录
|
||||
# 创建一个新的 stock.picking 作为合并结果
|
||||
new_picking = self.env['stock.picking'].create({
|
||||
'partner_id': picking_ids[0].partner_id.id,
|
||||
'location_id': picking_ids[0].location_id.id,
|
||||
'location_dest_id': picking_ids[0].location_dest_id.id,
|
||||
'move_ids': False,
|
||||
'sale_id': self.id,
|
||||
'picking_type_id': picking_ids[0].picking_type_id.id,
|
||||
'origin': '合并自: ' + ','.join([p.origin for p in picking_ids]),
|
||||
'retrospect_ref':self.default_code,
|
||||
'person_of_delivery':picking_ids[0].person_of_delivery,
|
||||
'telephone_of_delivery': picking_ids[0].telephone_of_delivery,
|
||||
'address_of_delivery': picking_ids[0].address_of_delivery,
|
||||
'group_id':picking_ids[0].group_id.id
|
||||
})
|
||||
|
||||
# 合并所有 move_lines
|
||||
for picking in picking_ids:
|
||||
for move in picking.move_ids:
|
||||
# 复制 move_lines 到新的 picking
|
||||
new_move_vals = move.copy_data()[0]
|
||||
new_move_vals['picking_id']=new_picking.id
|
||||
self.env['stock.move'].create(new_move_vals)
|
||||
|
||||
# 处理合并后的配送单状态
|
||||
new_picking.action_confirm() # 确认新的配送单
|
||||
new_picking.action_assign() # 分配新的配送单
|
||||
|
||||
# 删除原有的配送单
|
||||
picking_ids.write({'state': 'cancel'}) # 将原配送单状态更改为取消
|
||||
|
||||
return new_picking
|
||||
class SaleOrderLine(models.Model):
|
||||
_inherit = 'sale.order.line'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user