diff --git a/copanier/models.py b/copanier/models.py index 2ebd84d..771a342 100644 --- a/copanier/models.py +++ b/copanier/models.py @@ -177,6 +177,10 @@ class Producer(Base): products = delivery.get_products_by(self.id) return any([not p.rupture for p in products]) + def has_rupture_products(self, delivery): + products = delivery.get_products_by(self.id) + return any([p.rupture for p in products]) + def needs_price_update(self, delivery): products = delivery.get_products_by(self.id) return delivery.products_need_price_update(products) @@ -312,7 +316,9 @@ class Delivery(PersistedBase): def products_need_price_update(self, products=None): products = products or self.products max_age = self.from_date.date() - timedelta(days=60) - return any([product.last_update.date() < max_age for product in products]) + return any([product.last_update.date() < max_age + for product in products + if product.producer in self.producers]) @property def dates(self): diff --git a/copanier/templates/delivery/place_order.html b/copanier/templates/delivery/place_order.html index d6e0770..890c543 100644 --- a/copanier/templates/delivery/place_order.html +++ b/copanier/templates/delivery/place_order.html @@ -15,43 +15,47 @@
{% for producer in delivery.producers.values() %} -

{{ producer.name }}

- - - - - - {% if delivery.has_packing %} - - {% endif %} - - {% if delivery.status == delivery.ADJUSTMENT or force_adjustment %} - - {% endif %} - - - - {% for product in delivery.get_products_by(producer.id) %} - - + {% if delivery.status == delivery.ADJUSTMENT or force_adjustment %} + + {% endif %} + + + + {% for product in delivery.get_products_by(producer.id) %} + {% if not product.rupture %} + + + + {% if delivery.has_packing %} + + {% endif %} + + {% if delivery.status == delivery.ADJUSTMENT or force_adjustments %} + + {% endif %} + + {%- endif %} + {% endfor %} + +
ProduitPrixConditionnementCommandeAjustement +/−
{{ product }} {% if product.rupture %}(RUPTURE !){% endif %} - {% if product.description or product.img %} + {% if producer.has_active_products(delivery) %} +

{{ producer.name }}

+ + + + + + {% if delivery.has_packing %} + {% endif %} - - - {% if delivery.has_packing %} - - {% endif %} - - {% if delivery.status == delivery.ADJUSTMENT or force_adjustments %} - - {% endif %} - - {% endfor %} - -
ProduitPrixConditionnement{{ product.price | round(2) }} €{{ product.packing or "—" }}{% if delivery.status == delivery.ADJUSTMENT and delivery.product_missing(product) %} (manque {{ delivery.product_missing(product) }}){% endif %}{% if not (delivery.status == delivery.ADJUSTMENT or force_adjustments) %} x {{ product.unit }}{% endif %} x {{ product.unit }}
+
CommandeAjustement +/−
{{ product }} {% if product.rupture %}(RUPTURE !){% endif %} + {% if product.description or product.img %} + {% endif %} + {{ product.price | round(2) }} €{{ product.packing or "—" }}{% if delivery.status == delivery.ADJUSTMENT and delivery.product_missing(product) %} (manque {{ delivery.product_missing(product) }}){% endif %}{% if not (delivery.status == delivery.ADJUSTMENT or force_adjustments) %} x {{ product.unit }}{% endif %} x {{ product.unit }}
+ {%- endif %} {% endfor %}

On y est presque ! Est-ce que tu peux entrer un numéro de téléphone au cas où on ait besoin de vous joindre ?

- + {% if delivery.status != delivery.CLOSED or request.user.is_staff %} diff --git a/copanier/templates/delivery/show_delivery.html b/copanier/templates/delivery/show_delivery.html index 82e11e3..1cff3f2 100644 --- a/copanier/templates/delivery/show_delivery.html +++ b/copanier/templates/delivery/show_delivery.html @@ -62,6 +62,7 @@ {% endif %} {% endfor %} {% include "includes/delivery_table.html" %} + {% else %}

😔 Pour le moment, cette distribution est bien vide…

diff --git a/copanier/templates/includes/delivery_table.html b/copanier/templates/includes/delivery_table.html index a998d01..f4fa7f4 100644 --- a/copanier/templates/includes/delivery_table.html +++ b/copanier/templates/includes/delivery_table.html @@ -5,92 +5,100 @@ {% endif %} {% for producer in producers %} {% set producer_obj = delivery.producers[producer] %} -

{{ producer_obj.name }} - {% if producer_obj.needs_price_update(delivery) %}*{% endif %} - {% if edit_mode or request.user.is_staff or producer_obj.referent == request.user.email %} - -   Gérer ce⋅tte producteur⋅rice - - {% endif %} -

-
{% if producer_obj.description %}{{ producer_obj.description }}{% endif %}. Référent⋅e : {{ producer_obj.referent_name }} / {{ producer_obj.referent_tel }}
-{% if not delivery.get_products_by(producer) %} -😔 Ce⋅tte producteur⋅rice n'a pas encore de produits. Voulez vous en rajouter un ? -{% else %} - - - - - - {% if delivery.has_packing %} - + {% if edit_mode or producer_obj.has_active_products(delivery) %} +

{{ producer_obj.name }} + {% if producer_obj.needs_price_update(delivery) %}*{% endif %} + {% if edit_mode or request.user.is_staff or producer_obj.referent == request.user.email %} + +   Gérer ce⋅tte producteur⋅rice + {% endif %} -

- {% if not list_only %} - {% for orderer, order in delivery.orders.items() %} - {% set orderer_name = request.groups.groups[orderer].name %} - - - {% if delivery.has_packing %} - - {% endif %} - - - {% if not list_only %} - {% for email, order in delivery.orders.items() %} - - {% endfor %} - {% endif %} - - -
ProduitPrixConditionnementTotal - {% if request.user and (request.user.is_staff or request.user.is_referent(delivery)) %} - {{ orderer_name }} - {% else %} - {{ orderer_name }} + +
{% if producer_obj.description %}{{ producer_obj.description }}{% endif %}Référent⋅e : {{ producer_obj.referent_name }} / {{ producer_obj.referent_tel }}. + {% if not edit_mode and producer_obj.has_rupture_products(delivery) %} +

Certains produits sont en rupture de stock.

+ {% endif %} +
+ {% if not delivery.get_products_by(producer) %} + 😔 Ce⋅tte producteur⋅rice n'a pas encore de produits. Voulez vous en rajouter un ? + {% else %} + + + + + + {% if delivery.has_packing %} + {% endif %} - - {% endfor %} - {% endif %} - - - - {% for product in delivery.get_products_by(producer) %} - - - {% if delivery.has_packing %} - - {% endif %} - - {{ delivery.product_wanted(product) }} - {% if delivery.status == delivery.ADJUSTMENT and delivery.product_missing(product) %} (−{{ delivery.product_missing(product) }}) - {% if request.user.is_staff %}ajuster{% endif %} + + {% if not list_only %} + {% for orderer, order in delivery.orders.items() %} + {% set orderer_name = request.groups.groups[orderer].name %} + + {% endfor %} + {% endif %} + + + + {% for product in delivery.get_products_by(producer) %} + {% if edit_mode or not product.rupture %} + + + {% if delivery.has_packing %} + + {% endif %} + + {{ delivery.product_wanted(product) }} + {% if delivery.status == delivery.ADJUSTMENT and delivery.product_missing(product) %} (−{{ delivery.product_missing(product) }}) + {% if request.user.is_staff %}ajuster{% endif %} + {% endif %} + + {% if not list_only %} + {% for email, order in delivery.orders.items() %} + + {% endfor %} + {% endif %} + {% endif %} - - {% if not list_only %} - {% for email, order in delivery.orders.items() %} - - {% endfor %} - {% endif %} - - {% endfor %} - {% if delivery.shipping.get(producer) %} - - - - {% if delivery.has_packing %} - - {% endif %} - - {% if not list_only %} - {% for email, order in delivery.orders.items() %} - {% endfor %} - {% endif %} - + {% if delivery.shipping.get(producer) %} + + + + {% if delivery.has_packing %} + + {% endif %} + + {% if not list_only %} + {% for email, order in delivery.orders.items() %} + + {% endfor %} + {% endif %} + + {% endif %} + + + {% if delivery.has_packing %} + + {% endif %} + + + {% if not list_only %} + {% for email, order in delivery.orders.items() %} + + {% endfor %} + {% endif %} + + +
ProduitPrixConditionnement
{% if edit_mode %}{% endif %}{% if edit_mode %} {% endif %}{% if product.rupture %} (rupture){% endif %} {{ product }}{% if edit_mode %}{% endif %} - {{ product.price | round(2) }} €{% if product.packing %}{{ product.packing }} x {% endif %} {{ product.unit }}Total + {% if request.user and (request.user.is_staff or request.user.is_referent(delivery)) %} + {{ orderer_name }} + {% else %} + {{ orderer_name }} + {% endif %} +
{% if edit_mode %}{% endif %}{% if edit_mode %} {% endif %}{% if product.rupture %} (rupture){% endif %} {{ product }}{% if edit_mode %}{% endif %} + {{ product.price | round(2) }} €{% if product.packing %}{{ product.packing }} x {% endif %} {{ product.unit }}{{ order[product.ref].quantity or "—" }}
{{ order[product.ref].quantity or "—" }}
Frais de livraison{{ delivery.shipping[producer] }} €{{ delivery.shipping_for(email, producer)|round(2) }} €
Frais de livraison{{ delivery.shipping[producer] }} €{{ delivery.shipping_for(email, producer)|round(2) }} €
Total{{ delivery.total_for_producer(producer) }} €{{ order.total(delivery.get_products_by(producer), delivery, email) }} €
{% endif %} -
Total{{ delivery.total_for_producer(producer) }} €{{ order.total(delivery.get_products_by(producer), delivery, email) }} €
-{% endif %} -
+
+ {%- endif %} {% endfor %} \ No newline at end of file