115 lines
3.5 KiB
TypeScript

import type { ProcessContext } from '../types';
import { createValidationSchema } from './validation';
import type { Elements } from '@/Components/Calculation/config/map/values';
import { createValidationReaction } from '@/process/tools';
import { reaction } from 'mobx';
export function common({ store }: ProcessContext) {
const { $calculation, $tables } = store;
reaction(
() => $calculation.element('cbxRecalcWithRevision').getValue(),
() => $calculation.element('selectQuote').resetValue()
);
reaction(
() => $calculation.$values.getValues(['leaseObjectUsed', 'recalcWithRevision']),
({ leaseObjectUsed, recalcWithRevision }) => {
if (recalcWithRevision && leaseObjectUsed) {
$calculation.element('tbxLeaseObjectYear').block();
} else {
$calculation.element('tbxLeaseObjectYear').unblock();
}
}
);
{
const elements: Elements[] = [
'cbxLeaseObjectUsed',
'radioGraphType',
'selectBrand',
'selectCalcBroker',
'selectCalcFinDepartment',
'selectClientRisk',
'selectClientType',
'selectConfiguration',
'selectDealer',
'selectDealerPerson',
'selectHighSeasonStart',
'selectImportProgram',
'selectIndAgent',
'selectLead',
'selectLeaseObjectCategory',
'selectLeaseObjectType',
'selectModel',
'selectOpportunity',
'selectRate',
'selectRequirementTelematic',
'selectSeasonType',
'selectSubsidy',
'selectTarif',
'selectTelematic',
'selectTracker',
'tbxAddEquipmentPrice',
'tbxCreditRate',
'tbxEngineHours',
'tbxImporterRewardPerc',
'tbxImporterRewardRub',
'tbxLeasingPeriod',
'tbxMaxPriceChange',
'tbxMileage',
'tbxParmentsDecreasePercent',
'tbxVIN',
// 'radioLastPaymentRule',
// 'tbxLastPaymentPerc',
// 'tbxLastPaymentRub',
'cbxPartialVAT',
];
reaction(
() => $calculation.element('cbxRecalcWithRevision').getValue(),
(recalcWithRevision) => {
if (recalcWithRevision) {
elements.forEach((elementName) =>
$calculation.$status.overrideStatus(elementName, 'Disabled')
);
$tables.payments.overrideStatuses('Disabled');
} else {
elements.forEach((elementName) => $calculation.$status.clearOverridedStatus(elementName));
$tables.payments.clearOverridedStatuses();
}
}
);
const agents: Elements[] = [
'selectCalcBrokerRewardCondition',
'selectCalcDoubleAgentRewardCondition',
'selectDealerBroker',
'selectDealerBrokerRewardCondition',
'selectDealerRewardCondition',
'selectFinDepartmentRewardCondtion',
'selectIndAgentRewardCondition',
'tbxCalcBrokerRewardSum',
'tbxCalcDoubleAgentRewardSumm',
'tbxDealerBrokerRewardSumm',
'tbxDealerRewardSumm',
'tbxFinDepartmentRewardSumm',
'tbxIndAgentRewardSumm',
];
reaction(
() => $calculation.$values.getValues(['firstPaymentPerc', 'recalcWithRevision']),
({ firstPaymentPerc, recalcWithRevision }) => {
if (firstPaymentPerc === 0 && recalcWithRevision === true) {
agents.forEach((elementName) =>
$calculation.$status.overrideStatus(elementName, 'Disabled')
);
} else {
agents.forEach((elementName) => $calculation.$status.clearOverridedStatus(elementName));
}
}
);
}
}
export const validation = createValidationReaction(createValidationSchema);