odoo-addon-account-financial-report 17.0.1.5.0__py3-none-any.whl → 17.0.1.6.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of odoo-addon-account-financial-report might be problematic. Click here for more details.
- odoo/addons/account_financial_report/README.rst +1 -1
- odoo/addons/account_financial_report/__manifest__.py +1 -1
- odoo/addons/account_financial_report/i18n/account_financial_report.pot +27 -0
- odoo/addons/account_financial_report/report/templates/trial_balance.xml +181 -73
- odoo/addons/account_financial_report/report/trial_balance.py +190 -3
- odoo/addons/account_financial_report/report/trial_balance_xlsx.py +34 -14
- odoo/addons/account_financial_report/static/description/index.html +1 -1
- odoo/addons/account_financial_report/wizard/trial_balance_wizard.py +11 -0
- odoo/addons/account_financial_report/wizard/trial_balance_wizard_view.xml +15 -2
- {odoo_addon_account_financial_report-17.0.1.5.0.dist-info → odoo_addon_account_financial_report-17.0.1.6.0.dist-info}/METADATA +2 -2
- {odoo_addon_account_financial_report-17.0.1.5.0.dist-info → odoo_addon_account_financial_report-17.0.1.6.0.dist-info}/RECORD +13 -13
- {odoo_addon_account_financial_report-17.0.1.5.0.dist-info → odoo_addon_account_financial_report-17.0.1.6.0.dist-info}/WHEEL +0 -0
- {odoo_addon_account_financial_report-17.0.1.5.0.dist-info → odoo_addon_account_financial_report-17.0.1.6.0.dist-info}/top_level.txt +0 -0
|
@@ -7,7 +7,7 @@ Account Financial Reports
|
|
|
7
7
|
!! This file is generated by oca-gen-addon-readme !!
|
|
8
8
|
!! changes will be overwritten. !!
|
|
9
9
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
10
|
-
!! source digest: sha256:
|
|
10
|
+
!! source digest: sha256:20ae22a108ec709b3bf88351495514d82435eb77953df3f3164d48b9c58886cc
|
|
11
11
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
12
12
|
|
|
13
13
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
|
@@ -49,6 +49,13 @@ msgstr ""
|
|
|
49
49
|
msgid "<b>Taxes summary</b>"
|
|
50
50
|
msgstr ""
|
|
51
51
|
|
|
52
|
+
#. module: account_financial_report
|
|
53
|
+
#: model_terms:ir.ui.view,arch_db:account_financial_report.trial_balance_wizard
|
|
54
|
+
msgid ""
|
|
55
|
+
"<i class=\"fa fa-exclamation-triangle mr-3\"/>\n"
|
|
56
|
+
" Duplicate amounts may be shown because more than one analytical account may be defined in the journal items."
|
|
57
|
+
msgstr ""
|
|
58
|
+
|
|
52
59
|
#. module: account_financial_report
|
|
53
60
|
#: model_terms:ir.ui.view,arch_db:account_financial_report.res_config_settings_view_form
|
|
54
61
|
msgid "<span class=\"o_form_label\">Intervals configuration</span>"
|
|
@@ -336,6 +343,7 @@ msgstr ""
|
|
|
336
343
|
|
|
337
344
|
#. module: account_financial_report
|
|
338
345
|
#: model:ir.model.fields,field_description:account_financial_report.field_account_move_line__analytic_account_ids
|
|
346
|
+
#: model:ir.model.fields.selection,name:account_financial_report.selection__trial_balance_report_wizard__grouped_by__analytic_account
|
|
339
347
|
msgid "Analytic Account"
|
|
340
348
|
msgstr ""
|
|
341
349
|
|
|
@@ -945,6 +953,7 @@ msgstr ""
|
|
|
945
953
|
|
|
946
954
|
#. module: account_financial_report
|
|
947
955
|
#: model:ir.model.fields,field_description:account_financial_report.field_general_ledger_report_wizard__grouped_by
|
|
956
|
+
#: model:ir.model.fields,field_description:account_financial_report.field_trial_balance_report_wizard__grouped_by
|
|
948
957
|
msgid "Grouped By"
|
|
949
958
|
msgstr ""
|
|
950
959
|
|
|
@@ -1586,6 +1595,14 @@ msgstr ""
|
|
|
1586
1595
|
msgid "Starting account in a range"
|
|
1587
1596
|
msgstr ""
|
|
1588
1597
|
|
|
1598
|
+
#. module: account_financial_report
|
|
1599
|
+
#. odoo-python
|
|
1600
|
+
#: code:addons/account_financial_report/report/trial_balance.py:0
|
|
1601
|
+
#: code:addons/account_financial_report/report/trial_balance_xlsx.py:0
|
|
1602
|
+
#, python-format
|
|
1603
|
+
msgid "TOTAL"
|
|
1604
|
+
msgstr ""
|
|
1605
|
+
|
|
1589
1606
|
#. module: account_financial_report
|
|
1590
1607
|
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_general_ledger_lines
|
|
1591
1608
|
msgid "Tags"
|
|
@@ -1746,7 +1763,10 @@ msgid "To:"
|
|
|
1746
1763
|
msgstr ""
|
|
1747
1764
|
|
|
1748
1765
|
#. module: account_financial_report
|
|
1766
|
+
#. odoo-python
|
|
1767
|
+
#: code:addons/account_financial_report/report/trial_balance_xlsx.py:0
|
|
1749
1768
|
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_aged_partner_balance_account_ending_cumul
|
|
1769
|
+
#, python-format
|
|
1750
1770
|
msgid "Total"
|
|
1751
1771
|
msgstr ""
|
|
1752
1772
|
|
|
@@ -1880,6 +1900,13 @@ msgstr ""
|
|
|
1880
1900
|
msgid "With Account Name"
|
|
1881
1901
|
msgstr ""
|
|
1882
1902
|
|
|
1903
|
+
#. module: account_financial_report
|
|
1904
|
+
#. odoo-python
|
|
1905
|
+
#: code:addons/account_financial_report/report/trial_balance.py:0
|
|
1906
|
+
#, python-format
|
|
1907
|
+
msgid "Without analytic account"
|
|
1908
|
+
msgstr ""
|
|
1909
|
+
|
|
1883
1910
|
#. module: account_financial_report
|
|
1884
1911
|
#. odoo-python
|
|
1885
1912
|
#: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
<div class="row">
|
|
29
29
|
<h4
|
|
30
30
|
class="mt0"
|
|
31
|
-
t-
|
|
31
|
+
t-out="title or 'Odoo Report'"
|
|
32
32
|
style="text-align: center;"
|
|
33
33
|
/>
|
|
34
34
|
</div>
|
|
@@ -36,43 +36,94 @@
|
|
|
36
36
|
<t t-call="account_financial_report.report_trial_balance_filters" />
|
|
37
37
|
<div class="act_as_table list_table" style="margin-top: 10px;" />
|
|
38
38
|
<!-- Display account lines -->
|
|
39
|
+
<t t-set="aml_domain_extra" t-value="[]" />
|
|
39
40
|
<t t-if="not show_partner_details">
|
|
40
|
-
<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
>
|
|
41
|
+
<t t-if="trial_balance_grouped">
|
|
42
|
+
<t t-foreach="trial_balance_grouped" t-as="grouped_item">
|
|
43
|
+
<div class="act_as_table data_table" style="width: 100%;">
|
|
44
|
+
<div class="act_as_thead">
|
|
45
|
+
<div class="act_as_row labels">
|
|
46
|
+
<div class="act_as_cell" style="width: 100%;">
|
|
47
|
+
<t t-esc="grouped_item['name']" />
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
<t
|
|
53
|
+
t-set="aml_domain_extra"
|
|
54
|
+
t-if="grouped_item['id'] > 0"
|
|
55
|
+
t-value="[('analytic_account_id', '=', grouped_item['id'])]"
|
|
56
|
+
/>
|
|
57
|
+
<t
|
|
58
|
+
t-set="aml_domain_extra"
|
|
59
|
+
t-else=""
|
|
60
|
+
t-value="[('analytic_account_id', '=', False)]"
|
|
61
|
+
/>
|
|
62
|
+
<div class="act_as_table data_table" style="width: 100%;">
|
|
63
|
+
<t
|
|
64
|
+
t-call="account_financial_report.report_trial_balance_lines_header"
|
|
65
|
+
/>
|
|
66
|
+
<!-- Display each lines -->
|
|
67
|
+
<t t-foreach="grouped_item['account_data']" t-as="balance">
|
|
68
|
+
<!-- Adapt -->
|
|
69
|
+
<t t-set="style" t-value="'font-size:12px;'" />
|
|
54
70
|
<t
|
|
55
|
-
t-
|
|
56
|
-
t-value="style + 'font-weight: bold; color: blue;'"
|
|
71
|
+
t-call="account_financial_report.report_trial_balance_line"
|
|
57
72
|
/>
|
|
58
73
|
</t>
|
|
59
|
-
</
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
74
|
+
</div>
|
|
75
|
+
<!-- Display footer with totals !-->
|
|
76
|
+
<t t-set="balance" t-value="grouped_item" />
|
|
77
|
+
<t
|
|
78
|
+
t-call="account_financial_report.report_trial_balance_account_footer"
|
|
79
|
+
/>
|
|
80
|
+
</t>
|
|
81
|
+
<!-- TOTAL !-->
|
|
82
|
+
<t t-if="grouped_by">
|
|
83
|
+
<t t-set="balance" t-value="total_amount_grouped" />
|
|
84
|
+
<t
|
|
85
|
+
t-call="account_financial_report.report_trial_balance_account_footer"
|
|
86
|
+
/>
|
|
87
|
+
</t>
|
|
88
|
+
</t>
|
|
89
|
+
<t t-else="">
|
|
90
|
+
<div class="act_as_table data_table" style="width: 100%;">
|
|
91
|
+
<!-- Display account header -->
|
|
92
|
+
<t
|
|
93
|
+
t-call="account_financial_report.report_trial_balance_lines_header"
|
|
94
|
+
/>
|
|
95
|
+
<!-- Display each lines -->
|
|
96
|
+
<t t-foreach="trial_balance" t-as="balance">
|
|
97
|
+
<!-- Adapt -->
|
|
98
|
+
<t t-set="style" t-value="'font-size:12px;'" />
|
|
99
|
+
<!-- Different style for account group -->
|
|
100
|
+
<t t-if="show_hierarchy">
|
|
101
|
+
<t
|
|
102
|
+
t-if="balance['type'] == 'group_type'"
|
|
103
|
+
>
|
|
104
|
+
<t
|
|
105
|
+
t-set="style"
|
|
106
|
+
t-value="style + 'font-weight: bold; color: blue;'"
|
|
107
|
+
/>
|
|
108
|
+
</t>
|
|
109
|
+
</t>
|
|
110
|
+
<t t-if="show_hierarchy and limit_hierarchy_level">
|
|
111
|
+
<t
|
|
112
|
+
t-if="show_hierarchy_level > balance['level'] and (not hide_parent_hierarchy_level or (show_hierarchy_level - 1) == balance['level'])"
|
|
113
|
+
>
|
|
114
|
+
<t
|
|
115
|
+
t-call="account_financial_report.report_trial_balance_line"
|
|
116
|
+
/>
|
|
117
|
+
</t>
|
|
118
|
+
</t>
|
|
119
|
+
<t t-else="">
|
|
64
120
|
<t
|
|
65
121
|
t-call="account_financial_report.report_trial_balance_line"
|
|
66
122
|
/>
|
|
67
123
|
</t>
|
|
68
124
|
</t>
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
t-call="account_financial_report.report_trial_balance_line"
|
|
72
|
-
/>
|
|
73
|
-
</t>
|
|
74
|
-
</t>
|
|
75
|
-
</div>
|
|
125
|
+
</div>
|
|
126
|
+
</t>
|
|
76
127
|
</t>
|
|
77
128
|
<!-- Display partner lines -->
|
|
78
129
|
<t t-if="show_partner_details">
|
|
@@ -139,9 +190,9 @@
|
|
|
139
190
|
<div class="act_as_row">
|
|
140
191
|
<div class="act_as_cell">
|
|
141
192
|
From:
|
|
142
|
-
<span t-
|
|
193
|
+
<span t-out="date_from" t-options="{'widget': 'date'}" />
|
|
143
194
|
To
|
|
144
|
-
<span t-
|
|
195
|
+
<span t-out="date_to" t-options="{'widget': 'date'}" />
|
|
145
196
|
</div>
|
|
146
197
|
<div class="act_as_cell">
|
|
147
198
|
<t t-if="only_posted_moves">All posted entries</t>
|
|
@@ -154,7 +205,7 @@
|
|
|
154
205
|
<div class="act_as_cell">
|
|
155
206
|
<t t-if="limit_hierarchy_level">
|
|
156
207
|
Level
|
|
157
|
-
<span t-
|
|
208
|
+
<span t-out="show_hierarchy_level" />
|
|
158
209
|
</t>
|
|
159
210
|
<t t-if="not limit_hierarchy_level">No limit</t>
|
|
160
211
|
</div>
|
|
@@ -220,7 +271,7 @@
|
|
|
220
271
|
res-model="account.account"
|
|
221
272
|
view-type="form"
|
|
222
273
|
>
|
|
223
|
-
<t t-
|
|
274
|
+
<t t-out="balance['code']" />
|
|
224
275
|
</span>
|
|
225
276
|
</div>
|
|
226
277
|
<!-- ## Account/Partner-->
|
|
@@ -230,7 +281,7 @@
|
|
|
230
281
|
res-model="account.account"
|
|
231
282
|
view-type="form"
|
|
232
283
|
>
|
|
233
|
-
<t t-
|
|
284
|
+
<t t-out="balance['name']" />
|
|
234
285
|
</span>
|
|
235
286
|
</div>
|
|
236
287
|
</t>
|
|
@@ -252,7 +303,7 @@
|
|
|
252
303
|
res-model="account.group"
|
|
253
304
|
view-type="form"
|
|
254
305
|
>
|
|
255
|
-
<t t-
|
|
306
|
+
<t t-out="balance['name']" />
|
|
256
307
|
</span>
|
|
257
308
|
</div>
|
|
258
309
|
</t>
|
|
@@ -265,7 +316,7 @@
|
|
|
265
316
|
res-model="res.partner"
|
|
266
317
|
view-type="form"
|
|
267
318
|
>
|
|
268
|
-
<t t-
|
|
319
|
+
<t t-out="partners_data[partner_id]['name']" />
|
|
269
320
|
</span>
|
|
270
321
|
</div>
|
|
271
322
|
</t>
|
|
@@ -279,11 +330,11 @@
|
|
|
279
330
|
('date', '<', date_from)]"
|
|
280
331
|
/>
|
|
281
332
|
<span
|
|
282
|
-
t-att-domain="domain+aml_domain_common"
|
|
333
|
+
t-att-domain="domain+aml_domain_common+aml_domain_extra"
|
|
283
334
|
res-model="account.move.line"
|
|
284
335
|
>
|
|
285
336
|
<t
|
|
286
|
-
t-
|
|
337
|
+
t-out="balance['initial_balance']"
|
|
287
338
|
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
288
339
|
/>
|
|
289
340
|
</span>
|
|
@@ -335,11 +386,11 @@
|
|
|
335
386
|
('debit', '<>', 0)]"
|
|
336
387
|
/>
|
|
337
388
|
<span
|
|
338
|
-
t-att-domain="domain+aml_domain_common"
|
|
389
|
+
t-att-domain="domain+aml_domain_common+aml_domain_extra"
|
|
339
390
|
res-model="account.move.line"
|
|
340
391
|
>
|
|
341
392
|
<t
|
|
342
|
-
t-
|
|
393
|
+
t-out="balance['debit']"
|
|
343
394
|
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
344
395
|
/>
|
|
345
396
|
</span>
|
|
@@ -395,11 +446,11 @@
|
|
|
395
446
|
('credit', '<>', 0)]"
|
|
396
447
|
/>
|
|
397
448
|
<span
|
|
398
|
-
t-att-domain="domain+aml_domain_common"
|
|
449
|
+
t-att-domain="domain+aml_domain_common+aml_domain_extra"
|
|
399
450
|
res-model="account.move.line"
|
|
400
451
|
>
|
|
401
452
|
<t
|
|
402
|
-
t-
|
|
453
|
+
t-out="balance['credit']"
|
|
403
454
|
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
404
455
|
/>
|
|
405
456
|
</span>
|
|
@@ -455,11 +506,11 @@
|
|
|
455
506
|
('balance', '<>', 0)]"
|
|
456
507
|
/>
|
|
457
508
|
<span
|
|
458
|
-
t-att-domain="domain+aml_domain_common"
|
|
509
|
+
t-att-domain="domain+aml_domain_common+aml_domain_extra"
|
|
459
510
|
res-model="account.move.line"
|
|
460
511
|
>
|
|
461
512
|
<t
|
|
462
|
-
t-
|
|
513
|
+
t-out="balance['balance']"
|
|
463
514
|
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
464
515
|
/>
|
|
465
516
|
</span>
|
|
@@ -512,11 +563,11 @@
|
|
|
512
563
|
('date', '<=', date_to)]"
|
|
513
564
|
/>
|
|
514
565
|
<span
|
|
515
|
-
t-att-domain="domain+aml_domain_common"
|
|
566
|
+
t-att-domain="domain+aml_domain_common+aml_domain_extra"
|
|
516
567
|
res-model="account.move.line"
|
|
517
568
|
>
|
|
518
569
|
<t
|
|
519
|
-
t-
|
|
570
|
+
t-out="balance['ending_balance']"
|
|
520
571
|
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
521
572
|
/>
|
|
522
573
|
</span>
|
|
@@ -549,7 +600,7 @@
|
|
|
549
600
|
res-model="account.move.line"
|
|
550
601
|
>
|
|
551
602
|
<t
|
|
552
|
-
t-
|
|
603
|
+
t-out="total_amount[account_id][partner_id]['ending_balance']"
|
|
553
604
|
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
554
605
|
/>
|
|
555
606
|
</span>
|
|
@@ -570,11 +621,11 @@
|
|
|
570
621
|
t-value="[('account_id', '=', balance['id'])]"
|
|
571
622
|
/>
|
|
572
623
|
<span
|
|
573
|
-
t-att-domain="domain+aml_domain_common"
|
|
624
|
+
t-att-domain="domain+aml_domain_common+aml_domain_extra"
|
|
574
625
|
res-model="account.move.line"
|
|
575
626
|
>
|
|
576
627
|
<t
|
|
577
|
-
t-
|
|
628
|
+
t-out="balance['initial_currency_balance']"
|
|
578
629
|
t-options="{'widget': 'monetary', 'display_currency': balance_currency}"
|
|
579
630
|
/>
|
|
580
631
|
</span>
|
|
@@ -629,7 +680,7 @@
|
|
|
629
680
|
t-value="[('account_id', '=', balance['id'])]"
|
|
630
681
|
/>
|
|
631
682
|
<span
|
|
632
|
-
t-att-domain="domain+aml_domain_common"
|
|
683
|
+
t-att-domain="domain+aml_domain_common+aml_domain_extra"
|
|
633
684
|
res-model="account.move.line"
|
|
634
685
|
>
|
|
635
686
|
<t
|
|
@@ -835,44 +886,101 @@
|
|
|
835
886
|
<div class="act_as_row labels" style="font-weight: bold;">
|
|
836
887
|
<!--## date-->
|
|
837
888
|
<div class="act_as_cell first_column" style="width: 33%;">
|
|
838
|
-
<
|
|
839
|
-
|
|
840
|
-
|
|
889
|
+
<t
|
|
890
|
+
t-if="grouped_by and balance['type'] in ('analytic_account_type', 'total')"
|
|
891
|
+
>
|
|
892
|
+
<span t-out="balance['name']" />
|
|
893
|
+
</t>
|
|
894
|
+
<t t-else="">
|
|
895
|
+
<span t-out="accounts_data[account_id]['code']" />
|
|
896
|
+
-
|
|
897
|
+
<span t-out="accounts_data[account_id]['name']" />
|
|
898
|
+
</t>
|
|
841
899
|
</div>
|
|
842
900
|
<!--## Initial Balance-->
|
|
843
901
|
<div class="act_as_cell amount" style="width: 9%;">
|
|
844
|
-
<
|
|
845
|
-
t-
|
|
846
|
-
|
|
847
|
-
|
|
902
|
+
<t
|
|
903
|
+
t-if="grouped_by and balance['type'] in ('analytic_account_type', 'total')"
|
|
904
|
+
>
|
|
905
|
+
<span
|
|
906
|
+
t-out="balance['initial_balance']"
|
|
907
|
+
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
908
|
+
/>
|
|
909
|
+
</t>
|
|
910
|
+
<t t-else="">
|
|
911
|
+
<span
|
|
912
|
+
t-out="total_amount[account_id]['initial_balance']"
|
|
913
|
+
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
914
|
+
/>
|
|
915
|
+
</t>
|
|
848
916
|
</div>
|
|
849
917
|
<!--## Debit-->
|
|
850
918
|
<div class="act_as_cell amount" style="width: 9%;">
|
|
851
|
-
<
|
|
852
|
-
t-
|
|
853
|
-
|
|
854
|
-
|
|
919
|
+
<t
|
|
920
|
+
t-if="grouped_by and balance['type'] in ('analytic_account_type', 'total')"
|
|
921
|
+
>
|
|
922
|
+
<span
|
|
923
|
+
t-out="balance['debit']"
|
|
924
|
+
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
925
|
+
/>
|
|
926
|
+
</t>
|
|
927
|
+
<t t-else="">
|
|
928
|
+
<span
|
|
929
|
+
t-out="total_amount[account_id]['debit']"
|
|
930
|
+
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
931
|
+
/>
|
|
932
|
+
</t>
|
|
855
933
|
</div>
|
|
856
934
|
<!--## Credit-->
|
|
857
935
|
<div class="act_as_cell amount" style="width: 9%;">
|
|
858
|
-
<
|
|
859
|
-
t-
|
|
860
|
-
|
|
861
|
-
|
|
936
|
+
<t
|
|
937
|
+
t-if="grouped_by and balance['type'] in ('analytic_account_type', 'total')"
|
|
938
|
+
>
|
|
939
|
+
<span
|
|
940
|
+
t-out="balance['credit']"
|
|
941
|
+
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
942
|
+
/>
|
|
943
|
+
</t>
|
|
944
|
+
<t t-else="">
|
|
945
|
+
<span
|
|
946
|
+
t-out="total_amount[account_id]['credit']"
|
|
947
|
+
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
948
|
+
/>
|
|
949
|
+
</t>
|
|
862
950
|
</div>
|
|
863
951
|
<!--## Period balance-->
|
|
864
952
|
<div class="act_as_cell amount" style="width: 9%;">
|
|
865
|
-
<
|
|
866
|
-
t-
|
|
867
|
-
|
|
868
|
-
|
|
953
|
+
<t
|
|
954
|
+
t-if="grouped_by and balance['type'] in ('analytic_account_type', 'total')"
|
|
955
|
+
>
|
|
956
|
+
<span
|
|
957
|
+
t-out="balance['balance']"
|
|
958
|
+
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
959
|
+
/>
|
|
960
|
+
</t>
|
|
961
|
+
<t t-else="">
|
|
962
|
+
<span
|
|
963
|
+
t-out="total_amount[account_id]['balance']"
|
|
964
|
+
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
965
|
+
/>
|
|
966
|
+
</t>
|
|
869
967
|
</div>
|
|
870
968
|
<!--## Ending balance-->
|
|
871
969
|
<div class="act_as_cell amount" style="width: 9%;">
|
|
872
|
-
<
|
|
873
|
-
t-
|
|
874
|
-
|
|
875
|
-
|
|
970
|
+
<t
|
|
971
|
+
t-if="grouped_by and balance['type'] in ('analytic_account_type', 'total')"
|
|
972
|
+
>
|
|
973
|
+
<span
|
|
974
|
+
t-out="balance['ending_balance']"
|
|
975
|
+
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
976
|
+
/>
|
|
977
|
+
</t>
|
|
978
|
+
<t t-else="">
|
|
979
|
+
<span
|
|
980
|
+
t-out="total_amount[account_id]['ending_balance']"
|
|
981
|
+
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
982
|
+
/>
|
|
983
|
+
</t>
|
|
876
984
|
</div>
|
|
877
985
|
<t t-if="foreign_currency">
|
|
878
986
|
<!--## amount_total_due_currency-->
|
|
@@ -218,10 +218,39 @@ class TrialBalanceReport(models.AbstractModel):
|
|
|
218
218
|
total_amount[acc_id]["initial_balance"] = 0.0
|
|
219
219
|
if foreign_currency:
|
|
220
220
|
total_amount[acc_id]["initial_currency_balance"] = 0.0
|
|
221
|
+
if "__context" in tb and "group_by" in tb["__context"]:
|
|
222
|
+
group_by = tb["__context"]["group_by"][0]
|
|
223
|
+
gb_data = {}
|
|
224
|
+
tb_grouped = self.env["account.move.line"].read_group(
|
|
225
|
+
domain=tb["__domain"],
|
|
226
|
+
fields=[
|
|
227
|
+
group_by,
|
|
228
|
+
"debit",
|
|
229
|
+
"credit",
|
|
230
|
+
"balance",
|
|
231
|
+
"amount_currency:sum",
|
|
232
|
+
],
|
|
233
|
+
groupby=[group_by],
|
|
234
|
+
)
|
|
235
|
+
for tb2 in tb_grouped:
|
|
236
|
+
gb_id = tb2[group_by][0] if tb2[group_by] else 0
|
|
237
|
+
gb_data[gb_id] = self._prepare_total_amount(tb2, foreign_currency)
|
|
238
|
+
gb_data[gb_id]["credit"] = tb2["credit"]
|
|
239
|
+
gb_data[gb_id]["debit"] = tb2["debit"]
|
|
240
|
+
gb_data[gb_id]["balance"] = tb2["balance"]
|
|
241
|
+
gb_data[gb_id]["initial_balance"] = 0.0
|
|
242
|
+
if foreign_currency:
|
|
243
|
+
gb_data[gb_id]["initial_currency_balance"] = 0.0
|
|
244
|
+
total_amount[acc_id]["group_by"] = group_by
|
|
245
|
+
total_amount[acc_id]["group_by_data"] = gb_data
|
|
221
246
|
for tb in tb_initial_acc:
|
|
222
247
|
acc_id = tb["account_id"]
|
|
223
248
|
if acc_id not in total_amount.keys():
|
|
224
249
|
total_amount[acc_id] = self._prepare_total_amount(tb, foreign_currency)
|
|
250
|
+
total_amount[acc_id]["group_by_data"] = {}
|
|
251
|
+
total_amount[acc_id]["group_by_data"][0] = self._prepare_total_amount(
|
|
252
|
+
tb, foreign_currency
|
|
253
|
+
)
|
|
225
254
|
else:
|
|
226
255
|
total_amount[acc_id]["initial_balance"] = tb["balance"]
|
|
227
256
|
total_amount[acc_id]["ending_balance"] += tb["balance"]
|
|
@@ -232,6 +261,28 @@ class TrialBalanceReport(models.AbstractModel):
|
|
|
232
261
|
total_amount[acc_id]["ending_currency_balance"] += round(
|
|
233
262
|
tb["amount_currency"], 2
|
|
234
263
|
)
|
|
264
|
+
if "group_by_data" in tb:
|
|
265
|
+
for gb_key in list(tb["group_by_data"]):
|
|
266
|
+
tb2 = tb["group_by_data"][gb_key]
|
|
267
|
+
if "group_by_data" in total_amount[acc_id]:
|
|
268
|
+
if gb_key not in total_amount[acc_id]["group_by_data"]:
|
|
269
|
+
total_amount[acc_id]["group_by_data"][
|
|
270
|
+
gb_key
|
|
271
|
+
] = self._prepare_total_amount(tb2, foreign_currency)
|
|
272
|
+
else:
|
|
273
|
+
total_amount[acc_id]["group_by_data"][gb_key][
|
|
274
|
+
"initial_balance"
|
|
275
|
+
] = tb2["balance"]
|
|
276
|
+
total_amount[acc_id]["group_by_data"][gb_key][
|
|
277
|
+
"ending_balance"
|
|
278
|
+
] += tb2["balance"]
|
|
279
|
+
if foreign_currency:
|
|
280
|
+
total_amount[acc_id]["group_by_data"][gb_key][
|
|
281
|
+
"initial_currency_balance"
|
|
282
|
+
] = round(tb2["amount_currency"], 2)
|
|
283
|
+
total_amount[acc_id]["group_by_data"][gb_key][
|
|
284
|
+
"ending_currency_balance"
|
|
285
|
+
] += round(tb2["amount_currency"], 2)
|
|
235
286
|
return total_amount
|
|
236
287
|
|
|
237
288
|
@api.model
|
|
@@ -350,6 +401,7 @@ class TrialBalanceReport(models.AbstractModel):
|
|
|
350
401
|
for account_id in accounts_to_remove:
|
|
351
402
|
del total_amount[account_id]
|
|
352
403
|
|
|
404
|
+
# flake8: noqa: C901
|
|
353
405
|
@api.model
|
|
354
406
|
def _get_data(
|
|
355
407
|
self,
|
|
@@ -365,6 +417,7 @@ class TrialBalanceReport(models.AbstractModel):
|
|
|
365
417
|
hide_account_at_0,
|
|
366
418
|
unaffected_earnings_account,
|
|
367
419
|
fy_start_date,
|
|
420
|
+
grouped_by,
|
|
368
421
|
):
|
|
369
422
|
accounts_domain = [("company_id", "=", company_id)]
|
|
370
423
|
if account_ids:
|
|
@@ -378,6 +431,9 @@ class TrialBalanceReport(models.AbstractModel):
|
|
|
378
431
|
tb_initial_acc.append(
|
|
379
432
|
{"account_id": account.id, "balance": 0.0, "amount_currency": 0.0}
|
|
380
433
|
)
|
|
434
|
+
groupby_fields = ["account_id"]
|
|
435
|
+
if grouped_by:
|
|
436
|
+
groupby_fields.append("analytic_account_ids")
|
|
381
437
|
initial_domain_bs = self._get_initial_balances_bs_ml_domain(
|
|
382
438
|
account_ids,
|
|
383
439
|
journal_ids,
|
|
@@ -390,7 +446,7 @@ class TrialBalanceReport(models.AbstractModel):
|
|
|
390
446
|
tb_initial_acc_bs = self.env["account.move.line"].read_group(
|
|
391
447
|
domain=initial_domain_bs,
|
|
392
448
|
fields=["account_id", "balance", "amount_currency:sum"],
|
|
393
|
-
groupby=
|
|
449
|
+
groupby=groupby_fields,
|
|
394
450
|
)
|
|
395
451
|
initial_domain_pl = self._get_initial_balances_pl_ml_domain(
|
|
396
452
|
account_ids,
|
|
@@ -405,7 +461,7 @@ class TrialBalanceReport(models.AbstractModel):
|
|
|
405
461
|
tb_initial_acc_pl = self.env["account.move.line"].read_group(
|
|
406
462
|
domain=initial_domain_pl,
|
|
407
463
|
fields=["account_id", "balance", "amount_currency:sum"],
|
|
408
|
-
groupby=
|
|
464
|
+
groupby=groupby_fields,
|
|
409
465
|
)
|
|
410
466
|
tb_initial_acc_rg = tb_initial_acc_bs + tb_initial_acc_pl
|
|
411
467
|
for account_rg in tb_initial_acc_rg:
|
|
@@ -419,6 +475,22 @@ class TrialBalanceReport(models.AbstractModel):
|
|
|
419
475
|
if element:
|
|
420
476
|
element[0]["balance"] += account_rg["balance"]
|
|
421
477
|
element[0]["amount_currency"] += account_rg["amount_currency"]
|
|
478
|
+
if "__context" in account_rg and "group_by" in account_rg["__context"]:
|
|
479
|
+
group_by = account_rg["__context"]["group_by"][0]
|
|
480
|
+
gb_data = {}
|
|
481
|
+
account_rg_grouped = self.env["account.move.line"].read_group(
|
|
482
|
+
domain=account_rg["__domain"],
|
|
483
|
+
fields=[group_by, "balance", "amount_currency:sum"],
|
|
484
|
+
groupby=[group_by],
|
|
485
|
+
)
|
|
486
|
+
for a_rg2 in account_rg_grouped:
|
|
487
|
+
gb_id = a_rg2[group_by][0] if a_rg2[group_by] else 0
|
|
488
|
+
gb_data[gb_id] = {
|
|
489
|
+
"balance": a_rg2["balance"],
|
|
490
|
+
"amount_currency": a_rg2["amount_currency"],
|
|
491
|
+
}
|
|
492
|
+
element[0]["group_by"] = group_by
|
|
493
|
+
element[0]["group_by_data"] = gb_data
|
|
422
494
|
if hide_account_at_0:
|
|
423
495
|
tb_initial_acc = [p for p in tb_initial_acc if p["balance"] != 0]
|
|
424
496
|
|
|
@@ -435,7 +507,7 @@ class TrialBalanceReport(models.AbstractModel):
|
|
|
435
507
|
tb_period_acc = self.env["account.move.line"].read_group(
|
|
436
508
|
domain=period_domain,
|
|
437
509
|
fields=["account_id", "debit", "credit", "balance", "amount_currency:sum"],
|
|
438
|
-
groupby=
|
|
510
|
+
groupby=groupby_fields,
|
|
439
511
|
)
|
|
440
512
|
|
|
441
513
|
if show_partner_details:
|
|
@@ -492,8 +564,22 @@ class TrialBalanceReport(models.AbstractModel):
|
|
|
492
564
|
total_amount[unaffected_id]["debit"] = 0.0
|
|
493
565
|
total_amount[unaffected_id]["ending_balance"] = 0.0
|
|
494
566
|
if foreign_currency:
|
|
567
|
+
total_amount[unaffected_id]["amount_currency"] = 0
|
|
495
568
|
total_amount[unaffected_id]["initial_currency_balance"] = 0.0
|
|
496
569
|
total_amount[unaffected_id]["ending_currency_balance"] = 0.0
|
|
570
|
+
if grouped_by:
|
|
571
|
+
total_amount[unaffected_id]["group_by"] = grouped_by
|
|
572
|
+
total_amount[unaffected_id]["group_by_data"] = {}
|
|
573
|
+
# Fix to prevent side effects
|
|
574
|
+
if (
|
|
575
|
+
foreign_currency
|
|
576
|
+
and "amount_currency" not in total_amount[unaffected_id]
|
|
577
|
+
):
|
|
578
|
+
total_amount[unaffected_id]["amount_currency"] = 0
|
|
579
|
+
group_by_data_item = self._prepare_total_amount(
|
|
580
|
+
total_amount[unaffected_id], foreign_currency
|
|
581
|
+
)
|
|
582
|
+
total_amount[unaffected_id]["group_by_data"][0] = group_by_data_item
|
|
497
583
|
accounts_data = self._get_accounts_data(accounts_ids)
|
|
498
584
|
(
|
|
499
585
|
pl_initial_balance,
|
|
@@ -518,8 +604,88 @@ class TrialBalanceReport(models.AbstractModel):
|
|
|
518
604
|
total_amount[unaffected_id][
|
|
519
605
|
"initial_currency_balance"
|
|
520
606
|
] += pl_initial_currency_balance
|
|
607
|
+
if grouped_by:
|
|
608
|
+
total_amount[unaffected_id]["group_by_data"][0][
|
|
609
|
+
"ending_balance"
|
|
610
|
+
] = total_amount[unaffected_id]["ending_balance"]
|
|
611
|
+
total_amount[unaffected_id]["group_by_data"][0][
|
|
612
|
+
"initial_balance"
|
|
613
|
+
] = total_amount[unaffected_id]["initial_balance"]
|
|
614
|
+
if foreign_currency:
|
|
615
|
+
total_amount[unaffected_id]["group_by_data"][0][
|
|
616
|
+
"ending_currency_balance"
|
|
617
|
+
] = total_amount[unaffected_id]["ending_currency_balance"]
|
|
618
|
+
total_amount[unaffected_id]["group_by_data"][0][
|
|
619
|
+
"initial_currency_balance"
|
|
620
|
+
] = total_amount[unaffected_id]["initial_currency_balance"]
|
|
521
621
|
return total_amount, accounts_data, partners_data
|
|
522
622
|
|
|
623
|
+
def _get_data_grouped(self, total_amount, accounts_data, foreign_currency):
|
|
624
|
+
"""Get the data grouped by analytical account instead of as used
|
|
625
|
+
"without grouping".
|
|
626
|
+
"""
|
|
627
|
+
trial_balance = {}
|
|
628
|
+
total_amount_grouped = {"type": "total", "name": _("TOTAL")}
|
|
629
|
+
f_names = [
|
|
630
|
+
"credit",
|
|
631
|
+
"debit",
|
|
632
|
+
"balance",
|
|
633
|
+
"initial_balance",
|
|
634
|
+
"ending_balance",
|
|
635
|
+
"initial_currency_balance",
|
|
636
|
+
"ending_currency_balance",
|
|
637
|
+
]
|
|
638
|
+
for f_name in f_names:
|
|
639
|
+
total_amount_grouped[f_name] = 0
|
|
640
|
+
for a_id in list(total_amount.keys()):
|
|
641
|
+
for key in list(total_amount[a_id]["group_by_data"].keys()):
|
|
642
|
+
total_amount_item2 = total_amount[a_id]["group_by_data"][key]
|
|
643
|
+
if key not in trial_balance:
|
|
644
|
+
trial_balance[key] = {}
|
|
645
|
+
for f_name in f_names:
|
|
646
|
+
if f_name in total_amount_item2:
|
|
647
|
+
trial_balance[key][f_name] = 0
|
|
648
|
+
trial_balance[key]["account_data"] = {}
|
|
649
|
+
for f_name in f_names:
|
|
650
|
+
if f_name in total_amount_item2:
|
|
651
|
+
trial_balance[key][f_name] += total_amount_item2[f_name]
|
|
652
|
+
# Prepare data_item
|
|
653
|
+
data_item = total_amount_item2
|
|
654
|
+
data_item["type"] = "account_type"
|
|
655
|
+
data_item["id"] = a_id
|
|
656
|
+
data_item["name"] = accounts_data[a_id]["name"]
|
|
657
|
+
data_item["code"] = accounts_data[a_id]["code"]
|
|
658
|
+
if foreign_currency:
|
|
659
|
+
data_item["currency_id"] = accounts_data[a_id]["currency_id"]
|
|
660
|
+
data_item["currency_name"] = accounts_data[a_id]["currency_name"]
|
|
661
|
+
trial_balance[key]["account_data"][a_id] = data_item
|
|
662
|
+
analytic_account_ids = list(trial_balance.keys())
|
|
663
|
+
aa_data = {}
|
|
664
|
+
aaa_model = self.env["account.analytic.account"].with_context(active_test=False)
|
|
665
|
+
analytic_accounts = aaa_model.search_read(
|
|
666
|
+
domain=[("id", "in", analytic_account_ids)],
|
|
667
|
+
fields=["display_name"],
|
|
668
|
+
)
|
|
669
|
+
for aa in analytic_accounts:
|
|
670
|
+
aa_data[aa["id"]] = aa
|
|
671
|
+
for aa_id in analytic_account_ids:
|
|
672
|
+
trial_balance[aa_id]["id"] = aa_id
|
|
673
|
+
trial_balance[aa_id]["type"] = "analytic_account_type"
|
|
674
|
+
trial_balance[aa_id]["name"] = (
|
|
675
|
+
aa_data[aa_id]["display_name"]
|
|
676
|
+
if aa_id in aa_data
|
|
677
|
+
else _("Without analytic account")
|
|
678
|
+
)
|
|
679
|
+
account_data_item = list(trial_balance[aa_id]["account_data"].values())
|
|
680
|
+
account_data_item = sorted(account_data_item, key=lambda k: k["code"])
|
|
681
|
+
trial_balance[aa_id]["account_data"] = account_data_item
|
|
682
|
+
for f_name in f_names:
|
|
683
|
+
if f_name in trial_balance[aa_id]:
|
|
684
|
+
total_amount_grouped[f_name] += trial_balance[aa_id][f_name]
|
|
685
|
+
trial_balance = list(trial_balance.values())
|
|
686
|
+
trial_balance = sorted(trial_balance, key=lambda k: k["name"])
|
|
687
|
+
return trial_balance, total_amount_grouped
|
|
688
|
+
|
|
523
689
|
def _get_hierarchy_groups(self, group_ids, groups_data, foreign_currency):
|
|
524
690
|
for group_id in group_ids:
|
|
525
691
|
parent_id = groups_data[group_id]["parent_id"]
|
|
@@ -692,6 +858,7 @@ class TrialBalanceReport(models.AbstractModel):
|
|
|
692
858
|
only_posted_moves = data["only_posted_moves"]
|
|
693
859
|
unaffected_earnings_account = data["unaffected_earnings_account"]
|
|
694
860
|
fy_start_date = data["fy_start_date"]
|
|
861
|
+
grouped_by = data["grouped_by"]
|
|
695
862
|
total_amount, accounts_data, partners_data = self._get_data(
|
|
696
863
|
account_ids,
|
|
697
864
|
journal_ids,
|
|
@@ -705,7 +872,14 @@ class TrialBalanceReport(models.AbstractModel):
|
|
|
705
872
|
hide_account_at_0,
|
|
706
873
|
unaffected_earnings_account,
|
|
707
874
|
fy_start_date,
|
|
875
|
+
grouped_by,
|
|
708
876
|
)
|
|
877
|
+
trial_balance_grouped = False
|
|
878
|
+
total_amount_grouped = False
|
|
879
|
+
if grouped_by:
|
|
880
|
+
trial_balance_grouped, total_amount_grouped = self._get_data_grouped(
|
|
881
|
+
total_amount, accounts_data, foreign_currency
|
|
882
|
+
)
|
|
709
883
|
trial_balance = []
|
|
710
884
|
if not show_partner_details:
|
|
711
885
|
for account_id in accounts_data.keys():
|
|
@@ -716,6 +890,16 @@ class TrialBalanceReport(models.AbstractModel):
|
|
|
716
890
|
"debit": total_amount[account_id]["debit"],
|
|
717
891
|
"balance": total_amount[account_id]["balance"],
|
|
718
892
|
"ending_balance": total_amount[account_id]["ending_balance"],
|
|
893
|
+
"group_by": (
|
|
894
|
+
total_amount[account_id]["group_by"]
|
|
895
|
+
if "group_by" in total_amount[account_id]
|
|
896
|
+
else False
|
|
897
|
+
),
|
|
898
|
+
"group_by_data": (
|
|
899
|
+
total_amount[account_id]["group_by_data"]
|
|
900
|
+
if "group_by_data" in total_amount[account_id]
|
|
901
|
+
else False
|
|
902
|
+
),
|
|
719
903
|
"type": "account_type",
|
|
720
904
|
}
|
|
721
905
|
)
|
|
@@ -769,9 +953,12 @@ class TrialBalanceReport(models.AbstractModel):
|
|
|
769
953
|
"show_hierarchy": show_hierarchy,
|
|
770
954
|
"hide_parent_hierarchy_level": data["hide_parent_hierarchy_level"],
|
|
771
955
|
"trial_balance": trial_balance,
|
|
956
|
+
"trial_balance_grouped": trial_balance_grouped,
|
|
772
957
|
"total_amount": total_amount,
|
|
958
|
+
"total_amount_grouped": total_amount_grouped,
|
|
773
959
|
"accounts_data": accounts_data,
|
|
774
960
|
"partners_data": partners_data,
|
|
775
961
|
"show_hierarchy_level": show_hierarchy_level,
|
|
776
962
|
"currency_model": self.env["res.currency"],
|
|
963
|
+
"grouped_by": grouped_by,
|
|
777
964
|
}
|
|
@@ -166,7 +166,9 @@ class TrialBalanceXslx(models.AbstractModel):
|
|
|
166
166
|
"report.account_financial_report.trial_balance"
|
|
167
167
|
]._get_report_values(report, data)
|
|
168
168
|
trial_balance = res_data["trial_balance"]
|
|
169
|
+
trial_balance_grouped = res_data["trial_balance_grouped"]
|
|
169
170
|
total_amount = res_data["total_amount"]
|
|
171
|
+
total_amount_grouped = res_data["total_amount_grouped"]
|
|
170
172
|
partners_data = res_data["partners_data"]
|
|
171
173
|
accounts_data = res_data["accounts_data"]
|
|
172
174
|
show_hierarchy = res_data["show_hierarchy"]
|
|
@@ -175,22 +177,40 @@ class TrialBalanceXslx(models.AbstractModel):
|
|
|
175
177
|
foreign_currency = res_data["foreign_currency"]
|
|
176
178
|
limit_hierarchy_level = res_data["limit_hierarchy_level"]
|
|
177
179
|
hide_parent_hierarchy_level = res_data["hide_parent_hierarchy_level"]
|
|
180
|
+
grouped_by = res_data["grouped_by"]
|
|
178
181
|
if not show_partner_details:
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
182
|
+
if grouped_by:
|
|
183
|
+
# For each grouped
|
|
184
|
+
for grouped_item in trial_balance_grouped:
|
|
185
|
+
self.write_array_title(grouped_item["name"], report_data)
|
|
186
|
+
# Display array header for account lines
|
|
187
|
+
self.write_array_header(report_data)
|
|
188
|
+
# For each account
|
|
189
|
+
for balance in grouped_item["account_data"]:
|
|
190
|
+
self.write_line_from_dict(balance, report_data)
|
|
191
|
+
# Footer with totals
|
|
192
|
+
grouped_item["code"] = ""
|
|
193
|
+
grouped_item["currency_id"] = False
|
|
194
|
+
self.write_account_footer(grouped_item, _("Total"), report_data)
|
|
195
|
+
report_data["row_pos"] += 1
|
|
196
|
+
# Last line with totals
|
|
197
|
+
total_amount_grouped["currency_id"] = False
|
|
198
|
+
total_amount_grouped["code"] = ""
|
|
199
|
+
self.write_account_footer(total_amount_grouped, _("TOTAL"), report_data)
|
|
200
|
+
else:
|
|
201
|
+
# Display array header for account lines
|
|
202
|
+
self.write_array_header(report_data)
|
|
203
|
+
# For each account
|
|
204
|
+
for balance in trial_balance:
|
|
205
|
+
if show_hierarchy and limit_hierarchy_level:
|
|
206
|
+
if show_hierarchy_level > balance["level"] and (
|
|
207
|
+
not hide_parent_hierarchy_level
|
|
208
|
+
or (show_hierarchy_level - 1) == balance["level"]
|
|
209
|
+
):
|
|
210
|
+
# Display account lines
|
|
211
|
+
self.write_line_from_dict(balance, report_data)
|
|
212
|
+
else:
|
|
191
213
|
self.write_line_from_dict(balance, report_data)
|
|
192
|
-
else:
|
|
193
|
-
self.write_line_from_dict(balance, report_data)
|
|
194
214
|
else:
|
|
195
215
|
for account_id in total_amount:
|
|
196
216
|
# Write account title
|
|
@@ -367,7 +367,7 @@ ul.auto-toc {
|
|
|
367
367
|
!! This file is generated by oca-gen-addon-readme !!
|
|
368
368
|
!! changes will be overwritten. !!
|
|
369
369
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
370
|
-
!! source digest: sha256:
|
|
370
|
+
!! source digest: sha256:20ae22a108ec709b3bf88351495514d82435eb77953df3f3164d48b9c58886cc
|
|
371
371
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
|
372
372
|
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/account-financial-reporting/tree/17.0/account_financial_report"><img alt="OCA/account-financial-reporting" src="https://img.shields.io/badge/github-OCA%2Faccount--financial--reporting-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-financial-reporting-17-0/account-financial-reporting-17-0-account_financial_report"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/account-financial-reporting&target_branch=17.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
|
|
373
373
|
<p>This module adds a set of financial reports. They are accessible under
|
|
@@ -68,6 +68,15 @@ class TrialBalanceReportWizard(models.TransientModel):
|
|
|
68
68
|
comodel_name="account.account",
|
|
69
69
|
help="Ending account in a range",
|
|
70
70
|
)
|
|
71
|
+
grouped_by = fields.Selection(
|
|
72
|
+
selection=[("analytic_account", "Analytic Account")], default=False
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
@api.onchange("grouped_by")
|
|
76
|
+
def onchange_grouped_by(self):
|
|
77
|
+
if self.grouped_by == "analytic_account":
|
|
78
|
+
self.show_partner_details = False
|
|
79
|
+
self.show_hierarchy = False
|
|
71
80
|
|
|
72
81
|
@api.onchange("account_code_from", "account_code_to")
|
|
73
82
|
def on_change_account_range(self):
|
|
@@ -208,6 +217,7 @@ class TrialBalanceReportWizard(models.TransientModel):
|
|
|
208
217
|
"""Handle partners change."""
|
|
209
218
|
if self.show_partner_details:
|
|
210
219
|
self.receivable_accounts_only = self.payable_accounts_only = True
|
|
220
|
+
self.grouped_by = False
|
|
211
221
|
else:
|
|
212
222
|
self.receivable_accounts_only = self.payable_accounts_only = False
|
|
213
223
|
|
|
@@ -264,6 +274,7 @@ class TrialBalanceReportWizard(models.TransientModel):
|
|
|
264
274
|
"show_partner_details": self.show_partner_details,
|
|
265
275
|
"unaffected_earnings_account": self.unaffected_earnings_account.id,
|
|
266
276
|
"account_financial_report_lang": self.env.lang,
|
|
277
|
+
"grouped_by": self.grouped_by,
|
|
267
278
|
}
|
|
268
279
|
|
|
269
280
|
def _export(self, report_type):
|
|
@@ -6,6 +6,14 @@
|
|
|
6
6
|
<field name="model">trial.balance.report.wizard</field>
|
|
7
7
|
<field name="arch" type="xml">
|
|
8
8
|
<form>
|
|
9
|
+
<div
|
|
10
|
+
class="alert alert-warning"
|
|
11
|
+
role="alert"
|
|
12
|
+
invisible="grouped_by!='analytic_account'"
|
|
13
|
+
>
|
|
14
|
+
<i class="fa fa-exclamation-triangle mr-3" />
|
|
15
|
+
Duplicate amounts may be shown because more than one analytical account may be defined in the journal items.
|
|
16
|
+
</div>
|
|
9
17
|
<group name="main_info">
|
|
10
18
|
<field
|
|
11
19
|
name="company_id"
|
|
@@ -23,11 +31,16 @@
|
|
|
23
31
|
</group>
|
|
24
32
|
<group name="other_filters">
|
|
25
33
|
<field name="target_move" widget="radio" />
|
|
34
|
+
<field name="grouped_by" invisible="1" />
|
|
35
|
+
<field
|
|
36
|
+
name="grouped_by"
|
|
37
|
+
groups="analytic.group_analytic_accounting"
|
|
38
|
+
/>
|
|
26
39
|
<field name="hide_account_at_0" />
|
|
27
|
-
<field name="show_partner_details" />
|
|
40
|
+
<field name="show_partner_details" invisible="grouped_by" />
|
|
28
41
|
<field
|
|
29
42
|
name="show_hierarchy"
|
|
30
|
-
invisible="show_partner_details == True"
|
|
43
|
+
invisible="show_partner_details == True or grouped_by"
|
|
31
44
|
/>
|
|
32
45
|
<field
|
|
33
46
|
name="limit_hierarchy_level"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: odoo-addon-account_financial_report
|
|
3
|
-
Version: 17.0.1.
|
|
3
|
+
Version: 17.0.1.6.0
|
|
4
4
|
Requires-Python: >=3.10
|
|
5
5
|
Requires-Dist: odoo-addon-date_range>=17.0dev,<17.1dev
|
|
6
6
|
Requires-Dist: odoo-addon-report_xlsx>=17.0dev,<17.1dev
|
|
@@ -24,7 +24,7 @@ Account Financial Reports
|
|
|
24
24
|
!! This file is generated by oca-gen-addon-readme !!
|
|
25
25
|
!! changes will be overwritten. !!
|
|
26
26
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
27
|
-
!! source digest: sha256:
|
|
27
|
+
!! source digest: sha256:20ae22a108ec709b3bf88351495514d82435eb77953df3f3164d48b9c58886cc
|
|
28
28
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
29
29
|
|
|
30
30
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
odoo/addons/account_financial_report/README.rst,sha256=
|
|
1
|
+
odoo/addons/account_financial_report/README.rst,sha256=oO_0SsxTQXpZU7kqNXsuTuVKs4lxAqpwZBiqNZU6l-M,6888
|
|
2
2
|
odoo/addons/account_financial_report/__init__.py,sha256=YoL8hk5QxSifbFJL7gPzpOSk-3zB1OSHJBXyZK25G6Q,187
|
|
3
|
-
odoo/addons/account_financial_report/__manifest__.py,sha256=
|
|
3
|
+
odoo/addons/account_financial_report/__manifest__.py,sha256=JkCJTORSmkyiaMtEiyU-BYu3xmBTAMqUXrL0aAW6Yk8,2061
|
|
4
4
|
odoo/addons/account_financial_report/menuitems.xml,sha256=k20N6cNRlDsnPhc378MVs7jwzJhbbJQ2k-P3WdsmF_M,1206
|
|
5
5
|
odoo/addons/account_financial_report/reports.xml,sha256=c2KamS250rNzHUInjNwC0G2dhwiIqtYgbked51PtmVw,9254
|
|
6
|
-
odoo/addons/account_financial_report/i18n/account_financial_report.pot,sha256=
|
|
6
|
+
odoo/addons/account_financial_report/i18n/account_financial_report.pot,sha256=Q3cZhChfXXBRwDPbea4jPIptKFLMIIA3A_Ax964oS6E,83076
|
|
7
7
|
odoo/addons/account_financial_report/i18n/ar.po,sha256=kB3FxLaMBJfgiZh58x3M7jtbc_H8QoOQDBsymZ7ZuQ8,90247
|
|
8
8
|
odoo/addons/account_financial_report/i18n/ca.po,sha256=0XI9oBHiwBwj0JThhCnZ0QVX6jBQkU_EZE54X0LXj2E,87050
|
|
9
9
|
odoo/addons/account_financial_report/i18n/de.po,sha256=ioa7EX0xQijfCSWfyIWWb6Rm2APLqc17ASRsamnPz60,92934
|
|
@@ -47,8 +47,8 @@ odoo/addons/account_financial_report/report/journal_ledger.py,sha256=5_w9CmKy_eZ
|
|
|
47
47
|
odoo/addons/account_financial_report/report/journal_ledger_xlsx.py,sha256=kY6c-56HHauIyHAc7q5iNerz0gJQrp4ahI4OB1XeCT8,10060
|
|
48
48
|
odoo/addons/account_financial_report/report/open_items.py,sha256=kRM1kI17LI_LUj3zDFf4zxMtrqDXZAO9fbBAczr04PA,12218
|
|
49
49
|
odoo/addons/account_financial_report/report/open_items_xlsx.py,sha256=ERlxxsY2ERTimVEpskyp_XdsNuRW0XcFih7pJ2VF914,8366
|
|
50
|
-
odoo/addons/account_financial_report/report/trial_balance.py,sha256=
|
|
51
|
-
odoo/addons/account_financial_report/report/trial_balance_xlsx.py,sha256
|
|
50
|
+
odoo/addons/account_financial_report/report/trial_balance.py,sha256=uprKjuKc6qa2ku1CCSSSETrASJB2tGbmvjtHMdd5pg8,41724
|
|
51
|
+
odoo/addons/account_financial_report/report/trial_balance_xlsx.py,sha256=3wpHQ5JEM9g1pZpS9V7yo5Bed1JEKdMcfxzoq6I55_0,13246
|
|
52
52
|
odoo/addons/account_financial_report/report/vat_report.py,sha256=eLWr9mk1bOQUPH4FEGDssfhqEfAeZUJV5ryCf8YYea0,10117
|
|
53
53
|
odoo/addons/account_financial_report/report/vat_report_xlsx.py,sha256=ksdmiHDQZBBtk8fqkxSAS6-nFIyhT-wue4OTSV6xW9c,2307
|
|
54
54
|
odoo/addons/account_financial_report/report/templates/aged_partner_balance.xml,sha256=IfeLCmOIFqyaEsRnRihb0pXo-deJD41id5qgjE3_Ftw,41020
|
|
@@ -56,12 +56,12 @@ odoo/addons/account_financial_report/report/templates/general_ledger.xml,sha256=
|
|
|
56
56
|
odoo/addons/account_financial_report/report/templates/journal_ledger.xml,sha256=egiOr0CBtt7c4dY0Ghtf44LxF-ounCUjg77CUDUTpX0,21574
|
|
57
57
|
odoo/addons/account_financial_report/report/templates/layouts.xml,sha256=gCejPAn8GLrySSve8pGcs0fY5nr48C3mmyuoEJVZkJ4,1526
|
|
58
58
|
odoo/addons/account_financial_report/report/templates/open_items.xml,sha256=ku84beB5mDed_np9YhZuNygaUsdl1E-_AnlUQpq4Yy4,14834
|
|
59
|
-
odoo/addons/account_financial_report/report/templates/trial_balance.xml,sha256=
|
|
59
|
+
odoo/addons/account_financial_report/report/templates/trial_balance.xml,sha256=PPUAqjvhKiAbMNa4_oEw8l9YXXhPHEaZVmeLFLo7Tng,53386
|
|
60
60
|
odoo/addons/account_financial_report/report/templates/vat_report.xml,sha256=2WeL6Njr8LFBtERKmfyi3IH-J1frSO4Gpew-ruzuWNk,8128
|
|
61
61
|
odoo/addons/account_financial_report/security/ir.model.access.csv,sha256=S1VQLLwLeaOeAMYGqtoOqHUaZVrvDUVE4Z-0-SRjSGQ,1134
|
|
62
62
|
odoo/addons/account_financial_report/security/security.xml,sha256=YQCXbOuTGHCWGYwGnXMie_0tnWG5zYJGdoeey3o1xaw,382
|
|
63
63
|
odoo/addons/account_financial_report/static/description/icon.png,sha256=WW-eOIjW5-jo7tgBieNv6K2DUKMoHFSVctnp0htstHI,15230
|
|
64
|
-
odoo/addons/account_financial_report/static/description/index.html,sha256=
|
|
64
|
+
odoo/addons/account_financial_report/static/description/index.html,sha256=I_gq_9LVEeKXUZFseDCrzg4jx4VDQ2nciY0sT4SFdN8,19748
|
|
65
65
|
odoo/addons/account_financial_report/static/src/css/report.css,sha256=Cu4VmyY5tVXIddaojFDsg0Ute2qPCvKbLiimak_X9ik,2361
|
|
66
66
|
odoo/addons/account_financial_report/static/src/css/report_html.css,sha256=I1kX1RsThtjGNLOaNJEWCvMnB9iAFW6nGkcyFYZzJoA,135
|
|
67
67
|
odoo/addons/account_financial_report/static/src/js/report.esm.js,sha256=He488vLRaLv6IIuVaNSnNl8kJMIwJmMIv7GkmXyPJZs,2475
|
|
@@ -94,11 +94,11 @@ odoo/addons/account_financial_report/wizard/journal_ledger_wizard.py,sha256=CA44
|
|
|
94
94
|
odoo/addons/account_financial_report/wizard/journal_ledger_wizard_view.xml,sha256=s3go3x-VSCcr1xNAE3Lzj1FnymyS76hxzazuWtNc91k,2957
|
|
95
95
|
odoo/addons/account_financial_report/wizard/open_items_wizard.py,sha256=o7MMCsszyzkTCIAO44WgwXzjeLvIyYAbdx5lDn6iWUs,6604
|
|
96
96
|
odoo/addons/account_financial_report/wizard/open_items_wizard_view.xml,sha256=zLl1eq0LSSnS2S_1lzu3Lwzn2jN1iiyEcbAvjiKqcuw,4689
|
|
97
|
-
odoo/addons/account_financial_report/wizard/trial_balance_wizard.py,sha256=
|
|
98
|
-
odoo/addons/account_financial_report/wizard/trial_balance_wizard_view.xml,sha256=
|
|
97
|
+
odoo/addons/account_financial_report/wizard/trial_balance_wizard.py,sha256=YdJr9QeqH9p-AQhkYDWEuNVwxTCz5HSQRe3owx00szI,11224
|
|
98
|
+
odoo/addons/account_financial_report/wizard/trial_balance_wizard_view.xml,sha256=io5d8plYx9YktR79IJMoENQU1CV1HPwdBVamAN4zt7Y,7277
|
|
99
99
|
odoo/addons/account_financial_report/wizard/vat_report_wizard.py,sha256=pJATDNWLcEWvctby5e5yvv4Kz7YDfCTi7YZP7slA8a4,3424
|
|
100
100
|
odoo/addons/account_financial_report/wizard/vat_report_wizard_view.xml,sha256=T3P81O4csDGP7Jmf7eAtmbIIldja3IoXbBmweMMt8vA,2330
|
|
101
|
-
odoo_addon_account_financial_report-17.0.1.
|
|
102
|
-
odoo_addon_account_financial_report-17.0.1.
|
|
103
|
-
odoo_addon_account_financial_report-17.0.1.
|
|
104
|
-
odoo_addon_account_financial_report-17.0.1.
|
|
101
|
+
odoo_addon_account_financial_report-17.0.1.6.0.dist-info/METADATA,sha256=bCTlrPcMhiB0d2jBzzUzb7DdhDEnsN2wSA8j8TvKyuE,7565
|
|
102
|
+
odoo_addon_account_financial_report-17.0.1.6.0.dist-info/WHEEL,sha256=9fEMia4zL7ZuZbnCOrcYogUhmn4XFIVaJ8G4YGI31xc,81
|
|
103
|
+
odoo_addon_account_financial_report-17.0.1.6.0.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
|
|
104
|
+
odoo_addon_account_financial_report-17.0.1.6.0.dist-info/RECORD,,
|
|
File without changes
|