2023-04-10 11:58:50 +03:00

76 lines
1.6 KiB
TypeScript

import type { CalculationValues } from '@/stores/calculation/values/types';
import type { Row } from '@/stores/tables/payments/types';
const degressionSteps: { [key: number]: number[] } = {
100_000_003: [100, 50, 25],
100_000_004: [100, 30, 10],
100_000_005: [100, 70, 40],
100_000_006: [100, 7, 3],
};
export function generateDegressionRows({
seasonType: degressionType,
leasingPeriod,
}: Pick<CalculationValues, 'leasingPeriod' | 'seasonType'>) {
let middlePayments: Row[] = [];
switch (degressionType) {
case 100_000_007: {
const editablePayments: Row[] = Array.from(
{
length: leasingPeriod - 3,
},
() => ({
status: 'Default',
value: 100,
})
);
middlePayments = [
{
status: 'Disabled',
value: 100,
},
...editablePayments,
];
break;
}
case 100_000_003:
case 100_000_004:
case 100_000_005:
case 100_000_006: {
const [step1, step2, step3] = degressionSteps[degressionType];
const paymentsInStep = Math.ceil((leasingPeriod - 2) / 3);
middlePayments = Array.from(
{
length: leasingPeriod - 2,
},
(_v, i) => {
let value = step3;
if (i <= paymentsInStep * 2 - 1) {
value = step2;
}
if (i <= paymentsInStep - 1) {
value = step1;
}
return {
status: 'Disabled',
value,
};
}
);
break;
}
default: {
break;
}
}
return middlePayments;
}