63 lines
2.7 KiB
Python
63 lines
2.7 KiB
Python
# Copyright 2015-2020 Akretion (http://www.akretion.com)
|
|
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
from odoo import api, fields, models, _
|
|
from odoo.tools import float_compare, float_is_zero
|
|
from odoo.tools.misc import formatLang
|
|
from odoo.exceptions import UserError, ValidationError
|
|
from odoo.osv import expression
|
|
|
|
|
|
class AccountAccount(models.Model):
|
|
_inherit = 'account.account'
|
|
|
|
@api.depends('name', 'code')
|
|
def name_get(self):
|
|
if self._context.get('account_account_show_code_only'):
|
|
res = []
|
|
for record in self:
|
|
res.append((record.id, record.code))
|
|
return res
|
|
else:
|
|
return super().name_get()
|
|
|
|
# https://github.com/odoo/odoo/issues/23040
|
|
# TODO mig to v14 ?
|
|
def fix_bank_account_types(self):
|
|
aao = self.env['account.account']
|
|
companies = self.env['res.company'].search([])
|
|
if len(companies) > 1 and self.env.user.id != SUPERUSER_ID:
|
|
raise UserError(
|
|
"In multi-company setups, you should run this "
|
|
"script as admin user")
|
|
logger.info("START the script 'fix bank and cash account types'")
|
|
bank_type = self.env.ref('account.data_account_type_liquidity')
|
|
asset_type = self.env.ref('account.data_account_type_current_assets')
|
|
journals = self.env['account.journal'].search(
|
|
[('type', 'in', ('bank', 'cash'))], order='company_id')
|
|
journal_accounts_bank_type = aao
|
|
for journal in journals:
|
|
for account in [
|
|
journal.default_credit_account_id,
|
|
journal.default_debit_account_id]:
|
|
if account:
|
|
if account.user_type_id != bank_type:
|
|
account.user_type_id = bank_type.id
|
|
logger.info(
|
|
'Company %s: Account %s updated to Bank '
|
|
'and Cash type',
|
|
account.company_id.display_name, account.code)
|
|
if account not in journal_accounts_bank_type:
|
|
journal_accounts_bank_type += account
|
|
accounts = aao.search([
|
|
('user_type_id', '=', bank_type.id)], order='company_id, code')
|
|
for account in accounts:
|
|
if account not in journal_accounts_bank_type:
|
|
account.user_type_id = asset_type.id
|
|
logger.info(
|
|
'Company %s: Account %s updated to Current Asset type',
|
|
account.company_id.display_name, account.code)
|
|
logger.info("END of the script 'fix bank and cash account types'")
|
|
return True
|