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 django.db.models import Prefetch
|
||||
import logging
|
||||
from .utils import calculate_total_new_price
|
||||
|
||||
from .models import Device, Payment, Topup, WalletTransaction
|
||||
from .serializers import (
|
||||
@@ -103,8 +104,9 @@ class ListCreatePaymentView(StaffEditorPermissionMixin, generics.ListCreateAPIVi
|
||||
{"message": "device_ids are required."},
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
# Create payment
|
||||
amount = 100
|
||||
amount = calculate_total_new_price(
|
||||
number_of_devices=number_of_devices, number_of_months=number_of_months
|
||||
)
|
||||
payment = Payment.objects.create(
|
||||
amount=amount,
|
||||
number_of_months=number_of_months,
|
||||
|
Reference in New Issue
Block a user