Sales.Order: implementation of delivery_date_warning (desired_delivery_date) & vat check warning

develop
Andreas Osim 2019-11-27 12:24:38 +01:00
parent 4e0e3cb80d
commit 76971bd57b
5 changed files with 63 additions and 1 deletions

View File

@ -54,6 +54,7 @@
'data/product_data.xml',
'data/tz_tax_data.xml',
'data/cron_job.xml',
'views/dp_template.xml',
'views/dp_custom_views.xml',
'views/res_line_views.xml',
'views/res_partner_views.xml',

View File

@ -27,6 +27,8 @@ from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT
from odoo.tools import float_compare
from odoo.tools import float_is_zero
from dateutil.relativedelta import relativedelta
import dateutil.parser
class SaleOrder(models.Model):
_name = 'sale.order'
@ -71,6 +73,10 @@ class SaleOrder(models.Model):
order_type = fields.Selection(ORDER_TYPES, string='Auftragsart', default='M')
clerk_id = fields.Many2one('res.users', string='Sachbearbeiter', domain=[('clerk_name', '!=', '')])
desired_delivery_date = fields.Date(string='Wunschlieferdatum')
delivery_date_warning = fields.Boolean(compute='_compute_dlv_date_warn', store=False)
warn_vat_date = fields.Boolean(compute='_get_vat_warn_date', store=False, default=False)
date_vat_check = fields.Date(related='partner_invoice_id.date_vat_check')
vat = fields.Char(related='partner_invoice_id.vat')
# pg9_call = fields.Char(string='PG9-Auftrag', compute='_pg9_call', store=False)
pg9_call_D = fields.Char(string='PG9-Auftrag_D', compute='_pg9_call', store=False)
@ -79,6 +85,30 @@ class SaleOrder(models.Model):
pg9_complete = fields.Boolean(string='PG9-Komplett', compute='_compute_positions', store=False, default=False)
# partner_flash = fields.Char(store=False)
@api.multi
def _get_vat_warn_date(self):
for record in self:
if record.partner_invoice_id.date_vat_check:
date_today = fields.Date.from_string(fields.Date.context_today(self))
warn_date = date_today - relativedelta(months=+3)
try:
check_date = dateutil.parser.parse(record.date_vat_check).date()
except:
check_date = date_today - relativedelta(months=+36)
if check_date < warn_date:
record.warn_vat_date = True
else:
record.warn_vat_date = False
else:
record.warn_vat_date = True
@api.multi
def _compute_dlv_date_warn(self):
for record in self:
record.delivery_date_warning = False
if record.desired_delivery_date > record.delivery_date:
record.delivery_date_warning = True
@api.multi
def _reset_sequence(self):
for rec in self:

View File

@ -0,0 +1,17 @@
.oe_highlight_blink {
.animation-blink(blink, rgb(0,0,255) + 200, rgb(0,0,255), );
&.urgent {
.animation-blink(urgent, rgb(0,255,0), rgb(0,255,0) + 200);
}
}
.animation-blink(@name_, @color1, @color2, @color3: red, @time: .5s) {
@name: ~"animation-blink-@{name_}";
animation: @name @time ease-in-out infinite alternate;
@keyframes @name {
0% {color: @color1 ; background-color: transparent}
to {color: @color2 ; background-color: @color3}
}
}

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="assets_backend" name="dp assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<link rel="stylesheet" type="text/less" href="/dp_custom/static/src/less/special_effects.less"/>
</xpath>
</template>
</odoo>

View File

@ -18,10 +18,16 @@
</xpath>
<field name="partner_id" position="before">
<field name="partner_flash" string="Flash: " class="oe_highlight" attrs="{'invisible':[('partner_flash','=',False)]}"/>
<field name="warn_vat_date" attrs="{'invisible':True}"/>
<field name="vat" attrs="{'invisible':True}"/>
<field name="date_vat_check" attrs="{'readonly':True,'invisible':['|','|',('warn_vat_date','=',False),('vat','=',False),('vat','=','')]}"
style="padding-left:30px;padding-right:30px;background-color:red;"/>
<div class="oe_clear"/>
</field>
<field name="delivery_date" position="before">
<field name="desired_delivery_date" position="before" class="oe_highlight" attrs="{'readonly':True, 'invisible':[('desired_delivery_date','=',False)]}"/>
<field name="delivery_date_warning" position="before" attrs="{'readonly':True, 'invisible':True}"/>
<field name="desired_delivery_date" position="before" class="oe_highlight_blink urgent" attrs="{'readonly':True, 'invisible':['|',('desired_delivery_date','=',False),('delivery_date_warning','=',False)]}"/>
<field name="desired_delivery_date" position="before" attrs="{'readonly':True, 'invisible':['|',('desired_delivery_date','=',False),('delivery_date_warning','!=',False)]}"/>
</field>
<field name="client_order_ref" position="replace"/>
<field name="origin" position="replace"/>