diff --git a/sf_base/views/tool_views.xml b/sf_base/views/tool_views.xml
index fff58007..87dbd94c 100644
--- a/sf_base/views/tool_views.xml
+++ b/sf_base/views/tool_views.xml
@@ -555,9 +555,9 @@
sf.tool.inventory
-
+
-
+
diff --git a/sf_manufacturing/controllers/controllers.py b/sf_manufacturing/controllers/controllers.py
index 61bc83ea..75badcc8 100644
--- a/sf_manufacturing/controllers/controllers.py
+++ b/sf_manufacturing/controllers/controllers.py
@@ -460,25 +460,27 @@ class Manufacturing_Connect(http.Controller):
if f'RfidCode{i}' in ret:
rfid_code = ret[f'RfidCode{i}']
logging.info('RfidCode:%s' % rfid_code)
- domain = [
- ('rfid_code', '=', rfid_code),
- ('routing_type', '=', 'CNC加工')
- ]
- workorder = request.env['mrp.workorder'].sudo().search(domain, order='id asc')
- if workorder:
- for order in workorder:
- if order.production_id.production_line_state == '待上产线':
- logging.info(
- '制造订单产线状态:%s' % order.production_id.production_line_state)
- order.production_id.write({'production_line_state': '已上产线'})
- workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search([
- ('rfid_code', '=', rfid_code), ('type', '=', '上产线'),
- ('production_id', '=', order.production_id.id)])
- if workpiece_delivery.status == '待下发':
- workpiece_delivery.write({'is_manual_work': True})
- else:
- res = {'Succeed': False, 'ErrorCode': 204,
- 'Error': 'DeviceId为%s没有对应的已配送工件数据' % ret['DeviceId']}
+ if rfid_code is not None:
+ domain = [
+ ('rfid_code', '=', rfid_code),
+ ('routing_type', '=', 'CNC加工')
+ ]
+ workorder = request.env['mrp.workorder'].sudo().search(domain, order='id asc')
+ if workorder:
+ for order in workorder:
+ if order.production_id.production_line_state == '待上产线':
+ logging.info(
+ '制造订单产线状态:%s' % order.production_id.production_line_state)
+ order.production_id.write({'production_line_state': '已上产线'})
+ workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(
+ [
+ ('rfid_code', '=', rfid_code), ('type', '=', '上产线'),
+ ('production_id', '=', order.production_id.id)])
+ if workpiece_delivery.status == '待下发':
+ workpiece_delivery.write({'is_manual_work': True})
+ else:
+ res = {'Succeed': False, 'ErrorCode': 204,
+ 'Error': 'DeviceId为%s没有对应的已配送工件数据' % ret['DeviceId']}
else:
res = {'Succeed': False, 'ErrorCode': 203, 'Error': '未传IsComplete字段'}
else:
@@ -515,24 +517,26 @@ class Manufacturing_Connect(http.Controller):
if f'RfidCode{i}' in ret:
rfid_code = ret[f'RfidCode{i}']
logging.info('RfidCode:%s' % rfid_code)
- domain = [
- ('rfid_code', '=', rfid_code),
- ('routing_type', '=', 'CNC加工')
- ]
- workorder = request.env['mrp.workorder'].sudo().search(domain, order='id asc')
- if workorder:
- for order in workorder:
- if order.production_id.production_line_state == '已上产线':
- logging.info(
- '制造订单产线状态:%s' % order.production_id.production_line_state)
- order.production_id.write({'production_line_state': '已下产线'})
- workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search([
- ('rfid_code', '=', rfid_code), ('type', '=', '下产线'),
- ('production_id', '=', order.production_id.id)])
- delivery_Arr.append(workpiece_delivery.id)
- else:
- res = {'Succeed': False, 'ErrorCode': 204,
- 'Error': 'DeviceId为%s没有对应的已配送工件数据' % ret['DeviceId']}
+ if rfid_code is not None:
+ domain = [
+ ('rfid_code', '=', rfid_code),
+ ('routing_type', '=', 'CNC加工')
+ ]
+ workorder = request.env['mrp.workorder'].sudo().search(domain, order='id asc')
+ if workorder:
+ for order in workorder:
+ if order.production_id.production_line_state == '已上产线':
+ logging.info(
+ '制造订单产线状态:%s' % order.production_id.production_line_state)
+ order.production_id.write({'production_line_state': '已下产线'})
+ workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(
+ [
+ ('rfid_code', '=', rfid_code), ('type', '=', '下产线'),
+ ('production_id', '=', order.production_id.id)])
+ delivery_Arr.append(workpiece_delivery.id)
+ else:
+ res = {'Succeed': False, 'ErrorCode': 204,
+ 'Error': 'DeviceId为%s没有对应的已配送工件数据' % ret['DeviceId']}
if delivery_Arr:
logging.info('delivery_Arr:%s' % delivery_Arr)
delivery_workpiece = request.env['sf.workpiece.delivery'].sudo().search(
diff --git a/sf_plan/models/custom_plan.py b/sf_plan/models/custom_plan.py
index fcfb8020..db8f4bf9 100644
--- a/sf_plan/models/custom_plan.py
+++ b/sf_plan/models/custom_plan.py
@@ -19,7 +19,7 @@ class sf_production_plan(models.Model):
('done', '已排程'),
('processing', '加工中'),
('finished', '已完成')
- ], string='工单状态', tracking=True)
+ ], string='状态', tracking=True)
state_order = fields.Integer(compute='_compute_state_order', store=True)
@@ -36,7 +36,7 @@ class sf_production_plan(models.Model):
_order = 'state_order asc, write_date desc'
- name = fields.Char(string='工单编号')
+ name = fields.Char(string='制造订单')
active = fields.Boolean(string='已归档', default=True)
# selected = fields.Boolean(default=False)
# order_number = fields.Char(string='订单号')
@@ -52,7 +52,7 @@ class sf_production_plan(models.Model):
schedule_setting = fields.Selection([
('reverse', '倒排'), ('positive', '顺排')], string='排程设置', default='reverse')
product_id = fields.Many2one('product.product', '关联产品')
- origin = fields.Char(string='订单号')
+ origin = fields.Char(string='销售订单')
# # 加工时长
# process_time = fields.Float(string='加工时长', digits=(16, 2))
# 实际加工时长、实际开始时间、实际结束时间
diff --git a/sf_plan/views/view.xml b/sf_plan/views/view.xml
index 3b53efc2..02e595f7 100644
--- a/sf_plan/views/view.xml
+++ b/sf_plan/views/view.xml
@@ -17,18 +17,18 @@
decoration-danger="state == 'finished'"/>
-
+
-
-
-
-
-
+
+
+
+
+
+
+
@@ -68,7 +68,7 @@
-
+
@@ -152,16 +152,27 @@
sf.production.plan
+
-
-
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -188,30 +199,41 @@
+
+
+
-
- 开始时间:
-
+ 销售订单号:
+
-
- 结束时间:
-
-
- -
- 名称:
+ 制造订单号:
+ -
+ 订单交期:
+
+
+ -
+ 产品名称:
+
+
-
数量:
-
- 状态:
-
+ 计划开始时间:
+
+
+ -
+ 计划结束时间:
+
@@ -246,6 +268,7 @@
ir.actions.act_window
sf.production.plan
tree,gantt,form
+
{'search_default_group_by_state': 1, 'search_default_draft': 1, 'display_complete': True}