diff options
| author | Christophe Matthieu <chm@openerp.com> | 2014-01-28 17:38:15 +0100 |
|---|---|---|
| committer | Christophe Matthieu <chm@openerp.com> | 2014-01-28 17:38:15 +0100 |
| commit | b25a34ea94a6a8bfe35f7ebff56eb1e7d4981ce6 (patch) | |
| tree | c71367c6a775453e9b5414968a0f6f10b9a39f66 /addons | |
| parent | df38615ea3425f300fba7b3ecd945f441fb470f0 (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.xml | 2 | ||||
| -rw-r--r-- | addons/payment_ogone/views/ogone.xml | 2 | ||||
| -rw-r--r-- | addons/payment_paypal/views/paypal.xml | 2 | ||||
| -rw-r--r-- | addons/payment_transfer/views/transfer.xml | 4 | ||||
| -rw-r--r-- | addons/website_sale/controllers/main.py | 45 | ||||
| -rw-r--r-- | addons/website_sale/views/website_sale.xml | 11 |
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"/> |
