From 28659bfc95fba809a555ca42f17620dd066d9d5e Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Thu, 23 Feb 2023 08:52:56 +0800
Subject: [PATCH 1/9] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=90=88=E5=B9=B6?=
=?UTF-8?q?=E4=B8=8B=E5=8F=91=E5=90=91=E5=AF=BC=EF=BC=8C=E5=A2=9E=E5=8A=A0?=
=?UTF-8?q?cnc=E6=A8=A1=E5=9E=8B=E7=9A=84=E7=BC=BA=E7=9C=81tree=E8=A7=86?=
=?UTF-8?q?=E5=9B=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_machine_connect/__init__.py | 3 +-
sf_machine_connect/__manifest__.py | 7 ++
sf_machine_connect/models/ftp_client.py | 19 ++-
.../security/ir.model.access.csv | 3 +-
sf_machine_connect/views/cnc.xml | 27 ++++
sf_machine_connect/views/compensation.xml | 6 +-
sf_machine_connect/views/delivery_record.xml | 32 +++++
sf_machine_connect/views/ftp_button.xml | 13 ++
sf_machine_connect/wizard/__init__.py | 1 +
sf_machine_connect/wizard/action_up.py | 116 ++++++++++++++++++
sf_machine_connect/wizard/up_select.xml | 34 +++++
sf_manufacturing/models/mrp_workorder.py | 3 +
sf_manufacturing/views/mrp_workorder_view.xml | 5 +-
13 files changed, 260 insertions(+), 9 deletions(-)
create mode 100644 sf_machine_connect/views/cnc.xml
create mode 100644 sf_machine_connect/views/delivery_record.xml
create mode 100644 sf_machine_connect/wizard/__init__.py
create mode 100644 sf_machine_connect/wizard/action_up.py
create mode 100644 sf_machine_connect/wizard/up_select.xml
diff --git a/sf_machine_connect/__init__.py b/sf_machine_connect/__init__.py
index 9a7e03ed..c536983e 100644
--- a/sf_machine_connect/__init__.py
+++ b/sf_machine_connect/__init__.py
@@ -1 +1,2 @@
-from . import models
\ No newline at end of file
+from . import models
+from . import wizard
\ No newline at end of file
diff --git a/sf_machine_connect/__manifest__.py b/sf_machine_connect/__manifest__.py
index 646a9403..2a78595b 100644
--- a/sf_machine_connect/__manifest__.py
+++ b/sf_machine_connect/__manifest__.py
@@ -16,13 +16,20 @@
'data': [
# 定义权限组放在最上面
# 权限组
+ 'security/ir.model.access.csv',
+ 'wizard/up_select.xml',
+ 'views/cnc.xml',
+
'views/compensation.xml',
'views/ftp_button.xml',
+
'views/SfWorkOrderBarcodes.xml',
'views/WorkCenterBarcodes.xml',
'views/Stock_picking_Barcodes.xml',
'views/machine_monitor.xml',
'views/machine_info_present.xml',
+ 'views/delivery_record.xml',
+
],
'assets': {
diff --git a/sf_machine_connect/models/ftp_client.py b/sf_machine_connect/models/ftp_client.py
index 40c7ca3c..49868871 100644
--- a/sf_machine_connect/models/ftp_client.py
+++ b/sf_machine_connect/models/ftp_client.py
@@ -23,7 +23,6 @@ _logger = logging.getLogger(__name__)
class FtpButton(models.Model):
_inherit = 'sf.cnc.processing'
- button_state = fields.Boolean(string='是否已经下发')
user_permissions = fields.Boolean(string='权限', related='workorder_id.user_permissions')
state = fields.Selection(string='状态', related='workorder_id.state')
@@ -301,12 +300,13 @@ class WorkCenterBarcode(models.Model):
# 存在本地的文件下发到机床
_logger.info("=====================11================")
ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
+ item.button_state = True
# _logger.info("=====================22================")
except Exception as e:
_logger.info("=====================================", e)
raise UserError('NC下发执行超时, 请检查下发状态')
- # 下发都执行完毕后,按钮标志位变为true
- self.button_up_all_state = True
+ # # 下发都执行完毕后,按钮标志位变为true
+ # self.cnc_ids.button_state = True
def get__state(self):
pay_time = str(datetime.now())
@@ -338,3 +338,16 @@ class WorkCenterBarcode(models.Model):
}
url = 'https://bfm.cs.jikimo.com/api/get/state'
requests.post(url, json=json, data=None)
+
+ def action_up_select(self):
+ return {
+ 'name': '选择要下发的程序文件',
+ 'view_mode': 'tree,form',
+ # 'res_model': self._name,
+ 'res_model': 'sf_tray_form_inherit',
+ 'target': 'main', # 打开方式
+ # 'domain': [('project_num', '=', self.project_num), ('state', '=', 'done')], # 域
+ 'type': 'ir.actions.act_window', # 返回的类型
+ }
+
+
diff --git a/sf_machine_connect/security/ir.model.access.csv b/sf_machine_connect/security/ir.model.access.csv
index 53d13813..97e855f9 100644
--- a/sf_machine_connect/security/ir.model.access.csv
+++ b/sf_machine_connect/security/ir.model.access.csv
@@ -1,2 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_ftp_client,ftp.client,model_ftp_client,base.group_user,1,1,1,1
+
+access_up_select_wizard,up.select.wizard,model_up_select_wizard,base.group_user,1,1,1,1
diff --git a/sf_machine_connect/views/cnc.xml b/sf_machine_connect/views/cnc.xml
new file mode 100644
index 00000000..1883d496
--- /dev/null
+++ b/sf_machine_connect/views/cnc.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ sf.cnc.tree
+ sf.cnc.processing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sf_machine_connect/views/compensation.xml b/sf_machine_connect/views/compensation.xml
index 77ee1012..54652138 100644
--- a/sf_machine_connect/views/compensation.xml
+++ b/sf_machine_connect/views/compensation.xml
@@ -19,11 +19,13 @@
class="btn-primary" attrs='{"invisible": ["|",
("state","!=","progress"),("user_permissions","=",False)]}'/>
-
+
+
+
+
diff --git a/sf_machine_connect/views/delivery_record.xml b/sf_machine_connect/views/delivery_record.xml
new file mode 100644
index 00000000..b62202e0
--- /dev/null
+++ b/sf_machine_connect/views/delivery_record.xml
@@ -0,0 +1,32 @@
+
+
+
+ delivery.record.form.inherit.sf
+ mrp.workorder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sf_machine_connect/views/ftp_button.xml b/sf_machine_connect/views/ftp_button.xml
index e56ea01a..17924377 100644
--- a/sf_machine_connect/views/ftp_button.xml
+++ b/sf_machine_connect/views/ftp_button.xml
@@ -26,5 +26,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sf_machine_connect/wizard/__init__.py b/sf_machine_connect/wizard/__init__.py
new file mode 100644
index 00000000..5faba653
--- /dev/null
+++ b/sf_machine_connect/wizard/__init__.py
@@ -0,0 +1 @@
+from . import action_up
\ No newline at end of file
diff --git a/sf_machine_connect/wizard/action_up.py b/sf_machine_connect/wizard/action_up.py
new file mode 100644
index 00000000..00e5068b
--- /dev/null
+++ b/sf_machine_connect/wizard/action_up.py
@@ -0,0 +1,116 @@
+# -*- coding: utf-8 -*-
+import base64
+import logging
+import os
+import json
+import hashlib
+import time
+import requests
+from datetime import datetime
+
+from odoo import fields, models, api, _
+from odoo.exceptions import ValidationError
+from odoo.exceptions import UserError
+from odoo.addons.sf_machine_connect.models import py2opcua, ftp_operate
+
+_logger = logging.getLogger(__name__)
+
+
+class UpSelectWizard(models.TransientModel):
+ _name = 'up.select.wizard'
+
+ workorder_id = fields.Many2one('mrp.workorder', string='工单', readonly=True)
+ workcenter_id = fields.Many2one('mrp.workcenter', string='工作中心', related='workorder_id.workcenter_id', readonly=True)
+ program_ids = fields.Many2many('sf.cnc.processing', string='程序列表')
+
+ def confirm_up(self):
+ pass
+
+ # cnc_id1 = fields.Many2one('ir.attachment', compute='_compute_cnc_id')
+ # sequence_number1 = fields.Char('序号', compute='_compute_cnc_id', default='0')
+ # program_name1 = fields.Char('程序名', compute='_compute_cnc_id')
+ # cutting_tool_name1 = fields.Char('刀具名称', compute='_compute_cnc_id')
+ # cutting_tool_no1 = fields.Char('刀号', compute='_compute_cnc_id')
+ # processing_type1 = fields.Char('加工类型', compute='_compute_cnc_id')
+ # margin_x_y1 = fields.Char('余量_X/Y', compute='_compute_cnc_id')
+ # margin_z1 = fields.Char('余量_Z', compute='_compute_cnc_id')
+ # depth_of_processing_z1 = fields.Char('加工深度(Z)', compute='_compute_cnc_id')
+ # cutting_tool_extension_length1 = fields.Char('刀具伸出长度', compute='_compute_cnc_id')
+ # cutting_tool_handle_type1 = fields.Char('刀柄型号', compute='_compute_cnc_id')
+ # estimated_processing_time1 = fields.Char('预计加工时间', compute='_compute_cnc_id')
+ # remark1 = fields.Text('备注', compute='_compute_cnc_id')
+ # cnc_id = fields.Many2one('sf.cnc.processing', '工单')
+ # num = fields.Integer('索引', default=0)
+ # cnc_id1 = fields.Many2one('ir.attachment')
+ # sequence_number1 = fields.Char('序号', compute='_compute_cnc_id', default='1')
+ # program_name1 = fields.Char('程序名')
+ # cutting_tool_name1 = fields.Char('刀具名称')
+ # cutting_tool_no1 = fields.Char('刀号')
+ # processing_type1 = fields.Char('加工类型')
+ # margin_x_y1 = fields.Char('余量_X/Y')
+ # margin_z1 = fields.Char('余量_Z')
+ # depth_of_processing_z1 = fields.Char('加工深度(Z)')
+ # cutting_tool_extension_length1 = fields.Char('刀具伸出长度')
+ # cutting_tool_handle_type1 = fields.Char('刀柄型号')
+ # estimated_processing_time1 = fields.Char('预计加工时间')
+ # remark1 = fields.Text('备注')
+ # cnc_id = fields.Many2one('sf.cnc.processing', '工单')
+ # num = fields.Integer('索引', default=0)
+ # print(11111111111111111111111111111111111111111111111)
+ # # @api.depends('program_ids')
+ # def _compute_cnc_id(self):
+ # print(222222222222222222222222222222222222222222)
+ # workorder_id = self.env.context.get('default_workorder_id')
+ # workorder = self.env['mrp.workorder'].sudo().search([('id', '=', workorder_id)])
+ # # self.workcenter_id = workorder.workcent_id
+ # print(workorder_id)
+ #
+ # lines = []
+ # print(lines)
+ # for item in workorder.cnc_ids:
+ # # lines.append((4,item.id,0))
+ # lines.append((4, item.id, 0))
+ # print(lines)
+ #
+ # # print(self.cnc_id1, self.sequence_number1, self.program_name1, self.processing_type1,
+ # # self.cutting_tool_handle_type1
+ # # , self.cutting_tool_extension_length1, self.margin_z1, self.margin_z1, self.depth_of_processing_z1,
+ # # self.cutting_tool_no1, self.cutting_tool_name1, self.estimated_processing_time1, self.remark1)
+ # # else:
+ # # self.write({
+ # #
+ # # # 'cnc_id1': item.cnc_id or '',
+ # # # 'sequence_number1': item.sequence_number or '',
+ # # # 'program_name1': item.program_name or '',
+ # # # 'cutting_tool_name1': item.cutting_tool_name or '',
+ # # # 'cutting_tool_no1': item.cutting_tool_no or '',
+ # # # 'processing_type1': item.processing_type or '',
+ # # # 'margin_x_y1': item.margin_x_y or '',
+ # # # 'margin_z1': item.margin_z or '',
+ # # # 'depth_of_processing_z1': item.depth_of_processing_z or '',
+ # # # 'cutting_tool_extension_length1': item.cutting_tool_extension_length or '',
+ # # # 'cutting_tool_handle_type1': item.cutting_tool_handle_type or '',
+ # # # 'estimated_processing_time1': item.estimated_processing_time or '',
+ # # # 'remark1': item.remark or '',
+ # # 'id': item.sequence_number,
+ # # 'cnc_id1': item.cnc_id,
+ # # 'sequence_number1': item.sequence_number,
+ # # 'program_name1': item.program_name,
+ # # 'cutting_tool_name1': item.cutting_tool_name,
+ # # 'cutting_tool_no1': item.cutting_tool_no,
+ # # 'processing_type1': item.processing_type,
+ # # 'margin_x_y1': item.margin_x_y,
+ # # 'margin_z1': item.margin_z,
+ # # 'depth_of_processing_z1': item.depth_of_processing_z,
+ # # 'cutting_tool_extension_length1': item.cutting_tool_extension_length,
+ # # 'cutting_tool_handle_type1': item.cutting_tool_handle_type,
+ # # 'estimated_processing_time1': item.estimated_processing_time,
+ # # 'remark1': item.remark,
+ # # })
+ # # print(self.cnc_id1, self.sequence_number1, self.program_name1, self.processing_type1,
+ # # self.cutting_tool_handle_type1
+ # # , self.cutting_tool_extension_length1, self.margin_z1, self.margin_z1,
+ # # self.depth_of_processing_z1,
+ # # self.cutting_tool_no1, self.cutting_tool_name1, self.estimated_processing_time1, self.remark1)
+ #
+ # self.update({'program_ids': lines})
diff --git a/sf_machine_connect/wizard/up_select.xml b/sf_machine_connect/wizard/up_select.xml
new file mode 100644
index 00000000..cbdac5b3
--- /dev/null
+++ b/sf_machine_connect/wizard/up_select.xml
@@ -0,0 +1,34 @@
+
+
+
+ CNC工单
+ up.select.wizard
+
+
+
+
+
+ 选择要下发的NC程序
+ ir.actions.act_window
+
+ up.select.wizard
+ form
+
+ new
+
+
+
+
\ No newline at end of file
diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py
index 852db2d7..4e3f410b 100644
--- a/sf_manufacturing/models/mrp_workorder.py
+++ b/sf_manufacturing/models/mrp_workorder.py
@@ -431,6 +431,7 @@ class ResMrpWorkOrder(models.Model):
class CNCprocessing(models.Model):
_name = 'sf.cnc.processing'
_description = "CNC加工"
+ _rec_name = 'program_name'
cnc_id = fields.Many2one('ir.attachment')
sequence_number = fields.Char('序号')
@@ -446,6 +447,8 @@ class CNCprocessing(models.Model):
estimated_processing_time = fields.Char('预计加工时间')
remark = fields.Text('备注')
workorder_id = fields.Many2one('mrp.workorder', string="工单")
+ button_state = fields.Boolean(string='是否已经下发')
+
# mrs下发编程单创建CNC加工
def cnc_processing_create(self, cnc_workorder, ret):
diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml
index 2a847788..3529b6a6 100644
--- a/sf_manufacturing/views/mrp_workorder_view.xml
+++ b/sf_manufacturing/views/mrp_workorder_view.xml
@@ -336,11 +336,11 @@
-
+
-
+
@@ -350,6 +350,7 @@
+
From 52b045b6589548015d79dd6df3328764d5cf200c Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Thu, 23 Feb 2023 10:57:42 +0800
Subject: [PATCH 2/9] =?UTF-8?q?=E5=90=88=E5=B9=B6=E4=B8=8B=E5=8F=91?=
=?UTF-8?q?=E6=9C=AC=E5=9C=B0=E6=B5=8B=E8=AF=95=E5=B7=B2=E6=88=90=E5=8A=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_machine_connect/wizard/action_up.py | 50 ++++++++++++++++++++++++--
1 file changed, 48 insertions(+), 2 deletions(-)
diff --git a/sf_machine_connect/wizard/action_up.py b/sf_machine_connect/wizard/action_up.py
index 00e5068b..f3741c8a 100644
--- a/sf_machine_connect/wizard/action_up.py
+++ b/sf_machine_connect/wizard/action_up.py
@@ -20,11 +20,57 @@ class UpSelectWizard(models.TransientModel):
_name = 'up.select.wizard'
workorder_id = fields.Many2one('mrp.workorder', string='工单', readonly=True)
- workcenter_id = fields.Many2one('mrp.workcenter', string='工作中心', related='workorder_id.workcenter_id', readonly=True)
+ workcenter_id = fields.Many2one('mrp.workcenter', string='工作中心', related='workorder_id.workcenter_id',
+ readonly=True)
program_ids = fields.Many2many('sf.cnc.processing', string='程序列表')
+ program_name = []
+
def confirm_up(self):
- pass
+
+
+ host = self.workcenter_id.machine_tool_id.ftp_host
+ port = self.workcenter_id.machine_tool_id.ftp_port
+ username = self.workcenter_id.machine_tool_id.ftp_num
+ pwd = self.workcenter_id.machine_tool_id.ftp_pwd
+ remote_path = self.workcenter_id.machine_tool_id.ftp_remote_path
+ print(host, port, username, pwd, remote_path)
+ # ftp = ftp_operate.FtpController(host, port, username, pwd)
+ try:
+ # 给文件名
+ begin_name1 = self.program_ids[0].cnc_id.display_name.split('-')
+ temp_name1 = begin_name1[-1].split('.')
+ final_name = '%s-MERGE.%s' % (begin_name1[0], temp_name1[-1])
+ print(final_name)
+
+ for item in self.program_ids:
+ # print(item.program_name)
+ # print(item.cnc_id)
+ a = item.cnc_id
+ print(a.display_name)
+ _logger.info(a.public)
+ _logger.info(a.display_name)
+ datas = base64.standard_b64decode(a.datas)
+ # print(datas)
+ # file_path_local = '{}/{}'.format('/nc2machine', final_name)
+ # print(file_path_local)
+
+ # 本地测试合并下发
+ file_path_local = '{}/{}'.format('D:\\jikimo', a.display_name)
+ # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
+ # file_path_remote = '{}\{}'.format(remote_path, a.display_name)
+ # 合并文件
+ with open(file_path_local, mode='wb+') as file:
+ file.write(datas)
+
+ # 存在本地的文件下发到机床
+ # _logger.info("=====================11================")
+ # # ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
+ # item.button_state = True
+ # _logger.info("=====================22================")
+ except Exception as e:
+ _logger.info("=====================================", e)
+ raise UserError('NC下发执行超时, 请检查下发状态')
# cnc_id1 = fields.Many2one('ir.attachment', compute='_compute_cnc_id')
# sequence_number1 = fields.Char('序号', compute='_compute_cnc_id', default='0')
From 444e99b4cf98547921e48777904893189a65dbb4 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Thu, 23 Feb 2023 11:04:58 +0800
Subject: [PATCH 3/9] =?UTF-8?q?=E5=90=88=E5=B9=B6=E4=B8=8B=E5=8F=91?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=B7=B2=E5=AE=8C=E6=88=90=EF=BC=8C=E5=BE=85?=
=?UTF-8?q?=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_machine_connect/wizard/action_up.py | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/sf_machine_connect/wizard/action_up.py b/sf_machine_connect/wizard/action_up.py
index f3741c8a..152a1684 100644
--- a/sf_machine_connect/wizard/action_up.py
+++ b/sf_machine_connect/wizard/action_up.py
@@ -28,14 +28,13 @@ class UpSelectWizard(models.TransientModel):
def confirm_up(self):
-
host = self.workcenter_id.machine_tool_id.ftp_host
port = self.workcenter_id.machine_tool_id.ftp_port
username = self.workcenter_id.machine_tool_id.ftp_num
pwd = self.workcenter_id.machine_tool_id.ftp_pwd
remote_path = self.workcenter_id.machine_tool_id.ftp_remote_path
print(host, port, username, pwd, remote_path)
- # ftp = ftp_operate.FtpController(host, port, username, pwd)
+ ftp = ftp_operate.FtpController(host, port, username, pwd)
try:
# 给文件名
begin_name1 = self.program_ids[0].cnc_id.display_name.split('-')
@@ -52,22 +51,23 @@ class UpSelectWizard(models.TransientModel):
_logger.info(a.display_name)
datas = base64.standard_b64decode(a.datas)
# print(datas)
- # file_path_local = '{}/{}'.format('/nc2machine', final_name)
+ file_path_local = '{}/{}'.format('/nc2machine', final_name)
# print(file_path_local)
# 本地测试合并下发
- file_path_local = '{}/{}'.format('D:\\jikimo', a.display_name)
+ # file_path_local = '{}/{}'.format('D:\\jikimo', a.display_name)
# file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
- # file_path_remote = '{}\{}'.format(remote_path, a.display_name)
+ file_path_remote = '{}\{}'.format(remote_path, final_name)
# 合并文件
- with open(file_path_local, mode='wb+') as file:
+ with open(file_path_local, mode='ab+') as file:
file.write(datas)
# 存在本地的文件下发到机床
- # _logger.info("=====================11================")
- # # ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
- # item.button_state = True
- # _logger.info("=====================22================")
+ _logger.info("==========存在服务器成功,准备下发===========")
+ ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
+ # 下发成功标识
+ item.button_state = True
+ _logger.info("==============合并下发成功==============")
except Exception as e:
_logger.info("=====================================", e)
raise UserError('NC下发执行超时, 请检查下发状态')
From 5fbe834528cbb52409ecd0d2a1a42eca9ff591b0 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Thu, 23 Feb 2023 22:11:32 +0800
Subject: [PATCH 4/9] =?UTF-8?q?=E5=90=88=E5=B9=B6=E4=B8=8B=E5=8F=91?=
=?UTF-8?q?=E5=B7=B2=E5=AE=8C=E6=88=90=EF=BC=8C=E6=AD=A3=E5=9C=A8=E5=A2=9E?=
=?UTF-8?q?=E5=8A=A0=E4=B8=8B=E5=8F=91=E8=AE=B0=E5=BD=95=E5=AF=B9=E8=B1=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_machine_connect/__manifest__.py | 4 +-
sf_machine_connect/models/ftp_client.py | 186 ++++++++++--------
.../security/ir.model.access.csv | 2 +
sf_machine_connect/views/cnc.xml | 27 ---
sf_machine_connect/views/compensation.xml | 3 +-
sf_machine_connect/views/default_delivery.xml | 28 +++
sf_machine_connect/views/delivery_record.xml | 34 ++--
sf_machine_connect/views/ftp_button.xml | 7 +-
sf_machine_connect/views/project_sequence.xml | 13 ++
sf_machine_connect/wizard/action_up.py | 52 ++---
sf_manufacturing/views/mrp_workorder_view.xml | 2 +-
11 files changed, 206 insertions(+), 152 deletions(-)
delete mode 100644 sf_machine_connect/views/cnc.xml
create mode 100644 sf_machine_connect/views/default_delivery.xml
create mode 100644 sf_machine_connect/views/project_sequence.xml
diff --git a/sf_machine_connect/__manifest__.py b/sf_machine_connect/__manifest__.py
index 2a78595b..89389496 100644
--- a/sf_machine_connect/__manifest__.py
+++ b/sf_machine_connect/__manifest__.py
@@ -18,7 +18,8 @@
# 权限组
'security/ir.model.access.csv',
'wizard/up_select.xml',
- 'views/cnc.xml',
+ 'views/default_delivery.xml',
+ 'views/delivery_record.xml',
'views/compensation.xml',
'views/ftp_button.xml',
@@ -28,7 +29,6 @@
'views/Stock_picking_Barcodes.xml',
'views/machine_monitor.xml',
'views/machine_info_present.xml',
- 'views/delivery_record.xml',
],
diff --git a/sf_machine_connect/models/ftp_client.py b/sf_machine_connect/models/ftp_client.py
index 49868871..63648e67 100644
--- a/sf_machine_connect/models/ftp_client.py
+++ b/sf_machine_connect/models/ftp_client.py
@@ -63,37 +63,43 @@ class FtpButton(models.Model):
# 点击下发按钮自动补偿三元检测偏差值
try:
- try:
- if self.sequence_number == '1':
- self.check_compensation_before_up()
- except Exception:
- raise UserError("补偿值写入执行超时,请检查机床状态或者写入状态")
-
- # host="192.168.2.158", port=8080, username="MITSUBISHI", password="CNC"
- host = self.workorder_id.workcenter_id.machine_tool_id.ftp_host
- port = self.workorder_id.workcenter_id.machine_tool_id.ftp_port
- username = self.workorder_id.workcenter_id.machine_tool_id.ftp_num
- pwd = self.workorder_id.workcenter_id.machine_tool_id.ftp_pwd
- remote_path = self.workorder_id.workcenter_id.machine_tool_id.ftp_remote_path
- print(host, port, username, pwd, remote_path)
- ftp = ftp_operate.FtpController(host, port, username, pwd)
- # ftp.delAllfile('C://Users//马广威//Desktop//ftp')
+ # try:
+ # if self.sequence_number == '1':
+ # self.check_compensation_before_up()
+ # except Exception:
+ # raise UserError("补偿值写入执行超时,请检查机床状态或者写入状态")
+ #
+ # # host="192.168.2.158", port=8080, username="MITSUBISHI", password="CNC"
+ # host = self.workorder_id.workcenter_id.machine_tool_id.ftp_host
+ # port = self.workorder_id.workcenter_id.machine_tool_id.ftp_port
+ # username = self.workorder_id.workcenter_id.machine_tool_id.ftp_num
+ # pwd = self.workorder_id.workcenter_id.machine_tool_id.ftp_pwd
+ # remote_path = self.workorder_id.workcenter_id.machine_tool_id.ftp_remote_path
+ # print(host, port, username, pwd, remote_path)
+ # ftp = ftp_operate.FtpController(host, port, username, pwd)
+ # # ftp.delAllfile('C://Users//马广威//Desktop//ftp')
a = self.cnc_id
- _logger.info(a.public)
- _logger.info(a.display_name)
- datas = base64.standard_b64decode(a.datas)
-
- # file_path = '{}\{}\{}'.format(a._filestore(), a.store_fname.split('/'[0]), a.display_name)
- file_path_local = '{}/{}'.format('/nc2machine', a.display_name)
- # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
- file_path_remote = '{}\{}'.format(remote_path, a.display_name)
-
- with open(file_path_local, mode='wb+') as file:
- file.write(datas)
- # 存在本地的文件下发到机床
- _logger.info("=====================11================")
- ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
- _logger.info("=====================22================")
+ # _logger.info(a.public)
+ # _logger.info(a.display_name)
+ # datas = base64.standard_b64decode(a.datas)
+ #
+ # # file_path = '{}\{}\{}'.format(a._filestore(), a.store_fname.split('/'[0]), a.display_name)
+ # file_path_local = '{}/{}'.format('/nc2machine', a.display_name)
+ # # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
+ # file_path_remote = '{}\{}'.format(remote_path, a.display_name)
+ #
+ # with open(file_path_local, mode='wb+') as file:
+ # file.write(datas)
+ # # 存在本地的文件下发到机床
+ # _logger.info("=====================11================")
+ # ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
+ # _logger.info("=====================22================")
+ up_time = str(datetime.now())
+ self.workorder_id.delivery_records.create({
+ 'delivery_type': '单个下发',
+ 'delivery_time': 'up_time',
+ 'influence_record': 'self.sequence_number',
+ })
except Exception as e:
_logger.info("=====================================", e)
raise UserError('NC下发执行超时, 请检查下发状态')
@@ -218,6 +224,7 @@ class WorkCenterBarcode(models.Model):
string='切削状态', compute='_run_info', readonly=True, default='0')
machine_tool_compensation_value_x = fields.Char('x补偿值', compute='_run_info', readonly=True)
machine_tool_compensation_value_y = fields.Char('y补偿值', compute='_run_info', readonly=True)
+ delivery_records = fields.One2many('delivery.record', 'workorder_id', string="下发记录")
@api.depends('workcenter_id.machine_tool_id.timestamp')
def _run_info(self):
@@ -260,48 +267,58 @@ class WorkCenterBarcode(models.Model):
此函数用于将NC代码全部下发到机床
:return:
"""
- try:
- filepath = '/nc2machine'
- del_list = os.listdir(filepath)
- _logger.info("=====================================", del_list)
- for f in del_list:
- file_path = os.path.join(filepath, f)
- if os.path.isfile(file_path):
- os.remove(file_path)
- except Exception as e:
- _logger.info("=====================================", e)
- raise UserError('程序删除失败,请重试')
- # host="192.168.2.158", port=8080, username="MITSUBISHI", password="CNC"
- host = self.workcenter_id.machine_tool_id.ftp_host
- port = self.workcenter_id.machine_tool_id.ftp_port
- username = self.workcenter_id.machine_tool_id.ftp_num
- pwd = self.workcenter_id.machine_tool_id.ftp_pwd
- remote_path = self.workcenter_id.machine_tool_id.ftp_remote_path
- print(host, port, username, pwd, remote_path)
- ftp = ftp_operate.FtpController(host, port, username, pwd)
- # ftp.delAllfile('C://Users//马广威//Desktop//ftp')
+ # try:
+ # filepath = '/nc2machine'
+ # del_list = os.listdir(filepath)
+ # _logger.info("=====================================", del_list)
+ # for f in del_list:
+ # file_path = os.path.join(filepath, f)
+ # if os.path.isfile(file_path):
+ # os.remove(file_path)
+ # except Exception as e:
+ # _logger.info("=====================================", e)
+ # raise UserError('程序删除失败,请重试')
+ # # host="192.168.2.158", port=8080, username="MITSUBISHI", password="CNC"
+ sequence_collect = []
+ # host = self.workcenter_id.machine_tool_id.ftp_host
+ # port = self.workcenter_id.machine_tool_id.ftp_port
+ # username = self.workcenter_id.machine_tool_id.ftp_num
+ # pwd = self.workcenter_id.machine_tool_id.ftp_pwd
+ # remote_path = self.workcenter_id.machine_tool_id.ftp_remote_path
+ # print(host, port, username, pwd, remote_path)
+ # ftp = ftp_operate.FtpController(host, port, username, pwd)
+ # # ftp.delAllfile('C://Users//马广威//Desktop//ftp')
try:
for item in self.cnc_ids:
a = item.cnc_id
print(a.display_name)
- _logger.info(a.public)
- _logger.info(a.display_name)
- datas = base64.standard_b64decode(a.datas)
+ sequence_collect.append(item.sequence_number)
+ # _logger.info(a.public)
+ # _logger.info(a.display_name)
+ # datas = base64.standard_b64decode(a.datas)
+ #
+ # # file_path = '{}\{}\{}'.format(a._filestore(), a.store_fname.split('/'[0]), a.display_name)
+ # file_path_local = '{}/{}'.format('/nc2machine', a.display_name)
+ # # 本地测试一键下发
+ # # file_path_local = '{}/{}'.format('D:\\jikimo', a.display_name)
+ # # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
+ # file_path_remote = '{}\{}'.format(remote_path, a.display_name)
+ #
+ # with open(file_path_local, mode='wb+') as file:
+ # file.write(datas)
+ # # 存在本地的文件下发到机床
+ # _logger.info("=====================11================")
+ # ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
+ # item.button_state = True
+ up_time = str(datetime.now())
+ sequence_str = ','.join(sequence_collect)
- # file_path = '{}\{}\{}'.format(a._filestore(), a.store_fname.split('/'[0]), a.display_name)
- file_path_local = '{}/{}'.format('/nc2machine', a.display_name)
- # 本地测试一键下发
- # file_path_local = '{}/{}'.format('D:\\jikimo', a.display_name)
- # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
- file_path_remote = '{}\{}'.format(remote_path, a.display_name)
-
- with open(file_path_local, mode='wb+') as file:
- file.write(datas)
- # 存在本地的文件下发到机床
- _logger.info("=====================11================")
- ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
- item.button_state = True
- # _logger.info("=====================22================")
+ self.delivery_records.create({
+ 'delivery_type': '一键下发',
+ 'delivery_time': up_time,
+ 'influence_record': sequence_str,
+ })
+ _logger.info("=====================22================")
except Exception as e:
_logger.info("=====================================", e)
raise UserError('NC下发执行超时, 请检查下发状态')
@@ -339,15 +356,30 @@ class WorkCenterBarcode(models.Model):
url = 'https://bfm.cs.jikimo.com/api/get/state'
requests.post(url, json=json, data=None)
- def action_up_select(self):
- return {
- 'name': '选择要下发的程序文件',
- 'view_mode': 'tree,form',
- # 'res_model': self._name,
- 'res_model': 'sf_tray_form_inherit',
- 'target': 'main', # 打开方式
- # 'domain': [('project_num', '=', self.project_num), ('state', '=', 'done')], # 域
- 'type': 'ir.actions.act_window', # 返回的类型
- }
+class DeliveryRecord(models.Model):
+ """
+ 扫码托盘码可查到制造订单,由制造订单查工单
+ """
+ # _inherit = "mrp.workorder"
+ _name = "delivery.record"
+
+ delivery_type = fields.Char(string='下发方式', readonly=True)
+ delivery_time = fields.Char(string='下发时间', readonly=True)
+ influence_record = fields.Char(string='影响记录', readonly=True)
+ workorder_id = fields.Many2one('mrp.workorder', string='工单')
+
+ # @api.model
+ # def create(self, values):
+ # try:
+ # values['order_code'] = self.env['ir.sequence'].next_by_code('sf_machine_connect.delivery.record')
+ # stock = self.env['sunrise.u.stock']
+ # if 'order_items' in values.keys():
+ # for item in values['order_items']:
+ # stock_commodity = stock.search([('commodity', '=', item[2]['commodity'])])
+ # stock_commodity.amount += item[2]['amount']
+ # return super().create(values)
+ # except:
+ # raise Exception('b_purchase_order.py:create()')
+
diff --git a/sf_machine_connect/security/ir.model.access.csv b/sf_machine_connect/security/ir.model.access.csv
index 97e855f9..cfd49500 100644
--- a/sf_machine_connect/security/ir.model.access.csv
+++ b/sf_machine_connect/security/ir.model.access.csv
@@ -1,3 +1,5 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_up_select_wizard,up.select.wizard,model_up_select_wizard,base.group_user,1,1,1,1
+access_delivery_record,delivery.record,model_delivery_record,base.group_user,1,1,1,1
+access_mrp_workorder,mrp.workorder,model_mrp_workorder,base.group_user,1,1,1,1
diff --git a/sf_machine_connect/views/cnc.xml b/sf_machine_connect/views/cnc.xml
deleted file mode 100644
index 1883d496..00000000
--- a/sf_machine_connect/views/cnc.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
- sf.cnc.tree
- sf.cnc.processing
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/sf_machine_connect/views/compensation.xml b/sf_machine_connect/views/compensation.xml
index 54652138..098af5fd 100644
--- a/sf_machine_connect/views/compensation.xml
+++ b/sf_machine_connect/views/compensation.xml
@@ -22,8 +22,7 @@
+ class="btn-primary" context="{'default_workorder_id': id}"/>
diff --git a/sf_machine_connect/views/default_delivery.xml b/sf_machine_connect/views/default_delivery.xml
new file mode 100644
index 00000000..832ba38c
--- /dev/null
+++ b/sf_machine_connect/views/default_delivery.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ delivery.record.tree
+ delivery.record
+
+
+
+
+
+
+
+
+
+
+ delivery.record.tree
+ delivery.record
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sf_machine_connect/views/delivery_record.xml b/sf_machine_connect/views/delivery_record.xml
index b62202e0..29bf5daa 100644
--- a/sf_machine_connect/views/delivery_record.xml
+++ b/sf_machine_connect/views/delivery_record.xml
@@ -8,25 +8,25 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sf_machine_connect/views/ftp_button.xml b/sf_machine_connect/views/ftp_button.xml
index 17924377..b5b3a21b 100644
--- a/sf_machine_connect/views/ftp_button.xml
+++ b/sf_machine_connect/views/ftp_button.xml
@@ -15,9 +15,10 @@
-
+
+
+
+
diff --git a/sf_machine_connect/views/project_sequence.xml b/sf_machine_connect/views/project_sequence.xml
new file mode 100644
index 00000000..c314362e
--- /dev/null
+++ b/sf_machine_connect/views/project_sequence.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ Test
+ sf_machine_connect.delivery.record
+ T%(range_year)s
+ 4
+
+
+
+
\ No newline at end of file
diff --git a/sf_machine_connect/wizard/action_up.py b/sf_machine_connect/wizard/action_up.py
index 152a1684..bec8493d 100644
--- a/sf_machine_connect/wizard/action_up.py
+++ b/sf_machine_connect/wizard/action_up.py
@@ -24,7 +24,6 @@ class UpSelectWizard(models.TransientModel):
readonly=True)
program_ids = fields.Many2many('sf.cnc.processing', string='程序列表')
- program_name = []
def confirm_up(self):
@@ -33,8 +32,9 @@ class UpSelectWizard(models.TransientModel):
username = self.workcenter_id.machine_tool_id.ftp_num
pwd = self.workcenter_id.machine_tool_id.ftp_pwd
remote_path = self.workcenter_id.machine_tool_id.ftp_remote_path
- print(host, port, username, pwd, remote_path)
- ftp = ftp_operate.FtpController(host, port, username, pwd)
+ # print(host, port, username, pwd, remote_path)
+ # ftp = ftp_operate.FtpController(host, port, username, pwd)
+ sequence_collect = []
try:
# 给文件名
begin_name1 = self.program_ids[0].cnc_id.display_name.split('-')
@@ -45,28 +45,34 @@ class UpSelectWizard(models.TransientModel):
for item in self.program_ids:
# print(item.program_name)
# print(item.cnc_id)
+ sequence_collect.append(item.sequence_number)
a = item.cnc_id
print(a.display_name)
- _logger.info(a.public)
- _logger.info(a.display_name)
- datas = base64.standard_b64decode(a.datas)
- # print(datas)
- file_path_local = '{}/{}'.format('/nc2machine', final_name)
- # print(file_path_local)
-
- # 本地测试合并下发
- # file_path_local = '{}/{}'.format('D:\\jikimo', a.display_name)
- # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
- file_path_remote = '{}\{}'.format(remote_path, final_name)
- # 合并文件
- with open(file_path_local, mode='ab+') as file:
- file.write(datas)
-
- # 存在本地的文件下发到机床
- _logger.info("==========存在服务器成功,准备下发===========")
- ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
- # 下发成功标识
- item.button_state = True
+ # _logger.info(a.public)
+ # _logger.info(a.display_name)
+ # datas = base64.standard_b64decode(a.datas)
+ # file_path_local = '{}/{}'.format('/nc2machine', final_name)
+ #
+ # # 本地测试合并下发
+ # # file_path_local = '{}/{}'.format('D:\\jikimo', a.display_name)
+ # # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
+ # file_path_remote = '{}\{}'.format(remote_path, final_name)
+ # # 合并文件
+ # with open(file_path_local, mode='ab+') as file:
+ # file.write(datas)
+ #
+ # # 存在本地的文件下发到机床
+ # _logger.info("==========存在服务器成功,准备下发===========")
+ # # ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
+ # # # 下发成功标识
+ # # item.button_state = True
+ up_time = str(datetime.now())
+ sequence_str = ','.join(sequence_collect)
+ self.workorder_id.delivery_records.create({
+ 'delivery_type': '合并下发',
+ 'delivery_time': up_time,
+ 'influence_record': sequence_str,
+ })
_logger.info("==============合并下发成功==============")
except Exception as e:
_logger.info("=====================================", e)
diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml
index 3529b6a6..00d6ac42 100644
--- a/sf_manufacturing/views/mrp_workorder_view.xml
+++ b/sf_manufacturing/views/mrp_workorder_view.xml
@@ -51,7 +51,7 @@
- false
+ False
From 6ae0abac94d17e9882a5a92ef69f7d2a43025225 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Fri, 24 Feb 2023 17:47:28 +0800
Subject: [PATCH 5/9] =?UTF-8?q?=E4=B8=89=E7=A7=8D=E4=B8=8B=E5=8F=91?=
=?UTF-8?q?=E6=96=B9=E5=BC=8F=E5=9D=87=E5=8F=AF=E8=A2=AB=E8=AE=B0=E5=BD=95?=
=?UTF-8?q?=EF=BC=8C=E6=9C=AC=E5=9C=B0=E6=B5=8B=E8=AF=95=E6=88=90=E5=8A=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_machine_connect/models/ftp_client.py | 15 ++++++++++++---
sf_machine_connect/views/ftp_button.xml | 6 +++---
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/sf_machine_connect/models/ftp_client.py b/sf_machine_connect/models/ftp_client.py
index 63648e67..c0465afa 100644
--- a/sf_machine_connect/models/ftp_client.py
+++ b/sf_machine_connect/models/ftp_client.py
@@ -95,11 +95,18 @@ class FtpButton(models.Model):
# ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
# _logger.info("=====================22================")
up_time = str(datetime.now())
- self.workorder_id.delivery_records.create({
+
+ self.env['delivery.record'].create({
+ 'workorder_id': self.workorder_id.id,
'delivery_type': '单个下发',
- 'delivery_time': 'up_time',
- 'influence_record': 'self.sequence_number',
+ 'delivery_time': up_time,
+ 'influence_record': self.sequence_number,
})
+ # self.workorder_id.delivery_records.sudo().create({
+ # 'delivery_type': '单个下发',
+ # 'delivery_time': 'up_time',
+ # 'influence_record': 'self.sequence_number',
+ # })
except Exception as e:
_logger.info("=====================================", e)
raise UserError('NC下发执行超时, 请检查下发状态')
@@ -369,6 +376,8 @@ class DeliveryRecord(models.Model):
delivery_time = fields.Char(string='下发时间', readonly=True)
influence_record = fields.Char(string='影响记录', readonly=True)
workorder_id = fields.Many2one('mrp.workorder', string='工单')
+ sf_cnc_processing_id = fields.Many2one('sf.cnc.processing', string='NC')
+
# @api.model
# def create(self, values):
diff --git a/sf_machine_connect/views/ftp_button.xml b/sf_machine_connect/views/ftp_button.xml
index b5b3a21b..6e20e0d0 100644
--- a/sf_machine_connect/views/ftp_button.xml
+++ b/sf_machine_connect/views/ftp_button.xml
@@ -14,12 +14,12 @@
+ ("user_permissions","!=",True)]}' optional="hide"/>
-
-
+
+
From 8247acb79a60a541c1f17e192c89d93e9e45cb06 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Mon, 27 Feb 2023 09:43:24 +0800
Subject: [PATCH 6/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?=EF=BC=8C=E6=81=A2=E5=A4=8D=E5=B1=8F=E8=94=BD=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?=EF=BC=8C=E5=87=86=E5=A4=87=E5=8E=BB=E6=B5=8B=E8=AF=95=E6=96=B0?=
=?UTF-8?q?=E7=9A=84NC=E4=B8=8B=E5=8F=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_machine_connect/models/ftp_client.py | 144 +++++++++---------------
sf_machine_connect/wizard/action_up.py | 129 ++++-----------------
2 files changed, 72 insertions(+), 201 deletions(-)
diff --git a/sf_machine_connect/models/ftp_client.py b/sf_machine_connect/models/ftp_client.py
index c0465afa..c03ea39e 100644
--- a/sf_machine_connect/models/ftp_client.py
+++ b/sf_machine_connect/models/ftp_client.py
@@ -41,20 +41,6 @@ class FtpButton(models.Model):
else:
workorder.user_permissions = False
- def pri(self):
- """
- 一个测试函数,用于检测能否从”获取cnc程序“处获得NC代码文件
- :return:
- """
- s = self.cnc_id
- s1 = self.cnc_id._filestore()
- print(s1)
- v = self.cnc_id.display_name
- a = self.cnc_id.datas
- print(v)
- print(a)
- ftp_operate.FtpController.prin(self)
-
def up(self):
"""
此函数用于将NC代码下发到机床
@@ -63,37 +49,34 @@ class FtpButton(models.Model):
# 点击下发按钮自动补偿三元检测偏差值
try:
- # try:
- # if self.sequence_number == '1':
- # self.check_compensation_before_up()
- # except Exception:
- # raise UserError("补偿值写入执行超时,请检查机床状态或者写入状态")
- #
- # # host="192.168.2.158", port=8080, username="MITSUBISHI", password="CNC"
- # host = self.workorder_id.workcenter_id.machine_tool_id.ftp_host
- # port = self.workorder_id.workcenter_id.machine_tool_id.ftp_port
- # username = self.workorder_id.workcenter_id.machine_tool_id.ftp_num
- # pwd = self.workorder_id.workcenter_id.machine_tool_id.ftp_pwd
- # remote_path = self.workorder_id.workcenter_id.machine_tool_id.ftp_remote_path
- # print(host, port, username, pwd, remote_path)
- # ftp = ftp_operate.FtpController(host, port, username, pwd)
- # # ftp.delAllfile('C://Users//马广威//Desktop//ftp')
+ try:
+ if self.sequence_number == '1':
+ self.check_compensation_before_up()
+ except Exception:
+ raise UserError("补偿值写入执行超时,请检查机床状态或者写入状态")
+
+ # host="192.168.2.158", port=8080, username="MITSUBISHI", password="CNC"
+ host = self.workorder_id.workcenter_id.machine_tool_id.ftp_host
+ port = self.workorder_id.workcenter_id.machine_tool_id.ftp_port
+ username = self.workorder_id.workcenter_id.machine_tool_id.ftp_num
+ pwd = self.workorder_id.workcenter_id.machine_tool_id.ftp_pwd
+ remote_path = self.workorder_id.workcenter_id.machine_tool_id.ftp_remote_path
+ print(host, port, username, pwd, remote_path)
+ ftp = ftp_operate.FtpController(host, port, username, pwd)
+ # ftp.delAllfile('C://Users//马广威//Desktop//ftp')
a = self.cnc_id
- # _logger.info(a.public)
- # _logger.info(a.display_name)
- # datas = base64.standard_b64decode(a.datas)
- #
- # # file_path = '{}\{}\{}'.format(a._filestore(), a.store_fname.split('/'[0]), a.display_name)
- # file_path_local = '{}/{}'.format('/nc2machine', a.display_name)
- # # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
- # file_path_remote = '{}\{}'.format(remote_path, a.display_name)
- #
- # with open(file_path_local, mode='wb+') as file:
- # file.write(datas)
- # # 存在本地的文件下发到机床
- # _logger.info("=====================11================")
- # ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
- # _logger.info("=====================22================")
+ datas = base64.standard_b64decode(a.datas)
+
+ # file_path = '{}\{}\{}'.format(a._filestore(), a.store_fname.split('/'[0]), a.display_name)
+ file_path_local = '{}/{}'.format('/nc2machine', a.display_name)
+ # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
+ file_path_remote = '{}\{}'.format(remote_path, a.display_name)
+
+ with open(file_path_local, mode='wb+') as file:
+ file.write(datas)
+ # 存在本地的文件下发到机床
+ ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
+ _logger.info("======%s下发成功======" % a.display_name)
up_time = str(datetime.now())
self.env['delivery.record'].create({
@@ -274,6 +257,7 @@ class WorkCenterBarcode(models.Model):
此函数用于将NC代码全部下发到机床
:return:
"""
+ # 一键下发前删除机床上的全部程序
# try:
# filepath = '/nc2machine'
# del_list = os.listdir(filepath)
@@ -285,41 +269,36 @@ class WorkCenterBarcode(models.Model):
# except Exception as e:
# _logger.info("=====================================", e)
# raise UserError('程序删除失败,请重试')
- # # host="192.168.2.158", port=8080, username="MITSUBISHI", password="CNC"
+ # host="192.168.2.158", port=8080, username="MITSUBISHI", password="CNC"
sequence_collect = []
- # host = self.workcenter_id.machine_tool_id.ftp_host
- # port = self.workcenter_id.machine_tool_id.ftp_port
- # username = self.workcenter_id.machine_tool_id.ftp_num
- # pwd = self.workcenter_id.machine_tool_id.ftp_pwd
- # remote_path = self.workcenter_id.machine_tool_id.ftp_remote_path
- # print(host, port, username, pwd, remote_path)
- # ftp = ftp_operate.FtpController(host, port, username, pwd)
- # # ftp.delAllfile('C://Users//马广威//Desktop//ftp')
+ host = self.workcenter_id.machine_tool_id.ftp_host
+ port = self.workcenter_id.machine_tool_id.ftp_port
+ username = self.workcenter_id.machine_tool_id.ftp_num
+ pwd = self.workcenter_id.machine_tool_id.ftp_pwd
+ remote_path = self.workcenter_id.machine_tool_id.ftp_remote_path
+ print(host, port, username, pwd, remote_path)
+ ftp = ftp_operate.FtpController(host, port, username, pwd)
try:
for item in self.cnc_ids:
a = item.cnc_id
- print(a.display_name)
sequence_collect.append(item.sequence_number)
- # _logger.info(a.public)
- # _logger.info(a.display_name)
- # datas = base64.standard_b64decode(a.datas)
- #
- # # file_path = '{}\{}\{}'.format(a._filestore(), a.store_fname.split('/'[0]), a.display_name)
- # file_path_local = '{}/{}'.format('/nc2machine', a.display_name)
- # # 本地测试一键下发
- # # file_path_local = '{}/{}'.format('D:\\jikimo', a.display_name)
- # # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
- # file_path_remote = '{}\{}'.format(remote_path, a.display_name)
- #
- # with open(file_path_local, mode='wb+') as file:
- # file.write(datas)
- # # 存在本地的文件下发到机床
- # _logger.info("=====================11================")
- # ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
- # item.button_state = True
+ datas = base64.standard_b64decode(a.datas)
+ # file_path = '{}\{}\{}'.format(a._filestore(), a.store_fname.split('/'[0]), a.display_name)
+ file_path_local = '{}/{}'.format('/nc2machine', a.display_name)
+ # 本地测试一键下发
+ # file_path_local = '{}/{}'.format('D:\\jikimo', a.display_name)
+ # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
+ file_path_remote = '{}\{}'.format(remote_path, a.display_name)
+
+ with open(file_path_local, mode='wb+') as file:
+ file.write(datas)
+ # 存在本地的文件下发到机床
+ ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
+ _logger.info("======%s下发成功======" % a.display_name)
+ item.button_state = True
+ # 增加一键下发记录
up_time = str(datetime.now())
sequence_str = ','.join(sequence_collect)
-
self.delivery_records.create({
'delivery_type': '一键下发',
'delivery_time': up_time,
@@ -329,8 +308,6 @@ class WorkCenterBarcode(models.Model):
except Exception as e:
_logger.info("=====================================", e)
raise UserError('NC下发执行超时, 请检查下发状态')
- # # 下发都执行完毕后,按钮标志位变为true
- # self.cnc_ids.button_state = True
def get__state(self):
pay_time = str(datetime.now())
@@ -342,34 +319,17 @@ class WorkCenterBarcode(models.Model):
'state': '待付款',
# 'pay_time': pay_time,
# 'get_order_sf': 21,
-
},
}
# res_str = json.dumps(vals)
url = 'https://bfm.cs.jikimo.com/api/get/state'
requests.post(url, json=json, data=None)
- def process_control(self):
-
- if self.routing_type == '获取CNC加工程序' and self.state == '进行中':
- json = {
- 'params': {
- 'model_name': 'jikimo.process.order',
- 'field_name': 'name',
- 'default_code': 'PO-2022-1123-0014',
- 'state': '加工中',
- },
- }
- url = 'https://bfm.cs.jikimo.com/api/get/state'
- requests.post(url, json=json, data=None)
-
-
class DeliveryRecord(models.Model):
"""
扫码托盘码可查到制造订单,由制造订单查工单
"""
- # _inherit = "mrp.workorder"
_name = "delivery.record"
delivery_type = fields.Char(string='下发方式', readonly=True)
@@ -378,7 +338,6 @@ class DeliveryRecord(models.Model):
workorder_id = fields.Many2one('mrp.workorder', string='工单')
sf_cnc_processing_id = fields.Many2one('sf.cnc.processing', string='NC')
-
# @api.model
# def create(self, values):
# try:
@@ -391,4 +350,3 @@ class DeliveryRecord(models.Model):
# return super().create(values)
# except:
# raise Exception('b_purchase_order.py:create()')
-
diff --git a/sf_machine_connect/wizard/action_up.py b/sf_machine_connect/wizard/action_up.py
index bec8493d..554f4b41 100644
--- a/sf_machine_connect/wizard/action_up.py
+++ b/sf_machine_connect/wizard/action_up.py
@@ -32,8 +32,8 @@ class UpSelectWizard(models.TransientModel):
username = self.workcenter_id.machine_tool_id.ftp_num
pwd = self.workcenter_id.machine_tool_id.ftp_pwd
remote_path = self.workcenter_id.machine_tool_id.ftp_remote_path
- # print(host, port, username, pwd, remote_path)
- # ftp = ftp_operate.FtpController(host, port, username, pwd)
+ print(host, port, username, pwd, remote_path)
+ ftp = ftp_operate.FtpController(host, port, username, pwd)
sequence_collect = []
try:
# 给文件名
@@ -48,24 +48,25 @@ class UpSelectWizard(models.TransientModel):
sequence_collect.append(item.sequence_number)
a = item.cnc_id
print(a.display_name)
- # _logger.info(a.public)
- # _logger.info(a.display_name)
- # datas = base64.standard_b64decode(a.datas)
- # file_path_local = '{}/{}'.format('/nc2machine', final_name)
- #
- # # 本地测试合并下发
- # # file_path_local = '{}/{}'.format('D:\\jikimo', a.display_name)
- # # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
- # file_path_remote = '{}\{}'.format(remote_path, final_name)
- # # 合并文件
- # with open(file_path_local, mode='ab+') as file:
- # file.write(datas)
- #
- # # 存在本地的文件下发到机床
- # _logger.info("==========存在服务器成功,准备下发===========")
- # # ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
- # # # 下发成功标识
- # # item.button_state = True
+ _logger.info(a.public)
+ _logger.info(a.display_name)
+ datas = base64.standard_b64decode(a.datas)
+ file_path_local = '{}/{}'.format('/nc2machine', final_name)
+
+ # 本地测试合并下发
+ # file_path_local = '{}/{}'.format('D:\\jikimo', a.display_name)
+ # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
+ file_path_remote = '{}\{}'.format(remote_path, final_name)
+ # 合并文件
+ with open(file_path_local, mode='ab+') as file:
+ file.write(datas)
+
+ # 存在本地的文件下发到机床
+ _logger.info("==========存在服务器成功,准备下发===========")
+ ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
+ _logger.info("======%s下发成功======" % a.display_name)
+ # 下发成功标识
+ item.button_state = True
up_time = str(datetime.now())
sequence_str = ','.join(sequence_collect)
self.workorder_id.delivery_records.create({
@@ -78,91 +79,3 @@ class UpSelectWizard(models.TransientModel):
_logger.info("=====================================", e)
raise UserError('NC下发执行超时, 请检查下发状态')
- # cnc_id1 = fields.Many2one('ir.attachment', compute='_compute_cnc_id')
- # sequence_number1 = fields.Char('序号', compute='_compute_cnc_id', default='0')
- # program_name1 = fields.Char('程序名', compute='_compute_cnc_id')
- # cutting_tool_name1 = fields.Char('刀具名称', compute='_compute_cnc_id')
- # cutting_tool_no1 = fields.Char('刀号', compute='_compute_cnc_id')
- # processing_type1 = fields.Char('加工类型', compute='_compute_cnc_id')
- # margin_x_y1 = fields.Char('余量_X/Y', compute='_compute_cnc_id')
- # margin_z1 = fields.Char('余量_Z', compute='_compute_cnc_id')
- # depth_of_processing_z1 = fields.Char('加工深度(Z)', compute='_compute_cnc_id')
- # cutting_tool_extension_length1 = fields.Char('刀具伸出长度', compute='_compute_cnc_id')
- # cutting_tool_handle_type1 = fields.Char('刀柄型号', compute='_compute_cnc_id')
- # estimated_processing_time1 = fields.Char('预计加工时间', compute='_compute_cnc_id')
- # remark1 = fields.Text('备注', compute='_compute_cnc_id')
- # cnc_id = fields.Many2one('sf.cnc.processing', '工单')
- # num = fields.Integer('索引', default=0)
- # cnc_id1 = fields.Many2one('ir.attachment')
- # sequence_number1 = fields.Char('序号', compute='_compute_cnc_id', default='1')
- # program_name1 = fields.Char('程序名')
- # cutting_tool_name1 = fields.Char('刀具名称')
- # cutting_tool_no1 = fields.Char('刀号')
- # processing_type1 = fields.Char('加工类型')
- # margin_x_y1 = fields.Char('余量_X/Y')
- # margin_z1 = fields.Char('余量_Z')
- # depth_of_processing_z1 = fields.Char('加工深度(Z)')
- # cutting_tool_extension_length1 = fields.Char('刀具伸出长度')
- # cutting_tool_handle_type1 = fields.Char('刀柄型号')
- # estimated_processing_time1 = fields.Char('预计加工时间')
- # remark1 = fields.Text('备注')
- # cnc_id = fields.Many2one('sf.cnc.processing', '工单')
- # num = fields.Integer('索引', default=0)
- # print(11111111111111111111111111111111111111111111111)
- # # @api.depends('program_ids')
- # def _compute_cnc_id(self):
- # print(222222222222222222222222222222222222222222)
- # workorder_id = self.env.context.get('default_workorder_id')
- # workorder = self.env['mrp.workorder'].sudo().search([('id', '=', workorder_id)])
- # # self.workcenter_id = workorder.workcent_id
- # print(workorder_id)
- #
- # lines = []
- # print(lines)
- # for item in workorder.cnc_ids:
- # # lines.append((4,item.id,0))
- # lines.append((4, item.id, 0))
- # print(lines)
- #
- # # print(self.cnc_id1, self.sequence_number1, self.program_name1, self.processing_type1,
- # # self.cutting_tool_handle_type1
- # # , self.cutting_tool_extension_length1, self.margin_z1, self.margin_z1, self.depth_of_processing_z1,
- # # self.cutting_tool_no1, self.cutting_tool_name1, self.estimated_processing_time1, self.remark1)
- # # else:
- # # self.write({
- # #
- # # # 'cnc_id1': item.cnc_id or '',
- # # # 'sequence_number1': item.sequence_number or '',
- # # # 'program_name1': item.program_name or '',
- # # # 'cutting_tool_name1': item.cutting_tool_name or '',
- # # # 'cutting_tool_no1': item.cutting_tool_no or '',
- # # # 'processing_type1': item.processing_type or '',
- # # # 'margin_x_y1': item.margin_x_y or '',
- # # # 'margin_z1': item.margin_z or '',
- # # # 'depth_of_processing_z1': item.depth_of_processing_z or '',
- # # # 'cutting_tool_extension_length1': item.cutting_tool_extension_length or '',
- # # # 'cutting_tool_handle_type1': item.cutting_tool_handle_type or '',
- # # # 'estimated_processing_time1': item.estimated_processing_time or '',
- # # # 'remark1': item.remark or '',
- # # 'id': item.sequence_number,
- # # 'cnc_id1': item.cnc_id,
- # # 'sequence_number1': item.sequence_number,
- # # 'program_name1': item.program_name,
- # # 'cutting_tool_name1': item.cutting_tool_name,
- # # 'cutting_tool_no1': item.cutting_tool_no,
- # # 'processing_type1': item.processing_type,
- # # 'margin_x_y1': item.margin_x_y,
- # # 'margin_z1': item.margin_z,
- # # 'depth_of_processing_z1': item.depth_of_processing_z,
- # # 'cutting_tool_extension_length1': item.cutting_tool_extension_length,
- # # 'cutting_tool_handle_type1': item.cutting_tool_handle_type,
- # # 'estimated_processing_time1': item.estimated_processing_time,
- # # 'remark1': item.remark,
- # # })
- # # print(self.cnc_id1, self.sequence_number1, self.program_name1, self.processing_type1,
- # # self.cutting_tool_handle_type1
- # # , self.cutting_tool_extension_length1, self.margin_z1, self.margin_z1,
- # # self.depth_of_processing_z1,
- # # self.cutting_tool_no1, self.cutting_tool_name1, self.estimated_processing_time1, self.remark1)
- #
- # self.update({'program_ids': lines})
From 57d403d7544f56b9ca3253da9ab1295a5423a83a Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Mon, 27 Feb 2023 09:52:17 +0800
Subject: [PATCH 7/9] =?UTF-8?q?=20=E4=B8=8B=E5=8F=91=E5=AE=8C=E6=88=90?=
=?UTF-8?q?=E5=90=8E=EF=BC=8C=E5=85=B3=E9=97=ADftp=E8=BF=9E=E6=8E=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_machine_connect/models/ftp_client.py | 4 +++-
sf_machine_connect/models/ftp_operate.py | 7 +++++++
sf_machine_connect/wizard/action_up.py | 2 ++
3 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/sf_machine_connect/models/ftp_client.py b/sf_machine_connect/models/ftp_client.py
index c03ea39e..6b084b21 100644
--- a/sf_machine_connect/models/ftp_client.py
+++ b/sf_machine_connect/models/ftp_client.py
@@ -77,8 +77,9 @@ class FtpButton(models.Model):
# 存在本地的文件下发到机床
ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
_logger.info("======%s下发成功======" % a.display_name)
- up_time = str(datetime.now())
+ ftp.close_ftp()
+ up_time = str(datetime.now())
self.env['delivery.record'].create({
'workorder_id': self.workorder_id.id,
'delivery_type': '单个下发',
@@ -296,6 +297,7 @@ class WorkCenterBarcode(models.Model):
ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
_logger.info("======%s下发成功======" % a.display_name)
item.button_state = True
+ ftp.close_ftp()
# 增加一键下发记录
up_time = str(datetime.now())
sequence_str = ','.join(sequence_collect)
diff --git a/sf_machine_connect/models/ftp_operate.py b/sf_machine_connect/models/ftp_operate.py
index e60d5807..315fa765 100644
--- a/sf_machine_connect/models/ftp_operate.py
+++ b/sf_machine_connect/models/ftp_operate.py
@@ -78,6 +78,13 @@ class FtpController:
with open(localpath, mode='rb') as file:
self.ftp.storbinary('STOR ' + remotepath, file, bufsize)
+ # 关闭连接
+ def close_ftp(self):
+ """
+ 下发完成后关闭ftp连接,减少资源损耗
+ """
+ self.ftp.close()
+
def delAllfile(self, ftppath):
"""
diff --git a/sf_machine_connect/wizard/action_up.py b/sf_machine_connect/wizard/action_up.py
index 554f4b41..4975409e 100644
--- a/sf_machine_connect/wizard/action_up.py
+++ b/sf_machine_connect/wizard/action_up.py
@@ -67,6 +67,8 @@ class UpSelectWizard(models.TransientModel):
_logger.info("======%s下发成功======" % a.display_name)
# 下发成功标识
item.button_state = True
+ ftp.close_ftp()
+
up_time = str(datetime.now())
sequence_str = ','.join(sequence_collect)
self.workorder_id.delivery_records.create({
From dd9d20ea2a0663fabd9433af368891863f39bd02 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Mon, 27 Feb 2023 11:11:23 +0800
Subject: [PATCH 8/9] =?UTF-8?q?=E6=9B=B4=E6=94=B9python=E5=9C=B0=E5=9D=80?=
=?UTF-8?q?=E8=A7=A3=E6=9E=90=E5=BA=93?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_bf_connect/models/jd_eclp.py | 26 ++++++++++----------------
1 file changed, 10 insertions(+), 16 deletions(-)
diff --git a/sf_bf_connect/models/jd_eclp.py b/sf_bf_connect/models/jd_eclp.py
index 4733f2a6..e4c769bb 100644
--- a/sf_bf_connect/models/jd_eclp.py
+++ b/sf_bf_connect/models/jd_eclp.py
@@ -1,11 +1,11 @@
-from odoo import api, fields, models, SUPERUSER_ID, _
-from odoo.exceptions import ValidationError
-from datetime import datetime
-import jionlp as jio
+import cpca
import logging
-from odoo.exceptions import UserError
-import requests
import base64
+import requests
+from datetime import datetime
+from odoo.exceptions import UserError
+from odoo.exceptions import ValidationError
+from odoo import api, fields, models, SUPERUSER_ID, _
_logger = logging.getLogger(__name__)
@@ -37,17 +37,16 @@ class JdEclp(models.Model):
def query_bill_pdf(self):
self.bill = self.env['ir.attachment'].sudo().search([('name', '=', self.carrier_tracking_ref)])
-
@api.depends('origin')
def _truck_info(self):
sale_order_id = self.env['sale.order'].search([('name', '=', self.origin)])
raw_addres = sale_order_id.address_of_delivery
self.receiverName = sale_order_id.person_of_delivery
self.receiverMobile = sale_order_id.telephone_of_delivery
- self.receiverProvinceName = jio.parse_location(raw_addres)['province']
- self.receiverCityName = jio.parse_location(raw_addres)['city']
- self.receiverCountyName = jio.parse_location(raw_addres)['county']
- self.receiverTownName = jio.parse_location(raw_addres)['detail']
+ self.receiverProvinceName = cpca.transform(raw_addres).values.tolist()[0][0]
+ self.receiverCityName = cpca.transform(raw_addres).values.tolist()[0][1]
+ self.receiverCountyName = cpca.transform(raw_addres).values.tolist()[0][2]
+ self.receiverTownName = cpca.transform(raw_addres).values.tolist()[0][3]
# self.receiverMobile = sale_order_id.telephone_of_delivery
def create_order(self):
@@ -91,12 +90,10 @@ class JdEclp(models.Model):
# _logger.info('调用成功2', response.json()['result']['wbNo'])
self.carrier_tracking_ref = response.json()['result']['wbNo']
-
# else:
# raise UserError("选择京东物流才能下单呦")
def get_bill(self):
-
json1 = {
'params': {
'no': self.origin,
@@ -127,6 +124,3 @@ class JdEclp(models.Model):
_logger.info(attachment)
# _logger.info(attachment.datas)
# _logger.info(attachment.datas_fname)
-
-
-
From 659651b930456cb096e9577e921ee3261f24d53e Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Mon, 27 Feb 2023 14:52:20 +0800
Subject: [PATCH 9/9] =?UTF-8?q?=E5=A2=9E=E5=8A=A0sf.cnc.processing?=
=?UTF-8?q?=E7=BC=BA=E7=9C=81=E8=A7=86=E5=9B=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_machine_connect/__manifest__.py | 4 +--
sf_machine_connect/views/compensation.xml | 7 +++--
sf_machine_connect/views/default_delivery.xml | 27 +++++++++++++++++--
3 files changed, 32 insertions(+), 6 deletions(-)
diff --git a/sf_machine_connect/__manifest__.py b/sf_machine_connect/__manifest__.py
index 89389496..af66a542 100644
--- a/sf_machine_connect/__manifest__.py
+++ b/sf_machine_connect/__manifest__.py
@@ -19,16 +19,16 @@
'security/ir.model.access.csv',
'wizard/up_select.xml',
'views/default_delivery.xml',
- 'views/delivery_record.xml',
+ 'views/ftp_button.xml',
'views/compensation.xml',
- 'views/ftp_button.xml',
'views/SfWorkOrderBarcodes.xml',
'views/WorkCenterBarcodes.xml',
'views/Stock_picking_Barcodes.xml',
'views/machine_monitor.xml',
'views/machine_info_present.xml',
+ 'views/delivery_record.xml',
],
diff --git a/sf_machine_connect/views/compensation.xml b/sf_machine_connect/views/compensation.xml
index 098af5fd..8a82ea49 100644
--- a/sf_machine_connect/views/compensation.xml
+++ b/sf_machine_connect/views/compensation.xml
@@ -22,9 +22,12 @@
+ class="btn-primary" context="{'default_workorder_id': id}" attrs='{"invisible": ["|",
+ ("state","!=","progress"),("user_permissions","=",False)]}'/>
-
+
diff --git a/sf_machine_connect/views/default_delivery.xml b/sf_machine_connect/views/default_delivery.xml
index 832ba38c..62f1fcdc 100644
--- a/sf_machine_connect/views/default_delivery.xml
+++ b/sf_machine_connect/views/default_delivery.xml
@@ -1,6 +1,29 @@
+
+
+ sf.cnc.processing.tree
+ sf.cnc.processing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
delivery.record.tree
delivery.record
@@ -13,8 +36,8 @@
-
- delivery.record.tree
+
+ delivery.record.form
delivery.record