From 3f99de09208a8c9a62a0f31c2216bdef73b6f396 Mon Sep 17 00:00:00 2001 From: thibaud <thibaud@le-filament.com> Date: Wed, 7 Aug 2024 18:14:30 +0200 Subject: [PATCH] [IMP] Added sub total and total line --- controllers/main.py | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/controllers/main.py b/controllers/main.py index 4e3bb04..aa11c01 100644 --- a/controllers/main.py +++ b/controllers/main.py @@ -39,25 +39,45 @@ class JournalDatasExport(http.Controller): ("date", "<=", date_end), ("journal_id", "in", export_id.journal_ids.ids), ("company_id", "=", export_id.company_id.id), - ("move_id.state", "=", "posted"), - ("display_type", "=", False), ] if export_type == "empty": domain += [("date_export", "=", False)] if export_id.export_domain: domain += safe_eval(export_id.export_domain) export_line_ids = request.env["account.move.line"].search(domain) + # FIXME: Crappy could refactor to [[]] or {} to group by invoice name as key + export_line_grouped_by_invoice = export_line_ids.sorted(lambda l: l.move_id.name) lines_to_export = [] - for line in export_line_ids: + initial_sum_line = ['' for _ in range(len(export_id.fields_ids))] + sum_line = initial_sum_line[:] + big_sum_line = None + previous_invoice_name = export_line_grouped_by_invoice[0].move_id.name + for line in export_line_grouped_by_invoice: + if line.name != previous_invoice_name: + lines_to_export.append(sum_line) + if not big_sum_line: + # Initialise bigsum to the same size and value of the sum_line + # So it has not to be initialized with list of empty string + big_sum_line = sum_line[:] + else: + big_sum_line = [value + sum_line[i] for i,value in enumerate(big_sum_line)] + sum_line = initial_sum_line[:] row = [] - for field in export_id.fields_ids: + for key,field in enumerate(export_id.fields_ids): if field.is_python: value = safe_eval(field["field_name"], {"line": line}, mode="eval") + if field.is_sum and value: + if sum_line[key] == '': + sum_line[key] = 0 + sum_line[key] += float(value) else: value = safe_eval(field["field_name"]) row.append(value) lines_to_export.append(row) line.write({"date_export": datetime.now()}) + previous_invoice_name = line.name + lines_to_export.append(sum_line) + lines_to_export.append([value + sum_line[i] for i,value in enumerate(big_sum_line)]) filename_ = ( export_id.company_id.name.title().replace(" ", "") -- GitLab