[ADD] 11.0 account_financial_report: add filter by journals
To general ledgerpull/444/head
parent
2ccc8831ad
commit
5e6eb42abf
|
@ -36,6 +36,9 @@ class GeneralLedgerReport(models.TransientModel):
|
||||||
filter_cost_center_ids = fields.Many2many(
|
filter_cost_center_ids = fields.Many2many(
|
||||||
comodel_name='account.analytic.account'
|
comodel_name='account.analytic.account'
|
||||||
)
|
)
|
||||||
|
filter_journal_ids = fields.Many2many(
|
||||||
|
comodel_name='account.journal',
|
||||||
|
)
|
||||||
centralize = fields.Boolean()
|
centralize = fields.Boolean()
|
||||||
|
|
||||||
# Flag fields, used for report display
|
# Flag fields, used for report display
|
||||||
|
@ -1104,6 +1107,11 @@ AND
|
||||||
AND
|
AND
|
||||||
rp.partner_id IS NULL
|
rp.partner_id IS NULL
|
||||||
"""
|
"""
|
||||||
|
if self.filter_journal_ids:
|
||||||
|
query_inject_move_line += """
|
||||||
|
AND
|
||||||
|
j.id IN %s
|
||||||
|
"""
|
||||||
if is_account_line:
|
if is_account_line:
|
||||||
query_inject_move_line += """
|
query_inject_move_line += """
|
||||||
ORDER BY
|
ORDER BY
|
||||||
|
@ -1138,6 +1146,10 @@ ORDER BY
|
||||||
self.date_from,
|
self.date_from,
|
||||||
self.date_to,
|
self.date_to,
|
||||||
)
|
)
|
||||||
|
if self.filter_journal_ids:
|
||||||
|
query_inject_move_line_params += (tuple(
|
||||||
|
self.filter_journal_ids.ids,
|
||||||
|
),)
|
||||||
self.env.cr.execute(
|
self.env.cr.execute(
|
||||||
query_inject_move_line,
|
query_inject_move_line,
|
||||||
query_inject_move_line_params
|
query_inject_move_line_params
|
||||||
|
@ -1161,7 +1173,8 @@ WITH
|
||||||
SUM(ml.debit) AS debit,
|
SUM(ml.debit) AS debit,
|
||||||
SUM(ml.credit) AS credit,
|
SUM(ml.credit) AS credit,
|
||||||
SUM(ml.balance) AS balance,
|
SUM(ml.balance) AS balance,
|
||||||
ml.currency_id AS currency_id
|
ml.currency_id AS currency_id,
|
||||||
|
ml.journal_id as journal_id
|
||||||
FROM
|
FROM
|
||||||
report_general_ledger_account ra
|
report_general_ledger_account ra
|
||||||
INNER JOIN
|
INNER JOIN
|
||||||
|
@ -1194,7 +1207,7 @@ WITH
|
||||||
"""
|
"""
|
||||||
query_inject_move_line_centralized += """
|
query_inject_move_line_centralized += """
|
||||||
GROUP BY
|
GROUP BY
|
||||||
ra.id, ml.account_id, a.code, 2, ml.currency_id
|
ra.id, ml.account_id, a.code, 2, ml.currency_id, ml.journal_id
|
||||||
)
|
)
|
||||||
INSERT INTO
|
INSERT INTO
|
||||||
report_general_ledger_move_line
|
report_general_ledger_move_line
|
||||||
|
@ -1204,6 +1217,7 @@ INSERT INTO
|
||||||
create_date,
|
create_date,
|
||||||
date,
|
date,
|
||||||
account,
|
account,
|
||||||
|
journal,
|
||||||
label,
|
label,
|
||||||
debit,
|
debit,
|
||||||
credit,
|
credit,
|
||||||
|
@ -1215,6 +1229,7 @@ SELECT
|
||||||
NOW() AS create_date,
|
NOW() AS create_date,
|
||||||
ml.date,
|
ml.date,
|
||||||
a.code AS account,
|
a.code AS account,
|
||||||
|
j.code AS journal,
|
||||||
'""" + _('Centralized Entries') + """' AS label,
|
'""" + _('Centralized Entries') + """' AS label,
|
||||||
ml.debit AS debit,
|
ml.debit AS debit,
|
||||||
ml.credit AS credit,
|
ml.credit AS credit,
|
||||||
|
@ -1228,12 +1243,21 @@ INNER JOIN
|
||||||
move_lines ml ON ra.account_id = ml.account_id
|
move_lines ml ON ra.account_id = ml.account_id
|
||||||
INNER JOIN
|
INNER JOIN
|
||||||
account_account a ON ml.account_id = a.id
|
account_account a ON ml.account_id = a.id
|
||||||
|
INNER JOIN
|
||||||
|
account_journal j ON ml.journal_id = j.id
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
res_currency c ON ml.currency_id = c.id
|
res_currency c ON ml.currency_id = c.id
|
||||||
WHERE
|
WHERE
|
||||||
ra.report_id = %s
|
ra.report_id = %s
|
||||||
AND
|
AND
|
||||||
(a.centralized IS NOT NULL AND a.centralized = TRUE)
|
(a.centralized IS NOT NULL AND a.centralized = TRUE)
|
||||||
|
"""
|
||||||
|
if self.filter_journal_ids:
|
||||||
|
query_inject_move_line_centralized += """
|
||||||
|
AND
|
||||||
|
j.id in %s
|
||||||
|
"""
|
||||||
|
query_inject_move_line_centralized += """
|
||||||
ORDER BY
|
ORDER BY
|
||||||
a.code, ml.date
|
a.code, ml.date
|
||||||
"""
|
"""
|
||||||
|
@ -1250,6 +1274,10 @@ ORDER BY
|
||||||
self.env.uid,
|
self.env.uid,
|
||||||
self.id,
|
self.id,
|
||||||
)
|
)
|
||||||
|
if self.filter_journal_ids:
|
||||||
|
query_inject_move_line_centralized_params += (tuple(
|
||||||
|
self.filter_journal_ids.ids,
|
||||||
|
),)
|
||||||
self.env.cr.execute(
|
self.env.cr.execute(
|
||||||
query_inject_move_line_centralized,
|
query_inject_move_line_centralized,
|
||||||
query_inject_move_line_centralized_params
|
query_inject_move_line_centralized_params
|
||||||
|
@ -1289,7 +1317,13 @@ ORDER BY
|
||||||
sub_subquery_sum_amounts += """
|
sub_subquery_sum_amounts += """
|
||||||
WHERE
|
WHERE
|
||||||
a.company_id = %(company_id)s
|
a.company_id = %(company_id)s
|
||||||
AND a.id IN %(unaffected_earnings_account_ids)s
|
AND
|
||||||
|
a.id IN %(unaffected_earnings_account_ids)s
|
||||||
|
"""
|
||||||
|
if self.filter_journal_ids:
|
||||||
|
sub_subquery_sum_amounts += """
|
||||||
|
AND
|
||||||
|
ml.journal_id in %(filter_journal_ids)s
|
||||||
"""
|
"""
|
||||||
return sub_subquery_sum_amounts
|
return sub_subquery_sum_amounts
|
||||||
|
|
||||||
|
@ -1328,7 +1362,13 @@ ORDER BY
|
||||||
sub_subquery_sum_amounts += """
|
sub_subquery_sum_amounts += """
|
||||||
WHERE
|
WHERE
|
||||||
a.company_id = %(company_id)s
|
a.company_id = %(company_id)s
|
||||||
AND a.id IN %(unaffected_earnings_account_ids)s
|
AND
|
||||||
|
a.id IN %(unaffected_earnings_account_ids)s
|
||||||
|
"""
|
||||||
|
if self.filter_journal_ids:
|
||||||
|
sub_subquery_sum_amounts += """
|
||||||
|
AND
|
||||||
|
ml.journal_id in %(filter_journal_ids)s
|
||||||
"""
|
"""
|
||||||
return sub_subquery_sum_amounts
|
return sub_subquery_sum_amounts
|
||||||
|
|
||||||
|
@ -1406,6 +1446,10 @@ ORDER BY
|
||||||
query_inject_account_params['report_id'] = self.id
|
query_inject_account_params['report_id'] = self.id
|
||||||
query_inject_account_params['user_id'] = self.env.uid
|
query_inject_account_params['user_id'] = self.env.uid
|
||||||
|
|
||||||
|
if self.filter_journal_ids:
|
||||||
|
query_inject_account_params['filter_journal_ids'] = (tuple(
|
||||||
|
self.filter_journal_ids.ids,
|
||||||
|
),)
|
||||||
# Fetch the profit and loss accounts
|
# Fetch the profit and loss accounts
|
||||||
query_unaffected_earnings_account_ids = """
|
query_unaffected_earnings_account_ids = """
|
||||||
SELECT a.id
|
SELECT a.id
|
||||||
|
|
|
@ -54,6 +54,10 @@ class GeneralLedgerReportWizard(models.TransientModel):
|
||||||
comodel_name='res.partner',
|
comodel_name='res.partner',
|
||||||
string='Filter partners',
|
string='Filter partners',
|
||||||
)
|
)
|
||||||
|
account_journal_ids = fields.Many2many(
|
||||||
|
comodel_name='account.journal',
|
||||||
|
string='Filter journals',
|
||||||
|
)
|
||||||
cost_center_ids = fields.Many2many(
|
cost_center_ids = fields.Many2many(
|
||||||
comodel_name='account.analytic.account',
|
comodel_name='account.analytic.account',
|
||||||
string='Filter cost centers',
|
string='Filter cost centers',
|
||||||
|
@ -122,8 +126,8 @@ class GeneralLedgerReportWizard(models.TransientModel):
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
action = self.env.ref(
|
action = self.env.ref(
|
||||||
'account_financial_report.action_report_general_ledger')
|
'account_financial_report.action_report_general_ledger')
|
||||||
vals = action.read()[0]
|
action_data = action.read()[0]
|
||||||
context1 = vals.get('context', {})
|
context1 = action_data.get('context', {})
|
||||||
if isinstance(context1, pycompat.string_types):
|
if isinstance(context1, pycompat.string_types):
|
||||||
context1 = safe_eval(context1)
|
context1 = safe_eval(context1)
|
||||||
model = self.env['report_general_ledger']
|
model = self.env['report_general_ledger']
|
||||||
|
@ -131,8 +135,8 @@ class GeneralLedgerReportWizard(models.TransientModel):
|
||||||
report.compute_data_for_report()
|
report.compute_data_for_report()
|
||||||
context1['active_id'] = report.id
|
context1['active_id'] = report.id
|
||||||
context1['active_ids'] = report.ids
|
context1['active_ids'] = report.ids
|
||||||
vals['context'] = context1
|
action_data['context'] = context1
|
||||||
return vals
|
return action_data
|
||||||
|
|
||||||
@api.multi
|
@api.multi
|
||||||
def button_export_pdf(self):
|
def button_export_pdf(self):
|
||||||
|
@ -158,6 +162,7 @@ class GeneralLedgerReportWizard(models.TransientModel):
|
||||||
'filter_account_ids': [(6, 0, self.account_ids.ids)],
|
'filter_account_ids': [(6, 0, self.account_ids.ids)],
|
||||||
'filter_partner_ids': [(6, 0, self.partner_ids.ids)],
|
'filter_partner_ids': [(6, 0, self.partner_ids.ids)],
|
||||||
'filter_cost_center_ids': [(6, 0, self.cost_center_ids.ids)],
|
'filter_cost_center_ids': [(6, 0, self.cost_center_ids.ids)],
|
||||||
|
'filter_journal_ids': [(6, 0, self.account_journal_ids.ids)],
|
||||||
'centralize': self.centralize,
|
'centralize': self.centralize,
|
||||||
'fy_start_date': self.fy_start_date,
|
'fy_start_date': self.fy_start_date,
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,8 @@
|
||||||
<group/>
|
<group/>
|
||||||
<label for="partner_ids"/>
|
<label for="partner_ids"/>
|
||||||
<field name="partner_ids" nolabel="1" options="{'no_create': True}"/>
|
<field name="partner_ids" nolabel="1" options="{'no_create': True}"/>
|
||||||
|
<label for="account_journal_ids"/>
|
||||||
|
<field name="account_journal_ids" widget="many2many_tags" nolabel="1" options="{'no_create': True}"/>
|
||||||
<group/>
|
<group/>
|
||||||
<label for="account_ids"/>
|
<label for="account_ids"/>
|
||||||
<group col="4">
|
<group col="4">
|
||||||
|
|
Loading…
Reference in New Issue