[FIX] website_sale: payment if free

bzr revid: chm@openerp.com-20140128163815-ksds4a7zox84glv8
This commit is contained in:
Christophe Matthieu 2014-01-28 17:38:15 +01:00
parent df38615ea3
commit b25a34ea94
6 changed files with 42 additions and 24 deletions

View File

@ -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']"/>

View File

@ -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"]'/>

View File

@ -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']"/>

View File

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

View File

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

View File

@ -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"/>