Add cost center filter on OCA General Ledger Report
parent
b8a52a5b06
commit
0cc3b9a0bb
|
@ -32,6 +32,9 @@ class GeneralLedgerReport(models.TransientModel):
|
|||
company_id = fields.Many2one(comodel_name='res.company')
|
||||
filter_account_ids = fields.Many2many(comodel_name='account.account')
|
||||
filter_partner_ids = fields.Many2many(comodel_name='res.partner')
|
||||
filter_cost_center_ids = fields.Many2many(
|
||||
comodel_name='account.analytic.account'
|
||||
)
|
||||
centralize = fields.Boolean()
|
||||
|
||||
# Flag fields, used for report display
|
||||
|
@ -236,6 +239,14 @@ class GeneralLedgerReportCompute(models.TransientModel):
|
|||
INNER JOIN
|
||||
account_move m ON ml.move_id = m.id AND m.state = 'posted'
|
||||
"""
|
||||
if self.filter_cost_center_ids:
|
||||
subquery_sum_amounts += """
|
||||
INNER JOIN
|
||||
account_analytic_account aa
|
||||
ON
|
||||
ml.analytic_account_id = aa.id
|
||||
AND aa.id IN %s
|
||||
"""
|
||||
subquery_sum_amounts += """
|
||||
GROUP BY
|
||||
a.id
|
||||
|
@ -254,13 +265,24 @@ WITH
|
|||
FROM
|
||||
account_account a
|
||||
"""
|
||||
if self.filter_partner_ids:
|
||||
if self.filter_partner_ids or self.filter_cost_center_ids:
|
||||
query_inject_account += """
|
||||
INNER JOIN
|
||||
account_move_line ml ON a.id = ml.account_id
|
||||
"""
|
||||
if self.filter_partner_ids:
|
||||
query_inject_account += """
|
||||
INNER JOIN
|
||||
res_partner p ON ml.partner_id = p.id
|
||||
"""
|
||||
if self.filter_cost_center_ids:
|
||||
query_inject_account += """
|
||||
INNER JOIN
|
||||
account_analytic_account aa
|
||||
ON
|
||||
ml.analytic_account_id = aa.id
|
||||
AND aa.id IN %s
|
||||
"""
|
||||
query_inject_account += """
|
||||
WHERE
|
||||
a.company_id = %s
|
||||
|
@ -274,6 +296,9 @@ WITH
|
|||
query_inject_account += """
|
||||
AND
|
||||
p.id IN %s
|
||||
"""
|
||||
if self.filter_partner_ids or self.filter_cost_center_ids:
|
||||
query_inject_account += """
|
||||
GROUP BY
|
||||
a.id
|
||||
"""
|
||||
|
@ -333,7 +358,12 @@ WHERE
|
|||
AND
|
||||
f.balance IS NOT NULL AND f.balance != 0
|
||||
"""
|
||||
query_inject_account_params = (
|
||||
query_inject_account_params = ()
|
||||
if self.filter_cost_center_ids:
|
||||
query_inject_account_params += (
|
||||
tuple(self.filter_cost_center_ids.ids),
|
||||
)
|
||||
query_inject_account_params += (
|
||||
self.company_id.id,
|
||||
)
|
||||
if self.filter_account_ids:
|
||||
|
@ -347,8 +377,20 @@ AND
|
|||
query_inject_account_params += (
|
||||
self.date_from,
|
||||
self.fy_start_date,
|
||||
)
|
||||
if self.filter_cost_center_ids:
|
||||
query_inject_account_params += (
|
||||
tuple(self.filter_cost_center_ids.ids),
|
||||
)
|
||||
query_inject_account_params += (
|
||||
self.date_to,
|
||||
self.fy_start_date,
|
||||
)
|
||||
if self.filter_cost_center_ids:
|
||||
query_inject_account_params += (
|
||||
tuple(self.filter_cost_center_ids.ids),
|
||||
)
|
||||
query_inject_account_params += (
|
||||
self.id,
|
||||
self.env.uid,
|
||||
)
|
||||
|
@ -386,6 +428,14 @@ AND
|
|||
INNER JOIN
|
||||
account_move m ON ml.move_id = m.id AND m.state = 'posted'
|
||||
"""
|
||||
if self.filter_cost_center_ids:
|
||||
subquery_sum_amounts += """
|
||||
INNER JOIN
|
||||
account_analytic_account aa
|
||||
ON
|
||||
ml.analytic_account_id = aa.id
|
||||
AND aa.id IN %s
|
||||
"""
|
||||
subquery_sum_amounts += """
|
||||
GROUP BY
|
||||
ap.account_id, ap.partner_id
|
||||
|
@ -419,6 +469,16 @@ WITH
|
|||
account_move_line ml ON a.id = ml.account_id
|
||||
LEFT JOIN
|
||||
res_partner p ON ml.partner_id = p.id
|
||||
"""
|
||||
if self.filter_cost_center_ids:
|
||||
query_inject_partner += """
|
||||
INNER JOIN
|
||||
account_analytic_account aa
|
||||
ON
|
||||
ml.analytic_account_id = aa.id
|
||||
AND aa.id IN %s
|
||||
"""
|
||||
query_inject_partner += """
|
||||
WHERE
|
||||
ra.report_id = %s
|
||||
AND
|
||||
|
@ -503,7 +563,12 @@ WHERE
|
|||
AND
|
||||
f.balance IS NOT NULL AND f.balance != 0
|
||||
"""
|
||||
query_inject_partner_params = (
|
||||
query_inject_partner_params = ()
|
||||
if self.filter_cost_center_ids:
|
||||
query_inject_partner_params += (
|
||||
tuple(self.filter_cost_center_ids.ids),
|
||||
)
|
||||
query_inject_partner_params += (
|
||||
self.id,
|
||||
)
|
||||
if self.filter_partner_ids:
|
||||
|
@ -513,8 +578,20 @@ AND
|
|||
query_inject_partner_params += (
|
||||
self.date_from,
|
||||
self.fy_start_date,
|
||||
)
|
||||
if self.filter_cost_center_ids:
|
||||
query_inject_partner_params += (
|
||||
tuple(self.filter_cost_center_ids.ids),
|
||||
)
|
||||
query_inject_partner_params += (
|
||||
self.date_to,
|
||||
self.fy_start_date,
|
||||
)
|
||||
if self.filter_cost_center_ids:
|
||||
query_inject_partner_params += (
|
||||
tuple(self.filter_cost_center_ids.ids),
|
||||
)
|
||||
query_inject_partner_params += (
|
||||
self.env.uid,
|
||||
)
|
||||
print query_inject_partner_params
|
||||
|
@ -671,8 +748,21 @@ LEFT JOIN
|
|||
account_full_reconcile fr ON ml.full_reconcile_id = fr.id
|
||||
LEFT JOIN
|
||||
res_currency c ON a.currency_id = c.id
|
||||
"""
|
||||
if self.filter_cost_center_ids:
|
||||
query_inject_move_line += """
|
||||
INNER JOIN
|
||||
account_analytic_account aa
|
||||
ON
|
||||
ml.analytic_account_id = aa.id
|
||||
AND aa.id IN %s
|
||||
"""
|
||||
else:
|
||||
query_inject_move_line += """
|
||||
LEFT JOIN
|
||||
account_analytic_account aa ON ml.analytic_account_id = aa.id
|
||||
"""
|
||||
query_inject_move_line += """
|
||||
WHERE
|
||||
ra.report_id = %s
|
||||
AND
|
||||
|
@ -721,12 +811,22 @@ ORDER BY
|
|||
ORDER BY
|
||||
a.code, ml.date, ml.id
|
||||
"""
|
||||
self.env.cr.execute(
|
||||
query_inject_move_line,
|
||||
(self.env.uid,
|
||||
|
||||
query_inject_move_line_params = (
|
||||
self.env.uid,
|
||||
)
|
||||
if self.filter_cost_center_ids:
|
||||
query_inject_move_line_params += (
|
||||
tuple(self.filter_cost_center_ids.ids),
|
||||
)
|
||||
query_inject_move_line_params += (
|
||||
self.id,
|
||||
self.date_from,
|
||||
self.date_to,)
|
||||
self.date_to,
|
||||
)
|
||||
self.env.cr.execute(
|
||||
query_inject_move_line,
|
||||
query_inject_move_line_params
|
||||
)
|
||||
|
||||
def _inject_line_centralized_values(self):
|
||||
|
@ -755,6 +855,16 @@ WITH
|
|||
account_move m ON ml.move_id = m.id
|
||||
INNER JOIN
|
||||
account_account a ON ml.account_id = a.id
|
||||
"""
|
||||
if self.filter_cost_center_ids:
|
||||
query_inject_move_line_centralized += """
|
||||
INNER JOIN
|
||||
account_analytic_account aa
|
||||
ON
|
||||
ml.analytic_account_id = aa.id
|
||||
AND aa.id IN %s
|
||||
"""
|
||||
query_inject_move_line_centralized += """
|
||||
WHERE
|
||||
ra.report_id = %s
|
||||
AND
|
||||
|
@ -812,13 +922,22 @@ AND
|
|||
ORDER BY
|
||||
a.code, ml.date
|
||||
"""
|
||||
self.env.cr.execute(
|
||||
query_inject_move_line_centralized,
|
||||
(self.id,
|
||||
|
||||
query_inject_move_line_centralized_params = ()
|
||||
if self.filter_cost_center_ids:
|
||||
query_inject_move_line_centralized_params += (
|
||||
tuple(self.filter_cost_center_ids.ids),
|
||||
)
|
||||
query_inject_move_line_centralized_params += (
|
||||
self.id,
|
||||
self.date_from,
|
||||
self.date_to,
|
||||
self.env.uid,
|
||||
self.id,)
|
||||
self.id,
|
||||
)
|
||||
self.env.cr.execute(
|
||||
query_inject_move_line_centralized,
|
||||
query_inject_move_line_centralized_params
|
||||
)
|
||||
|
||||
def _compute_has_second_currency(self):
|
||||
|
|
|
@ -45,6 +45,10 @@ class GeneralLedgerReportWizard(models.TransientModel):
|
|||
comodel_name='res.partner',
|
||||
string='Filter partners',
|
||||
)
|
||||
cost_center_ids = fields.Many2many(
|
||||
comodel_name='account.analytic.account',
|
||||
string='Filter cost centers',
|
||||
)
|
||||
|
||||
@api.onchange('date_range_id')
|
||||
def onchange_date_range_id(self):
|
||||
|
@ -100,6 +104,7 @@ class GeneralLedgerReportWizard(models.TransientModel):
|
|||
'company_id': self.company_id.id,
|
||||
'filter_account_ids': [(6, 0, self.account_ids.ids)],
|
||||
'filter_partner_ids': [(6, 0, self.partner_ids.ids)],
|
||||
'filter_cost_center_ids': [(6, 0, self.cost_center_ids.ids)],
|
||||
'centralize': self.centralize,
|
||||
'fy_start_date': self.fy_start_date,
|
||||
})
|
||||
|
|
|
@ -24,6 +24,9 @@
|
|||
<field name="hide_account_balance_at_0"/>
|
||||
</group>
|
||||
</group>
|
||||
<label for="cost_center_ids" groups="analytic.group_analytic_accounting"/>
|
||||
<field name="cost_center_ids" nolabel="1" groups="analytic.group_analytic_accounting"/>
|
||||
<group/>
|
||||
<label for="partner_ids"/>
|
||||
<field name="partner_ids" nolabel="1"/>
|
||||
<group/>
|
||||
|
|
Loading…
Reference in New Issue