New new
parent
d3560e1efc
commit
c47911d5c2
Binary file not shown.
Binary file not shown.
@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 5.0.4 on 2024-04-23 11:44
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('billing', '0038_alter_invoice_pdf'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='recurringcycle',
|
||||||
|
name='cycle_price',
|
||||||
|
field=models.FloatField(null=True),
|
||||||
|
),
|
||||||
|
]
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
@ -0,0 +1,93 @@
|
|||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
// Osicloud 1 Subscription
|
||||||
|
const firstOsicloudPrices = {
|
||||||
|
1: 89,
|
||||||
|
3: 200,
|
||||||
|
6: 350,
|
||||||
|
12: 650,
|
||||||
|
24: 1200,
|
||||||
|
36: 1800,
|
||||||
|
60: 3000
|
||||||
|
};
|
||||||
|
|
||||||
|
const firstOsicloudSubscriptionOptions = document.querySelectorAll('.firstOsicloudSubscriptionOptions');
|
||||||
|
|
||||||
|
firstOsicloudSubscriptionOptions.forEach(function (options) {
|
||||||
|
options.addEventListener('change', function () {
|
||||||
|
const selectedValue = parseInt(this.value);
|
||||||
|
const priceElement = this.closest('.feature').querySelector('.firstOsicloudPrice');
|
||||||
|
const price = firstOsicloudPrices[selectedValue];
|
||||||
|
priceElement.textContent = `$${price}`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Osicloud 2 Subscription
|
||||||
|
const secondOsicloudPrices = {
|
||||||
|
1: 169,
|
||||||
|
3: 400,
|
||||||
|
6: 700,
|
||||||
|
12: 1300,
|
||||||
|
24: 2400,
|
||||||
|
36: 3600,
|
||||||
|
60: 6000
|
||||||
|
};
|
||||||
|
|
||||||
|
const secondOsicloudSubscriptionOptions = document.querySelectorAll('.secondOsicloudSubscriptionOptions');
|
||||||
|
|
||||||
|
secondOsicloudSubscriptionOptions.forEach(function (options) {
|
||||||
|
options.addEventListener('change', function () {
|
||||||
|
const selectedValue = parseInt(this.value);
|
||||||
|
const priceElement = this.closest('.feature').querySelector('.secondOsicloudPrice');
|
||||||
|
const price = secondOsicloudPrices[selectedValue];
|
||||||
|
priceElement.textContent = `$${price}`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Osicloud 3 Subscription
|
||||||
|
const thirdOsicloudPrices = {
|
||||||
|
1: 89,
|
||||||
|
3: 200,
|
||||||
|
6: 350,
|
||||||
|
12: 650,
|
||||||
|
24: 1200,
|
||||||
|
36: 1800,
|
||||||
|
60: 3000
|
||||||
|
};
|
||||||
|
|
||||||
|
const thirdOsicloudSubscriptionOptions = document.querySelectorAll('.thirdOsicloudSubscriptionOptions');
|
||||||
|
|
||||||
|
thirdOsicloudSubscriptionOptions.forEach(function (options) {
|
||||||
|
options.addEventListener('change', function () {
|
||||||
|
const selectedValue = parseInt(this.value);
|
||||||
|
const priceElement = this.closest('.feature').querySelector('.thirdOsicloudPrice');
|
||||||
|
const price = thirdOsicloudPrices[selectedValue];
|
||||||
|
priceElement.textContent = `$${price}`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Osicloud 4 Subscription
|
||||||
|
const fourthOsicloudPrices = {
|
||||||
|
1: 89,
|
||||||
|
3: 200,
|
||||||
|
6: 350,
|
||||||
|
12: 650,
|
||||||
|
24: 1200,
|
||||||
|
36: 1800,
|
||||||
|
60: 3000
|
||||||
|
};
|
||||||
|
|
||||||
|
const fourthOsicloudSubscriptionOptions = document.querySelectorAll('.fourthOsicloudSubscriptionOptions');
|
||||||
|
|
||||||
|
fourthOsicloudSubscriptionOptions.forEach(function (options) {
|
||||||
|
options.addEventListener('change', function () {
|
||||||
|
const selectedValue = parseInt(this.value);
|
||||||
|
const priceElement = this.closest('.feature').querySelector('.fourthOsicloudPrice');
|
||||||
|
const price = fourthOsicloudPrices[selectedValue];
|
||||||
|
priceElement.textContent = `$${price}`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
@ -0,0 +1,93 @@
|
|||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
// Dedicated 1 Subscription
|
||||||
|
const firstDedicatedPrices = {
|
||||||
|
1: 89,
|
||||||
|
3: 200,
|
||||||
|
6: 350,
|
||||||
|
12: 650,
|
||||||
|
24: 1200,
|
||||||
|
36: 1800,
|
||||||
|
60: 3000
|
||||||
|
};
|
||||||
|
|
||||||
|
const firstDedicatedSubscriptionOptions = document.querySelectorAll('.firstDedicatedSubscriptionOptions');
|
||||||
|
|
||||||
|
firstDedicatedSubscriptionOptions.forEach(function (options) {
|
||||||
|
options.addEventListener('change', function () {
|
||||||
|
const selectedValue = parseInt(this.value);
|
||||||
|
const priceElement = this.closest('.feature').querySelector('.firstDedicatedPrice');
|
||||||
|
const price = firstDedicatedPrices[selectedValue];
|
||||||
|
priceElement.textContent = `$${price}`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Dedicated 2 Subscription
|
||||||
|
const secondDedicatedPrices = {
|
||||||
|
1: 169,
|
||||||
|
3: 400,
|
||||||
|
6: 700,
|
||||||
|
12: 1300,
|
||||||
|
24: 2400,
|
||||||
|
36: 3600,
|
||||||
|
60: 6000
|
||||||
|
};
|
||||||
|
|
||||||
|
const secondDedicatedSubscriptionOptions = document.querySelectorAll('.secondDedicatedSubscriptionOptions');
|
||||||
|
|
||||||
|
secondDedicatedSubscriptionOptions.forEach(function (options) {
|
||||||
|
options.addEventListener('change', function () {
|
||||||
|
const selectedValue = parseInt(this.value);
|
||||||
|
const priceElement = this.closest('.feature').querySelector('.secondDedicatedPrice');
|
||||||
|
const price = secondDedicatedPrices[selectedValue];
|
||||||
|
priceElement.textContent = `$${price}`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Dedicated 3 Subscription
|
||||||
|
const thirdDedicatedPrices = {
|
||||||
|
1: 89,
|
||||||
|
3: 200,
|
||||||
|
6: 350,
|
||||||
|
12: 650,
|
||||||
|
24: 1200,
|
||||||
|
36: 1800,
|
||||||
|
60: 3000
|
||||||
|
};
|
||||||
|
|
||||||
|
const thirdDedicatedSubscriptionOptions = document.querySelectorAll('.thirdDedicatedSubscriptionOptions');
|
||||||
|
|
||||||
|
thirdDedicatedSubscriptionOptions.forEach(function (options) {
|
||||||
|
options.addEventListener('change', function () {
|
||||||
|
const selectedValue = parseInt(this.value);
|
||||||
|
const priceElement = this.closest('.feature').querySelector('.thirdDedicatedPrice');
|
||||||
|
const price = thirdDedicatedPrices[selectedValue];
|
||||||
|
priceElement.textContent = `$${price}`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Dedicated 4 Subscription
|
||||||
|
const fourthDedicatedPrices = {
|
||||||
|
1: 89,
|
||||||
|
3: 200,
|
||||||
|
6: 350,
|
||||||
|
12: 650,
|
||||||
|
24: 1200,
|
||||||
|
36: 1800,
|
||||||
|
60: 3000
|
||||||
|
};
|
||||||
|
|
||||||
|
const fourthDedicatedSubscriptionOptions = document.querySelectorAll('.fourthDedicatedSubscriptionOptions');
|
||||||
|
|
||||||
|
fourthDedicatedSubscriptionOptions.forEach(function (options) {
|
||||||
|
options.addEventListener('change', function () {
|
||||||
|
const selectedValue = parseInt(this.value);
|
||||||
|
const priceElement = this.closest('.feature').querySelector('.fourthDedicatedPrice');
|
||||||
|
const price = fourthDedicatedPrices[selectedValue];
|
||||||
|
priceElement.textContent = `$${price}`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
@ -0,0 +1,45 @@
|
|||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
// Standard Subscription
|
||||||
|
const standardPrices = {
|
||||||
|
1: 89,
|
||||||
|
3: 200,
|
||||||
|
6: 350,
|
||||||
|
12: 650,
|
||||||
|
24: 1200,
|
||||||
|
36: 1800,
|
||||||
|
60: 3000
|
||||||
|
};
|
||||||
|
|
||||||
|
const standardSubscriptionOptions = document.querySelectorAll('.standardSubscriptionOptions');
|
||||||
|
|
||||||
|
standardSubscriptionOptions.forEach(function (options) {
|
||||||
|
options.addEventListener('change', function () {
|
||||||
|
const selectedValue = parseInt(this.value);
|
||||||
|
const priceElement = this.closest('.feature').querySelector('.standardPrice');
|
||||||
|
const price = standardPrices[selectedValue];
|
||||||
|
priceElement.textContent = `$${price}`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Premium Subscription
|
||||||
|
const premiumPrices = {
|
||||||
|
1: 169,
|
||||||
|
3: 400,
|
||||||
|
6: 700,
|
||||||
|
12: 1300,
|
||||||
|
24: 2400,
|
||||||
|
36: 3600,
|
||||||
|
60: 6000
|
||||||
|
};
|
||||||
|
|
||||||
|
const premiumSubscriptionOptions = document.querySelectorAll('.premiumSubscriptionOptions');
|
||||||
|
|
||||||
|
premiumSubscriptionOptions.forEach(function (options) {
|
||||||
|
options.addEventListener('change', function () {
|
||||||
|
const selectedValue = parseInt(this.value);
|
||||||
|
const priceElement = this.closest('.feature').querySelector('.premiumPrice');
|
||||||
|
const price = premiumPrices[selectedValue];
|
||||||
|
priceElement.textContent = `$${price}`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,70 @@
|
|||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
// Shared Basic Subscription
|
||||||
|
const sharedBasicPrices = {
|
||||||
|
1: 89,
|
||||||
|
3: 200,
|
||||||
|
6: 350,
|
||||||
|
12: 650,
|
||||||
|
24: 1200,
|
||||||
|
36: 1800,
|
||||||
|
60: 3000
|
||||||
|
};
|
||||||
|
|
||||||
|
const sharedBasicSubscriptionOptions = document.querySelectorAll('.sharedBasicSubscriptionOptions');
|
||||||
|
|
||||||
|
sharedBasicSubscriptionOptions.forEach(function (options) {
|
||||||
|
options.addEventListener('change', function () {
|
||||||
|
const selectedValue = parseInt(this.value);
|
||||||
|
const priceElement = this.closest('.feature').querySelector('.sharedBasicPrice');
|
||||||
|
const price = sharedBasicPrices[selectedValue];
|
||||||
|
priceElement.textContent = `$${price}`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Shared Plus Subscription
|
||||||
|
const sharedPlusPrices = {
|
||||||
|
1: 169,
|
||||||
|
3: 400,
|
||||||
|
6: 700,
|
||||||
|
12: 1300,
|
||||||
|
24: 2400,
|
||||||
|
36: 3600,
|
||||||
|
60: 6000
|
||||||
|
};
|
||||||
|
|
||||||
|
const sharedPlusSubscriptionOptions = document.querySelectorAll('.sharedPlusSubscriptionOptions');
|
||||||
|
|
||||||
|
sharedPlusSubscriptionOptions.forEach(function (options) {
|
||||||
|
options.addEventListener('change', function () {
|
||||||
|
const selectedValue = parseInt(this.value);
|
||||||
|
const priceElement = this.closest('.feature').querySelector('.sharedPlusPrice');
|
||||||
|
const price = sharedPlusPrices[selectedValue];
|
||||||
|
priceElement.textContent = `$${price}`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Shared Basic Subscription
|
||||||
|
const sharedPowerPrices = {
|
||||||
|
1: 89,
|
||||||
|
3: 200,
|
||||||
|
6: 350,
|
||||||
|
12: 650,
|
||||||
|
24: 1200,
|
||||||
|
36: 1800,
|
||||||
|
60: 3000
|
||||||
|
};
|
||||||
|
|
||||||
|
const sharedPowerSubscriptionOptions = document.querySelectorAll('.sharedPowerSubscriptionOptions');
|
||||||
|
|
||||||
|
sharedPowerSubscriptionOptions.forEach(function (options) {
|
||||||
|
options.addEventListener('change', function () {
|
||||||
|
const selectedValue = parseInt(this.value);
|
||||||
|
const priceElement = this.closest('.feature').querySelector('.sharedPowerPrice');
|
||||||
|
const price = sharedPowerPrices[selectedValue];
|
||||||
|
priceElement.textContent = `$${price}`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
Loading…
Reference in New Issue