From 23645839525fdcb1601d8e7e6ede637c3adba727 Mon Sep 17 00:00:00 2001 From: Mono Mono Date: Sun, 2 Mar 2025 23:14:55 -0500 Subject: [PATCH] refactor(views): extract to method. --- tienda_ilusion/don_confiao/views.py | 77 +++++++++++++++-------------- 1 file changed, 41 insertions(+), 36 deletions(-) diff --git a/tienda_ilusion/don_confiao/views.py b/tienda_ilusion/don_confiao/views.py index 9746ee6..22dcf3f 100644 --- a/tienda_ilusion/don_confiao/views.py +++ b/tienda_ilusion/don_confiao/views.py @@ -163,8 +163,7 @@ def handle_import_customers_file(csv_file): } ) - -def exportar_ventas_para_tryton(request): +def _sales_to_tryton_csv(sales): tryton_sales_header = [ "Tercero", "Dirección de facturación", @@ -186,44 +185,50 @@ def exportar_ventas_para_tryton(request): "Comentario" ] + csv_data = [tryton_sales_header] + for sale in sales: + sale_lines = SaleLine.objects.filter(sale=sale.id) + if not sale_lines: + continue + lines = [] + first_sale_line = sale_lines[0] + customer_info = [sale.customer.name] * 3 + [sale.description] * 2 + first_line = customer_info + [ + sale.date, + "Contado", + "Almacén", + "Peso colombiano", + first_sale_line.product.name, + first_sale_line.quantity, + first_sale_line.unit_price, + "Unidad", + "TIENDA LA ILUSIÓN", + "Tienda La Ilusion", + "La Ilusion", + True, + sale.description] + lines.append(first_line) + for line in sale_lines[1:]: + lines.append([""]*9+[ + line.product.name, + line.quantity, + line.unit_price, + "Unidad"]+[""]*5) + for row in lines: + csv_data.append(row) + + return csv_data + + +def exportar_ventas_para_tryton(request): if request.method == "GET": response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = "attachment; filename=sales.csv" - writer = csv.writer(response) - writer.writerow(tryton_sales_header) - sales = Sale.objects.all() - - for sale in sales: - sale_lines = SaleLine.objects.filter(sale=sale.id) - if not sale_lines: - continue - lines = [] - first_sale_line = sale_lines[0] - customer_info = [sale.customer.name] * 3 + [sale.description] * 2 - first_line = customer_info + [ - sale.date, - "Contado", - "Almacén", - "Peso colombiano", - first_sale_line.product.name, - first_sale_line.quantity, - first_sale_line.unit_price, - "Unidad", - "TIENDA LA ILUSIÓN", - "Tienda La Ilusion", - "La Ilusion", - True, - sale.description] - lines.append(first_line) - for line in sale_lines[1:]: - lines.append([""]*9+[ - line.product.name, - line.quantity, - line.unit_price, - "Unidad"]+[""]*5) - for row in lines: - writer.writerow(row) + csv_data = _sales_to_tryton_csv(sales) + writer = csv.writer(response) + for row in csv_data: + writer.writerow(row) return response