diff --git a/addons/website_quotation/controllers/main.py b/addons/website_quotation/controllers/main.py index 47b23cf5a3a..e626e65861a 100644 --- a/addons/website_quotation/controllers/main.py +++ b/addons/website_quotation/controllers/main.py @@ -107,6 +107,8 @@ class sale_quote(http.Controller): def update(self, line_id=None, remove=False, unlink=False, order_id=None, token=None, **post): order = request.registry.get('sale.order').browse(request.cr, SUPERUSER_ID, int(order_id)) assert token == order.access_token, 'Access denied, wrong token!' + if order.state not in ('draft','sent'): + return False if unlink: request.registry.get('sale.order.line').unlink(request.cr, SUPERUSER_ID, [int(line_id)], context=request.context) return False diff --git a/addons/website_quotation/static/src/js/website_quotation.js b/addons/website_quotation/static/src/js/website_quotation.js index 277a77d3c12..b24ab58a3fb 100644 --- a/addons/website_quotation/static/src/js/website_quotation.js +++ b/addons/website_quotation/static/src/js/website_quotation.js @@ -23,37 +23,43 @@ $(document).ready(function () { return false; }); + var empty_sign = false; $('#modelaccept').on('shown.bs.modal', function (e) { $("#signature").empty().jSignature({'decor-color' : '#D1D0CE'}); + empty_sign = $("#signature").jSignature("getData",'image'); }); $('#sign_clean').on('click', function (e) { $("#signature").jSignature('reset'); }); + $('form.js_accept_json').submit(function(ev){ ev.preventDefault(); var $link = $(ev.currentTarget); var href = $link.attr("action"); var order_id = href.match(/accept\/([0-9]+)/); var token = href.match(/token=(.*)/); + if (token) + token = token[1]; var signer_name = $("#name").val(); - var sign = $("#signature").jSignature("getData",'image')[1]; + var sign = $("#signature").jSignature("getData",'image'); + var is_empty = sign?empty_sign[1]==sign[1]:false; $('#signer').toggleClass('has-error', ! signer_name); - $('#drawsign').toggleClass('panel-error', ! sign.length); + $('#drawsign').toggleClass('panel-danger', is_empty).toggleClass('panel-default', ! is_empty); - if (! signer_name) + if (is_empty || ! signer_name) return false; openerp.jsonRpc("/quote/accept/", 'call', { 'order_id': parseInt(order_id[1]), - 'token': token[1], + 'token': token, 'signer': signer_name, - 'sign': sign?JSON.stringify(sign):false, + 'sign': sign?JSON.stringify(sign[1]):false, }).then(function (data) { $('#modelaccept').modal('hide'); - window.location.replace(url +'/quote/'+order_id[1]+'/'+token[1]+'?message=3'); + window.location.href = '/quote/'+order_id[1]+'/'+token+'?message=3'; }); return false }); diff --git a/addons/website_quotation/views/website_quotation.xml b/addons/website_quotation/views/website_quotation.xml index 102fbd4d2df..0332f0b9a1d 100644 --- a/addons/website_quotation/views/website_quotation.xml +++ b/addons/website_quotation/views/website_quotation.xml @@ -259,7 +259,7 @@
- This quotation has been canceled. Contact ( ) in order to ask a new quote. + This quotation has been canceled. Contact (, ) to ask a new quote.