修复制造订单生成时没有采购单
This commit is contained in:
@@ -205,39 +205,17 @@ class StockRule(models.Model):
|
|||||||
productions_values)
|
productions_values)
|
||||||
|
|
||||||
# self.env['stock.move'].sudo().create(productions._get_moves_raw_values())
|
# self.env['stock.move'].sudo().create(productions._get_moves_raw_values())
|
||||||
self.env['stock.move'].sudo().create(productions._get_moves_finished_values())
|
|
||||||
productions.filtered(lambda p: (not p.orderpoint_id and p.move_raw_ids) or \
|
|
||||||
(
|
|
||||||
p.move_dest_ids.procure_method != 'make_to_order' and not
|
|
||||||
p.move_raw_ids and not p.workorder_ids)).action_confirm()
|
|
||||||
'''
|
'''
|
||||||
创建工单
|
创建工单
|
||||||
'''
|
'''
|
||||||
# productions._create_workorder()
|
# productions._create_workorder()
|
||||||
#
|
#
|
||||||
grouped_product_ids = {k: list(g) for k, g in groupby(productions, key=lambda x: x.product_id.id)}
|
self.env['stock.move'].sudo().create(productions._get_moves_finished_values())
|
||||||
# 初始化一个字典来存储每个product_id对应的生产订单名称列表
|
productions.filtered(lambda p: (not p.orderpoint_id and p.move_raw_ids) or \
|
||||||
product_id_to_production_names = {}
|
(
|
||||||
# 对于每个product_id,获取其所有生产订单的名称
|
p.move_dest_ids.procure_method != 'make_to_order' and not
|
||||||
for product_id, productions in grouped_product_ids.items():
|
p.move_raw_ids and not p.workorder_ids)).action_confirm()
|
||||||
# 为同一个product_id创建一个生产订单名称列表
|
|
||||||
product_id_to_production_names[product_id] = [production.name for production in productions]
|
|
||||||
for production_item in productions:
|
|
||||||
if production_item.product_id.id in product_id_to_production_names:
|
|
||||||
# # 同一个产品多个制造订单对应一个编程单和模型库
|
|
||||||
# # 只调用一次fetchCNC,并将所有生产订单的名称作为字符串传递
|
|
||||||
if not production_item.programming_no:
|
|
||||||
production_programming = self.env['mrp.production'].search(
|
|
||||||
[('product_id.id', '=', production_item.product_id.id),
|
|
||||||
('origin', '=', production_item.origin)],
|
|
||||||
limit=1, order='id asc')
|
|
||||||
if not production_programming.programming_no:
|
|
||||||
production_item.fetchCNC(
|
|
||||||
', '.join(product_id_to_production_names[production_item.product_id.id]))
|
|
||||||
else:
|
|
||||||
production_item.write({'programming_no': production_programming.programming_no,
|
|
||||||
'programming_state': '编程中'})
|
|
||||||
|
|
||||||
for production in productions:
|
for production in productions:
|
||||||
'''
|
'''
|
||||||
创建制造订单时生成序列号
|
创建制造订单时生成序列号
|
||||||
@@ -283,6 +261,28 @@ class StockRule(models.Model):
|
|||||||
'product_id': production.product_id.id,
|
'product_id': production.product_id.id,
|
||||||
'state': 'draft',
|
'state': 'draft',
|
||||||
})
|
})
|
||||||
|
grouped_product_ids = {k: list(g) for k, g in groupby(productions, key=lambda x: x.product_id.id)}
|
||||||
|
# 初始化一个字典来存储每个product_id对应的生产订单名称列表
|
||||||
|
product_id_to_production_names = {}
|
||||||
|
# 对于每个product_id,获取其所有生产订单的名称
|
||||||
|
for product_id, productions in grouped_product_ids.items():
|
||||||
|
# 为同一个product_id创建一个生产订单名称列表
|
||||||
|
product_id_to_production_names[product_id] = [production.name for production in productions]
|
||||||
|
for production_item in productions:
|
||||||
|
if production_item.product_id.id in product_id_to_production_names:
|
||||||
|
# # 同一个产品多个制造订单对应一个编程单和模型库
|
||||||
|
# # 只调用一次fetchCNC,并将所有生产订单的名称作为字符串传递
|
||||||
|
if not production_item.programming_no:
|
||||||
|
production_programming = self.env['mrp.production'].search(
|
||||||
|
[('product_id.id', '=', production_item.product_id.id),
|
||||||
|
('origin', '=', production_item.origin)],
|
||||||
|
limit=1, order='id asc')
|
||||||
|
if not production_programming.programming_no:
|
||||||
|
production_item.fetchCNC(
|
||||||
|
', '.join(product_id_to_production_names[production_item.product_id.id]))
|
||||||
|
else:
|
||||||
|
production_item.write({'programming_no': production_programming.programming_no,
|
||||||
|
'programming_state': '编程中'})
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -483,7 +483,10 @@
|
|||||||
<field name="production_line_id" readonly="1"/>
|
<field name="production_line_id" readonly="1"/>
|
||||||
<field name="task_delivery_time" readonly="1"/>
|
<field name="task_delivery_time" readonly="1"/>
|
||||||
<field name="task_completion_time" readonly="1"/>
|
<field name="task_completion_time" readonly="1"/>
|
||||||
<field name="status" readonly="1"/>
|
<field name="status" readonly="1" widget="badge"
|
||||||
|
decoration-success="status == '已配送'"
|
||||||
|
decoration-warning="status == '待下发'"
|
||||||
|
decoration-danger="status == '待配送'"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</page>
|
</page>
|
||||||
@@ -729,7 +732,7 @@
|
|||||||
</search>
|
</search>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
、
|
||||||
<record id="sf_workpiece_delivery_act" model="ir.actions.act_window">
|
<record id="sf_workpiece_delivery_act" model="ir.actions.act_window">
|
||||||
<field name="name">工件配送</field>
|
<field name="name">工件配送</field>
|
||||||
<field name="res_model">sf.workpiece.delivery</field>
|
<field name="res_model">sf.workpiece.delivery</field>
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ class Sf_Mrs_Connect(http.Controller):
|
|||||||
download_state = request.env['sf.cnc.processing'].with_user(
|
download_state = request.env['sf.cnc.processing'].with_user(
|
||||||
request.env.ref("base.user_admin")).download_file_tmp(
|
request.env.ref("base.user_admin")).download_file_tmp(
|
||||||
ret['folder_name'], r)
|
ret['folder_name'], r)
|
||||||
if download_state == 0:
|
if download_state is False:
|
||||||
res['status'] = -2
|
res['status'] = -2
|
||||||
res['message'] = '编程单号为%s的CNC程序文件从FTP拉取失败' % (ret['programming_no'])
|
res['message'] = '编程单号为%s的CNC程序文件从FTP拉取失败' % (ret['programming_no'])
|
||||||
return json.JSONEncoder().encode(res)
|
return json.JSONEncoder().encode(res)
|
||||||
|
|||||||
Reference in New Issue
Block a user