优化销售订单逾期

This commit is contained in:
jinling.yang
2024-10-08 17:50:59 +08:00
parent ccd01c9c75
commit a00f4af923
8 changed files with 128 additions and 133 deletions

View File

@@ -7,8 +7,6 @@ class SFMessageSale(models.Model):
_name = 'sale.order'
_inherit = ['sale.order', 'jikimo.message.dispatch']
delivery_warning = fields.Selection([('normal', '正常'), ('warning', '告警'), ('overdue', '逾期')], string='时效')
def create(self, vals_list):
res = super(SFMessageSale, self).create(vals_list)
if res:
@@ -45,8 +43,8 @@ class SFMessageSale(models.Model):
def _get_message(self, message_queue_ids):
contents = []
url = self.env['ir.config_parameter'].get_param('web.base.url')
i = 0
for item in message_queue_ids:
i = 0
# 待接单的处理
if item.message_template_id.bussiness_node_id.name == '待接单':
content = super(SFMessageSale, self)._get_message(item)
@@ -66,30 +64,71 @@ class SFMessageSale(models.Model):
content = content[0].replace('{{product_id}}', product).replace('{{url}}', url)
contents.append(content)
elif item.message_template_id.bussiness_node_id.name == '销售订单逾期预警':
sale_order_warning = self.sudo().search([('delivery_warning', '=', 'warning'),('id','=',int(item.res_id))])
# if sale_order_warning:
# i++
#
# if i>1
current_time = datetime.now()
time_range = timedelta(minutes=2)
for reminder_time in item.message_template_id.reminder_time_ids:
content = item.message_template_id.content
target_time = current_time.replace(hour=reminder_time, minute=0, second=0, microsecond=0)
if target_time - time_range <= current_time <= target_time + time_range:
print("当前时间在12点02分以内")
sale_order_warning = self.sudo().search(
[('delivery_warning', '=', 'warning'), ('id', '=', int(item.res_id))])
if sale_order_warning:
i += 1
if i >= 1:
content = content.replace('{{sale_warning_num}}', i).replace('{{url}}', url)
contents.append(content)
elif item.message_template_id.bussiness_node_id.name == '销售订单已逾期':
current_time = datetime.now()
time_range = timedelta(minutes=2)
for reminder_time in item.message_template_id.reminder_time_ids:
content = item.message_template_id.content
target_time = current_time.replace(hour=reminder_time, minute=0, second=0, microsecond=0)
if target_time - time_range <= current_time <= target_time + time_range:
print("当前时间在12点02分以内")
sale_order_overdue = self.sudo().search(
[('delivery_warning', '=', 'overdue'), ('id', '=', int(item.res_id))])
if sale_order_overdue:
i += 1
if i >= 1:
content = content.replace('{{sale_overdue_num}}', i).replace('{{url}}', url)
contents.append(content)
return contents
# # 销售订单逾期预警
# # 销售订单逾期预警
def _overdue_warning_func(self):
today = fields.Date.today()
deadline_check = today + timedelta(days=2)
sale_order = self.sudo().search([('state', 'in', ['sale']), ('deadline_of_delivery', '!=', False)])
for item in sale_order:
if deadline_check < item.deadline_of_delivery:
item.delivery_warning = '告警'
else:
item.delivery_warning = '正常'
production = self.env['mrp.production'].search([('origin', '=', item.name)])
if len(production.filtered(
lambda p: p.state not in ['done', 'scrap'])) != item.mrp_production_count:
if deadline_check < item.deadline_of_delivery:
item.delivery_warning = 'warning'
elif len(production.filtered(
lambda p: p.state in ['done', 'scrap'])) == item.mrp_production_count:
if deadline_check < item.deadline_of_delivery and item.delivery_status == 'pending':
item.delivery_warning = 'warning'
sale_order_warning = self.sudo().search([('delivery_warning', '=', 'warning')])
if sale_order_warning:
if
sale_order_warning.add_queue('销售订单逾期预警')
# 销售订单已逾期
# 销售订单已逾期 订单交期(交货日期)-当前日期时间≤0(未交货完成的销售订单)
def _overdue_func(self):
return 1
today = fields.Date.today()
sale_order = self.sudo().search([('state', 'in', ['sale']), ('deadline_of_delivery', '!=', False)])
for item in sale_order:
delta = item.deadline_of_delivery - today
production = self.env['mrp.production'].search([('origin', '=', item.name)])
if len(production.filtered(
lambda p: p.state not in ['done', 'scrap'])) != item.mrp_production_count:
if delta <= timedelta(days=0):
item.delivery_warning = 'overdue'
elif len(production.filtered(
lambda p: p.state in ['done', 'scrap'])) == item.mrp_production_count:
if delta <= timedelta(days=0):
item.delivery_warning = 'overdue'
sale_order_overdue = self.sudo().search([('delivery_warning', '=', 'overdue')])
if sale_order_overdue:
sale_order_overdue.add_queue('销售订单已逾期')