[ADD] : confirmation dialog on the accept button

[IMP] : post and decline method

bzr revid: aja@tinyerp.com-20140103070449-3fiahs62npzbfrtx
This commit is contained in:
ajay javiya (OpenERP) 2014-01-03 12:34:49 +05:30
parent fb06142319
commit 20a14b4921
2 changed files with 52 additions and 28 deletions

View File

@ -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):

View File

@ -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">&amp;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">&amp;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">&amp;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>