odoo-addon-account-financial-report 17.0.1.4.0.1__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.

@@ -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=["account_id"],
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=["account_id"],
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=["account_id"],
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
- # 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:4dd0964e1e5bccd75c7c56d0b89bd21f35a0f176bd7b9b69aaebb7db4f3bd729
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&amp;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.4.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:4dd0964e1e5bccd75c7c56d0b89bd21f35a0f176bd7b9b69aaebb7db4f3bd729
27
+ !! source digest: sha256:20ae22a108ec709b3bf88351495514d82435eb77953df3f3164d48b9c58886cc
28
28
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
29
29
 
30
30
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -48,12 +48,12 @@ Account Financial Reports
48
48
  This module adds a set of financial reports. They are accessible under
49
49
  Invoicing / Reporting / OCA accounting reports.
50
50
 
51
- - General ledger
52
- - Trial Balance
53
- - Open Items
54
- - Aged Partner Balance
55
- - VAT Report
56
- - Journal Ledger
51
+ - General ledger
52
+ - Trial Balance
53
+ - Open Items
54
+ - Aged Partner Balance
55
+ - VAT Report
56
+ - Journal Ledger
57
57
 
58
58
  Currently General ledger, Trial Balance and Open Items are fully
59
59
  compatible with a foreign currency set up in account in order to display
@@ -107,12 +107,12 @@ per company in:
107
107
  Known issues / Roadmap
108
108
  ======================
109
109
 
110
- - 'VAT Report' is valid only for cases where it's met that for each Tax
111
- defined: all the "Account tags" of all the 'Repartition for Invoices'
112
- or 'Repartition for Credit Notes' are different.
113
- - It would be nice to have in reports a column indicating the state of
114
- the entries when the option "All Entries" is selected in "Target
115
- Moves" field in a wizard
110
+ - 'VAT Report' is valid only for cases where it's met that for each Tax
111
+ defined: all the "Account tags" of all the 'Repartition for Invoices'
112
+ or 'Repartition for Credit Notes' are different.
113
+ - It would be nice to have in reports a column indicating the state of
114
+ the entries when the option "All Entries" is selected in "Target
115
+ Moves" field in a wizard
116
116
 
117
117
  Changelog
118
118
  =========
@@ -120,22 +120,22 @@ Changelog
120
120
  11.0.2.5.0 (2019-04-26)
121
121
  -----------------------
122
122
 
123
- - In the Trial Balance you have an option to hide parent hierarchy
124
- levels
123
+ - In the Trial Balance you have an option to hide parent hierarchy
124
+ levels
125
125
 
126
126
  11.0.2.4.1 (2019-01-08)
127
127
  -----------------------
128
128
 
129
- - Handle better multicompany behaviour
130
- - Improve how title appears in the reports
131
- - Improve performance in General Ledger
129
+ - Handle better multicompany behaviour
130
+ - Improve how title appears in the reports
131
+ - Improve performance in General Ledger
132
132
 
133
133
  11.0.2.3.1 (2018-11-29)
134
134
  -----------------------
135
135
 
136
- - In the Trial Balance you can apply a filter by hierarchy levels
137
- - In the General Ledger you can apply a filter by Analytic Tag
138
- - In the Journal Ledger the field 'Journal' is now optional
136
+ - In the Trial Balance you can apply a filter by hierarchy levels
137
+ - In the General Ledger you can apply a filter by Analytic Tag
138
+ - In the Journal Ledger the field 'Journal' is now optional
139
139
 
140
140
  Bug Tracker
141
141
  ===========
@@ -161,42 +161,42 @@ Authors
161
161
  Contributors
162
162
  ------------
163
163
 
164
- - Jordi Ballester <jordi.ballester@forgeflow.com>
165
- - Yannick Vaucher <yannick.vaucher@camptocamp.com>
166
- - Simone Orsi <simone.orsi@abstract.com>
167
- - Leonardo Pistone <leonardo.pistone@camptocamp.com>
168
- - Damien Crier <damien.crier@camptocamp.com>
169
- - Andrea Stirpe <a.stirpe@onestein.nl>
170
- - Thomas Rehn <thomas.rehn@initos.com>
171
- - Andrea Gallina <4everamd@gmail.com>
172
- - Robert Rottermann <robert@redcor.ch>
173
- - Ciro Urselli <c.urselli@apuliasoftware.it>
174
- - Francesco Apruzzese <opencode@e-ware.org>
175
- - Lorenzo Battistini <https://github.com/eLBati>
176
- - Julien Coux <julien.coux@camptocamp.com>
177
- - Akim Juillerat <akim.juillerat@camptocamp.com>
178
- - Alexis de Lattre <alexis@via.ecp.fr>
179
- - Mihai Fekete <feketemihai@gmail.com>
180
- - Miquel Ra??ch <miquel.raich@forgeflow.com>
181
- - Joan Sisquella <joan.sisquella@forgeflow.com>
182
- - `Tecnativa <https://www.tecnativa.com>`__:
183
-
184
- - Pedro M. Baeza
185
- - Sergio Teruel
186
- - Ernesto Tejeda
187
- - Jo??o Marques
188
- - Alexandre D. D??az
189
- - V??ctor Mart??nez
190
- - Carolina Fernandez
191
-
192
- - `Sygel <https://www.sygel.es>`__:
193
-
194
- - Harald Panten
195
- - Valentin Vinagre
196
-
197
- - Lois Rilo <lois.rilo@forgeflow.com>
198
- - Saran Lim. <saranl@ecosoft.co.th>
199
- - Omar Casti??eira <omar@comunitea.com>
164
+ - Jordi Ballester <jordi.ballester@forgeflow.com>
165
+ - Yannick Vaucher <yannick.vaucher@camptocamp.com>
166
+ - Simone Orsi <simone.orsi@abstract.com>
167
+ - Leonardo Pistone <leonardo.pistone@camptocamp.com>
168
+ - Damien Crier <damien.crier@camptocamp.com>
169
+ - Andrea Stirpe <a.stirpe@onestein.nl>
170
+ - Thomas Rehn <thomas.rehn@initos.com>
171
+ - Andrea Gallina <4everamd@gmail.com>
172
+ - Robert Rottermann <robert@redcor.ch>
173
+ - Ciro Urselli <c.urselli@apuliasoftware.it>
174
+ - Francesco Apruzzese <opencode@e-ware.org>
175
+ - Lorenzo Battistini <https://github.com/eLBati>
176
+ - Julien Coux <julien.coux@camptocamp.com>
177
+ - Akim Juillerat <akim.juillerat@camptocamp.com>
178
+ - Alexis de Lattre <alexis@via.ecp.fr>
179
+ - Mihai Fekete <feketemihai@gmail.com>
180
+ - Miquel Ra??ch <miquel.raich@forgeflow.com>
181
+ - Joan Sisquella <joan.sisquella@forgeflow.com>
182
+ - `Tecnativa <https://www.tecnativa.com>`__:
183
+
184
+ - Pedro M. Baeza
185
+ - Sergio Teruel
186
+ - Ernesto Tejeda
187
+ - Jo??o Marques
188
+ - Alexandre D. D??az
189
+ - V??ctor Mart??nez
190
+ - Carolina Fernandez
191
+
192
+ - `Sygel <https://www.sygel.es>`__:
193
+
194
+ - Harald Panten
195
+ - Valentin Vinagre
196
+
197
+ - Lois Rilo <lois.rilo@forgeflow.com>
198
+ - Saran Lim. <saranl@ecosoft.co.th>
199
+ - Omar Casti??eira <omar@comunitea.com>
200
200
 
201
201
  Much of the work in this module was done at a sprint in Sorrento, Italy
202
202
  in April 2016.