From 38ae695d00e5afe95da7220e0029c53ed0cda510 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 19 Mar 2014 15:46:08 +0100 Subject: [PATCH 1/7] [IMP] payment modules: added provider selection field that is different from the name. This allows to distinguish name and provider. Provider is a more technical field, used to call some specific methods (_method_name). The name field is used for display on the website. Code and views udpated accordingly. bzr revid: tde@openerp.com-20140319144608-0i4rv520l0bh53f0 --- addons/payment/models/payment_acquirer.py | 33 +++++++++++-------- addons/payment/views/payment_acquirer.xml | 6 ++++ addons/payment_adyen/data/adyen.xml | 3 +- addons/payment_adyen/models/adyen.py | 18 +++++----- .../payment_adyen/views/payment_acquirer.xml | 2 +- addons/payment_ogone/data/ogone.xml | 3 +- addons/payment_ogone/models/ogone.py | 7 +++- .../payment_ogone/views/payment_acquirer.xml | 2 +- addons/payment_paypal/data/paypal.xml | 3 +- addons/payment_paypal/models/paypal.py | 5 +++ .../payment_paypal/views/payment_acquirer.xml | 2 +- addons/payment_transfer/data/transfer.xml | 3 +- .../models/payment_acquirer.py | 5 +++ addons/website_sale/views/website_sale.xml | 2 +- 14 files changed, 63 insertions(+), 31 deletions(-) diff --git a/addons/payment/models/payment_acquirer.py b/addons/payment/models/payment_acquirer.py index 9ad77b3c4cf..464cb0c8f5c 100644 --- a/addons/payment/models/payment_acquirer.py +++ b/addons/payment/models/payment_acquirer.py @@ -52,8 +52,15 @@ class PaymentAcquirer(osv.Model): _name = 'payment.acquirer' _description = 'Payment Acquirer' + def _get_providers(self, cr, uid, context=None): + return [] + + # indirection to ease inheritance + _provider_selection = lambda self, *args, **kwargs: self._get_providers(*args, **kwargs) + _columns = { 'name': fields.char('Name', required=True), + 'provider': fields.selection(_provider_selection, string='Provider', required=True), 'company_id': fields.many2one('res.company', 'Company', required=True), 'pre_msg': fields.html('Message', help='Message displayed to explain and help the payment process.'), 'post_msg': fields.html('Thanks Message', help='Message displayed after having done the payment process.'), @@ -84,10 +91,10 @@ class PaymentAcquirer(osv.Model): } def _check_required_if_provider(self, cr, uid, ids, context=None): - """ If the field has 'required_if_provider=""' attribute, then it - required if record.name is . """ + """ If the field has 'required_if_provider=""' attribute, then it + required if record.provider is . """ for acquirer in self.browse(cr, uid, ids, context=context): - if any(c for c, f in self._all_columns.items() if getattr(f.column, 'required_if_provider', None) == acquirer.name and not acquirer[c]): + if any(c for c, f in self._all_columns.items() if getattr(f.column, 'required_if_provider', None) == acquirer.provider and not acquirer[c]): return False return True @@ -98,8 +105,8 @@ class PaymentAcquirer(osv.Model): def get_form_action_url(self, cr, uid, id, context=None): """ Returns the form action URL, for form-based acquirer implementations. """ acquirer = self.browse(cr, uid, id, context=context) - if hasattr(self, '%s_get_form_action_url' % acquirer.name): - return getattr(self, '%s_get_form_action_url' % acquirer.name)(cr, uid, id, context=context) + if hasattr(self, '%s_get_form_action_url' % acquirer.provider): + return getattr(self, '%s_get_form_action_url' % acquirer.provider)(cr, uid, id, context=context) return False def form_preprocess_values(self, cr, uid, id, reference, amount, currency_id, tx_id, partner_id, partner_values, tx_values, context=None): @@ -178,7 +185,7 @@ class PaymentAcquirer(osv.Model): }) # compute fees - fees_method_name = '%s_compute_fees' % acquirer.name + fees_method_name = '%s_compute_fees' % acquirer.provider if hasattr(self, fees_method_name): fees = getattr(self, fees_method_name)( cr, uid, id, tx_data['amount'], tx_data['currency_id'], partner_data['country_id'], context=None) @@ -237,7 +244,7 @@ class PaymentAcquirer(osv.Model): partner_values, tx_values, context=context) # call _form_generate_values to update the tx dict with acqurier specific values - cust_method_name = '%s_form_generate_values' % (acquirer.name) + cust_method_name = '%s_form_generate_values' % (acquirer.provider) if hasattr(self, cust_method_name): method = getattr(self, cust_method_name) partner_values, tx_values = method(cr, uid, id, partner_values, tx_values, context=context) @@ -383,14 +390,14 @@ class PaymentTransaction(osv.Model): acquirer = self.pool['payment.acquirer'].browse(cr, uid, values.get('acquirer_id'), context=context) # compute fees - custom_method_name = '%s_compute_fees' % acquirer.name + custom_method_name = '%s_compute_fees' % acquirer.provider if hasattr(Acquirer, custom_method_name): fees = getattr(Acquirer, custom_method_name)( cr, uid, acquirer.id, values.get('amount', 0.0), values.get('currency_id'), values.get('country_id'), context=None) values['fees'] = float_round(fees, 2) # custom create - custom_method_name = '%s_create' % acquirer.name + custom_method_name = '%s_create' % acquirer.provider if hasattr(self, custom_method_name): values.update(getattr(self, custom_method_name)(cr, uid, values, context=context)) @@ -469,7 +476,7 @@ class PaymentTransaction(osv.Model): if values.get('acquirer_id'): acquirer = self.pool['payment.acquirer'].browse(cr, uid, values.get('acquirer_id'), context=context) - custom_method_name = '_%s_s2s_send' % acquirer.name + custom_method_name = '_%s_s2s_send' % acquirer.provider if hasattr(self, custom_method_name): tx_id, result = getattr(self, custom_method_name)(cr, uid, values, cc_values, context=context) @@ -482,7 +489,7 @@ class PaymentTransaction(osv.Model): tx = self.browse(cr, uid, tx_id, context=context) invalid_parameters = None - invalid_param_method_name = '_%s_s2s_get_invalid_parameters' % tx.acquirer_id.name + invalid_param_method_name = '_%s_s2s_get_invalid_parameters' % tx.acquirer_id.provider if hasattr(self, invalid_param_method_name): invalid_parameters = getattr(self, invalid_param_method_name)(cr, uid, tx, data, context=context) @@ -493,7 +500,7 @@ class PaymentTransaction(osv.Model): _logger.error(_error_message) return False - feedback_method_name = '_%s_s2s_validate' % tx.acquirer_id.name + feedback_method_name = '_%s_s2s_validate' % tx.acquirer_id.provider if hasattr(self, feedback_method_name): return getattr(self, feedback_method_name)(cr, uid, tx, data, context=context) @@ -503,7 +510,7 @@ class PaymentTransaction(osv.Model): """ Get the tx status. """ tx = self.browse(cr, uid, tx_id, context=context) - invalid_param_method_name = '_%s_s2s_get_tx_status' % tx.acquirer_id.name + invalid_param_method_name = '_%s_s2s_get_tx_status' % tx.acquirer_id.provider if hasattr(self, invalid_param_method_name): return getattr(self, invalid_param_method_name)(cr, uid, tx, context=context) diff --git a/addons/payment/views/payment_acquirer.xml b/addons/payment/views/payment_acquirer.xml index 5dbd748bda7..e2e0644480d 100644 --- a/addons/payment/views/payment_acquirer.xml +++ b/addons/payment/views/payment_acquirer.xml @@ -16,6 +16,7 @@ + @@ -66,6 +67,7 @@ + @@ -77,6 +79,10 @@ + + + + diff --git a/addons/payment_adyen/data/adyen.xml b/addons/payment_adyen/data/adyen.xml index 8f6e7e218e4..5ca0f4d71e9 100644 --- a/addons/payment_adyen/data/adyen.xml +++ b/addons/payment_adyen/data/adyen.xml @@ -3,7 +3,8 @@ - adyen + Adyen + adyen test diff --git a/addons/payment_adyen/models/adyen.py b/addons/payment_adyen/models/adyen.py index 80103f50dae..607d65738c5 100644 --- a/addons/payment_adyen/models/adyen.py +++ b/addons/payment_adyen/models/adyen.py @@ -26,14 +26,14 @@ class AcquirerAdyen(osv.Model): - yhpp: hosted payment page: pay.shtml for single, select.shtml for multiple """ - if env == 'prod': - return { - 'adyen_form_url': 'https://prod.adyen.com/hpp/pay.shtml', - } - else: - return { - 'adyen_form_url': 'https://test.adyen.com/hpp/pay.shtml', - } + return { + 'adyen_form_url': 'https://%s.adyen.com/hpp/pay.shtml' % env, + } + + def _get_providers(self, cr, uid, context=None): + providers = super(AcquirerAdyen, self)._get_providers(cr, uid, context=context) + providers.append(['adyen', 'Adyen']) + return providers _columns = { 'adyen_merchant_account': fields.char('Merchant Account', required_if_provider='adyen'), @@ -54,7 +54,7 @@ class AcquirerAdyen(osv.Model): :return string: shasign """ assert inout in ('in', 'out') - assert acquirer.name == 'adyen' + assert acquirer.provider == 'adyen' if inout == 'in': keys = "paymentAmount currencyCode shipBeforeDate merchantReference skinCode merchantAccount sessionValidity shopperEmail shopperReference recurringContract allowedMethods blockedMethods shopperStatement merchantReturnData billingAddressType deliveryAddressType offset".split() diff --git a/addons/payment_adyen/views/payment_acquirer.xml b/addons/payment_adyen/views/payment_acquirer.xml index 1510a110c43..396bf9c32d5 100644 --- a/addons/payment_adyen/views/payment_acquirer.xml +++ b/addons/payment_adyen/views/payment_acquirer.xml @@ -8,7 +8,7 @@ - + diff --git a/addons/payment_ogone/data/ogone.xml b/addons/payment_ogone/data/ogone.xml index e94276ba3e1..ade39cfb79c 100644 --- a/addons/payment_ogone/data/ogone.xml +++ b/addons/payment_ogone/data/ogone.xml @@ -3,7 +3,8 @@ - ogone + Credit Card + ogone test diff --git a/addons/payment_ogone/models/ogone.py b/addons/payment_ogone/models/ogone.py index 2ae9722b655..f6cab44f0b5 100644 --- a/addons/payment_ogone/models/ogone.py +++ b/addons/payment_ogone/models/ogone.py @@ -36,6 +36,11 @@ class PaymentAcquirerOgone(osv.Model): 'ogone_afu_agree_url': 'https://secure.ogone.com/ncol/%s/AFU_agree.asp' % (env,), } + def _get_providers(self, cr, uid, context=None): + providers = super(PaymentAcquirerOgone, self)._get_providers(cr, uid, context=context) + providers.append(['ogone', 'Ogone']) + return providers + _columns = { 'ogone_pspid': fields.char('PSPID', required_if_provider='ogone'), 'ogone_userid': fields.char('API User ID', required_if_provider='ogone'), @@ -57,7 +62,7 @@ class PaymentAcquirerOgone(osv.Model): :return string: shasign """ assert inout in ('in', 'out') - assert acquirer.name == 'ogone' + assert acquirer.provider == 'ogone' key = getattr(acquirer, 'ogone_shakey_' + inout) def filter_key(key): diff --git a/addons/payment_ogone/views/payment_acquirer.xml b/addons/payment_ogone/views/payment_acquirer.xml index accce4d70d2..f297eb9431a 100644 --- a/addons/payment_ogone/views/payment_acquirer.xml +++ b/addons/payment_ogone/views/payment_acquirer.xml @@ -8,7 +8,7 @@ - + diff --git a/addons/payment_paypal/data/paypal.xml b/addons/payment_paypal/data/paypal.xml index fe28ed30331..0ea6cd5a848 100644 --- a/addons/payment_paypal/data/paypal.xml +++ b/addons/payment_paypal/data/paypal.xml @@ -3,7 +3,8 @@ - paypal + Paypal + paypal test diff --git a/addons/payment_paypal/models/paypal.py b/addons/payment_paypal/models/paypal.py index a5e31e9571c..de852702880 100644 --- a/addons/payment_paypal/models/paypal.py +++ b/addons/payment_paypal/models/paypal.py @@ -34,6 +34,11 @@ class AcquirerPaypal(osv.Model): 'paypal_rest_url': 'https://api.sandbox.paypal.com/v1/oauth2/token', } + def _get_providers(self, cr, uid, context=None): + providers = super(AcquirerPaypal, self)._get_providers(cr, uid, context=context) + providers.append(['paypal', 'Paypal']) + return providers + _columns = { 'paypal_email_account': fields.char('Paypal Email ID', required_if_provider='paypal'), 'paypal_seller_account': fields.char( diff --git a/addons/payment_paypal/views/payment_acquirer.xml b/addons/payment_paypal/views/payment_acquirer.xml index 835d96f42e9..3fb5db184f6 100644 --- a/addons/payment_paypal/views/payment_acquirer.xml +++ b/addons/payment_paypal/views/payment_acquirer.xml @@ -8,7 +8,7 @@ - + diff --git a/addons/payment_transfer/data/transfer.xml b/addons/payment_transfer/data/transfer.xml index c2863971d34..d67e07bdfef 100644 --- a/addons/payment_transfer/data/transfer.xml +++ b/addons/payment_transfer/data/transfer.xml @@ -3,7 +3,8 @@ - transfer + Transfer + transfer manual diff --git a/addons/payment_transfer/models/payment_acquirer.py b/addons/payment_transfer/models/payment_acquirer.py index 90b1329ff25..b8c3d023674 100644 --- a/addons/payment_transfer/models/payment_acquirer.py +++ b/addons/payment_transfer/models/payment_acquirer.py @@ -14,6 +14,11 @@ _logger = logging.getLogger(__name__) class TransferPaymentAcquirer(osv.Model): _inherit = 'payment.acquirer' + def _get_providers(self, cr, uid, context=None): + providers = super(TransferPaymentAcquirer, self)._get_providers(cr, uid, context=context) + providers.append(['transfer', 'Transfer']) + return providers + def transfer_get_form_action_url(self, cr, uid, id, context=None): return '/payment/transfer/feedback' diff --git a/addons/website_sale/views/website_sale.xml b/addons/website_sale/views/website_sale.xml index b870a676cc9..cfd8a131fb7 100644 --- a/addons/website_sale/views/website_sale.xml +++ b/addons/website_sale/views/website_sale.xml @@ -956,7 +956,7 @@ + t-att-src="'/payment_%s/static/src/img/%s_icon.png' % (acquirer.provider, acquirer.provider)"/> From 0e7d514a3ec3cd15799c8a0b430cbdce74d60394 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 4 Apr 2014 10:44:20 +0200 Subject: [PATCH 2/7] [ADD] website_sale: added inherit of the transaction form view to display the sale_order_id field. bzr revid: tde@openerp.com-20140404084420-hhe0yd9npf8vox5h --- addons/website_sale/__openerp__.py | 1 + addons/website_sale/views/payment.xml | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 addons/website_sale/views/payment.xml diff --git a/addons/website_sale/__openerp__.py b/addons/website_sale/__openerp__.py index 121bb519103..e9ab1820804 100644 --- a/addons/website_sale/__openerp__.py +++ b/addons/website_sale/__openerp__.py @@ -14,6 +14,7 @@ OpenERP E-Commerce 'data/website_sale_data.xml', 'views/website_sale.xml', 'views/website_sale_backend.xml', + 'views/payment.xml', 'security/ir.model.access.csv', 'security/website_sale.xml', ], diff --git a/addons/website_sale/views/payment.xml b/addons/website_sale/views/payment.xml new file mode 100644 index 00000000000..f4bec2323bb --- /dev/null +++ b/addons/website_sale/views/payment.xml @@ -0,0 +1,17 @@ + + + + + + payment.transaction.form.website_sale + payment.transaction + + + + + + + + + + From e68627c4b76871a60d9a65bc0641b7d74f181f81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 4 Apr 2014 10:44:41 +0200 Subject: [PATCH 3/7] [IMP] payment: added name on transaction views bzr revid: tde@openerp.com-20140404084441-ctto8puzy6otopst --- addons/payment/views/payment_acquirer.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/payment/views/payment_acquirer.xml b/addons/payment/views/payment_acquirer.xml index e2e0644480d..325bb774ee6 100644 --- a/addons/payment/views/payment_acquirer.xml +++ b/addons/payment/views/payment_acquirer.xml @@ -8,7 +8,7 @@ parent='base.menu_administration'/> - acquirer.form + payment.acquirer.form payment.acquirer
@@ -63,6 +63,7 @@ + payment.acquirer.list payment.acquirer @@ -75,6 +76,7 @@ + payment.acquirer.search payment.acquirer @@ -101,6 +103,7 @@ sequence='10' /> + payment.transaction.form payment.transaction @@ -144,6 +147,7 @@ + payment.transaction.list payment.transaction @@ -157,6 +161,7 @@ + payment.transaction.search payment.transaction From 7e9307e4d87ad77ee61dff98b4ac4892abb0d1e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 4 Apr 2014 10:45:28 +0200 Subject: [PATCH 4/7] [IMP] payment_transfer: Transfer -> Wire Transfer + updated test bzr revid: tde@openerp.com-20140404084528-sfdeyj7sl6dq4tm1 --- addons/payment_transfer/data/transfer.xml | 2 +- addons/payment_transfer/models/payment_acquirer.py | 2 +- addons/website_sale/static/src/js/website.tour.sale.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/payment_transfer/data/transfer.xml b/addons/payment_transfer/data/transfer.xml index d67e07bdfef..5eabe29a17f 100644 --- a/addons/payment_transfer/data/transfer.xml +++ b/addons/payment_transfer/data/transfer.xml @@ -3,7 +3,7 @@ - Transfer + Wire Transfer transfer diff --git a/addons/payment_transfer/models/payment_acquirer.py b/addons/payment_transfer/models/payment_acquirer.py index b8c3d023674..63883b3df30 100644 --- a/addons/payment_transfer/models/payment_acquirer.py +++ b/addons/payment_transfer/models/payment_acquirer.py @@ -16,7 +16,7 @@ class TransferPaymentAcquirer(osv.Model): def _get_providers(self, cr, uid, context=None): providers = super(TransferPaymentAcquirer, self)._get_providers(cr, uid, context=context) - providers.append(['transfer', 'Transfer']) + providers.append(['transfer', 'Wire Transfer']) return providers def transfer_get_form_action_url(self, cr, uid, id, context=None): diff --git a/addons/website_sale/static/src/js/website.tour.sale.js b/addons/website_sale/static/src/js/website.tour.sale.js index c9dd7e5e301..d76d1c98e61 100644 --- a/addons/website_sale/static/src/js/website.tour.sale.js +++ b/addons/website_sale/static/src/js/website.tour.sale.js @@ -73,7 +73,7 @@ }, { title: "select payment", - element: '#payment_method label:has(img[title="transfer"]) input', + element: '#payment_method label:has(img[title="Transfer"]) input', }, { title: "Pay Now", From f0bc588710b7b35690e09cbb232c12b134fb8eb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 4 Apr 2014 10:50:12 +0200 Subject: [PATCH 5/7] [FIX] website_sale: fixed tour bzr revid: tde@openerp.com-20140404085012-2h658158mm4ydkpq --- addons/website_sale/static/src/js/website.tour.sale.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/website_sale/static/src/js/website.tour.sale.js b/addons/website_sale/static/src/js/website.tour.sale.js index d76d1c98e61..0d72a0633c5 100644 --- a/addons/website_sale/static/src/js/website.tour.sale.js +++ b/addons/website_sale/static/src/js/website.tour.sale.js @@ -73,7 +73,7 @@ }, { title: "select payment", - element: '#payment_method label:has(img[title="Transfer"]) input', + element: '#payment_method label:has(img[title="Wire Transfer"]) input', }, { title: "Pay Now", From a06d9099ea07636fa838ceaf7e28415c67666ce7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 4 Apr 2014 11:49:55 +0200 Subject: [PATCH 6/7] [FIX] website_sale: fixed stupid test usign a title bzr revid: tde@openerp.com-20140404094955-51zhadhaavpjvkzl --- addons/website_sale/static/src/js/website.tour.sale.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/website_sale/static/src/js/website.tour.sale.js b/addons/website_sale/static/src/js/website.tour.sale.js index 0d72a0633c5..0fa01addede 100644 --- a/addons/website_sale/static/src/js/website.tour.sale.js +++ b/addons/website_sale/static/src/js/website.tour.sale.js @@ -77,7 +77,7 @@ }, { title: "Pay Now", - waitFor: '#payment_method label:has(input:checked):has(img[title="transfer"])', + waitFor: '#payment_method label:has(input:checked):has(img[title="Wire Transfer"])', element: '.oe_sale_acquirer_button .btn[name="submit"]:visible', }, { From 045a12c5c2064d4b2fb33c24c00c7cb2521060d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 4 Apr 2014 12:49:18 +0200 Subject: [PATCH 7/7] [FIX] website_sale: fixed post_msg, display only when having it (may have False, None, ..) bzr revid: tde@openerp.com-20140404104918-cyszi1l333173d1t --- addons/website_sale/controllers/main.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index ed6cb147828..7511e308b95 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -709,7 +709,8 @@ class Ecommerce(http.Controller): message = '

The payment seems to have been canceled.

' elif state == 'pending' and tx.acquirer_id.validation == 'manual': message = '

Your transaction is waiting confirmation.

' - message += tx.acquirer_id.post_msg + if tx.acquirer_id.post_msg: + message += tx.acquirer_id.post_msg else: message = '

Your transaction is waiting confirmation.

' validation = tx.acquirer_id.validation