mirror of
https://github.com/almet/copanier.git
synced 2025-04-28 11:32:38 +02:00
Merge branch 'handover-delivery'
This commit is contained in:
commit
a1d5a4f577
9 changed files with 80 additions and 82 deletions
|
@ -319,6 +319,7 @@ class Delivery(PersistedBase):
|
||||||
OPEN = 2
|
OPEN = 2
|
||||||
ADJUSTMENT = 3
|
ADJUSTMENT = 3
|
||||||
WAITING_PRODUCTS = 4
|
WAITING_PRODUCTS = 4
|
||||||
|
OVER = 5
|
||||||
|
|
||||||
name: str
|
name: str
|
||||||
from_date: datetime_field
|
from_date: datetime_field
|
||||||
|
@ -332,6 +333,7 @@ class Delivery(PersistedBase):
|
||||||
producers: Dict[str, Producer] = field(default_factory=dict)
|
producers: Dict[str, Producer] = field(default_factory=dict)
|
||||||
orders: Dict[str, Order] = field(default_factory=dict)
|
orders: Dict[str, Order] = field(default_factory=dict)
|
||||||
shipping: Dict[str, price_field] = field(default_factory=dict)
|
shipping: Dict[str, price_field] = field(default_factory=dict)
|
||||||
|
over: bool = False
|
||||||
|
|
||||||
def __post_init__(self):
|
def __post_init__(self):
|
||||||
self.id = None # Not a field because we don't want to persist it.
|
self.id = None # Not a field because we don't want to persist it.
|
||||||
|
@ -339,6 +341,8 @@ class Delivery(PersistedBase):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def status(self):
|
def status(self):
|
||||||
|
if self.over:
|
||||||
|
return self.OVER
|
||||||
if not self.products:
|
if not self.products:
|
||||||
return self.EMPTY
|
return self.EMPTY
|
||||||
if self.products_need_price_update():
|
if self.products_need_price_update():
|
||||||
|
|
|
@ -789,3 +789,11 @@ small {
|
||||||
#instructions {
|
#instructions {
|
||||||
height: 100px;
|
height: 100px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.important-message {
|
||||||
|
padding: 1em;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
background-color: rgba(233, 161, 28, 0.2);
|
||||||
|
border: 2px black dashed;
|
||||||
|
}
|
|
@ -2,6 +2,11 @@
|
||||||
{% block is_wide %}{% endblock %}
|
{% block is_wide %}{% endblock %}
|
||||||
{% block body %}
|
{% block body %}
|
||||||
|
|
||||||
|
{% if delivery.status == delivery.CLOSED %}
|
||||||
|
<div class="important-message">Une fois la distribution terminée, reviens ici pour <a class="button" href="{{ url_for('hand_over_delivery', id=delivery.id) }}">passer le relai !</a></div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<h1>{{ delivery.name }}</h1>
|
<h1>{{ delivery.name }}</h1>
|
||||||
{% include "includes/delivery_progress.html" %}
|
{% include "includes/delivery_progress.html" %}
|
||||||
|
@ -48,8 +53,6 @@
|
||||||
<div class="placeholder center">
|
<div class="placeholder center">
|
||||||
Tu es la personne contact pour l'organisation de cette distribution, merci :-) Pour t'aider, tu peux accéder à
|
Tu es la personne contact pour l'organisation de cette distribution, merci :-) Pour t'aider, tu peux accéder à
|
||||||
<a href="{{ url_for('show_delivery_toolbox', id=delivery.id) }}"><i class="icon-tools"></i> la boîte à outils</a> !
|
<a href="{{ url_for('show_delivery_toolbox', id=delivery.id) }}"><i class="icon-tools"></i> la boîte à outils</a> !
|
||||||
|
|
||||||
{% if delivery.status == delivery.CLOSED %}<p>La distribution est maintenant terminée. C'est le moment de <a href="{{ url_for('hand_over_delivery', id=delivery.id) }}">passer le relai, merci !</a></p>{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if delivery.has_products %}
|
{% if delivery.has_products %}
|
||||||
|
|
|
@ -12,57 +12,7 @@
|
||||||
{% include "includes/delivery_head.html" %}
|
{% include "includes/delivery_head.html" %}
|
||||||
|
|
||||||
<h2>Rappel des dates</h2>
|
<h2>Rappel des dates</h2>
|
||||||
<table class="pure-table fixed-table">
|
{% include "includes/delivery_dates_table.html" %}
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Quoi ?</th><th>Dates</th><th>Coordinatrice⋅eur</th><th>Référent⋅e⋅s produits</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<th>Création de la distribution</th>
|
|
||||||
<td>{{ delivery.dates.creation_date | date}}</td>
|
|
||||||
<td>Rappeler aux référent⋅e⋅s produit de mettre leurs prix à jour, vérifier que tous les producteurs⋅rices sont bien présentes, en ajouter si besoin</td>
|
|
||||||
<td>-</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Mise à jour des prix</th>
|
|
||||||
<td>Du {{ delivery.dates.price_update_start | date }} au {{ delivery.dates.price_update_deadline | date}}</td>
|
|
||||||
<td>—</td>
|
|
||||||
<td>Les référent⋅e⋅s produit mettent les prix à jour.</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Commandes</td>
|
|
||||||
<td>Du {{ delivery.dates.price_update_deadline | date }} au {{ delivery.dates.order_before | date }}</td>
|
|
||||||
<td>Envoyer le lien de commande aux groupes pour qu'iels commandent</td>
|
|
||||||
<td>—</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Ajustements</th>
|
|
||||||
<td>Du {{ delivery.dates.order_before | date }} au {{ delivery.dates.adjustment_deadline | date }}</td>
|
|
||||||
<td>S'assurer que les ajustements sont bien faits par les participant⋅e⋅s</td>
|
|
||||||
<td>Faire les ajustements à la main si besoin</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Approvisionnements</th>
|
|
||||||
<td>Du {{ delivery.dates.adjustment_deadline | date }} au {{ delivery.dates.delivery_date | date }}</td>
|
|
||||||
<td><a href="{{ url_for('send_referent_emails', id=delivery.id) }}">Envoyer les infos de commande aux référent⋅e⋅s</a></td>
|
|
||||||
<td>Faire les commandes aux producteurs⋅rices, <strong>récupérer les produits</strong></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Préparation de la distribution</th>
|
|
||||||
<td>La veille du {{ delivery.dates.delivery_date | date }}</td>
|
|
||||||
<td><a href="{{ url_for('show_orders_summary', id=delivery.id) }}">Imprimer les bons de commandes par colocation</a></td>
|
|
||||||
<td>—</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Distribution</th>
|
|
||||||
<td>{{ delivery.dates.delivery_date | date }}</td>
|
|
||||||
<td>Coordoner la distribution, <a href="{{ url_for('compute_payments', id=delivery.id) }}">faire la répartition des chèques</a></td>
|
|
||||||
<td>Arriver 30mn avant le début de la distribution, répartir les produits par coloc</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<h2>Emails des référent⋅e⋅s</h2>
|
<h2>Emails des référent⋅e⋅s</h2>
|
||||||
<p>Ça peut être utile pour leur envoyer un email groupé.</p>
|
<p>Ça peut être utile pour leur envoyer un email groupé.</p>
|
||||||
|
|
|
@ -2,35 +2,46 @@
|
||||||
|
|
||||||
<p>La personne référente de la dernière distribution vient de la clôturer, et a indiqué que vous étiez la personne référente pour la prochaine distribution.</p>
|
<p>La personne référente de la dernière distribution vient de la clôturer, et a indiqué que vous étiez la personne référente pour la prochaine distribution.</p>
|
||||||
|
|
||||||
<p>Bravo :-)</p>
|
<p>Voici donc quelques infos !</p>
|
||||||
|
|
||||||
{% if email_body %}
|
<h2>Infos de distrib</h2>
|
||||||
<p>Elle vous a même laissé un petit message : </p>
|
|
||||||
|
|
||||||
<p>{{ email_body}}</p>
|
|
||||||
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<p>Voici les informations renseignées :</p>
|
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>Nom : {{ delivery.name }}</li>
|
<li>Nom : {{ delivery.name }}</li>
|
||||||
<li>Date et heure : {{ delivery.from_date|date }} de {{ delivery.from_date|time }} à {{ delivery.to_date|time }}.</li>
|
<li>Date et heure : {{ delivery.from_date|date }} de {{ delivery.from_date|time }} à {{ delivery.to_date|time }}.</li>
|
||||||
<li>Lieu : {{ delivery.location }}</li>
|
<li>Lieu : {{ delivery.where }}</li>
|
||||||
<li>Commandes avant le {{ delivery.order_before|date }}</li>
|
<li>Commandes avant le {{ delivery.order_before|date }}</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
Référent·es produits :
|
<h2>Référent·es produits</h2>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
{% for producer_name, producer in delivery.producers.items() %}
|
||||||
|
<li>{{ producer.name }} : {{ producer.referent_name }} - <a href="mailto:{{ producer.referent }}">{{ producer.referent }}</a> - <a href="tel:{{ producer.referent_tel }}">{{ producer.referent_tel }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
{% for producer_name, producer in delivery.producers.items() %}
|
|
||||||
<li>{{ producer.name }} : {{ producer.referent_name }} - <a href="mailto:{{ producer.referent }}">{{ producer.referent }}</a> - <a href="tel:{{ producer.referent_tel }}">{{ producer.referent_tel }}</a></li>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
|
<h2>Liens utiles</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Distribution : <a href="{{ url_for('show_delivery', id=delivery.id) }}">{{ url_for('show_delivery', id=delivery.id) }}</a></li>
|
||||||
|
<li>Boîte à outils : <a href="{{ url_for('show_delivery_toolbox', id=delivery.id) }}">{{ url_for('show_delivery_toolbox', id=delivery.id) }}</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<p>Si vous avez besoin de modifier ces informations, vous pouvez le faire <a href="{{ url_for('show_delivery', id=delivery.id) }}">en suivant ce lien.</a></p>
|
<p>Au cas où, voici les contacts de dernière personne référente : mail <a href="mailto:{{ old_delivery.contact }}">{{ old_delivery.contact }}</a>, tel <a href="tel:{{ old_delivery.contact_phone }}">{{ old_delivery.contact_phone }}</a></p>
|
||||||
|
|
||||||
|
{% if email_body %}
|
||||||
|
<p>Elle vous a même laissé un petit message : </p>
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<p>{{ email_body}}</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<h2>Rappel des dates</h2>
|
||||||
|
|
||||||
|
<p>(Les dates sont calculées en fonction de ce qui à été renseigné)</p>
|
||||||
|
{% include "includes/delivery_dates_table.html" %}
|
||||||
|
|
||||||
<p>Bonne journée,</p>
|
<p>Bonne journée,</p>
|
||||||
|
|
||||||
|
|
|
@ -2,29 +2,45 @@ Bonjour,
|
||||||
|
|
||||||
La personne référente de la dernière distribution vient de la clôturer, et a indiqué que vous étiez la personne référente pour la prochaine distribution.
|
La personne référente de la dernière distribution vient de la clôturer, et a indiqué que vous étiez la personne référente pour la prochaine distribution.
|
||||||
|
|
||||||
Bravo :-)
|
Voici donc quelques infos !
|
||||||
|
|
||||||
{% if email_body %}
|
Info de distrib
|
||||||
Elle vous a même laissé un petit message : {{ email_body }}
|
———————————————
|
||||||
|
|
||||||
{% endif %}
|
|
||||||
Voici les informations renseignées :
|
|
||||||
|
|
||||||
Nom : {{ delivery.name }}
|
Nom : {{ delivery.name }}
|
||||||
Date et heure : {{ delivery.from_date|date }} de {{ delivery.from_date|time }} à {{ delivery.to_date|time }}.
|
Date et heure : {{ delivery.from_date|date }} de {{ delivery.from_date|time }} à {{ delivery.to_date|time }}.
|
||||||
Lieu : {{ delivery.location }}
|
Lieu : {{ delivery.where }}
|
||||||
Commandes avant le {{ delivery.order_before|date }}.
|
Commandes avant le {{ delivery.order_before|date }}.
|
||||||
|
|
||||||
Référent·es produits :
|
Référent·es produits
|
||||||
|
————————————————————
|
||||||
|
|
||||||
{% for producer_name, producer in delivery.producers.items() %}
|
{% for producer_name, producer in delivery.producers.items() %}
|
||||||
- {{ producer.name }} : {{ producer.referent_name }} - {{ producer.referent }} - {{ producer.referent_tel }}
|
- {{ producer.name }} : {{ producer.referent_name }} - {{ producer.referent }} - {{ producer.referent_tel }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
Si vous avez besoin de modifier ces informations, vous pouvez le faire en suivant ce lien :
|
Liens utiles
|
||||||
|
————————————
|
||||||
|
|
||||||
{{ url_for('show_delivery', id=delivery.id) }}
|
- Distribution : {{ url_for('show_delivery', id=delivery.id) }}
|
||||||
|
- Boîte à outils : {{ url_for('show_delivery_toolbox', id=delivery.id) }} (avec un rappel des dates)
|
||||||
|
|
||||||
|
Au cas où, voici les contacts de dernière personne référente :
|
||||||
|
|
||||||
|
- mail {{ old_delivery.contact }}
|
||||||
|
- tel {{ old_delivery.contact_phone }}
|
||||||
|
|
||||||
|
{% if email_body %}
|
||||||
|
|
||||||
|
Elle vous a même laissé un petit message :
|
||||||
|
|
||||||
|
————
|
||||||
|
|
||||||
|
{{ email_body}}
|
||||||
|
|
||||||
|
————
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
Bonne journée,
|
Bonne journée,
|
||||||
{{ config.EMAIL_SIGNATURE }}
|
{{ config.EMAIL_SIGNATURE }}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<li {% if delivery.status == delivery.OPEN %}class="active"{% endif %}>Commande</li>
|
<li {% if delivery.status == delivery.OPEN %}class="active"{% endif %}>Commande</li>
|
||||||
<li {% if delivery.status == delivery.ADJUSTMENT %}class="active"{% endif %}>Ajustements</li>
|
<li {% if delivery.status == delivery.ADJUSTMENT %}class="active"{% endif %}>Ajustements</li>
|
||||||
<li {% if delivery.status == delivery.WAITING_PRODUCTS %}class="active"{% endif %}>Récupération des commandes</li>
|
<li {% if delivery.status == delivery.WAITING_PRODUCTS %}class="active"{% endif %}>Récupération des commandes</li>
|
||||||
<li>Distribution</li>
|
<li><a href="{{ url_for('show_orders_summary', id=delivery.id) }}">Distribution</a></li>
|
||||||
<li {% if delivery.status == delivery.CLOSED %}class="active"{% endif %}>Répartition des paiements</li>
|
<li {% if delivery.status == delivery.CLOSED %}class="active"{% endif %}><a href="{{ url_for('compute_payments', id=delivery.id) }}">Répartition des paiements</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div style="clear: both"></div>
|
<div style="clear: both"></div>
|
|
@ -1,5 +1,6 @@
|
||||||
{% if delivery.status == delivery.OPEN %}Commandes ouvertes jusqu'au {{ delivery.order_before|date }}
|
{% if delivery.status == delivery.OPEN %}Commandes ouvertes jusqu'au {{ delivery.order_before|date }}
|
||||||
{% elif delivery.status == delivery.ADJUSTMENT %}Ajustements en cours
|
{% elif delivery.status == delivery.ADJUSTMENT %}Ajustements en cours
|
||||||
{% elif delivery.status == delivery.CLOSED %}Fermée
|
{% elif delivery.status == delivery.CLOSED %}Fermée
|
||||||
|
{% elif delivery.status == delivery.OVER %}Terminée
|
||||||
{% elif delivery.status == delivery.NEED_PRICE_UPDATE %}Mise à jour des prix*
|
{% elif delivery.status == delivery.NEED_PRICE_UPDATE %}Mise à jour des prix*
|
||||||
{% endif %}
|
{% endif %}
|
|
@ -70,7 +70,7 @@ async def hand_over_delivery_post(request, response, id):
|
||||||
new_delivery.producers = old_delivery.producers
|
new_delivery.producers = old_delivery.producers
|
||||||
new_delivery.products = old_delivery.products
|
new_delivery.products = old_delivery.products
|
||||||
|
|
||||||
# Update referent fields
|
# Update referent fields.
|
||||||
for producer_id, producer in new_delivery.producers.items():
|
for producer_id, producer in new_delivery.producers.items():
|
||||||
producer.referent = form.get(f'producer_{producer_id}_referent_email')
|
producer.referent = form.get(f'producer_{producer_id}_referent_email')
|
||||||
producer.referent_name = form.get(f'producer_{producer_id}_referent_name')
|
producer.referent_name = form.get(f'producer_{producer_id}_referent_name')
|
||||||
|
@ -78,6 +78,10 @@ async def hand_over_delivery_post(request, response, id):
|
||||||
new_delivery.producers[producer_id] = producer
|
new_delivery.producers[producer_id] = producer
|
||||||
new_delivery.persist()
|
new_delivery.persist()
|
||||||
|
|
||||||
|
# Mark the old delivery as over.
|
||||||
|
old_delivery.over = True
|
||||||
|
old_delivery.persist()
|
||||||
|
|
||||||
emails.send_from_template(
|
emails.send_from_template(
|
||||||
env,
|
env,
|
||||||
"handover_delivery",
|
"handover_delivery",
|
||||||
|
@ -88,6 +92,7 @@ async def hand_over_delivery_post(request, response, id):
|
||||||
email_body = form.get('email_body'),
|
email_body = form.get('email_body'),
|
||||||
hostname=request.host,
|
hostname=request.host,
|
||||||
url_for=app.url_for,
|
url_for=app.url_for,
|
||||||
|
old_delivery=old_delivery
|
||||||
)
|
)
|
||||||
|
|
||||||
response.message("La distribution à bien été créée et le mail envoyé, merci !")
|
response.message("La distribution à bien été créée et le mail envoyé, merci !")
|
||||||
|
|
Loading…
Reference in a new issue