From 98e13cba9977fa19e5b9f0e656e9fc7ad478044d Mon Sep 17 00:00:00 2001 From: guanhuan Date: Sat, 14 Sep 2024 17:45:00 +0800 Subject: [PATCH 01/18] =?UTF-8?q?=E5=91=98=E5=B7=A5=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BC=81=E5=BE=AEid=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_hr/__manifest__.py | 2 ++ sf_hr/data/cron_data.xml | 15 ++++++++++++ sf_hr/models/__init__.py | 2 ++ sf_hr/models/hr_employee.py | 26 ++++++++++++++++++++ sf_hr/models/res_config_setting.py | 30 +++++++++++++++++++++++ sf_hr/views/hr_employee.xml | 11 ++++++++- sf_hr/views/res_config_settings_views.xml | 28 +++++++++++++++++++++ 7 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 sf_hr/data/cron_data.xml create mode 100644 sf_hr/models/hr_employee.py create mode 100644 sf_hr/models/res_config_setting.py create mode 100644 sf_hr/views/res_config_settings_views.xml diff --git a/sf_hr/__manifest__.py b/sf_hr/__manifest__.py index aaf9cfc7..c0bd63ef 100644 --- a/sf_hr/__manifest__.py +++ b/sf_hr/__manifest__.py @@ -10,6 +10,8 @@ 'depends': ['hr'], 'data': [ 'views/hr_employee.xml', + 'views/res_config_settings_views.xml', + 'data/cron_data.xml', ], 'demo': [ ], diff --git a/sf_hr/data/cron_data.xml b/sf_hr/data/cron_data.xml new file mode 100644 index 00000000..4757b5c2 --- /dev/null +++ b/sf_hr/data/cron_data.xml @@ -0,0 +1,15 @@ + + + + 员工企微id同步 + + code + model._employee_info_sync() + 1 + days + -1 + + + + + \ No newline at end of file diff --git a/sf_hr/models/__init__.py b/sf_hr/models/__init__.py index 633f8661..ffe76391 100644 --- a/sf_hr/models/__init__.py +++ b/sf_hr/models/__init__.py @@ -1,2 +1,4 @@ # -*- coding: utf-8 -*- +from . import hr_employee +from . import res_config_setting diff --git a/sf_hr/models/hr_employee.py b/sf_hr/models/hr_employee.py new file mode 100644 index 00000000..8cf5595d --- /dev/null +++ b/sf_hr/models/hr_employee.py @@ -0,0 +1,26 @@ +import logging +import requests +from odoo import models, fields, api, _ + +_logger = logging.getLogger(__name__) + + +class JkmPracticeEmployee(models.Model): + _inherit = 'hr.employee' + _description = '员工信息' + + we_id = fields.Char(string='企微ID', index=True) + + def _employee_info_sync(self): + url = '/api/get/organization' + config = self.env['res.config.settings'].get_values() + ret = requests.post((config['ims_url'] + url), json={}, data={}) + result = ret.json()['result'] + if result['code'] == 200: + if result['employee_list']: + for employee_info in result['employee_list']: + if employee_info['work_email']: + self.sudo().search([('work_email', '=', employee_info['work_email'])]).write( + {'we_id': employee_info['we_id']}) + else: + logging.info('_employee_info_sync error:%s' % result['message']) diff --git a/sf_hr/models/res_config_setting.py b/sf_hr/models/res_config_setting.py new file mode 100644 index 00000000..57cbe5e4 --- /dev/null +++ b/sf_hr/models/res_config_setting.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +import logging +from odoo import api, fields, models + +_logger = logging.getLogger(__name__) + + +class ResIMSConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + ims_url = fields.Char('财务平台接口路径') + + @api.model + def get_values(self): + """ + 重载获取参数的方法,参数都存在系统参数中 + :return: + """ + values = super(ResIMSConfigSettings, self).get_values() + config = self.env['ir.config_parameter'].sudo() + ims_url = config.get_param('ims_url', default='') + values.update( + ims_url=ims_url, + ) + return values + + def set_values(self): + super(ResIMSConfigSettings, self).set_values() + ir_config = self.env['ir.config_parameter'].sudo() + ir_config.set_param("ims_url", self.ims_url or "") diff --git a/sf_hr/views/hr_employee.xml b/sf_hr/views/hr_employee.xml index a3db9076..c2b39112 100644 --- a/sf_hr/views/hr_employee.xml +++ b/sf_hr/views/hr_employee.xml @@ -7,7 +7,16 @@ - 1 + 1 + + + + + + + + + diff --git a/sf_hr/views/res_config_settings_views.xml b/sf_hr/views/res_config_settings_views.xml new file mode 100644 index 00000000..94de8b95 --- /dev/null +++ b/sf_hr/views/res_config_settings_views.xml @@ -0,0 +1,28 @@ + + + + + res.config.settings.finance.view.form.extend + res.config.settings + + + +
+

财务平台接口配置

+
+
+
+
+
+
+
+
+
+
+ + + + + From 258e3bdb9f1b2354202ae35d1a86935a0aca1a23 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Thu, 19 Sep 2024 09:03:07 +0800 Subject: [PATCH 02/18] =?UTF-8?q?=E4=B8=80=E8=88=AC=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E9=A1=B5=E5=A2=9E=E5=8A=A0=E9=87=8D=E6=96=B0=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=E6=96=87=E4=BB=B6=E9=85=8D=E7=BD=AE=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/res_config_settings_views.xml | 14 +++++++++++++- sf_manufacturing/models/res_config_setting.py | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/sf_machine_connect/views/res_config_settings_views.xml b/sf_machine_connect/views/res_config_settings_views.xml index fa3ba59c..b8a681a2 100644 --- a/sf_machine_connect/views/res_config_settings_views.xml +++ b/sf_machine_connect/views/res_config_settings_views.xml @@ -24,7 +24,7 @@

获取检测报告服务配置

-
+
@@ -38,6 +38,18 @@
+ +
+
+ +
+
+
+
+
+
+
diff --git a/sf_manufacturing/models/res_config_setting.py b/sf_manufacturing/models/res_config_setting.py index d6b029c6..a9c10912 100644 --- a/sf_manufacturing/models/res_config_setting.py +++ b/sf_manufacturing/models/res_config_setting.py @@ -5,14 +5,18 @@ class ResConfigSettings(models.TransientModel): _inherit = 'res.config.settings' is_agv_task_dispatch = fields.Boolean('是否下发AGV任务', default=False) + # 是否重新获取检测文件 + is_get_detection_file = fields.Boolean(string='重新获取检测文件', default=False) @api.model def get_values(self): values = super(ResConfigSettings, self).get_values() config = self.env['ir.config_parameter'].sudo() is_agv_task_dispatch = config.get_param('is_agv_task_dispatch') + is_get_detection_file = config.get_param('is_get_detection_file') values.update( is_agv_task_dispatch=is_agv_task_dispatch, + is_get_detection_file=is_get_detection_file ) return values @@ -20,3 +24,4 @@ class ResConfigSettings(models.TransientModel): super(ResConfigSettings, self).set_values() config = self.env['ir.config_parameter'].sudo() config.set_param("is_agv_task_dispatch", self.is_agv_task_dispatch or False) + config.set_param("is_get_detection_file", self.is_get_detection_file or False) From 27da7639b22f729bdeee5356f0b320803bf014c6 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Thu, 19 Sep 2024 09:04:05 +0800 Subject: [PATCH 03/18] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=89=AB=E7=A0=81?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E6=8C=89=E9=92=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_workorder.py | 10 ++++++++-- sf_manufacturing/views/mrp_workorder_view.xml | 12 ++++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 23fd8c79..98b902b3 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -603,6 +603,8 @@ class ResMrpWorkOrder(models.Model): print("(%.2f,%.2f)" % (x, y)) self.material_center_point = ("(%.2f,%.2f,%.2f)" % (x, y, z)) self.X_deviation_angle = jdz + logging.info("坯料中心点坐标:(%.2f,%.2f)" % (x, y)) + logging.info("X轴偏差度数:%.2f" % jdz) # 将补偿值写入CNC加工工单 workorder = self.env['mrp.workorder'].browse(self.ids) work = workorder.production_id.workorder_ids @@ -1183,8 +1185,10 @@ class ResMrpWorkOrder(models.Model): if not record.rfid_code and record.is_rework is False: raise UserError("请扫RFID码进行绑定") if record.is_rework is False: - if not record.material_center_point or record.X_deviation_angle <= 0: - raise UserError("坯料中心点为空或X偏差角度小于等于0") + if not record.material_center_point: + raise UserError("坯料中心点为空,请检查") + if record.X_deviation_angle <= 0: + raise UserError("X偏差角度小于等于0,请检查!本次计算的X偏差角度为:%s" % record.X_deviation_angle) record.process_state = '待加工' # record.write({'process_state': '待加工'}) record.production_id.process_state = '待加工' @@ -1565,6 +1569,8 @@ class SfWorkOrderBarcodes(models.Model): def on_barcode_scanned(self, barcode): logging.info('Rfid:%s' % barcode) + if 'O-CMD' in barcode: + return None workorder = self.env['mrp.workorder'].browse(self.ids) # workorder_preset = self.env['mrp.workorder'].search( # [('routing_type', '=', '装夹预调'), ('rfid_code', '=', barcode)]) diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml index bb451f51..d6d251fa 100644 --- a/sf_manufacturing/views/mrp_workorder_view.xml +++ b/sf_manufacturing/views/mrp_workorder_view.xml @@ -479,10 +479,10 @@
-
@@ -514,8 +514,8 @@ -
- + + + + @@ -37,9 +40,12 @@ - + + + + From 0cee6ebd77ea3f6714243f5ba7adf897846440e3 Mon Sep 17 00:00:00 2001 From: guanhuan Date: Thu, 19 Sep 2024 09:48:01 +0800 Subject: [PATCH 06/18] =?UTF-8?q?=E5=91=98=E5=B7=A5=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_hr/models/res_config_setting.py | 2 +- sf_hr/views/res_config_settings_views.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sf_hr/models/res_config_setting.py b/sf_hr/models/res_config_setting.py index 57cbe5e4..f0d6dae4 100644 --- a/sf_hr/models/res_config_setting.py +++ b/sf_hr/models/res_config_setting.py @@ -8,7 +8,7 @@ _logger = logging.getLogger(__name__) class ResIMSConfigSettings(models.TransientModel): _inherit = 'res.config.settings' - ims_url = fields.Char('财务平台接口路径') + ims_url = fields.Char('综合管理系统访问地址') @api.model def get_values(self): diff --git a/sf_hr/views/res_config_settings_views.xml b/sf_hr/views/res_config_settings_views.xml index 94de8b95..75ee6551 100644 --- a/sf_hr/views/res_config_settings_views.xml +++ b/sf_hr/views/res_config_settings_views.xml @@ -8,7 +8,7 @@
-

财务平台接口配置

+

综合管理系统接口配置

From fa2eb7b3cf00748993c1c5bc1235f864fd3c6cdc Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Thu, 19 Sep 2024 10:07:26 +0800 Subject: [PATCH 07/18] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=96=87=E4=BB=B6=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_workorder.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 98b902b3..7209a9bb 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -426,7 +426,8 @@ class ResMrpWorkOrder(models.Model): logging.info('local_file_path:%s' % local_file_path) remote_path = '/home/ftp/ftp_root/ThreeTest/XT/Before/' + local_filename logging.info('remote_path:%s' % remote_path) - if not ftp.file_exists(remote_path): + is_get_detection_file = self.env['ir.config_parameter'].sudo().get_param('is_get_detection_file') + if not is_get_detection_file: paload_data = { "filename": local_filename } From 47ad2410cff5acdbbd7b0092336a9699d8166354 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Thu, 19 Sep 2024 10:16:09 +0800 Subject: [PATCH 08/18] =?UTF-8?q?=E8=B0=83=E6=95=B4agv=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/res_config_setting.py | 15 +++++++++++ .../views/res_config_settings_views.xml | 26 +++++++++++++++++++ sf_mrs_connect/models/res_config_setting.py | 19 ++++---------- .../views/res_config_settings_views.xml | 23 +--------------- 4 files changed, 47 insertions(+), 36 deletions(-) diff --git a/sf_manufacturing/models/res_config_setting.py b/sf_manufacturing/models/res_config_setting.py index a9c10912..984ba223 100644 --- a/sf_manufacturing/models/res_config_setting.py +++ b/sf_manufacturing/models/res_config_setting.py @@ -4,6 +4,12 @@ from odoo import models, fields, api class ResConfigSettings(models.TransientModel): _inherit = 'res.config.settings' + agv_rcs_url = fields.Char(string='avg_rcs访问地址', + default='http://172.16.10.114:8182/rcms/services/rest/hikRpcService/genAgvSchedulingTask') + wbcode = fields.Char('地码') + agv_code = fields.Char(string='agv编号') + task_type_no = fields.Char('任务单类型编号') + is_agv_task_dispatch = fields.Boolean('是否下发AGV任务', default=False) # 是否重新获取检测文件 is_get_detection_file = fields.Boolean(string='重新获取检测文件', default=False) @@ -12,9 +18,15 @@ class ResConfigSettings(models.TransientModel): def get_values(self): values = super(ResConfigSettings, self).get_values() config = self.env['ir.config_parameter'].sudo() + agv_rcs_url = config.get_param('agv_rcs_url', default='') + wbcode = config.get_param('wbcode', default='') + agv_code = config.get_param('agv_code', default='') is_agv_task_dispatch = config.get_param('is_agv_task_dispatch') is_get_detection_file = config.get_param('is_get_detection_file') values.update( + agv_rcs_url=agv_rcs_url, + wbcode=wbcode, + agv_code=agv_code, is_agv_task_dispatch=is_agv_task_dispatch, is_get_detection_file=is_get_detection_file ) @@ -23,5 +35,8 @@ class ResConfigSettings(models.TransientModel): def set_values(self): super(ResConfigSettings, self).set_values() config = self.env['ir.config_parameter'].sudo() + config.set_param("agv_rcs_url", self.agv_rcs_url or "") + config.set_param("wbcode", self.wbcode or "") + config.set_param("agv_code", self.agv_code or "") config.set_param("is_agv_task_dispatch", self.is_agv_task_dispatch or False) config.set_param("is_get_detection_file", self.is_get_detection_file or False) diff --git a/sf_manufacturing/views/res_config_settings_views.xml b/sf_manufacturing/views/res_config_settings_views.xml index 89738492..4bedc262 100644 --- a/sf_manufacturing/views/res_config_settings_views.xml +++ b/sf_manufacturing/views/res_config_settings_views.xml @@ -6,6 +6,32 @@ res.config.settings + +
+

AGV参数配置

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
diff --git a/sf_mrs_connect/models/res_config_setting.py b/sf_mrs_connect/models/res_config_setting.py index c6f19502..f2829931 100644 --- a/sf_mrs_connect/models/res_config_setting.py +++ b/sf_mrs_connect/models/res_config_setting.py @@ -16,14 +16,11 @@ class ResConfigSettings(models.TransientModel): token = fields.Char(string='TOKEN', default='b811ac06-3f00-11ed-9aed-0242ac110003') sf_secret_key = fields.Char(string='密钥', default='wBmxej38OkErKhD6') sf_url = fields.Char(string='访问地址', default='https://sf.cs.jikimo.com') - agv_rcs_url = fields.Char(string='avg_rcs访问地址', - default='http://172.16.10.114:8182/rcms/services/rest/hikRpcService/genAgvSchedulingTask') + center_control_url = fields.Char(string='中控访问地址', default='http://172.16.21.50:8001') center_control_Authorization = fields.Char(string='中控访问认证') - wbcode = fields.Char('地码') - agv_code = fields.Char(string='agv编号') - task_type_no = fields.Char('任务单类型编号') + model_parser_url = fields.Char('特征识别路径') ftp_host = fields.Char(string='FTP的ip') ftp_port = fields.Char(string='FTP端口') @@ -103,9 +100,7 @@ class ResConfigSettings(models.TransientModel): token = config.get_param('token', default='') sf_secret_key = config.get_param('sf_secret_key', default='') sf_url = config.get_param('sf_url', default='') - agv_rcs_url = config.get_param('agv_rcs_url', default='') - wbcode = config.get_param('wbcode', default='') - agv_code = config.get_param('agv_code', default='') + center_control_url = config.get_param('center_control_url', default='') center_control_Authorization = config.get_param('center_control_Authorization', default='') ftp_host = config.get_param('ftp_host', default='') @@ -118,9 +113,7 @@ class ResConfigSettings(models.TransientModel): token=token, sf_secret_key=sf_secret_key, sf_url=sf_url, - agv_rcs_url=agv_rcs_url, - wbcode=wbcode, - agv_code=agv_code, + center_control_url=center_control_url, center_control_Authorization=center_control_Authorization, ftp_host=ftp_host, @@ -137,9 +130,7 @@ class ResConfigSettings(models.TransientModel): ir_config.set_param("token", self.token or "") ir_config.set_param("sf_secret_key", self.sf_secret_key or "") ir_config.set_param("sf_url", self.sf_url or "") - ir_config.set_param("agv_rcs_url", self.agv_rcs_url or "") - ir_config.set_param("wbcode", self.wbcode or "") - ir_config.set_param("agv_code", self.agv_code or "") + ir_config.set_param("center_control_url", self.center_control_url or "") ir_config.set_param("center_control_Authorization", self.center_control_Authorization or "") ir_config.set_param("ftp_host", self.ftp_host or "") diff --git a/sf_mrs_connect/views/res_config_settings_views.xml b/sf_mrs_connect/views/res_config_settings_views.xml index 651e6f15..a7327ed1 100644 --- a/sf_mrs_connect/views/res_config_settings_views.xml +++ b/sf_mrs_connect/views/res_config_settings_views.xml @@ -74,28 +74,7 @@
-
-

AGV参数配置

-
-
-
-
-
-
-
-
-
-
-
-
-
-
+

中控参数配置

From 5e86d6731617249138217607bb5bc9340ec80921 Mon Sep 17 00:00:00 2001 From: liaodanlong Date: Thu, 19 Sep 2024 13:42:52 +0800 Subject: [PATCH 09/18] =?UTF-8?q?bom=E6=B8=85=E5=8D=95=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_tool_management/models/jikimo_bom.py | 27 ++++++++++++--------- sf_tool_management/views/tool_inventory.xml | 26 ++++++++++++++++++-- 2 files changed, 39 insertions(+), 14 deletions(-) diff --git a/sf_tool_management/models/jikimo_bom.py b/sf_tool_management/models/jikimo_bom.py index 8453eb48..62138d77 100644 --- a/sf_tool_management/models/jikimo_bom.py +++ b/sf_tool_management/models/jikimo_bom.py @@ -50,7 +50,7 @@ class jikimo_bom(models.Model): def write(self, vals): # 在更新模型时记录旧的 Many2many ID 列表 - if 'product_ids' in vals: + if 'product_ids' in vals and not self.env.context.get('is_assembly_options'): old_product_counter = Counter(self.product_ids.ids) super(jikimo_bom, self).write(vals) new_product_counter = Counter(self.product_ids.ids) @@ -102,7 +102,7 @@ class jikimo_bom(models.Model): domains = domains + domain if index != 0: domains = ['|'] + domains - domains = domains + [('stock_move_count', '>', 0)] + domains = domains + [('stock_move_ids', '!=',False)] return domains def generate_bill_materials(self, assembly_options): @@ -117,7 +117,10 @@ class jikimo_bom(models.Model): domains = self.bom_product_domains(assembly_options) products = self.env['product.product'].search(domains) if products: - self.product_ids = [Command.set(products.ids)] + new_context = dict(self.env.context) + new_context['is_assembly_options'] = True + self.with_context(new_context).write({'product_ids': [Command.set(products.ids)]}) + # self.product_ids = [Command.set(products.ids)] class jikimo_bom_line(models.Model): @@ -130,15 +133,15 @@ class jikimo_bom_line(models.Model): class ProductProduct(models.Model): _inherit = 'product.product' _order = 'cutting_tool_material_id, cutting_tool_type_id' - stock_move_count = fields.Integer(string='stock_move count', compute='_compute_stock_move_count', store=True) - - @api.depends('stock_move_ids') - def _compute_stock_move_count(self): - for record in self: - if record.stock_move_ids: - record.stock_move_count = len(record.stock_move_ids) - else: - record.stock_move_count = 0 + # stock_move_count = fields.Integer(string='stock_move count', compute='_compute_stock_move_count') + # + # @api.depends('stock_move_ids') + # def _compute_stock_move_count(self): + # for record in self: + # if record.stock_move_ids: + # record.stock_move_count = len(record.stock_move_ids) + # else: + # record.stock_move_count = 0 def search(self, args, offset=0, limit=None, order=None, count=False): # 你可以在这里修改 `args` 以调整搜索条件 diff --git a/sf_tool_management/views/tool_inventory.xml b/sf_tool_management/views/tool_inventory.xml index 68efbca3..b08e5fce 100644 --- a/sf_tool_management/views/tool_inventory.xml +++ b/sf_tool_management/views/tool_inventory.xml @@ -6,10 +6,32 @@ - +
-
-

AGV参数配置

-
-
-
-
-
-
-
-
-
-
-
-
-
-
+

中控参数配置

From ec2075c8740e9e50e4ad3faa62a421f5b1baad2f Mon Sep 17 00:00:00 2001 From: liaodanlong Date: Fri, 20 Sep 2024 10:32:30 +0800 Subject: [PATCH 18/18] =?UTF-8?q?=E5=88=80=E5=85=B7=E5=B2=97=E6=9D=83?= =?UTF-8?q?=E9=99=90=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/security/ir.model.access.csv | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sf_base/security/ir.model.access.csv b/sf_base/security/ir.model.access.csv index ecc572c7..3d4ba3a0 100644 --- a/sf_base/security/ir.model.access.csv +++ b/sf_base/security/ir.model.access.csv @@ -242,3 +242,8 @@ access_sf_fixture_materials_basic_parameters_group_sf_stock_manager,sf_fixture_m access_sf_multi_mounting_type_group_sf_stock_manager,sf_multi_mounting_type_group_sf_stock_manager,model_sf_multi_mounting_type,sf_base.group_sf_stock_manager,1,0,0,0 access_sf_machine_brand_group_sf_stock_manager,sf_machine_brand_group_sf_stock_manager,model_sf_machine_brand,sf_base.group_sf_stock_manager,1,0,0,0 access_sf_cutting_tool_type_group_sf_stock_manager,sf_cutting_tool_type_group_sf_stock_manager,model_sf_cutting_tool_type,sf_base.group_sf_stock_manager,1,0,0,0 + + +access_sf_cutting_tool_material_group_plan_dispatch,sf_cutting_tool_material_group_plan_dispatch,model_sf_cutting_tool_material,sf_base.group_plan_dispatch,1,0,0,0 +access_sf_functional_cutting_tool_model_group_plan_dispatch,sf_functional_cutting_tool_model_group_plan_dispatch,model_sf_functional_cutting_tool_model,sf_base.group_plan_dispatch,1,0,0,0 +access_sf_cutting_tool_type_group_plan_dispatch,sf_cutting_tool_type_group_plan_dispatch,model_sf_cutting_tool_type,sf_base.group_plan_dispatch,1,0,0,0