diff options
| author | Pierre Masereel <pim@odoo.com> | 2019-01-10 09:07:46 +0000 |
|---|---|---|
| committer | Pierre Masereel <pim@odoo.com> | 2019-01-10 13:41:49 +0000 |
| commit | 5f724892e7a7b0f43802bf215bf9c96d4e1030f5 (patch) | |
| tree | 5c0515d57030db9d3ad615cc6270e238bf2aa68f | |
| parent | 6e1161e2ee6a5ffb14d2c3a24b696a89e0fba840 (diff) | |
[FIX] payment: create payment transaction without partner_id
The field partner id is not a required field in payment transaction, and
we try to read its value in the dictionnary given to the create
function, so if a transaction is created without the partner_id, it will
raise a KeyError.
So to fix it, we only complete the pratner values on the payment
transaction if a partner_id is given.
| -rw-r--r-- | addons/payment/models/payment_acquirer.py | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/addons/payment/models/payment_acquirer.py b/addons/payment/models/payment_acquirer.py index 9fa51724678..afed11da38e 100644 --- a/addons/payment/models/payment_acquirer.py +++ b/addons/payment/models/payment_acquirer.py @@ -871,24 +871,25 @@ class PaymentTransaction(models.Model): def create(self, values): # call custom create method if defined (i.e. ogone_create for ogone) acquirer = self.env['payment.acquirer'].browse(values['acquirer_id']) - partner = self.env['res.partner'].browse(values['partner_id']) + if values.get('partner_id'): + partner = self.env['res.partner'].browse(values['partner_id']) - values.update({ - 'partner_name': partner.name, - 'partner_lang': partner.lang or 'en_US', - 'partner_email': partner.email, - 'partner_zip': partner.zip, - 'partner_address': _partner_format_address(partner.street or '', partner.street2 or ''), - 'partner_city': partner.city, - 'partner_country_id': partner.country_id.id or self._get_default_partner_country_id(), - 'partner_phone': partner.phone, - }) + values.update({ + 'partner_name': partner.name, + 'partner_lang': partner.lang or 'en_US', + 'partner_email': partner.email, + 'partner_zip': partner.zip, + 'partner_address': _partner_format_address(partner.street or '', partner.street2 or ''), + 'partner_city': partner.city, + 'partner_country_id': partner.country_id.id or self._get_default_partner_country_id(), + 'partner_phone': partner.phone, + }) # compute fees custom_method_name = '%s_compute_fees' % acquirer.provider if hasattr(acquirer, custom_method_name): fees = getattr(acquirer, custom_method_name)( - values.get('amount', 0.0), values.get('currency_id'), partner.country_id.id) + values.get('amount', 0.0), values.get('currency_id'), values['partner_country_id']) values['fees'] = fees # custom create |
