diff --git a/apps/web/config/default-statuses.ts b/apps/web/config/default-statuses.ts index 8a94c59..3cc300a 100644 --- a/apps/web/config/default-statuses.ts +++ b/apps/web/config/default-statuses.ts @@ -135,6 +135,7 @@ const defaultStatuses: CalculationStatuses = { tbxBonusCoefficient: 'Default', btnCalculate: 'Default', btnCreateKP: 'Default', + selectLeasingWithoutKasko: 'Default', }; export default defaultStatuses; diff --git a/apps/web/process/fingap/get-kp-data.ts b/apps/web/process/fingap/get-kp-data.ts index 8ed68d0..70c0633 100644 --- a/apps/web/process/fingap/get-kp-data.ts +++ b/apps/web/process/fingap/get-kp-data.ts @@ -45,7 +45,7 @@ export default async function getFingapDataFromKP({ const keys: Array = []; quote?.evo_product_risks?.forEach((x) => { - if (x.evo_addproduct_typeid) { + if (x?.evo_addproduct_typeid) { keys.push(x.evo_addproduct_typeid); } }); diff --git a/apps/web/process/payments/get-kp-data.ts b/apps/web/process/payments/get-kp-data.ts index a998ada..d2b4330 100644 --- a/apps/web/process/payments/get-kp-data.ts +++ b/apps/web/process/payments/get-kp-data.ts @@ -56,7 +56,7 @@ export default async function getPaymentsDataFromKP({ let paymentsValues: Array = []; if (quote?.evo_graphs) { paymentsValues = - sort(quote?.evo_graphs, (evo_graph) => Date.parse(evo_graph?.createdon)) + sort(quote?.evo_graphs, (evo_graph) => Date.parse(evo_graph?.createdon ?? '0')) .at(0) ?.evo_planpayments?.slice(1, -1) .slice(0, leasingPeriod - 2) diff --git a/apps/web/process/payments/lib/seasons-tools.ts b/apps/web/process/payments/lib/seasons-tools.ts index f930165..b6c51fc 100644 --- a/apps/web/process/payments/lib/seasons-tools.ts +++ b/apps/web/process/payments/lib/seasons-tools.ts @@ -1,5 +1,6 @@ /* eslint-disable implicit-arrow-linebreak */ import type { CalculationValues } from 'stores/calculation/values/types'; +import type { Row } from 'stores/tables/payments/types'; import { SEASONS_PERIODS, SEASONS_PERIOD_NUMBER } from './seasons-constants'; type SeasonType = NonNullable; @@ -53,3 +54,19 @@ export function generateSeasonsPayments(leasingPeriod: LeasingPeriod, seasons: A .concat(seasons.slice(0, (leasingPeriod - 2) % SEASONS_PERIOD_NUMBER)) ); } + +export function generateSeasonPaymentsRows( + seasonType: number, + shiftNumber: number, + payments: number[] +) { + const shiftedPeriods = new Set( + SEASONS_PERIODS[seasonType].map((position) => (position + shiftNumber) % SEASONS_PERIOD_NUMBER) + ); + const rows: Row[] = payments.map((value, i) => ({ + value, + status: shiftedPeriods.has(i) ? 'Default' : 'Disabled', + })); + + return rows; +} diff --git a/apps/web/process/payments/reactions.ts b/apps/web/process/payments/reactions.ts index 16cce2c..534b3bf 100644 --- a/apps/web/process/payments/reactions.ts +++ b/apps/web/process/payments/reactions.ts @@ -12,6 +12,22 @@ import * as seasonsConstants from './lib/seasons-constants'; import * as seasonsTools from './lib/seasons-tools'; import validatePaymentsTable from './validation'; +const { + generateSeasonPaymentsRows, + generateSeasons, + generateSeasonsPayments, + getPositionIndex, + getSeasonsValues, +} = seasonsTools; + +const { + DEFAULT_SEASONS_VALUES, + FORBIDDEN_HIGH_SEASON_START, + SEASONS_PERIODS, + SEASONS_PERIOD_NUMBER, + SEASON_TYPES, +} = seasonsConstants; + export default function paymentsReactions({ store }: ReactionsContext) { const { $calculation, $tables, $process } = store; @@ -222,7 +238,7 @@ export default function paymentsReactions({ store }: ReactionsContext) { // } // if (graphType === 100_000_001 || graphType === 100_000_003) { - // const allowedSeasonTypes = seasonsConstants.SEASON_TYPES[graphType]; + // const allowedSeasonTypes = SEASON_TYPES[graphType]; // const selectSeasonTypeOptions = selectSeasonType.filter((option) => // allowedSeasonTypes.includes(option.value) @@ -422,27 +438,13 @@ export default function paymentsReactions({ store }: ReactionsContext) { } const highSeasonStartOptions = selectHighSeasonStart.filter( - (option) => !seasonsConstants.FORBIDDEN_HIGH_SEASON_START[seasonType].includes(option.label) + (option) => !FORBIDDEN_HIGH_SEASON_START[seasonType].includes(option.label) ); $calculation.element('selectHighSeasonStart').setOptions(highSeasonStartOptions); } ); - function generateSeasonPaymentsRows(seasonType: number, shiftNumber: number, payments: number[]) { - const shiftedPeriods = new Set( - seasonsConstants.SEASONS_PERIODS[seasonType].map( - (position) => (position + shiftNumber) % seasonsConstants.SEASONS_PERIOD_NUMBER - ) - ); - const rows: Row[] = payments.map((value, i) => ({ - value, - status: shiftedPeriods.has(i) ? 'Default' : 'Disabled', - })); - - return rows; - } - reaction( () => { const seasonType = $calculation.element('selectSeasonType').getValue(); @@ -465,15 +467,9 @@ export default function paymentsReactions({ store }: ReactionsContext) { return; } - const seasons = seasonsTools.generateSeasons( - seasonType, - seasonsConstants.DEFAULT_SEASONS_VALUES - ); + const seasons = generateSeasons(seasonType, DEFAULT_SEASONS_VALUES); const shiftNumber = Number.parseInt(highSeasonStartOption.label, 10) - 2; - const payments = seasonsTools.generateSeasonsPayments( - leasingPeriod, - shift(seasons, shiftNumber) - ); + const payments = generateSeasonsPayments(leasingPeriod, shift(seasons, shiftNumber)); const middlePayments: Row[] = generateSeasonPaymentsRows(seasonType, shiftNumber, payments); const firstPaymentPerc = $calculation.element('tbxFirstPaymentPerc').getValue(); const lastPaymentPerc = $calculation.element('tbxLastPaymentPerc').getValue(); @@ -503,7 +499,7 @@ export default function paymentsReactions({ store }: ReactionsContext) { reaction( () => { const payments = toJS($tables.payments.values); - const seasons = payments.slice(1, seasonsConstants.SEASONS_PERIOD_NUMBER + 1); + const seasons = payments.slice(1, SEASONS_PERIOD_NUMBER + 1); return seasons; }, @@ -523,17 +519,14 @@ export default function paymentsReactions({ store }: ReactionsContext) { if (changes === null || changes.length > 1) return; const [changeIndex] = changes; - const positionIndex = seasonsTools.getPositionIndex(seasonType, changeIndex); + const positionIndex = getPositionIndex(seasonType, changeIndex); - const values = seasonsTools.getSeasonsValues(seasonType, unshiftedNextSeasons); + const values = getSeasonsValues(seasonType, unshiftedNextSeasons); values[positionIndex] = unshiftedNextSeasons[changeIndex]; - const seasons = seasonsTools.generateSeasons(seasonType, values); + const seasons = generateSeasons(seasonType, values); const leasingPeriod = $calculation.element('tbxLeasingPeriod').getValue(); - const payments = seasonsTools.generateSeasonsPayments( - leasingPeriod, - shift(seasons, shiftNumber) - ); + const payments = generateSeasonsPayments(leasingPeriod, shift(seasons, shiftNumber)); const rows: Row[] = generateSeasonPaymentsRows(seasonType, shiftNumber, payments); const firstPaymentPerc = $calculation.element('tbxFirstPaymentPerc').getValue(); const lastPaymentPerc = $calculation.element('tbxLastPaymentPerc').getValue();