Odoo18-Base/addons/l10n_ec_stock/models/account_chart_template.py
2025-01-06 10:57:38 +07:00

39 lines
2.2 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
class AccountChartTemplate(models.AbstractModel):
_inherit = 'account.chart.template'
def _load(self, template_code, company, install_demo):
# EXTENDS account to set up default accounts on stock locations
res = super()._load(template_code, company, install_demo)
if template_code == 'ec':
self._l10n_ec_setup_location_accounts(company)
return res
def _l10n_ec_setup_location_accounts(self, companies):
parent_location = self.env.ref('stock.stock_location_locations_virtual', raise_if_not_found=False)
loss_locs = dict(self.env['stock.location']._read_group(domain=[('location_id', '=', parent_location.id), ('usage', '=', 'inventory'), ('scrap_location', '=', False)], groupby=['company_id', 'id'])) if parent_location else {}
prod_locs = dict(self.env['stock.location']._read_group(domain=[('location_id', '=', parent_location.id), ('usage', '=', 'production'), ('scrap_location', '=', False)], groupby=['company_id', 'id'])) if parent_location else {}
for company in companies:
# get template data
Template = self.env['account.chart.template'].with_company(company)
template_code = company.chart_template
full_data = Template._get_chart_template_data(template_code)
template_data = full_data.pop('template_data')
ref = template_data.get('loss_stock_valuation_account')
if (loss_loc := loss_locs.get(company)) and (loss_loc_account := ref and Template.ref(ref, raise_if_not_found=False)):
loss_loc.write({
'valuation_in_account_id': loss_loc_account.id,
'valuation_out_account_id': loss_loc_account.id,
})
ref = template_data.get('production_stock_valuation_account')
if (prod_loc := prod_locs.get(company)) and (prod_loc_account := ref and Template.ref(ref, raise_if_not_found=False)):
prod_loc.write({
'valuation_in_account_id': prod_loc_account.id,
'valuation_out_account_id': prod_loc_account.id,
})