summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@openerp.com>2014-01-28 17:38:15 +0100
committerChristophe Matthieu <chm@openerp.com>2014-01-28 17:38:15 +0100
commitb25a34ea94a6a8bfe35f7ebff56eb1e7d4981ce6 (patch)
treec71367c6a775453e9b5414968a0f6f10b9a39f66 /addons
parentdf38615ea3425f300fba7b3ecd945f441fb470f0 (diff)
[FIX] website_sale: payment if free
bzr revid: chm@openerp.com-20140128163815-ksds4a7zox84glv8
Diffstat (limited to 'addons')
-rw-r--r--addons/payment_adyen/views/adyen.xml2
-rw-r--r--addons/payment_ogone/views/ogone.xml2
-rw-r--r--addons/payment_paypal/views/paypal.xml2
-rw-r--r--addons/payment_transfer/views/transfer.xml4
-rw-r--r--addons/website_sale/controllers/main.py45
-rw-r--r--addons/website_sale/views/website_sale.xml11
6 files changed, 42 insertions, 24 deletions
diff --git a/addons/payment_adyen/views/adyen.xml b/addons/payment_adyen/views/adyen.xml
index 0a2ef7eeeeb..75e166f92fe 100644
--- a/addons/payment_adyen/views/adyen.xml
+++ b/addons/payment_adyen/views/adyen.xml
@@ -5,7 +5,7 @@
<template id="adyen_acquirer_button">
<form t-if="acquirer.adyen_merchant_account" t-att-action="tx_url" method="post" target="_self">
<input type="hidden" name="merchantReference" t-att-value="tx_values['merchantReference']"/>
- <input type="hidden" name="paymentAmount" t-att-value="tx_values['paymentAmount']"/>
+ <input type="hidden" name="paymentAmount" t-att-value="tx_values['paymentAmount'] or '0.0'"/>
<input type="hidden" name="currencyCode" t-att-value="tx_values['currencyCode']"/>
<input type="hidden" name="shipBeforeDate" t-att-value="tx_values['shipBeforeDate']"/>
<input type="hidden" name="skinCode" t-att-value="tx_values['skinCode']"/>
diff --git a/addons/payment_ogone/views/ogone.xml b/addons/payment_ogone/views/ogone.xml
index 72fa4fc0ca3..be89579c84a 100644
--- a/addons/payment_ogone/views/ogone.xml
+++ b/addons/payment_ogone/views/ogone.xml
@@ -8,7 +8,7 @@
<input type='hidden' name='PSPID' t-att-value='tx_values["PSPID"]'/>
<input type='hidden' name='ORDERID' t-att-value='tx_values["ORDERID"]'/>
<!-- cart -->
- <input type='hidden' name='AMOUNT' t-att-value='tx_values["AMOUNT"]'/>
+ <input type='hidden' name='AMOUNT' t-att-value='tx_values["AMOUNT"] or "0.0"'/>
<input type='hidden' name='CURRENCY' t-att-value='tx_values["CURRENCY"]'/>
<!-- buyer -->
<input type='hidden' name='LANGUAGE' t-att-value='tx_values["LANGUAGE"]'/>
diff --git a/addons/payment_paypal/views/paypal.xml b/addons/payment_paypal/views/paypal.xml
index 64313b3f15a..3c9ffacf2bf 100644
--- a/addons/payment_paypal/views/paypal.xml
+++ b/addons/payment_paypal/views/paypal.xml
@@ -8,7 +8,7 @@
<input type="hidden" name="business" t-att-value="tx_values['business']"/>
<input type="hidden" name="item_name" t-att-value="tx_values['item_name']"/>
<input type="hidden" name="item_number" t-att-value="tx_values['item_number']"/>
- <input type="hidden" name="amount" t-att-value="tx_values['amount']"/>
+ <input type="hidden" name="amount" t-att-value="tx_values['amount'] or '0.0'"/>
<input t-if="'handling' in tx_values" type="hidden" name="handling"
t-att-value="tx_values.get('handling')"/>
<input type="hidden" name="currency_code" t-att-value="tx_values['currency_code']"/>
diff --git a/addons/payment_transfer/views/transfer.xml b/addons/payment_transfer/views/transfer.xml
index 9f96196d624..ddb45d32e8d 100644
--- a/addons/payment_transfer/views/transfer.xml
+++ b/addons/payment_transfer/views/transfer.xml
@@ -8,10 +8,10 @@
<input type='hidden' name='return_url' t-att-value='tx_values["return_url"]'/>
</t>
<input type='hidden' name='reference' t-att-value='reference'/>
- <input type='hidden' name='amount' t-att-value='amount'/>
+ <input type='hidden' name='amount' t-att-value='amount or "0.0"'/>
<input type='hidden' name='currency' t-att-value='currency.name'/>
<!-- submit -->
- <button type="image" name="submit" width="100px"
+ <button name="submit" width="100px"
t-att-class="submit_class">
<img t-if="not submit_txt" src="/payment_transfer/static/src/img/transfer_icon.png"/>
<span t-if="submit_txt"><t t-esc="submit_txt"/> <span class="fa fa-long-arrow-right"/></span>
diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py
index 1cd78fdc05f..9147862814d 100644
--- a/addons/website_sale/controllers/main.py
+++ b/addons/website_sale/controllers/main.py
@@ -654,27 +654,35 @@ class Ecommerce(http.Controller):
cr, uid, [
'|', ('sale_order_id', '=', order.id), ('reference', '=', order.name)
], context=context)
+
if not tx_ids:
- return {
- 'state': 'error',
- 'message': '<p>There seems to be an error with your request.</p>',
- }
- tx = request.registry['payment.transaction'].browse(cr, uid, tx_ids[0], context=context)
- state = tx.state
- if state == 'done':
- message = '<p>Your payment has been received.</p>'
- elif state == 'cancel':
- message = '<p>The payment seems to have been canceled.</p>'
- elif state == 'pending' and tx.acquirer_id.validation == 'manual':
- message = '<p>Your transaction is waiting confirmation.</p>'
- message += tx.acquirer_id.post_msg
+ if order.amount_total:
+ return {
+ 'state': 'error',
+ 'message': '<p>There seems to be an error with your request.</p>',
+ }
+ else:
+ state = 'done'
+ message = ""
+ validation = None
else:
- message = '<p>Your transaction is waiting confirmation.</p>'
+ tx = request.registry['payment.transaction'].browse(cr, uid, tx_ids[0], context=context)
+ state = tx.state
+ if state == 'done':
+ message = '<p>Your payment has been received.</p>'
+ elif state == 'cancel':
+ message = '<p>The payment seems to have been canceled.</p>'
+ elif state == 'pending' and tx.acquirer_id.validation == 'manual':
+ message = '<p>Your transaction is waiting confirmation.</p>'
+ message += tx.acquirer_id.post_msg
+ else:
+ message = '<p>Your transaction is waiting confirmation.</p>'
+ validation = tx.acquirer_id.validation
return {
'state': state,
'message': message,
- 'validation': tx.acquirer_id.validation
+ 'validation': validation
}
@http.route('/shop/payment/validate/', type='http', auth="public", website=True, multilang=True)
@@ -690,8 +698,6 @@ class Ecommerce(http.Controller):
if transaction_id is None:
tx = context.get('website_sale_transaction')
- if not tx:
- return request.redirect('/shop/')
else:
tx = request.registry['payment.transaction'].browse(cr, uid, transaction_id, context=context)
@@ -701,7 +707,10 @@ class Ecommerce(http.Controller):
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']
- if tx.state == 'done':
+ if not tx and order.amount_total:
+ return request.redirect('/shop/')
+
+ if not order.amount_total or tx.state == 'done':
# confirm the quotation
sale_order_obj.action_button_confirm(cr, SUPERUSER_ID, [order.id], context=request.context)
# send by email
diff --git a/addons/website_sale/views/website_sale.xml b/addons/website_sale/views/website_sale.xml
index a57767183bb..25895e9b937 100644
--- a/addons/website_sale/views/website_sale.xml
+++ b/addons/website_sale/views/website_sale.xml
@@ -938,7 +938,7 @@
</div>
</div>
- <div class="js_payment mb64 row" t-if="acquirers" id="payment_method">
+ <div class="js_payment mb64 row" t-if="acquirers and website_sale_order.amount_total" id="payment_method">
<div class="col-lg-5 col-sm-6">
<h4>Payment Method:</h4>
<ul class="list-unstyled">
@@ -962,6 +962,15 @@
</t>
</div>
</div>
+ <div class="js_payment mb64 row" t-if="not website_sale_order.amount_total" id="payment_method">
+ <div class="col-lg-8 col-sm-8">
+ <form target="_self" action="/shop/payment/validate/" method="post" class="pull-right">
+ <button width="100px" class="btn btn-primary" name="submit">
+ <span>Pay Now <span class="fa fa-long-arrow-right"></span></span>
+ </button>
+ </form>
+ </div>
+ </div>
</div>
<div class="oe_structure"/>