[FIX] payment: perform small code improvements

* add a constraints about authorized state for tx and authorize feature
   available on acquirer;
 * order acquirers first by publish, then sequence then name;
 * add a sequence on some provider data and use a default to have some
   popular acquirers first;
 * use update instead of write in an onchange;
This commit is contained in:
Jitendra Prajapati
2017-05-17 14:41:00 +02:00
committed by Thibault Delavallée
parent de5433f415
commit b6d636617c
3 changed files with 14 additions and 4 deletions
@@ -36,6 +36,7 @@
<record id="payment_acquirer_ogone" model="payment.acquirer">
<field name="name">Ingenico</field>
<field name="sequence">2</field>
<field name="view_template_id" ref="default_acquirer_button"/>
<field name="image" type="base64" file="payment_ogone/static/src/img/ogone_icon.png"/>
<field name="module_id" ref="base.module_payment_ogone"/>
@@ -70,6 +71,7 @@
<record id="payment_acquirer_authorize" model="payment.acquirer">
<field name="name">Authorize.net</field>
<field name="sequence">3</field>
<field name="view_template_id" ref="default_acquirer_button"/>
<field name="image" type="base64" file="payment_authorize/static/src/img/authorize_icon.png"/>
<field name="module_id" ref="base.module_payment_authorize"/>
@@ -89,6 +91,7 @@
<record id="payment_acquirer_transfer" model="payment.acquirer">
<field name="name">Wire Transfer</field>
<field name="sequence">2</field>
<field name="view_template_id" ref="default_acquirer_button"/>
<field name="image" type="base64" file="payment_transfer/static/src/img/transfer_icon.png"/>
<field name="module_id" ref="base.module_payment_transfer"/>
@@ -118,6 +121,7 @@
<record id="payment_acquirer_paypal" model="payment.acquirer">
<field name="name">Paypal</field>
<field name="sequence">1</field>
<field name="view_template_id" ref="default_acquirer_button"/>
<field name="image" type="base64" file="payment_paypal/static/src/img/paypal_icon.png"/>
<field name="module_id" ref="base.module_payment_paypal"/>
+9 -3
View File
@@ -48,11 +48,11 @@ class PaymentAcquirer(models.Model):
"""
_name = 'payment.acquirer'
_description = 'Payment Acquirer'
_order = 'sequence'
_order = 'website_published desc, sequence, name'
name = fields.Char('Name', required=True, translate=True)
description = fields.Html('Description')
sequence = fields.Integer('Sequence', help="Determine the display order")
sequence = fields.Integer('Sequence', default=10, help="Determine the display order")
provider = fields.Selection(
selection=[('manual', 'Manual Configuration')], string='Provider',
default='manual', required=True)
@@ -459,7 +459,7 @@ class PaymentTransaction(models.Model):
@api.onchange('partner_id')
def _onchange_partner_id(self):
onchange_vals = self.on_change_partner_id(self.partner_id.id).get('value', {})
self.write(onchange_vals)
self.update(onchange_vals)
@api.multi
def on_change_partner_id(self, partner_id):
@@ -485,6 +485,12 @@ class PaymentTransaction(models.Model):
raise exceptions.ValidationError(_('The payment transaction reference must be unique!'))
return True
@api.constrains('state', 'acquirer_id')
def _check_authorize_state(self):
failed_tx = self.filtered(lambda tx: tx.state == 'authorized' and tx.acquirer_id.provider not in self.env['payment.acquirer']._get_feature_support()['authorize'])
if failed_tx:
raise exceptions.ValidationError(_('The %s payment acquirers are not allowed to manual capture mode!' % failed_tx.mapped('acquirer_id.name')))
@api.model
def create(self, values):
if values.get('partner_id'): # @TDENOTE: not sure
+1 -1
View File
@@ -1041,7 +1041,7 @@ Weight: 31 grams</field>
<field name="sale_order_id" ref="website_sale_order_13"/>
<field name="reference" ref="website_sale_order_13"/>
<field name="type">form</field>
<field name="state">authorized</field>
<field name="state">pending</field>
<field name="amount">1799.0</field>
<field name="currency_id" ref="base.USD"/>
<field name="partner_id" ref="base.res_partner_3"/>