odoo_utility_scripts/fix_company_journals.py

57 lines
2.1 KiB
Python

import sys
def fix_company_journals(env):
company_name = 'Kedai Kipas 58 Tenggilis'
company = env['res.company'].search([('name', 'ilike', company_name)], limit=1)
if not company:
print(f"Company {company_name} not found.")
return
print(f"Fixing journals for company: {company.name} (ID: {company.id})")
# We look for the equivalent journals in Tenggilis
# 1. Cash Basis Taxes (Usually code CABA or name 'Cash Basis Taxes')
cash_basis_journal = env['account.journal'].search([
('company_id', '=', company.id),
('code', '=', 'CABA') # Assuming code is CABA. If not, try by name.
], limit=1)
if not cash_basis_journal:
cash_basis_journal = env['account.journal'].search([
('company_id', '=', company.id),
('name', 'ilike', 'Cash Basis')
], limit=1)
vals = {}
if cash_basis_journal:
print(f"Setting Cash Basis Journal to: {cash_basis_journal.name} (ID: {cash_basis_journal.id})")
vals['tax_cash_basis_journal_id'] = cash_basis_journal.id
else:
print("Could not find a Cash Basis journal for Tenggilis to set. You may need to clear it or create one.")
vals['tax_cash_basis_journal_id'] = False # Temporary clear if not found to allow saving
# 2. account_tax_periodicity_journal_id
tax_journal = env['account.journal'].search([
('company_id', '=', company.id),
('name', 'ilike', 'Kas Kecil Operasional Tenggilis')
], limit=1)
if tax_journal:
print(f"Setting Tax Periodicity Journal to: {tax_journal.name} (ID: {tax_journal.id})")
vals['account_tax_periodicity_journal_id'] = tax_journal.id
else:
print("Could not find matching Tax Periodicity journal for Tenggilis. Clearing it to allow saving.")
vals['account_tax_periodicity_journal_id'] = False
company.write(vals)
print(f"Fixed {len(vals)} company settings.")
env.cr.commit()
print("Done!")
if __name__ == '__main__':
try:
fix_company_journals(env)
except NameError:
print("Run via odoo shell")