mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-01 11:22:24 +02:00
afficher et calculer le prix de la commande
This commit is contained in:
parent
4e4c0440f7
commit
d03102fe57
4 changed files with 33 additions and 3 deletions
17
la_chariotte/order/migrations/0019_order_price.py
Normal file
17
la_chariotte/order/migrations/0019_order_price.py
Normal file
|
@ -0,0 +1,17 @@
|
|||
# Generated by Django 4.2 on 2023-05-15 09:33
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("order", "0018_order_articles_nb"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="order",
|
||||
name="price",
|
||||
field=models.DecimalField(decimal_places=2, default=0, max_digits=10),
|
||||
),
|
||||
]
|
|
@ -79,6 +79,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)
|
||||
|
||||
def __str__(self): # pragma: no cover
|
||||
return f"Commande de {self.author} pour la commande groupée {self.grouped_order.pk}"
|
||||
|
@ -110,5 +111,8 @@ class OrderedItem(models.Model):
|
|||
)
|
||||
item = models.ForeignKey(Item, on_delete=models.CASCADE, related_name="orders")
|
||||
|
||||
def get_price(self):
|
||||
return self.nb * self.item.price
|
||||
|
||||
def __str__(self): # pragma: no cover
|
||||
return f"{self.nb} {self.item}, dans la commande {self.order.pk}"
|
||||
|
|
|
@ -14,11 +14,10 @@
|
|||
<p><strong>Votre commande</strong></p>
|
||||
<ul>
|
||||
{% for item in order.ordered_items.all %}
|
||||
{% if item.nb > 0 %}
|
||||
<li>{{ item.nb }} {{ item.item }}</li>
|
||||
{% endif %}
|
||||
<li>{{ item.nb }} {{ item.item }} : {{ item.get_price }} €</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<p>Prix total de la commande : <strong>{{ order.price }} €</strong>
|
||||
|
||||
<p>Rendez-vous le <strong>{{ order.grouped_order.delivery_date }}</strong> à <strong>{{ order.grouped_order.place }}</strong> pour récupérer vos produits !</p>
|
||||
|
||||
|
|
|
@ -141,6 +141,7 @@ def order(request, grouped_order_id):
|
|||
OrderedItem.objects.create(nb=v, order=order, item=item)
|
||||
compute_ordered_nb(item)
|
||||
compute_order_articles_nb(order)
|
||||
compute_order_price(order)
|
||||
if order.articles_nb == 0:
|
||||
# Redisplay the order form for this grouped order.
|
||||
return render(
|
||||
|
@ -178,6 +179,15 @@ def compute_order_articles_nb(order):
|
|||
order.save()
|
||||
|
||||
|
||||
def compute_order_price(order):
|
||||
"""Computes the total price of the order"""
|
||||
price = 0
|
||||
for ord_item in order.ordered_items.all():
|
||||
price += ord_item.get_price()
|
||||
order.price = price
|
||||
order.save()
|
||||
|
||||
|
||||
class OrderDetailView(generic.DetailView):
|
||||
"""Confirmation page after a user orders"""
|
||||
|
||||
|
|
Loading…
Reference in a new issue