[ADD] : confirmation dialog on the accept button
[IMP] : post and decline method bzr revid: aja@tinyerp.com-20140103070449-3fiahs62npzbfrtx
This commit is contained in:
parent
fb06142319
commit
20a14b4921
|
@ -23,16 +23,10 @@ from openerp import SUPERUSER_ID
|
|||
from openerp.addons.web import http
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.website.models import website
|
||||
import werkzeug
|
||||
|
||||
|
||||
class sale_quote(http.Controller):
|
||||
def _get_partner_user(self, order_id):
|
||||
order_pool = request.registry.get('sale.order')
|
||||
user_pool = request.registry.get('res.users')
|
||||
partner = order_pool.browse(request.cr, SUPERUSER_ID, order_id, context=request.context).partner_id.id
|
||||
if partner:
|
||||
user = user_pool.search(request.cr, SUPERUSER_ID, [('partner_id', '=', partner)])[0]
|
||||
return user
|
||||
|
||||
@website.route(["/quote/<int:order_id>/<token>"], type='http', auth="public")
|
||||
def view(self, order_id, token, **post):
|
||||
|
@ -49,31 +43,39 @@ class sale_quote(http.Controller):
|
|||
def accept(self, order_id, token, **post):
|
||||
order = request.registry.get('sale.order').browse(request.cr, SUPERUSER_ID, order_id)
|
||||
assert token == order.access_token, 'Access denied, wrong token!'
|
||||
request.registry.get('sale.order').write(request.cr, self._get_partner_user(order_id), [order_id], {'state': 'manual'})
|
||||
request.registry.get('sale.order').write(request.cr, request.uid, [order_id], {'state': 'manual'})
|
||||
return request.redirect("/quote/%s/%s" % (order_id, token))
|
||||
|
||||
def decline(self, order_id):
|
||||
return request.registry.get('sale.order').write(request.cr, self._get_partner_user(order_id), [order_id], {'state': 'cancel'})
|
||||
@website.route(['/quote/<int:order_id>/<token>/decline'], type='http', auth="public")
|
||||
def decline(self, order_id, token, **post):
|
||||
message = post.get('decline_message')
|
||||
request.registry.get('sale.order').write(request.cr, request.uid, [order_id], {'state': 'cancel'})
|
||||
if message:
|
||||
self.message_post(message, order_id)
|
||||
return werkzeug.utils.redirect("/quote/%s/%s" % (order_id, token))
|
||||
|
||||
@website.route(['/quote/<int:order_id>/<token>/post'], type='http', auth="public")
|
||||
def post(self, order_id, token, **post):
|
||||
# use SUPERUSER_ID allow to access/view order for public user
|
||||
order = request.registry.get('sale.order').browse(request.cr, SUPERUSER_ID, order_id)
|
||||
message = post.get('new_message')
|
||||
assert token == order.access_token, 'Access denied, wrong token!'
|
||||
if message:
|
||||
self.message_post(message, order_id)
|
||||
return werkzeug.utils.redirect("/quote/%s/%s" % (order_id, token))
|
||||
|
||||
if post.get('new_message'):
|
||||
request.session.body = post.get('new_message')
|
||||
if post.get('decline_message'):
|
||||
self.decline(order_id)
|
||||
request.session.body = post.get('decline_message')
|
||||
def message_post(self , message, order_id):
|
||||
request.session.body = message
|
||||
cr, uid, context = request.cr, request.uid, request.context
|
||||
if 'body' in request.session and request.session.body:
|
||||
request.registry.get('sale.order').message_post(request.cr, self._get_partner_user(order_id), order_id,
|
||||
request.registry.get('sale.order').message_post(cr, uid, order_id,
|
||||
body=request.session.body,
|
||||
type='comment',
|
||||
subtype='mt_comment',
|
||||
context=context,
|
||||
)
|
||||
request.session.body = False
|
||||
return request.redirect("/quote/%s/%s#chat" % (order_id, self._get_token(order_id)))
|
||||
return True
|
||||
|
||||
@website.route(['/quote/update_line'], type='json', auth="public")
|
||||
def update(self, line_id=None, remove=False, unlink=False, order_id=None, **post):
|
||||
|
|
|
@ -2,12 +2,7 @@
|
|||
<openerp>
|
||||
<data>
|
||||
<template id="pricing" name="Price">
|
||||
<ul class="wizard pull-right">
|
||||
<li></li>
|
||||
</ul>
|
||||
|
||||
<section id="quote" class="container">
|
||||
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -120,7 +115,7 @@
|
|||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<form id="post" accept-charset="UTF-8" method="POST" t-att-action="'/quote/%%s/post#post' %% quotation.id">
|
||||
<form id="post" method="POST" t-attf-action="/quote/#{quotation.id}/#{quotation.access_token}/post">
|
||||
<textarea rows="3" id="new_message" name="new_message" placeholder="Your Comment....." class="form-control span7"> </textarea>
|
||||
<button type="submit" t-att-id="quotation.id" class="btn btn-info">Post your Comment</button>
|
||||
</form>
|
||||
|
@ -152,7 +147,7 @@
|
|||
|
||||
<div class="text-center">
|
||||
<div class="btn-group btn-group-lg" t-if="quotation.state in ('draft', 'sent', 'waiting_date')">
|
||||
<a class="btn btn-success fa fa-check" type="submit" t-href="/quote/#{ quotation.id }/accept">
|
||||
<a class="btn btn-success fa fa-check" data-toggle="modal" data-target="#modelaccept">
|
||||
Accept
|
||||
</a>
|
||||
<a class="btn btn-info fa fa-comment" type="submit" href="#chat">
|
||||
|
@ -171,21 +166,48 @@
|
|||
<small t-field="quotation.state"/>
|
||||
</h1>
|
||||
|
||||
<div class="modal fade" id="modelaccept" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
|
||||
<h4 class="modal-title">Please confirm you accept this order:</h4>
|
||||
</div>
|
||||
<form id="accept" method="POST" t-attf-action="/quote/#{quotation.id}/#{quotation.access_token}/accept">
|
||||
<div class="modal-body">
|
||||
<dl class="dl-horizontal">
|
||||
<dt><h4>Your Name : </h4></dt>
|
||||
<dd><h4 t-esc="quotation.partner_id.name"></h4></dd>
|
||||
<dt><h4>Price : </h4></dt>
|
||||
<dd><h4 data-id="total_amount" t-field="quotation.amount_total" t-field-options='{"widget": "monetary","display_currency": "quotation.pricelist_id.currency_id"}'/></dd>
|
||||
<dt><h4>Payment Term : </h4></dt>
|
||||
<dd><h4 t-esc="quotation.payment_term.name"></h4></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="btn btn-success">Validate Order</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Discard</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-warning alert-dismissable" t-if="quotation.state == 'cancel'">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
|
||||
<strong>This quotation has been canceled.</strong> Contact <t t-field="quotation.user_id"/> to ask a new one.
|
||||
<strong>This quotation has been canceled.</strong> Contact <p t-field="quotation.user_id"/> to ask a new one.
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="modeldecline" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
|
||||
<h4 class="modal-title">Reason</h4>
|
||||
</div>
|
||||
<form id="post" accept-charset="UTF-8" method="POST" t-att-action="'/quote/%%s/post#post' %% (quotation.id)">
|
||||
<form id="decline" method="POST" t-attf-action="/quote/#{quotation.id}/#{quotation.access_token}/decline">
|
||||
<div class="modal-body">
|
||||
<textarea rows="3" id="decline_message" name="decline_message" placeholder="Your Comment....." class="form-control span7"> </textarea>
|
||||
<textarea rows="3" name="decline_message" placeholder="Your Comment....." class="form-control"> </textarea>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
|
|
Loading…
Reference in New Issue