[IMP] website_sale: refactoring: website_event_sale: fix for refactoring
bzr revid: chm@openerp.com-20140225125736-dni507i8xpz1b61j
This commit is contained in:
parent
a5ca54fd5b
commit
07b5cb38a0
|
@ -27,17 +27,15 @@ from openerp.tools.translate import _
|
||||||
|
|
||||||
|
|
||||||
class website_event(website_event):
|
class website_event(website_event):
|
||||||
|
|
||||||
@http.route(['/event/add_cart'], type='http', auth="public", website=True, multilang=True)
|
@http.route(['/event/add_cart'], type='http', auth="public", website=True, multilang=True)
|
||||||
def add_cart(self, event_id, **post):
|
def add_cart(self, event_id, **post):
|
||||||
user_obj = request.registry['res.users']
|
user_obj = request.registry['res.users']
|
||||||
order_line_obj = request.registry.get('sale.order.line')
|
order_line_obj = request.registry.get('sale.order.line')
|
||||||
ticket_obj = request.registry.get('event.event.ticket')
|
ticket_obj = request.registry.get('event.event.ticket')
|
||||||
order_obj = request.registry.get('sale.order')
|
order_obj = request.registry.get('sale.order')
|
||||||
website = request.registry['website']
|
|
||||||
|
|
||||||
order = website.ecommerce_get_current_order(request.cr, request.uid, context=request.context)
|
order = request.website.sale_get_order(force_create=1)
|
||||||
if not order:
|
|
||||||
order = website.ecommerce_get_new_order(request.cr, request.uid, context=request.context)
|
|
||||||
|
|
||||||
partner_id = user_obj.browse(request.cr, SUPERUSER_ID, request.uid,
|
partner_id = user_obj.browse(request.cr, SUPERUSER_ID, request.uid,
|
||||||
context=request.context).partner_id.id
|
context=request.context).partner_id.id
|
||||||
|
|
|
@ -12,7 +12,7 @@ class sale_order_line(osv.osv):
|
||||||
return super(sale_order_line, self)._recalculate_product_values(cr, uid, ids, product_id, context=context)
|
return super(sale_order_line, self)._recalculate_product_values(cr, uid, ids, product_id, context=context)
|
||||||
|
|
||||||
order_line = self.browse(cr, SUPERUSER_ID, ids[0], context=context)
|
order_line = self.browse(cr, SUPERUSER_ID, ids[0], context=context)
|
||||||
assert order_line.order_id.website_session_id == request.httprequest.session['website_session_id']
|
assert order_line.order_id.id == request.session.get('sale_last_order_id')
|
||||||
|
|
||||||
product = product_id and self.pool.get('product.product').browse(cr, uid, product_id, context=context) or order_line.product_id
|
product = product_id and self.pool.get('product.product').browse(cr, uid, product_id, context=context) or order_line.product_id
|
||||||
res = super(sale_order_line, self)._recalculate_product_values(cr, uid, ids, product.id, context=context)
|
res = super(sale_order_line, self)._recalculate_product_values(cr, uid, ids, product.id, context=context)
|
||||||
|
|
|
@ -207,18 +207,6 @@ class website_sale(http.Controller):
|
||||||
context=dict(context, mail_create_nosubcribe=True))
|
context=dict(context, mail_create_nosubcribe=True))
|
||||||
return werkzeug.utils.redirect(request.httprequest.referrer + "#comments")
|
return werkzeug.utils.redirect(request.httprequest.referrer + "#comments")
|
||||||
|
|
||||||
@http.route(['/shop/add_product/'], type='http', auth="user", methods=['POST'], website=True, multilang=True)
|
|
||||||
def add_product(self, name=None, category=0, **post):
|
|
||||||
if not name:
|
|
||||||
name = _("New Product")
|
|
||||||
Product = request.registry.get('product.product')
|
|
||||||
product_id = Product.create(request.cr, request.uid, {
|
|
||||||
'name': name, 'public_categ_id': category
|
|
||||||
}, context=request.context)
|
|
||||||
product = Product.browse(request.cr, request.uid, product_id, context=request.context)
|
|
||||||
|
|
||||||
return request.redirect("/shop/product/%s/?enable_editor=1" % product.product_tmpl_id.id)
|
|
||||||
|
|
||||||
@http.route(['/shop/cart'], type='http', auth="public", website=True, multilang=True)
|
@http.route(['/shop/cart'], type='http', auth="public", website=True, multilang=True)
|
||||||
def cart(self, **post):
|
def cart(self, **post):
|
||||||
order = request.website.sale_get_order()
|
order = request.website.sale_get_order()
|
||||||
|
@ -245,12 +233,15 @@ class website_sale(http.Controller):
|
||||||
return {
|
return {
|
||||||
'quantity': quantity,
|
'quantity': quantity,
|
||||||
'cart_quantity': order.cart_quantity,
|
'cart_quantity': order.cart_quantity,
|
||||||
'website_sale.total': request.website._render("website_sale.total", {'website_sale_order': order}) # FIXME good template
|
'website_sale.total': request.website._render("website_sale.total", {
|
||||||
|
'website_sale_order': request.website.sale_get_order()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
#------------------------------------------------------
|
#------------------------------------------------------
|
||||||
# Checkout
|
# Checkout
|
||||||
#------------------------------------------------------
|
#------------------------------------------------------
|
||||||
|
|
||||||
def checkout_redirection(self, order):
|
def checkout_redirection(self, order):
|
||||||
cr, uid, context, registry = request.cr, request.uid, request.context, request.registry
|
cr, uid, context, registry = request.cr, request.uid, request.context, request.registry
|
||||||
|
|
||||||
|
@ -454,6 +445,7 @@ class website_sale(http.Controller):
|
||||||
return request.website.render("website_sale.checkout", values)
|
return request.website.render("website_sale.checkout", values)
|
||||||
|
|
||||||
self.checkout_form_save(values["checkout"])
|
self.checkout_form_save(values["checkout"])
|
||||||
|
request.session['sale_last_order_id'] = order.id
|
||||||
|
|
||||||
return request.redirect("/shop/payment")
|
return request.redirect("/shop/payment")
|
||||||
|
|
||||||
|
@ -494,10 +486,10 @@ class website_sale(http.Controller):
|
||||||
values.update(request.registry.get('sale.order')._get_website_data(cr, uid, order, context))
|
values.update(request.registry.get('sale.order')._get_website_data(cr, uid, order, context))
|
||||||
|
|
||||||
# fetch all registered payment means
|
# fetch all registered payment means
|
||||||
if tx:
|
# if tx:
|
||||||
acquirer_ids = [tx.acquirer_id.id]
|
# acquirer_ids = [tx.acquirer_id.id]
|
||||||
else:
|
# else:
|
||||||
acquirer_ids = payment_obj.search(cr, SUPERUSER_ID, [('website_published', '=', True)], context=context)
|
acquirer_ids = payment_obj.search(cr, SUPERUSER_ID, [('website_published', '=', True)], context=context)
|
||||||
values['acquirers'] = payment_obj.browse(cr, uid, acquirer_ids, context=context)
|
values['acquirers'] = payment_obj.browse(cr, uid, acquirer_ids, context=context)
|
||||||
render_ctx = dict(context, submit_class='btn btn-primary', submit_txt='Pay Now')
|
render_ctx = dict(context, submit_class='btn btn-primary', submit_txt='Pay Now')
|
||||||
for acquirer in values['acquirers']:
|
for acquirer in values['acquirers']:
|
||||||
|
@ -536,7 +528,7 @@ class website_sale(http.Controller):
|
||||||
return request.redirect("/shop/checkout/")
|
return request.redirect("/shop/checkout/")
|
||||||
|
|
||||||
# find an already existing transaction
|
# find an already existing transaction
|
||||||
tx = context.get('website_sale_transaction')
|
tx = request.website.sale_get_transaction()
|
||||||
if not tx:
|
if not tx:
|
||||||
tx_id = transaction_obj.create(cr, SUPERUSER_ID, {
|
tx_id = transaction_obj.create(cr, SUPERUSER_ID, {
|
||||||
'acquirer_id': acquirer_id,
|
'acquirer_id': acquirer_id,
|
||||||
|
@ -547,8 +539,8 @@ class website_sale(http.Controller):
|
||||||
'reference': order.name,
|
'reference': order.name,
|
||||||
'sale_order_id': order.id,
|
'sale_order_id': order.id,
|
||||||
}, context=context)
|
}, context=context)
|
||||||
request.httprequest.session['website_sale_transaction_id'] = tx_id
|
request.session['sale_transaction_id'] = tx_id
|
||||||
elif tx and tx.state == 'draft': # button cliked but no more info -> rewrite on tx or create a new one ?
|
elif tx.state == 'draft': # button cliked but no more info -> rewrite on tx or create a new one ?
|
||||||
tx.write({
|
tx.write({
|
||||||
'acquirer_id': acquirer_id,
|
'acquirer_id': acquirer_id,
|
||||||
})
|
})
|
||||||
|
@ -562,7 +554,7 @@ class website_sale(http.Controller):
|
||||||
cr, uid, context = request.cr, request.uid, request.context
|
cr, uid, context = request.cr, request.uid, request.context
|
||||||
|
|
||||||
order = request.registry['sale.order'].browse(cr, SUPERUSER_ID, sale_order_id, context=context)
|
order = request.registry['sale.order'].browse(cr, SUPERUSER_ID, sale_order_id, context=context)
|
||||||
assert order.website_session_id == request.httprequest.session['website_session_id']
|
assert order.id == request.session.get('sale_last_order_id')
|
||||||
|
|
||||||
if not order:
|
if not order:
|
||||||
return {
|
return {
|
||||||
|
@ -617,7 +609,7 @@ class website_sale(http.Controller):
|
||||||
sale_order_obj = request.registry['sale.order']
|
sale_order_obj = request.registry['sale.order']
|
||||||
|
|
||||||
if transaction_id is None:
|
if transaction_id is None:
|
||||||
tx = context.get('website_sale_transaction')
|
tx = request.website.sale_get_transaction()
|
||||||
else:
|
else:
|
||||||
tx = request.registry['payment.transaction'].browse(cr, uid, transaction_id, context=context)
|
tx = request.registry['payment.transaction'].browse(cr, uid, transaction_id, context=context)
|
||||||
|
|
||||||
|
@ -625,7 +617,7 @@ class website_sale(http.Controller):
|
||||||
order = request.website.sale_get_order(context=context)
|
order = request.website.sale_get_order(context=context)
|
||||||
else:
|
else:
|
||||||
order = request.registry['sale.order'].browse(cr, SUPERUSER_ID, sale_order_id, context=context)
|
order = request.registry['sale.order'].browse(cr, SUPERUSER_ID, sale_order_id, context=context)
|
||||||
assert order.website_session_id == request.httprequest.session['website_session_id']
|
assert order.id == request.session.get('sale_last_order_id')
|
||||||
|
|
||||||
if not tx or not order:
|
if not tx or not order:
|
||||||
return request.redirect('/shop/')
|
return request.redirect('/shop/')
|
||||||
|
@ -643,12 +635,12 @@ class website_sale(http.Controller):
|
||||||
sale_order_obj.action_cancel(cr, SUPERUSER_ID, [order.id], context=request.context)
|
sale_order_obj.action_cancel(cr, SUPERUSER_ID, [order.id], context=request.context)
|
||||||
|
|
||||||
# clean context and session, then redirect to the confirmation page
|
# clean context and session, then redirect to the confirmation page
|
||||||
request.registry['website'].ecommerce_reset(cr, uid, context=context)
|
request.website.sale_reset(context=context)
|
||||||
|
|
||||||
return request.redirect('/shop/confirmation/%s' % order.id)
|
return request.redirect('/shop/confirmation/')
|
||||||
|
|
||||||
@http.route(['/shop/confirmation/<int:sale_order_id>'], type='http', auth="public", website=True, multilang=True)
|
@http.route(['/shop/confirmation/'], type='http', auth="public", website=True, multilang=True)
|
||||||
def payment_confirmation(self, sale_order_id, **post):
|
def payment_confirmation(self, **post):
|
||||||
""" End of checkout process controller. Confirmation is basically seing
|
""" End of checkout process controller. Confirmation is basically seing
|
||||||
the status of a sale.order. State at this point :
|
the status of a sale.order. State at this point :
|
||||||
|
|
||||||
|
@ -658,10 +650,11 @@ class website_sale(http.Controller):
|
||||||
"""
|
"""
|
||||||
cr, uid, context = request.cr, request.uid, request.context
|
cr, uid, context = request.cr, request.uid, request.context
|
||||||
|
|
||||||
order = request.registry['sale.order'].browse(cr, SUPERUSER_ID, sale_order_id, context=context)
|
sale_order_id = request.session.get('sale_last_order_id')
|
||||||
assert order.website_session_id == request.httprequest.session['website_session_id']
|
if sale_order_id:
|
||||||
|
order = request.registry['sale.order'].browse(cr, SUPERUSER_ID, sale_order_id, context=context)
|
||||||
request.registry['website']._ecommerce_change_pricelist(cr, uid, None, context=context or {})
|
else:
|
||||||
|
return request.redirect('/shop/')
|
||||||
|
|
||||||
return request.website.render("website_sale.confirmation", {'order': order})
|
return request.website.render("website_sale.confirmation", {'order': order})
|
||||||
|
|
||||||
|
@ -669,12 +662,14 @@ class website_sale(http.Controller):
|
||||||
# Edit
|
# Edit
|
||||||
#------------------------------------------------------
|
#------------------------------------------------------
|
||||||
|
|
||||||
@http.route(['/shop/add_product'], type='http', auth="user", methods=['POST'], website=True, multilang=True)
|
@http.route(['/shop/add_product/'], type='http', auth="user", methods=['POST'], website=True, multilang=True)
|
||||||
def add_product(self, name="New Product", category=0, **post):
|
def add_product(self, name=None, category=0, **post):
|
||||||
cr, uid, context, pool = request.cr, request.uid, request.context, request.registry
|
cr, uid, context, pool = request.cr, request.uid, request.context, request.registry
|
||||||
product_obj = pool['product.product']
|
if not name:
|
||||||
|
name = _("New Product")
|
||||||
|
product_obj = request.registry.get('product.product')
|
||||||
product_id = product_obj.create(cr, uid, { 'name': name, 'public_categ_id': category }, context=context)
|
product_id = product_obj.create(cr, uid, { 'name': name, 'public_categ_id': category }, context=context)
|
||||||
product = product_obj.browse(cr, uid, product_id, context=request.context)
|
product = product_obj.browse(cr, uid, product_id, context=context)
|
||||||
|
|
||||||
return request.redirect("/shop/product/%s/?enable_editor=1" % product.product_tmpl_id.id)
|
return request.redirect("/shop/product/%s/?enable_editor=1" % product.product_tmpl_id.id)
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ class website(orm.Model):
|
||||||
return [("sale_ok", "=", True)]
|
return [("sale_ok", "=", True)]
|
||||||
|
|
||||||
def sale_get_order(self, cr, uid, ids, force_create=False, code=None, context=None):
|
def sale_get_order(self, cr, uid, ids, force_create=False, code=None, context=None):
|
||||||
sale_order_id = request.httprequest.session.get('sale_order_id')
|
sale_order_id = request.session.get('sale_order_id')
|
||||||
sale_order = None
|
sale_order = None
|
||||||
# create so if needed
|
# create so if needed
|
||||||
if not sale_order_id and (force_create or code):
|
if not sale_order_id and (force_create or code):
|
||||||
|
@ -122,7 +122,7 @@ class website(orm.Model):
|
||||||
sale_order_id = self.pool['sale.order'].create(cr, SUPERUSER_ID, values, context=context)
|
sale_order_id = self.pool['sale.order'].create(cr, SUPERUSER_ID, values, context=context)
|
||||||
values = self.pool['sale.order'].onchange_partner_id(cr, SUPERUSER_ID, [], partner.id, context=context)['value']
|
values = self.pool['sale.order'].onchange_partner_id(cr, SUPERUSER_ID, [], partner.id, context=context)['value']
|
||||||
self.pool['sale.order'].write(cr, SUPERUSER_ID, [sale_order_id], values, context=context)
|
self.pool['sale.order'].write(cr, SUPERUSER_ID, [sale_order_id], values, context=context)
|
||||||
request.httprequest.session['sale_order_id'] = sale_order_id
|
request.session['sale_order_id'] = sale_order_id
|
||||||
if sale_order_id:
|
if sale_order_id:
|
||||||
# TODO cache partner_id session
|
# TODO cache partner_id session
|
||||||
partner = self.pool['res.users'].browse(cr, SUPERUSER_ID, uid, context=context).partner_id
|
partner = self.pool['res.users'].browse(cr, SUPERUSER_ID, uid, context=context).partner_id
|
||||||
|
@ -146,19 +146,19 @@ class website(orm.Model):
|
||||||
self.pool['sale.order'].write(cr, SUPERUSER_ID, [sale_order_id], values, context=context)
|
self.pool['sale.order'].write(cr, SUPERUSER_ID, [sale_order_id], values, context=context)
|
||||||
return sale_order
|
return sale_order
|
||||||
|
|
||||||
def sale_get_transaction(self, cr, uid, context=None):
|
def sale_get_transaction(self, cr, uid, ids, context=None):
|
||||||
transaction_obj = self.pool.get('payment.transaction')
|
transaction_obj = self.pool.get('payment.transaction')
|
||||||
tx_id = request.httprequest.session.get('payment_transaction_id')
|
tx_id = request.session.get('sale_transaction_id')
|
||||||
if tx_id:
|
if tx_id:
|
||||||
tx_ids = transaction_obj.search(cr, uid, [('id', '=', tx_id), ('state', 'not in', ['cancel'])], context=context)
|
tx_ids = transaction_obj.search(cr, uid, [('id', '=', tx_id), ('state', 'not in', ['cancel'])], context=context)
|
||||||
if tx_ids:
|
if tx_ids:
|
||||||
return transaction_obj.browse(cr, uid, tx_ids[0], context=context)
|
return transaction_obj.browse(cr, uid, tx_ids[0], context=context)
|
||||||
else:
|
else:
|
||||||
request.httprequest.session['payment_transaction_id'] = False
|
request.session['sale_transaction_id'] = False
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def sale_reset(self, cr, uid, context=None):
|
def sale_reset(self, cr, uid, ids, context=None):
|
||||||
request.httprequest.session.update({
|
request.session.update({
|
||||||
'sale_order_id': False,
|
'sale_order_id': False,
|
||||||
'sale_transaction_id': False,
|
'sale_transaction_id': False,
|
||||||
})
|
})
|
||||||
|
|
|
@ -12,14 +12,6 @@ $(document).ready(function () {
|
||||||
$(ev.currentTarget).parents(".thumbnail").toggleClass("disabled");
|
$(ev.currentTarget).parents(".thumbnail").toggleClass("disabled");
|
||||||
});
|
});
|
||||||
|
|
||||||
function set_my_cart_quantity(qty) {
|
|
||||||
var $q = $(".my_cart_quantity");
|
|
||||||
$q.parent().parent().removeClass("hidden", !qty);
|
|
||||||
$q.html(qty)
|
|
||||||
.hide()
|
|
||||||
.fadeIn(600);
|
|
||||||
}
|
|
||||||
|
|
||||||
$(".oe_website_sale .oe_cart input.js_quantity").change(function () {
|
$(".oe_website_sale .oe_cart input.js_quantity").change(function () {
|
||||||
var $input = $(this);
|
var $input = $(this);
|
||||||
var value = parseInt($input.val(), 10);
|
var value = parseInt($input.val(), 10);
|
||||||
|
@ -32,8 +24,11 @@ $(document).ready(function () {
|
||||||
location.reload();
|
location.reload();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
set_my_cart_quantity(data.cart_quantity);
|
var $q = $(".my_cart_quantity");
|
||||||
|
$q.parent().parent().removeClass("hidden", !data.quantity);
|
||||||
|
$q.html(data.cart_quantity).hide().fadeIn(600);
|
||||||
$input.val(data.quantity);
|
$input.val(data.quantity);
|
||||||
|
$("#cart_total").replaceWith(data['website_sale.total']);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -844,6 +844,7 @@
|
||||||
<h1 class="mb32">Validate Order</h1>
|
<h1 class="mb32">Validate Order</h1>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-8 col-sm-9 oe_cart">
|
<div class="col-lg-8 col-sm-9 oe_cart">
|
||||||
|
<t t-set="website_sale_order" t-value="website.sale_get_order()"/>
|
||||||
<table class='table table-striped table-condensed' id="cart_products" t-if="website_sale_order and website_sale_order.website_order_line">
|
<table class='table table-striped table-condensed' id="cart_products" t-if="website_sale_order and website_sale_order.website_order_line">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
Loading…
Reference in New Issue