mirror of
https://github.com/ae-utbm/sith.git
synced 2025-03-28 16:17:11 +00:00
move CurrencyField to counter
This commit is contained in:
parent
1be3a23200
commit
cda824ad56
@ -4,7 +4,7 @@ import django.core.validators
|
|||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
import accounting.models
|
import counter.fields
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
@ -142,7 +142,7 @@ class Migration(migrations.Migration):
|
|||||||
),
|
),
|
||||||
(
|
(
|
||||||
"amount",
|
"amount",
|
||||||
accounting.models.CurrencyField(
|
counter.fields.CurrencyField(
|
||||||
decimal_places=2,
|
decimal_places=2,
|
||||||
default=0,
|
default=0,
|
||||||
verbose_name="amount",
|
verbose_name="amount",
|
||||||
@ -151,7 +151,7 @@ class Migration(migrations.Migration):
|
|||||||
),
|
),
|
||||||
(
|
(
|
||||||
"effective_amount",
|
"effective_amount",
|
||||||
accounting.models.CurrencyField(
|
counter.fields.CurrencyField(
|
||||||
decimal_places=2,
|
decimal_places=2,
|
||||||
default=0,
|
default=0,
|
||||||
verbose_name="effective_amount",
|
verbose_name="effective_amount",
|
||||||
@ -176,7 +176,7 @@ class Migration(migrations.Migration):
|
|||||||
("number", models.IntegerField(verbose_name="number")),
|
("number", models.IntegerField(verbose_name="number")),
|
||||||
(
|
(
|
||||||
"amount",
|
"amount",
|
||||||
accounting.models.CurrencyField(
|
counter.fields.CurrencyField(
|
||||||
decimal_places=2, max_digits=12, verbose_name="amount"
|
decimal_places=2, max_digits=12, verbose_name="amount"
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
|
||||||
from decimal import Decimal
|
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core import validators
|
from django.core import validators
|
||||||
@ -23,34 +22,7 @@ from phonenumber_field.modelfields import PhoneNumberField
|
|||||||
|
|
||||||
from club.models import Club
|
from club.models import Club
|
||||||
from core.models import SithFile
|
from core.models import SithFile
|
||||||
|
from counter.fields import CurrencyField
|
||||||
|
|
||||||
class CurrencyField(models.DecimalField):
|
|
||||||
"""Custom database field used for currency."""
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
kwargs["max_digits"] = 12
|
|
||||||
kwargs["decimal_places"] = 2
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
def to_python(self, value):
|
|
||||||
try:
|
|
||||||
return super().to_python(value).quantize(Decimal("0.01"))
|
|
||||||
except AttributeError:
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
if settings.TESTING:
|
|
||||||
from model_bakery import baker
|
|
||||||
|
|
||||||
baker.generators.add(
|
|
||||||
CurrencyField,
|
|
||||||
lambda: baker.random_gen.gen_decimal(max_digits=8, decimal_places=2),
|
|
||||||
)
|
|
||||||
else: # pragma: no cover
|
|
||||||
# baker is only used in tests, so we don't need coverage for this part
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
# Accounting classes
|
# Accounting classes
|
||||||
|
|
||||||
|
30
counter/fields.py
Normal file
30
counter/fields.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
from decimal import Decimal
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
class CurrencyField(models.DecimalField):
|
||||||
|
"""Custom database field used for currency."""
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
kwargs["max_digits"] = 12
|
||||||
|
kwargs["decimal_places"] = 2
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
def to_python(self, value):
|
||||||
|
if value is None:
|
||||||
|
return None
|
||||||
|
return super().to_python(value).quantize(Decimal("0.01"))
|
||||||
|
|
||||||
|
|
||||||
|
if settings.TESTING:
|
||||||
|
from model_bakery import baker
|
||||||
|
|
||||||
|
baker.generators.add(
|
||||||
|
CurrencyField,
|
||||||
|
lambda: baker.random_gen.gen_decimal(max_digits=8, decimal_places=2),
|
||||||
|
)
|
||||||
|
else: # pragma: no cover
|
||||||
|
# baker is only used in tests, so we don't need coverage for this part
|
||||||
|
pass
|
@ -4,7 +4,7 @@ import django.db.models.deletion
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
import accounting.models
|
import counter.fields
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
@ -78,7 +78,7 @@ class Migration(migrations.Migration):
|
|||||||
),
|
),
|
||||||
(
|
(
|
||||||
"amount",
|
"amount",
|
||||||
accounting.models.CurrencyField(
|
counter.fields.CurrencyField(
|
||||||
decimal_places=2, max_digits=12, verbose_name="amount"
|
decimal_places=2, max_digits=12, verbose_name="amount"
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -145,19 +145,19 @@ class Migration(migrations.Migration):
|
|||||||
),
|
),
|
||||||
(
|
(
|
||||||
"purchase_price",
|
"purchase_price",
|
||||||
accounting.models.CurrencyField(
|
counter.fields.CurrencyField(
|
||||||
decimal_places=2, max_digits=12, verbose_name="purchase price"
|
decimal_places=2, max_digits=12, verbose_name="purchase price"
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"selling_price",
|
"selling_price",
|
||||||
accounting.models.CurrencyField(
|
counter.fields.CurrencyField(
|
||||||
decimal_places=2, max_digits=12, verbose_name="selling price"
|
decimal_places=2, max_digits=12, verbose_name="selling price"
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"special_selling_price",
|
"special_selling_price",
|
||||||
accounting.models.CurrencyField(
|
counter.fields.CurrencyField(
|
||||||
decimal_places=2,
|
decimal_places=2,
|
||||||
max_digits=12,
|
max_digits=12,
|
||||||
verbose_name="special selling price",
|
verbose_name="special selling price",
|
||||||
@ -240,7 +240,7 @@ class Migration(migrations.Migration):
|
|||||||
),
|
),
|
||||||
(
|
(
|
||||||
"amount",
|
"amount",
|
||||||
accounting.models.CurrencyField(
|
counter.fields.CurrencyField(
|
||||||
decimal_places=2, max_digits=12, verbose_name="amount"
|
decimal_places=2, max_digits=12, verbose_name="amount"
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -324,7 +324,7 @@ class Migration(migrations.Migration):
|
|||||||
("label", models.CharField(max_length=64, verbose_name="label")),
|
("label", models.CharField(max_length=64, verbose_name="label")),
|
||||||
(
|
(
|
||||||
"unit_price",
|
"unit_price",
|
||||||
accounting.models.CurrencyField(
|
counter.fields.CurrencyField(
|
||||||
decimal_places=2, max_digits=12, verbose_name="unit price"
|
decimal_places=2, max_digits=12, verbose_name="unit price"
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -4,7 +4,7 @@ import django.db.models.deletion
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
import accounting.models
|
import counter.fields
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
@ -67,7 +67,7 @@ class Migration(migrations.Migration):
|
|||||||
),
|
),
|
||||||
(
|
(
|
||||||
"value",
|
"value",
|
||||||
accounting.models.CurrencyField(
|
counter.fields.CurrencyField(
|
||||||
max_digits=12, verbose_name="value", decimal_places=2
|
max_digits=12, verbose_name="value", decimal_places=2
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
from django.db import migrations
|
from django.db import migrations
|
||||||
|
|
||||||
import accounting.models
|
import counter.fields
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
@ -14,7 +14,7 @@ class Migration(migrations.Migration):
|
|||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name="customer",
|
model_name="customer",
|
||||||
name="amount",
|
name="amount",
|
||||||
field=accounting.models.CurrencyField(
|
field=counter.fields.CurrencyField(
|
||||||
decimal_places=2, default=0, max_digits=12, verbose_name="amount"
|
decimal_places=2, default=0, max_digits=12, verbose_name="amount"
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
import accounting.models
|
import counter.fields
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
@ -18,7 +18,7 @@ class Migration(migrations.Migration):
|
|||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name="product",
|
model_name="product",
|
||||||
name="purchase_price",
|
name="purchase_price",
|
||||||
field=accounting.models.CurrencyField(
|
field=counter.fields.CurrencyField(
|
||||||
decimal_places=2,
|
decimal_places=2,
|
||||||
help_text="Initial cost of purchasing the product",
|
help_text="Initial cost of purchasing the product",
|
||||||
max_digits=12,
|
max_digits=12,
|
||||||
@ -28,7 +28,7 @@ class Migration(migrations.Migration):
|
|||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name="product",
|
model_name="product",
|
||||||
name="special_selling_price",
|
name="special_selling_price",
|
||||||
field=accounting.models.CurrencyField(
|
field=counter.fields.CurrencyField(
|
||||||
decimal_places=2,
|
decimal_places=2,
|
||||||
help_text="Price for barmen during their permanence",
|
help_text="Price for barmen during their permanence",
|
||||||
max_digits=12,
|
max_digits=12,
|
||||||
|
@ -38,12 +38,12 @@ from django_countries.fields import CountryField
|
|||||||
from ordered_model.models import OrderedModel
|
from ordered_model.models import OrderedModel
|
||||||
from phonenumber_field.modelfields import PhoneNumberField
|
from phonenumber_field.modelfields import PhoneNumberField
|
||||||
|
|
||||||
from accounting.models import CurrencyField
|
|
||||||
from club.models import Club
|
from club.models import Club
|
||||||
from core.fields import ResizedImageField
|
from core.fields import ResizedImageField
|
||||||
from core.models import Group, Notification, User
|
from core.models import Group, Notification, User
|
||||||
from core.utils import get_start_of_semester
|
from core.utils import get_start_of_semester
|
||||||
from counter.apps import PAYMENT_METHOD
|
from counter.apps import PAYMENT_METHOD
|
||||||
|
from counter.fields import CurrencyField
|
||||||
from sith.settings import SITH_MAIN_CLUB
|
from sith.settings import SITH_MAIN_CLUB
|
||||||
from subscription.models import Subscription
|
from subscription.models import Subscription
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ from django.db.models import F
|
|||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.views.generic import TemplateView
|
from django.views.generic import TemplateView
|
||||||
|
|
||||||
from accounting.models import CurrencyField
|
from counter.fields import CurrencyField
|
||||||
from counter.models import Refilling, Selling
|
from counter.models import Refilling, Selling
|
||||||
from counter.views.mixins import CounterAdminMixin, CounterAdminTabsMixin
|
from counter.views.mixins import CounterAdminMixin, CounterAdminTabsMixin
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ import django.db.models.deletion
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
import accounting.models
|
import counter.fields
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
@ -55,7 +55,7 @@ class Migration(migrations.Migration):
|
|||||||
("type_id", models.IntegerField(verbose_name="product type id")),
|
("type_id", models.IntegerField(verbose_name="product type id")),
|
||||||
(
|
(
|
||||||
"product_unit_price",
|
"product_unit_price",
|
||||||
accounting.models.CurrencyField(
|
counter.fields.CurrencyField(
|
||||||
decimal_places=2, max_digits=12, verbose_name="unit price"
|
decimal_places=2, max_digits=12, verbose_name="unit price"
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -120,7 +120,7 @@ class Migration(migrations.Migration):
|
|||||||
("type_id", models.IntegerField(verbose_name="product type id")),
|
("type_id", models.IntegerField(verbose_name="product type id")),
|
||||||
(
|
(
|
||||||
"product_unit_price",
|
"product_unit_price",
|
||||||
accounting.models.CurrencyField(
|
counter.fields.CurrencyField(
|
||||||
decimal_places=2, max_digits=12, verbose_name="unit price"
|
decimal_places=2, max_digits=12, verbose_name="unit price"
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -25,8 +25,8 @@ from django.db.models import F, OuterRef, Subquery, Sum
|
|||||||
from django.utils.functional import cached_property
|
from django.utils.functional import cached_property
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from accounting.models import CurrencyField
|
|
||||||
from core.models import User
|
from core.models import User
|
||||||
|
from counter.fields import CurrencyField
|
||||||
from counter.models import BillingInfo, Counter, Customer, Product, Refilling, Selling
|
from counter.models import BillingInfo, Counter, Customer, Product, Refilling, Selling
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user