消息提醒
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
'security/ir.model.access.csv',
|
||||
'wizard/sale_order_wizard_views.xml',
|
||||
'wizard/purchase_order_wizard_views.xml',
|
||||
'data/cron_data.xml',
|
||||
'views/sale_team.xml',
|
||||
'views/sale_order_view.xml',
|
||||
'views/res_partner_view.xml',
|
||||
|
||||
16
sf_sale/data/cron_data.xml
Normal file
16
sf_sale/data/cron_data.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record model="ir.cron" id="ir_cron_purchase_order_overdue_warning">
|
||||
<field name="name">检查采购单是否已逾期预警和逾期</field>
|
||||
<field name="model_id" ref="model_purchase_order"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._overdue_or_warning_func()</field>
|
||||
<field name="interval_number">10</field>
|
||||
<field name="interval_type">minutes</field>
|
||||
<field name="numbercall">-1</field>
|
||||
<field name="doall" eval="False"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="active" eval="True"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user