From 5b79505bb136bdfab3f7c1fe7eb120c73cb9fdff Mon Sep 17 00:00:00 2001 From: ptr Date: Tue, 25 Oct 2016 18:37:24 +0530 Subject: [PATCH] [IMP] account*: Improve the settings form view --- addons/account/__manifest__.py | 6 +- addons/account/models/company.py | 3 +- addons/account/models/res_config.py | 276 ++------- addons/account/views/account_view.xml | 1 + addons/account/views/res_config_view.xml | 566 +++++++++++------- addons/account_accountant/__init__.py | 2 + addons/account_accountant/__manifest__.py | 1 + .../models/__init__.py | 0 .../account_accountant/models/res_config.py | 31 + .../views/res_config_view.xml | 102 ++++ .../account_analytic_default/__manifest__.py | 3 +- .../views/res_config_view.xml | 18 + addons/account_asset/__manifest__.py | 1 + .../account_asset/views/res_config_view.xml | 19 + addons/account_budget/__manifest__.py | 1 + .../account_budget/views/res_config_view.xml | 19 + addons/base_vat/__manifest__.py | 1 + addons/base_vat/models/__init__.py | 1 + addons/base_vat/models/res_company.py | 5 +- addons/base_vat/models/res_config.py | 10 + addons/base_vat/views/res_config_view.xml | 26 + addons/l10n_eu_service/wizard/wizard.xml | 12 - addons/l10n_fr_hr_payroll/__manifest__.py | 2 +- .../l10n_fr_hr_payroll_config_settings.py | 10 +- ...0n_fr_hr_payroll_config_settings_views.xml | 62 +- addons/l10n_us/__init__.py | 1 - addons/l10n_us/__manifest__.py | 1 - addons/l10n_us/models/res_config.py | 11 - addons/l10n_us/views/res_config_view.xml | 18 - addons/payment/__manifest__.py | 1 - .../views/account_config_settings_views.xml | 18 - addons/payment_paypal/__manifest__.py | 1 - .../views/account_config_settings_views.xml | 15 - addons/purchase/__manifest__.py | 1 + addons/purchase/models/res_config.py | 3 +- .../views/account_config_settings_views.xml | 25 + addons/purchase/views/res_config_views.xml | 20 - addons/sale/models/__init__.py | 1 - addons/sale/models/account_config_settings.py | 13 - .../views/account_config_settings_views.xml | 23 - addons/website_payment/__manifest__.py | 1 - addons/website_payment/models/__init__.py | 1 - addons/website_payment/models/res_config.py | 31 - .../website_payment/views/res_config_view.xml | 18 - addons/website_sale/models/res_config.py | 1 - 45 files changed, 696 insertions(+), 686 deletions(-) rename addons/{l10n_us => account_accountant}/models/__init__.py (100%) create mode 100644 addons/account_accountant/models/res_config.py create mode 100644 addons/account_accountant/views/res_config_view.xml create mode 100644 addons/account_analytic_default/views/res_config_view.xml create mode 100644 addons/account_asset/views/res_config_view.xml create mode 100644 addons/account_budget/views/res_config_view.xml create mode 100644 addons/base_vat/models/res_config.py create mode 100644 addons/base_vat/views/res_config_view.xml delete mode 100644 addons/l10n_us/models/res_config.py delete mode 100644 addons/l10n_us/views/res_config_view.xml delete mode 100644 addons/payment/views/account_config_settings_views.xml delete mode 100644 addons/payment_paypal/views/account_config_settings_views.xml create mode 100644 addons/purchase/views/account_config_settings_views.xml delete mode 100644 addons/sale/models/account_config_settings.py delete mode 100644 addons/sale/views/account_config_settings_views.xml delete mode 100644 addons/website_payment/models/res_config.py delete mode 100644 addons/website_payment/views/res_config_view.xml diff --git a/addons/account/__manifest__.py b/addons/account/__manifest__.py index c9c793c4a63..ff810f5247d 100644 --- a/addons/account/__manifest__.py +++ b/addons/account/__manifest__.py @@ -38,15 +38,12 @@ You could use this simplified accounting in case you work with an (external) acc 'views/partner_view.xml', 'views/product_view.xml', 'views/account_analytic_view.xml', - 'views/res_config_view.xml', 'views/account_tip_data.xml', 'views/account.xml', 'views/report_invoice.xml', 'report/account_invoice_report_view.xml', 'report/inherited_layouts.xml', - 'views/account_journal_dashboard_view.xml', 'views/report_overdue.xml', - 'views/web_planner_data.xml', 'views/report_overdue.xml', 'wizard/account_report_common_view.xml', 'wizard/account_report_print_journal_view.xml', @@ -64,6 +61,9 @@ You could use this simplified accounting in case you work with an (external) acc 'views/report_agedpartnerbalance.xml', 'views/tax_adjustments.xml', 'wizard/wizard_tax_adjustments_view.xml', + 'views/res_config_view.xml', + 'views/web_planner_data.xml', + 'views/account_journal_dashboard_view.xml', ], 'demo': [ 'demo/account_demo.xml', diff --git a/addons/account/models/company.py b/addons/account/models/company.py index 0798a7ce8ab..6d49b37728e 100644 --- a/addons/account/models/company.py +++ b/addons/account/models/company.py @@ -23,8 +23,7 @@ class ResCompany(models.Model): tax_calculation_rounding_method = fields.Selection([ ('round_per_line', 'Round per Line'), ('round_globally', 'Round Globally'), - ], default='round_per_line', string='Tax Calculation Rounding Method', - help="If you select 'Round per Line' : for each tax, the tax amount will first be computed and rounded for each PO/SO/invoice line and then these rounded amounts will be summed, leading to the total amount for that tax. If you select 'Round Globally': for each tax, the tax amount will be computed for each PO/SO/invoice line, then these amounts will be summed and eventually this total tax amount will be rounded. If you sell with tax included, you should choose 'Round per line' because you certainly want the sum of your tax-included line subtotals to be equal to the total amount with taxes.") + ], default='round_per_line', string='Tax Calculation Rounding Method') currency_exchange_journal_id = fields.Many2one('account.journal', string="Exchange Gain or Loss Journal", domain=[('type', '=', 'general')]) income_currency_exchange_account_id = fields.Many2one('account.account', related='currency_exchange_journal_id.default_credit_account_id', string="Gain Exchange Rate Account", domain="[('internal_type', '=', 'other'), ('deprecated', '=', False), ('company_id', '=', id)]") diff --git a/addons/account/models/res_config.py b/addons/account/models/res_config.py index 8b1386a50dd..1d4b0cc6d95 100644 --- a/addons/account/models/res_config.py +++ b/addons/account/models/res_config.py @@ -1,13 +1,8 @@ # -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. -import time -import datetime -from dateutil.relativedelta import relativedelta - -import odoo -from odoo import SUPERUSER_ID -from odoo.tools import DEFAULT_SERVER_DATE_FORMAT as DF from odoo import api, fields, models, _ + from odoo.exceptions import UserError @@ -15,253 +10,93 @@ class AccountConfigSettings(models.TransientModel): _name = 'account.config.settings' _inherit = 'res.config.settings' - @api.one - @api.depends('company_id') - def _get_currency_id(self): - self.currency_id = self.company_id.currency_id - - @api.one - def _set_currency_id(self): - if self.currency_id != self.company_id.currency_id: - self.company_id.currency_id = self.currency_id - company_id = fields.Many2one('res.company', string='Company', required=True, default=lambda self: self.env.user.company_id) - has_default_company = fields.Boolean(readonly=True, - default=lambda self: self._default_has_default_company()) - expects_chart_of_accounts = fields.Boolean(related='company_id.expects_chart_of_accounts', - string='This company has its own chart of accounts', - help='Check this box if this company is a legal entity.') - currency_id = fields.Many2one('res.currency', compute='_get_currency_id', inverse='_set_currency_id', required=True, - string='Default company currency', help="Main currency of the company.") - company_footer = fields.Text(related='company_id.rml_footer', string='Bank accounts footer preview', - readonly=True, help="Bank accounts as printed in the footer of each printed document") - - has_chart_of_accounts = fields.Boolean(string='Company has a chart of accounts') + currency_id = fields.Many2one('res.currency', related="company_id.currency_id", required=True, + string='Currency', help="Main currency of the company.") + has_chart_of_accounts = fields.Boolean(compute='_compute_has_chart_of_accounts', string='Company has a chart of accounts') chart_template_id = fields.Many2one('account.chart.template', string='Template', domain="[('visible','=', True)]") - use_anglo_saxon = fields.Boolean(string='Use Anglo-Saxon Accounting *', related='company_id.anglo_saxon_accounting') code_digits = fields.Integer(string='# of Digits *', related='company_id.accounts_code_digits', help="No. of digits to use for account code") - tax_calculation_rounding_method = fields.Selection( - [ + tax_calculation_rounding_method = fields.Selection([ ('round_per_line', 'Round calculation of taxes per line'), ('round_globally', 'Round globally calculation of taxes '), - ], related='company_id.tax_calculation_rounding_method', string='Tax calculation rounding method *', - help="""If you select 'Round per line' : for each tax, the tax amount will first be - computed and rounded for each PO/SO/invoice line and then these rounded amounts will be summed, - leading to the total amount for that tax. If you select 'Round globally': for each tax, - the tax amount will be computed for each PO/SO/invoice line, then these amounts will be - summed and eventually this total tax amount will be rounded. If you sell with tax included, - you should choose 'Round per line' because you certainly want the sum of your tax-included line - subtotals to be equal to the total amount with taxes.""") - sale_tax_id = fields.Many2one('account.tax.template', string='Default sale tax', oldname="sale_tax") - purchase_tax_id = fields.Many2one('account.tax.template', string='Default purchase tax', oldname="purchase_tax") - sale_tax_rate = fields.Float(string='Sales tax (%)') - purchase_tax_rate = fields.Float(string='Purchase tax (%)') - bank_account_code_prefix = fields.Char(string='Bank Accounts Prefix *', related='company_id.bank_account_code_prefix', help='Define the code prefix for the bank accounts', oldname='bank_account_code_char') - cash_account_code_prefix = fields.Char(string='Cash Accounts Prefix *', related='company_id.cash_account_code_prefix', help='Define the code prefix for the cash accounts') - template_transfer_account_id = fields.Many2one('account.account.template', help="Intermediary account used when moving money from a liquidity account to another") - transfer_account_id = fields.Many2one('account.account', - related='company_id.transfer_account_id', - domain=lambda self: [('reconcile', '=', True), ('user_type_id.id', '=', self.env.ref('account.data_account_type_current_assets').id)], - help="Intermediary account used when moving money from a liquidity account to another") - complete_tax_set = fields.Boolean(string='Complete set of taxes', - help='''This boolean helps you to choose if you want to propose to the user to encode - the sales and purchase rates or use the usual m2o fields. This last choice assumes that - the set of tax defined for the chosen template is complete''') - - fiscalyear_last_day = fields.Integer(related='company_id.fiscalyear_last_day', default=31) - fiscalyear_last_month = fields.Selection([(1, 'January'), (2, 'February'), (3, 'March'), (4, 'April'), (5, 'May'), (6, 'June'), (7, 'July'), (8, 'August'), (9, 'September'), (10, 'October'), (11, 'November'), (12, 'December')], related='company_id.fiscalyear_last_month', default=12) - period_lock_date = fields.Date(string="Lock Date for Non-Advisers", related='company_id.period_lock_date', help="Only users with the 'Adviser' role can edit accounts prior to and inclusive of this date. Use it for period locking inside an open fiscal year, for example.") - fiscalyear_lock_date = fields.Date(string="Lock Date", related='company_id.fiscalyear_lock_date', help="No users, including Advisers, can edit accounts prior to and inclusive of this date. Use it for fiscal year locking for example.") - - module_account_accountant = fields.Boolean(string='Full accounting features: journals, legal statements, chart of accounts, etc.', - help="""If you do not check this box, you will be able to do invoicing & payments, - but not accounting (Journal Items, Chart of Accounts, ...)""") - module_account_reports = fields.Boolean("Get dynamic accounting reports") + ], related='company_id.tax_calculation_rounding_method', string='Tax calculation rounding method') + module_account_accountant = fields.Boolean(string='Accounting') group_multi_currency = fields.Boolean(string='Allow multi currencies', - implied_group='base.group_multi_currency', - help="Allows to work in a multi currency environment") - group_analytic_accounting = fields.Boolean(string='Analytic accounting', - implied_group='analytic.group_analytic_accounting', - help="Allows you to use the analytic accounting.") - group_warning_account = fields.Selection([ - (0, 'All the partners can be used in invoices'), - (1, 'An informative or blocking warning can be set on a partner') - ], "Warning", implied_group='account.group_warning_account') - currency_exchange_journal_id = fields.Many2one('account.journal', - related='company_id.currency_exchange_journal_id', - string="Rate Difference Journal",) - module_account_asset = fields.Boolean(string='Assets management', - help='Asset management: This allows you to manage the assets owned by a company or a person. ' - 'It keeps track of the depreciation occurred on those assets, and creates account move for those depreciation lines.\n\n' - '-This installs the module account_asset.') - module_account_deferred_revenue = fields.Boolean(string="Revenue Recognition", - help='This allows you to manage the revenue recognition on selling products. ' - 'It keeps track of the installments occurred on those revenue recognitions, ' - 'and creates account moves for those installment lines\n' - '-This installs the module account_deferred_revenue.') - module_account_budget = fields.Boolean(string='Budget management', - help='This allows accountants to manage analytic and crossovered budgets. ' - 'Once the master budgets and the budgets are defined, ' - 'the project managers can set the planned amount on each analytic account.\n' - '-This installs the module account_budget.') - + implied_group='base.group_multi_currency') + group_analytic_accounting = fields.Boolean(string='Analytic Accounting', + implied_group='analytic.group_analytic_accounting') + group_warning_account = fields.Boolean(string="Warnings", implied_group='account.group_warning_account') + module_account_asset = fields.Boolean(string='Assets Management') + module_account_deferred_revenue = fields.Boolean(string="Revenue Recognition") + module_account_budget = fields.Boolean(string='Budget Management') + module_account_reports = fields.Boolean("Dynamic Reports") group_proforma_invoices = fields.Boolean(string='Allow pro-forma invoices', implied_group='account.group_proforma_invoices', help="Allows you to put invoices in pro-forma state.") - module_account_reports_followup = fields.Boolean("Enable payment followup management", - help='This allows to automate letters for unpaid invoices, with multi-level recalls.\n' - '-This installs the module account_reports_followup.') + module_account_reports_followup = fields.Boolean("Enable payment followup management") tax_cash_basis_journal_id = fields.Many2one( 'account.journal', related='company_id.tax_cash_basis_journal_id', string="Tax Cash Basis Journal",) - - default_sale_tax_id = fields.Many2one('account.tax', string="Default Sale Tax", help="This sale tax will be assigned by default on new products.", oldname="default_sale_tax") - default_purchase_tax_id = fields.Many2one('account.tax', string="Default Purchase Tax", help="This purchase tax will be assigned by default on new products.", oldname="default_purchase_tax") - + default_sale_tax_id = fields.Many2one('account.tax', string="Default Sale Tax", + default_model="account.config.settings", company_dependent=True, oldname="default_sale_tax") + default_purchase_tax_id = fields.Many2one('account.tax', string="Default Purchase Tax", + default_model="account.config.settings", company_dependent=True, oldname="default_purchase_tax") module_l10n_us_check_printing = fields.Boolean("Allow check printing and deposits") - module_account_batch_deposit = fields.Boolean(string='Use batch deposit', help='This allows you to group received checks before you deposit them to the bank.\n' '-This installs the module account_batch_deposit.') - module_account_sepa = fields.Boolean(string='Use SEPA payments', - help='If you check this box, you will be able to register your payment using SEPA.\n' - '-This installs the module account_sepa.') + module_account_sepa = fields.Boolean(string='Use SEPA payments') + module_account_plaid = fields.Boolean(string="Plaid Connector") + module_account_yodlee = fields.Boolean("Bank Interface - Sync your bank feeds automatically") + module_account_bank_statement_import_qif = fields.Boolean("Import .qif files") + module_account_bank_statement_import_ofx = fields.Boolean("Import in .ofx format") + module_account_bank_statement_import_csv = fields.Boolean("Import in .csv format") + module_account_bank_statement_import_camt = fields.Boolean("Import in CAMT.053 format") + module_currency_rate_live = fields.Boolean(string="Allow Currency Rate Live") + module_print_docsaway = fields.Boolean(string="Docsaway") + module_product_margin = fields.Boolean(string="Allow Product Margin") + module_l10n_eu_service = fields.Boolean(string="EU Digital Goods VAT") - module_account_plaid = fields.Boolean(string="Plaid Connector", - help='Get your bank statements from you bank and import them through plaid.com.\n' - '-This installs the module account_plaid.') - module_account_yodlee = fields.Boolean("Bank Interface - Sync your bank feeds automatically", - help='Get your bank statements from your bank and import them through yodlee.com.\n' - '-This installs the module account_yodlee.') - module_account_bank_statement_import_qif = fields.Boolean("Import .qif files", - help='Get your bank statements from your bank and import them in Odoo in the .QIF format.\n' - '-This installs the module account_bank_statement_import_qif.') - module_account_bank_statement_import_ofx = fields.Boolean("Import in .ofx format", - help='Get your bank statements from your bank and import them in Odoo in the .OFX format.\n' - '-This installs the module account_bank_statement_import_ofx.') - module_account_bank_statement_import_csv = fields.Boolean("Import in .csv format", - help='Get your bank statements from your bank and import them in Odoo in the .CSV format.\n' - '-This installs the module account_bank_statement_import_csv.') - module_account_bank_statement_import_camt = fields.Boolean("Import in CAMT.053 format", - help='Get your bank statements from your bank and import them in Odoo in the CAMT format.\n' - '-This installs the module account_bank_statement_import_camt.') - overdue_msg = fields.Text(related='company_id.overdue_msg', string='Overdue Payments Message *') + @api.depends('company_id') + def _compute_has_chart_of_accounts(self): + # import pdb; pdb.set_trace() + self.has_chart_of_accounts = bool(self.company_id.chart_template_id) - - @api.model - def _default_has_default_company(self): - count = self.env['res.company'].search_count([]) - return bool(count == 1) - - - @api.onchange('company_id') - def onchange_company_id(self): - # update related fields - self.currency_id = False - if self.company_id: - company = self.company_id - self.chart_template_id = company.chart_template_id - self.has_chart_of_accounts = len(company.chart_template_id) > 0 or False - self.expects_chart_of_accounts = company.expects_chart_of_accounts - self.currency_id = company.currency_id - self.transfer_account_id = company.transfer_account_id - self.company_footer = company.rml_footer - self.tax_calculation_rounding_method = company.tax_calculation_rounding_method - self.bank_account_code_prefix = company.bank_account_code_prefix - self.cash_account_code_prefix = company.cash_account_code_prefix - self.code_digits = company.accounts_code_digits - - # update taxes - ir_values = self.env['ir.values'] - taxes_id = ir_values.get_default('product.template', 'taxes_id', company_id = self.company_id.id) - supplier_taxes_id = ir_values.get_default('product.template', 'supplier_taxes_id', company_id = self.company_id.id) - self.default_sale_tax_id = isinstance(taxes_id, list) and len(taxes_id) > 0 and taxes_id[0] or taxes_id - self.default_purchase_tax_id = isinstance(supplier_taxes_id, list) and len(supplier_taxes_id) > 0 and supplier_taxes_id[0] or supplier_taxes_id - return {} - - @api.onchange('chart_template_id') - def onchange_chart_template_id(self): - tax_templ_obj = self.env['account.tax.template'] - self.complete_tax_set = self.sale_tax_id = self.purchase_tax_id = False - self.sale_tax_rate = self.purchase_tax_rate = 15 - if self.chart_template_id and not self.has_chart_of_accounts: - # update complete_tax_set, sale_tax_id and purchase_tax_id - self.complete_tax_set = self.chart_template_id.complete_tax_set - if self.chart_template_id.complete_tax_set: - ir_values_obj = self.env['ir.values'] - # default tax is given by the lowest sequence. For same sequence we will take the latest created as it will be the case for tax created while isntalling the generic chart of account - sale_tax = tax_templ_obj.search( - [('chart_template_id', 'parent_of', self.chart_template_id.id), ('type_tax_use', '=', 'sale')], limit=1, - order="sequence, id desc") - purchase_tax = tax_templ_obj.search( - [('chart_template_id', 'parent_of', self.chart_template_id.id), ('type_tax_use', '=', 'purchase')], limit=1, - order="sequence, id desc") - self.sale_tax_id = sale_tax - self.purchase_tax_id = purchase_tax - if self.chart_template_id.code_digits: - self.code_digits = self.chart_template_id.code_digits - if self.chart_template_id.transfer_account_id: - self.template_transfer_account_id = self.chart_template_id.transfer_account_id.id - if self.chart_template_id.bank_account_code_prefix: - self.bank_account_code_prefix = self.chart_template_id.bank_account_code_prefix - if self.chart_template_id.cash_account_code_prefix: - self.cash_account_code_prefix = self.chart_template_id.cash_account_code_prefix - return {} - - @api.onchange('sale_tax_rate') - def onchange_tax_rate(self): - self.purchase_tax_rate = self.sale_tax_rate or False - - @api.multi def set_group_multi_currency(self): - ir_model = self.env['ir.model.data'] - group_user = ir_model.get_object('base', 'group_user') - group_product = ir_model.get_object('product', 'group_sale_pricelist') if self.group_multi_currency: - group_user.write({'implied_ids': [(4, group_product.id)]}) + self.env.ref('base.group_user').write({'implied_ids': [(4, self.env.ref('product.group_sale_pricelist').id)]}) return True - @api.multi - def open_bank_accounts(self): - action_rec = self.env['ir.model.data'].xmlid_to_object('account.action_account_bank_journal_form') - return action_rec.read([])[0] - - @api.multi - def set_transfer_account(self): - if self.transfer_account_id and self.transfer_account_id != self.company_id.transfer_account_id: - self.company_id.write({'transfer_account_id': self.transfer_account_id.id}) - - @api.multi - def set_product_taxes(self): + def set_default_product_taxes(self): """ Set the product taxes if they have changed """ + # import pdb; pdb.set_trace() ir_values_obj = self.env['ir.values'] if self.default_sale_tax_id: ir_values_obj.sudo().set_default('product.template', "taxes_id", [self.default_sale_tax_id.id], for_all_users=True, company_id=self.company_id.id) if self.default_purchase_tax_id: ir_values_obj.sudo().set_default('product.template', "supplier_taxes_id", [self.default_purchase_tax_id.id], for_all_users=True, company_id=self.company_id.id) - @api.multi def set_chart_of_accounts(self): """ install a chart of accounts for the given company (if required) """ - if self.chart_template_id and not self.has_chart_of_accounts and self.expects_chart_of_accounts: + if self.chart_template_id and not self.has_chart_of_accounts and self.company_id.expects_chart_of_accounts: if self.company_id.chart_template_id and self.chart_template_id != self.company_id.chart_template_id: raise UserError(_('You can not change a company chart of account once it has been installed')) wizard = self.env['wizard.multi.charts.accounts'].create({ 'company_id': self.company_id.id, 'chart_template_id': self.chart_template_id.id, - 'transfer_account_id': self.template_transfer_account_id.id, + 'transfer_account_id': self.chart_template_id.transfer_account_id.id, 'code_digits': self.code_digits or 6, - 'sale_tax_id': self.sale_tax_id.id, - 'purchase_tax_id': self.purchase_tax_id.id, - 'sale_tax_rate': self.sale_tax_rate, - 'purchase_tax_rate': self.purchase_tax_rate, - 'complete_tax_set': self.complete_tax_set, + 'sale_tax_id': self.default_sale_tax_id.id, + 'purchase_tax_id': self.default_purchase_tax_id.id, + 'sale_tax_rate': 15.0, + 'purchase_tax_rate': 15.0, + 'complete_tax_set': self.chart_template_id.complete_tax_set, 'currency_id': self.currency_id.id, - 'bank_account_code_prefix': self.bank_account_code_prefix or self.chart_template_id.bank_account_code_prefix, - 'cash_account_code_prefix': self.cash_account_code_prefix or self.chart_template_id.cash_account_code_prefix, + 'bank_account_code_prefix': self.chart_template_id.bank_account_code_prefix, + 'cash_account_code_prefix': self.chart_template_id.cash_account_code_prefix, }) wizard.execute() @@ -275,14 +110,7 @@ class AccountConfigSettings(models.TransientModel): if self.module_account_budget: self.group_analytic_accounting = True - @api.multi - def open_company(self): - return { - 'type': 'ir.actions.act_window', - 'name': 'My Company', - 'view_type': 'form', - 'view_mode': 'form', - 'res_model': 'res.company', - 'res_id': self.env.user.company_id.id, - 'target': 'current', - } + @api.onchange('module_account_yodlee') + def onchange_account_yodlee(self): + if self.module_account_yodlee: + self.module_account_plaid = True diff --git a/addons/account/views/account_view.xml b/addons/account/views/account_view.xml index 5deddb1c520..60fa7e82121 100644 --- a/addons/account/views/account_view.xml +++ b/addons/account/views/account_view.xml @@ -1924,6 +1924,7 @@ + diff --git a/addons/account/views/res_config_view.xml b/addons/account/views/res_config_view.xml index 0875ea0f224..06b971b087a 100644 --- a/addons/account/views/res_config_view.xml +++ b/addons/account/views/res_config_view.xml @@ -9,270 +9,374 @@ - - account settings + + account.config.settings.form account.config.settings
-
- - - - -