diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index 6c6b1bf8..152ae0c3 100644 --- a/sf_manufacturing/models/product_template.py +++ b/sf_manufacturing/models/product_template.py @@ -9,8 +9,8 @@ from odoo.exceptions import ValidationError, UserError from odoo.modules import get_resource_path -from OCC.Extend.DataExchange import read_step_file -from OCC.Extend.DataExchange import write_stl_file +# from OCC.Extend.DataExchange import read_step_file +# from OCC.Extend.DataExchange import write_stl_file class ResProductMo(models.Model): diff --git a/sf_message/models/sf_message_maintenance_logs.py b/sf_message/models/sf_message_maintenance_logs.py index 288043ff..115d073b 100644 --- a/sf_message/models/sf_message_maintenance_logs.py +++ b/sf_message/models/sf_message_maintenance_logs.py @@ -4,12 +4,12 @@ class SFMessageMaintenanceLogs(models.Model): _name = 'sf.maintenance.logs' _inherit = ['sf.maintenance.logs', 'jikimo.message.dispatch'] - @api._model_create_multi - def create(self, vals_list): - res = super(SFMessageMaintenanceLogs, self).create(vals_list) - for rec in res: - rec.add_queue() - return res + # @api._model_create_multi + # def create(self, vals_list): + # res = super(SFMessageMaintenanceLogs, self).create(vals_list) + # for rec in res: + # rec.add_queue() + # return res def _get_message(self, message_queue_ids): contents = super(SFMessageMaintenanceLogs, self)._get_message(message_queue_ids) diff --git a/sf_message/models/sf_message_sale.py b/sf_message/models/sf_message_sale.py index 13a5f796..5f517d8d 100644 --- a/sf_message/models/sf_message_sale.py +++ b/sf_message/models/sf_message_sale.py @@ -49,7 +49,7 @@ class SFMessageSale(models.Model): current_time_strf = datetime.now().strftime("%Y-%m-%d %H:%M:%S") current_time = self.env['sf.sync.common'].sudo().get_add_time(current_time_strf) current_time_datetime = datetime.strptime(current_time, '%Y-%m-%d %H:%M:%S') - time_range = timedelta(minutes=2) + time_range = timedelta(minutes=30) i = 0 for item in message_queue_ids: if item.message_template_id.bussiness_node_id.name == '待接单': @@ -109,33 +109,36 @@ class SFMessageSale(models.Model): production_not_done = production.filtered(lambda p: p.state not in ['done', 'scrap', 'cancel']) production_done_count = len(production.filtered(lambda p: p.state in ['done', 'scrap', 'cancel'])) if len(production_not_done) != item.mrp_production_count: - if deadline_check == item.deadline_of_delivery: + if deadline_check == item.deadline_of_delivery and item.delivery_warning not in ['warning']: item.delivery_warning = 'warning' - elif today == item.deadline_of_delivery: + elif today == item.deadline_of_delivery and item.delivery_warning not in ['overdue']: item.delivery_warning = 'overdue' elif production_done_count == item.mrp_production_count: if item.delivery_status in ['pending', 'partial']: - if deadline_check == item.deadline_of_delivery: + if deadline_check == item.deadline_of_delivery and item.delivery_warning not in ['warning']: item.delivery_warning = 'warning' - elif today == item.deadline_of_delivery: + elif today == item.deadline_of_delivery and item.delivery_warning not in ['overdue']: item.delivery_warning = 'overdue' else: continue + # 获取业务节点 + business_node_ids = { + 'warning': self.env.ref('sf_message.bussiness_sale_order_overdue_warning').id, + 'overdue': self.env.ref('sf_message.bussiness_sale_order_overdue').id + } overdue_orders = self.sudo().search([('delivery_warning', 'in', ['warning', 'overdue'])]) for wo in overdue_orders: - message_template = self.env["jikimo.message.template"].search([ - ("model", "=", self._name), - ("bussiness_node_id", "=", self.env.ref('sf_message.bussiness_sale_order_overdue_warning').id) - ]) - sale_order_has = self.env['jikimo.message.queue'].search([ - ('res_id', '=', wo.id), - ('message_status', '=', 'pending'), - ('message_template_id', '=', message_template.id) - ]) - if not sale_order_has: - if wo.delivery_warning == 'warning': - wo.add_queue('销售订单逾期预警') - elif wo.delivery_warning == 'overdue': - wo.add_queue('销售订单已逾期') - - + business_node_id = business_node_ids.get(wo.delivery_warning) + if business_node_id: + message_template = self.env["jikimo.message.template"].search([ + ("model", "=", self._name), + ("bussiness_node_id", "=", business_node_id) + ], limit=1) + sale_order_has = self.env['jikimo.message.queue'].search([ + ('res_id', '=', wo.id), + ('message_status', '=', 'pending'), + ('message_template_id', '=', message_template.id) + ]) + if not sale_order_has: + message_name = '销售订单逾期预警' if wo.delivery_warning == 'warning' else '销售订单已逾期' + wo.add_queue(message_name) diff --git a/sf_message/models/sf_message_workorder.py b/sf_message/models/sf_message_workorder.py index 505b6f93..ff77cd61 100644 --- a/sf_message/models/sf_message_workorder.py +++ b/sf_message/models/sf_message_workorder.py @@ -115,12 +115,13 @@ class SFMessageWork(models.Model): item.date_planned_finished.strftime("%Y-%m-%d %H:%M:%S")) date_planned_finished = datetime.strptime(date_planned_finished_str, '%Y-%m-%d %H:%M:%S') twelve_hours_ago = current_time_datetime - timedelta(hours=12) - if current_time_datetime >= date_planned_finished: + if current_time_datetime >= date_planned_finished and item.delivery_warning not in ['overdue']: logging.info("------overdue-------") logging.info(f"Workorder: {item.production_id.name}, Current Time: {current_time_datetime}, " f"Planned Finish: {date_planned_finished}") item.delivery_warning = 'overdue' - elif twelve_hours_ago <= current_time_datetime <= date_planned_finished: + elif twelve_hours_ago <= current_time_datetime <= date_planned_finished and item.delivery_warning not in [ + 'warning']: logging.info("------warning-------") logging.info(f"Workorder: {item.production_id.name}, Current Time: {current_time_datetime}, " f"Planned Finish: {date_planned_finished}") diff --git a/sf_sale/models/quick_easy_order.py b/sf_sale/models/quick_easy_order.py index 081807a4..cb1886a1 100644 --- a/sf_sale/models/quick_easy_order.py +++ b/sf_sale/models/quick_easy_order.py @@ -8,8 +8,8 @@ from datetime import datetime import requests from odoo import http from odoo.http import request -from OCC.Extend.DataExchange import read_step_file -from OCC.Extend.DataExchange import write_stl_file +# from OCC.Extend.DataExchange import read_step_file +# from OCC.Extend.DataExchange import write_stl_file from odoo import models, fields, api from odoo.modules import get_resource_path from odoo.exceptions import ValidationError, UserError diff --git a/sf_sale/models/quick_easy_order_old.py b/sf_sale/models/quick_easy_order_old.py index 4756a2c5..9bd61132 100644 --- a/sf_sale/models/quick_easy_order_old.py +++ b/sf_sale/models/quick_easy_order_old.py @@ -6,8 +6,8 @@ import os from datetime import datetime from stl import mesh # from OCC.Core.GProp import GProp_GProps -from OCC.Extend.DataExchange import read_step_file -from OCC.Extend.DataExchange import write_stl_file +# from OCC.Extend.DataExchange import read_step_file +# from OCC.Extend.DataExchange import write_stl_file from odoo.addons.sf_base.commons.common import Common from odoo import models, fields, api from odoo.modules import get_resource_path diff --git a/sf_sale/views/sale_order_view.xml b/sf_sale/views/sale_order_view.xml index 61b53b08..e62fc6e1 100644 --- a/sf_sale/views/sale_order_view.xml +++ b/sf_sale/views/sale_order_view.xml @@ -95,7 +95,7 @@ {'readonly': [('state', 'in', ['cancel','sale'])]} - +