first commit
This commit is contained in:
commit
0f97f285de
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
*.pyc
|
||||||
|
*.pyo
|
||||||
|
__pycache__/
|
||||||
11
README.md
Normal file
11
README.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
Account General Ledger Company Column
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
This module adds a "Company" column to the General Ledger report in Odoo 19, allowing users to identify which company a transaction line belongs to when running reports in a multi-company environment.
|
||||||
|
|
||||||
|
Features
|
||||||
|
--------
|
||||||
|
|
||||||
|
- Adds a "Company" column to the General Ledger report.
|
||||||
|
- Retrieves company names in a single batch query for optimal performance.
|
||||||
|
- Supports multi-company contexts without altering base Odoo SQL views.
|
||||||
2
__init__.py
Normal file
2
__init__.py
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from . import models
|
||||||
15
__manifest__.py
Normal file
15
__manifest__.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
{
|
||||||
|
'name': 'Account General Ledger Company Column',
|
||||||
|
'version': '1.0',
|
||||||
|
'summary': 'Adds Company column to the General Ledger report',
|
||||||
|
'category': 'Accounting/Reporting',
|
||||||
|
'author': 'Suherdy Yacob',
|
||||||
|
'depends': ['account_reports'],
|
||||||
|
'data': [
|
||||||
|
'views/account_report_views.xml',
|
||||||
|
],
|
||||||
|
'installable': True,
|
||||||
|
'auto_install': False,
|
||||||
|
'license': 'LGPL-3',
|
||||||
|
}
|
||||||
2
models/__init__.py
Normal file
2
models/__init__.py
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from . import account_general_ledger
|
||||||
51
models/account_general_ledger.py
Normal file
51
models/account_general_ledger.py
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import json
|
||||||
|
from odoo import models
|
||||||
|
|
||||||
|
class AccountGeneralLedgerReportHandler(models.AbstractModel):
|
||||||
|
_inherit = 'account.general.ledger.report.handler'
|
||||||
|
|
||||||
|
def _report_custom_engine_general_ledger(self, expressions, options, date_scope, current_groupby, next_groupby, offset=0, limit=None, warnings=None):
|
||||||
|
# 1. Fetch default general ledger rows
|
||||||
|
res = super()._report_custom_engine_general_ledger(
|
||||||
|
expressions, options, date_scope, current_groupby, next_groupby,
|
||||||
|
offset=offset, limit=limit, warnings=warnings
|
||||||
|
)
|
||||||
|
|
||||||
|
# 2. Inject company name for transaction rows
|
||||||
|
if isinstance(res, list):
|
||||||
|
if current_groupby == 'id_with_accumulated_balance':
|
||||||
|
aml_ids = []
|
||||||
|
aml_entries = []
|
||||||
|
for aml_key, entry in res:
|
||||||
|
entry['company_name'] = ''
|
||||||
|
# Exclude the "Initial Balance" summary lines
|
||||||
|
if aml_key and not aml_key.startswith('balance_line_'):
|
||||||
|
try:
|
||||||
|
key_list = json.loads(aml_key)
|
||||||
|
if len(key_list) > 1:
|
||||||
|
aml_ids.append(key_list[1])
|
||||||
|
aml_entries.append((key_list[1], entry))
|
||||||
|
except (json.JSONDecodeError, TypeError, ValueError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Fetch company names in one fast batch query
|
||||||
|
if aml_ids:
|
||||||
|
self.env.cr.execute("""
|
||||||
|
SELECT aml.id, c.name
|
||||||
|
FROM account_move_line aml
|
||||||
|
JOIN res_company c ON c.id = aml.company_id
|
||||||
|
WHERE aml.id IN %s
|
||||||
|
""", [tuple(aml_ids)])
|
||||||
|
company_map = dict(self.env.cr.fetchall())
|
||||||
|
|
||||||
|
for aml_id, entry in aml_entries:
|
||||||
|
entry['company_name'] = company_map.get(aml_id, '')
|
||||||
|
else:
|
||||||
|
# For non-transaction rows (like summary accounts), keep it blank
|
||||||
|
for aml_key, entry in res:
|
||||||
|
entry['company_name'] = ''
|
||||||
|
elif isinstance(res, dict):
|
||||||
|
res['company_name'] = ''
|
||||||
|
|
||||||
|
return res
|
||||||
40
views/account_report_views.xml
Normal file
40
views/account_report_views.xml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<data>
|
||||||
|
<!-- Re-order existing columns and insert Company column after Partner -->
|
||||||
|
<record id="account_reports.general_ledger_report_date" model="account.report.column">
|
||||||
|
<field name="sequence">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="account_reports.general_ledger_report_partner_name" model="account.report.column">
|
||||||
|
<field name="sequence">2</field>
|
||||||
|
</record>
|
||||||
|
<record id="general_ledger_report_company" model="account.report.column">
|
||||||
|
<field name="name">Company</field>
|
||||||
|
<field name="expression_label">company_name</field>
|
||||||
|
<field name="figure_type">string</field>
|
||||||
|
<field name="sequence">3</field>
|
||||||
|
<field name="report_id" ref="account_reports.general_ledger_report"/>
|
||||||
|
</record>
|
||||||
|
<record id="account_reports.general_ledger_report_amount_currency" model="account.report.column">
|
||||||
|
<field name="sequence">4</field>
|
||||||
|
</record>
|
||||||
|
<record id="account_reports.general_ledger_report_debit" model="account.report.column">
|
||||||
|
<field name="sequence">5</field>
|
||||||
|
</record>
|
||||||
|
<record id="account_reports.general_ledger_report_credit" model="account.report.column">
|
||||||
|
<field name="sequence">6</field>
|
||||||
|
</record>
|
||||||
|
<record id="account_reports.general_ledger_report_balance" model="account.report.column">
|
||||||
|
<field name="sequence">7</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Bind the expression to the Custom Engine handler on the GL Line -->
|
||||||
|
<record id="general_ledger_line_company_name" model="account.report.expression">
|
||||||
|
<field name="label">company_name</field>
|
||||||
|
<field name="engine">custom</field>
|
||||||
|
<field name="formula">_report_custom_engine_general_ledger</field>
|
||||||
|
<field name="subformula">company_name</field>
|
||||||
|
<field name="report_line_id" ref="account_reports.general_ledger_custom_engine_line"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
</odoo>
|
||||||
Loading…
Reference in New Issue
Block a user