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(
|
first_order = self.env['mrp.production'].search(
|
||||||
[('origin', '=', order.origin), ('product_id', '=', order.product_id.id)], limit=1, order='id asc')
|
[('origin', '=', order.origin), ('product_id', '=', order.product_id.id)], limit=1, order='id asc')
|
||||||
order.picking_ids = self.env['stock.picking'].search([
|
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)
|
order.delivery_count = len(first_order.picking_ids)
|
||||||
else:
|
else:
|
||||||
order.picking_ids = self.env['stock.picking'].search([
|
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)
|
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')
|
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(
|
product_bom_purchase.with_user(self.env.ref("base.user_admin")).bom_create_line_has(
|
||||||
purchase_embryo)
|
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):
|
class SaleOrderLine(models.Model):
|
||||||
_inherit = 'sale.order.line'
|
_inherit = 'sale.order.line'
|
||||||
part_number = fields.Char('零件图号', related='product_id.part_number', readonly=True)
|
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)
|
telephone_of_delivery = fields.Char('电话号码', compute='_compute_move_ids', store=True)
|
||||||
address_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')
|
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')
|
@api.depends('move_ids', 'move_ids.product_id')
|
||||||
def _compute_move_ids(self):
|
def _compute_move_ids(self):
|
||||||
for item in self:
|
for item in self:
|
||||||
if item.move_ids:
|
if item.move_ids:
|
||||||
if item.picking_type_id.sequence_code == 'DL':
|
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:
|
if 'S' in sale_name:
|
||||||
sale_id = self.env['sale.order'].sudo().search([('name', '=', sale_name)])
|
sale_id = self.env['sale.order'].sudo().search([('name', '=', sale_name)])
|
||||||
item.person_of_delivery = sale_id.person_of_delivery
|
item.person_of_delivery = sale_id.person_of_delivery
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
<field name="inherit_id" ref="stock.vpicktree"/>
|
<field name="inherit_id" ref="stock.vpicktree"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath expr="//field[@name='origin']" position="after">
|
<xpath expr="//field[@name='origin']" position="after">
|
||||||
|
<field name="sale_name"/>
|
||||||
<field name="retrospect_ref"/>
|
<field name="retrospect_ref"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
|
|||||||
Reference in New Issue
Block a user