diff --git a/sf_message/models/sf_message_sale.py b/sf_message/models/sf_message_sale.py index fb9d5976..ef94b7fe 100644 --- a/sf_message/models/sf_message_sale.py +++ b/sf_message/models/sf_message_sale.py @@ -28,12 +28,20 @@ class SFMessageSale(models.Model): # 继承并重写jikimo.message.dispatch的_get_message() def _get_message(self, message_queue_ids): res = super(SFMessageSale, self)._get_message(message_queue_ids) - if message_queue_ids.message_template_id.bussiness_node_id.name == '确认接单': - # sale_order = self.env['sale.order'].search([('id', '=', message_queue_ids.model.res_id)]) - sale_order_line = self.env['sale.order.line'].search([('order_id', '=', int(message_queue_ids.res_id))]) - if len(sale_order_line) == 1: - product = sale_order_line[0].product_id.name - elif len(sale_order_line) > 1: - product = '%s...' % sale_order_line[0].product_id.name - res[0] = res[0].replace('{{product_id}}', product) + new_res = [] + processed_messages = set() # 用于跟踪已经处理过的消息 + for item in message_queue_ids: + if item.message_template_id.bussiness_node_id.name == '确认接单': + sale_order_line = self.env['sale.order.line'].search([('order_id', '=', int(item.res_id))]) + if len(sale_order_line) == 1: + product = sale_order_line[0].product_id.name + elif len(sale_order_line) > 1: + product = '%s...' % sale_order_line[0].product_id.name + for message in res: + message_text = message.replace('{{product_id}}', product) + if message_text not in processed_messages: + new_res.append(message_text) + processed_messages.add(message_text) + if new_res: + res = new_res return res