Merge branch 'feature/146/add-date-and-notes-informations-on-csv' into 'develop'

[146] add date and notes informations on csv

Closes #146

See merge request la-chariotte/la_chariotte!95
This commit is contained in:
Pauline ATTAL 2024-09-14 10:56:40 +00:00
commit bbc2ac9d9f
6 changed files with 68 additions and 25 deletions

View file

@ -119,7 +119,7 @@ class Order(models.Model):
author = models.ForeignKey(OrderAuthor, on_delete=models.CASCADE)
articles_nb = models.PositiveIntegerField(default=0)
price = models.DecimalField(max_digits=10, decimal_places=2, default=0)
created_date = models.DateTimeField("Date de la commande", auto_now_add=True)
created_date = models.DateTimeField("Date et heure de commande", auto_now_add=True)
note = models.TextField(max_length=200, null=True, blank=True)
def compute_order_articles_nb(self):

View file

@ -33,7 +33,7 @@
{% endif %}
<p><i class="fa fa-calendar-check-o mr-3" aria-label="Date limite de commande"
title="Date limite de commande" aria-hidden="true"></i>
Commandes avant le {{ grouped_order.deadline }}
Commandes avant le {{ grouped_order.deadline|date:'d M Y' }} à {{ grouped_order.deadline|date:'H:i' }}
</p>
<p><i class="fa fa-truck mr-3" aria-label="Date de livraison" title="Date de livraison"
aria-hidden="true"></i>

View file

@ -25,7 +25,7 @@
<p><i class="fa fa-map-pin mr-3" aria-label="Lieu" title="Lieu" aria-hidden="true"></i>{{ grouped_order.place }}</p>
{% endif %}
<p><i class="fa fa-calendar-check-o mr-3" aria-label="Date limite de commande" title="Date limite de commande" aria-hidden="true"></i>
Commandes avant le {{ grouped_order.deadline }}
Commandes avant le {{ grouped_order.deadline|date:'d M Y' }} à {{ grouped_order.deadline|date:'H:i' }}
</p>
<p><i class="fa fa-truck mr-3" aria-label="Date de livraison" title="Date de livraison" aria-hidden="true"></i>
Livraison le {{ grouped_order.delivery_date }}{% if grouped_order.delivery_slot %}, {{ grouped_order.delivery_slot }}{% endif %}
@ -180,40 +180,33 @@
<!-- Order detail modal -->
<div id="order-detail-{{ order.id }}" class="modal">
<div class="modal-background"></div>
<div class="modal-card">
<div class="modal-card ">
<header class="modal-card-head has-background-info">
<div class="modal-card-title-container">
<p class="modal-card-title">Commande de {{ order.author }}</p>
<p class="modal-card-title mb-2">Commande de {{ order.author }}</p>
<p class="has-text-grey-dark">Le {{ order.created_date|date:'d M Y' }} à {{ order.created_date|date:'H:i' }}</p>
</div>
<button class="delete" aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="columns is-multiline">
<div class="column is-full">
<div class="columns">
<div class="column">
{% for item in order.ordered_items.all %}
{{ item.nb }} × {{ item.item.name }}
<hr class="mb-1 mt-1">
<hr class="mb-0 mt-1">
{% endfor %}
</div>
{% if order.note %}
<div class="column is-full">
<div class="column is-4">
<p class="mini-title">Note à l'organisateur·ice</p>
<p>{{ order.note }}</p>
</div>
{% endif %}
<div class="column is-full">
<p class="mini-title">Numéro de téléphone</p>
<p>{{ order.author.phone }}</p>
</div>
</div>
{% endif %}
</section>
<footer class="modal-card-foot">
<div class="columns">
<div class="column is-half">
<p class="mini-title">Total à payer</p>
<p>{{ order.price }} €</p>
</div>
</div>
<p class="mini-title">Total à payer</p>
<p>{{ order.price }} €</p>
</footer>
</div>
</div>

View file

@ -374,6 +374,9 @@ class ExportGroupedOrderToCSVView(GroupedOrderExportView):
row.append("Prix de la commande")
row.append("Mail")
row.append("Téléphone")
row.append("Note")
row.append("Date")
row.append("Heure")
writer.writerow(row)
row = ["", "Prix unitaire TTC (€)"]
@ -393,6 +396,9 @@ class ExportGroupedOrderToCSVView(GroupedOrderExportView):
row.append(str(order.price).replace(".", ","))
row.append(order.author.email)
row.append(f"'{order.author.phone}")
row.append(order.note)
row.append(order.created_date.strftime("%d/%m/%Y"))
row.append(order.created_date.strftime("%H:%M"))
writer.writerow(row)
# write total row

View file

@ -2,6 +2,7 @@ from django import http
from django.contrib.auth.mixins import UserPassesTestMixin
from django.shortcuts import get_object_or_404, render
from django.urls import reverse, reverse_lazy
from django.utils import timezone
from django.views import generic
from la_chariotte.mail.utils import send_order_confirmation_mail
@ -48,7 +49,12 @@ def place_order(request, code):
author = OrderAuthor.objects.create(
first_name=first_name, last_name=last_name, email=email, phone=phone
)
order = Order.objects.create(author=author, grouped_order=grouped_order, note=note)
order = Order.objects.create(
author=author,
grouped_order=grouped_order,
note=note,
created_date=timezone.now(),
)
# add items to the order
error_message = None

View file

@ -1631,6 +1631,8 @@ class TestExportGroupedOrderToCSVView:
content = response.content.decode("utf-8")
csv_reader = csv.reader(StringIO(content))
body = list(csv_reader)
created_date = f"{timezone.now().strftime('%d/%m/%Y')}"
created_time = f"{timezone.now().strftime('%H:%M')}"
assert body == [
[
"",
@ -1640,11 +1642,47 @@ class TestExportGroupedOrderToCSVView:
"Prix de la commande",
"Mail",
"Téléphone",
"Note",
"Date",
"Heure",
],
["", "Prix unitaire TTC (€)", "2,00", "9,00"],
["Nom", "Prénom"],
["alescargot", "bob", "1", "0", "2,00", "bob2@escargot.fr", "'000"],
["alescargot", "bobby", "0", "1", "9,00", "bob3@escargot.fr", "'000"],
["lescargot", "bob", "3", "2", "24,00", "bob@escargot.fr", "'000"],
[
"alescargot",
"bob",
"1",
"0",
"2,00",
"bob2@escargot.fr",
"'000",
"",
created_date,
created_time,
],
[
"alescargot",
"bobby",
"0",
"1",
"9,00",
"bob3@escargot.fr",
"'000",
"",
created_date,
created_time,
],
[
"lescargot",
"bob",
"3",
"2",
"24,00",
"bob@escargot.fr",
"'000",
"",
created_date,
created_time,
],
["", "TOTAL", "4", "3", "35,00"],
]