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) { 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; }