115 lines
3.5 KiB
TypeScript
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);
|