From 03cc5b22817585c5fbee27c6c7fe6513153fe508 Mon Sep 17 00:00:00 2001 From: yuxianghui <1608204036@qq.com> Date: Thu, 3 Aug 2023 14:31:16 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=88=80=E5=85=B7=E7=BB=84=E8=A3=85=E5=AF=B9=E8=B1=A1=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E7=BB=84=E8=A3=85=E6=97=B6=E5=88=A0=E9=99=A4=E7=BB=84?= =?UTF-8?q?=E8=A3=85=E6=97=B6=E6=89=80=E5=88=9B=E5=BB=BA=E7=9A=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=88=80=E5=85=B7=E5=88=97=E8=A1=A8=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=EF=BC=8C=E5=88=A0=E9=99=A4=E4=BA=86=E5=8A=9F=E8=83=BD=E5=88=80?= =?UTF-8?q?=E5=85=B7=E7=BB=84=E8=A3=85=E5=AF=B9=E8=B1=A1=E7=BB=84=E8=A3=85?= =?UTF-8?q?=E6=97=B6=E5=88=9B=E5=BB=BA=E5=8A=9F=E8=83=BD=E5=88=80=E5=85=B7?= =?UTF-8?q?=E9=A2=84=E8=AD=A6=E3=80=81=E5=AE=9E=E6=97=B6=E5=88=86=E5=B8=83?= =?UTF-8?q?=E3=80=81=E5=87=BA=E5=85=A5=E5=BA=93=E8=AE=B0=E5=BD=95=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E7=9A=84=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_tool_management/models/base.py | 38 +++++++++++-------- .../security/ir.model.access.csv | 6 +-- sf_tool_management/wizard/wizard.py | 27 +++++++------ sf_tool_management/wizard/wizard_view.xml | 3 +- 4 files changed, 42 insertions(+), 32 deletions(-) diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py index 7f8b9323..33a489c3 100644 --- a/sf_tool_management/models/base.py +++ b/sf_tool_management/models/base.py @@ -591,6 +591,20 @@ class FunctionalToolAssembly(models.Model): 取消功能刀具组装 :return: """ + if self.new_former == '0': + # 如果是新刀,则删除功能刀具列表、 + self.env['sf.functional.cutting.tool.entity'].search([ + ('code', '=', self.functional_tool_code)]).unlink() + else: + pass + # # 删除功能刀具预警、实时分布、出入库记录的新记录 + # self.env['sf.functional.tool.warning'].search([ + # ('code', '=', self.functional_tool_code)]).unlink() + # self.env['sf.real.time.distribution.of.functional.tools'].search([ + # ('code', '=', self.functional_tool_code)]).unlink() + # self.env['sf.inbound.and.outbound.records.of.functional.tools'].search([ + # ('code', '=', self.functional_tool_code)]).unlink() + self.env['sf.functional.tool.assembly'].search([ ('machine_tool_name_id', '=', self.machine_tool_name_id.id), ('cutter_spacing_code', '=', self.cutter_spacing_code) @@ -639,28 +653,20 @@ class FunctionalToolAssembly(models.Model): """ self.env['sf.delivery.of.cargo.from.storage'].search([]).unlink() - vals = self.env['sf.functional.tool.assembly'].search([('check_box_1', '=', True),('assemble_status', '=', '1')]) - if vals: - for val in vals: - self.env['sf.delivery.of.cargo.from.storage'].create({ - 'functional_tool_code': val.functional_tool_code, + desc_1 = {'functional_tool_code': val.functional_tool_code, 'name': val.name.id, 'functional_tool_type_id': val.functional_tool_type_id.id, 'production_line_name_id': val.production_line_name_id.id, 'machine_tool_code': val.machine_tool_code, 'receive_person': val.receive_person, - 'receive_time': val.receive_time - }) + 'receive_time': val.receive_time} + + vals = self.env['sf.functional.tool.assembly'].search([('check_box_1', '=', True),('assemble_status', '=', '1')]) + if vals: + for val in vals: + self.env['sf.delivery.of.cargo.from.storage'].create(desc_1) else: - self.env['sf.delivery.of.cargo.from.storage'].create({ - 'functional_tool_code': self.functional_tool_code, - 'name': self.name.id, - 'functional_tool_type_id': self.functional_tool_type_id.id, - 'production_line_name_id': self.production_line_name_id.id, - 'machine_tool_code': self.machine_tool_code, - 'receive_person': self.receive_person, - 'receive_time': self.receive_time - }) + self.env['sf.delivery.of.cargo.from.storage'].create(desc_1) return { 'type': 'ir.actions.act_window', diff --git a/sf_tool_management/security/ir.model.access.csv b/sf_tool_management/security/ir.model.access.csv index 1cb5d1a0..fe606ac1 100644 --- a/sf_tool_management/security/ir.model.access.csv +++ b/sf_tool_management/security/ir.model.access.csv @@ -1,8 +1,8 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_sf_functional_cutting_tool_entity,sf.functional.cutting.tool.entity,model_sf_functional_cutting_tool_entity,base.group_user,1,1,1,1 -access_sf.functional.tool.warning,sf.functional.tool.warning,model_sf_functional_tool_warning,base.group_user,1,0,1,0 -access_sf.real.time.distribution.of.functional.tools,sf.real.time.distribution.of.functional.tools,model_sf_real_time_distribution_of_functional_tools,base.group_user,1,0,1,0 -access_sf.inbound.and.outbound.records.of.functional.tools,sf.inbound.and.outbound.records.of.functional.tools,model_sf_inbound_and_outbound_records_of_functional_tools,base.group_user,1,0,1,0 +access_sf.functional.tool.warning,sf.functional.tool.warning,model_sf_functional_tool_warning,base.group_user,1,1,1,1 +access_sf.real.time.distribution.of.functional.tools,sf.real.time.distribution.of.functional.tools,model_sf_real_time_distribution_of_functional_tools,base.group_user,1,1,1,1 +access_sf.inbound.and.outbound.records.of.functional.tools,sf.inbound.and.outbound.records.of.functional.tools,model_sf_inbound_and_outbound_records_of_functional_tools,base.group_user,1,1,1,1 access_sf_cam_work_order_program_knife_plan,sf.cam.work.order.program.knife.plan,model_sf_cam_work_order_program_knife_plan,base.group_user,1,1,1,1 access_sf_machine_table_tool_changing_apply,sf.machine.table.tool.changing.apply,model_sf_machine_table_tool_changing_apply,base.group_user,1,1,1,1 diff --git a/sf_tool_management/wizard/wizard.py b/sf_tool_management/wizard/wizard.py index 7afdd536..2927ba63 100644 --- a/sf_tool_management/wizard/wizard.py +++ b/sf_tool_management/wizard/wizard.py @@ -176,10 +176,7 @@ class FunctionalToolAssemblyOrder(models.TransientModel): 功能刀具组装 :return: """ - self.env['sf.functional.tool.assembly'].search([ - ('machine_tool_name_id', '=', self.machine_tool_name_id.id), - ('cutter_spacing_code', '=', self.cutter_spacing_code) - ]).write({ + desc_1 = { 'mrs_cutting_tool_integral_model_ids': self.mrs_cutting_tool_integral_model_ids.ids, 'integral_code': self.integral_code, 'integral_name': self.integral_name, @@ -214,10 +211,14 @@ class FunctionalToolAssemblyOrder(models.TransientModel): 'assemble_status': '1', 'tool_loading_person': self.env.user.name, 'tool_loading_time': fields.Datetime.now() - }) + } + self.env['sf.functional.tool.assembly'].search([ + ('machine_tool_name_id', '=', self.machine_tool_name_id.id), + ('cutter_spacing_code', '=', self.cutter_spacing_code) + ]).write(desc_1) # 封装功能刀具数据 - desc = { + desc_2 = { 'code': self.code, 'name': self.functional_tool_name_id.name, 'mrs_cutting_tool_type_id': self.functional_tool_type_id.id, @@ -239,14 +240,16 @@ class FunctionalToolAssemblyOrder(models.TransientModel): 'applicable_range': None, 'image': None, } - if self.new_former == '0': # 如果是新刀,则创建功能刀具列表、 - self.env['sf.functional.cutting.tool.entity'].create(desc) - # 创建功能刀具预警、实时分布、出入库记录的新记录 - self.env['sf.functional.tool.warning'].create(desc) - self.env['sf.real.time.distribution.of.functional.tools'].create(desc) - self.env['sf.inbound.and.outbound.records.of.functional.tools'].create(desc) + self.env['sf.functional.cutting.tool.entity'].create(desc_2) + else: + self.env['sf.functional.cutting.tool.entity'].search([ + ('code', '=', self.code)]).write(desc_2) + # # 创建功能刀具预警、实时分布、出入库记录的新记录 + # self.env['sf.functional.tool.warning'].create(desc) + # self.env['sf.real.time.distribution.of.functional.tools'].create(desc) + # self.env['sf.inbound.and.outbound.records.of.functional.tools'].create(desc) # 关闭弹出窗口 return {'type': 'ir.actions.act_window_close'} diff --git a/sf_tool_management/wizard/wizard_view.xml b/sf_tool_management/wizard/wizard_view.xml index 5f156eae..a8101f6d 100644 --- a/sf_tool_management/wizard/wizard_view.xml +++ b/sf_tool_management/wizard/wizard_view.xml @@ -189,7 +189,8 @@ - + From fe310de31d72441fc8bd4c9580c84f696490d645 Mon Sep 17 00:00:00 2001 From: yuxianghui <1608204036@qq.com> Date: Thu, 3 Aug 2023 17:29:26 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=88=80=E5=85=B7=E5=88=97=E8=A1=A8=E7=BC=93=E5=AD=98=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=EF=BC=8C=E6=96=B0=E5=A2=9E=E7=BB=84=E8=A3=85=E6=97=A7?= =?UTF-8?q?=E5=88=80=E6=98=AF=E5=88=9B=E5=BB=BA=E7=BC=93=E5=AD=98=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=8F=96=E6=B6=88=E7=BB=84?= =?UTF-8?q?=E8=A3=85=E6=97=B6=E6=B8=85=E9=99=A4=E7=BC=93=E5=AD=98=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_tool_management/models/base.py | 89 ++++++++++++++++--- .../security/ir.model.access.csv | 1 + sf_tool_management/wizard/wizard.py | 8 +- 3 files changed, 86 insertions(+), 12 deletions(-) diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py index 33a489c3..675542f1 100644 --- a/sf_tool_management/models/base.py +++ b/sf_tool_management/models/base.py @@ -68,6 +68,59 @@ class FunctionalCuttingToolEntity(models.Model): return [(6, 0, functional_tool_model_ids)] +class FunctionalCuttingToolEntityCache(models.Model): + _name = 'sf.functional.cutting.tool.entity.cache' + _description = '功能刀具列表缓存' + + code = fields.Char('编码') + name = fields.Char('名称') + mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型') + mrs_cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', string='刀具型号') + + # 整体式刀具型号 + mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model', + 'sf_functional_cutting_tool_entity_cache_id', + string='整体式刀具型号', domain= + [('mrs_cutting_tool_material_name', '=', '整体式刀具')]) + # 刀片型号 + mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_cutting_tool_entity_cache_id', + string='刀片型号', domain= + [('mrs_cutting_tool_material_name', '=', '刀片')]) + # 刀杆型号 + mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model', + 'sf_functional_cutting_tool_entity_cache_id', + string='刀杆型号', domain= + [('mrs_cutting_tool_material_name', '=', '刀杆')]) + # 刀盘型号 + mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model', + 'sf_functional_cutting_tool_entity_cache_id', + string='刀盘型号', domain= + [('mrs_cutting_tool_material_name', '=', '刀盘')]) + # 刀柄型号 + mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model', + 'sf_functional_cutting_tool_entity_cache_id', + string='刀柄型号', domain= + [('mrs_cutting_tool_material_name', '=', '刀柄')]) + # 夹头型号 + mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model', + 'sf_functional_cutting_tool_entity_cache_id', + string='夹头型号', domain= + [('mrs_cutting_tool_material_name', '=', '夹头')]) + + diameter = fields.Float('直径(mm)') + tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')], + string='刀具等级') + machining_accuracy = fields.Float('加工精度(mm)') + tool_length = fields.Float('装刀长') + blade_number = fields.Integer('刃数') + integral_blade_length = fields.Float('整体刃长(mm)') + effective_blade_length = fields.Float('有效刃长(mm)') + max_life = fields.Float('最大寿命值') + is_standard = fields.Boolean('是否标准刀') + applicable_range = fields.Char('适用范围') + image = fields.Binary('图片') + + class FunctionalToolWarning(models.Model): _name = 'sf.functional.tool.warning' _description = '功能刀具预警' @@ -596,7 +649,15 @@ class FunctionalToolAssembly(models.Model): self.env['sf.functional.cutting.tool.entity'].search([ ('code', '=', self.functional_tool_code)]).unlink() else: - pass + # 获取功能刀具缓存信息 + record = self.env['sf.functional.cutting.tool.entity.cache'].search([ + ('code', '=', self.functional_tool_code)]) + # 删除缓存信息 + record.unlink() + # 修改功能刀具列表信息 + self.env['sf.functional.cutting.tool.entity'].search([ + ('code', '=', self.functional_tool_code)]).write(record) + # # 删除功能刀具预警、实时分布、出入库记录的新记录 # self.env['sf.functional.tool.warning'].search([ # ('code', '=', self.functional_tool_code)]).unlink() @@ -653,20 +714,28 @@ class FunctionalToolAssembly(models.Model): """ self.env['sf.delivery.of.cargo.from.storage'].search([]).unlink() - desc_1 = {'functional_tool_code': val.functional_tool_code, - 'name': val.name.id, - 'functional_tool_type_id': val.functional_tool_type_id.id, - 'production_line_name_id': val.production_line_name_id.id, - 'machine_tool_code': val.machine_tool_code, - 'receive_person': val.receive_person, - 'receive_time': val.receive_time} + vals = self.env['sf.functional.tool.assembly'].search([('check_box_1', '=', True),('assemble_status', '=', '1')]) if vals: for val in vals: - self.env['sf.delivery.of.cargo.from.storage'].create(desc_1) + self.env['sf.delivery.of.cargo.from.storage'].create({ + 'functional_tool_code': val.functional_tool_code, + 'name': val.name.id, + 'functional_tool_type_id': val.functional_tool_type_id.id, + 'production_line_name_id': val.production_line_name_id.id, + 'machine_tool_code': val.machine_tool_code, + 'receive_person': val.receive_person, + 'receive_time': val.receive_time}) else: - self.env['sf.delivery.of.cargo.from.storage'].create(desc_1) + self.env['sf.delivery.of.cargo.from.storage'].create({ + 'functional_tool_code': self.functional_tool_code, + 'name': self.name.id, + 'functional_tool_type_id': self.functional_tool_type_id.id, + 'production_line_name_id': self.production_line_name_id.id, + 'machine_tool_code': self.machine_tool_code, + 'receive_person': self.receive_person, + 'receive_time': self.receive_time}) return { 'type': 'ir.actions.act_window', diff --git a/sf_tool_management/security/ir.model.access.csv b/sf_tool_management/security/ir.model.access.csv index fe606ac1..d95ad4c5 100644 --- a/sf_tool_management/security/ir.model.access.csv +++ b/sf_tool_management/security/ir.model.access.csv @@ -1,5 +1,6 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_sf_functional_cutting_tool_entity,sf.functional.cutting.tool.entity,model_sf_functional_cutting_tool_entity,base.group_user,1,1,1,1 +access_sf_functional_cutting_tool_entity_cache,sf.functional.cutting.tool.entity.cache,model_sf_functional_cutting_tool_entity_cache,base.group_user,1,1,1,1 access_sf.functional.tool.warning,sf.functional.tool.warning,model_sf_functional_tool_warning,base.group_user,1,1,1,1 access_sf.real.time.distribution.of.functional.tools,sf.real.time.distribution.of.functional.tools,model_sf_real_time_distribution_of_functional_tools,base.group_user,1,1,1,1 access_sf.inbound.and.outbound.records.of.functional.tools,sf.inbound.and.outbound.records.of.functional.tools,model_sf_inbound_and_outbound_records_of_functional_tools,base.group_user,1,1,1,1 diff --git a/sf_tool_management/wizard/wizard.py b/sf_tool_management/wizard/wizard.py index 2927ba63..8973a8b8 100644 --- a/sf_tool_management/wizard/wizard.py +++ b/sf_tool_management/wizard/wizard.py @@ -244,8 +244,12 @@ class FunctionalToolAssemblyOrder(models.TransientModel): # 如果是新刀,则创建功能刀具列表、 self.env['sf.functional.cutting.tool.entity'].create(desc_2) else: - self.env['sf.functional.cutting.tool.entity'].search([ - ('code', '=', self.code)]).write(desc_2) + record = self.env['sf.functional.cutting.tool.entity'].search([ + ('code', '=', self.code)]) + # 创建功能刀具缓存信息 + self.env['sf.functional.cutting.tool.entity.cache'].create(record) + # 修改功能刀具列表信息 + record.write(desc_2) # # 创建功能刀具预警、实时分布、出入库记录的新记录 # self.env['sf.functional.tool.warning'].create(desc) # self.env['sf.real.time.distribution.of.functional.tools'].create(desc) From 17476fdcf482d6da65c6452abe6085a6170a73f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?WEB=E8=AE=B8=E4=BD=95=E5=93=B2=5Cxuhez?= Date: Thu, 3 Aug 2023 17:31:11 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E7=9C=8B=E6=9D=BF=E8=A7=86=E5=9B=BE=E5=8A=A8=E6=80=81=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=A0=87=E7=AD=BE=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/__manifest__.py | 13 ++++++ .../static/src/js/kanban_change.js | 43 +++++++++++++++++++ .../static/src/scss/kanban_change.scss | 18 ++++++++ .../static/src/xml/kanban_change.xml | 21 +++++++++ 4 files changed, 95 insertions(+) create mode 100644 sf_manufacturing/static/src/js/kanban_change.js create mode 100644 sf_manufacturing/static/src/scss/kanban_change.scss create mode 100644 sf_manufacturing/static/src/xml/kanban_change.xml diff --git a/sf_manufacturing/__manifest__.py b/sf_manufacturing/__manifest__.py index f5a1d293..1a1f11db 100644 --- a/sf_manufacturing/__manifest__.py +++ b/sf_manufacturing/__manifest__.py @@ -23,8 +23,21 @@ 'views/production_line_view.xml', 'views/tray_view.xml', 'views/model_type_view.xml', + # 'views/kanban_change.xml' ], + 'assets': { + + 'web.assets_qweb': [ + ], + + 'web.assets_backend': [ + 'sf_manufacturing/static/src/xml/kanban_change.xml', + 'sf_manufacturing/static/src/js/kanban_change.js', + 'sf_manufacturing/static/src/scss/kanban_change.scss' + ] + + }, 'demo': [ ], 'qweb': [ diff --git a/sf_manufacturing/static/src/js/kanban_change.js b/sf_manufacturing/static/src/js/kanban_change.js new file mode 100644 index 00000000..b60a84a4 --- /dev/null +++ b/sf_manufacturing/static/src/js/kanban_change.js @@ -0,0 +1,43 @@ +/** @odoo-module */ + +import { KanbanController } from "@web/views/kanban/kanban_controller"; +import { kanbanView } from "@web/views/kanban/kanban_view"; +import { registry } from "@web/core/registry"; + +// the controller usually contains the Layout and the renderer. +class CustomKanbanController extends KanbanController { + // Your logic here, override or insert new methods... + // if you override setup(), don't forget to call super.setup() + + async setup() { + super.setup(); + console.log('99999999111'); + this.workOrders = await this.getAllWorkOrders(); + console.log('lines', this.workOrders); +} + + + async getAllWorkOrders() { + const response = await this.env.services.rpc('/web/dataset/call_kw',{ + model: 'sf.production.line', + method: 'search_read', + args: [], + kwargs: {}, + }); + console.log('response', response); + // 你可以在这里处理响应,例如将其存储在控制器的状态中 + return response; + } + + +} + +CustomKanbanController.template = "sf_manufacturing.CustomKanbanView1"; + +export const customKanbanView = { + ...kanbanView, // contains the default Renderer/Controller/Model + Controller: CustomKanbanController, +}; + +// Register it to the views registry +registry.category("views").add("custom_kanban1", customKanbanView); \ No newline at end of file diff --git a/sf_manufacturing/static/src/scss/kanban_change.scss b/sf_manufacturing/static/src/scss/kanban_change.scss new file mode 100644 index 00000000..82e31b87 --- /dev/null +++ b/sf_manufacturing/static/src/scss/kanban_change.scss @@ -0,0 +1,18 @@ +.alerts { + display: flex; + justify-content: flex-start; + align-items: center; +} + +.alerts>div { + width: 3vw; + height: 1.5vw; + border: 1px solid grey; + border-radius: 5px; + margin: 0 0.5vw; + justify-content: center; +} + +.alerts>div:nth-child(1) { + margin-left: 0 !important; +} \ No newline at end of file diff --git a/sf_manufacturing/static/src/xml/kanban_change.xml b/sf_manufacturing/static/src/xml/kanban_change.xml new file mode 100644 index 00000000..c18fc103 --- /dev/null +++ b/sf_manufacturing/static/src/xml/kanban_change.xml @@ -0,0 +1,21 @@ + + + + + + + + + +
+ + +
+ +
+
+
+
+ +
+
\ No newline at end of file From 921336ad135f02ab972d3e3a800a48b027dba6de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?WEB=E8=AE=B8=E4=BD=95=E5=93=B2=5Cxuhez?= Date: Thu, 3 Aug 2023 17:32:43 +0800 Subject: [PATCH 4/6] no message --- .../static/tests/tours/tour_test_barcode_flows_picking.js | 1 + 1 file changed, 1 insertion(+) diff --git a/stock_barcode/static/tests/tours/tour_test_barcode_flows_picking.js b/stock_barcode/static/tests/tours/tour_test_barcode_flows_picking.js index 0c1c0c12..fd6e424d 100644 --- a/stock_barcode/static/tests/tours/tour_test_barcode_flows_picking.js +++ b/stock_barcode/static/tests/tours/tour_test_barcode_flows_picking.js @@ -466,6 +466,7 @@ tour.register('test_receipt_reserved_1', {test: true}, [ trigger: '.o_field_widget[name="product_id"]', run: function() { helper.assertFormLocationDest('WH/Stock'); + console.log('123') }, }, ...tour.stepUtils.discardBarcodeForm(), From 7f6ea605d26220905d9c27ee4498e8521c6e8dc6 Mon Sep 17 00:00:00 2001 From: yuxianghui <1608204036@qq.com> Date: Fri, 4 Aug 2023 10:40:35 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=88=80=E5=85=B7=E7=BB=84=E8=A3=85=E5=87=BA=E5=BA=93?= =?UTF-8?q?bug=EF=BC=8C=E4=BC=98=E5=8C=96=E4=BA=86=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=88=80=E5=85=B7=E7=BB=84=E8=A3=85=E5=AF=B9=E8=B1=A1=E7=BB=84?= =?UTF-8?q?=E8=A3=85=E6=97=A7=E5=88=80=E5=85=B7=E6=97=B6=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_tool_management/models/base.py | 30 ++++++++++++--- sf_tool_management/wizard/wizard.py | 57 ++++++++++++++++++++--------- 2 files changed, 64 insertions(+), 23 deletions(-) diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py index 675542f1..0e25de4f 100644 --- a/sf_tool_management/models/base.py +++ b/sf_tool_management/models/base.py @@ -652,11 +652,33 @@ class FunctionalToolAssembly(models.Model): # 获取功能刀具缓存信息 record = self.env['sf.functional.cutting.tool.entity.cache'].search([ ('code', '=', self.functional_tool_code)]) - # 删除缓存信息 - record.unlink() # 修改功能刀具列表信息 self.env['sf.functional.cutting.tool.entity'].search([ - ('code', '=', self.functional_tool_code)]).write(record) + ('code', '=', self.functional_tool_code)]).write({ + 'code': record.code, + 'name': record.name, + 'mrs_cutting_tool_type_id': record.mrs_cutting_tool_type_id.id, + 'mrs_cutting_tool_model_id': record.mrs_cutting_tool_model_id.id, + 'mrs_cutting_tool_integral_model_ids': record.mrs_cutting_tool_integral_model_ids.ids, + 'mrs_cutting_tool_blade_model_ids': record.mrs_cutting_tool_blade_model_ids.ids, + 'mrs_cutting_tool_cutterbar_model_ids': record.mrs_cutting_tool_cutterbar_model_ids.ids, + 'mrs_cutting_tool_cutterpad_model_ids': record.mrs_cutting_tool_cutterpad_model_ids.ids, + 'mrs_cutting_tool_cutterhandle_model_ids': record.mrs_cutting_tool_cutterhandle_model_ids.ids, + 'mrs_cutting_tool_cutterhead_model_ids': record.mrs_cutting_tool_cutterhead_model_ids.ids, + 'diameter': record.diameter, + 'tool_grade': record.tool_grade, + 'machining_accuracy': record.machining_accuracy, + 'tool_length': record.tool_length, + 'blade_number': record.blade_number, + 'integral_blade_length': record.integral_blade_length, + 'effective_blade_length': record.effective_blade_length, + 'max_life': record.max_life, + 'is_standard': record.is_standard, + 'applicable_range': record.applicable_range, + 'image': record.image, + }) + # 删除缓存信息 + record.unlink() # # 删除功能刀具预警、实时分布、出入库记录的新记录 # self.env['sf.functional.tool.warning'].search([ @@ -714,8 +736,6 @@ class FunctionalToolAssembly(models.Model): """ self.env['sf.delivery.of.cargo.from.storage'].search([]).unlink() - - vals = self.env['sf.functional.tool.assembly'].search([('check_box_1', '=', True),('assemble_status', '=', '1')]) if vals: for val in vals: diff --git a/sf_tool_management/wizard/wizard.py b/sf_tool_management/wizard/wizard.py index 8973a8b8..2699cf89 100644 --- a/sf_tool_management/wizard/wizard.py +++ b/sf_tool_management/wizard/wizard.py @@ -214,7 +214,8 @@ class FunctionalToolAssemblyOrder(models.TransientModel): } self.env['sf.functional.tool.assembly'].search([ ('machine_tool_name_id', '=', self.machine_tool_name_id.id), - ('cutter_spacing_code', '=', self.cutter_spacing_code) + ('cutter_spacing_code', '=', self.cutter_spacing_code), + ('assemble_status', '=', '0'), ]).write(desc_1) # 封装功能刀具数据 @@ -244,10 +245,31 @@ class FunctionalToolAssemblyOrder(models.TransientModel): # 如果是新刀,则创建功能刀具列表、 self.env['sf.functional.cutting.tool.entity'].create(desc_2) else: - record = self.env['sf.functional.cutting.tool.entity'].search([ - ('code', '=', self.code)]) + record = self.env['sf.functional.cutting.tool.entity'].search([('code', '=', self.code)]) # 创建功能刀具缓存信息 - self.env['sf.functional.cutting.tool.entity.cache'].create(record) + self.env['sf.functional.cutting.tool.entity.cache'].create({ + 'code': record.code, + 'name': record.name, + 'mrs_cutting_tool_type_id': record.mrs_cutting_tool_type_id.id, + 'mrs_cutting_tool_model_id': record.mrs_cutting_tool_model_id.id, + 'mrs_cutting_tool_integral_model_ids': record.mrs_cutting_tool_integral_model_ids.ids, + 'mrs_cutting_tool_blade_model_ids': record.mrs_cutting_tool_blade_model_ids.ids, + 'mrs_cutting_tool_cutterbar_model_ids': record.mrs_cutting_tool_cutterbar_model_ids.ids, + 'mrs_cutting_tool_cutterpad_model_ids': record.mrs_cutting_tool_cutterpad_model_ids.ids, + 'mrs_cutting_tool_cutterhandle_model_ids': record.mrs_cutting_tool_cutterhandle_model_ids.ids, + 'mrs_cutting_tool_cutterhead_model_ids': record.mrs_cutting_tool_cutterhead_model_ids.ids, + 'diameter': record.diameter, + 'tool_grade': record.tool_grade, + 'machining_accuracy': record.machining_accuracy, + 'tool_length': record.tool_length, + 'blade_number': record.blade_number, + 'integral_blade_length': record.integral_blade_length, + 'effective_blade_length': record.effective_blade_length, + 'max_life': record.max_life, + 'is_standard': record.is_standard, + 'applicable_range': record.applicable_range, + 'image': record.image, + }) # 修改功能刀具列表信息 record.write(desc_2) # # 创建功能刀具预警、实时分布、出入库记录的新记录 @@ -281,26 +303,25 @@ class DeliveryOfCargoFromStorage(models.TransientModel): print(vals) if vals: for val in vals: - self.env['sf.functional.tool.assembly'].search([ + print(val) + record = self.env['sf.functional.tool.assembly'].search([ ('functional_tool_code', '=', val.functional_tool_code), - ('machine_tool_code', '=', val.machine_tool_code), - ('name', '=', val.name.id), - ('production_line_name_id', '=', val.production_line_name_id.id) - ]).write({ - 'assemble_status': '2', - 'receive_person': self.env.user.name, - 'receive_time': fields.Datetime.now() - }) - - tool_assembly = self.env['sf.functional.tool.assembly'].search([ - ('functional_tool_code', '=', val.functional_tool_code), - ('name', '=', val.name.id) + ('assemble_status', '=', '1') ]) # 判断装刀任务来源,如果来源于CAM装刀,则修改CAM装刀的计划执行状态 - if tool_assembly.loading_task_source == '0': + if record.loading_task_source == '0': self.env['sf.cam.work.order.program.knife.plan'].search([ ('functional_tool_code', '=', val.functional_tool_code), ('functional_tool_name_id', '=', val.name.id) ]).write({ 'plan_execute_status': '2' }) + + record.write({ + 'assemble_status': '2', + 'receive_person': self.env.user.name, + 'receive_time': fields.Datetime.now() + }) + + + From cd042a80739290e5536a1f38ca095146384f5d53 Mon Sep 17 00:00:00 2001 From: yuxianghui <1608204036@qq.com> Date: Fri, 4 Aug 2023 16:24:12 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=88=80=E5=85=B7=E7=BB=84=E8=A3=85=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E7=BB=84=E8=A3=85=E5=92=8C=E5=8F=96=E6=B6=88=E7=BB=84=E8=A3=85?= =?UTF-8?q?=E6=97=B6=E5=8A=9F=E8=83=BD=E5=88=80=E5=85=B7=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E7=9A=84many2many=E7=B1=BB=E5=9E=8B=E5=AD=97=E6=AE=B5=E8=B5=8B?= =?UTF-8?q?=E5=80=BC=E4=B8=BA[]=E6=97=B6=E5=80=BC=E4=B8=8D=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_tool_management/models/base.py | 16 +++++++++++----- sf_tool_management/wizard/wizard.py | 12 ++++++++---- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py index 0e25de4f..2abcc2e7 100644 --- a/sf_tool_management/models/base.py +++ b/sf_tool_management/models/base.py @@ -651,10 +651,12 @@ class FunctionalToolAssembly(models.Model): else: # 获取功能刀具缓存信息 record = self.env['sf.functional.cutting.tool.entity.cache'].search([ - ('code', '=', self.functional_tool_code)]) - # 修改功能刀具列表信息 + ('code', '=', self.functional_tool_code)], limit=1) + # 删除现有功能刀具列表记录 self.env['sf.functional.cutting.tool.entity'].search([ - ('code', '=', self.functional_tool_code)]).write({ + ('code', '=', self.functional_tool_code)]).unlink() + # 创建新的功能刀具列表信息 + self.env['sf.functional.cutting.tool.entity'].create({ 'code': record.code, 'name': record.name, 'mrs_cutting_tool_type_id': record.mrs_cutting_tool_type_id.id, @@ -678,7 +680,9 @@ class FunctionalToolAssembly(models.Model): 'image': record.image, }) # 删除缓存信息 - record.unlink() + self.env['sf.functional.cutting.tool.entity.cache'].search([ + ('code', '=', self.functional_tool_code)]).unlink() + # # 删除功能刀具预警、实时分布、出入库记录的新记录 # self.env['sf.functional.tool.warning'].search([ @@ -688,9 +692,11 @@ class FunctionalToolAssembly(models.Model): # self.env['sf.inbound.and.outbound.records.of.functional.tools'].search([ # ('code', '=', self.functional_tool_code)]).unlink() + # 修改功能刀具组装的组装信息 self.env['sf.functional.tool.assembly'].search([ ('machine_tool_name_id', '=', self.machine_tool_name_id.id), - ('cutter_spacing_code', '=', self.cutter_spacing_code) + ('cutter_spacing_code', '=', self.cutter_spacing_code), + ('assemble_status', '=', '1') ]).write({ 'mrs_cutting_tool_integral_model_ids': None, 'integral_code': None, diff --git a/sf_tool_management/wizard/wizard.py b/sf_tool_management/wizard/wizard.py index 2699cf89..a4ebf243 100644 --- a/sf_tool_management/wizard/wizard.py +++ b/sf_tool_management/wizard/wizard.py @@ -270,8 +270,10 @@ class FunctionalToolAssemblyOrder(models.TransientModel): 'applicable_range': record.applicable_range, 'image': record.image, }) - # 修改功能刀具列表信息 - record.write(desc_2) + # 删除功能刀具列表信息 + self.env['sf.functional.cutting.tool.entity'].search([('code', '=', self.code)]).unlink() + # 创建功能刀具列表信息 + self.env['sf.functional.cutting.tool.entity'].search([('code', '=', self.code)]).create(desc_2) # # 创建功能刀具预警、实时分布、出入库记录的新记录 # self.env['sf.functional.tool.warning'].create(desc) # self.env['sf.real.time.distribution.of.functional.tools'].create(desc) @@ -300,10 +302,12 @@ class DeliveryOfCargoFromStorage(models.TransientModel): :return: """ vals = self.env['sf.delivery.of.cargo.from.storage'].search([]) - print(vals) if vals: for val in vals: - print(val) + # 删除功能刀具列表缓存的数据 + self.env['sf.functional.cutting.tool.entity.cache'].search([ + ('code', '=', self.functional_tool_code)]).unlink() + record = self.env['sf.functional.tool.assembly'].search([ ('functional_tool_code', '=', val.functional_tool_code), ('assemble_status', '=', '1')