From 89e4664c21cc8704d8b4716f544dd407752e7a48 Mon Sep 17 00:00:00 2001 From: Alexis M Date: Sat, 5 Oct 2019 00:18:31 +0200 Subject: [PATCH] Display names in the debts repartition table. Because multiple referents can exist in the same group, one is picked and considerd as the one who's paying for the group. Closes #18. --- copanier/__init__.py | 20 +++++++--- copanier/models.py | 3 +- copanier/static/app.css | 37 ++++++++++++++++++ copanier/templates/delivery_balance.html | 38 ++----------------- copanier/templates/edit_producer.html | 2 +- .../templates/includes/delivery_table.html | 2 +- 6 files changed, 60 insertions(+), 42 deletions(-) diff --git a/copanier/__init__.py b/copanier/__init__.py index 464c4e7..ea87bed 100644 --- a/copanier/__init__.py +++ b/copanier/__init__.py @@ -358,7 +358,7 @@ async def edit_producer(request, response, delivery_id, producer_id): if request.method == "POST": form = request.form producer.referent = form.get("referent") - producer.tel_referent = form.get("tel_referent") + producer.referent_tel = form.get("referent_tel") producer.description = form.get("description") producer.contact = form.get("contact") delivery.producers[producer_id] = producer @@ -733,12 +733,21 @@ async def delivery_balance(request, response, id): for group_id, order in delivery.orders.items(): balance.append((group_id, order.total(delivery.products) * -1)) + producer_groups = {} + for producer in delivery.producers.values(): group = groups.get_user_group(producer.referent) + # When a group contains multiple producer contacts, + # the first one is elected to receive the money, + # and all the other ones are separated in the table. + group_id = None if hasattr(group, "id"): - group_id = group.id - else: - group_id = group + if group.id not in producer_groups or producer_groups[group.id] == producer.referent_name: + producer_groups[group.id] = producer.referent_name + group_id = group.id + if not group_id: + group_id = producer.referent_name + amount = delivery.total_for_producer(producer.id) if amount: balance.append((group_id, amount)) @@ -759,7 +768,8 @@ async def delivery_balance(request, response, id): "debiters": debiters, "crediters": crediters, "results": results_dict, - "groups": groups.groups, + "debiters_groups": groups.groups, + "crediters_groups": producer_groups, }, ) diff --git a/copanier/models.py b/copanier/models.py index c69264c..bdd9aa6 100644 --- a/copanier/models.py +++ b/copanier/models.py @@ -164,7 +164,8 @@ class Groups(PersistedBase): class Producer(Base): id: str referent: str = "" - tel_referent: str = "" + referent_tel: str = "" + referent_name: str = "" contact: str = "" description: str = "" diff --git a/copanier/static/app.css b/copanier/static/app.css index db59a77..f62e43a 100644 --- a/copanier/static/app.css +++ b/copanier/static/app.css @@ -560,4 +560,41 @@ details summary { .email-template { height: 400px; +} + +code { + font-family: monospace; + padding: .2em .4em; +margin: 0; +font-size: 85%; +background-color: rgba(27,31,35,.05); +border-radius: 3px; +} + +table.paiements { + font-family:Arial, Helvetica, sans-serif; + color:#666; + font-size:12px; + text-shadow: 1px 1px 0px #fff; + background:#eaebec; + box-shadow: 0 1px 2px #d1d1d1; +} +table.paiements tr { + text-align: center; + padding-left:20px; +} +table.paiements td:first-child { + text-align: left; + padding-left:20px; + border-left: 0; +} +table.paiements td { + padding:5px; + border-top: 1px solid #ffffff; + border-bottom:1px solid #e0e0e0; + border-left: 1px solid #e0e0e0; + background: #fafafa; +} +table.paiements tr:hover td { + background: #f2f2f2; } \ No newline at end of file diff --git a/copanier/templates/delivery_balance.html b/copanier/templates/delivery_balance.html index cc589ee..5627b77 100644 --- a/copanier/templates/delivery_balance.html +++ b/copanier/templates/delivery_balance.html @@ -1,45 +1,15 @@ {% extends "base.html" %} -{% block head %} - -{% endblock head %} {% block body %}

Répartition des paiements

- +

Les personnes indiquées avec un * à côté de leur nom sont celles qui ont payé cette commande pour leur groupe.

+
- {% for crediter in crediters %}{% endfor %} + {% for crediter in crediters %}{% endfor %} {% for debiter in debiters %} - + {% for crediter in crediters %} {% set due_amount = results[debiter[0]][crediter[0]] | round(2) %} diff --git a/copanier/templates/edit_producer.html b/copanier/templates/edit_producer.html index 40ec4e5..a6740af 100644 --- a/copanier/templates/edit_producer.html +++ b/copanier/templates/edit_producer.html @@ -25,7 +25,7 @@
{% if crediter[0] in groups %} {{ groups[crediter[0]].name }}{% else %}{{ crediter[0] }}{% endif %} (+{{ crediter[1] | round(2) }}){% if crediter[0] in crediters_groups %} {{ crediters_groups[crediter[0]] }}*{% else %}{{ crediter[0] }}{% endif %} (+{{ crediter[1] | round(2) }})
{% if debiter[0] in groups %} {{ groups[debiter[0]].name }}{% else %}{{ debiter[0] }}{% endif %} ({{ debiter[1] | round(2) }}){% if debiter[0] in debiters_groups %} {{ debiters_groups[debiter[0]].name }}{% else %}{{ debiter[0] }}{% endif %} ({{ debiter[1] | round(2) }})