1、重写待质检提醒消息通知;2、优化采购申请已批准消息通知

This commit is contained in:
yuxianghui
2025-05-28 15:56:42 +08:00
parent d0ee2a6564
commit 3304398c4c
4 changed files with 92 additions and 30 deletions

View File

@@ -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

View File

@@ -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