Compare commits
5 Commits
feature/72
...
feature/cu
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0fd64aee38 | ||
|
|
cbfa9d517a | ||
|
|
fd9e028c5a | ||
|
|
0bff8669ee | ||
|
|
791d6b7fb1 |
@@ -1578,12 +1578,18 @@ class MrpProduction(models.Model):
|
||||
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([
|
||||
('group_id', '=', first_order.procurement_group_id.id), ('group_id', '!=', False),
|
||||
('group_id', '!=', False), ('state', '!=', 'cancel'),
|
||||
'|', # 表示“或”的开始
|
||||
('group_id', '=', order.procurement_group_id.id),
|
||||
('related_group_ids', '=', order.procurement_group_id.id)
|
||||
])
|
||||
order.delivery_count = len(first_order.picking_ids)
|
||||
else:
|
||||
order.picking_ids = self.env['stock.picking'].search([
|
||||
('group_id', '=', order.procurement_group_id.id), ('group_id', '!=', False),
|
||||
('group_id', '!=', False),('state', '!=', 'cancel'),
|
||||
'|', # 表示“或”的开始
|
||||
('group_id', '=', order.procurement_group_id.id),
|
||||
('related_group_ids', '=', order.procurement_group_id.id)
|
||||
])
|
||||
order.delivery_count = len(order.picking_ids)
|
||||
|
||||
|
||||
@@ -148,8 +148,61 @@ 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_idss = self.env['stock.picking'].search([('retrospect_ref', 'ilike','%'+ self.name +'%')])
|
||||
for pick in picking_idss:
|
||||
print('qfwowio',pick)
|
||||
picking_ids = self.env['stock.picking'].search([('retrospect_ref', '=', self.default_code)])
|
||||
if not picking_ids:
|
||||
return
|
||||
# 获取需要合并的 stock.picking 记录
|
||||
# 创建一个新的 stock.picking 作为合并结果
|
||||
group = self.env['procurement.group'].create({
|
||||
'name': self.name,
|
||||
'partner_id': self.partner_id.id,
|
||||
})
|
||||
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)
|
||||
for pick in picking_idss:
|
||||
print('qfwowio',pick)
|
||||
# 处理合并后的配送单状态
|
||||
new_picking.action_confirm() # 确认新的配送单
|
||||
for pick in picking_idss:
|
||||
print('qfwowio',pick)
|
||||
new_picking.action_assign() # 分配新的配送单
|
||||
|
||||
# 删除原有的配送单
|
||||
picking_ids.write({'state': 'cancel'}) # 将原配送单状态更改为取消
|
||||
|
||||
return new_picking
|
||||
class SaleOrderLine(models.Model):
|
||||
_inherit = 'sale.order.line'
|
||||
part_number = fields.Char('零件图号', related='product_id.part_number', readonly=True)
|
||||
|
||||
@@ -587,16 +587,28 @@ class StockPicking(models.Model):
|
||||
telephone_of_delivery = fields.Char('电话号码', compute='_compute_move_ids', store=True)
|
||||
address_of_delivery = fields.Char('联系地址', compute='_compute_move_ids', store=True)
|
||||
|
||||
retrospect_ref = fields.Char('追溯参考', compute='_compute_move_ids', store=True)
|
||||
|
||||
retrospect_ref = fields.Char('平台订单号', compute='_compute_move_ids', store=True)
|
||||
sale_name = fields.Char('销售订单', compute='_compute_move_ids', store=True)
|
||||
picking_type_sequence_code = fields.Char(related='picking_type_id.sequence_code')
|
||||
related_group_ids = fields.Many2many(
|
||||
'procurement.group', string='关联捕获组',
|
||||
readonly=True, compute='_compute_related_group_ids', store=True)
|
||||
@api.depends('origin')
|
||||
def _compute_related_group_ids(self):
|
||||
for record in self:
|
||||
if not record.origin:
|
||||
continue
|
||||
names = record.origin.split(',')
|
||||
related_group_ids = self.env['procurement.group'].search([('name', 'in', names)])
|
||||
record.related_group_ids = [(6, 0, related_group_ids.ids)]
|
||||
|
||||
@api.depends('move_ids', 'move_ids.product_id')
|
||||
def _compute_move_ids(self):
|
||||
for item in self:
|
||||
if item.move_ids:
|
||||
if item.picking_type_id.sequence_code == 'DL':
|
||||
sale_name = item.move_ids[0].product_id.name.split('-')[1]
|
||||
sale_name = item.move_ids[0].product_id.with_context(lang='zh_CN').name.split('-')[1]
|
||||
item.sale_name=sale_name
|
||||
if 'S' in sale_name:
|
||||
sale_id = self.env['sale.order'].sudo().search([('name', '=', sale_name)])
|
||||
item.person_of_delivery = sale_id.person_of_delivery
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
<field name="inherit_id" ref="stock.vpicktree"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='origin']" position="after">
|
||||
<field name="sale_name"/>
|
||||
<field name="retrospect_ref"/>
|
||||
</xpath>
|
||||
</field>
|
||||
|
||||
Reference in New Issue
Block a user