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 %}
Produit | Prix unitaire | Quantité | ||
---|---|---|---|---|
Produit | {% if display_prices %}Prix unitaire | {% endif %}Quantité | ||
{{ product }} | -{{ product.price | round(2) }} € | {{ order[product].quantity }} | + {% if display_prices %}{{ product.price | round(2) }} € | {% endif %}{{ order[product].quantity }} x {{ product.unit }} | {{ product.price | round(2) }} € | {% if delivery.has_packing %} -{{ 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 %} | {% endif %}x {{ product.unit }} | {% 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 @@ -