diff --git a/addons/payment/__openerp__.py b/addons/payment/__openerp__.py
index 4102c4fe276..bc5d3896ac2 100644
--- a/addons/payment/__openerp__.py
+++ b/addons/payment/__openerp__.py
@@ -7,9 +7,10 @@
'version': '1.0',
'description': """Payment Acquirer Base Module""",
'author': 'OpenERP SA',
- 'depends': ['mail'],
+ 'depends': ['mail', 'account'],
'data': [
'views/payment_acquirer.xml',
+ 'views/res_config_view.xml',
'security/ir.model.access.csv',
],
'installable': True,
diff --git a/addons/payment/models/__init__.py b/addons/payment/models/__init__.py
index da51c9c1854..cd7858767fc 100644
--- a/addons/payment/models/__init__.py
+++ b/addons/payment/models/__init__.py
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import payment_acquirer
+import res_config
diff --git a/addons/payment/models/res_config.py b/addons/payment/models/res_config.py
new file mode 100644
index 00000000000..a0e9b1f7a11
--- /dev/null
+++ b/addons/payment/models/res_config.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+
+from openerp.osv import fields, osv
+
+
+class AccountPaymentConfig(osv.TransientModel):
+ _inherit = 'account.config.settings'
+
+ _columns = {
+ 'module_payment_paypal': fields.boolean(
+ 'Manage Payments Using Paypal',
+ help='Blahblahblah\n'
+ '-It installs the module payment_paypal.'),
+ 'module_payment_ogone': fields.boolean(
+ 'Manage Payments Using Ogone',
+ help='Blahblahblah\n'
+ '-It installs the module payment_ogone.'),
+ 'module_payment_adyen': fields.boolean(
+ 'Manage Payments Using Adyen',
+ help='Blahblahblah\n'
+ '-It installs the module payment_adyen.'),
+ }
diff --git a/addons/payment/views/res_config_view.xml b/addons/payment/views/res_config_view.xml
new file mode 100644
index 00000000000..101acb7c9ee
--- /dev/null
+++ b/addons/payment/views/res_config_view.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ account.config.settings
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/payment_paypal/__openerp__.py b/addons/payment_paypal/__openerp__.py
index d2341b5bae8..d57ce377b2d 100644
--- a/addons/payment_paypal/__openerp__.py
+++ b/addons/payment_paypal/__openerp__.py
@@ -11,6 +11,7 @@
'data': [
'views/paypal.xml',
'views/payment_acquirer.xml',
+ 'views/res_config_view.xml',
'data/paypal.xml',
],
'installable': True,
diff --git a/addons/payment_paypal/data/paypal.xml b/addons/payment_paypal/data/paypal.xml
index fdf59ce967e..bb31b063aee 100644
--- a/addons/payment_paypal/data/paypal.xml
+++ b/addons/payment_paypal/data/paypal.xml
@@ -4,6 +4,7 @@
paypal
+
test
dummy
+
diff --git a/addons/payment_paypal/models/__init__.py b/addons/payment_paypal/models/__init__.py
index a1fe670f56f..7af8e269d79 100644
--- a/addons/payment_paypal/models/__init__.py
+++ b/addons/payment_paypal/models/__init__.py
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import paypal
+import res_company
diff --git a/addons/payment_paypal/models/paypal.py b/addons/payment_paypal/models/paypal.py
index e3d58ffbc12..f02fb644eec 100644
--- a/addons/payment_paypal/models/paypal.py
+++ b/addons/payment_paypal/models/paypal.py
@@ -36,8 +36,10 @@ class AcquirerPaypal(osv.Model):
_columns = {
'paypal_email_account': fields.char('Paypal Email ID', required_if_provider='paypal'),
- 'paypal_seller_account': fields.char('Paypal Seller ID', required_if_provider='paypal'),
- 'paypal_use_ipn': fields.boolean('Use IPN'),
+ 'paypal_seller_account': fields.char(
+ 'Paypal Seller ID',
+ help='The Seller ID is used to ensure communications coming from Paypal are valid and secured.'),
+ 'paypal_use_ipn': fields.boolean('Use IPN', help='Paypal Instant Payment Notification'),
# Server 2 server
'paypal_api_enabled': fields.boolean('Use Rest API'),
'paypal_api_username': fields.char('Rest API Username'),
@@ -56,6 +58,23 @@ class AcquirerPaypal(osv.Model):
'paypal_api_enabled': False,
}
+ def _migrate_paypal_account(self, cr, uid, context=None):
+ """ COMPLETE ME """
+ cr.execute('SELECT id, paypal_account FROM res_company')
+ res = cr.fetchall()
+ for (company_id, company_paypal_account) in res:
+ if company_paypal_account:
+ company_paypal_ids = self.search(cr, uid, [('company_id', '=', company_id), ('name', '=', 'paypal')], limit=1, context=context)
+ if company_paypal_ids:
+ self.write(cr, uid, company_paypal_ids, {'paypal_email_account': company_paypal_account}, context=context)
+ else:
+ paypal_view = self.pool['ir.model.data'].get_object(cr, uid, 'payment_paypal', 'paypal_acquirer_button')
+ self.create(cr, uid, {
+ 'paypal_email_account': company_paypal_account,
+ 'view_template_id': paypal_view.id,
+ }, context=context)
+ return True
+
def paypal_compute_fees(self, cr, uid, id, amount, currency_id, country_id, context=None):
""" Compute paypal fees.
@@ -195,7 +214,7 @@ class TxPaypal(osv.Model):
# check seller
if data.get('receiver_email') != tx.acquirer_id.paypal_email_account:
invalid_parameters.append(('receiver_email', data.get('receiver_email'), tx.acquirer_id.paypal_email_account))
- if data.get('receiver_id') != tx.acquirer_id.paypal_seller_account:
+ if tx.acquirer_id.paypal_seller_account and data.get('receiver_id') != tx.acquirer_id.paypal_seller_account:
invalid_parameters.append(('receiver_id', data.get('receiver_id'), tx.acquirer_id.paypal_seller_account))
return invalid_parameters
diff --git a/addons/payment_paypal/models/res_company.py b/addons/payment_paypal/models/res_company.py
new file mode 100644
index 00000000000..16fd51dfeda
--- /dev/null
+++ b/addons/payment_paypal/models/res_company.py
@@ -0,0 +1,43 @@
+# -*- coding: utf-8 -*-
+
+from openerp.osv import fields, osv
+
+
+class ResCompany(osv.Model):
+ _inherit = "res.company"
+
+ def _get_paypal_account(self, cr, uid, ids, name, arg, context=None):
+ Acquirer = self.pool['payment.acquirer']
+ company_id = self.pool['res.users'].browse(cr, uid, uid, context=context).company_id.id
+ paypal_ids = Acquirer.search(cr, uid, [
+ ('portal_published', '=', True),
+ ('name', 'ilike', 'paypal'),
+ ('company_id', '=', company_id),
+ ], limit=1, context=context)
+ if paypal_ids:
+ paypal = Acquirer.browse(cr, uid, paypal_ids[0], context=context)
+ return dict.fromkeys(ids, paypal.paypal_email_account)
+ return dict.fromkeys(ids, False)
+
+ def _set_paypal_account(self, cr, uid, id, name, value, arg, context=None):
+ Acquirer = self.pool['payment.acquirer']
+ company_id = self.pool['res.users'].browse(cr, uid, uid, context=context).company_id.id
+ paypal_account = self.browse(cr, uid, id, context=context).paypal_account
+ paypal_ids = Acquirer.search(cr, uid, [
+ ('portal_published', '=', True),
+ ('paypal_email_account', '=', paypal_account),
+ ('company_id', '=', company_id),
+ ], context=context)
+ if paypal_ids:
+ Acquirer.write(cr, uid, paypal_ids, {'paypal_email_account': value}, context=context)
+ return True
+
+ _columns = {
+ 'paypal_account': fields.function(
+ _get_paypal_account,
+ fnct_inv=_set_paypal_account,
+ nodrop=True,
+ type='char', string='Paypal Account',
+ help="Paypal username (usually email) for receiving online payments."
+ ),
+ }
diff --git a/addons/payment_paypal/views/res_config_view.xml b/addons/payment_paypal/views/res_config_view.xml
new file mode 100644
index 00000000000..fbe23f71229
--- /dev/null
+++ b/addons/payment_paypal/views/res_config_view.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ account.config.settings
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/portal_sale/res_config_view.xml b/addons/portal_sale/res_config_view.xml
index 50664a43d36..15bca2ea6bd 100644
--- a/addons/portal_sale/res_config_view.xml
+++ b/addons/portal_sale/res_config_view.xml
@@ -11,6 +11,8 @@
+