From c89f1d9466034947d6878d87fbf7d54fa931dbaf Mon Sep 17 00:00:00 2001 From: Alexis M Date: Tue, 24 Sep 2019 01:30:36 +0200 Subject: [PATCH] Fix a few bugs in the reports --- copanier/__init__.py | 12 ++++++-- copanier/emails.py | 1 + copanier/reports.py | 28 ++++++++----------- copanier/templates/emails/order_summary.txt | 2 +- copanier/templates/home.html | 4 +++ .../templates/includes/delivery_head.html | 4 +-- .../templates/includes/delivery_table.html | 1 + .../templates/includes/order_summary.html | 4 +-- copanier/templates/place_order.html | 2 +- copanier/templates/signing_sheet.html | 26 ++++++++++------- 10 files changed, 48 insertions(+), 36 deletions(-) diff --git a/copanier/__init__.py b/copanier/__init__.py index f8d54db..1e8e8c9 100644 --- a/copanier/__init__.py +++ b/copanier/__init__.py @@ -192,7 +192,11 @@ async def home(request, response): if not request['user'].group_id: response.redirect = "/groupes" return - response.html("home.html", incoming=Delivery.incoming(), former=Delivery.former()) + response.html( + "home.html", + incoming=Delivery.incoming(), + former=Delivery.former(), + archives=list(Delivery.all(is_archived=True))) @app.route("/groupes", methods=["GET"]) @@ -516,13 +520,15 @@ async def import_multiple_commands(request, response, id): @app.route("/livraison/{id}/bon-de-commande.xlsx", methods=["GET"]) async def xls_report(request, response, id): delivery = Delivery.load(id) - response.xlsx(reports.summary(delivery)) + date = delivery.to_date.strftime("%Y-%m-%d") + response.xlsx(reports.summary(delivery), filename=f"{config.SITE_NAME}-{date}-bon-de-commande.xlsx") @app.route("/livraison/{id}/rapport-complet.xlsx", methods=["GET"]) async def xls_full_report(request, response, id): delivery = Delivery.load(id) - response.xlsx(reports.full(delivery)) + date = delivery.to_date.strftime("%Y-%m-%d") + response.xlsx(reports.full(delivery), filename=f"{config.SITE_NAME}-{date}-rapport-complet.xlsx") @app.route("/livraison/{id}/ajuster/{ref}", methods=["GET", "POST"]) diff --git a/copanier/emails.py b/copanier/emails.py index 9daf9cd..10af47e 100644 --- a/copanier/emails.py +++ b/copanier/emails.py @@ -38,6 +38,7 @@ def send_order(request, env, person, delivery, order): "order_summary", person.email, f"{config.SITE_NAME} : résumé de la commande {delivery.name}", + display_prices=True, order=order, delivery=delivery, request=request diff --git a/copanier/reports.py b/copanier/reports.py index ec63083..ba79669 100644 --- a/copanier/reports.py +++ b/copanier/reports.py @@ -39,17 +39,14 @@ def summary_for_products(wb, title, delivery, total=None, products=None): def summary(delivery): wb = Workbook() wb.remove(wb.active) - if delivery.has_multiple_producers: - for producer in delivery.producers: - summary_for_products( - wb, - producer, - delivery, - total=delivery.total_for_producer(producer), - products=delivery.get_products_by(producer) - ) - else: - summary_for_products(wb, f"{delivery.name} {delivery.from_date.date()}", delivery) + for producer in delivery.producers: + summary_for_products( + wb, + producer, + delivery, + total=delivery.total_for_producer(producer), + products=delivery.get_products_by(producer) + ) return save_virtual_workbook(wb) @@ -59,13 +56,11 @@ def full(delivery): ws = wb.active ws.title = f"{delivery.name} {delivery.from_date.date()}" headers = ["ref", "produit", "prix"] + [e for e in delivery.orders] + ["total"] - if delivery.has_multiple_producers: - headers.insert(1, "producer") + headers.insert(1, "producer") ws.append(headers) for product in delivery.products: row = [product.ref, str(product), product.price] - if delivery.has_multiple_producers: - row.insert(1, product.producer) + row.insert(1, product.producer) for order in delivery.orders.values(): wanted = order.products.get(product.ref) row.append(wanted.quantity if wanted else 0) @@ -76,8 +71,7 @@ def full(delivery): + [round(o.total(delivery.products),2) for o in delivery.orders.values()] + [round(delivery.total, 2)] ) - if delivery.has_multiple_producers: - footer.insert(1, "") + footer.insert(1, "") ws.append(footer) return save_virtual_workbook(wb) diff --git a/copanier/templates/emails/order_summary.txt b/copanier/templates/emails/order_summary.txt index cb11023..da37e87 100644 --- a/copanier/templates/emails/order_summary.txt +++ b/copanier/templates/emails/order_summary.txt @@ -4,7 +4,7 @@ Voici le résumé de votre commande «{{ delivery.name }}» pour « {{ request[' Produit | Prix unitaire | Quantité -{% for product in delivery.products %}{% if order[product].quantity %}{{ product.name }} | {{ product.price }} € | {{ order[product].quantity }} +{% for product in delivery.products %}{% if order[product].quantity %}{{ product.name }} | {{ product.price }} € | {{ order[product].quantity }} x {{ product.unit }} {% endif %}{% endfor %} Total: {{ order.total(delivery.products) if order else 0 }} € diff --git a/copanier/templates/home.html b/copanier/templates/home.html index 74265cc..4775c8b 100644 --- a/copanier/templates/home.html +++ b/copanier/templates/home.html @@ -4,12 +4,16 @@ {% with deliveries=incoming %} {% include "includes/delivery_list.html" %} {% endwith %} + {% if former %}

Livraisons passées

{% with deliveries=former %} {% include "includes/delivery_list.html" %} {% endwith %} + {% endif %} + {% if archives %} Voir les livraisons archivées
+ {% endif %} diff --git a/copanier/templates/includes/delivery_table.html b/copanier/templates/includes/delivery_table.html index 1779e8c..3f57571 100644 --- a/copanier/templates/includes/delivery_table.html +++ b/copanier/templates/includes/delivery_table.html @@ -1,5 +1,6 @@ {% for producer in delivery.producers %}

{{ producer }}

+

Référent⋅e : {{ delivery.producers[producer].referent }} / {{ delivery.producers[producer].tel_referent }}

diff --git a/copanier/templates/includes/order_summary.html b/copanier/templates/includes/order_summary.html index ea3020f..bc2d3fc 100644 --- a/copanier/templates/includes/order_summary.html +++ b/copanier/templates/includes/order_summary.html @@ -1,10 +1,10 @@
- + {% if display_prices %}{% endif %} {% for product in delivery.products %} {% if order[product].quantity %} - + {% if display_prices %}{% endif %} {% endif %} {% endfor %} diff --git a/copanier/templates/place_order.html b/copanier/templates/place_order.html index 497d7df..793560d 100644 --- a/copanier/templates/place_order.html +++ b/copanier/templates/place_order.html @@ -34,7 +34,7 @@ {% if delivery.has_packing %} - + {% endif %} {% if delivery.status == delivery.ADJUSTMENT or order.has_adjustments %} diff --git a/copanier/templates/signing_sheet.html b/copanier/templates/signing_sheet.html index a7793d8..9ef43f9 100644 --- a/copanier/templates/signing_sheet.html +++ b/copanier/templates/signing_sheet.html @@ -1,10 +1,16 @@ -{% if title %}{{ title }} - {% endif %}{{ config.SITE_NAME }} - - - -

{{ delivery.name }} {{ delivery.from_date.date() }} - liste d'émargement

-{% for email, order in delivery.orders.items() %} -

{{ email }}

- {% include "includes/order_summary.html" %} -
-{% endfor %} + + + + {% if title %}{{ title }} - {% endif %}{{ config.SITE_NAME }} + + + + + +

{{ delivery.name }} {{ delivery.from_date.date() }} - liste d'émargement

+ {% for email, order in delivery.orders.items() %} +

{{ email }}

+ {% include "includes/order_summary.html" %} +
+ {% endfor %} + \ No newline at end of file
ProduitPrix unitaireQuantité
ProduitPrix unitaireQuantité
{{ product }}{{ product.price | round(2) }} €{{ order[product].quantity }}{{ product.price | round(2) }} €{{ order[product].quantity }} x {{ product.unit }}
{{ product.price | round(2) }} €{{ product.packing or "—" }}{% if delivery.status == delivery.ADJUSTMENT and delivery.product_missing(product) %} (−{{ delivery.product_missing(product) }}){% endif %}{{ product.packing or "—" }}{% if delivery.status == delivery.ADJUSTMENT and delivery.product_missing(product) %} (manque {{ delivery.product_missing(product) }}){% endif %} x {{ product.unit }}