diff --git a/addons/payment/data/payment_acquirer_data.xml b/addons/payment/data/payment_acquirer_data.xml index fb1ddf4ee16..0271aebdd52 100644 --- a/addons/payment/data/payment_acquirer_data.xml +++ b/addons/payment/data/payment_acquirer_data.xml @@ -36,6 +36,7 @@ Ingenico + 2 @@ -70,6 +71,7 @@ Authorize.net + 3 @@ -89,6 +91,7 @@ Wire Transfer + 2 @@ -118,6 +121,7 @@ Paypal + 1 diff --git a/addons/payment/models/payment_acquirer.py b/addons/payment/models/payment_acquirer.py index 9c8402d3d48..a8e3f895c9f 100644 --- a/addons/payment/models/payment_acquirer.py +++ b/addons/payment/models/payment_acquirer.py @@ -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 diff --git a/addons/website_sale/data/demo.xml b/addons/website_sale/data/demo.xml index d583adbd514..25a7a954669 100644 --- a/addons/website_sale/data/demo.xml +++ b/addons/website_sale/data/demo.xml @@ -1041,7 +1041,7 @@ Weight: 31 grams form - authorized + pending 1799.0