[IMP] account_financial_report: Add tax grouping in general ledger

TT38721
pull/915/head
Víctor Martínez 2022-09-17 19:46:31 +02:00
parent ec5358ade6
commit 551042cb1f
5 changed files with 119 additions and 14 deletions

View File

@ -6,6 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-09-20 07:00+0000\n"
"PO-Revision-Date: 2022-09-20 07:00+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@ -927,6 +929,11 @@ msgstr ""
msgid "Group entries by"
msgstr ""
#. module: account_financial_report
#: model:ir.model.fields,field_description:account_financial_report.field_general_ledger_report_wizard__grouped_by
msgid "Grouped by"
msgstr ""
#. module: account_financial_report
#: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
#: code:addons/account_financial_report/report/open_items_xlsx.py:0
@ -1203,6 +1210,11 @@ msgstr ""
msgid "No limit"
msgstr ""
#. module: account_financial_report
#: model:ir.model.fields.selection,name:account_financial_report.selection__general_ledger_report_wizard__grouped_by__none
msgid "None"
msgstr ""
#. module: account_financial_report
#: code:addons/account_financial_report/wizard/journal_ledger_wizard.py:0
#, python-format
@ -1330,6 +1342,11 @@ msgstr ""
msgid "Partner ending balance"
msgstr ""
#. module: account_financial_report
#: model:ir.model.fields.selection,name:account_financial_report.selection__general_ledger_report_wizard__grouped_by__partners
msgid "Partners"
msgstr ""
#. module: account_financial_report
#: model:ir.model.fields,field_description:account_financial_report.field_aged_partner_balance_report_wizard__payable_accounts_only
#: model:ir.model.fields,field_description:account_financial_report.field_general_ledger_report_wizard__payable_accounts_only
@ -1459,7 +1476,6 @@ msgid "Show Move Line Details"
msgstr ""
#. module: account_financial_report
#: model:ir.model.fields,field_description:account_financial_report.field_general_ledger_report_wizard__show_partner_details
#: model:ir.model.fields,field_description:account_financial_report.field_open_items_report_wizard__show_partner_details
#: model:ir.model.fields,field_description:account_financial_report.field_trial_balance_report_wizard__show_partner_details
msgid "Show Partner Details"
@ -1575,6 +1591,12 @@ msgstr ""
msgid "Tax Groups"
msgstr ""
#. module: account_financial_report
#: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
#, python-format
msgid "Tax Initial balance"
msgstr ""
#. module: account_financial_report
#: code:addons/account_financial_report/report/vat_report_xlsx.py:0
#: model:ir.model.fields.selection,name:account_financial_report.selection__vat_report_wizard__based_on__taxtags
@ -1582,9 +1604,16 @@ msgstr ""
msgid "Tax Tags"
msgstr ""
#. module: account_financial_report
#: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
#, python-format
msgid "Tax ending balance"
msgstr ""
#. module: account_financial_report
#: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
#: code:addons/account_financial_report/report/journal_ledger_xlsx.py:0
#: model:ir.model.fields.selection,name:account_financial_report.selection__general_ledger_report_wizard__grouped_by__taxes
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_general_ledger_lines
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_journal_ledger_journal_table_header
#, python-format

View File

@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-09-01 13:35+0000\n"
"PO-Revision-Date: 2022-09-01 15:36+0200\n"
"POT-Creation-Date: 2022-09-20 07:00+0000\n"
"PO-Revision-Date: 2022-09-20 09:01+0200\n"
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>\n"
"Language-Team: \n"
"Language: es\n"
@ -956,6 +956,11 @@ msgstr ""
msgid "Group entries by"
msgstr "Agrupar por"
#. module: account_financial_report
#: model:ir.model.fields,field_description:account_financial_report.field_general_ledger_report_wizard__grouped_by
msgid "Grouped by"
msgstr "Agrupado por"
#. module: account_financial_report
#: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
#: code:addons/account_financial_report/report/open_items_xlsx.py:0
@ -1233,6 +1238,11 @@ msgstr "Sin jerarquía"
msgid "No limit"
msgstr "Sin límite"
#. module: account_financial_report
#: model:ir.model.fields.selection,name:account_financial_report.selection__general_ledger_report_wizard__grouped_by__none
msgid "None"
msgstr "Ninguna"
#. module: account_financial_report
#: code:addons/account_financial_report/wizard/journal_ledger_wizard.py:0
#, python-format
@ -1360,6 +1370,11 @@ msgstr "Saldo acumulado de empresa"
msgid "Partner ending balance"
msgstr "Saldo final de empresa"
#. module: account_financial_report
#: model:ir.model.fields.selection,name:account_financial_report.selection__general_ledger_report_wizard__grouped_by__partners
msgid "Partners"
msgstr "Contactos"
#. module: account_financial_report
#: model:ir.model.fields,field_description:account_financial_report.field_aged_partner_balance_report_wizard__payable_accounts_only
#: model:ir.model.fields,field_description:account_financial_report.field_general_ledger_report_wizard__payable_accounts_only
@ -1491,7 +1506,6 @@ msgid "Show Move Line Details"
msgstr "Mostrar Detalles Apuntes"
#. module: account_financial_report
#: model:ir.model.fields,field_description:account_financial_report.field_general_ledger_report_wizard__show_partner_details
#: model:ir.model.fields,field_description:account_financial_report.field_open_items_report_wizard__show_partner_details
#: model:ir.model.fields,field_description:account_financial_report.field_trial_balance_report_wizard__show_partner_details
msgid "Show Partner Details"
@ -1607,6 +1621,12 @@ msgstr "Debe"
msgid "Tax Groups"
msgstr "Grupo de impuestos"
#. module: account_financial_report
#: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
#, python-format
msgid "Tax Initial balance"
msgstr "Saldo inicial de impuesto"
#. module: account_financial_report
#: code:addons/account_financial_report/report/vat_report_xlsx.py:0
#: model:ir.model.fields.selection,name:account_financial_report.selection__vat_report_wizard__based_on__taxtags
@ -1614,9 +1634,16 @@ msgstr "Grupo de impuestos"
msgid "Tax Tags"
msgstr "Etiquetas de impuestos"
#. module: account_financial_report
#: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
#, python-format
msgid "Tax ending balance"
msgstr "Saldo final de impuesto"
#. module: account_financial_report
#: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
#: code:addons/account_financial_report/report/journal_ledger_xlsx.py:0
#: model:ir.model.fields.selection,name:account_financial_report.selection__general_ledger_report_wizard__grouped_by__taxes
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_general_ledger_lines
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_journal_ledger_journal_table_header
#, python-format

View File

@ -50,16 +50,19 @@ class GeneralLedgerReport(models.AbstractModel):
)
return taxes_data
def _get_acc_prt_accounts_ids(self, company_id):
def _get_account_internal_types(self, grouped_by):
return ["receivable", "payable"] if grouped_by != "taxes" else ["other"]
def _get_acc_prt_accounts_ids(self, company_id, grouped_by):
accounts_domain = [
("company_id", "=", company_id),
("internal_type", "in", ["receivable", "payable"]),
("internal_type", "in", self._get_account_internal_types(grouped_by)),
]
acc_prt_accounts = self.env["account.account"].search(accounts_domain)
return acc_prt_accounts.ids
def _get_initial_balances_bs_ml_domain(
self, account_ids, company_id, date_from, base_domain, acc_prt=False
self, account_ids, company_id, date_from, base_domain, grouped_by, acc_prt=False
):
accounts_domain = [
("company_id", "=", company_id),
@ -73,7 +76,8 @@ class GeneralLedgerReport(models.AbstractModel):
accounts = self.env["account.account"].search(accounts_domain)
domain += [("account_id", "in", accounts.ids)]
if acc_prt:
domain += [("account_id.internal_type", "in", ["receivable", "payable"])]
internal_types = self._get_account_internal_types(grouped_by)
domain += [("account_id.internal_type", "in", internal_types)]
return domain
def _get_initial_balances_pl_ml_domain(
@ -147,10 +151,10 @@ class GeneralLedgerReport(models.AbstractModel):
return pl_initial_balance
def _get_gl_initial_acc(
self, account_ids, company_id, date_from, fy_start_date, base_domain
self, account_ids, company_id, date_from, fy_start_date, base_domain, grouped_by
):
initial_domain_bs = self._get_initial_balances_bs_ml_domain(
account_ids, company_id, date_from, base_domain
account_ids, company_id, date_from, base_domain, grouped_by
)
initial_domain_pl = self._get_initial_balances_pl_ml_domain(
account_ids, company_id, date_from, fy_start_date, base_domain
@ -209,6 +213,36 @@ class GeneralLedgerReport(models.AbstractModel):
data[acc_id][grouped_by] = True
return data
def _prepare_gen_ld_data_group_taxes(self, data, domain, grouped_by):
gl_initial_acc_prt = self.env["account.move.line"].read_group(
domain=domain,
fields=[
"account_id",
"debit",
"credit",
"balance",
"amount_currency",
"tax_line_id",
],
groupby=["account_id"],
lazy=False,
)
if gl_initial_acc_prt:
for gl in gl_initial_acc_prt:
if "tax_line_id" in gl and gl["tax_line_id"]:
tax_id = gl["tax_line_id"][0]
tax_name = gl["tax_line_id"][1]
tax_name = tax_name._value
else:
tax_id = 0
tax_name = "Missing Tax"
acc_id = gl["account_id"][0]
data[acc_id][tax_id] = self._prepare_gen_ld_data_item(gl)
data[acc_id][tax_id]["id"] = tax_id
data[acc_id][tax_id]["name"] = tax_name
data[acc_id][grouped_by] = True
return data
def _get_initial_balance_data(
self,
account_ids,
@ -244,10 +278,10 @@ class GeneralLedgerReport(models.AbstractModel):
if extra_domain:
base_domain += extra_domain
gl_initial_acc = self._get_gl_initial_acc(
account_ids, company_id, date_from, fy_start_date, base_domain
account_ids, company_id, date_from, fy_start_date, base_domain, grouped_by
)
domain = self._get_initial_balances_bs_ml_domain(
account_ids, company_id, date_from, base_domain, acc_prt=True
account_ids, company_id, date_from, base_domain, grouped_by, acc_prt=True
)
data = self._prepare_gen_ld_data(gl_initial_acc, domain, grouped_by)
accounts_ids = list(data.keys())
@ -391,6 +425,17 @@ class GeneralLedgerReport(models.AbstractModel):
else "Missing Partner"
)
res.append({"id": item_id, "name": item_name})
elif grouped_by == "taxes":
if move_line["tax_line_id"]:
item_id = move_line["tax_line_id"][0]
item_name = move_line["tax_line_id"][1]
res.append({"id": item_id, "name": item_name})
elif move_line["tax_ids"]:
for tax_id in move_line["tax_ids"]:
tax_item = self.env["account.tax"].browse(tax_id)
res.append({"id": tax_item.id, "name": tax_item.name})
else:
res.append({"id": 0, "name": "Missing Tax"})
return res
def _get_period_ml_data(
@ -449,7 +494,7 @@ class GeneralLedgerReport(models.AbstractModel):
taxes_ids = set()
tags_ids = set()
full_reconcile_data = {}
acc_prt_account_ids = self._get_acc_prt_accounts_ids(company_id)
acc_prt_account_ids = self._get_acc_prt_accounts_ids(company_id, grouped_by)
for move_line in move_lines:
journal_ids.add(move_line["journal_id"][0])
for tax_id in move_line["tax_ids"]:

View File

@ -326,6 +326,8 @@ class GeneralLedgerXslx(models.AbstractModel):
if "account" not in my_object["type"] and "grouped_by" in my_object:
if my_object["grouped_by"] == "partners":
label = _("Partner Initial balance")
elif my_object["grouped_by"] == "taxes":
label = _("Tax Initial balance")
label = label if label else _("Initial balance")
super().write_initial_balance_from_dict(my_object, label)
@ -338,5 +340,7 @@ class GeneralLedgerXslx(models.AbstractModel):
name = my_object["name"]
if my_object["grouped_by"] == "partners":
label = _("Partner ending balance")
elif my_object["grouped_by"] == "taxes":
label = _("Tax ending balance")
label = label if label else _("Ending balance")
super().write_ending_balance_from_dict(my_object, name, label)

View File

@ -81,7 +81,7 @@ class GeneralLedgerReportWizard(models.TransientModel):
help="Ending account in a range",
)
grouped_by = fields.Selection(
selection=[("none", "None"), ("partners", "Partners")],
selection=[("none", "None"), ("partners", "Partners"), ("taxes", "Taxes")],
default="partners",
string="Grouped by",
)