优化销售订单逾期
This commit is contained in:
@@ -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('销售订单已逾期')
|
||||
|
||||
Reference in New Issue
Block a user