diff --git a/sf_message/models/__init__.py b/sf_message/models/__init__.py index b9cc5079..1e659c52 100644 --- a/sf_message/models/__init__.py +++ b/sf_message/models/__init__.py @@ -11,3 +11,4 @@ from . import sf_message_mrp_production from . import sf_message_quality_cnc_test from . import sf_message_maintenance_logs from . import sf_message_mrp_production_wizard +from . import sf_message_mrp_production_adjust_wizard diff --git a/sf_message/models/sf_message_mrp_production.py b/sf_message/models/sf_message_mrp_production.py index fed30ae9..00748511 100644 --- a/sf_message/models/sf_message_mrp_production.py +++ b/sf_message/models/sf_message_mrp_production.py @@ -28,6 +28,7 @@ class SFMessageMrpProduction(models.Model): def _get_message(self, message_queue_ids): contents = [] unique_products = set() + technology_to_confirmed = set() for message_queue_id in message_queue_ids: if message_queue_id.message_template_id.name == '生产完工入库提醒': content = message_queue_id.message_template_id.content @@ -44,37 +45,39 @@ class SFMessageMrpProduction(models.Model): if message_queue_id.message_template_id.name == '待确认加工路线': content = message_queue_id.message_template_id.content mrp_production = self.env['mrp.production'].sudo().search([('id', '=', int(message_queue_id.res_id))]) - production_num = self.env['mrp.production'].sudo().search_count( - [('product_id', '=', mrp_production.product_id.id), ('state', '=', 'technology_to_confirmed')]) - if production_num >= 1: - url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') - action_id = self.env.ref('mrp.mrp_production_action').id - url_with_id = f"{url}/web#view_type=list&action={action_id}" - content = (content.replace('{{name}}', mrp_production.product_id.name) - .replace('{{url}}', url_with_id) - .replace('{{production_num}}', str(production_num))) - contents.append(content) + technology_to_confirmed.add(mrp_production.product_id.id) if message_queue_id.message_template_id.name == '待排程': content = message_queue_id.message_template_id.content mrp_production = self.env['mrp.production'].sudo().search([('id', '=', int(message_queue_id.res_id))]) unique_products.add(mrp_production.product_id.id) if unique_products: - content_info = content - for products_id in unique_products: - product_name = self.env['product.product'].sudo().search([('id', '=', products_id)]).name - production_num = self.env['mrp.production'].sudo().search_count( - [('product_id', '=', products_id), ('state', '=', 'confirmed')]) - if production_num >= 1: - url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') - action_id = self.env.ref('sf_plan.sf_production_plan_action1').id - url_with_id = f"{url}/web#view_type=list&action={action_id}" - new_content = (content_info.replace('{{name}}', product_name) - .replace('{{url}}', url_with_id) - .replace('{{production_num}}', str(production_num))) - contents.append(new_content) + unique_products_contents = self.get_production_info(content, unique_products, 'confirmed', + 'sf_plan.sf_production_plan_action1') + contents.extend(unique_products_contents) + if technology_to_confirmed: + technology_to_confirmed_contents = self.get_production_info(content, technology_to_confirmed, + 'technology_to_confirmed', + 'mrp.mrp_production_action') + contents.extend(technology_to_confirmed_contents) logging.info('生产完工入库提醒: %s' % contents) return contents + def get_production_info(self, content, product_ids, state, action_id): + contents = [] + for products_id in product_ids: + product_name = self.env['product.product'].sudo().search([('id', '=', products_id)]).name + production_num = self.env['mrp.production'].sudo().search_count( + [('product_id', '=', products_id), ('state', '=', state)]) + if production_num >= 1: + url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') + action_id = self.env.ref(action_id).id + url_with_id = f"{url}/web#view_type=list&action={action_id}" + new_content = (content.replace('{{name}}', product_name) + .replace('{{url}}', url_with_id) + .replace('{{production_num}}', str(production_num))) + contents.append(new_content) + return contents + def request_url(self, id): url = self.env['ir.config_parameter'].get_param('web.base.url') action_id = self.env.ref('stock.action_picking_tree_all').id diff --git a/sf_message/models/sf_message_mrp_production_adjust_wizard.py b/sf_message/models/sf_message_mrp_production_adjust_wizard.py new file mode 100644 index 00000000..224b845f --- /dev/null +++ b/sf_message/models/sf_message_mrp_production_adjust_wizard.py @@ -0,0 +1,17 @@ +import logging +from odoo import models, fields, api, _ + + +class SFMessageMrpProductionAdjustWizard(models.TransientModel): + _name = 'sf.production.technology.re_adjust.wizard' + _description = "制造订单工艺调整" + _inherit = ['sf.production.technology.re_adjust.wizard', 'jikimo.message.dispatch'] + + def confirm(self): + super(SFMessageMrpProductionAdjustWizard, self).confirm() + try: + for production_info in self.production_id: + if production_info.state == 'technology_to_confirmed': + production_info.add_queue('待确认加工路线') + except Exception as e: + logging.info('add_queue待确认加工路线 error:%s' % e) diff --git a/sf_message/models/sf_message_sale.py b/sf_message/models/sf_message_sale.py index c96c845b..a76468dd 100644 --- a/sf_message/models/sf_message_sale.py +++ b/sf_message/models/sf_message_sale.py @@ -16,10 +16,9 @@ class SFMessageSale(models.Model): self.add_queue('确认接单') picking_ids = self.mrp_production_ids purchase_order_id = [] - unique_products = set() if picking_ids: for picking_id in picking_ids: - unique_products.add(picking_id.product_id.id) + picking_id.add_queue('待确认加工路线') purchase_order_ids = ( picking_id.procurement_group_id.stock_move_ids.created_purchase_line_id.order_id | picking_id.procurement_group_id.stock_move_ids.move_orig_ids.purchase_line_id.order_id).ids @@ -29,11 +28,6 @@ class SFMessageSale(models.Model): [('id', 'in', purchase_order_id)]) for purchase_order_info in purchase_order_list: purchase_order_info.add_queue('坯料采购提醒') - if unique_products: - for product_id in unique_products: - production_info = self.env['mrp.production'].sudo().search( - [('product_id', '=', product_id)], limit=1, order='id') - production_info.add_queue('待确认加工路线') except Exception as e: logging.info('add_queue error:%s' % e) logging.info('action_confirm res:%s' % res)