diff --git a/sf_message/data/bussiness_node.xml b/sf_message/data/bussiness_node.xml index c6f6546a..7c6c88d0 100644 --- a/sf_message/data/bussiness_node.xml +++ b/sf_message/data/bussiness_node.xml @@ -161,9 +161,13 @@ purchase.order - - 待质检提醒 - product.product + + + + + + 待质检 + quality.check diff --git a/sf_message/data/template_data.xml b/sf_message/data/template_data.xml index 3af63afe..158535a4 100644 --- a/sf_message/data/template_data.xml +++ b/sf_message/data/template_data.xml @@ -414,16 +414,28 @@ - + + + + + + + + + + + + + 待质检提醒 - - product.product - + + quality.check + markdown normal ### 待质检提醒: -单号:产品[{{name}}]({{url}}) -事项:有{{num}}个质检单需要处理。 +单号:[{{name}}]({{url}}) +事项:有一个质检单需要处理({{type_name}})。 diff --git a/sf_message/models/sf_message_purchase_request.py b/sf_message/models/sf_message_purchase_request.py index eb4b5bdb..56d5df42 100644 --- a/sf_message/models/sf_message_purchase_request.py +++ b/sf_message/models/sf_message_purchase_request.py @@ -12,7 +12,7 @@ class SFMessagePurchaseRequest(models.Model): def write(self, vals): original_state = self.state res = super(SFMessagePurchaseRequest, self).write(vals) - if res and vals.get('state') == 'to_approve' and original_state != 'to_approve': + if res and vals.get('state') == 'approved' and original_state != 'approved': self.add_queue('采购申请待处理通知') return res diff --git a/sf_message/models/sf_message_quality_check.py b/sf_message/models/sf_message_quality_check.py index 15713791..83708c7b 100644 --- a/sf_message/models/sf_message_quality_check.py +++ b/sf_message/models/sf_message_quality_check.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import logging from odoo import models, fields, api, _ +from urllib.parse import urlencode class SFMessageQualityCheck(models.Model): @@ -10,25 +11,70 @@ class SFMessageQualityCheck(models.Model): @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) + # 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) + qc_ids = result.filiter(lambda qc: qc.quality_state == 'none') + if qc_ids: + message_template_id = self.env['jikimo.message.template'].sudo().search([('name', '=', '待质检提醒')]) + for qc in qc_ids: + queue_id = self.env['jikimo.message.queue'].sudo().search( + [('message_template_id', '=', message_template_id[-1].id), ('res_id', '=', qc.id)]) + if not queue_id and '制造' not in [pt.name for pt in qc.point_id.picking_type_ids]: + qc.add_queue('待质检') 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([ - ("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 + # + # 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([ + # ("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 + def write(self, vals): + original_state = self.quality_state + res = super(SFMessageQualityCheck, self).write(vals) + if res and vals.get('quality_state') == 'none' and original_state != 'none': + message_template_id = self.env['jikimo.message.template'].sudo().search([('name', '=', '待质检提醒')]) + queue_id = self.env['jikimo.message.queue'].sudo().search( + [('message_template_id', '=', message_template_id[-1].id), ('res_id', '=', self.id)]) + if not queue_id and '制造' not in [pt.name for pt in self.point_id.picking_type_ids]: + self.add_queue('待质检') + return res + + 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)) + qc_line = self.env['quality.check'].search([('id', '=', int(message_queue_id.res_id))]) + content = content.replace('{{name}}', qc_line.name).replace( + '{{request_url}}', url).replace('{{type_name}}', qc_line.point_id.title) + contents.append(content) + return contents, message_queue_ids + + def request_url(self, id): + url = self.env['ir.config_parameter'].get_param('web.base.url') + action_id = self.env.ref('quality_control.quality_check_action_main').id + menu_id = self.env.ref('quality_control.menu_quality_checks').id + # 查询参数 + params = {'id': id, 'menu_id': menu_id, 'action': action_id, + 'model': 'quality.check', + 'view_type': 'form'} + # 拼接查询参数 + query_string = urlencode(params) + # 拼接URL + full_url = url + "/web#" + query_string + return full_url