mirror of
https://github.com/i701/sarlink-portal-api.git
synced 2025-10-05 13:35:23 +00:00
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
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 4m51s
This commit is contained in:
33
billing/utils.py
Normal file
33
billing/utils.py
Normal 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)
|
@@ -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,
|
||||||
|
Reference in New Issue
Block a user