From f92bd8263ca03b1eb1e2bc529c2fd369fae33fa7 Mon Sep 17 00:00:00 2001 From: guanhuan Date: Thu, 2 Jan 2025 14:20:31 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=BE=85=E8=B4=A8=E6=A3=80=E6=8F=90?= =?UTF-8?q?=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- quality_control/views/quality_views.xml | 1 + sf_message/__manifest__.py | 2 +- sf_message/data/bussiness_node.xml | 5 +++ sf_message/data/template_data.xml | 12 +++++++ sf_message/models/__init__.py | 1 + sf_message/models/sf_message_product.py | 14 +++++++- sf_message/models/sf_message_quality_check.py | 34 +++++++++++++++++++ 7 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 sf_message/models/sf_message_quality_check.py diff --git a/quality_control/views/quality_views.xml b/quality_control/views/quality_views.xml index 790f8cef..c40d42b2 100644 --- a/quality_control/views/quality_views.xml +++ b/quality_control/views/quality_views.xml @@ -519,6 +519,7 @@ Quality Checks quality.check tree,kanban,form,pivot,graph + {'is_web_request': True}

No quality check found diff --git a/sf_message/__manifest__.py b/sf_message/__manifest__.py index 6796a50b..8c769d60 100644 --- a/sf_message/__manifest__.py +++ b/sf_message/__manifest__.py @@ -12,7 +12,7 @@ 'category': 'sf', 'website': 'https://www.sf.jikimo.com', 'depends': ['sale', 'purchase', 'sf_plan', 'jikimo_message_notify', 'stock', 'sf_quality', 'mrp', - 'sf_manufacturing','product'], + 'sf_manufacturing','product','quality'], 'data': [ 'data/bussiness_node.xml', 'data/cron_data.xml', diff --git a/sf_message/data/bussiness_node.xml b/sf_message/data/bussiness_node.xml index e7c3b0ba..b429d766 100644 --- a/sf_message/data/bussiness_node.xml +++ b/sf_message/data/bussiness_node.xml @@ -150,5 +150,10 @@ 采购单已逾期提醒 purchase.order + + + 待质检提醒 + product.product + \ No newline at end of file diff --git a/sf_message/data/template_data.xml b/sf_message/data/template_data.xml index 52b226e3..11f05a3c 100644 --- a/sf_message/data/template_data.xml +++ b/sf_message/data/template_data.xml @@ -389,5 +389,17 @@ 事项:[共有{{num}}个采购订单已逾期]({{url}}) + + + 待质检提醒 + + product.product + + markdown + normal + ### 待质检提醒: +单号:产品[{{name}}]({{url}}) +事项:有{{num}}个质检单需要处理。 + \ No newline at end of file diff --git a/sf_message/models/__init__.py b/sf_message/models/__init__.py index 8c215042..f8f6fcf1 100644 --- a/sf_message/models/__init__.py +++ b/sf_message/models/__init__.py @@ -13,3 +13,4 @@ from . import sf_message_maintenance_logs from . import sf_message_mrp_production_wizard from . import sf_message_mrp_production_adjust_wizard from . import sf_message_product +from . import sf_message_quality_check \ No newline at end of file diff --git a/sf_message/models/sf_message_product.py b/sf_message/models/sf_message_product.py index 85ac4ce2..0f2cfd7e 100644 --- a/sf_message/models/sf_message_product.py +++ b/sf_message/models/sf_message_product.py @@ -3,7 +3,7 @@ from odoo import models, fields, api, _ from urllib.parse import urlencode -class SFMessagePlan(models.Model): +class SFMessageProduct(models.Model): _name = 'product.product' _inherit = ['product.product', 'jikimo.message.dispatch'] @@ -28,6 +28,18 @@ class SFMessagePlan(models.Model): '{{number}}', str(production_num)).replace( '{{request_url}}', url) contents.append(content) + if message_queue_id.message_template_id.name == '待质检提醒': + content = message_queue_id.message_template_id.content + product_product = self.env['product.product'].sudo().search([('id', '=', int(message_queue_id.res_id))]) + quality_check_num = self.env['quality.check'].sudo().search_count( + [('product_id', '=', product_product.id), ('quality_state', '=', 'none')]) + if quality_check_num >= 1: + url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') + action_id = self.env.ref('quality_control.quality_check_action_report').id + url_with_id = f"{url}/web#view_type=list&action={action_id}" + content = content.replace('{{name}}', product_product.name).replace('{{url}}', url_with_id).replace( + '{{num}}', str(quality_check_num)) + contents.append(content) return contents, message_queue_ids def get_request_url(self): diff --git a/sf_message/models/sf_message_quality_check.py b/sf_message/models/sf_message_quality_check.py new file mode 100644 index 00000000..c53adda9 --- /dev/null +++ b/sf_message/models/sf_message_quality_check.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +import logging +from odoo import models, fields, api, _ + + +class SFMessageQualityCheck(models.Model): + _name = 'quality.check' + _inherit = ['quality.check', 'jikimo.message.dispatch'] + + @api.model_create_multi + def create(self, vals_list): + result = super().create(vals_list) + try: + # 判断是否为web页面创建请求 + is_web_request = self.env.context.get('is_web_request', False) + if not is_web_request: + for obj in result: + jikimo_message_queue = self.get_message_queue(obj.product_id.id) + if not jikimo_message_queue: + obj.product_id.add_queue('待质检提醒') + except Exception as e: + logging.info('add_queue待质检提醒 error:%s' % e) + return result + + def get_message_queue(self, res_id): + business_node_id = self.env.ref('sf_message.bussiness_quality_check').id + message_template = self.env["jikimo.message.template"].sudo().search([ + ("model", "=", self._name), + ("bussiness_node_id", "=", business_node_id) + ], limit=1) + jikimo_message_queue = self.env['jikimo.message.queue'].sudo().search( + [('res_id', '=', res_id), ("message_status", "in", ("pending", "sent")), + ('message_template_id', '=', message_template.id)]) + return jikimo_message_queue From eaaa13fb9aa2db1be8ec4fc126815b35d7d5e5a7 Mon Sep 17 00:00:00 2001 From: guanhuan Date: Thu, 2 Jan 2025 14:21:18 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=BE=85=E8=B4=A8=E6=A3=80=E6=8F=90?= =?UTF-8?q?=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_message/models/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sf_message/models/__init__.py b/sf_message/models/__init__.py index f8f6fcf1..18c6b873 100644 --- a/sf_message/models/__init__.py +++ b/sf_message/models/__init__.py @@ -13,4 +13,4 @@ from . import sf_message_maintenance_logs from . import sf_message_mrp_production_wizard from . import sf_message_mrp_production_adjust_wizard from . import sf_message_product -from . import sf_message_quality_check \ No newline at end of file +from . import sf_message_quality_check