🗃 Make order sum a decimal field

This commit is contained in:
alve authored and Emma Eilefsen Glenna committed 2024-01-25 19:01:45 +00:00
1 parent 0726754678
commit 19f58211e7
4 files changed
+26 -4

No files matched your search

+2 -1
View File
@@ -1,5 +1,6 @@
from datetime import datetime from datetime import datetime
from typing import List from typing import List
from decimal import Decimal
import strawberry import strawberry
import strawberry_django import strawberry_django
@@ -25,7 +26,7 @@ class UserProfile:
balance: auto balance: auto
image: auto image: auto
last_purchase_date: datetime last_purchase_date: datetime
order_sum_total: float order_sum_total: Decimal
@strawberry.field() @strawberry.field()
def top_months(self) -> List[TopMonth]: def top_months(self) -> List[TopMonth]:
+3 -1
View File
@@ -2,9 +2,11 @@ from django import forms
from bbs.models import InventoryTransaction, Product from bbs.models import InventoryTransaction, Product
MAX_DIGITS = 9
DECIMAL_PLACES = 1
class InventoryTransactionForm(forms.ModelForm): class InventoryTransactionForm(forms.ModelForm):
unit_price = forms.FloatField(required=True, localize=True) unit_price = forms.DecimalField(max_digits=MAX_DIGITS, decimal_places=DECIMAL_PLACES, required=True, localize=True)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
# Only show active products # Only show active products
@@ -0,0 +1,18 @@
# Generated by Django 4.0.2 on 2023-06-28 19:11
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('bbs', '0002_alter_inventorytransaction_amount_and_more'),
]
operations = [
migrations.AlterField(
model_name='order',
name='order_sum',
field=models.DecimalField(db_column='sum', decimal_places=1, max_digits=9),
),
]
+3 -2
View File
@@ -2,6 +2,7 @@ import hashlib
from datetime import datetime from datetime import datetime
from itertools import groupby from itertools import groupby
from typing import Type from typing import Type
from decimal import Decimal
from django.conf import settings from django.conf import settings
from django.db import models from django.db import models
@@ -112,7 +113,7 @@ class Order(models.Model):
blank=True, blank=True,
related_name="orders", related_name="orders",
) )
order_sum = models.FloatField(db_column="sum") order_sum = models.DecimalField(db_column="sum", max_digits=MAX_DIGITS, decimal_places=DECIMAL_PLACES)
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
objects = OrderManager() objects = OrderManager()
@@ -234,7 +235,7 @@ class UserProfile(models.Model):
def product_order_stats(self): def product_order_stats(self):
return OrderLine.objects.filter(order__customer__pk=self.pk).product_order_stats() return OrderLine.objects.filter(order__customer__pk=self.pk).product_order_stats()
def order_sum_total(self) -> float: def order_sum_total(self) -> Decimal:
return Order.objects.filter(customer_id=self.user_id).aggregate(sum=Sum("order_sum"))["sum"] or 0 return Order.objects.filter(customer_id=self.user_id).aggregate(sum=Sum("order_sum"))["sum"] or 0
def image_url(self) -> str: def image_url(self) -> str: