[FIX] payment_stripe, website_quote, website_sale: update SO

! This is a backport from 10.0 (9010ed0a) !

opw-693017

Original commit message:

A side effect of commit b9d1239eff if that the method `sale_get_order`,
which is used to retrieve the SO, will also update information on this
SO (change partner, change pricelist...). We therefore need another way
to retrieve the SO.

opw-692919
This commit is contained in:
Nicolas Martinelli
2016-11-03 12:58:02 -07:00
committed by Joren Van Onder
parent c54dbe2a92
commit 83d1bb8df2
2 changed files with 18 additions and 2 deletions
@@ -46,8 +46,14 @@ odoo.define('payment_stripe.stripe', function(require) {
return false;
}
var so_token = $("input[name='token']").val();
var so_id = $("input[name='return_url']").val().match(/quote\/([0-9]+)/);
if (so_id) {
so_id = parseInt(so_id[1]);
}
e.preventDefault();
ajax.jsonRpc('/shop/payment/transaction/' + acquirer_id, 'call', {}).then(function (data) {
ajax.jsonRpc('/shop/payment/transaction/' + acquirer_id, 'call', {'so_id': so_id, 'so_token': so_token}).then(function (data) {
$form.html(data);
handler.open({
name: $("input[name='merchant']").val(),
+11 -1
View File
@@ -737,7 +737,7 @@ class WebsiteSale(http.Controller):
return request.website.render("website_sale.payment", values)
@http.route(['/shop/payment/transaction/<int:acquirer_id>'], type='json', auth="public", website=True)
def payment_transaction(self, acquirer_id):
def payment_transaction(self, acquirer_id, **kwargs):
""" Json method that creates a payment.transaction, used to create a
transaction when the user clicks on 'pay now' button. After having
created the transaction, the event continues and the user is redirected
@@ -749,6 +749,16 @@ class WebsiteSale(http.Controller):
Transaction = request.env['payment.transaction'].sudo()
order = request.website.sale_get_order()
# In case the route is called directly from the JS (as done in Stripe payment method)
so_id = kwargs.get('so_id')
so_token = kwargs.get('so_token')
if so_id and so_token:
order = request.env['sale.order'].sudo().search([('id', '=', so_id), ('access_token', '=', so_token)])
elif so_id:
order = request.env['sale.order'].search([('id', '=', so_id)])
else:
order = request.website.sale_get_order()
if not order or not order.order_line or acquirer_id is None:
return request.redirect("/shop/checkout")