From c569b60d5cc3fb05ab860e1216d1eb21dc7b9b4f Mon Sep 17 00:00:00 2001 From: liaodanlong Date: Thu, 26 Sep 2024 09:21:04 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E6=89=8B=E5=8A=A8=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E7=9A=84=E6=8B=86=E8=A7=A3=E5=8D=95=E4=B8=8D=E7=94=9F=E6=88=90?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_message/models/sf_message_functional_tool_dismantle.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sf_message/models/sf_message_functional_tool_dismantle.py b/sf_message/models/sf_message_functional_tool_dismantle.py index 9a1a01f4..c9f3c087 100644 --- a/sf_message/models/sf_message_functional_tool_dismantle.py +++ b/sf_message/models/sf_message_functional_tool_dismantle.py @@ -8,7 +8,11 @@ class SFMessagefunctionalToolDismantle(models.Model): @api.model def create(self, vals): + # 判断是否为web页面创建请求 + is_web_request = self.env.context.get('params', False) result = super(SFMessagefunctionalToolDismantle, self).create(vals) + if is_web_request and is_web_request.get('menu_id', False): + return result for obj in result: if obj.dismantle_cause in ['寿命到期报废', '崩刀报废']and obj.state=='待拆解': obj.add_queue('功能刀具寿命到期') From 5fb7165306434f551387a41139c2436adb27edc1 Mon Sep 17 00:00:00 2001 From: liaodanlong Date: Thu, 26 Sep 2024 09:22:02 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E8=B0=83=E6=8B=A8=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_message/__manifest__.py | 4 ++-- sf_message/models/sf_message_stock_picking.py | 13 ++++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/sf_message/__manifest__.py b/sf_message/__manifest__.py index 0f032a6d..f9dfd741 100644 --- a/sf_message/__manifest__.py +++ b/sf_message/__manifest__.py @@ -11,9 +11,9 @@ """, 'category': 'sf', 'website': 'https://www.sf.jikimo.com', - 'depends': ['sale', 'purchase', 'sf_plan', 'jikimo_message_notify','stock'], + 'depends': ['sale', 'purchase', 'sf_plan', 'jikimo_message_notify','stock','sf_tool_management'], 'data': [ - 'data/bussiness_node.xml' + 'data/bussiness_node.xml', ], 'test': [ ], diff --git a/sf_message/models/sf_message_stock_picking.py b/sf_message/models/sf_message_stock_picking.py index 0c3045cb..95225948 100644 --- a/sf_message/models/sf_message_stock_picking.py +++ b/sf_message/models/sf_message_stock_picking.py @@ -7,11 +7,14 @@ class SFMessageStockPicking(models.Model): _description = "库存调拨" _inherit = ['stock.picking', 'jikimo.message.dispatch'] - def button_validate(self): - res = super(SFMessageStockPicking, self).button_validate() - if self.location_id.name == 'Vendors' and self.location_dest_id.name == '进货': - self.add_queue('调拨入库') - return res + @api.model_create_multi + def create(self, vals): + result = super(SFMessageStockPicking, self).create(vals) + for obj in result: + if obj.location_id.name == '进货' and obj.location_dest_id.name == '刀具房': + obj.add_queue('调拨入库') + return result + @api.depends('move_type', 'immediate_transfer', 'move_ids.state', 'move_ids.picking_id') def _compute_state(self): From 6c35ec13fd3ef81ba23ef4990409f44fa31d7a36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?= Date: Thu, 26 Sep 2024 10:28:38 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E6=97=A0=E6=95=88=E5=88=80=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E5=90=8E=E8=B0=83=E7=94=A8cloud=E5=8F=91=E9=80=81?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_message/__manifest__.py | 2 +- sf_message/models/sf_message_workorder.py | 26 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/sf_message/__manifest__.py b/sf_message/__manifest__.py index 0f032a6d..16b9ad0e 100644 --- a/sf_message/__manifest__.py +++ b/sf_message/__manifest__.py @@ -11,7 +11,7 @@ """, 'category': 'sf', 'website': 'https://www.sf.jikimo.com', - 'depends': ['sale', 'purchase', 'sf_plan', 'jikimo_message_notify','stock'], + 'depends': ['sale', 'purchase', 'sf_plan', 'jikimo_message_notify','stock', 'sf_manufacturing', 'sf_hr'], 'data': [ 'data/bussiness_node.xml' ], diff --git a/sf_message/models/sf_message_workorder.py b/sf_message/models/sf_message_workorder.py index 2462b3f1..62f513b7 100644 --- a/sf_message/models/sf_message_workorder.py +++ b/sf_message/models/sf_message_workorder.py @@ -1,5 +1,9 @@ from odoo import models, fields, api, _ +import logging, json +import requests +from odoo.addons.sf_base.commons.common import Common +_logger = logging.getLogger(__name__) class SFMessageWork(models.Model): _name = 'mrp.workorder' @@ -31,3 +35,25 @@ class SFMessageWork(models.Model): product_id.append(mrp_workorder_line.product_id.id) contents.append(content) return contents + + @api.depends('cnc_ids.tool_state') + def _compute_tool_state(self): + # 将self的id与tool_state进行保存 + tool_state_dict = {record.id: record.tool_state for record in self} + res = super(SFMessageWork, self)._compute_tool_state() + data = {'name': []} + for record in self: + if tool_state_dict[record.id] != '2' and record.tool_state == '2': + data['name'].append(record.production_id.programming_no) + + if data['name']: + # 请求cloud接口,发送微信消息推送 + configsettings = self.env['res.config.settings'].get_values() + config_header = Common.get_headers(self, configsettings['token'], configsettings['sf_secret_key']) + url = '/api/message/invalid_tool_state' + config_url = configsettings['sf_url'] + url + data['token'] = configsettings['token'] + ret = requests.post(config_url, json=data, headers=config_header) + ret = ret.json() + _logger.info('无效用刀异常消息推送接口:%s' % ret) + return res From d4e2ace8a60d647f5e12a3ddc6b644d17fe50ce2 Mon Sep 17 00:00:00 2001 From: guanhuan Date: Thu, 26 Sep 2024 12:36:00 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E6=B6=88=E6=81=AF=E9=80=9A=E7=9F=A5url?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_message/models/sf_message_purchase.py | 29 +++++++++++++++++++ sf_message/models/sf_message_stock_picking.py | 18 +++++++++++- sf_message/models/sf_message_workorder.py | 25 +++++++++++++--- 3 files changed, 67 insertions(+), 5 deletions(-) diff --git a/sf_message/models/sf_message_purchase.py b/sf_message/models/sf_message_purchase.py index 8d95ffaf..96d0f8dc 100644 --- a/sf_message/models/sf_message_purchase.py +++ b/sf_message/models/sf_message_purchase.py @@ -1,6 +1,35 @@ from odoo import models, fields, api, _ +from urllib.parse import urlencode class SFMessagePurchase(models.Model): _name = 'purchase.order' _inherit = ['purchase.order', 'jikimo.message.dispatch'] + + def _get_message(self, message_queue_ids): + contents = [] + for message_queue_id in message_queue_ids: + if message_queue_id.message_template_id.name == '坯料采购提醒': + content = message_queue_id.message_template_id.content + url = self.request_url(int(message_queue_id.res_id)) + purchase_order_line = self.env['purchase.order'].search([('id', '=', int(message_queue_id.res_id))]) + content = content.replace('{{name}}', purchase_order_line.name).replace( + '{{request_url}}', url) + contents.append(content) + return contents + + def request_url(self, id): + we_config_info = self.env['we.config'].sudo().search([], limit=1) + redirect_domain = self.env['we.app'].sudo().search([('id', '=', we_config_info.odoo_app_id.id)]).redirect_domain + full_url = 'https://%s/' % redirect_domain + action_id = self.env.ref('purchase.purchase_form_action').id + menu_id = self.env['ir.model.data'].search([('name', '=', 'module_website_payment')]).id + # 查询参数 + params = {'id': id, 'menu_id': menu_id, 'action': action_id, + 'model': 'purchase.order', + 'view_type': 'form'} + # 拼接查询参数 + query_string = urlencode(params) + # 拼接URL + full_url = full_url + "web#" + query_string + return full_url diff --git a/sf_message/models/sf_message_stock_picking.py b/sf_message/models/sf_message_stock_picking.py index 95225948..5c9f9160 100644 --- a/sf_message/models/sf_message_stock_picking.py +++ b/sf_message/models/sf_message_stock_picking.py @@ -1,5 +1,6 @@ import re from odoo import models, fields, api, _ +from urllib.parse import urlencode class SFMessageStockPicking(models.Model): @@ -41,7 +42,7 @@ class SFMessageStockPicking(models.Model): if picking_id.state == 'assigned' and picking_id.check_in == 'PC': i += 1 if i > 0 and mrp_production_info.product_id.id not in product_id: - url = message_queue_id.message_template_id.get_url(int(message_queue_id.res_id)) + url = self.request_url() content = content.replace('{{product_id}}', mrp_production_info.product_id.name).replace( '{{number}}', str(i)).replace('{{request_url}}', url) product_id.append(mrp_production_info.product_id.id) @@ -50,3 +51,18 @@ class SFMessageStockPicking(models.Model): else: res = super(SFMessageStockPicking, self)._get_message(message_queue_id) return res + + def request_url(self): + we_config_info = self.env['we.config'].sudo().search([], limit=1) + redirect_domain = self.env['we.app'].sudo().search([('id', '=', we_config_info.odoo_app_id.id)]).redirect_domain + full_url = 'https://%s/' % redirect_domain + action_id = self.env.ref('stock.action_picking_tree_ready').id + menu_id = self.env['ir.model.data'].search([('name', '=', 'module_theme_treehouse')]).id + # 查询参数 + params = {'menu_id': menu_id, 'action': action_id, 'model': 'stock.picking', + 'view_type': 'list'} + # 拼接查询参数 + query_string = urlencode(params) + # 拼接URL + full_url = full_url + "web#" + query_string + return full_url diff --git a/sf_message/models/sf_message_workorder.py b/sf_message/models/sf_message_workorder.py index 0f211198..e52dde14 100644 --- a/sf_message/models/sf_message_workorder.py +++ b/sf_message/models/sf_message_workorder.py @@ -1,4 +1,5 @@ from odoo import models, fields, api, _ +from urllib.parse import urlencode class SFMessageWork(models.Model): @@ -10,7 +11,10 @@ class SFMessageWork(models.Model): super(SFMessageWork, self)._compute_state() for workorder in self: if workorder.state == 'ready' and workorder.routing_type == '装夹预调': - workorder.add_queue('工单已下发通知') + jikimo_message_queue = self.env['jikimo.message.queue'].sudo().search( + [('res_id', '=', workorder.id), ("message_status", "=", "pending")]) + if not jikimo_message_queue: + workorder.add_queue('工单已下发通知') def _get_message(self, message_queue_ids): contents = [] @@ -23,12 +27,25 @@ class SFMessageWork(models.Model): [('product_id', '=', mrp_workorder_line.product_id.id), ('state', '=', 'ready'), ('routing_type', '=', '装夹预调')]) if len(mrp_workorder_list) > 0 and mrp_workorder_line.product_id.id not in product_id: - url = message_queue_id.message_template_id.get_url(int(message_queue_id.res_id)) + "&active_id=1" + url = self.request_url() content = content.replace('{{product_id}}', mrp_workorder_line.product_id.name).replace( '{{number}}', str(len(mrp_workorder_list))).replace( - '{{part_number}}', - mrp_workorder_line.part_number if mrp_workorder_line.part_number else "").replace( '{{request_url}}', url) product_id.append(mrp_workorder_line.product_id.id) contents.append(content) return contents + + def request_url(self): + we_config_info = self.env['we.config'].sudo().search([], limit=1) + redirect_domain = self.env['we.app'].sudo().search([('id', '=', we_config_info.odoo_app_id.id)]).redirect_domain + full_url = 'https://%s/' % redirect_domain + action_id = self.env.ref('sf_manufacturing.mrp_workorder_action_tablet').id + menu_id = self.env['ir.model.data'].search([('name', '=', 'module_stock_dropshipping')]).id + # 查询参数 + params = {'menu_id': menu_id, 'action': action_id, 'model': 'mrp.workorder', + 'view_type': 'list', 'active_id': 1} + # 拼接查询参数 + query_string = urlencode(params) + # 拼接URL + full_url = full_url + "web#" + query_string + return full_url From 3728809d104ae9d851d3c78a5aeba7055a650b78 Mon Sep 17 00:00:00 2001 From: guanhuan Date: Thu, 26 Sep 2024 13:43:47 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E6=B6=88=E6=81=AF=E9=80=9A=E7=9F=A5url?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_message/models/sf_message_stock_picking.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sf_message/models/sf_message_stock_picking.py b/sf_message/models/sf_message_stock_picking.py index 5c9f9160..fdb9d4cf 100644 --- a/sf_message/models/sf_message_stock_picking.py +++ b/sf_message/models/sf_message_stock_picking.py @@ -16,7 +16,6 @@ class SFMessageStockPicking(models.Model): obj.add_queue('调拨入库') return result - @api.depends('move_type', 'immediate_transfer', 'move_ids.state', 'move_ids.picking_id') def _compute_state(self): super(SFMessageStockPicking, self)._compute_state() @@ -56,11 +55,11 @@ class SFMessageStockPicking(models.Model): we_config_info = self.env['we.config'].sudo().search([], limit=1) redirect_domain = self.env['we.app'].sudo().search([('id', '=', we_config_info.odoo_app_id.id)]).redirect_domain full_url = 'https://%s/' % redirect_domain - action_id = self.env.ref('stock.action_picking_tree_ready').id + action_id = self.env.ref('stock.stock_picking_type_action').id menu_id = self.env['ir.model.data'].search([('name', '=', 'module_theme_treehouse')]).id # 查询参数 params = {'menu_id': menu_id, 'action': action_id, 'model': 'stock.picking', - 'view_type': 'list'} + 'view_type': 'kanban'} # 拼接查询参数 query_string = urlencode(params) # 拼接URL From 271e23a67f125550d7c8f58676807e4da897847b Mon Sep 17 00:00:00 2001 From: yuxianghui <3437689193@qq.com> Date: Thu, 26 Sep 2024 14:01:03 +0800 Subject: [PATCH 06/12] =?UTF-8?q?1=E3=80=81=E5=88=80=E5=85=B7=E6=A0=87?= =?UTF-8?q?=E5=87=86=E5=BA=93=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_mrs_connect/models/sync_common.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py index 25d30333..0037ddcc 100644 --- a/sf_mrs_connect/models/sync_common.py +++ b/sf_mrs_connect/models/sync_common.py @@ -2676,7 +2676,8 @@ class CuttingToolBasicParameters(models.Model): 'interface_diameter': cutter_head_item['interface_diameter'], 'total_length': cutter_head_item['total_length'], 'blade_length': cutter_head_item['blade_length'], - 'cutting_depth': cutter_head_item['cutting_depth_max'], + 'cutting_blade_length': cutter_head_item['cutting_blade_length'], + 'cut_depth_max': cutter_head_item['cutting_depth_max'], 'main_included_angle': cutter_head_item['edge_angle'], 'installing_structure': cutter_head_item['mounting_structure'], 'blade_id': False if not cutter_head_item['fit_blade_model_code'] else self.env[ @@ -2698,7 +2699,8 @@ class CuttingToolBasicParameters(models.Model): 'interface_diameter': cutter_head_item['interface_diameter'], 'total_length': cutter_head_item['total_length'], 'blade_length': cutter_head_item['blade_length'], - 'cutting_depth': cutter_head_item['cutting_depth_max'], + 'cutting_blade_length': cutter_head_item['cutting_blade_length'], + 'cut_depth_max': cutter_head_item['cutting_depth_max'], 'main_included_angle': cutter_head_item['edge_angle'], 'installing_structure': cutter_head_item['mounting_structure'], 'blade_id': False if not cutter_head_item['fit_blade_model_code'] else self.env[ @@ -3031,7 +3033,8 @@ class CuttingToolBasicParameters(models.Model): 'interface_diameter': cutter_head_item['interface_diameter'], 'total_length': cutter_head_item['total_length'], 'blade_length': cutter_head_item['blade_length'], - 'cutting_depth': cutter_head_item['cutting_depth_max'], + 'cutting_blade_length': cutter_head_item['cutting_blade_length'], + 'cut_depth_max': cutter_head_item['cutting_depth_max'], 'main_included_angle': cutter_head_item['edge_angle'], 'installing_structure': cutter_head_item['mounting_structure'], 'blade_id': False if not cutter_head_item['fit_blade_model_code'] else self.env[ @@ -3053,7 +3056,8 @@ class CuttingToolBasicParameters(models.Model): 'interface_diameter': cutter_head_item['interface_diameter'], 'total_length': cutter_head_item['total_length'], 'blade_length': cutter_head_item['blade_length'], - 'cutting_depth': cutter_head_item['cutting_depth_max'], + 'cutting_blade_length': cutter_head_item['cutting_blade_length'], + 'cut_depth_max': cutter_head_item['cutting_depth_max'], 'main_included_angle': cutter_head_item['edge_angle'], 'installing_structure': cutter_head_item['mounting_structure'], 'blade_id': False if not cutter_head_item['fit_blade_model_code'] else self.env[ From 3cc2bb94fe05c2322475a69b7e446e46e9e26bb3 Mon Sep 17 00:00:00 2001 From: liaodanlong Date: Thu, 26 Sep 2024 14:54:43 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E5=88=80=E5=85=B7=E6=8B=86=E8=A7=A3?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_message/models/sf_message_functional_tool_dismantle.py | 6 +++--- sf_tool_management/views/tool_base_views.xml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sf_message/models/sf_message_functional_tool_dismantle.py b/sf_message/models/sf_message_functional_tool_dismantle.py index c9f3c087..f6edb995 100644 --- a/sf_message/models/sf_message_functional_tool_dismantle.py +++ b/sf_message/models/sf_message_functional_tool_dismantle.py @@ -9,11 +9,11 @@ class SFMessagefunctionalToolDismantle(models.Model): @api.model def create(self, vals): # 判断是否为web页面创建请求 - is_web_request = self.env.context.get('params', False) + is_web_request = self.env.context.get('is_web_request', False) result = super(SFMessagefunctionalToolDismantle, self).create(vals) - if is_web_request and is_web_request.get('menu_id', False): + if is_web_request: return result for obj in result: - if obj.dismantle_cause in ['寿命到期报废', '崩刀报废']and obj.state=='待拆解': + if obj.dismantle_cause in ['寿命到期报废', '崩刀报废'] and obj.state == '待拆解': obj.add_queue('功能刀具寿命到期') return result diff --git a/sf_tool_management/views/tool_base_views.xml b/sf_tool_management/views/tool_base_views.xml index 130936d8..e8ea607f 100644 --- a/sf_tool_management/views/tool_base_views.xml +++ b/sf_tool_management/views/tool_base_views.xml @@ -1043,7 +1043,7 @@ sf.functional.tool.dismantle tree,form,search - {'search_default_no_dismantle_state':1} + {'search_default_no_dismantle_state':1,'is_web_request':True} From eba9ccf08324dba9e1a0fd3d71bd4abb05ae8059 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?= Date: Thu, 26 Sep 2024 15:33:39 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E5=B1=8F=E8=94=BDtitle=E5=86=99=E6=AD=BB?= =?UTF-8?q?JIKIMO=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jikimo_frontend/static/src/bye_odoo/favicon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jikimo_frontend/static/src/bye_odoo/favicon.js b/jikimo_frontend/static/src/bye_odoo/favicon.js index 9ef4f4da..e37b967d 100644 --- a/jikimo_frontend/static/src/bye_odoo/favicon.js +++ b/jikimo_frontend/static/src/bye_odoo/favicon.js @@ -6,6 +6,6 @@ import { patch } from "web.utils"; patch(WebClient.prototype, "kolpolok_custom_title_and_favicon.WebClient", { setup() { this._super(); - this.title.setParts({ zopenerp: "JIKIMO" }); + // this.title.setParts({ zopenerp: "JIKIMO" }); }, }); \ No newline at end of file From 4d63b903738d28743f89c8d1bb0a4bc1eaceee0d Mon Sep 17 00:00:00 2001 From: yuxianghui <3437689193@qq.com> Date: Thu, 26 Sep 2024 16:36:49 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E5=B1=8F=E8=94=BD=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E4=B8=8B=E5=8F=91=E7=BC=96=E7=A8=8B=E5=8D=95=E6=97=B6=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E5=88=A0=E9=99=A4CAM=E7=A8=8B=E5=BA=8F=E7=94=A8?= =?UTF-8?q?=E5=88=80=E8=AE=A1=E5=88=92=E8=AE=B0=E5=BD=95=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_production.py | 4 ++-- sf_mrs_connect/controllers/controllers.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 0b68852b..59ce68ab 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -990,8 +990,8 @@ class MrpProduction(models.Model): panel_workorder.cmm_ids.sudo().unlink() if panel_workorder.cnc_ids: panel_workorder.cnc_ids.sudo().unlink() - self.env['sf.cam.work.order.program.knife.plan'].sudo().unlink_cam_plan( - production) + # self.env['sf.cam.work.order.program.knife.plan'].sudo().unlink_cam_plan( + # production) # program_path_tmp_panel = os.path.join('C://Users//43484//Desktop//fsdownload//test', # processing_panel) logging.info('program_path_tmp_panel:%s' % program_path_tmp_panel) diff --git a/sf_mrs_connect/controllers/controllers.py b/sf_mrs_connect/controllers/controllers.py index c5d1cd10..699bc35a 100644 --- a/sf_mrs_connect/controllers/controllers.py +++ b/sf_mrs_connect/controllers/controllers.py @@ -62,8 +62,8 @@ class Sf_Mrs_Connect(http.Controller): if cnc_workorder_has.cnc_ids: cnc_workorder_has.cmm_ids.sudo().unlink() cnc_workorder_has.cnc_ids.sudo().unlink() - request.env['sf.cam.work.order.program.knife.plan'].sudo().unlink_cam_plan( - production) + # request.env['sf.cam.work.order.program.knife.plan'].sudo().unlink_cam_plan( + # production) cnc_workorder_has.write( {'cnc_ids': cnc_workorder_has.cnc_ids.sudo()._json_cnc_processing(panel, ret), 'cmm_ids': cnc_workorder_has.cmm_ids.sudo()._json_cmm_program(panel, ret)}) From 1050f7616b323a41204743cb14dda5fe96c58319 Mon Sep 17 00:00:00 2001 From: guanhuan Date: Thu, 26 Sep 2024 17:57:17 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=87=8D=E5=A4=8Dwe=5F?= =?UTF-8?q?employee=5Fid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_hr/__manifest__.py | 1 - sf_hr/models/__init__.py | 1 - sf_hr/models/res_users.py | 12 ------------ sf_hr/views/res_users_view.xml | 20 -------------------- 4 files changed, 34 deletions(-) delete mode 100644 sf_hr/models/res_users.py delete mode 100644 sf_hr/views/res_users_view.xml diff --git a/sf_hr/__manifest__.py b/sf_hr/__manifest__.py index b3e21ab3..87706dcc 100644 --- a/sf_hr/__manifest__.py +++ b/sf_hr/__manifest__.py @@ -11,7 +11,6 @@ 'data': [ 'views/hr_employee.xml', 'views/res_config_settings_views.xml', - 'views/res_users_view.xml', 'data/cron_data.xml', ], 'demo': [ diff --git a/sf_hr/models/__init__.py b/sf_hr/models/__init__.py index 9744f0cc..ffe76391 100644 --- a/sf_hr/models/__init__.py +++ b/sf_hr/models/__init__.py @@ -2,4 +2,3 @@ from . import hr_employee from . import res_config_setting -from . import res_users diff --git a/sf_hr/models/res_users.py b/sf_hr/models/res_users.py deleted file mode 100644 index 392c297a..00000000 --- a/sf_hr/models/res_users.py +++ /dev/null @@ -1,12 +0,0 @@ -# -*- coding: utf-8 -*- -from odoo import models, fields, api - -import logging - -_logger = logging.getLogger(__name__) - - -class ResUsers(models.Model): - _inherit = 'res.users' - - we_employee_id = fields.Char(string=u'企业微信账号', default="") diff --git a/sf_hr/views/res_users_view.xml b/sf_hr/views/res_users_view.xml deleted file mode 100644 index c65d8e46..00000000 --- a/sf_hr/views/res_users_view.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - res.users.account.form - res.users - - - - - - - - - - - - - - From 5b4376b5f941f8b5dbb2da523bd14078d2f534e2 Mon Sep 17 00:00:00 2001 From: liaodanlong Date: Thu, 26 Sep 2024 17:58:04 +0800 Subject: [PATCH 11/12] =?UTF-8?q?r=E8=A7=92=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/models/tool_other_features.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sf_base/models/tool_other_features.py b/sf_base/models/tool_other_features.py index 9dd30710..bc8f369e 100644 --- a/sf_base/models/tool_other_features.py +++ b/sf_base/models/tool_other_features.py @@ -38,7 +38,7 @@ class ToolMaterialsBasicParameters(models.Model): width = fields.Float('宽度(mm)') cutting_blade_length = fields.Float('切削刃长(mm)') relief_angle = fields.Integer('后角(°)') - blade_tip_circular_arc_radius = fields.Char('刀尖圆弧半径(mm)', size=20) + blade_tip_circular_arc_radius = fields.Char('刀尖圆弧半径(mm)', size=20,default='0') inscribed_circle_diameter = fields.Float('内接圆直径IC/D(mm)') install_aperture_diameter = fields.Float('安装孔直径(mm)') chip_breaker_groove = fields.Selection([('无', '无'), ('单面', '单面'), ('双面', '双面')], From 79ec3f2c91fb5ab79aa8d763e6c86b2a5555d50b Mon Sep 17 00:00:00 2001 From: liaodanlong Date: Fri, 27 Sep 2024 09:09:48 +0800 Subject: [PATCH 12/12] =?UTF-8?q?r=E8=A7=92=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/models/tool_base_new.py | 2 +- sf_base/models/tool_other_features.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sf_base/models/tool_base_new.py b/sf_base/models/tool_base_new.py index 98eea36c..3517766d 100644 --- a/sf_base/models/tool_base_new.py +++ b/sf_base/models/tool_base_new.py @@ -321,7 +321,7 @@ class ToolInventory(models.Model): prefix = fields.Char('前缀') postfix = fields.Char('后缀') diameter = fields.Float('直径(mm)') - angle = fields.Float('R角(mm)') + angle = fields.Float('R角(mm)',default=0) tool_length = fields.Float('刀具总长(mm)') blade_length = fields.Float('避空长/刃长(mm)') knife_head_name = fields.Char('刀头名称') diff --git a/sf_base/models/tool_other_features.py b/sf_base/models/tool_other_features.py index bc8f369e..3876f39a 100644 --- a/sf_base/models/tool_other_features.py +++ b/sf_base/models/tool_other_features.py @@ -23,7 +23,7 @@ class ToolMaterialsBasicParameters(models.Model): handle_length = fields.Float('柄部长度(mm)') blade_tip_diameter = fields.Float('刀尖直径(mm)') blade_tip_working_size = fields.Char('刀尖倒角度(°)', size=20) - tip_r_size = fields.Float('刀尖R角(mm)') + tip_r_size = fields.Float('刀尖R角(mm)',default=0) blade_tip_taper = fields.Integer('刀尖锥度(°)') blade_diameter = fields.Float('刃部直径(mm)') blade_length = fields.Float('刃部长度(mm)')