feat(billing): add calculate_total_new_price utility for dynamic payment calculation
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 4m51s

This commit is contained in:
2025-07-27 15:17:47 +05:00
parent ee54386fd5
commit e3c2d4450f
2 changed files with 37 additions and 2 deletions

33
billing/utils.py Normal file
View File

@@ -0,0 +1,33 @@
def calculate_total_new_price(number_of_devices, number_of_months):
monthly_price_map = {
1: 100,
2: 175,
3: 250,
4: 325,
5: 400,
6: 475,
7: 550,
8: 625,
9: 700,
10: 775,
11: 850,
12: 925,
13: 1000,
14: 1075,
15: 1150,
16: 1225,
17: 1300,
}
if number_of_devices < 1 or number_of_devices > 17:
raise ValueError("Number of devices must be between 1 and 17.")
monthly_price = monthly_price_map[number_of_devices]
total_price = monthly_price * number_of_months
print(f"Monthly price for {number_of_devices} devices: {monthly_price}")
print(f"Total price for {number_of_months} months: {total_price}")
return total_price
calculate_total_new_price(number_of_devices=2, number_of_months=3)

View File

@@ -15,6 +15,7 @@ from api.tasks import add_new_devices_to_omada
from apibase.env import BASE_DIR, env from apibase.env import BASE_DIR, env
from django.db.models import Prefetch from django.db.models import Prefetch
import logging import logging
from .utils import calculate_total_new_price
from .models import Device, Payment, Topup, WalletTransaction from .models import Device, Payment, Topup, WalletTransaction
from .serializers import ( from .serializers import (
@@ -103,8 +104,9 @@ class ListCreatePaymentView(StaffEditorPermissionMixin, generics.ListCreateAPIVi
{"message": "device_ids are required."}, {"message": "device_ids are required."},
status=status.HTTP_400_BAD_REQUEST, status=status.HTTP_400_BAD_REQUEST,
) )
# Create payment amount = calculate_total_new_price(
amount = 100 number_of_devices=number_of_devices, number_of_months=number_of_months
)
payment = Payment.objects.create( payment = Payment.objects.create(
amount=amount, amount=amount,
number_of_months=number_of_months, number_of_months=number_of_months,