From e059d9266de654f20b7d9857db12c4d08da7cdab Mon Sep 17 00:00:00 2001 From: guanhuan Date: Thu, 26 Dec 2024 15:26:12 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=9D=AF=E6=96=99=E5=8F=91=E6=96=99?= =?UTF-8?q?=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_message/models/sf_message_stock_picking.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/sf_message/models/sf_message_stock_picking.py b/sf_message/models/sf_message_stock_picking.py index 05bd6f3e..ed490e8a 100644 --- a/sf_message/models/sf_message_stock_picking.py +++ b/sf_message/models/sf_message_stock_picking.py @@ -72,14 +72,13 @@ class SFMessageStockPicking(models.Model): content = message_queue_id.message_template_id.content stock_picking_line = self.env['stock.picking'].sudo().search( [('id', '=', int(message_queue_id.res_id))]) - if stock_picking_line.state == 'assigned': - url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') - action_id = self.env.ref('stock.action_picking_tree_ready').id - menu_id = self.env.ref('stock.menu_stock_root').id - url_with_id = f"{url}/web#view_type=form&action={action_id}&menu_id={menu_id}&id={stock_picking_line.id}" - content = content.replace('{{name}}', stock_picking_line.name).replace( + url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') + action_id = self.env.ref('stock.action_picking_tree_ready').id + menu_id = self.env.ref('stock.menu_stock_root').id + url_with_id = f"{url}/web#view_type=form&action={action_id}&menu_id={menu_id}&id={stock_picking_line.id}" + content = content.replace('{{name}}', stock_picking_line.name).replace( '{{request_url}}', url_with_id) - contents.append(content) + contents.append(content) elif message_queue_id.message_template_id.name == '订单发货提醒': content = self.deal_stock_picking_sfp(message_queue_id) if content: From 6e2ee60616e974dbe373fe645032dfa10d5307a9 Mon Sep 17 00:00:00 2001 From: guanhuan Date: Thu, 26 Dec 2024 17:15:48 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E5=B7=B2=E4=B8=8B?= =?UTF-8?q?=E5=8F=91=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_message/models/sf_message_product.py | 9 ++++++++- sf_message/models/sf_message_workorder.py | 19 ++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/sf_message/models/sf_message_product.py b/sf_message/models/sf_message_product.py index 4f983e49..3b82dac7 100644 --- a/sf_message/models/sf_message_product.py +++ b/sf_message/models/sf_message_product.py @@ -13,8 +13,15 @@ class SFMessagePlan(models.Model): if message_queue_id.message_template_id.name == '工单已下发通知': content = message_queue_id.message_template_id.content product_product = self.env['product.product'].sudo().search([('id', '=', int(message_queue_id.res_id))]) - production_num = self.env['mrp.production'].sudo().search_count( + mrp_production_list = self.env['mrp.production'].sudo().search( [('product_id', '=', product_product.id)]) + production_num = 0 + for mrp_production_info in mrp_production_list: + routing_type = '人工线下加工' if mrp_production_info.production_type == '人工线下加工' else '装夹预调' + mrp_production_ready = mrp_production_info.workorder_ids.filtered( + lambda w: w.routing_type == routing_type and w.state == 'ready') + if mrp_production_ready: + production_num += 1 if production_num >= 1: url = self.get_request_url() content = content.replace('{{product_id}}', product_product.name).replace( diff --git a/sf_message/models/sf_message_workorder.py b/sf_message/models/sf_message_workorder.py index ee8f6c00..44b3a6b8 100644 --- a/sf_message/models/sf_message_workorder.py +++ b/sf_message/models/sf_message_workorder.py @@ -18,16 +18,21 @@ class SFMessageWork(models.Model): def _compute_state(self): super(SFMessageWork, self)._compute_state() for workorder in self: + min_sequence_wk = None work_ids = workorder.production_id.workorder_ids.filtered(lambda w: w.routing_type == '装夹预调') if work_ids: min_sequence_wk = work_ids.sorted(key=lambda w: w.sequence)[0] - if workorder.state == 'ready' and workorder.routing_type == '装夹预调' and workorder.id == min_sequence_wk.id: - message_template = self.env["jikimo.message.template"].sudo().search([("name", "=", '工单已下发通知')], limit=1) - jikimo_message_queue = self.env['jikimo.message.queue'].sudo().search( - [('res_id', '=', workorder.production_id.product_id.id), ("message_status", "in", ("pending", "sent")), - ('message_template_id', '=', message_template.id)]) - if not jikimo_message_queue: - workorder.production_id.product_id.add_queue('工单已下发通知') + if ( + workorder.state == 'ready' and workorder.routing_type == '装夹预调' and workorder.id == min_sequence_wk.id) or ( + workorder.state == 'ready' and workorder.routing_type == '人工线下加工'): + message_template = self.env["jikimo.message.template"].sudo().search( + [("name", "=", '工单已下发通知')], limit=1) + jikimo_message_queue = self.env['jikimo.message.queue'].sudo().search( + [('res_id', '=', workorder.production_id.product_id.id), + ("message_status", "in", ("pending", "sent")), + ('message_template_id', '=', message_template.id)]) + if not jikimo_message_queue: + workorder.production_id.product_id.add_queue('工单已下发通知') def _get_message(self, message_queue_ids): contents = []