消息提醒

This commit is contained in:
guanhuan
2024-12-20 13:51:11 +08:00
parent 72bf8ad011
commit 9d883d112c
6 changed files with 118 additions and 0 deletions

View File

@@ -1,8 +1,10 @@
import datetime
import base64
import logging
from odoo import Command
from odoo import models, fields, api, _
from odoo.exceptions import UserError, ValidationError
from datetime import datetime, timedelta
READONLY_FIELD_STATES = {
state: [('readonly', True)]
@@ -218,6 +220,10 @@ class RePurchaseOrder(models.Model):
purchase_type = fields.Selection([('standard', '标准采购'), ('consignment', '委外加工')], string='采购类型',
default='standard')
delivery_warning = fields.Selection([('normal', '正常'), ('warning', '预警'), ('overdue', '已逾期')],
string='交期状态',
tracking=True)
@api.depends('partner_id')
def _compute_user_id(self):
if not self.user_id:
@@ -299,6 +305,27 @@ class RePurchaseOrder(models.Model):
return result
# # 采购订单逾期预警和已逾期
def _overdue_or_warning_func(self):
purchase_order = self.sudo().search(
[('state', 'in', ['purchase']), ('date_planned', '!=', False),
('receipt_status', 'in', ('partial', 'pending'))])
last_overdue_order = None
last_warning_order = None
for item in purchase_order:
current_time = datetime.now()
if item.date_planned <= current_time: # 已逾期
item.delivery_warning = 'overdue'
last_overdue_order = item
elif (item.date_planned - current_time).total_seconds() < 48 * 3600: # 预警
item.delivery_warning = 'warning'
last_warning_order = item
purchase_order_done = self.sudo().search([('state', 'in', ['purchase']), ('receipt_status', '=', 'full')])
purchase_order_overdue = purchase_order_done.filtered(lambda x: x.delivery_warning in ['overdue', 'warning'])
if purchase_order_overdue:
purchase_order_overdue.write({'delivery_warning': 'normal'})
return last_overdue_order, last_warning_order
class ResPartnerToSale(models.Model):
_inherit = 'res.partner'