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