fix: Согласно агентскому договору обязательна выплата АВ. Заложите АВ в расчет

This commit is contained in:
vchikalkin 2023-01-16 17:18:53 +03:00
parent 88aa991f0f
commit 57614ecddc
2 changed files with 34 additions and 14 deletions

View File

@ -4,7 +4,7 @@ import { gql } from '@apollo/client';
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import type * as CRMTypes from 'graphql/crm.types';
import { reaction } from 'mobx';
import { autorun, reaction } from 'mobx';
import type RootStore from 'stores/root';
import ValidationHelper from 'stores/validation/helper';
import { normalizeOptions } from 'tools/entity';
@ -230,18 +230,38 @@ export function validateAgentRewardSumm(
validationHelper.add(removeError);
});
}
$calculation
.element(rewardSummField)
.validate({
invalid:
evo_reward_condition?.evo_agency_agreementidData?.evo_required_reward === true &&
rewardSumm === 0,
message: 'Согласно агентскому договору обязательна выплата АВ. Заложите АВ в расчет',
})
.err((removeError) => {
validationHelper.add(removeError);
});
}
);
autorun(() => {
const rewardSumm = $calculation.element(rewardSummField).getValue();
const rewardConditionOptions = $calculation.$options.getOptions(rewardConditionField);
const conditionIds = rewardConditionOptions.map((x) => x.value);
const requests = conditionIds.map(async (conditionId) => {
const {
data: { evo_reward_condition },
} = await apolloClient.query<
CRMTypes.GetRewardConditionQuery,
CRMTypes.GetRewardConditionQueryVariables
>({
query: QUERY_GET_REWARD_CONDITION,
variables: {
conditionId,
},
});
return evo_reward_condition;
});
Promise.all(requests).then((results) => {
const required_reward = results.some(
(x) => x?.evo_agency_agreementidData?.evo_required_reward === true
);
$calculation.element(rewardSummField).validate({
invalid: rewardSumm === 0 && required_reward,
message: 'Согласно агентскому договору обязательна выплата АВ. Заложите АВ в расчет',
});
});
});
}

View File

@ -2,5 +2,5 @@ import type { Elements, ElementsTypes } from 'Components/Calculation/config/map/
import type { BaseOption } from 'ui/elements/types';
export type CalculationOptions = {
[ElementName in Elements]: BaseOption<ElementsTypes[ElementName]>[];
[ElementName in Elements]: BaseOption<NonNullable<ElementsTypes[ElementName]>>[];
};