odoo-addon-account-financial-report 15.0.2.13.0__py3-none-any.whl → 15.0.3.0.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.

@@ -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:3121efa26eabd1f91b11d7831fa71ec8e51fb667c9557da6cb7a42856be2766a
10
+ !! source digest: sha256:7a729cad2177a2d79dea23692b620f65ca49b3f28348bb0f191cd074fdb4bf41
11
11
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12
12
 
13
13
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -6,7 +6,7 @@
6
6
  # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
7
7
  {
8
8
  "name": "Account Financial Reports",
9
- "version": "15.0.2.13.0",
9
+ "version": "15.0.3.0.0",
10
10
  "category": "Reporting",
11
11
  "summary": "OCA Financial Reports",
12
12
  "author": "Camptocamp,"
@@ -330,6 +330,7 @@ msgstr ""
330
330
  #: code:addons/account_financial_report/report/aged_partner_balance_xlsx.py:0
331
331
  #: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
332
332
  #: code:addons/account_financial_report/report/open_items_xlsx.py:0
333
+ #: model:ir.model.fields.selection,name:account_financial_report.selection__trial_balance_report_wizard__grouped_by__analytic_account
333
334
  #: model_terms:ir.ui.view,arch_db:account_financial_report.report_aged_partner_balance_move_lines
334
335
  #: model_terms:ir.ui.view,arch_db:account_financial_report.report_general_ledger_lines
335
336
  #: model_terms:ir.ui.view,arch_db:account_financial_report.report_open_items_lines_header
@@ -916,6 +917,7 @@ msgstr ""
916
917
  #. module: account_financial_report
917
918
  #: model:ir.model.fields,field_description:account_financial_report.field_general_ledger_report_wizard__grouped_by
918
919
  #: model:ir.model.fields,field_description:account_financial_report.field_open_items_report_wizard__grouped_by
920
+ #: model:ir.model.fields,field_description:account_financial_report.field_trial_balance_report_wizard__grouped_by
919
921
  msgid "Grouped By"
920
922
  msgstr ""
921
923
 
@@ -1581,6 +1583,13 @@ msgstr ""
1581
1583
  msgid "Starting account in a range"
1582
1584
  msgstr ""
1583
1585
 
1586
+ #. module: account_financial_report
1587
+ #: code:addons/account_financial_report/report/trial_balance.py:0
1588
+ #: code:addons/account_financial_report/report/trial_balance_xlsx.py:0
1589
+ #, python-format
1590
+ msgid "TOTAL"
1591
+ msgstr ""
1592
+
1584
1593
  #. module: account_financial_report
1585
1594
  #: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
1586
1595
  #: model_terms:ir.ui.view,arch_db:account_financial_report.report_general_ledger_lines
@@ -1729,7 +1738,9 @@ msgid "To:"
1729
1738
  msgstr ""
1730
1739
 
1731
1740
  #. module: account_financial_report
1741
+ #: code:addons/account_financial_report/report/trial_balance_xlsx.py:0
1732
1742
  #: model_terms:ir.ui.view,arch_db:account_financial_report.report_aged_partner_balance_account_ending_cumul
1743
+ #, python-format
1733
1744
  msgid "Total"
1734
1745
  msgstr ""
1735
1746
 
@@ -1861,6 +1872,12 @@ msgstr ""
1861
1872
  msgid "With Account Name"
1862
1873
  msgstr ""
1863
1874
 
1875
+ #. module: account_financial_report
1876
+ #: code:addons/account_financial_report/report/trial_balance.py:0
1877
+ #, python-format
1878
+ msgid "Without analytic account"
1879
+ msgstr ""
1880
+
1864
1881
  #. module: account_financial_report
1865
1882
  #: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
1866
1883
  #: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
@@ -18,9 +18,9 @@
18
18
  <!-- Defines global variables used by internal layout -->
19
19
  <t t-set="title">
20
20
  Trial Balance -
21
- <t t-raw="company_name" />
21
+ <t t-out="company_name" />
22
22
  -
23
- <t t-raw="currency_name" />
23
+ <t t-out="currency_name" />
24
24
  </t>
25
25
  <t t-set="company_name" t-value="Company_Name" />
26
26
  <!-- <t t-set="res_company" t-value="company_id"/>-->
@@ -28,7 +28,7 @@
28
28
  <div class="row">
29
29
  <h4
30
30
  class="mt0"
31
- t-esc="title or 'Odoo Report'"
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
- <div class="act_as_table data_table" style="width: 100%;">
41
- <!-- Display account header -->
42
- <t
43
- t-call="account_financial_report.report_trial_balance_lines_header"
44
- />
45
- <!-- Display each lines -->
46
- <t t-foreach="trial_balance" t-as="balance">
47
- <!-- Adapt -->
48
- <t t-set="style" t-value="'font-size:12px;'" />
49
- <!-- Different style for account group -->
50
- <t t-if="show_hierarchy">
51
- <t
52
- t-if="balance['type'] == 'group_type'"
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-set="style"
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
- </t>
60
- <t t-if="show_hierarchy and limit_hierarchy_level">
61
- <t
62
- t-if="show_hierarchy_level > balance['level'] and (not hide_parent_hierarchy_level or (show_hierarchy_level - 1) == balance['level'])"
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
- <t t-else="">
70
- <t
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">
@@ -92,8 +143,8 @@
92
143
  view-type="form"
93
144
  >
94
145
  <t
95
- t-raw="accounts_data[account_id]['code']"
96
- /> - <t t-raw="accounts_data[account_id]['name']" />
146
+ t-out="accounts_data[account_id]['code']"
147
+ /> - <t t-out="accounts_data[account_id]['name']" />
97
148
  </span>
98
149
  </div>
99
150
  <div class="act_as_table data_table" style="width: 100%;">
@@ -139,9 +190,9 @@
139
190
  <div class="act_as_row">
140
191
  <div class="act_as_cell">
141
192
  From:
142
- <span t-esc="date_from" t-options="{'widget': 'date'}" />
193
+ <span t-out="date_from" t-options="{'widget': 'date'}" />
143
194
  To
144
- <span t-esc="date_to" t-options="{'widget': 'date'}" />
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-esc="show_hierarchy_level" />
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-esc="balance['code']" />
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-esc="balance['name']" />
284
+ <t t-out="balance['name']" />
234
285
  </span>
235
286
  </div>
236
287
  </t>
@@ -242,7 +293,7 @@
242
293
  res-model="account.group"
243
294
  view-type="form"
244
295
  >
245
- <t t-raw="balance['code']" />
296
+ <t t-out="balance['code']" />
246
297
  </span>
247
298
  </div>
248
299
  <div class="act_as_cell left" t-att-style="style">
@@ -252,7 +303,7 @@
252
303
  res-model="account.group"
253
304
  view-type="form"
254
305
  >
255
- <t t-esc="balance['name']" />
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-esc="partners_data[partner_id]['name']" />
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', '&lt;', 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-esc="balance['initial_balance']"
337
+ t-out="balance['initial_balance']"
287
338
  t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
288
339
  />
289
340
  </span>
@@ -299,7 +350,7 @@
299
350
  res-model="account.move.line"
300
351
  >
301
352
  <t
302
- t-raw="balance['initial_balance']"
353
+ t-out="balance['initial_balance']"
303
354
  t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
304
355
  />
305
356
  </span>
@@ -317,7 +368,7 @@
317
368
  res-model="account.move.line"
318
369
  >
319
370
  <t
320
- t-raw="total_amount[account_id][partner_id]['initial_balance']"
371
+ t-out="total_amount[account_id][partner_id]['initial_balance']"
321
372
  t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
322
373
  />
323
374
  </span>
@@ -335,11 +386,11 @@
335
386
  ('debit', '&lt;&gt;', 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-esc="balance['debit']"
393
+ t-out="balance['debit']"
343
394
  t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
344
395
  />
345
396
  </span>
@@ -357,7 +408,7 @@
357
408
  res-model="account.move.line"
358
409
  >
359
410
  <t
360
- t-raw="balance['debit']"
411
+ t-out="balance['debit']"
361
412
  t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
362
413
  />
363
414
  </span>
@@ -377,7 +428,7 @@
377
428
  res-model="account.move.line"
378
429
  >
379
430
  <t
380
- t-raw="total_amount[account_id][partner_id]['debit']"
431
+ t-out="total_amount[account_id][partner_id]['debit']"
381
432
  t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
382
433
  />
383
434
  </span>
@@ -395,11 +446,11 @@
395
446
  ('credit', '&lt;&gt;', 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-esc="balance['credit']"
453
+ t-out="balance['credit']"
403
454
  t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
404
455
  />
405
456
  </span>
@@ -417,7 +468,7 @@
417
468
  res-model="account.move.line"
418
469
  >
419
470
  <t
420
- t-raw="balance['credit']"
471
+ t-out="balance['credit']"
421
472
  t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
422
473
  />
423
474
  </span>
@@ -437,7 +488,7 @@
437
488
  res-model="account.move.line"
438
489
  >
439
490
  <t
440
- t-raw="total_amount[account_id][partner_id]['credit']"
491
+ t-out="total_amount[account_id][partner_id]['credit']"
441
492
  t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
442
493
  />
443
494
  </span>
@@ -455,11 +506,11 @@
455
506
  ('balance', '&lt;&gt;', 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-esc="balance['balance']"
513
+ t-out="balance['balance']"
463
514
  t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
464
515
  />
465
516
  </span>
@@ -476,7 +527,7 @@
476
527
  res-model="account.move.line"
477
528
  >
478
529
  <t
479
- t-raw="balance['balance']"
530
+ t-out="balance['balance']"
480
531
  t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
481
532
  />
482
533
  </span>
@@ -496,7 +547,7 @@
496
547
  res-model="account.move.line"
497
548
  >
498
549
  <t
499
- t-raw="total_amount[account_id][partner_id]['balance']"
550
+ t-out="total_amount[account_id][partner_id]['balance']"
500
551
  t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
501
552
  />
502
553
  </span>
@@ -512,11 +563,11 @@
512
563
  ('date', '&lt;=', 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-esc="balance['ending_balance']"
570
+ t-out="balance['ending_balance']"
520
571
  t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
521
572
  />
522
573
  </span>
@@ -531,7 +582,7 @@
531
582
  res-model="account.move.line"
532
583
  >
533
584
  <t
534
- t-raw="balance['ending_balance']"
585
+ t-out="balance['ending_balance']"
535
586
  t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
536
587
  />
537
588
  </span>
@@ -549,7 +600,7 @@
549
600
  res-model="account.move.line"
550
601
  >
551
602
  <t
552
- t-esc="total_amount[account_id][partner_id]['ending_balance']"
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>
@@ -566,11 +617,11 @@
566
617
  t-value="[('account_id', '=', balance['id'])]"
567
618
  />
568
619
  <span
569
- t-att-domain="domain+aml_domain_common"
620
+ t-att-domain="domain+aml_domain_common+aml_domain_extra"
570
621
  res-model="account.move.line"
571
622
  >
572
623
  <t
573
- t-esc="balance['initial_currency_balance']"
624
+ t-out="balance['initial_currency_balance']"
574
625
  t-options="{'widget': 'monetary', 'display_currency': balance['currency_id']}"
575
626
  />
576
627
  </span>
@@ -582,7 +633,7 @@
582
633
  <!-- t-att-data-res-model="'account.move.line'"-->
583
634
  <!-- class="o_account_financial_reports_web_action_monetary_multi"-->
584
635
  <!-- t-att-style="style">-->
585
- <!-- <t t-att-style="style" t-raw="line.initial_balance_foreign_currency" t-options="{'widget': 'monetary', 'display_currency': line.currency_id}"/></a>-->
636
+ <!-- <t t-att-style="style" t-out="line.initial_balance_foreign_currency" t-options="{'widget': 'monetary', 'display_currency': line.currency_id}"/></a>-->
586
637
  <!-- </span>-->
587
638
  <!-- </t>-->
588
639
  </div>
@@ -603,7 +654,7 @@
603
654
  res-model="account.move.line"
604
655
  >
605
656
  <t
606
- t-raw="total_amount[account_id][partner_id]['initial_currency_balance']"
657
+ t-out="total_amount[account_id][partner_id]['initial_currency_balance']"
607
658
  t-options="{'widget': 'monetary', 'display_currency': total_amount[account_id]['currency_id']}"
608
659
  />
609
660
  </span>
@@ -621,11 +672,11 @@
621
672
  t-value="[('account_id', '=', balance['id'])]"
622
673
  />
623
674
  <span
624
- t-att-domain="domain+aml_domain_common"
675
+ t-att-domain="domain+aml_domain_common+aml_domain_extra"
625
676
  res-model="account.move.line"
626
677
  >
627
678
  <t
628
- t-raw="balance['ending_currency_balance']"
679
+ t-out="balance['ending_currency_balance']"
629
680
  t-options="{'widget': 'monetary', 'display_currency': balance['currency_id']}"
630
681
  />
631
682
  </span>
@@ -637,7 +688,7 @@
637
688
  <!-- t-att-data-res-model="'account.move.line'"-->
638
689
  <!-- class="o_account_financial_reports_web_action_monetary_multi"-->
639
690
  <!-- t-att-style="style">-->
640
- <!-- <t t-att-style="style" t-raw="line.final_balance_foreign_currency" t-options="{'widget': 'monetary', 'display_currency': line.currency_id}"/></a>-->
691
+ <!-- <t t-att-style="style" t-out="line.final_balance_foreign_currency" t-options="{'widget': 'monetary', 'display_currency': line.currency_id}"/></a>-->
641
692
  <!-- </span>-->
642
693
  <!-- </t>-->
643
694
  </div>
@@ -658,7 +709,7 @@
658
709
  res-model="account.move.line"
659
710
  >
660
711
  <t
661
- t-raw="total_amount[account_id][partner_id]['ending_currency_balance']"
712
+ t-out="total_amount[account_id][partner_id]['ending_currency_balance']"
662
713
  t-options="{'widget': 'monetary', 'display_currency': total_amount[account_id]['currency_id']}"
663
714
  />
664
715
  </span>
@@ -702,7 +753,7 @@
702
753
  <!-- t-att-data-res-model="res_model"-->
703
754
  <!-- class="o_account_financial_reports_web_action"-->
704
755
  <!-- t-att-style="style">-->
705
- <!-- <t t-att-style="style" t-raw="account.code"/> - <t t-att-style="style" t-raw="account.name"/></a>-->
756
+ <!-- <t t-att-style="style" t-out="account.code"/> - <t t-att-style="style" t-out="account.name"/></a>-->
706
757
  <!-- </span>-->
707
758
  <!-- </div>-->
708
759
  <!-- &lt;!&ndash;## Initial balance&ndash;&gt;-->
@@ -715,7 +766,7 @@
715
766
  <!-- t-att-data-res-model="'account.move.line'"-->
716
767
  <!-- class="o_account_financial_reports_web_action_monetary_multi"-->
717
768
  <!-- t-att-style="style">-->
718
- <!-- <t t-att-style="style" t-raw="account.initial_balance" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></a>-->
769
+ <!-- <t t-att-style="style" t-out="account.initial_balance" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></a>-->
719
770
  <!-- </span>-->
720
771
  <!-- </div>-->
721
772
  <!-- &lt;!&ndash;## Debit&ndash;&gt;-->
@@ -730,7 +781,7 @@
730
781
  <!-- t-att-data-res-model="'account.move.line'"-->
731
782
  <!-- class="o_account_financial_reports_web_action_monetary_multi"-->
732
783
  <!-- t-att-style="style">-->
733
- <!-- <t t-att-style="style" t-raw="account.debit" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></a>-->
784
+ <!-- <t t-att-style="style" t-out="account.debit" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></a>-->
734
785
  <!-- </span>-->
735
786
  <!-- </div>-->
736
787
  <!-- &lt;!&ndash;## Credit&ndash;&gt;-->
@@ -745,7 +796,7 @@
745
796
  <!-- t-att-data-res-model="'account.move.line'"-->
746
797
  <!-- class="o_account_financial_reports_web_action_monetary_multi"-->
747
798
  <!-- t-att-style="style">-->
748
- <!-- <t t-att-style="style" t-raw="account.credit" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></a>-->
799
+ <!-- <t t-att-style="style" t-out="account.credit" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></a>-->
749
800
  <!-- </span>-->
750
801
  <!-- </div>-->
751
802
  <!-- &lt;!&ndash;## Period Balance &ndash;&gt;-->
@@ -760,7 +811,7 @@
760
811
  <!-- t-att-data-res-model="'account.move.line'"-->
761
812
  <!-- class="o_account_financial_reports_web_action_monetary_multi"-->
762
813
  <!-- t-att-style="style">-->
763
- <!-- <t t-att-style="style" t-raw="account.period_balance" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></a>-->
814
+ <!-- <t t-att-style="style" t-out="account.period_balance" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></a>-->
764
815
  <!-- </span>-->
765
816
  <!-- </div>-->
766
817
  <!-- &lt;!&ndash;## Ending balance&ndash;&gt;-->
@@ -772,7 +823,7 @@
772
823
  <!-- t-att-data-res-model="'account.move.line'"-->
773
824
  <!-- class="o_account_financial_reports_web_action_monetary_multi"-->
774
825
  <!-- t-att-style="style" >-->
775
- <!-- <t t-att-style="style" t-raw="account.final_balance" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></a>-->
826
+ <!-- <t t-att-style="style" t-out="account.final_balance" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></a>-->
776
827
  <!-- </span>-->
777
828
  <!-- </div>-->
778
829
  <!-- <t t-if="foreign_currency">-->
@@ -793,7 +844,7 @@
793
844
  <!-- t-att-data-res-model="'account.move.line'"-->
794
845
  <!-- class="o_account_financial_reports_web_action_monetary_multi"-->
795
846
  <!-- t-att-style="style">-->
796
- <!-- <t t-att-style="style" t-raw="account.initial_balance_foreign_currency" t-options="{'widget': 'monetary', 'display_currency': account.account_id.currency_id}"/></a>-->
847
+ <!-- <t t-att-style="style" t-out="account.initial_balance_foreign_currency" t-options="{'widget': 'monetary', 'display_currency': account.account_id.currency_id}"/></a>-->
797
848
  <!-- </span>-->
798
849
  <!-- </div>-->
799
850
  <!-- <div class="act_as_cell amount" style="width: 8.86%;">-->
@@ -804,7 +855,7 @@
804
855
  <!-- t-att-data-res-model="'account.move.line'"-->
805
856
  <!-- class="o_account_financial_reports_web_action_monetary_multi"-->
806
857
  <!-- t-att-style="style" >-->
807
- <!-- <t t-att-style="style" t-raw="account.final_balance_foreign_currency" t-options="{'widget': 'monetary', 'display_currency': account.account_id.currency_id}"/></a>-->
858
+ <!-- <t t-att-style="style" t-out="account.final_balance_foreign_currency" t-options="{'widget': 'monetary', 'display_currency': account.account_id.currency_id}"/></a>-->
808
859
  <!-- </span>-->
809
860
  <!-- </div>-->
810
861
  <!-- </t>-->
@@ -823,44 +874,101 @@
823
874
  <div class="act_as_row labels" style="font-weight: bold;">
824
875
  <!--## date-->
825
876
  <div class="act_as_cell first_column" style="width: 33%;">
826
- <span t-esc="accounts_data[account_id]['code']" />
827
- -
828
- <span t-esc="accounts_data[account_id]['name']" />
877
+ <t
878
+ t-if="grouped_by and balance['type'] in ('analytic_account_type', 'total')"
879
+ >
880
+ <span t-out="balance['name']" />
881
+ </t>
882
+ <t t-else="">
883
+ <span t-out="accounts_data[account_id]['code']" />
884
+ -
885
+ <span t-out="accounts_data[account_id]['name']" />
886
+ </t>
829
887
  </div>
830
888
  <!--## Initial Balance-->
831
889
  <div class="act_as_cell amount" style="width: 9%;">
832
- <span
833
- t-esc="total_amount[account_id]['initial_balance']"
834
- t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
835
- />
890
+ <t
891
+ t-if="grouped_by and balance['type'] in ('analytic_account_type', 'total')"
892
+ >
893
+ <span
894
+ t-out="balance['initial_balance']"
895
+ t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
896
+ />
897
+ </t>
898
+ <t t-else="">
899
+ <span
900
+ t-out="total_amount[account_id]['initial_balance']"
901
+ t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
902
+ />
903
+ </t>
836
904
  </div>
837
905
  <!--## Debit-->
838
906
  <div class="act_as_cell amount" style="width: 9%;">
839
- <span
840
- t-esc="total_amount[account_id]['debit']"
841
- t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
842
- />
907
+ <t
908
+ t-if="grouped_by and balance['type'] in ('analytic_account_type', 'total')"
909
+ >
910
+ <span
911
+ t-out="balance['debit']"
912
+ t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
913
+ />
914
+ </t>
915
+ <t t-else="">
916
+ <span
917
+ t-out="total_amount[account_id]['debit']"
918
+ t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
919
+ />
920
+ </t>
843
921
  </div>
844
922
  <!--## Credit-->
845
923
  <div class="act_as_cell amount" style="width: 9%;">
846
- <span
847
- t-esc="total_amount[account_id]['credit']"
848
- t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
849
- />
924
+ <t
925
+ t-if="grouped_by and balance['type'] in ('analytic_account_type', 'total')"
926
+ >
927
+ <span
928
+ t-out="balance['credit']"
929
+ t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
930
+ />
931
+ </t>
932
+ <t t-else="">
933
+ <span
934
+ t-out="total_amount[account_id]['credit']"
935
+ t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
936
+ />
937
+ </t>
850
938
  </div>
851
939
  <!--## Period balance-->
852
940
  <div class="act_as_cell amount" style="width: 9%;">
853
- <span
854
- t-esc="total_amount[account_id]['balance']"
855
- t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
856
- />
941
+ <t
942
+ t-if="grouped_by and balance['type'] in ('analytic_account_type', 'total')"
943
+ >
944
+ <span
945
+ t-out="balance['balance']"
946
+ t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
947
+ />
948
+ </t>
949
+ <t t-else="">
950
+ <span
951
+ t-out="total_amount[account_id]['balance']"
952
+ t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
953
+ />
954
+ </t>
857
955
  </div>
858
956
  <!--## Ending balance-->
859
957
  <div class="act_as_cell amount" style="width: 9%;">
860
- <span
861
- t-esc="total_amount[account_id]['ending_balance']"
862
- t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
863
- />
958
+ <t
959
+ t-if="grouped_by and balance['type'] in ('analytic_account_type', 'total')"
960
+ >
961
+ <span
962
+ t-out="balance['ending_balance']"
963
+ t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
964
+ />
965
+ </t>
966
+ <t t-else="">
967
+ <span
968
+ t-out="total_amount[account_id]['ending_balance']"
969
+ t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
970
+ />
971
+ </t>
864
972
  </div>
865
973
  <t t-if="foreign_currency">
866
974
  <!--## amount_total_due_currency-->
@@ -192,10 +192,31 @@ class TrialBalanceReport(models.AbstractModel):
192
192
  total_amount[acc_id]["debit"] = tb["debit"]
193
193
  total_amount[acc_id]["balance"] = tb["balance"]
194
194
  total_amount[acc_id]["initial_balance"] = 0.0
195
+ if "__context" in tb and "group_by" in tb["__context"]:
196
+ group_by = tb["__context"]["group_by"][0]
197
+ gb_data = {}
198
+ tb_grouped = self.env["account.move.line"].read_group(
199
+ domain=tb["__domain"],
200
+ fields=[group_by, "debit", "credit", "balance", "amount_currency"],
201
+ groupby=[group_by],
202
+ )
203
+ for tb2 in tb_grouped:
204
+ gb_id = tb2[group_by][0] if tb2[group_by] else 0
205
+ gb_data[gb_id] = self._prepare_total_amount(tb2, foreign_currency)
206
+ gb_data[gb_id]["credit"] = tb2["credit"]
207
+ gb_data[gb_id]["debit"] = tb2["debit"]
208
+ gb_data[gb_id]["balance"] = tb2["balance"]
209
+ gb_data[gb_id]["initial_balance"] = 0.0
210
+ total_amount[acc_id]["group_by"] = group_by
211
+ total_amount[acc_id]["group_by_data"] = gb_data
195
212
  for tb in tb_initial_acc:
196
213
  acc_id = tb["account_id"]
197
214
  if acc_id not in total_amount.keys():
198
215
  total_amount[acc_id] = self._prepare_total_amount(tb, foreign_currency)
216
+ total_amount[acc_id]["group_by_data"] = {}
217
+ total_amount[acc_id]["group_by_data"][0] = self._prepare_total_amount(
218
+ tb, foreign_currency
219
+ )
199
220
  else:
200
221
  total_amount[acc_id]["initial_balance"] = tb["balance"]
201
222
  total_amount[acc_id]["ending_balance"] += tb["balance"]
@@ -206,6 +227,28 @@ class TrialBalanceReport(models.AbstractModel):
206
227
  total_amount[acc_id]["ending_currency_balance"] += round(
207
228
  tb["amount_currency"], 2
208
229
  )
230
+ if "group_by_data" in tb:
231
+ for gb_key in list(tb["group_by_data"]):
232
+ tb2 = tb["group_by_data"][gb_key]
233
+ if "group_by_data" in total_amount[acc_id]:
234
+ if gb_key not in total_amount[acc_id]["group_by_data"]:
235
+ total_amount[acc_id]["group_by_data"][
236
+ gb_key
237
+ ] = self._prepare_total_amount(tb2, foreign_currency)
238
+ else:
239
+ total_amount[acc_id]["group_by_data"][gb_key][
240
+ "initial_balance"
241
+ ] = tb2["balance"]
242
+ total_amount[acc_id]["group_by_data"][gb_key][
243
+ "ending_balance"
244
+ ] += tb2["balance"]
245
+ if foreign_currency:
246
+ total_amount[acc_id]["group_by_data"][gb_key][
247
+ "initial_currency_balance"
248
+ ] = round(tb2["amount_currency"], 2)
249
+ total_amount[acc_id]["group_by_data"][gb_key][
250
+ "ending_currency_balance"
251
+ ] += round(tb2["amount_currency"], 2)
209
252
  return total_amount
210
253
 
211
254
  @api.model
@@ -308,6 +351,7 @@ class TrialBalanceReport(models.AbstractModel):
308
351
  for account_id in accounts_to_remove:
309
352
  del total_amount[account_id]
310
353
 
354
+ # flake8: noqa: C901
311
355
  @api.model
312
356
  def _get_data(
313
357
  self,
@@ -323,6 +367,7 @@ class TrialBalanceReport(models.AbstractModel):
323
367
  hide_account_at_0,
324
368
  unaffected_earnings_account,
325
369
  fy_start_date,
370
+ grouped_by,
326
371
  ):
327
372
  accounts_domain = [("company_id", "=", company_id)]
328
373
  if account_ids:
@@ -336,6 +381,9 @@ class TrialBalanceReport(models.AbstractModel):
336
381
  tb_initial_acc.append(
337
382
  {"account_id": account.id, "balance": 0.0, "amount_currency": 0.0}
338
383
  )
384
+ groupby_fields = ["account_id"]
385
+ if grouped_by:
386
+ groupby_fields.append("analytic_account_id")
339
387
  initial_domain_bs = self._get_initial_balances_bs_ml_domain(
340
388
  account_ids,
341
389
  journal_ids,
@@ -348,7 +396,7 @@ class TrialBalanceReport(models.AbstractModel):
348
396
  tb_initial_acc_bs = self.env["account.move.line"].read_group(
349
397
  domain=initial_domain_bs,
350
398
  fields=["account_id", "balance", "amount_currency"],
351
- groupby=["account_id"],
399
+ groupby=groupby_fields,
352
400
  )
353
401
  initial_domain_pl = self._get_initial_balances_pl_ml_domain(
354
402
  account_ids,
@@ -363,7 +411,7 @@ class TrialBalanceReport(models.AbstractModel):
363
411
  tb_initial_acc_pl = self.env["account.move.line"].read_group(
364
412
  domain=initial_domain_pl,
365
413
  fields=["account_id", "balance", "amount_currency"],
366
- groupby=["account_id"],
414
+ groupby=groupby_fields,
367
415
  )
368
416
  tb_initial_acc_rg = tb_initial_acc_bs + tb_initial_acc_pl
369
417
  for account_rg in tb_initial_acc_rg:
@@ -377,6 +425,22 @@ class TrialBalanceReport(models.AbstractModel):
377
425
  if element:
378
426
  element[0]["balance"] += account_rg["balance"]
379
427
  element[0]["amount_currency"] += account_rg["amount_currency"]
428
+ if "__context" in account_rg and "group_by" in account_rg["__context"]:
429
+ group_by = account_rg["__context"]["group_by"][0]
430
+ gb_data = {}
431
+ account_rg_grouped = self.env["account.move.line"].read_group(
432
+ domain=account_rg["__domain"],
433
+ fields=[group_by, "balance", "amount_currency"],
434
+ groupby=[group_by],
435
+ )
436
+ for a_rg2 in account_rg_grouped:
437
+ gb_id = a_rg2[group_by][0] if a_rg2[group_by] else 0
438
+ gb_data[gb_id] = {
439
+ "balance": a_rg2["balance"],
440
+ "amount_currency": a_rg2["amount_currency"],
441
+ }
442
+ element[0]["group_by"] = group_by
443
+ element[0]["group_by_data"] = gb_data
380
444
  if hide_account_at_0:
381
445
  tb_initial_acc = [p for p in tb_initial_acc if p["balance"] != 0]
382
446
 
@@ -393,7 +457,7 @@ class TrialBalanceReport(models.AbstractModel):
393
457
  tb_period_acc = self.env["account.move.line"].read_group(
394
458
  domain=period_domain,
395
459
  fields=["account_id", "debit", "credit", "balance", "amount_currency"],
396
- groupby=["account_id"],
460
+ groupby=groupby_fields,
397
461
  )
398
462
 
399
463
  if show_partner_details:
@@ -450,8 +514,22 @@ class TrialBalanceReport(models.AbstractModel):
450
514
  total_amount[unaffected_id]["debit"] = 0.0
451
515
  total_amount[unaffected_id]["ending_balance"] = 0.0
452
516
  if foreign_currency:
517
+ total_amount[unaffected_id]["amount_currency"] = 0
453
518
  total_amount[unaffected_id]["initial_currency_balance"] = 0.0
454
519
  total_amount[unaffected_id]["ending_currency_balance"] = 0.0
520
+ if grouped_by:
521
+ total_amount[unaffected_id]["group_by"] = grouped_by
522
+ total_amount[unaffected_id]["group_by_data"] = {}
523
+ # Fix to prevent side effects
524
+ if (
525
+ foreign_currency
526
+ and "amount_currency" not in total_amount[unaffected_id]
527
+ ):
528
+ total_amount[unaffected_id]["amount_currency"] = 0
529
+ group_by_data_item = self._prepare_total_amount(
530
+ total_amount[unaffected_id], foreign_currency
531
+ )
532
+ total_amount[unaffected_id]["group_by_data"][0] = group_by_data_item
455
533
  accounts_data = self._get_accounts_data(accounts_ids)
456
534
  (
457
535
  pl_initial_balance,
@@ -476,8 +554,88 @@ class TrialBalanceReport(models.AbstractModel):
476
554
  total_amount[unaffected_id][
477
555
  "initial_currency_balance"
478
556
  ] += pl_initial_currency_balance
557
+ if grouped_by:
558
+ total_amount[unaffected_id]["group_by_data"][0][
559
+ "ending_balance"
560
+ ] = total_amount[unaffected_id]["ending_balance"]
561
+ total_amount[unaffected_id]["group_by_data"][0][
562
+ "initial_balance"
563
+ ] = total_amount[unaffected_id]["initial_balance"]
564
+ if foreign_currency:
565
+ total_amount[unaffected_id]["group_by_data"][0][
566
+ "ending_currency_balance"
567
+ ] = total_amount[unaffected_id]["ending_currency_balance"]
568
+ total_amount[unaffected_id]["group_by_data"][0][
569
+ "initial_currency_balance"
570
+ ] = total_amount[unaffected_id]["initial_currency_balance"]
479
571
  return total_amount, accounts_data, partners_data
480
572
 
573
+ def _get_data_grouped(self, total_amount, accounts_data, foreign_currency):
574
+ """Get the data grouped by analytical account instead of as used
575
+ "without grouping".
576
+ """
577
+ trial_balance = {}
578
+ total_amount_grouped = {"type": "total", "name": _("TOTAL")}
579
+ f_names = [
580
+ "credit",
581
+ "debit",
582
+ "balance",
583
+ "initial_balance",
584
+ "ending_balance",
585
+ "initial_currency_balance",
586
+ "ending_currency_balance",
587
+ ]
588
+ for f_name in f_names:
589
+ total_amount_grouped[f_name] = 0
590
+ for a_id in list(total_amount.keys()):
591
+ for key in list(total_amount[a_id]["group_by_data"].keys()):
592
+ total_amount_item2 = total_amount[a_id]["group_by_data"][key]
593
+ if key not in trial_balance:
594
+ trial_balance[key] = {}
595
+ for f_name in f_names:
596
+ if f_name in total_amount_item2:
597
+ trial_balance[key][f_name] = 0
598
+ trial_balance[key]["account_data"] = {}
599
+ for f_name in f_names:
600
+ if f_name in total_amount_item2:
601
+ trial_balance[key][f_name] += total_amount_item2[f_name]
602
+ # Prepare data_item
603
+ data_item = total_amount_item2
604
+ data_item["type"] = "account_type"
605
+ data_item["id"] = a_id
606
+ data_item["name"] = accounts_data[a_id]["name"]
607
+ data_item["code"] = accounts_data[a_id]["code"]
608
+ if foreign_currency:
609
+ data_item["currency_id"] = accounts_data[a_id]["currency_id"]
610
+ data_item["currency_name"] = accounts_data[a_id]["currency_name"]
611
+ trial_balance[key]["account_data"][a_id] = data_item
612
+ analytic_account_ids = list(trial_balance.keys())
613
+ aa_data = {}
614
+ aaa_model = self.env["account.analytic.account"].with_context(active_test=False)
615
+ analytic_accounts = aaa_model.search_read(
616
+ domain=[("id", "in", analytic_account_ids)],
617
+ fields=["display_name"],
618
+ )
619
+ for aa in analytic_accounts:
620
+ aa_data[aa["id"]] = aa
621
+ for aa_id in analytic_account_ids:
622
+ trial_balance[aa_id]["id"] = aa_id
623
+ trial_balance[aa_id]["type"] = "analytic_account_type"
624
+ trial_balance[aa_id]["name"] = (
625
+ aa_data[aa_id]["display_name"]
626
+ if aa_id in aa_data
627
+ else _("Without analytic account")
628
+ )
629
+ account_data_item = list(trial_balance[aa_id]["account_data"].values())
630
+ account_data_item = sorted(account_data_item, key=lambda k: k["code"])
631
+ trial_balance[aa_id]["account_data"] = account_data_item
632
+ for f_name in f_names:
633
+ if f_name in trial_balance[aa_id]:
634
+ total_amount_grouped[f_name] += trial_balance[aa_id][f_name]
635
+ trial_balance = list(trial_balance.values())
636
+ trial_balance = sorted(trial_balance, key=lambda k: k["name"])
637
+ return trial_balance, total_amount_grouped
638
+
481
639
  def _get_hierarchy_groups(self, group_ids, groups_data, foreign_currency):
482
640
  for group_id in group_ids:
483
641
  parent_id = groups_data[group_id]["parent_id"]
@@ -650,6 +808,7 @@ class TrialBalanceReport(models.AbstractModel):
650
808
  only_posted_moves = data["only_posted_moves"]
651
809
  unaffected_earnings_account = data["unaffected_earnings_account"]
652
810
  fy_start_date = data["fy_start_date"]
811
+ grouped_by = data["grouped_by"]
653
812
  total_amount, accounts_data, partners_data = self._get_data(
654
813
  account_ids,
655
814
  journal_ids,
@@ -663,7 +822,14 @@ class TrialBalanceReport(models.AbstractModel):
663
822
  hide_account_at_0,
664
823
  unaffected_earnings_account,
665
824
  fy_start_date,
825
+ grouped_by,
666
826
  )
827
+ trial_balance_grouped = False
828
+ total_amount_grouped = False
829
+ if grouped_by:
830
+ trial_balance_grouped, total_amount_grouped = self._get_data_grouped(
831
+ total_amount, accounts_data, foreign_currency
832
+ )
667
833
  trial_balance = []
668
834
  if not show_partner_details:
669
835
  for account_id in accounts_data.keys():
@@ -674,6 +840,16 @@ class TrialBalanceReport(models.AbstractModel):
674
840
  "debit": total_amount[account_id]["debit"],
675
841
  "balance": total_amount[account_id]["balance"],
676
842
  "ending_balance": total_amount[account_id]["ending_balance"],
843
+ "group_by": (
844
+ total_amount[account_id]["group_by"]
845
+ if "group_by" in total_amount[account_id]
846
+ else False
847
+ ),
848
+ "group_by_data": (
849
+ total_amount[account_id]["group_by_data"]
850
+ if "group_by_data" in total_amount[account_id]
851
+ else False
852
+ ),
677
853
  "type": "account_type",
678
854
  }
679
855
  )
@@ -727,8 +903,11 @@ class TrialBalanceReport(models.AbstractModel):
727
903
  "show_hierarchy": show_hierarchy,
728
904
  "hide_parent_hierarchy_level": data["hide_parent_hierarchy_level"],
729
905
  "trial_balance": trial_balance,
906
+ "trial_balance_grouped": trial_balance_grouped,
730
907
  "total_amount": total_amount,
908
+ "total_amount_grouped": total_amount_grouped,
731
909
  "accounts_data": accounts_data,
732
910
  "partners_data": partners_data,
733
911
  "show_hierarchy_level": show_hierarchy_level,
912
+ "grouped_by": grouped_by,
734
913
  }
@@ -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
- # Display array header for account lines
180
- self.write_array_header(report_data)
181
-
182
- # For each account
183
- if not show_partner_details:
184
- for balance in trial_balance:
185
- if show_hierarchy and limit_hierarchy_level:
186
- if show_hierarchy_level > balance["level"] and (
187
- not hide_parent_hierarchy_level
188
- or (show_hierarchy_level - 1) == balance["level"]
189
- ):
190
- # Display account lines
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:3121efa26eabd1f91b11d7831fa71ec8e51fb667c9557da6cb7a42856be2766a
370
+ !! source digest: sha256:7a729cad2177a2d79dea23692b620f65ca49b3f28348bb0f191cd074fdb4bf41
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/15.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-15-0/account-financial-reporting-15-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&amp;target_branch=15.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
@@ -67,6 +67,15 @@ class TrialBalanceReportWizard(models.TransientModel):
67
67
  comodel_name="account.account",
68
68
  help="Ending account in a range",
69
69
  )
70
+ grouped_by = fields.Selection(
71
+ selection=[("analytic_account", "Analytic Account")], default=False
72
+ )
73
+
74
+ @api.onchange("grouped_by")
75
+ def onchange_grouped_by(self):
76
+ if self.grouped_by == "analytic_account":
77
+ self.show_partner_details = False
78
+ self.show_hierarchy = False
70
79
 
71
80
  @api.onchange("account_code_from", "account_code_to")
72
81
  def on_change_account_range(self):
@@ -201,6 +210,7 @@ class TrialBalanceReportWizard(models.TransientModel):
201
210
  """Handle partners change."""
202
211
  if self.show_partner_details:
203
212
  self.receivable_accounts_only = self.payable_accounts_only = True
213
+ self.grouped_by = False
204
214
  else:
205
215
  self.receivable_accounts_only = self.payable_accounts_only = False
206
216
 
@@ -258,6 +268,7 @@ class TrialBalanceReportWizard(models.TransientModel):
258
268
  "show_partner_details": self.show_partner_details,
259
269
  "unaffected_earnings_account": self.unaffected_earnings_account.id,
260
270
  "account_financial_report_lang": self.env.lang,
271
+ "grouped_by": self.grouped_by,
261
272
  }
262
273
 
263
274
  def _export(self, report_type):
@@ -25,11 +25,18 @@
25
25
  </group>
26
26
  <group name="other_filters">
27
27
  <field name="target_move" widget="radio" />
28
+ <field
29
+ name="grouped_by"
30
+ groups="analytic.group_analytic_accounting"
31
+ />
28
32
  <field name="hide_account_at_0" />
29
- <field name="show_partner_details" />
33
+ <field
34
+ name="show_partner_details"
35
+ attrs="{'invisible':[('grouped_by','!=',False)]}"
36
+ />
30
37
  <field
31
38
  name="show_hierarchy"
32
- attrs="{'invisible':[('show_partner_details','=',True)]}"
39
+ attrs="{'invisible':['|', ('show_partner_details','=',True),('grouped_by','!=',False)]}"
33
40
  />
34
41
  <field
35
42
  name="limit_hierarchy_level"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-account_financial_report
3
- Version: 15.0.2.13.0
3
+ Version: 15.0.3.0.0
4
4
  Summary: OCA Financial Reports
5
5
  Home-page: https://github.com/OCA/account-financial-reporting
6
6
  Author: Camptocamp,initOS GmbH,redCOR AG,ForgeFlow,Odoo Community Association (OCA)
@@ -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:3121efa26eabd1f91b11d7831fa71ec8e51fb667c9557da6cb7a42856be2766a
27
+ !! source digest: sha256:7a729cad2177a2d79dea23692b620f65ca49b3f28348bb0f191cd074fdb4bf41
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=nwsLqm4dE3XeDfGonvCs6AgoblSVhF2M-17uVWrIRU4,6889
1
+ odoo/addons/account_financial_report/README.rst,sha256=a-YYNhmZ_7H1t7XgluNtLlch7SVLImSe0eDPv5maRyE,6889
2
2
  odoo/addons/account_financial_report/__init__.py,sha256=YoL8hk5QxSifbFJL7gPzpOSk-3zB1OSHJBXyZK25G6Q,187
3
- odoo/addons/account_financial_report/__manifest__.py,sha256=khQP_6tzGsbjcoJK9wWt6Y_tqkkbNfb2XFmCC_sOVAg,2308
3
+ odoo/addons/account_financial_report/__manifest__.py,sha256=G05L8B5x61L7mQ_4Ld95CKR0C_m4a2Paniq4TETkEbk,2307
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=6iqE5_K5jkKvTdP_azbWriMLqkyTzoCPZ9gkGJntJDU,84679
6
+ odoo/addons/account_financial_report/i18n/account_financial_report.pot,sha256=ypCilq5ysJuqD-s7BUd2sop_UtJTD86WVpSGdUobVYI,85393
7
7
  odoo/addons/account_financial_report/i18n/ar.po,sha256=7pgMgE8RLP1lAX8EfbTrrmRnBm65aCB-nNcvID0vs4Q,92468
8
8
  odoo/addons/account_financial_report/i18n/ca.po,sha256=LzR1WTsoZmU4Bisu0f-YBMCRQFvP2w9qQFKV65A3i9M,89308
9
9
  odoo/addons/account_financial_report/i18n/da.po,sha256=voBEBQsebZ00a6ThQ4AdXbY4rJtPrAvMkf1TQGNiyc0,88540
@@ -46,8 +46,8 @@ odoo/addons/account_financial_report/report/journal_ledger.py,sha256=j83-QCAONs7
46
46
  odoo/addons/account_financial_report/report/journal_ledger_xlsx.py,sha256=Pp7iDkBjSk0BqZkSPAiKI2hBHNcjKYjZoBxuL_ENz5E,10126
47
47
  odoo/addons/account_financial_report/report/open_items.py,sha256=7iIrnkCLuH17Lx0I98Nvt0KfYpcyhVcNRSJMr9i_PS8,13788
48
48
  odoo/addons/account_financial_report/report/open_items_xlsx.py,sha256=a4HMQ97VkwTO_8tnxyzFIIlLkawaG1HBXnujgYUI_Ug,15119
49
- odoo/addons/account_financial_report/report/trial_balance.py,sha256=ERrdWkQugXtRX_4lURibQCdPsW_52ggbyLOrMDSSTrg,30737
50
- odoo/addons/account_financial_report/report/trial_balance_xlsx.py,sha256=phPDqy4pXbd94oFmwjPNe_XKoMCgcTXPE6HOkGJJDko,12060
49
+ odoo/addons/account_financial_report/report/trial_balance.py,sha256=TNfnjUD0TLXmDvcj6cUHDK60EfOdtLj4PAh9zh346tg,40093
50
+ odoo/addons/account_financial_report/report/trial_balance_xlsx.py,sha256=iGn0bVz63eMNL6Xdnjk8r4JdZrX2ojnEm9E0BaOcDoY,13278
51
51
  odoo/addons/account_financial_report/report/vat_report.py,sha256=mRr8zk3sTVvz7CFHQAzDL4Eexqzt7X6JVOEPD2axumM,10163
52
52
  odoo/addons/account_financial_report/report/vat_report_xlsx.py,sha256=aa0dLzYdywjmO63ONRYUBTpSGmsPfEjX60CkUbULuo8,2317
53
53
  odoo/addons/account_financial_report/report/templates/aged_partner_balance.xml,sha256=WNaWvMoBR74v6SGj13Tp6Eydxd-zk93Yf3x0dnRIj28,43416
@@ -55,12 +55,12 @@ odoo/addons/account_financial_report/report/templates/general_ledger.xml,sha256=
55
55
  odoo/addons/account_financial_report/report/templates/journal_ledger.xml,sha256=qPupJ-t85k2_H-o12pwOyvpYCpROBkVpSsGaib3mGkI,21619
56
56
  odoo/addons/account_financial_report/report/templates/layouts.xml,sha256=gCejPAn8GLrySSve8pGcs0fY5nr48C3mmyuoEJVZkJ4,1526
57
57
  odoo/addons/account_financial_report/report/templates/open_items.xml,sha256=OxyVnVzPa0UKGNuV2uqgWh7RxMwsWu8OzQbcIV0iDaE,22821
58
- odoo/addons/account_financial_report/report/templates/trial_balance.xml,sha256=q-ShNar7AifnJpSzhkv5OYmc-ydkF9ub_VlsLnOVKPI,47168
58
+ odoo/addons/account_financial_report/report/templates/trial_balance.xml,sha256=u4MvCt5y7uCMCJajpm81miLD6e22w7sSBVIiC6xU86o,52685
59
59
  odoo/addons/account_financial_report/report/templates/vat_report.xml,sha256=F5hQzdM8NTuLW04mT6SMjbdush5r7C81_RXa7NByfAY,8128
60
60
  odoo/addons/account_financial_report/security/ir.model.access.csv,sha256=S1VQLLwLeaOeAMYGqtoOqHUaZVrvDUVE4Z-0-SRjSGQ,1134
61
61
  odoo/addons/account_financial_report/security/security.xml,sha256=gpNJnzruXfeYskn26FqY9U04FiuTf8vgLCKEGY8PADM,422
62
62
  odoo/addons/account_financial_report/static/description/icon.png,sha256=WW-eOIjW5-jo7tgBieNv6K2DUKMoHFSVctnp0htstHI,15230
63
- odoo/addons/account_financial_report/static/description/index.html,sha256=h-S5aP201xgBXNNAyVl1VZweTto393bkxwCzaBfhvjo,19748
63
+ odoo/addons/account_financial_report/static/description/index.html,sha256=vnhIUbULmQnNjLhbBYoCjpvvyTuKJQa6t5Z9kmXglsI,19748
64
64
  odoo/addons/account_financial_report/static/src/css/report.css,sha256=y0CysZUK3afkYSHgBaMi_qmh8da3XXEZwJDjRBg6HqQ,2335
65
65
  odoo/addons/account_financial_report/static/src/css/report_html.css,sha256=I1kX1RsThtjGNLOaNJEWCvMnB9iAFW6nGkcyFYZzJoA,135
66
66
  odoo/addons/account_financial_report/static/src/js/action_manager_report.js,sha256=g8aZkSRMgNcFzQ4f_3mmeKl7oNnoap_cDUxuyGxMT4M,1608
@@ -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=JUOLiUNl6jyGDQACf70hqsBykN5Bax8pGSOTQk2beu8,8247
96
96
  odoo/addons/account_financial_report/wizard/open_items_wizard_view.xml,sha256=B6AEXvVHm02J5Dz75SirpdszyqdPDtpB_7AvSW2X7nE,5226
97
- odoo/addons/account_financial_report/wizard/trial_balance_wizard.py,sha256=hFaHYfWsbJiKZczJJyUhcyuDuvLx69KEePV1zOvVLcE,10652
98
- odoo/addons/account_financial_report/wizard/trial_balance_wizard_view.xml,sha256=7oNGPs3s8DVw3movVGe2ryRUNl1MtN7O76UH8zaFFtI,7048
97
+ odoo/addons/account_financial_report/wizard/trial_balance_wizard.py,sha256=rq4knziPEVaMM2Jl0jXB1q_Zt4HKzTmZ2jeWVAewEEE,11052
98
+ odoo/addons/account_financial_report/wizard/trial_balance_wizard_view.xml,sha256=kzsselPX_jYDWQEbDSXIS5K2vKuyzjTZMdinH0976c0,7413
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-15.0.2.13.0.dist-info/METADATA,sha256=asj72Mnp-ahD1pArLMdBltsaKsIZ2pc14gWo6Okx8z0,7566
102
- odoo_addon_account_financial_report-15.0.2.13.0.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
103
- odoo_addon_account_financial_report-15.0.2.13.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
104
- odoo_addon_account_financial_report-15.0.2.13.0.dist-info/RECORD,,
101
+ odoo_addon_account_financial_report-15.0.3.0.0.dist-info/METADATA,sha256=AK6ULSkVXmGbjU2Gw4sD2zG37007n3dXRmbxD3N5sSs,7565
102
+ odoo_addon_account_financial_report-15.0.3.0.0.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
103
+ odoo_addon_account_financial_report-15.0.3.0.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
104
+ odoo_addon_account_financial_report-15.0.3.0.0.dist-info/RECORD,,