diff --git a/controllers/main.py b/controllers/main.py index 4e3bb04d7f2b2456164ca23a16012e8050c79103..aa11c014270c5025a21e1e2fd4d3e3644cbdaa67 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(" ", "")