优化销售订单+工单逾期预警和已1逾期代码
This commit is contained in:
@@ -97,57 +97,44 @@ class SFMessageSale(models.Model):
|
||||
contents.append(content)
|
||||
return contents
|
||||
|
||||
# # 销售订单逾期预警
|
||||
def _overdue_warning_func(self):
|
||||
today = fields.Date.today()
|
||||
# # 销售订单逾期预警和已逾期
|
||||
def _overdue_or_warning_func(self):
|
||||
today = datetime.today().date()
|
||||
deadline_check = today + timedelta(days=1)
|
||||
logging.info(f"today: {today}, deadline_check: {deadline_check}")
|
||||
sale_order = self.sudo().search([('state', 'in', ['sale']), ('deadline_of_delivery', '!=', False)])
|
||||
for item in sale_order:
|
||||
production = self.env['mrp.production'].search([('origin', '=', item.name)])
|
||||
if len(production.filtered(
|
||||
lambda p: p.state not in ['done', 'scrap', 'cancel'])) != item.mrp_production_count:
|
||||
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:
|
||||
item.delivery_warning = 'warning'
|
||||
elif len(production.filtered(
|
||||
lambda p: p.state in ['done', 'scrap', 'cancel'])) == item.mrp_production_count:
|
||||
if deadline_check == item.deadline_of_delivery and item.delivery_status in ['pending', 'partial']:
|
||||
item.delivery_warning = 'warning'
|
||||
sale_order_warning = self.sudo().search([('delivery_warning', '=', 'warning')])
|
||||
if sale_order_warning:
|
||||
for warning in sale_order_warning:
|
||||
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', '=', warning.id), ('message_status', '=', 'pending'),
|
||||
('message_template_id', '=', message_template.id)])
|
||||
if not sale_order_has:
|
||||
sale_order_warning.add_queue('销售订单逾期预警')
|
||||
elif today == item.deadline_of_delivery:
|
||||
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:
|
||||
item.delivery_warning = 'warning'
|
||||
elif today == item.deadline_of_delivery:
|
||||
item.delivery_warning = 'overdue'
|
||||
else:
|
||||
continue
|
||||
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('销售订单已逾期')
|
||||
|
||||
|
||||
# 销售订单已逾期 订单交期(交货日期)-当前日期时间≤0(未交货完成的销售订单)
|
||||
def _overdue_func(self):
|
||||
today = datetime.today().date()
|
||||
sale_order = self.sudo().search([('state', 'in', ['sale']), ('deadline_of_delivery', '!=', False)])
|
||||
for item in sale_order:
|
||||
production = self.env['mrp.production'].search([('origin', '=', item.name)])
|
||||
if len(production.filtered(
|
||||
lambda p: p.state not in ['done', 'scrap', 'cancel'])) != item.mrp_production_count:
|
||||
if today == item.deadline_of_delivery:
|
||||
item.delivery_warning = 'overdue'
|
||||
elif len(production.filtered(
|
||||
lambda p: p.state in ['done', 'scrap', 'cancel'])) == item.mrp_production_count:
|
||||
if today == item.deadline_of_delivery and item.delivery_status in ['pending', 'partial']:
|
||||
item.delivery_warning = 'overdue'
|
||||
sale_order_overdue = self.sudo().search([('delivery_warning', '=', 'overdue')])
|
||||
if sale_order_overdue:
|
||||
for overdue in sale_order_overdue:
|
||||
message_template = self.env["jikimo.message.template"].search([
|
||||
("model", "=", self._name),
|
||||
("bussiness_node_id", "=", self.env.ref('sf_message.bussiness_sale_order_overdue').id)
|
||||
])
|
||||
sale_order_has = self.env['jikimo.message.queue'].search(
|
||||
[('res_id', '=', overdue.id), ('message_status', '=', 'pending'),
|
||||
('message_template_id', '=', message_template.id)])
|
||||
if not sale_order_has:
|
||||
sale_order_overdue.add_queue('销售订单已逾期')
|
||||
|
||||
Reference in New Issue
Block a user