summaryrefslogtreecommitdiff
path: root/addons/payment/wizards
diff options
context:
space:
mode:
authoreco-odoo <eco@odoo.com>2018-07-20 14:09:27 +0200
committerYannick Tivisse <yti@odoo.com>2018-08-10 16:08:47 +0200
commit89e358caa8627c5eff21ee63015dece0997db2b4 (patch)
tree8534521fd812ec993c31d6cc0271bdb213d94d00 /addons/payment/wizards
parent33dee649a891fc5e0385862cfdc0890b000749f2 (diff)
[FIX] onboarding: Fix/Update onboarding to v2.0
Specification ============= - Fix lots of bug due to the BS4 migration - Improve steps - Validate some steps (Like the company configuration) in all the onboarding bars if done in one onboarding bar. - Only animate the confetti one time if a step is done, instead of on each view loading For more information, see: https://www.odoo.com/web#id=1869513&action=333&active_id=965&model=project.task&view_type=form&menu_id=4720
Diffstat (limited to 'addons/payment/wizards')
-rw-r--r--addons/payment/wizards/payment_acquirer_onboarding_wizard.py93
1 files changed, 48 insertions, 45 deletions
diff --git a/addons/payment/wizards/payment_acquirer_onboarding_wizard.py b/addons/payment/wizards/payment_acquirer_onboarding_wizard.py
index 679facc45a9..7523ec5c8d6 100644
--- a/addons/payment/wizards/payment_acquirer_onboarding_wizard.py
+++ b/addons/payment/wizards/payment_acquirer_onboarding_wizard.py
@@ -8,63 +8,70 @@ from odoo.exceptions import UserError
class PaymentWizard(models.TransientModel):
_name = 'payment.acquirer.onboarding.wizard'
- paypal_checked = fields.Boolean('Paypal', default=lambda self: self._get_default_payment_acquirer_onboarding_value('paypal_checked'))
- paypal_email_account = fields.Char('Paypal Email ID', default=lambda self: self._get_default_payment_acquirer_onboarding_value('paypal_email_account'))
- paypal_seller_account = fields.Char('Paypal Merchant ID', default=lambda self: self._get_default_payment_acquirer_onboarding_value('paypal_seller_account'))
- paypal_pdt_token = fields.Char('Paypal PDT Token', default=lambda self: self._get_default_payment_acquirer_onboarding_value('paypal_pdt_token'))
+ payment_method = fields.Selection([
+ ('paypal', "PayPal"),
+ ('stripe', "Credit Card (via Stripe)"),
+ ('manual', "Wire Transfer"),
+ ], string="Payment Method", default=lambda self: self._get_default_payment_acquirer_onboarding_value('payment_method'))
+
+ paypal_email_account = fields.Char("PayPal Email ID", default=lambda self: self._get_default_payment_acquirer_onboarding_value('paypal_email_account'))
+ paypal_seller_account = fields.Char("Paypal Merchant ID", default=lambda self: self._get_default_payment_acquirer_onboarding_value('paypal_seller_account'))
+ paypal_pdt_token = fields.Char("Paypal PDT Token", default=lambda self: self._get_default_payment_acquirer_onboarding_value('paypal_pdt_token'))
- stripe_checked = fields.Boolean('Credit Card (via Stripe)', default=lambda self: self._get_default_payment_acquirer_onboarding_value('stripe_checked'))
stripe_secret_key = fields.Char(default=lambda self: self._get_default_payment_acquirer_onboarding_value('stripe_secret_key'))
stripe_publishable_key = fields.Char(default=lambda self: self._get_default_payment_acquirer_onboarding_value('stripe_publishable_key'))
- manual_checked = fields.Boolean('Manual Payment', default=lambda self: self._get_default_payment_acquirer_onboarding_value('manual_checked'))
- manual_name = fields.Char('Method name', default=lambda self: self._get_default_payment_acquirer_onboarding_value('manual_name'))
- manual_post_msg = fields.Html('Payment instructions', default=lambda self: self._get_default_payment_acquirer_onboarding_value('manual_post_msg'))
+ journal_name = fields.Char("Journal Name", default=lambda self: self._get_default_payment_acquirer_onboarding_value('journal_name'))
+ acc_number = fields.Char("Account Number", default=lambda self: self._get_default_payment_acquirer_onboarding_value('acc_number'))
+ manual_post_msg = fields.Html("Payment instructions")
+
+ @api.onchange('journal_name', 'acc_number')
+ def _set_manual_post_msg_value(self):
+ self.manual_post_msg = _('Please make a payment to %s %s') % (self.journal_name or _("Bank") , self.acc_number or _("Account"))
_payment_acquirer_onboarding_cache = {}
_data_fetched = False
- def _get_manual_payment(self, env=None):
+ def _get_manual_payment_acquirer(self, env=None):
if env is None:
env = self.env
- return env['payment.acquirer'].search(
- [('provider', '=', 'transfer'),
- ('sequence', '=', 2),
- ('company_id', '=', self.env.user.company_id.id)], limit=1)
+ module_id = env.ref('base.module_payment_transfer').id
+ return env['payment.acquirer'].search([('module_id', '=', module_id),
+ ('company_id', '=', env.user.company_id.id)], limit=1)
def _get_default_payment_acquirer_onboarding_value(self, key):
if not self.env.user._is_admin():
- raise UserError(_('Only administators can access this data.'))
+ raise UserError(_("Only administrators can access this data."))
if self._data_fetched:
return self._payment_acquirer_onboarding_cache.get(key, '')
self._data_fetched = True
+ self._payment_acquirer_onboarding_cache['payment_method'] = self.env.user.company_id.payment_onboarding_payment_method
+
installed_modules = self.env['ir.module.module'].sudo().search([
('name', 'in', ('payment_paypal', 'payment_stripe')),
('state', '=', 'installed'),
]).mapped('name')
if 'payment_paypal' in installed_modules:
- self._payment_acquirer_onboarding_cache['paypal_checked'] = True
acquirer = self.env.ref('payment.payment_acquirer_paypal')
self._payment_acquirer_onboarding_cache['paypal_email_account'] = acquirer['paypal_email_account']
self._payment_acquirer_onboarding_cache['paypal_seller_account'] = acquirer['paypal_seller_account']
self._payment_acquirer_onboarding_cache['paypal_pdt_token'] = acquirer['paypal_pdt_token']
if 'payment_stripe' in installed_modules:
- self._payment_acquirer_onboarding_cache['stripe_checked'] = True
acquirer = self.env.ref('payment.payment_acquirer_stripe')
self._payment_acquirer_onboarding_cache['stripe_secret_key'] = acquirer['stripe_secret_key']
self._payment_acquirer_onboarding_cache['stripe_publishable_key'] = acquirer['stripe_publishable_key']
- manual_payment = self._get_manual_payment()
- # manual payment is checked if the user has renamed it
- self._payment_acquirer_onboarding_cache['manual_checked'] = \
- (manual_payment['name'] != 'Wire Transfer')
- self._payment_acquirer_onboarding_cache['manual_name'] = manual_payment['name']
+ manual_payment = self._get_manual_payment_acquirer()
+ journal = manual_payment.journal_id
+
self._payment_acquirer_onboarding_cache['manual_post_msg'] = manual_payment['post_msg']
+ self._payment_acquirer_onboarding_cache['journal_name'] = journal.name if journal.name != "Bank" else ""
+ self._payment_acquirer_onboarding_cache['acc_number'] = journal.bank_acc_number
return self._payment_acquirer_onboarding_cache.get(key, '')
@@ -73,55 +80,51 @@ class PaymentWizard(models.TransientModel):
if module.state not in ('installed', 'to install', 'to upgrade'):
module.button_immediate_install()
- def _hook_on_save_onboarding_payment_acquirer(self):
- # if any payment method is selected activate "Online Payment" in invoicing settings
- self._install_module('account_payment')
-
@api.multi
def add_payment_methods(self):
- if self.paypal_checked is True:
+ """ Install required payment acquiers, configure them and mark the
+ onboarding step as done."""
+
+ if self.payment_method == 'paypal':
self._install_module('payment_paypal')
- if self.stripe_checked is True:
+ if self.payment_method == 'stripe':
self._install_module('payment_stripe')
- if self.paypal_checked is True or self.stripe_checked is True or self.manual_checked is True:
+ if self.payment_method in ('paypal', 'stripe', 'manual'):
- # the wizard is inherited in `sale`
- self._hook_on_save_onboarding_payment_acquirer()
+ self.env.user.company_id.payment_onboarding_payment_method = self.payment_method
# create a new env including the freshly installed module(s)
new_env = api.Environment(self.env.cr, self.env.uid, self.env.context)
- if self.paypal_checked is True:
+ if self.payment_method == 'paypal':
new_env.ref('payment.payment_acquirer_paypal').write({
'paypal_email_account': self.paypal_email_account,
'paypal_seller_account': self.paypal_seller_account,
'paypal_pdt_token': self.paypal_pdt_token,
'website_published': True,
})
- if self.stripe_checked is True:
+ if self.payment_method == 'stripe':
new_env.ref('payment.payment_acquirer_stripe').write({
'stripe_secret_key': self.stripe_secret_key,
'stripe_publishable_key': self.stripe_publishable_key,
'website_published': True,
})
- if self.manual_checked is True:
- self._get_manual_payment(new_env).write({
- 'name': self.manual_name,
- 'post_msg': self.manual_post_msg,
- 'website_published': True,
- })
- self._set_payment_acquirer_onboarding_step_done()
- # delete wizard data immediately to get rid of residual credentials
- self.unlink()
+ if self.payment_method == 'manual':
+ manual_acquirer = self._get_manual_payment_acquirer(new_env)
+ manual_acquirer.post_msg = self.manual_post_msg
+ manual_acquirer.website_published = True
- return {'type': 'ir.actions.act_window_close'}
+ journal = manual_acquirer.journal_id
+ journal.name = self.journal_name
+ journal.bank_acc_number = self.acc_number
- @api.multi
- def action_skip_payment_onboarding_payment_acquirer_step(self):
+ # delete wizard data immediately to get rid of residual credentials
+ self.unlink()
+ # the user clicked `apply` and not cancel so we can assume this step is done.
self._set_payment_acquirer_onboarding_step_done()
return {'type': 'ir.actions.act_window_close'}
def _set_payment_acquirer_onboarding_step_done(self):
- self.env.user.company_id.write({'payment_acquirer_onboarding_done': True})
+ self.env.user.company_id.set_onboarding_step_done('payment_acquirer_onboarding_state')