odoo-addon-account-financial-report 18.0.1.2.6.3__py3-none-any.whl → 18.0.1.3.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 +14 -0
- odoo/addons/account_financial_report/i18n/es.po +15 -1
- odoo/addons/account_financial_report/report/open_items.py +29 -25
- odoo/addons/account_financial_report/report/open_items_xlsx.py +150 -17
- odoo/addons/account_financial_report/report/templates/open_items.xml +176 -50
- odoo/addons/account_financial_report/static/description/index.html +1 -1
- odoo/addons/account_financial_report/tests/test_open_items.py +30 -0
- odoo/addons/account_financial_report/wizard/open_items_wizard.py +18 -0
- odoo/addons/account_financial_report/wizard/open_items_wizard_view.xml +1 -0
- {odoo_addon_account_financial_report-18.0.1.2.6.3.dist-info → odoo_addon_account_financial_report-18.0.1.3.0.dist-info}/METADATA +2 -2
- {odoo_addon_account_financial_report-18.0.1.2.6.3.dist-info → odoo_addon_account_financial_report-18.0.1.3.0.dist-info}/RECORD +15 -15
- {odoo_addon_account_financial_report-18.0.1.2.6.3.dist-info → odoo_addon_account_financial_report-18.0.1.3.0.dist-info}/WHEEL +0 -0
- {odoo_addon_account_financial_report-18.0.1.2.6.3.dist-info → odoo_addon_account_financial_report-18.0.1.3.0.dist-info}/top_level.txt +0 -0
|
@@ -11,7 +11,7 @@ Account Financial Reports
|
|
|
11
11
|
!! This file is generated by oca-gen-addon-readme !!
|
|
12
12
|
!! changes will be overwritten. !!
|
|
13
13
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
14
|
-
!! source digest: sha256:
|
|
14
|
+
!! source digest: sha256:ecc9aa27354484eb81b4932dca2dd1cda89b3be41d684259fb8826b9098b61cf
|
|
15
15
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
16
16
|
|
|
17
17
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
|
@@ -897,6 +897,7 @@ msgstr ""
|
|
|
897
897
|
|
|
898
898
|
#. module: account_financial_report
|
|
899
899
|
#: model:ir.model.fields,field_description:account_financial_report.field_general_ledger_report_wizard__grouped_by
|
|
900
|
+
#: model:ir.model.fields,field_description:account_financial_report.field_open_items_report_wizard__grouped_by
|
|
900
901
|
#: model:ir.model.fields,field_description:account_financial_report.field_trial_balance_report_wizard__grouped_by
|
|
901
902
|
msgid "Grouped By"
|
|
902
903
|
msgstr ""
|
|
@@ -1110,10 +1111,17 @@ msgstr ""
|
|
|
1110
1111
|
#. odoo-python
|
|
1111
1112
|
#: code:addons/account_financial_report/report/general_ledger.py:0
|
|
1112
1113
|
#: code:addons/account_financial_report/report/open_items.py:0
|
|
1114
|
+
#: code:addons/account_financial_report/report/open_items_xlsx.py:0
|
|
1113
1115
|
#: code:addons/account_financial_report/report/trial_balance.py:0
|
|
1114
1116
|
msgid "Missing Partner"
|
|
1115
1117
|
msgstr ""
|
|
1116
1118
|
|
|
1119
|
+
#. module: account_financial_report
|
|
1120
|
+
#. odoo-python
|
|
1121
|
+
#: code:addons/account_financial_report/report/open_items.py:0
|
|
1122
|
+
msgid "Missing Salesperson"
|
|
1123
|
+
msgstr ""
|
|
1124
|
+
|
|
1117
1125
|
#. module: account_financial_report
|
|
1118
1126
|
#: model:ir.model,name:account_financial_report.model_account_age_report_configuration_line
|
|
1119
1127
|
msgid "Model to set interval lines for Age partner balance report"
|
|
@@ -1306,6 +1314,11 @@ msgstr ""
|
|
|
1306
1314
|
msgid "Partner Initial balance"
|
|
1307
1315
|
msgstr ""
|
|
1308
1316
|
|
|
1317
|
+
#. module: account_financial_report
|
|
1318
|
+
#: model:ir.model.fields.selection,name:account_financial_report.selection__open_items_report_wizard__grouped_by__salesperson
|
|
1319
|
+
msgid "Partner Salesperson"
|
|
1320
|
+
msgstr ""
|
|
1321
|
+
|
|
1309
1322
|
#. module: account_financial_report
|
|
1310
1323
|
#. odoo-python
|
|
1311
1324
|
#: code:addons/account_financial_report/report/aged_partner_balance_xlsx.py:0
|
|
@@ -1328,6 +1341,7 @@ msgstr ""
|
|
|
1328
1341
|
|
|
1329
1342
|
#. module: account_financial_report
|
|
1330
1343
|
#: model:ir.model.fields.selection,name:account_financial_report.selection__general_ledger_report_wizard__grouped_by__partners
|
|
1344
|
+
#: model:ir.model.fields.selection,name:account_financial_report.selection__open_items_report_wizard__grouped_by__partners
|
|
1331
1345
|
msgid "Partners"
|
|
1332
1346
|
msgstr ""
|
|
1333
1347
|
|
|
@@ -927,6 +927,7 @@ msgstr "Agrupar por"
|
|
|
927
927
|
|
|
928
928
|
#. module: account_financial_report
|
|
929
929
|
#: model:ir.model.fields,field_description:account_financial_report.field_general_ledger_report_wizard__grouped_by
|
|
930
|
+
#: model:ir.model.fields,field_description:account_financial_report.field_open_items_report_wizard__grouped_by
|
|
930
931
|
#: model:ir.model.fields,field_description:account_financial_report.field_trial_balance_report_wizard__grouped_by
|
|
931
932
|
msgid "Grouped By"
|
|
932
933
|
msgstr "Agrupado por"
|
|
@@ -1150,7 +1151,13 @@ msgstr "Línea"
|
|
|
1150
1151
|
#: code:addons/account_financial_report/report/open_items.py:0
|
|
1151
1152
|
#: code:addons/account_financial_report/report/trial_balance.py:0
|
|
1152
1153
|
msgid "Missing Partner"
|
|
1153
|
-
msgstr "Falta
|
|
1154
|
+
msgstr "Falta la empresa"
|
|
1155
|
+
|
|
1156
|
+
#. module: account_financial_report
|
|
1157
|
+
#: code:addons/account_financial_report/report/open_items.py:0
|
|
1158
|
+
#, python-format
|
|
1159
|
+
msgid "Missing Salesperson"
|
|
1160
|
+
msgstr "Sin comercial"
|
|
1154
1161
|
|
|
1155
1162
|
#. module: account_financial_report
|
|
1156
1163
|
#: model:ir.model,name:account_financial_report.model_account_age_report_configuration_line
|
|
@@ -1348,6 +1355,12 @@ msgstr ""
|
|
|
1348
1355
|
msgid "Partner Initial balance"
|
|
1349
1356
|
msgstr "Saldo Inicial de empresa"
|
|
1350
1357
|
|
|
1358
|
+
#. module: account_financial_report
|
|
1359
|
+
#. odoo-python
|
|
1360
|
+
#: model:ir.model.fields.selection,name:account_financial_report.selection__open_items_report_wizard__grouped_by__salesperson
|
|
1361
|
+
msgid "Partner Salesperson"
|
|
1362
|
+
msgstr "Comercial de la empresa"
|
|
1363
|
+
|
|
1351
1364
|
#. module: account_financial_report
|
|
1352
1365
|
#. odoo-python
|
|
1353
1366
|
#: code:addons/account_financial_report/report/aged_partner_balance_xlsx.py:0
|
|
@@ -1370,6 +1383,7 @@ msgstr "Saldo inicial de empresa"
|
|
|
1370
1383
|
|
|
1371
1384
|
#. module: account_financial_report
|
|
1372
1385
|
#: model:ir.model.fields.selection,name:account_financial_report.selection__general_ledger_report_wizard__grouped_by__partners
|
|
1386
|
+
#: model:ir.model.fields.selection,name:account_financial_report.selection__open_items_report_wizard__grouped_by__partners
|
|
1373
1387
|
msgid "Partners"
|
|
1374
1388
|
msgstr "Empresas"
|
|
1375
1389
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# © 2016 Julien Coux (Camptocamp)
|
|
2
2
|
# Copyright 2020 ForgeFlow S.L. (https://www.forgeflow.com)
|
|
3
|
+
# Copyright 2024 Tecnativa - Carolina Fernandez
|
|
3
4
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
4
5
|
|
|
5
6
|
import operator
|
|
@@ -66,6 +67,7 @@ class OpenItemsReport(models.AbstractModel):
|
|
|
66
67
|
only_posted_moves,
|
|
67
68
|
company_id,
|
|
68
69
|
date_from,
|
|
70
|
+
grouped_by,
|
|
69
71
|
):
|
|
70
72
|
domain = self._get_move_lines_domain_not_reconciled(
|
|
71
73
|
company_id, account_ids, partner_ids, only_posted_moves, date_from
|
|
@@ -75,7 +77,7 @@ class OpenItemsReport(models.AbstractModel):
|
|
|
75
77
|
domain=domain, fields=ml_fields
|
|
76
78
|
)
|
|
77
79
|
journals_ids = set()
|
|
78
|
-
|
|
80
|
+
group_ids = set()
|
|
79
81
|
partners_data = {}
|
|
80
82
|
if date_at_object < date.today():
|
|
81
83
|
(
|
|
@@ -119,29 +121,27 @@ class OpenItemsReport(models.AbstractModel):
|
|
|
119
121
|
journals_ids.add(move_line["journal_id"][0])
|
|
120
122
|
acc_id = move_line["account_id"][0]
|
|
121
123
|
# Partners data
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
124
|
+
partner = self.env["res.partner"]
|
|
125
|
+
if move_line.get("partner_id"):
|
|
126
|
+
partner = self.env["res.partner"].browse(move_line["partner_id"][0])
|
|
127
|
+
if grouped_by == "salesperson":
|
|
128
|
+
user = partner.user_id
|
|
129
|
+
group_id = user.id or 0
|
|
130
|
+
group_name = user.name or _("Missing Salesperson")
|
|
125
131
|
else:
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
if
|
|
129
|
-
partners_data.update({
|
|
130
|
-
|
|
131
|
-
|
|
132
|
+
group_id = partner.id or 0
|
|
133
|
+
group_name = partner.name or _("Missing Partner")
|
|
134
|
+
if group_id not in group_ids:
|
|
135
|
+
partners_data.update({group_id: {"id": group_id, "name": group_name}})
|
|
136
|
+
group_ids.add(group_id)
|
|
132
137
|
# Move line update
|
|
133
|
-
original = 0
|
|
134
|
-
|
|
135
138
|
if not float_is_zero(move_line["credit"], precision_digits=2):
|
|
136
139
|
original = move_line["credit"] * (-1)
|
|
137
|
-
|
|
140
|
+
else:
|
|
138
141
|
original = move_line["debit"]
|
|
139
142
|
|
|
140
143
|
if move_line["ref"] == move_line["name"]:
|
|
141
|
-
|
|
142
|
-
ref_label = move_line["ref"]
|
|
143
|
-
else:
|
|
144
|
-
ref_label = ""
|
|
144
|
+
ref_label = move_line["ref"] or ""
|
|
145
145
|
elif not move_line["ref"]:
|
|
146
146
|
ref_label = move_line["name"]
|
|
147
147
|
elif not move_line["name"]:
|
|
@@ -155,8 +155,8 @@ class OpenItemsReport(models.AbstractModel):
|
|
|
155
155
|
"date_maturity": move_line["date_maturity"]
|
|
156
156
|
and move_line["date_maturity"].strftime("%d/%m/%Y"),
|
|
157
157
|
"original": original,
|
|
158
|
-
"partner_id":
|
|
159
|
-
"partner_name":
|
|
158
|
+
"partner_id": partner.id or 0,
|
|
159
|
+
"partner_name": partner.name or "",
|
|
160
160
|
"ref_label": ref_label,
|
|
161
161
|
"journal_id": move_line["journal_id"][0],
|
|
162
162
|
"move_name": move_line["move_id"][1],
|
|
@@ -172,12 +172,12 @@ class OpenItemsReport(models.AbstractModel):
|
|
|
172
172
|
|
|
173
173
|
# Open Items Move Lines Data
|
|
174
174
|
if acc_id not in open_items_move_lines_data.keys():
|
|
175
|
-
open_items_move_lines_data[acc_id] = {
|
|
175
|
+
open_items_move_lines_data[acc_id] = {group_id: [move_line]}
|
|
176
176
|
else:
|
|
177
|
-
if
|
|
178
|
-
open_items_move_lines_data[acc_id][
|
|
177
|
+
if group_id not in open_items_move_lines_data[acc_id].keys():
|
|
178
|
+
open_items_move_lines_data[acc_id][group_id] = [move_line]
|
|
179
179
|
else:
|
|
180
|
-
open_items_move_lines_data[acc_id][
|
|
180
|
+
open_items_move_lines_data[acc_id][group_id].append(move_line)
|
|
181
181
|
journals_data = self._get_journals_data(list(journals_ids))
|
|
182
182
|
accounts_data = self._get_accounts_data(open_items_move_lines_data.keys())
|
|
183
183
|
return (
|
|
@@ -236,7 +236,9 @@ class OpenItemsReport(models.AbstractModel):
|
|
|
236
236
|
move_lines = []
|
|
237
237
|
for move_line in open_items_move_lines_data[acc_id][prt_id]:
|
|
238
238
|
move_lines += [move_line]
|
|
239
|
-
move_lines = sorted(
|
|
239
|
+
move_lines = sorted(
|
|
240
|
+
move_lines, key=lambda k: (k["date"], k["partner_id"])
|
|
241
|
+
)
|
|
240
242
|
new_open_items[acc_id][prt_id] = move_lines
|
|
241
243
|
return new_open_items
|
|
242
244
|
|
|
@@ -251,7 +253,7 @@ class OpenItemsReport(models.AbstractModel):
|
|
|
251
253
|
date_from = data["date_from"]
|
|
252
254
|
only_posted_moves = data["only_posted_moves"]
|
|
253
255
|
show_partner_details = data["show_partner_details"]
|
|
254
|
-
|
|
256
|
+
grouped_by = data["grouped_by"]
|
|
255
257
|
(
|
|
256
258
|
move_lines_data,
|
|
257
259
|
partners_data,
|
|
@@ -265,6 +267,7 @@ class OpenItemsReport(models.AbstractModel):
|
|
|
265
267
|
only_posted_moves,
|
|
266
268
|
company_id,
|
|
267
269
|
date_from,
|
|
270
|
+
grouped_by,
|
|
268
271
|
)
|
|
269
272
|
|
|
270
273
|
total_amount = self._calculate_amounts(open_items_move_lines_data)
|
|
@@ -290,6 +293,7 @@ class OpenItemsReport(models.AbstractModel):
|
|
|
290
293
|
"accounts_data": accounts_data,
|
|
291
294
|
"total_amount": total_amount,
|
|
292
295
|
"Open_Items": open_items_move_lines_data,
|
|
296
|
+
"grouped_by": grouped_by,
|
|
293
297
|
}
|
|
294
298
|
|
|
295
299
|
def _get_ml_fields(self):
|
|
@@ -101,11 +101,126 @@ class OpenItemsXslx(models.AbstractModel):
|
|
|
101
101
|
def _get_col_pos_final_balance_label(self):
|
|
102
102
|
return 5
|
|
103
103
|
|
|
104
|
-
def
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
104
|
+
def _calculate_amounts_by_partner(self, account_id, open_items_move_lines_data):
|
|
105
|
+
total_amount = {}
|
|
106
|
+
for line in open_items_move_lines_data:
|
|
107
|
+
partner_id_key = line["partner_id"]
|
|
108
|
+
if account_id not in total_amount:
|
|
109
|
+
total_amount[account_id] = {}
|
|
110
|
+
if partner_id_key not in total_amount[account_id]:
|
|
111
|
+
total_amount[account_id][partner_id_key] = {"residual": 0.0}
|
|
112
|
+
total_amount[account_id][partner_id_key]["residual"] += line[
|
|
113
|
+
"amount_residual"
|
|
114
|
+
]
|
|
115
|
+
return total_amount
|
|
116
|
+
|
|
117
|
+
def _generate_report_content_by_salesperson(
|
|
118
|
+
self, workbook, report, data, report_data, res_data
|
|
119
|
+
):
|
|
120
|
+
Open_items = res_data["Open_Items"]
|
|
121
|
+
accounts_data = res_data["accounts_data"]
|
|
122
|
+
partners_data = res_data["partners_data"]
|
|
123
|
+
journals_data = res_data["journals_data"]
|
|
124
|
+
total_amount = res_data["total_amount"]
|
|
125
|
+
|
|
126
|
+
for partner_id in partners_data.keys():
|
|
127
|
+
# Create a new sheet for each partner
|
|
128
|
+
partner_totals = {}
|
|
129
|
+
partner_name = partners_data[partner_id]["name"]
|
|
130
|
+
new_sheet = workbook.add_worksheet(partner_name[:31])
|
|
131
|
+
report_data["sheet"] = new_sheet
|
|
132
|
+
report_data["row_pos"] = 0
|
|
133
|
+
|
|
134
|
+
for account_id in Open_items.keys():
|
|
135
|
+
if partner_id in Open_items[account_id]:
|
|
136
|
+
self.write_array_title(
|
|
137
|
+
accounts_data[account_id]["code"]
|
|
138
|
+
+ " - "
|
|
139
|
+
+ accounts_data[account_id]["name"],
|
|
140
|
+
report_data,
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
# For each partner
|
|
144
|
+
if Open_items[account_id]:
|
|
145
|
+
type_object = "partner"
|
|
146
|
+
# Write partner title
|
|
147
|
+
self.write_array_title(
|
|
148
|
+
partners_data[partner_id]["name"], report_data
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
# Calculate totals by partner_id
|
|
152
|
+
partner_totals = self._calculate_amounts_by_partner(
|
|
153
|
+
account_id, Open_items[account_id][partner_id]
|
|
154
|
+
)
|
|
155
|
+
# Display array header for move lines
|
|
156
|
+
self.write_array_header(report_data)
|
|
157
|
+
# Display account move lines
|
|
158
|
+
has_lines = False
|
|
159
|
+
for partner_id_key, total_amount_dict in partner_totals.get(
|
|
160
|
+
account_id, {}
|
|
161
|
+
).items():
|
|
162
|
+
for line in Open_items[account_id][partner_id]:
|
|
163
|
+
if line["partner_id"] == partner_id_key:
|
|
164
|
+
line.update(
|
|
165
|
+
{
|
|
166
|
+
"account": accounts_data[account_id][
|
|
167
|
+
"code"
|
|
168
|
+
],
|
|
169
|
+
"journal": journals_data[
|
|
170
|
+
line["journal_id"]
|
|
171
|
+
]["code"],
|
|
172
|
+
}
|
|
173
|
+
)
|
|
174
|
+
self.write_line_from_dict(line, report_data)
|
|
175
|
+
has_lines = True
|
|
176
|
+
if has_lines:
|
|
177
|
+
partner = self.env["res.partner"].browse(partner_id_key)
|
|
178
|
+
# Display ending balance line for partner
|
|
179
|
+
partner_data = {
|
|
180
|
+
"id": partner_id_key,
|
|
181
|
+
"name": partner.name
|
|
182
|
+
if partner
|
|
183
|
+
else _("Missing Partner"),
|
|
184
|
+
"currency_id": accounts_data[account_id][
|
|
185
|
+
"currency_id"
|
|
186
|
+
],
|
|
187
|
+
"currency_name": accounts_data[account_id][
|
|
188
|
+
"currency_name"
|
|
189
|
+
],
|
|
190
|
+
"residual": total_amount_dict,
|
|
191
|
+
}
|
|
192
|
+
self.write_ending_balance_from_dict(
|
|
193
|
+
partner_data,
|
|
194
|
+
"partner_subtotal",
|
|
195
|
+
partner_totals,
|
|
196
|
+
report_data,
|
|
197
|
+
account_id=account_id,
|
|
198
|
+
partner_id=partner_id_key,
|
|
199
|
+
)
|
|
200
|
+
has_lines = False
|
|
201
|
+
# Display ending balance line for salesperson
|
|
202
|
+
partners_data[partner_id].update(
|
|
203
|
+
{
|
|
204
|
+
"currency_id": accounts_data[account_id]["currency_id"],
|
|
205
|
+
"currency_name": accounts_data[account_id][
|
|
206
|
+
"currency_name"
|
|
207
|
+
],
|
|
208
|
+
}
|
|
209
|
+
)
|
|
210
|
+
self.write_ending_balance_from_dict(
|
|
211
|
+
partners_data[partner_id],
|
|
212
|
+
type_object,
|
|
213
|
+
total_amount,
|
|
214
|
+
report_data,
|
|
215
|
+
account_id=account_id,
|
|
216
|
+
partner_id=partner_id,
|
|
217
|
+
)
|
|
218
|
+
# Line break
|
|
219
|
+
report_data["row_pos"] += 1
|
|
220
|
+
|
|
221
|
+
def _generate_report_content_by_partner(
|
|
222
|
+
self, workbook, report, data, report_data, res_data
|
|
223
|
+
):
|
|
109
224
|
Open_items = res_data["Open_Items"]
|
|
110
225
|
accounts_data = res_data["accounts_data"]
|
|
111
226
|
partners_data = res_data["partners_data"]
|
|
@@ -120,7 +235,6 @@ class OpenItemsXslx(models.AbstractModel):
|
|
|
120
235
|
+ accounts_data[account_id]["name"],
|
|
121
236
|
report_data,
|
|
122
237
|
)
|
|
123
|
-
|
|
124
238
|
# For each partner
|
|
125
239
|
if Open_items[account_id]:
|
|
126
240
|
if show_partner_details:
|
|
@@ -180,18 +294,33 @@ class OpenItemsXslx(models.AbstractModel):
|
|
|
180
294
|
)
|
|
181
295
|
self.write_line_from_dict(line, report_data)
|
|
182
296
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
297
|
+
# Display ending balance line for account
|
|
298
|
+
type_object = "account"
|
|
299
|
+
self.write_ending_balance_from_dict(
|
|
300
|
+
accounts_data[account_id],
|
|
301
|
+
type_object,
|
|
302
|
+
total_amount,
|
|
303
|
+
report_data,
|
|
304
|
+
account_id=account_id,
|
|
305
|
+
)
|
|
306
|
+
|
|
307
|
+
# 2 lines break
|
|
308
|
+
report_data["row_pos"] += 2
|
|
192
309
|
|
|
193
|
-
|
|
194
|
-
|
|
310
|
+
def _generate_report_content(self, workbook, report, data, report_data):
|
|
311
|
+
res_data = self.env[
|
|
312
|
+
"report.account_financial_report.open_items"
|
|
313
|
+
]._get_report_values(report, data)
|
|
314
|
+
show_partner_details = res_data["show_partner_details"]
|
|
315
|
+
grouped_by = res_data["grouped_by"]
|
|
316
|
+
if grouped_by == "salesperson" and show_partner_details:
|
|
317
|
+
return self._generate_report_content_by_salesperson(
|
|
318
|
+
workbook, report, data, report_data, res_data
|
|
319
|
+
)
|
|
320
|
+
else:
|
|
321
|
+
return self._generate_report_content_by_partner(
|
|
322
|
+
workbook, report, data, report_data, res_data
|
|
323
|
+
)
|
|
195
324
|
|
|
196
325
|
def write_ending_balance_from_dict(
|
|
197
326
|
self,
|
|
@@ -211,6 +340,10 @@ class OpenItemsXslx(models.AbstractModel):
|
|
|
211
340
|
name = my_object["code"] + " - " + my_object["name"]
|
|
212
341
|
my_object["residual"] = total_amount[account_id]["residual"]
|
|
213
342
|
label = _("Ending balance")
|
|
343
|
+
elif type_object == "partner_subtotal":
|
|
344
|
+
name = my_object["name"]
|
|
345
|
+
my_object["residual"] = total_amount[account_id][partner_id]["residual"]
|
|
346
|
+
label = _("Ending balance")
|
|
214
347
|
return super().write_ending_balance_from_dict(
|
|
215
348
|
my_object, name, label, report_data
|
|
216
349
|
)
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
</t>
|
|
10
10
|
</t>
|
|
11
11
|
</template>
|
|
12
|
+
|
|
12
13
|
<template id="account_financial_report.report_open_items_base">
|
|
13
14
|
<!-- Saved flag fields into variables, used to define columns display -->
|
|
14
15
|
<t t-set="foreign_currency" t-value="foreign_currency" />
|
|
@@ -28,51 +29,87 @@
|
|
|
28
29
|
style="text-align: center;"
|
|
29
30
|
/>
|
|
30
31
|
</div>
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
<div class="account_title" style="width: 100%;">
|
|
37
|
-
<span t-esc="accounts_data[account_id]['code']" />
|
|
38
|
-
-
|
|
39
|
-
<span t-esc="accounts_data[account_id]['name']" />
|
|
40
|
-
</div>
|
|
41
|
-
<t t-if="not show_partner_details">
|
|
42
|
-
<div class="act_as_table data_table" style="width: 100%;">
|
|
43
|
-
<t
|
|
44
|
-
t-call="account_financial_report.report_open_items_lines_header"
|
|
45
|
-
/>
|
|
46
|
-
<!-- Display account move lines -->
|
|
47
|
-
<t t-foreach="Open_Items[account_id]" t-as="line">
|
|
48
|
-
<t
|
|
49
|
-
t-call="account_financial_report.report_open_items_lines"
|
|
50
|
-
/>
|
|
51
|
-
</t>
|
|
32
|
+
<t t-if="grouped_by == 'salesperson' and show_partner_details">
|
|
33
|
+
<t t-foreach="partners_data.keys()" t-as="partner_id">
|
|
34
|
+
<t t-call="account_financial_report.report_open_items_filters" />
|
|
35
|
+
<div class="act_as_caption account_title">
|
|
36
|
+
<span t-esc="partners_data[partner_id]['name']" />
|
|
52
37
|
</div>
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
38
|
+
<t t-foreach="Open_Items.keys()" t-as="account_id">
|
|
39
|
+
<t t-if="partner_id in Open_Items[account_id]">
|
|
40
|
+
<div
|
|
41
|
+
class="act_as_table list_table"
|
|
42
|
+
style="margin-top: 10px;"
|
|
43
|
+
/>
|
|
44
|
+
<div class="account_title" style="width: 100%;">
|
|
45
|
+
<span t-esc="accounts_data[account_id]['code']" />
|
|
46
|
+
-
|
|
47
|
+
<span t-esc="accounts_data[account_id]['name']" />
|
|
60
48
|
</div>
|
|
61
|
-
|
|
62
|
-
|
|
49
|
+
|
|
50
|
+
<t t-if="Open_Items[account_id]">
|
|
63
51
|
<t
|
|
64
|
-
t-
|
|
52
|
+
t-set="partner_totals"
|
|
53
|
+
t-value="o._calculate_amounts_by_partner(account_id,Open_Items[account_id][partner_id])"
|
|
65
54
|
/>
|
|
66
|
-
<!-- Display partner move lines -->
|
|
67
55
|
<t
|
|
68
|
-
t-foreach="
|
|
69
|
-
t-as="
|
|
56
|
+
t-foreach="partner_totals.get(account_id, {})"
|
|
57
|
+
t-as="partner_id_key"
|
|
70
58
|
>
|
|
71
|
-
<t
|
|
72
|
-
|
|
73
|
-
|
|
59
|
+
<t t-set="has_lines" t-value="False" />
|
|
60
|
+
<div
|
|
61
|
+
class="act_as_table data_table"
|
|
62
|
+
style="width: 100%;"
|
|
63
|
+
>
|
|
64
|
+
<t
|
|
65
|
+
t-foreach="Open_Items[account_id][partner_id]"
|
|
66
|
+
t-as="line"
|
|
67
|
+
>
|
|
68
|
+
<t
|
|
69
|
+
t-if="line['partner_id'] == partner_id_key"
|
|
70
|
+
>
|
|
71
|
+
<t t-set="has_lines" t-value="True" />
|
|
72
|
+
</t>
|
|
73
|
+
</t>
|
|
74
|
+
<t t-if="has_lines">
|
|
75
|
+
<!-- Display partner header -->
|
|
76
|
+
<t
|
|
77
|
+
t-call="account_financial_report.report_open_items_lines_header"
|
|
78
|
+
/>
|
|
79
|
+
</t>
|
|
80
|
+
<t
|
|
81
|
+
t-foreach="Open_Items[account_id][partner_id]"
|
|
82
|
+
t-as="line"
|
|
83
|
+
>
|
|
84
|
+
<t
|
|
85
|
+
t-if="line['partner_id'] == partner_id_key"
|
|
86
|
+
>
|
|
87
|
+
<!-- Display partner move lines -->
|
|
88
|
+
<t
|
|
89
|
+
t-call="account_financial_report.report_open_items_lines"
|
|
90
|
+
/>
|
|
91
|
+
</t>
|
|
92
|
+
</t>
|
|
93
|
+
</div>
|
|
94
|
+
<!-- Check if there were any lines displayed for the partner -->
|
|
95
|
+
<t t-if="has_lines">
|
|
96
|
+
<!-- Calculate and display subtotal for current partner_id -->
|
|
97
|
+
<t
|
|
98
|
+
t-call="account_financial_report.report_open_items_ending_cumul"
|
|
99
|
+
>
|
|
100
|
+
<t
|
|
101
|
+
t-set="currency_id"
|
|
102
|
+
t-value="accounts_data[account_id]['currency_name']"
|
|
103
|
+
/>
|
|
104
|
+
<t
|
|
105
|
+
t-set="type"
|
|
106
|
+
t-value="'partner_subtotal_type'"
|
|
107
|
+
/>
|
|
108
|
+
</t>
|
|
109
|
+
</t>
|
|
74
110
|
</t>
|
|
75
|
-
</
|
|
111
|
+
</t>
|
|
112
|
+
<!-- Display account footer -->
|
|
76
113
|
<t
|
|
77
114
|
t-call="account_financial_report.report_open_items_ending_cumul"
|
|
78
115
|
>
|
|
@@ -87,23 +124,92 @@
|
|
|
87
124
|
<t t-set="type" t-value='"partner_type"' />
|
|
88
125
|
</t>
|
|
89
126
|
</t>
|
|
90
|
-
</
|
|
127
|
+
</t>
|
|
128
|
+
<div style="page-break-after: always;" />
|
|
91
129
|
</t>
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
<
|
|
99
|
-
|
|
100
|
-
t-
|
|
101
|
-
|
|
102
|
-
|
|
130
|
+
</t>
|
|
131
|
+
<t t-else="">
|
|
132
|
+
<!-- Display filters -->
|
|
133
|
+
<t t-call="account_financial_report.report_open_items_filters" />
|
|
134
|
+
<t t-foreach="Open_Items.keys()" t-as="account_id">
|
|
135
|
+
<!-- Display account header -->
|
|
136
|
+
<div class="act_as_table list_table" style="margin-top: 10px;" />
|
|
137
|
+
<div class="account_title" style="width: 100%;">
|
|
138
|
+
<span t-esc="accounts_data[account_id]['code']" />
|
|
139
|
+
-
|
|
140
|
+
<span t-esc="accounts_data[account_id]['name']" />
|
|
141
|
+
</div>
|
|
142
|
+
<t t-if="not show_partner_details">
|
|
143
|
+
<div class="act_as_table data_table" style="width: 100%;">
|
|
144
|
+
<t
|
|
145
|
+
t-call="account_financial_report.report_open_items_lines_header"
|
|
146
|
+
/>
|
|
147
|
+
<!-- Display account move lines -->
|
|
148
|
+
<t t-foreach="Open_Items[account_id]" t-as="line">
|
|
149
|
+
<t
|
|
150
|
+
t-call="account_financial_report.report_open_items_lines"
|
|
151
|
+
/>
|
|
152
|
+
</t>
|
|
153
|
+
</div>
|
|
154
|
+
</t>
|
|
155
|
+
<t t-if="show_partner_details">
|
|
156
|
+
<div class="page_break">
|
|
157
|
+
<!-- Display account partners -->
|
|
158
|
+
<t t-foreach="Open_Items[account_id]" t-as="partner_id">
|
|
159
|
+
<div class="act_as_caption account_title">
|
|
160
|
+
<span t-esc="partners_data[partner_id]['name']" />
|
|
161
|
+
</div>
|
|
162
|
+
<div
|
|
163
|
+
class="act_as_table data_table"
|
|
164
|
+
style="width: 100%;"
|
|
165
|
+
>
|
|
166
|
+
<!-- Display partner header -->
|
|
167
|
+
<t
|
|
168
|
+
t-call="account_financial_report.report_open_items_lines_header"
|
|
169
|
+
/>
|
|
170
|
+
<!-- Display partner move lines -->
|
|
171
|
+
<t
|
|
172
|
+
t-foreach="Open_Items[account_id][partner_id]"
|
|
173
|
+
t-as="line"
|
|
174
|
+
>
|
|
175
|
+
<t
|
|
176
|
+
t-call="account_financial_report.report_open_items_lines"
|
|
177
|
+
/>
|
|
178
|
+
</t>
|
|
179
|
+
</div>
|
|
180
|
+
<t
|
|
181
|
+
t-call="account_financial_report.report_open_items_ending_cumul"
|
|
182
|
+
>
|
|
183
|
+
<t
|
|
184
|
+
t-set="account_or_partner_id"
|
|
185
|
+
t-value="partners_data[partner_id]"
|
|
186
|
+
/>
|
|
187
|
+
<t
|
|
188
|
+
t-set="currency_id"
|
|
189
|
+
t-value="accounts_data[account_id]['currency_name']"
|
|
190
|
+
/>
|
|
191
|
+
<t t-set="type" t-value='"partner_type"' />
|
|
192
|
+
</t>
|
|
193
|
+
</t>
|
|
194
|
+
</div>
|
|
195
|
+
</t>
|
|
196
|
+
<!-- Display account footer -->
|
|
197
|
+
<t t-call="account_financial_report.report_open_items_ending_cumul">
|
|
198
|
+
<t
|
|
199
|
+
t-set="account_or_partner_id"
|
|
200
|
+
t-value="accounts_data[account_id]"
|
|
201
|
+
/>
|
|
202
|
+
<t
|
|
203
|
+
t-set="currency_id"
|
|
204
|
+
t-value="accounts_data[account_id]['currency_name']"
|
|
205
|
+
/>
|
|
206
|
+
<t t-set="type" t-value='"account_type"' />
|
|
207
|
+
</t>
|
|
103
208
|
</t>
|
|
104
209
|
</t>
|
|
105
210
|
</div>
|
|
106
211
|
</template>
|
|
212
|
+
|
|
107
213
|
<template id="account_financial_report.report_open_items_filters">
|
|
108
214
|
<div class="act_as_table data_table" style="width: 100%;">
|
|
109
215
|
<div class="act_as_row labels">
|
|
@@ -294,6 +400,20 @@
|
|
|
294
400
|
Partner ending balance
|
|
295
401
|
</div>
|
|
296
402
|
</t>
|
|
403
|
+
<t t-if='type == "partner_subtotal_type"'>
|
|
404
|
+
<div class="act_as_cell first_column" style="width: 36.34%;" />
|
|
405
|
+
<t
|
|
406
|
+
t-set="partner"
|
|
407
|
+
t-value="env['res.partner'].browse(partner_id_key)"
|
|
408
|
+
/>
|
|
409
|
+
<t t-if="partner">
|
|
410
|
+
<span t-esc="partner.name" />
|
|
411
|
+
</t>
|
|
412
|
+
<div class="act_as_cell right" style="width: 28.66%;">
|
|
413
|
+
Ending
|
|
414
|
+
balance
|
|
415
|
+
</div>
|
|
416
|
+
</t>
|
|
297
417
|
<!--## date_due-->
|
|
298
418
|
<div class="act_as_cell" style="width: 6.47%;" />
|
|
299
419
|
<!--## amount_total_due-->
|
|
@@ -312,6 +432,12 @@
|
|
|
312
432
|
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
313
433
|
/>
|
|
314
434
|
</t>
|
|
435
|
+
<t t-if='type == "partner_subtotal_type"'>
|
|
436
|
+
<span
|
|
437
|
+
t-esc="partner_totals[account_id][partner_id_key]['residual']"
|
|
438
|
+
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
|
439
|
+
/>
|
|
440
|
+
</t>
|
|
315
441
|
</div>
|
|
316
442
|
<!--## amount_total_due_currency + amount_residual_currency -->
|
|
317
443
|
<t t-if="foreign_currency">
|
|
@@ -372,7 +372,7 @@ ul.auto-toc {
|
|
|
372
372
|
!! This file is generated by oca-gen-addon-readme !!
|
|
373
373
|
!! changes will be overwritten. !!
|
|
374
374
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
375
|
-
!! source digest: sha256:
|
|
375
|
+
!! source digest: sha256:ecc9aa27354484eb81b4932dca2dd1cda89b3be41d684259fb8826b9098b61cf
|
|
376
376
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
|
377
377
|
<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/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/account-financial-reporting/tree/18.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-18-0/account-financial-reporting-18-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=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
|
|
378
378
|
<p>This module adds a set of financial reports. They are accessible under
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# Author: Julien Coux
|
|
2
2
|
# Copyright 2016 Camptocamp SA
|
|
3
|
+
# Copyright 2024 Tecnativa - Carolina Fernandez
|
|
3
4
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
4
5
|
|
|
6
|
+
from odoo.fields import Date
|
|
5
7
|
from odoo.tests import tagged
|
|
6
8
|
|
|
7
9
|
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
|
@@ -22,6 +24,14 @@ class TestOpenItems(AccountTestInvoicingCommon):
|
|
|
22
24
|
tracking_disable=True,
|
|
23
25
|
)
|
|
24
26
|
)
|
|
27
|
+
cls.account001 = cls.env["account.account"].create(
|
|
28
|
+
{
|
|
29
|
+
"code": "001",
|
|
30
|
+
"name": "Account 001",
|
|
31
|
+
"account_type": "income_other",
|
|
32
|
+
"reconcile": True,
|
|
33
|
+
}
|
|
34
|
+
)
|
|
25
35
|
|
|
26
36
|
def test_partner_filter(self):
|
|
27
37
|
partner_1 = self.env.ref("base.res_partner_1")
|
|
@@ -39,3 +49,23 @@ class TestOpenItems(AccountTestInvoicingCommon):
|
|
|
39
49
|
|
|
40
50
|
wizard = self.env["open.items.report.wizard"].with_context(**context)
|
|
41
51
|
self.assertEqual(wizard._default_partners(), expected_list)
|
|
52
|
+
|
|
53
|
+
def test_open_items_grouped_by(self):
|
|
54
|
+
open_item_wizard = self.env["open.items.report.wizard"]
|
|
55
|
+
all_accounts = self.env["account.account"].search(
|
|
56
|
+
[
|
|
57
|
+
("reconcile", "=", True),
|
|
58
|
+
],
|
|
59
|
+
order="code",
|
|
60
|
+
)
|
|
61
|
+
wizard = open_item_wizard.create(
|
|
62
|
+
{
|
|
63
|
+
"date_at": Date.today(),
|
|
64
|
+
"account_code_from": self.account001.id,
|
|
65
|
+
"account_code_to": all_accounts[-1].id,
|
|
66
|
+
"grouped_by": "salesperson",
|
|
67
|
+
}
|
|
68
|
+
)
|
|
69
|
+
wizard.on_change_account_range()
|
|
70
|
+
res = wizard._prepare_report_open_items()
|
|
71
|
+
self.assertEqual(res["grouped_by"], wizard.grouped_by)
|
|
@@ -59,6 +59,10 @@ class OpenItemsReportWizard(models.TransientModel):
|
|
|
59
59
|
comodel_name="account.account",
|
|
60
60
|
help="Ending account in a range",
|
|
61
61
|
)
|
|
62
|
+
grouped_by = fields.Selection(
|
|
63
|
+
selection=[("partners", "Partners"), ("salesperson", "Partner Salesperson")],
|
|
64
|
+
default="partners",
|
|
65
|
+
)
|
|
62
66
|
|
|
63
67
|
@api.onchange("account_code_from", "account_code_to")
|
|
64
68
|
def on_change_account_range(self):
|
|
@@ -134,6 +138,19 @@ class OpenItemsReportWizard(models.TransientModel):
|
|
|
134
138
|
else:
|
|
135
139
|
self.account_ids = None
|
|
136
140
|
|
|
141
|
+
def _calculate_amounts_by_partner(self, account_id, open_items_move_lines_data):
|
|
142
|
+
total_amount = {}
|
|
143
|
+
for line in open_items_move_lines_data:
|
|
144
|
+
partner_id_key = line["partner_id"]
|
|
145
|
+
if account_id not in total_amount:
|
|
146
|
+
total_amount[account_id] = {}
|
|
147
|
+
if partner_id_key not in total_amount[account_id]:
|
|
148
|
+
total_amount[account_id][partner_id_key] = {"residual": 0.0}
|
|
149
|
+
total_amount[account_id][partner_id_key]["residual"] += line[
|
|
150
|
+
"amount_residual"
|
|
151
|
+
]
|
|
152
|
+
return total_amount
|
|
153
|
+
|
|
137
154
|
def _print_report(self, report_type):
|
|
138
155
|
self.ensure_one()
|
|
139
156
|
data = self._prepare_report_open_items()
|
|
@@ -165,6 +182,7 @@ class OpenItemsReportWizard(models.TransientModel):
|
|
|
165
182
|
"account_ids": self.account_ids.ids,
|
|
166
183
|
"partner_ids": self.partner_ids.ids or [],
|
|
167
184
|
"account_financial_report_lang": self.env.lang,
|
|
185
|
+
"grouped_by": self.grouped_by,
|
|
168
186
|
}
|
|
169
187
|
|
|
170
188
|
def _export(self, report_type):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: odoo-addon-account_financial_report
|
|
3
|
-
Version: 18.0.1.
|
|
3
|
+
Version: 18.0.1.3.0
|
|
4
4
|
Requires-Python: >=3.10
|
|
5
5
|
Requires-Dist: odoo-addon-date_range==18.0.*
|
|
6
6
|
Requires-Dist: odoo-addon-report_xlsx==18.0.*
|
|
@@ -29,7 +29,7 @@ Account Financial Reports
|
|
|
29
29
|
!! This file is generated by oca-gen-addon-readme !!
|
|
30
30
|
!! changes will be overwritten. !!
|
|
31
31
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
32
|
-
!! source digest: sha256:
|
|
32
|
+
!! source digest: sha256:ecc9aa27354484eb81b4932dca2dd1cda89b3be41d684259fb8826b9098b61cf
|
|
33
33
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
34
34
|
|
|
35
35
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
odoo/addons/account_financial_report/README.rst,sha256=
|
|
1
|
+
odoo/addons/account_financial_report/README.rst,sha256=ko7XFz9__JjvEcHJ4AsoUXSMAig_8ERboFxz9mr_gHo,7308
|
|
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=z1XSxKDVuXoExw9QnT7Wl3KSTSYzK-N3uIKfWk5Q0XQ,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=ME3vFy_j2WEs36Yn3XwpvsqS8fvlM_xGo6rh0AaTU_U,80536
|
|
7
7
|
odoo/addons/account_financial_report/i18n/ar.po,sha256=KHy7GijuN4mStLkoM59XqzVAmFpMFghCcuBAbgt01NU,94131
|
|
8
8
|
odoo/addons/account_financial_report/i18n/ca.po,sha256=Q9C48xuPBmsjc9Lvk13GbpLY7BVHVvcKMsZMjs_9ojQ,86610
|
|
9
9
|
odoo/addons/account_financial_report/i18n/de.po,sha256=Et3gVHrNOP-y3_xCWHAxZBBtIipAOzxX0yAxkIyMjEM,92498
|
|
10
|
-
odoo/addons/account_financial_report/i18n/es.po,sha256=
|
|
10
|
+
odoo/addons/account_financial_report/i18n/es.po,sha256=Ebi_bM6soUSZEensks9IKlkgdyhJ0wIVlF525S71K_c,90044
|
|
11
11
|
odoo/addons/account_financial_report/i18n/es_AR.po,sha256=aACghbtcAXyo5JL3xjbV8KoY148btyHHuqaOPlcOmak,89458
|
|
12
12
|
odoo/addons/account_financial_report/i18n/es_MX.po,sha256=FvBPNwLX4in3oqGVErLitn1RYWZ1-X9SvkboZuSFqDM,80169
|
|
13
13
|
odoo/addons/account_financial_report/i18n/fr.po,sha256=VBGDMwFRxG1Yav_9cl-rDrbCLQgm4eWS8rq-jvidvac,94148
|
|
@@ -45,8 +45,8 @@ odoo/addons/account_financial_report/report/general_ledger.py,sha256=yHP6utvegBy
|
|
|
45
45
|
odoo/addons/account_financial_report/report/general_ledger_xlsx.py,sha256=PlLj8FMiFRIbniLzMzvaN-p2HUAr7KnJZktRnOpYO24,17553
|
|
46
46
|
odoo/addons/account_financial_report/report/journal_ledger.py,sha256=HvE8TlzMHAXGcNvqN2C8sEYx9CBKLk3a1vsu9X_3xX4,15465
|
|
47
47
|
odoo/addons/account_financial_report/report/journal_ledger_xlsx.py,sha256=gqulSBNfZY5chQFbBxXLUa1I11AlY_NbaIz3lHDeF70,10060
|
|
48
|
-
odoo/addons/account_financial_report/report/open_items.py,sha256=
|
|
49
|
-
odoo/addons/account_financial_report/report/open_items_xlsx.py,sha256=
|
|
48
|
+
odoo/addons/account_financial_report/report/open_items.py,sha256=wyuZ2EcYFFMXyNqBChs3r6YCqmSI_W-bzieuTnCadc8,12556
|
|
49
|
+
odoo/addons/account_financial_report/report/open_items_xlsx.py,sha256=U2mzYDK_GxECJw2B45YhtJfJEQ_M35_snodnaLABKqQ,14931
|
|
50
50
|
odoo/addons/account_financial_report/report/trial_balance.py,sha256=sUnfa-ss9jqMFd0fbqepNMnLwV84ywq87r4y2bEf-m4,42397
|
|
51
51
|
odoo/addons/account_financial_report/report/trial_balance_xlsx.py,sha256=HqSKYcDwqeTcTYHRju7RvR410VjYnOy5vE78bHEWkQs,13246
|
|
52
52
|
odoo/addons/account_financial_report/report/vat_report.py,sha256=Si2hVaxJLwLXfMqzAF0N5dMdbc2eaQtCVM0UmwQMHc0,10249
|
|
@@ -55,13 +55,13 @@ odoo/addons/account_financial_report/report/templates/aged_partner_balance.xml,s
|
|
|
55
55
|
odoo/addons/account_financial_report/report/templates/general_ledger.xml,sha256=t_fB_YVNuD0kZe6fR9Ny1qp_Su9ucpq_IjlEw6N6RNs,39474
|
|
56
56
|
odoo/addons/account_financial_report/report/templates/journal_ledger.xml,sha256=Sc2es_Xi8WWimBFp9JY_QYyAP0mMYHQhPp6Lmn7XHkY,21231
|
|
57
57
|
odoo/addons/account_financial_report/report/templates/layouts.xml,sha256=EDBF0KpmyUzYODauhSIU1QL3zFYjlg3Ynq41K30WqgY,1575
|
|
58
|
-
odoo/addons/account_financial_report/report/templates/open_items.xml,sha256=
|
|
58
|
+
odoo/addons/account_financial_report/report/templates/open_items.xml,sha256=8zjI2NYzyzv3HsMaaV0uvM8dqQhZWwwKHIkei09OV6Q,21940
|
|
59
59
|
odoo/addons/account_financial_report/report/templates/trial_balance.xml,sha256=fOtCCMMvAq7vQpEV0_51O6-YRQHjV9sWbB3NbkYJtYw,53287
|
|
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=W04V75ftvNXLkKh30W8AyVcagAPZAyEqr64zzzrEfgI,20640
|
|
65
65
|
odoo/addons/account_financial_report/static/src/css/report.css,sha256=UYlrKHXNvw3lcwlaTVNCxSQyMDi0JrizZjn4fS5cirw,2354
|
|
66
66
|
odoo/addons/account_financial_report/static/src/css/report_html.css,sha256=WO4wfg0-z87dAqLlqz1LuA_rBizNjlGnCUCeMzSSSYs,149
|
|
67
67
|
odoo/addons/account_financial_report/static/src/js/report.esm.js,sha256=bJcyov25ktGuF-eT_SUGkRLudz-6UNnKR0gmv3e-ZYc,2495
|
|
@@ -72,7 +72,7 @@ odoo/addons/account_financial_report/tests/test_age_report_configuration.py,sha2
|
|
|
72
72
|
odoo/addons/account_financial_report/tests/test_aged_partner_balance.py,sha256=mWF9veN7r15-DhnixhDuh2y6X_itliLgZz3jDMlABrk,4584
|
|
73
73
|
odoo/addons/account_financial_report/tests/test_general_ledger.py,sha256=eCRgwAIqG65sT37Q7udon85OH5PtHyrqBXGAFkZSAqQ,29114
|
|
74
74
|
odoo/addons/account_financial_report/tests/test_journal_ledger.py,sha256=CTMBliHQwxcJjr7bgh8TmMA3OrNxB5DhfmO6OpqjV3o,11063
|
|
75
|
-
odoo/addons/account_financial_report/tests/test_open_items.py,sha256=
|
|
75
|
+
odoo/addons/account_financial_report/tests/test_open_items.py,sha256=ffvvYkg_-s4Eu0KqQE7CKJDsmzCFb_W7WqMYYspKNLY,2480
|
|
76
76
|
odoo/addons/account_financial_report/tests/test_trial_balance.py,sha256=x3yEtA6Djg1VMF0O6KdfH4ZT7sq6DcJQ1wm-9ThsHDY,27668
|
|
77
77
|
odoo/addons/account_financial_report/tests/test_vat_report.py,sha256=9jkMJ9A2lquVkC6x9xkmiZ8YrH4FcySUwKNZw5u5rdM,14617
|
|
78
78
|
odoo/addons/account_financial_report/view/account_age_report_configuration_views.xml,sha256=etQ_Do0Fz251A73gnWiM7lyCMKGiozIT1aU10vTs27Q,1764
|
|
@@ -92,13 +92,13 @@ odoo/addons/account_financial_report/wizard/general_ledger_wizard.py,sha256=izC4
|
|
|
92
92
|
odoo/addons/account_financial_report/wizard/general_ledger_wizard_view.xml,sha256=h33UeqoY0VU0UiA58R1_WVEnHinLEwkE-3TwWO90vo8,7501
|
|
93
93
|
odoo/addons/account_financial_report/wizard/journal_ledger_wizard.py,sha256=coCuXwBUtVP3j8OyiZSxXpiVn3H8T1WkFU8oSI_0qqU,5653
|
|
94
94
|
odoo/addons/account_financial_report/wizard/journal_ledger_wizard_view.xml,sha256=_dratLc_fq4n0S6oBTQqmQE-gc-LKlmwdlH5ywoOelM,2901
|
|
95
|
-
odoo/addons/account_financial_report/wizard/open_items_wizard.py,sha256=
|
|
96
|
-
odoo/addons/account_financial_report/wizard/open_items_wizard_view.xml,sha256=
|
|
95
|
+
odoo/addons/account_financial_report/wizard/open_items_wizard.py,sha256=8ncaypuTTscJ8HuI0AonRBjcDbiS87Sopp9XXdPuXQ0,7402
|
|
96
|
+
odoo/addons/account_financial_report/wizard/open_items_wizard_view.xml,sha256=DgoEkTgBK7Cx349he87g-PB8pCWgrofa7-Sien_30GI,4685
|
|
97
97
|
odoo/addons/account_financial_report/wizard/trial_balance_wizard.py,sha256=H5DOUU4W-JLJXAgJBzC8qD9U0gxao3TM0b-gKaO_jVs,11302
|
|
98
98
|
odoo/addons/account_financial_report/wizard/trial_balance_wizard_view.xml,sha256=aHKMVPiQUfrpfUT0sojCfLUG38Am0DuEZSOHTPTof3k,7221
|
|
99
99
|
odoo/addons/account_financial_report/wizard/vat_report_wizard.py,sha256=SQOpKuTWKjU9F5zfc7NIG0HxhZRHt5Eullia45RA_wM,3430
|
|
100
100
|
odoo/addons/account_financial_report/wizard/vat_report_wizard_view.xml,sha256=3cJ0it2_5w20iw5x8QtTp11HoBk5kqQup6XjgJMbv7U,2274
|
|
101
|
-
odoo_addon_account_financial_report-18.0.1.
|
|
102
|
-
odoo_addon_account_financial_report-18.0.1.
|
|
103
|
-
odoo_addon_account_financial_report-18.0.1.
|
|
104
|
-
odoo_addon_account_financial_report-18.0.1.
|
|
101
|
+
odoo_addon_account_financial_report-18.0.1.3.0.dist-info/METADATA,sha256=PV2-I305O5o9rLqQQihfgPRId-Ufy8tBK4mLhg76DCo,7994
|
|
102
|
+
odoo_addon_account_financial_report-18.0.1.3.0.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
|
|
103
|
+
odoo_addon_account_financial_report-18.0.1.3.0.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
|
|
104
|
+
odoo_addon_account_financial_report-18.0.1.3.0.dist-info/RECORD,,
|
|
File without changes
|