diff options
| author | eco-odoo <eco@odoo.com> | 2018-07-20 14:09:27 +0200 |
|---|---|---|
| committer | Yannick Tivisse <yti@odoo.com> | 2018-08-10 16:08:47 +0200 |
| commit | 89e358caa8627c5eff21ee63015dece0997db2b4 (patch) | |
| tree | 8534521fd812ec993c31d6cc0271bdb213d94d00 /addons/payment/wizards | |
| parent | 33dee649a891fc5e0385862cfdc0890b000749f2 (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.py | 93 |
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') |
