fix: Fix money max digit

This commit is contained in:
Setyo Nugroho 2023-09-26 22:17:13 +07:00
parent acb95b379d
commit be42c2fd9d
4 changed files with 178 additions and 23 deletions

View file

@ -9,7 +9,7 @@ from core.component import component
class InvoiceComponentSerializer(serializers.ModelSerializer):
adjusted_end_date = serializers.DateTimeField()
price_charged = MoneyField(max_digits=10, decimal_places=DECIMAL_PLACES)
price_charged = MoneyField(max_digits=256, decimal_places=DECIMAL_PLACES)
price_charged_currency = serializers.CharField(source="price_charged.currency")
@ -31,9 +31,9 @@ def generate_invoice_component_serializer(model):
class InvoiceSerializer(serializers.ModelSerializer):
subtotal = MoneyField(max_digits=10, decimal_places=DECIMAL_PLACES)
subtotal = MoneyField(max_digits=256, decimal_places=DECIMAL_PLACES)
subtotal_currency = serializers.CharField(source="subtotal.currency")
total = MoneyField(max_digits=10, decimal_places=DECIMAL_PLACES)
total = MoneyField(max_digits=256, decimal_places=DECIMAL_PLACES)
total_currency = serializers.CharField(source="total.currency", required=False)
def __init__(self, *args, **kwargs):
@ -47,9 +47,9 @@ class InvoiceSerializer(serializers.ModelSerializer):
class SimpleInvoiceSerializer(serializers.ModelSerializer):
subtotal = MoneyField(max_digits=10, decimal_places=DECIMAL_PLACES)
subtotal = MoneyField(max_digits=256, decimal_places=DECIMAL_PLACES)
subtotal_currency = serializers.CharField(source="subtotal.currency")
total = MoneyField(max_digits=10, decimal_places=DECIMAL_PLACES)
total = MoneyField(max_digits=256, decimal_places=DECIMAL_PLACES)
total_currency = serializers.CharField(source="total.currency", required=False)
class Meta:
@ -79,7 +79,7 @@ class NotificationSerializer(serializers.ModelSerializer):
class BalanceSerializer(serializers.ModelSerializer):
project = BillingProjectSerializer()
amount = MoneyField(max_digits=10, decimal_places=DECIMAL_PLACES)
amount = MoneyField(max_digits=256, decimal_places=DECIMAL_PLACES)
amount_currency = serializers.CharField(source="amount.currency")
class Meta:
@ -88,7 +88,7 @@ class BalanceSerializer(serializers.ModelSerializer):
class BalanceTransactionSerializer(serializers.ModelSerializer):
amount = MoneyField(max_digits=10, decimal_places=DECIMAL_PLACES)
amount = MoneyField(max_digits=256, decimal_places=DECIMAL_PLACES)
amount_currency = serializers.CharField(source="amount.currency")
action = serializers.CharField(required=False)
description = serializers.CharField()

View file

@ -0,0 +1,155 @@
# Generated by Django 3.2.6 on 2023-09-26 15:15
from decimal import Decimal
from django.db import migrations
import djmoney.models.fields
class Migration(migrations.Migration):
dependencies = [
('core', '0013_balance_balancetransaction'),
]
operations = [
migrations.AlterField(
model_name='balance',
name='amount',
field=djmoney.models.fields.MoneyField(decimal_places=2, default=Decimal('0'), max_digits=256),
),
migrations.AlterField(
model_name='balancetransaction',
name='amount',
field=djmoney.models.fields.MoneyField(decimal_places=2, max_digits=256),
),
migrations.AlterField(
model_name='flavorprice',
name='hourly_price',
field=djmoney.models.fields.MoneyField(decimal_places=2, max_digits=256),
),
migrations.AlterField(
model_name='flavorprice',
name='monthly_price',
field=djmoney.models.fields.MoneyField(blank=True, decimal_places=2, default=None, max_digits=256, null=True),
),
migrations.AlterField(
model_name='floatingipsprice',
name='hourly_price',
field=djmoney.models.fields.MoneyField(decimal_places=2, max_digits=256),
),
migrations.AlterField(
model_name='floatingipsprice',
name='monthly_price',
field=djmoney.models.fields.MoneyField(blank=True, decimal_places=2, default=None, max_digits=256, null=True),
),
migrations.AlterField(
model_name='imageprice',
name='hourly_price',
field=djmoney.models.fields.MoneyField(decimal_places=2, max_digits=256),
),
migrations.AlterField(
model_name='imageprice',
name='monthly_price',
field=djmoney.models.fields.MoneyField(blank=True, decimal_places=2, default=None, max_digits=256, null=True),
),
migrations.AlterField(
model_name='invoice',
name='tax',
field=djmoney.models.fields.MoneyField(blank=True, decimal_places=2, default=None, max_digits=256, null=True),
),
migrations.AlterField(
model_name='invoice',
name='total',
field=djmoney.models.fields.MoneyField(blank=True, decimal_places=2, default=None, max_digits=256, null=True),
),
migrations.AlterField(
model_name='invoicefloatingip',
name='hourly_price',
field=djmoney.models.fields.MoneyField(decimal_places=2, max_digits=256),
),
migrations.AlterField(
model_name='invoicefloatingip',
name='monthly_price',
field=djmoney.models.fields.MoneyField(blank=True, decimal_places=2, default=None, max_digits=256, null=True),
),
migrations.AlterField(
model_name='invoiceimage',
name='hourly_price',
field=djmoney.models.fields.MoneyField(decimal_places=2, max_digits=256),
),
migrations.AlterField(
model_name='invoiceimage',
name='monthly_price',
field=djmoney.models.fields.MoneyField(blank=True, decimal_places=2, default=None, max_digits=256, null=True),
),
migrations.AlterField(
model_name='invoiceinstance',
name='hourly_price',
field=djmoney.models.fields.MoneyField(decimal_places=2, max_digits=256),
),
migrations.AlterField(
model_name='invoiceinstance',
name='monthly_price',
field=djmoney.models.fields.MoneyField(blank=True, decimal_places=2, default=None, max_digits=256, null=True),
),
migrations.AlterField(
model_name='invoicerouter',
name='hourly_price',
field=djmoney.models.fields.MoneyField(decimal_places=2, max_digits=256),
),
migrations.AlterField(
model_name='invoicerouter',
name='monthly_price',
field=djmoney.models.fields.MoneyField(blank=True, decimal_places=2, default=None, max_digits=256, null=True),
),
migrations.AlterField(
model_name='invoicesnapshot',
name='hourly_price',
field=djmoney.models.fields.MoneyField(decimal_places=2, max_digits=256),
),
migrations.AlterField(
model_name='invoicesnapshot',
name='monthly_price',
field=djmoney.models.fields.MoneyField(blank=True, decimal_places=2, default=None, max_digits=256, null=True),
),
migrations.AlterField(
model_name='invoicevolume',
name='hourly_price',
field=djmoney.models.fields.MoneyField(decimal_places=2, max_digits=256),
),
migrations.AlterField(
model_name='invoicevolume',
name='monthly_price',
field=djmoney.models.fields.MoneyField(blank=True, decimal_places=2, default=None, max_digits=256, null=True),
),
migrations.AlterField(
model_name='routerprice',
name='hourly_price',
field=djmoney.models.fields.MoneyField(decimal_places=2, max_digits=256),
),
migrations.AlterField(
model_name='routerprice',
name='monthly_price',
field=djmoney.models.fields.MoneyField(blank=True, decimal_places=2, default=None, max_digits=256, null=True),
),
migrations.AlterField(
model_name='snapshotprice',
name='hourly_price',
field=djmoney.models.fields.MoneyField(decimal_places=2, max_digits=256),
),
migrations.AlterField(
model_name='snapshotprice',
name='monthly_price',
field=djmoney.models.fields.MoneyField(blank=True, decimal_places=2, default=None, max_digits=256, null=True),
),
migrations.AlterField(
model_name='volumeprice',
name='hourly_price',
field=djmoney.models.fields.MoneyField(decimal_places=2, max_digits=256),
),
migrations.AlterField(
model_name='volumeprice',
name='monthly_price',
field=djmoney.models.fields.MoneyField(blank=True, decimal_places=2, default=None, max_digits=256, null=True),
),
]

View file

@ -84,8 +84,8 @@ class Invoice(BaseModel, TimestampMixin):
end_date = models.DateTimeField(default=None, blank=True, null=True)
finish_date = models.DateTimeField(default=None, blank=True, null=True)
state = models.IntegerField(choices=InvoiceState.choices)
tax = MoneyField(max_digits=10, default=None, blank=True, null=True)
total = MoneyField(max_digits=10, default=None, blank=True, null=True)
tax = MoneyField(max_digits=256, default=None, blank=True, null=True)
total = MoneyField(max_digits=256, default=None, blank=True, null=True)
@property
def subtotal(self):
@ -303,7 +303,7 @@ class Notification(BaseModel, TimestampMixin):
#region balance
class Balance(BaseModel, TimestampMixin):
project = models.ForeignKey('BillingProject', on_delete=models.CASCADE)
amount = MoneyField(max_digits=10, default=0)
amount = MoneyField(max_digits=256, default=0)
@classmethod
def get_balance_for_project(cls, project):
@ -349,7 +349,7 @@ class BalanceTransaction(BaseModel, TimestampMixin):
TOP_DOWN = "top_down"
balance = models.ForeignKey('Balance', on_delete=models.CASCADE, blank=True, null=True)
amount = MoneyField(max_digits=10)
amount = MoneyField(max_digits=256)
action = models.CharField(choices=ActionType.choices, max_length=256)
description = models.CharField(max_length=256)

View file

@ -19,8 +19,8 @@ class TimestampMixin(models.Model):
class PriceMixin(models.Model):
hourly_price = MoneyField(max_digits=10)
monthly_price = MoneyField(max_digits=10, default=None, blank=True, null=True)
hourly_price = MoneyField(max_digits=256)
monthly_price = MoneyField(max_digits=256, default=None, blank=True, null=True)
class Meta:
abstract = True