|
@ -1,4 +1,4 @@ |
|
|
# -*- coding: utf-8 -*- |
|
|
|
|
|
|
|
|
|
|
|
# © 2016 Julien Coux (Camptocamp) |
|
|
# © 2016 Julien Coux (Camptocamp) |
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|
|
|
|
|
|
|
@ -21,7 +21,7 @@ class GeneralLedgerReport(models.TransientModel): |
|
|
For receivable/payable and not centralized accounts |
|
|
For receivable/payable and not centralized accounts |
|
|
""" |
|
|
""" |
|
|
|
|
|
|
|
|
_name = 'report_general_ledger_qweb' |
|
|
|
|
|
|
|
|
_name = 'report_general_ledger' |
|
|
|
|
|
|
|
|
# Filters fields, used for data computation |
|
|
# Filters fields, used for data computation |
|
|
date_from = fields.Date() |
|
|
date_from = fields.Date() |
|
@ -47,7 +47,7 @@ class GeneralLedgerReport(models.TransientModel): |
|
|
|
|
|
|
|
|
# Data fields, used to browse report data |
|
|
# Data fields, used to browse report data |
|
|
account_ids = fields.One2many( |
|
|
account_ids = fields.One2many( |
|
|
comodel_name='report_general_ledger_qweb_account', |
|
|
|
|
|
|
|
|
comodel_name='report_general_ledger_account', |
|
|
inverse_name='report_id' |
|
|
inverse_name='report_id' |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
@ -70,11 +70,11 @@ class GeneralLedgerReport(models.TransientModel): |
|
|
|
|
|
|
|
|
class GeneralLedgerReportAccount(models.TransientModel): |
|
|
class GeneralLedgerReportAccount(models.TransientModel): |
|
|
|
|
|
|
|
|
_name = 'report_general_ledger_qweb_account' |
|
|
|
|
|
|
|
|
_name = 'report_general_ledger_account' |
|
|
_order = 'code ASC' |
|
|
_order = 'code ASC' |
|
|
|
|
|
|
|
|
report_id = fields.Many2one( |
|
|
report_id = fields.Many2one( |
|
|
comodel_name='report_general_ledger_qweb', |
|
|
|
|
|
|
|
|
comodel_name='report_general_ledger', |
|
|
ondelete='cascade', |
|
|
ondelete='cascade', |
|
|
index=True |
|
|
index=True |
|
|
) |
|
|
) |
|
@ -100,21 +100,21 @@ class GeneralLedgerReportAccount(models.TransientModel): |
|
|
|
|
|
|
|
|
# Data fields, used to browse report data |
|
|
# Data fields, used to browse report data |
|
|
move_line_ids = fields.One2many( |
|
|
move_line_ids = fields.One2many( |
|
|
comodel_name='report_general_ledger_qweb_move_line', |
|
|
|
|
|
|
|
|
comodel_name='report_general_ledger_move_line', |
|
|
inverse_name='report_account_id' |
|
|
inverse_name='report_account_id' |
|
|
) |
|
|
) |
|
|
partner_ids = fields.One2many( |
|
|
partner_ids = fields.One2many( |
|
|
comodel_name='report_general_ledger_qweb_partner', |
|
|
|
|
|
|
|
|
comodel_name='report_general_ledger_partner', |
|
|
inverse_name='report_account_id' |
|
|
inverse_name='report_account_id' |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class GeneralLedgerReportPartner(models.TransientModel): |
|
|
class GeneralLedgerReportPartner(models.TransientModel): |
|
|
|
|
|
|
|
|
_name = 'report_general_ledger_qweb_partner' |
|
|
|
|
|
|
|
|
_name = 'report_general_ledger_partner' |
|
|
|
|
|
|
|
|
report_account_id = fields.Many2one( |
|
|
report_account_id = fields.Many2one( |
|
|
comodel_name='report_general_ledger_qweb_account', |
|
|
|
|
|
|
|
|
comodel_name='report_general_ledger_account', |
|
|
ondelete='cascade', |
|
|
ondelete='cascade', |
|
|
index=True |
|
|
index=True |
|
|
) |
|
|
) |
|
@ -136,7 +136,7 @@ class GeneralLedgerReportPartner(models.TransientModel): |
|
|
|
|
|
|
|
|
# Data fields, used to browse report data |
|
|
# Data fields, used to browse report data |
|
|
move_line_ids = fields.One2many( |
|
|
move_line_ids = fields.One2many( |
|
|
comodel_name='report_general_ledger_qweb_move_line', |
|
|
|
|
|
|
|
|
comodel_name='report_general_ledger_move_line', |
|
|
inverse_name='report_partner_id' |
|
|
inverse_name='report_partner_id' |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
@ -146,25 +146,25 @@ class GeneralLedgerReportPartner(models.TransientModel): |
|
|
return """ |
|
|
return """ |
|
|
ORDER BY |
|
|
ORDER BY |
|
|
CASE |
|
|
CASE |
|
|
WHEN "report_general_ledger_qweb_partner"."partner_id" IS NOT NULL |
|
|
|
|
|
|
|
|
WHEN "report_general_ledger_partner"."partner_id" IS NOT NULL |
|
|
THEN 0 |
|
|
THEN 0 |
|
|
ELSE 1 |
|
|
ELSE 1 |
|
|
END, |
|
|
END, |
|
|
"report_general_ledger_qweb_partner"."name" |
|
|
|
|
|
|
|
|
"report_general_ledger_partner"."name" |
|
|
""" |
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class GeneralLedgerReportMoveLine(models.TransientModel): |
|
|
class GeneralLedgerReportMoveLine(models.TransientModel): |
|
|
|
|
|
|
|
|
_name = 'report_general_ledger_qweb_move_line' |
|
|
|
|
|
|
|
|
_name = 'report_general_ledger_move_line' |
|
|
|
|
|
|
|
|
report_account_id = fields.Many2one( |
|
|
report_account_id = fields.Many2one( |
|
|
comodel_name='report_general_ledger_qweb_account', |
|
|
|
|
|
|
|
|
comodel_name='report_general_ledger_account', |
|
|
ondelete='cascade', |
|
|
ondelete='cascade', |
|
|
index=True |
|
|
index=True |
|
|
) |
|
|
) |
|
|
report_partner_id = fields.Many2one( |
|
|
report_partner_id = fields.Many2one( |
|
|
comodel_name='report_general_ledger_qweb_partner', |
|
|
|
|
|
|
|
|
comodel_name='report_general_ledger_partner', |
|
|
ondelete='cascade', |
|
|
ondelete='cascade', |
|
|
index=True |
|
|
index=True |
|
|
) |
|
|
) |
|
@ -193,20 +193,20 @@ class GeneralLedgerReportCompute(models.TransientModel): |
|
|
For class fields, go more top at this file. |
|
|
For class fields, go more top at this file. |
|
|
""" |
|
|
""" |
|
|
|
|
|
|
|
|
_inherit = 'report_general_ledger_qweb' |
|
|
|
|
|
|
|
|
_inherit = 'report_general_ledger' |
|
|
|
|
|
|
|
|
@api.multi |
|
|
@api.multi |
|
|
def print_report(self, xlsx_report=False): |
|
|
|
|
|
|
|
|
def print_report(self, report_type): |
|
|
self.ensure_one() |
|
|
self.ensure_one() |
|
|
self.compute_data_for_report() |
|
|
self.compute_data_for_report() |
|
|
if xlsx_report: |
|
|
|
|
|
report_name = 'account_financial_report_qweb.' \ |
|
|
|
|
|
'report_general_ledger_xlsx' |
|
|
|
|
|
|
|
|
if report_type == 'xlsx': |
|
|
|
|
|
report_name = 'a_f_r.report_general_ledger_xlsx' |
|
|
else: |
|
|
else: |
|
|
report_name = 'account_financial_report_qweb.' \ |
|
|
|
|
|
|
|
|
report_name = 'account_financial_report.' \ |
|
|
'report_general_ledger_qweb' |
|
|
'report_general_ledger_qweb' |
|
|
return self.env['report'].get_action(docids=self.ids, |
|
|
|
|
|
report_name=report_name) |
|
|
|
|
|
|
|
|
return self.env['ir.actions.report'].search( |
|
|
|
|
|
[('report_name', '=', report_name), |
|
|
|
|
|
('report_type', '=', report_type)], limit=1).report_action(self) |
|
|
|
|
|
|
|
|
@api.multi |
|
|
@api.multi |
|
|
def compute_data_for_report(self, |
|
|
def compute_data_for_report(self, |
|
@ -346,7 +346,7 @@ class GeneralLedgerReportCompute(models.TransientModel): |
|
|
return subquery_sum_amounts |
|
|
return subquery_sum_amounts |
|
|
|
|
|
|
|
|
def _inject_account_values(self): |
|
|
def _inject_account_values(self): |
|
|
"""Inject report values for report_general_ledger_qweb_account.""" |
|
|
|
|
|
|
|
|
"""Inject report values for report_general_ledger_account.""" |
|
|
query_inject_account = """ |
|
|
query_inject_account = """ |
|
|
WITH |
|
|
WITH |
|
|
accounts AS |
|
|
accounts AS |
|
@ -412,7 +412,7 @@ WITH |
|
|
initial_sum_amounts AS ( """ + init_subquery + """ ), |
|
|
initial_sum_amounts AS ( """ + init_subquery + """ ), |
|
|
final_sum_amounts AS ( """ + final_subquery + """ ) |
|
|
final_sum_amounts AS ( """ + final_subquery + """ ) |
|
|
INSERT INTO |
|
|
INSERT INTO |
|
|
report_general_ledger_qweb_account |
|
|
|
|
|
|
|
|
report_general_ledger_account |
|
|
( |
|
|
( |
|
|
report_id, |
|
|
report_id, |
|
|
create_uid, |
|
|
create_uid, |
|
@ -612,11 +612,11 @@ AND |
|
|
return subquery_sum_amounts |
|
|
return subquery_sum_amounts |
|
|
|
|
|
|
|
|
def _inject_partner_values(self, only_empty_partner=False): |
|
|
def _inject_partner_values(self, only_empty_partner=False): |
|
|
""" Inject report values for report_general_ledger_qweb_partner. |
|
|
|
|
|
|
|
|
""" Inject report values for report_general_ledger_partner. |
|
|
|
|
|
|
|
|
Only for "partner" accounts (payable and receivable). |
|
|
Only for "partner" accounts (payable and receivable). |
|
|
""" |
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
# pylint: disable=sql-injection |
|
|
query_inject_partner = """ |
|
|
query_inject_partner = """ |
|
|
WITH |
|
|
WITH |
|
|
accounts_partners AS |
|
|
accounts_partners AS |
|
@ -637,7 +637,7 @@ WITH |
|
|
'""" + _('No partner allocated') + """' |
|
|
'""" + _('No partner allocated') + """' |
|
|
) AS partner_name |
|
|
) AS partner_name |
|
|
FROM |
|
|
FROM |
|
|
report_general_ledger_qweb_account ra |
|
|
|
|
|
|
|
|
report_general_ledger_account ra |
|
|
INNER JOIN |
|
|
INNER JOIN |
|
|
account_account a ON ra.account_id = a.id |
|
|
account_account a ON ra.account_id = a.id |
|
|
INNER JOIN |
|
|
INNER JOIN |
|
@ -702,7 +702,7 @@ WITH |
|
|
initial_sum_amounts AS ( """ + init_subquery + """ ), |
|
|
initial_sum_amounts AS ( """ + init_subquery + """ ), |
|
|
final_sum_amounts AS ( """ + final_subquery + """ ) |
|
|
final_sum_amounts AS ( """ + final_subquery + """ ) |
|
|
INSERT INTO |
|
|
INSERT INTO |
|
|
report_general_ledger_qweb_partner |
|
|
|
|
|
|
|
|
report_general_ledger_partner |
|
|
( |
|
|
( |
|
|
report_account_id, |
|
|
report_account_id, |
|
|
create_uid, |
|
|
create_uid, |
|
@ -830,7 +830,7 @@ AND |
|
|
is_partner_line=False, |
|
|
is_partner_line=False, |
|
|
only_empty_partner_line=False, |
|
|
only_empty_partner_line=False, |
|
|
only_unaffected_earnings_account=False): |
|
|
only_unaffected_earnings_account=False): |
|
|
""" Inject report values for report_general_ledger_qweb_move_line. |
|
|
|
|
|
|
|
|
""" Inject report values for report_general_ledger_move_line. |
|
|
|
|
|
|
|
|
If centralized option have been chosen, |
|
|
If centralized option have been chosen, |
|
|
only non centralized accounts are computed. |
|
|
only non centralized accounts are computed. |
|
@ -843,7 +843,7 @@ AND |
|
|
""" |
|
|
""" |
|
|
query_inject_move_line = """ |
|
|
query_inject_move_line = """ |
|
|
INSERT INTO |
|
|
INSERT INTO |
|
|
report_general_ledger_qweb_move_line |
|
|
|
|
|
|
|
|
report_general_ledger_move_line |
|
|
( |
|
|
( |
|
|
""" |
|
|
""" |
|
|
if is_account_line: |
|
|
if is_account_line: |
|
@ -943,13 +943,13 @@ FROM |
|
|
""" |
|
|
""" |
|
|
if is_account_line: |
|
|
if is_account_line: |
|
|
query_inject_move_line += """ |
|
|
query_inject_move_line += """ |
|
|
report_general_ledger_qweb_account ra |
|
|
|
|
|
|
|
|
report_general_ledger_account ra |
|
|
""" |
|
|
""" |
|
|
elif is_partner_line: |
|
|
elif is_partner_line: |
|
|
query_inject_move_line += """ |
|
|
query_inject_move_line += """ |
|
|
report_general_ledger_qweb_partner rp |
|
|
|
|
|
|
|
|
report_general_ledger_partner rp |
|
|
INNER JOIN |
|
|
INNER JOIN |
|
|
report_general_ledger_qweb_account ra ON rp.report_account_id = ra.id |
|
|
|
|
|
|
|
|
report_general_ledger_account ra ON rp.report_account_id = ra.id |
|
|
""" |
|
|
""" |
|
|
query_inject_move_line += """ |
|
|
query_inject_move_line += """ |
|
|
INNER JOIN |
|
|
INNER JOIN |
|
@ -1070,7 +1070,7 @@ ORDER BY |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
def _inject_line_centralized_values(self): |
|
|
def _inject_line_centralized_values(self): |
|
|
""" Inject report values for report_general_ledger_qweb_move_line. |
|
|
|
|
|
|
|
|
""" Inject report values for report_general_ledger_move_line. |
|
|
|
|
|
|
|
|
Only centralized accounts are computed. |
|
|
Only centralized accounts are computed. |
|
|
""" |
|
|
""" |
|
@ -1088,7 +1088,7 @@ WITH |
|
|
SUM(ml.credit) AS credit, |
|
|
SUM(ml.credit) AS credit, |
|
|
SUM(ml.balance) AS balance |
|
|
SUM(ml.balance) AS balance |
|
|
FROM |
|
|
FROM |
|
|
report_general_ledger_qweb_account ra |
|
|
|
|
|
|
|
|
report_general_ledger_account ra |
|
|
INNER JOIN |
|
|
INNER JOIN |
|
|
account_move_line ml ON ra.account_id = ml.account_id |
|
|
account_move_line ml ON ra.account_id = ml.account_id |
|
|
INNER JOIN |
|
|
INNER JOIN |
|
@ -1122,7 +1122,7 @@ WITH |
|
|
ra.id, ml.account_id, a.code, 2 |
|
|
ra.id, ml.account_id, a.code, 2 |
|
|
) |
|
|
) |
|
|
INSERT INTO |
|
|
INSERT INTO |
|
|
report_general_ledger_qweb_move_line |
|
|
|
|
|
|
|
|
report_general_ledger_move_line |
|
|
( |
|
|
( |
|
|
report_account_id, |
|
|
report_account_id, |
|
|
create_uid, |
|
|
create_uid, |
|
@ -1148,7 +1148,7 @@ SELECT |
|
|
OVER (PARTITION BY a.code ORDER BY ml.date) |
|
|
OVER (PARTITION BY a.code ORDER BY ml.date) |
|
|
) AS cumul_balance |
|
|
) AS cumul_balance |
|
|
FROM |
|
|
FROM |
|
|
report_general_ledger_qweb_account ra |
|
|
|
|
|
|
|
|
report_general_ledger_account ra |
|
|
INNER JOIN |
|
|
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 |
|
@ -1184,16 +1184,16 @@ ORDER BY |
|
|
""" Compute "has_second_currency" flag which will used for display.""" |
|
|
""" Compute "has_second_currency" flag which will used for display.""" |
|
|
query_update_has_second_currency = """ |
|
|
query_update_has_second_currency = """ |
|
|
UPDATE |
|
|
UPDATE |
|
|
report_general_ledger_qweb |
|
|
|
|
|
|
|
|
report_general_ledger |
|
|
SET |
|
|
SET |
|
|
has_second_currency = |
|
|
has_second_currency = |
|
|
( |
|
|
( |
|
|
SELECT |
|
|
SELECT |
|
|
TRUE |
|
|
TRUE |
|
|
FROM |
|
|
FROM |
|
|
report_general_ledger_qweb_move_line l |
|
|
|
|
|
|
|
|
report_general_ledger_move_line l |
|
|
INNER JOIN |
|
|
INNER JOIN |
|
|
report_general_ledger_qweb_account a |
|
|
|
|
|
|
|
|
report_general_ledger_account a |
|
|
ON l.report_account_id = a.id |
|
|
ON l.report_account_id = a.id |
|
|
WHERE |
|
|
WHERE |
|
|
a.report_id = %s |
|
|
a.report_id = %s |
|
@ -1205,12 +1205,12 @@ SET |
|
|
SELECT |
|
|
SELECT |
|
|
TRUE |
|
|
TRUE |
|
|
FROM |
|
|
FROM |
|
|
report_general_ledger_qweb_move_line l |
|
|
|
|
|
|
|
|
report_general_ledger_move_line l |
|
|
INNER JOIN |
|
|
INNER JOIN |
|
|
report_general_ledger_qweb_partner p |
|
|
|
|
|
|
|
|
report_general_ledger_partner p |
|
|
ON l.report_partner_id = p.id |
|
|
ON l.report_partner_id = p.id |
|
|
INNER JOIN |
|
|
INNER JOIN |
|
|
report_general_ledger_qweb_account a |
|
|
|
|
|
|
|
|
report_general_ledger_account a |
|
|
ON p.report_account_id = a.id |
|
|
ON p.report_account_id = a.id |
|
|
WHERE |
|
|
WHERE |
|
|
a.report_id = %s |
|
|
a.report_id = %s |
|
@ -1278,7 +1278,7 @@ WHERE id = %s |
|
|
|
|
|
|
|
|
def _inject_unaffected_earnings_account_values(self): |
|
|
def _inject_unaffected_earnings_account_values(self): |
|
|
"""Inject the report values of the unaffected earnings account |
|
|
"""Inject the report values of the unaffected earnings account |
|
|
for report_general_ledger_qweb_account.""" |
|
|
|
|
|
|
|
|
for report_general_ledger_account.""" |
|
|
subquery_sum_amounts = """ |
|
|
subquery_sum_amounts = """ |
|
|
SELECT |
|
|
SELECT |
|
|
SUM(COALESCE(sub.balance, 0.0)) AS balance |
|
|
SUM(COALESCE(sub.balance, 0.0)) AS balance |
|
@ -1299,11 +1299,13 @@ WHERE id = %s |
|
|
subquery_sum_amounts += """ |
|
|
subquery_sum_amounts += """ |
|
|
) sub |
|
|
) sub |
|
|
""" |
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
# pylint: disable=sql-injection |
|
|
query_inject_account = """ |
|
|
query_inject_account = """ |
|
|
WITH |
|
|
WITH |
|
|
initial_sum_amounts AS ( """ + subquery_sum_amounts + """ ) |
|
|
initial_sum_amounts AS ( """ + subquery_sum_amounts + """ ) |
|
|
INSERT INTO |
|
|
INSERT INTO |
|
|
report_general_ledger_qweb_account |
|
|
|
|
|
|
|
|
report_general_ledger_account |
|
|
( |
|
|
( |
|
|
report_id, |
|
|
report_id, |
|
|
create_uid, |
|
|
create_uid, |
|
@ -1364,7 +1366,7 @@ WHERE id = %s |
|
|
|
|
|
|
|
|
def _complete_unaffected_earnings_account_values(self): |
|
|
def _complete_unaffected_earnings_account_values(self): |
|
|
"""Complete the report values of the unaffected earnings account |
|
|
"""Complete the report values of the unaffected earnings account |
|
|
for report_general_ledger_qweb_account.""" |
|
|
|
|
|
|
|
|
for report_general_ledger_account.""" |
|
|
query_update_unaffected_earnings_account_values = """ |
|
|
query_update_unaffected_earnings_account_values = """ |
|
|
WITH |
|
|
WITH |
|
|
sum_amounts AS |
|
|
sum_amounts AS |
|
@ -1377,9 +1379,9 @@ WHERE id = %s |
|
|
COALESCE(rml.credit, 0.0) |
|
|
COALESCE(rml.credit, 0.0) |
|
|
) + ra.initial_balance AS balance |
|
|
) + ra.initial_balance AS balance |
|
|
FROM |
|
|
FROM |
|
|
report_general_ledger_qweb_account ra |
|
|
|
|
|
|
|
|
report_general_ledger_account ra |
|
|
LEFT JOIN |
|
|
LEFT JOIN |
|
|
report_general_ledger_qweb_move_line rml |
|
|
|
|
|
|
|
|
report_general_ledger_move_line rml |
|
|
ON ra.id = rml.report_account_id |
|
|
ON ra.id = rml.report_account_id |
|
|
WHERE |
|
|
WHERE |
|
|
ra.report_id = %s |
|
|
ra.report_id = %s |
|
@ -1388,7 +1390,7 @@ WHERE id = %s |
|
|
ra.id |
|
|
ra.id |
|
|
) |
|
|
) |
|
|
UPDATE |
|
|
UPDATE |
|
|
report_general_ledger_qweb_account ra |
|
|
|
|
|
|
|
|
report_general_ledger_account ra |
|
|
SET |
|
|
SET |
|
|
initial_debit = 0.0, |
|
|
initial_debit = 0.0, |
|
|
initial_credit = 0.0, |
|
|
initial_credit = 0.0, |