mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-04 12:51:50 +02:00
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:
commit
bbc2ac9d9f
6 changed files with 68 additions and 25 deletions
|
@ -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):
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
</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>
|
||||
</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>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"],
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue