Sales.Order: implementation of delivery_date_warning (desired_delivery_date) & vat check warning
							parent
							
								
									4e0e3cb80d
								
							
						
					
					
						commit
						76971bd57b
					
				|  | @ -54,6 +54,7 @@ | ||||||
|         'data/product_data.xml', |         'data/product_data.xml', | ||||||
|         'data/tz_tax_data.xml', |         'data/tz_tax_data.xml', | ||||||
|         'data/cron_job.xml', |         'data/cron_job.xml', | ||||||
|  |         'views/dp_template.xml', | ||||||
|         'views/dp_custom_views.xml', |         'views/dp_custom_views.xml', | ||||||
|         'views/res_line_views.xml', |         'views/res_line_views.xml', | ||||||
|         'views/res_partner_views.xml', |         'views/res_partner_views.xml', | ||||||
|  |  | ||||||
|  | @ -27,6 +27,8 @@ from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT | ||||||
| from odoo.tools import float_compare | from odoo.tools import float_compare | ||||||
| from odoo.tools import float_is_zero | from odoo.tools import float_is_zero | ||||||
| 
 | 
 | ||||||
|  | from dateutil.relativedelta import relativedelta | ||||||
|  | import dateutil.parser | ||||||
| 
 | 
 | ||||||
| class SaleOrder(models.Model): | class SaleOrder(models.Model): | ||||||
|     _name = 'sale.order' |     _name = 'sale.order' | ||||||
|  | @ -71,6 +73,10 @@ class SaleOrder(models.Model): | ||||||
|     order_type = fields.Selection(ORDER_TYPES, string='Auftragsart', default='M') |     order_type = fields.Selection(ORDER_TYPES, string='Auftragsart', default='M') | ||||||
|     clerk_id = fields.Many2one('res.users', string='Sachbearbeiter', domain=[('clerk_name', '!=', '')]) |     clerk_id = fields.Many2one('res.users', string='Sachbearbeiter', domain=[('clerk_name', '!=', '')]) | ||||||
|     desired_delivery_date = fields.Date(string='Wunschlieferdatum') |     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 = fields.Char(string='PG9-Auftrag', compute='_pg9_call', store=False) | ||||||
|     pg9_call_D = fields.Char(string='PG9-Auftrag_D', 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) |     pg9_complete = fields.Boolean(string='PG9-Komplett', compute='_compute_positions', store=False, default=False) | ||||||
| #    partner_flash = fields.Char(store=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 |     @api.multi | ||||||
|     def _reset_sequence(self): |     def _reset_sequence(self): | ||||||
|         for rec in self: |         for rec in self: | ||||||
|  |  | ||||||
|  | @ -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} | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -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> | ||||||
|  | @ -18,10 +18,16 @@ | ||||||
|             </xpath> |             </xpath> | ||||||
|             <field name="partner_id" position="before"> |             <field name="partner_id" position="before"> | ||||||
|                 <field name="partner_flash" string="Flash: " class="oe_highlight" attrs="{'invisible':[('partner_flash','=',False)]}"/> |                 <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"/> |                 <div class="oe_clear"/> | ||||||
|             </field> |             </field> | ||||||
|             <field name="delivery_date" position="before"> |             <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> | ||||||
|             <field name="client_order_ref" position="replace"/> |             <field name="client_order_ref" position="replace"/> | ||||||
|             <field name="origin" position="replace"/> |             <field name="origin" position="replace"/> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue