From e4f6bc46322f48891915ed4dda5a40ae6614bf06 Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Mon, 11 Dec 2023 14:36:34 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E6=9D=83=E9=99=90=E5=8E=BB=E6=8E=89?= =?UTF-8?q?=E7=BB=A7=E6=89=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/security/group_security.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sf_base/security/group_security.xml b/sf_base/security/group_security.xml index 72310cfc..dd78c2c0 100644 --- a/sf_base/security/group_security.xml +++ b/sf_base/security/group_security.xml @@ -60,7 +60,6 @@ 销售总监 - @@ -72,7 +71,7 @@ 计划总监 - + From 94df139110226ae8466d930f46ebb23ddbc5745d Mon Sep 17 00:00:00 2001 From: yuxianghui <3437689193@qq.com> Date: Mon, 11 Dec 2023 14:41:31 +0800 Subject: [PATCH 2/9] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=A2=9E=E5=88=80?= =?UTF-8?q?=E5=85=B7=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E6=97=B6=E6=A0=B9=E6=8D=AE=E5=B7=B2=E6=9C=89=E6=9C=BA=E5=BA=8A?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=AD=98=E5=9C=A8=E7=9A=84=E5=88=80=E4=BD=8D?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=9C=BA=E5=8F=B0=E6=8D=A2=E5=88=80=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_tool_management/__init__.py | 31 +++++++++++++++--------------- sf_tool_management/__manifest__.py | 1 + sf_tool_management/models/base.py | 12 +++++++++++- 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/sf_tool_management/__init__.py b/sf_tool_management/__init__.py index bb4c0be1..ed3fccb9 100644 --- a/sf_tool_management/__init__.py +++ b/sf_tool_management/__init__.py @@ -2,19 +2,18 @@ from . import models from . import wizard -# from odoo import api, SUPERUSER_ID -# import logging -# _logger = logging.getLogger(__name__) -# -# -# def _sf_tool_management_post_install(cr, registry): -# # 这里执行你想要在安装模块时执行的操作,包括调用和执行模型的方法 -# env = api.Environment(cr, SUPERUSER_ID, {}) -# -# # 获取需要执行方法的模型 -# model_obj = env['sf.machine.table.tool.changing.apply'] -# logging.info('post_install方法执行了') -# print('post_install方法执行了') -# -# # 调用模型方法 -# model_obj.create_tool_change_application() +from odoo import api, SUPERUSER_ID +import logging + +_logger = logging.getLogger(__name__) + + +def _post_install(cr, registry): + # 这里执行你想要在安装模块时执行的操作,包括调用和执行模型的方法 + env = api.Environment(cr, SUPERUSER_ID, {}) + + # 获取需要执行方法的模型 + model_obj = env['sf.machine.table.tool.changing.apply'] + + # 调用模型方法 + model_obj.create_tool_change_application() diff --git a/sf_tool_management/__manifest__.py b/sf_tool_management/__manifest__.py index a3350a58..c3bb2e19 100644 --- a/sf_tool_management/__manifest__.py +++ b/sf_tool_management/__manifest__.py @@ -21,6 +21,7 @@ ], 'demo': [ ], + 'post_init_hook': '_post_install', 'assets': { 'web.assets_qweb': [ diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py index 71cb41f5..54834390 100644 --- a/sf_tool_management/models/base.py +++ b/sf_tool_management/models/base.py @@ -477,7 +477,17 @@ class MachineTableToolChangingApply(models.Model): [('name', '=', self.name.id)]).write({'status': '0'}) def create_tool_change_application(self): - print("调用了create_tool_change_application()") + maintenance_equipment_ids = self.env['maintenance.equipment'].sudo().search( + [('product_template_ids', '!=', False)]) + tool_changing_apply = self.env['sf.machine.table.tool.changing.apply'] + if maintenance_equipment_ids: + for maintenance_equipment_id in maintenance_equipment_ids: + if maintenance_equipment_id.product_template_ids: + for product_template_id in maintenance_equipment_id.product_template_ids: + tool_changing_apply.sudo().create({ + 'maintenance_equipment_id': product_template_id.equipment_id.id, + 'cutter_spacing_code_id': product_template_id.id + }) class CAMWorkOrderProgramKnifePlan(models.Model): From 55594c119f792f0b22ab08bc70f700b96ece80d9 Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Mon, 11 Dec 2023 14:47:06 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E4=BA=A7=E5=93=81=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=B4=A8=E9=87=8F=E6=9D=83=E9=99=90=E7=BB=84=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_quality/security/ir.model.access.csv | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sf_quality/security/ir.model.access.csv b/sf_quality/security/ir.model.access.csv index be8cddb7..36e9a343 100644 --- a/sf_quality/security/ir.model.access.csv +++ b/sf_quality/security/ir.model.access.csv @@ -39,5 +39,16 @@ access_quality_alert_team_group_sf_tool_user,quality_alert_team_group_sf_tool_us access_quality_alert_team_group_sf_order_user,quality_alert_team_group_sf_order_user,quality.model_quality_alert_team,sf_base.group_sf_order_user,1,0,0,0 access_quality_alert_team_group_sf_mrp_manager,quality_alert_team_group_sf_mrp_manager,quality.model_quality_alert_team,sf_base.group_sf_mrp_manager,1,0,0,0 +access_product_template_group_quality,product_template_group_quality,product.model_product_template,sf_base.group_quality,1,0,0,0 +access_product_template_group_quality_director,product_template_group_quality_director,product.model_product_template,sf_base.group_quality_director,1,0,0,0 +access_product_template_group_plan_dispatch,product_template_group_plan_dispatch,product.model_product_template,sf_base.group_plan_dispatch,1,0,0,0 +access_product_template_group_plan_director,product_template_group_plan_director,product.model_product_template,sf_base.group_plan_director,1,0,0,0 +access_product_template_group_sf_equipment_user,product_template_group_sf_equipment_user,product.model_product_template,sf_base.group_sf_equipment_user,1,0,0,0 +access_product_template_group_sf_tool_user,product_template_group_sf_tool_user,product.model_product_template,sf_base.group_sf_tool_user,1,0,0,0 +access_product_template_group_sf_order_user,product_template_group_sf_order_user,product.model_product_template,sf_base.group_sf_order_user,1,0,0,0 +access_product_template_group_sf_mrp_manager,product_template_group_sf_mrp_manager,product.model_product_template,sf_base.group_sf_mrp_manager,1,0,0,0 +access_product_template_group_equipment_user,product_template_group_equipment_user,product.model_product_template,sf_maintenance.sf_group_equipment_user,1,0,0,0 +access_product_template_group_equipment_manager,product_template_group_equipment_manager,product.model_product_template,sf_maintenance.sf_group_equipment_manager,1,0,0,0 + From 6bf3df0ef4e7d0bbacf79b6184f7b10481f5c5af Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Mon, 11 Dec 2023 14:47:34 +0800 Subject: [PATCH 4/9] =?UTF-8?q?Merge=20branch=20'develop'=20of=20https://e?= =?UTF-8?q?.coding.net/jikimo-hn/jikimo=5Fsfs/jikimo=5Fsf=20into=20feature?= =?UTF-8?q?/=E6=9D=83=E9=99=90=E5=8E=BB=E6=8E=89=E7=BB=A7=E6=89=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- odoo.conf | 2 +- sf_bf_connect/models/jd_eclp.py | 53 +- sf_manufacturing/models/product_template.py | 10 - sf_mrs_connect/models/sync_common.py | 2 +- sf_plan_management/views/plan_base_view.xml | 2 + sf_quality/__manifest__.py | 2 +- sf_tool_management/__init__.py | 17 + sf_tool_management/data/tool_data.xml | 8 + sf_tool_management/models/__init__.py | 2 + sf_tool_management/models/base.py | 72 +- .../models/maintenance_equipment.py | 15 + sf_tool_management/views/tool_base_views.xml | 126 ++-- sf_tool_management/wizard/wizard.py | 8 +- sf_tool_management/wizard/wizard_view.xml | 6 +- sf_warehouse/models/model.py | 157 ++++- sf_warehouse/security/ir.model.access.csv | 2 +- sf_warehouse/views/shelf_location.xml | 328 ++++----- sf_warehouse/views/view.xml | 625 ++++++++++++++---- 18 files changed, 996 insertions(+), 441 deletions(-) create mode 100644 sf_tool_management/data/tool_data.xml create mode 100644 sf_tool_management/models/maintenance_equipment.py diff --git a/odoo.conf b/odoo.conf index 3e914f52..d6db8b7b 100644 --- a/odoo.conf +++ b/odoo.conf @@ -4,7 +4,7 @@ csv_internal_sep = , data_dir = /var/lib/odoo db_host = 172.17.0.2 db_maxconn = 64 -db_name = sf_cs937 +db_name = sf_t2cs_001 db_password = sf db_port = 5432 db_sslmode = prefer diff --git a/sf_bf_connect/models/jd_eclp.py b/sf_bf_connect/models/jd_eclp.py index 4ccb0db6..85092b57 100644 --- a/sf_bf_connect/models/jd_eclp.py +++ b/sf_bf_connect/models/jd_eclp.py @@ -6,6 +6,7 @@ import cpca # from odoo.exceptions import UserError # from odoo.exceptions import ValidationError from odoo import api, fields, models +from odoo.exceptions import ValidationError _logger = logging.getLogger(__name__) @@ -60,38 +61,46 @@ class JdEclp(models.Model): @api.depends('origin') def _truck_info(self): + """ + 根据销售订单号,获取收货人信息 + """ # if 'S' in self.origin: # if self.receiverName and self.receiverMobile and self.receiverProvinceName and self.receiverCityName and # self.receiverCountyName and self.receiverTownName: sale_order_id = self.env['sale.order'].search([('name', '=', self.origin)]) # stock_picking_type_id = self.enc['stock.picking.type'].search([('picking_type_id', '=', '')]) # if sale_order_id.address_of_delivery != False: + # if not sale_order_id: + # raise ValidationError("找不到对应的销售订单") try: - if 'OUT' in self.name: - raw_addres = sale_order_id.address_of_delivery.split('这是一个标志位,用来不分隔字符串') - # _logger.info('=================dddd====', sale_order_id.address_of_delivery) - # _logger.info('========================================', raw_addres) - # _logger.info('=================dddd====', self.display_name) - # _logger.info('=================dddd====', type(self.display_name)) - # # _logger.info(self.receiverName, self.receiverMobile) - # _logger.info(1111111111111111111111111111111111111111111111) - self.receiverName = sale_order_id.person_of_delivery - self.receiverMobile = sale_order_id.telephone_of_delivery - 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] + if 'OUT' in self.name and sale_order_id.address_of_delivery: + raw_address = sale_order_id.address_of_delivery.split('这是一个标志位,用来不分隔字符串') + if sale_order_id.person_of_delivery: + self.receiverName = sale_order_id.person_of_delivery + if sale_order_id.telephone_of_delivery: + self.receiverMobile = sale_order_id.telephone_of_delivery + if raw_address: + self.receiverProvinceName = cpca.transform(raw_address).values.tolist()[0][0] + self.receiverCityName = cpca.transform(raw_address).values.tolist()[0][1] + self.receiverCountyName = cpca.transform(raw_address).values.tolist()[0][2] + self.receiverTownName = cpca.transform(raw_address).values.tolist()[0][3] else: - self.receiverName = self.receiverName - self.receiverMobile = self.receiverMobile - self.receiverProvinceName = self.receiverProvinceName - self.receiverCityName = self.receiverCityName - self.receiverCountyName = self.receiverCountyName - self.receiverTownName = self.receiverTownName + self.receiverName = False + self.receiverMobile = False + self.receiverProvinceName = False + self.receiverCityName = False + self.receiverCountyName = False + self.receiverTownName = False except Exception as e: - print(f"Error address is none: {e}") + raise ValidationError(f"传值有误: {e}") def create_order(self): + """ + 创建订单 + """ + if not self.receiverName or not self.receiverMobile or not self.receiverProvinceName \ + or not self.receiverCityName or not self.receiverCountyName or not self.receiverTownName: + raise ValidationError("当前销售订单缺失收货人信息,补充后才可发起物流!") # sale_order_id = self.env['sale.order'].search([('name', '=', self.origin)]) # if self.carrier_id == '京东物流': @@ -140,6 +149,8 @@ class JdEclp(models.Model): """ 获取物流面单 """ + if not self.carrier_tracking_ref: + raise ValidationError("未下物流单,请先点击京东物流下单按钮!") config = self.env['res.config.settings'].get_values() json1 = { 'params': { diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index bed75e6d..285d43f0 100644 --- a/sf_manufacturing/models/product_template.py +++ b/sf_manufacturing/models/product_template.py @@ -873,13 +873,3 @@ class SfMaintenanceEquipmentTool(models.Model): for record in self: if record.code: record.name = record.code - - @api.model_create_multi - def create(self, vals_list): - tools = super().create(vals_list) - for tool in tools: - self.env['sf.machine.table.tool.changing.apply'].sudo().create({ - 'maintenance_equipment_id': tool.equipment_id.id, - 'cutter_spacing_code_id': tool.id - }) - return tools diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py index 1542cf99..7babb3a4 100644 --- a/sf_mrs_connect/models/sync_common.py +++ b/sf_mrs_connect/models/sync_common.py @@ -32,7 +32,7 @@ class MrStaticResourceDataSync(models.Model): # logging.info("材料型号已每日同步成功") # self.env['mrs.international.standards']._cron_mrs_international_standards_func() # logging.info("材料型号材料应用已每日同步成功") - self.env['material.apply']._cron_material_apply_func() + self.env['material.apply'].sync_material_apply() logging.info("材料型号材料应用已每日同步成功") self.env['sf.production.process.category'].sync_production_process_category_yesterday() logging.info("表面工艺类别已每日同步成功") diff --git a/sf_plan_management/views/plan_base_view.xml b/sf_plan_management/views/plan_base_view.xml index f9606303..f83317c9 100644 --- a/sf_plan_management/views/plan_base_view.xml +++ b/sf_plan_management/views/plan_base_view.xml @@ -40,6 +40,8 @@ name="open_work_schedule_calendar" class="oe_highlight" /> +