Browse Source

[ADD] 11.0 account_financial_report: add filter by journals

To general ledger
pull/444/head
mpanarin 6 years ago
parent
commit
5e6eb42abf
  1. 58
      account_financial_report/report/general_ledger.py
  2. 13
      account_financial_report/wizard/general_ledger_wizard.py
  3. 4
      account_financial_report/wizard/general_ledger_wizard_view.xml

58
account_financial_report/report/general_ledger.py

@ -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
@ -1326,10 +1360,16 @@ ORDER BY
AND aa.id IN %(cost_center_ids)s AND aa.id IN %(cost_center_ids)s
""" """
sub_subquery_sum_amounts += """ sub_subquery_sum_amounts += """
WHERE
a.company_id = %(company_id)s
AND a.id IN %(unaffected_earnings_account_ids)s
"""
WHERE
a.company_id = %(company_id)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
def _inject_unaffected_earnings_account_values(self): def _inject_unaffected_earnings_account_values(self):
@ -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

13
account_financial_report/wizard/general_ledger_wizard.py

@ -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]
context1 = vals.get('context', {})
action_data = action.read()[0]
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
return vals
action_data['context'] = context1
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,
} }

4
account_financial_report/wizard/general_ledger_wizard_view.xml

@ -30,13 +30,15 @@
<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">
<field name="receivable_accounts_only"/> <field name="receivable_accounts_only"/>
<field name="payable_accounts_only"/> <field name="payable_accounts_only"/>
</group> </group>
<field name="account_ids" widget="many2many_tags" nolabel="1" options="{'no_create': True}"/>
<field name="account_ids" widget="many2many_tags" nolabel="1" options="{'no_create': True}"/>
</div> </div>
<div attrs="{'invisible': [('not_only_one_unaffected_earnings_account', '=', False)]}"> <div attrs="{'invisible': [('not_only_one_unaffected_earnings_account', '=', False)]}">
<field name="not_only_one_unaffected_earnings_account" invisible="1"/> <field name="not_only_one_unaffected_earnings_account" invisible="1"/>

Loading…
Cancel
Save