[ADD] : counter with remaining time

bzr revid: aja@tinyerp.com-20140122121856-li5wzu0j8grlts3d
This commit is contained in:
ajay javiya (OpenERP) 2014-01-22 17:48:56 +05:30
parent b50a5bd40c
commit 78247bf308
6 changed files with 72 additions and 7 deletions

View File

@ -24,7 +24,7 @@ from openerp.addons.web import http
from openerp.addons.web.http import request
from openerp.addons.website.models import website
import werkzeug
import datetime
class sale_quote(http.Controller):
@ -39,6 +39,7 @@ class sale_quote(http.Controller):
'message': message,
'new_post' : request.httprequest.session.get('new_post',False),
'option': self._check_option_len(order),
'date_diff': (datetime.datetime.now() > datetime.datetime.strptime(order.validity_date , '%Y-%m-%d'))
}
return request.website.render('website_quotation.so_quotation', values)
@ -47,6 +48,7 @@ class sale_quote(http.Controller):
if not option.line_id:
return True
return False
@http.route(['/quote/accept'], type='json', auth="public", website=True)
def accept(self, order_id=None, token=None, signer=None, sign=None, **post):
order_obj = request.registry.get('sale.order')

View File

@ -22,7 +22,7 @@
from openerp.osv import osv, fields
import uuid
import time
import datetime
class sale_quote_template(osv.osv):
_name = "sale.quote.template"
@ -33,6 +33,7 @@ class sale_quote_template(osv.osv):
'quote_line': fields.one2many('sale.quote.line', 'quote_id', 'Quote Template Lines'),
'note': fields.text('Terms and conditions'),
'options': fields.one2many('sale.option.line', 'temp_option_id', 'Optional Products Lines'),
'number_of_days': fields.integer('Number of Days'),
}
def open_template(self, cr, uid, quote_id, context=None):
@ -85,16 +86,29 @@ class sale_order_line(osv.osv):
class sale_order(osv.osv):
_inherit = 'sale.order'
def _get_total(self, cr, uid, ids, name, arg, context=None):
res = {}
for order in self.browse(cr, uid, ids, context=context):
total = 0.0
for line in order.order_line:
total += (line.product_uom_qty * line.price_unit)
res[order.id] = total
return res
_columns = {
'access_token': fields.char('Security Token', size=256, required=True),
'template_id': fields.many2one('sale.quote.template', 'Quote Template'),
'website_description': fields.html('Description'),
'options' : fields.one2many('sale.option.line', 'option_id', 'Optional Products Lines'),
'signer_name': fields.char('Signer Name', size=256),
'validity_date': fields.date('Validity Date'),
'before_discount': fields.function(_get_total, string='Amount Before Discount', type="float")
}
_defaults = {
'access_token': lambda self, cr, uid, ctx={}: str(uuid.uuid4())
}
def open_quotation(self, cr, uid, quote_id, context=None):
quote = self.browse(cr, uid, quote_id[0], context=context)
return {
@ -103,9 +117,6 @@ class sale_order(osv.osv):
'url': '/quote/%s/%s' % (quote.id, quote.access_token)
}
def _get_sale_order_line(self, cr, uid, template_id, context=None):
"""create order line from selected quote template line."""
def onchange_template_id(self, cr, uid, ids, template_id, context=None):
lines = []
quote_template = self.pool.get('sale.quote.template').browse(cr, uid, template_id, context=context)
@ -130,7 +141,10 @@ class sale_order(osv.osv):
'discount': option.discount,
'website_description': option.website_description,
}))
data = {'order_line': lines, 'website_description': quote_template.website_description, 'note': quote_template.note, 'options': options}
date = False
if quote_template.number_of_days > 0:
date = (datetime.datetime.now() + datetime.timedelta(quote_template.number_of_days)).strftime("%Y-%m-%d")
data = {'order_line': lines, 'website_description': quote_template.website_description, 'note': quote_template.note, 'options': options, 'validity_date': date}
return {'value': data}
def recommended_products(self, cr, uid, ids, context=None):

View File

@ -51,3 +51,18 @@
}
}
#countdown {
padding-left : 10px;
padding-top: 10px;
padding-bottom: 5px;
font-size: 1.4em;
}
.day_counter{
font-size: 2.4em;
padding-left : 5px;
}
.days_left {
font-size: 1.4em;
text-align: center;
padding-left : 3px;
}

View File

@ -89,5 +89,13 @@ $(document).ready(function () {
}
});
var target_date = new Date($('#validity_date').val());
setInterval(function () {
var current_date = new Date();
var days_left = Math.floor((target_date - current_date)/86400000);
$('#countdown').html('<span><i class="fa fa-clock-o fa-2x"/><span class="day_counter">'+((days_left > 0) ? days_left : 0)+'</span><small class="days_left">Days</small></span>')
}, 1000);
//vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
});

View File

@ -154,9 +154,12 @@
<div class="col-md-3">
<div class="bs-sidebar">
<div class="text-center hidden-print" t-if="quotation.state in ('draft', 'sent', 'waiting_date')" style="padding: 10px">
<a class="btn btn-primary btn-block fa fa-check" data-toggle="modal" data-target="#modelaccept">
<a t-if="not date_diff" class="btn btn-primary btn-block fa fa-check" data-toggle="modal" data-target="#modelaccept">
Accept Order
</a>
<a t-if="date_diff">
<strong>This offer expired!.</strong> <a href="#discussion">Contact us</a> for new quote.
</a>
<div class="mt8">
<a type="submit" href="#discussion">
Ask Changes
@ -168,6 +171,23 @@
</div>
<hr class="mt0 mb0"/>
<t t-call="website_quotation.navigation_menu"/>
<hr class="mt0 mb0"/>
<div class="text-center hidden-print">
<input type="hidden" t-att-value="quotation.validity_date" id="validity_date"/>
<div class="mt8" t-if="(quotation.before_discount - quotation.amount_total) > 0.0">
<strong>This offer at </strong>
<em t-field="quotation.amount_total"
t-field-options='{"widget": "monetary", "display_currency": "quotation.pricelist_id.currency_id"}'></em>
<em t-field="quotation.before_discount"
t-field-options='{"widget": "monetary", "display_currency": "quotation.pricelist_id.currency_id"}'
style="text-decoration: line-through"
class="text-danger"></em>
</div>
<strong class="text-center" t-if="(quotation.before_discount - quotation.amount_total) > 0.0">Expire in :</strong>
<strong class="text-center" t-if="not((quotation.before_discount - quotation.amount_total) > 0.0)">This offer Expire in:</strong>
<div id="countdown"/>
<strong t-if="(quotation.before_discount - quotation.amount_total) > 0.0" class="text-center">(<t t-esc="(quotation.before_discount - quotation.amount_total)"/> Discount)</strong>
</div>
</div>
</div>
<div class="col-md-9">

View File

@ -28,6 +28,7 @@
</xpath>
<xpath expr="//field[@name='client_order_ref']" position="after">
<field name="template_id" on_change="onchange_template_id(template_id)"/>
<field name="validity_date"/>
<field name="website_description" invisible="1"/>
</xpath>
</field>
@ -49,6 +50,11 @@
<field name="name"/>
</h1>
</div>
<group>
<group>
<field name="number_of_days"/>
</group>
</group>
<notebook>
<page string="Lines">
<field name="quote_line">