1、重写待质检提醒消息通知;2、优化采购申请已批准消息通知
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user