2022-11-09 13:31:12 +03:00

63 lines
1.6 KiB
TypeScript

import message from 'Elements/message';
import { reaction } from 'mobx';
import type { ReactionsContext } from 'process/types';
import { pick } from 'radash';
const key = 'KP_LOADING_INFO';
export default function loadKpReactions({ store, trpcClient }: ReactionsContext) {
const { $calculation, $process } = store;
reaction(
() => $calculation.element('selectQuote').getValue(),
(quoteId) => {
if (!quoteId) return;
$process.add('LoadKP');
const quoteName = $calculation.element('selectQuote').getOption()?.label;
message.loading({
key,
content: `Загружаем КП ${quoteName}...`,
});
const payload = {
values: {
quote: quoteId,
...pick($calculation.$values.values, ['recalcWithRevision']),
},
};
trpcClient.quote.getValues
.query(payload)
.then(({ values }) => {
$calculation.$values.setValues({
values,
exclude: ['lead', 'opportunity', 'quote', 'leadUrl', 'opportunityUrl', 'quoteUrl'],
});
message.success({
key,
content: `КП ${quoteName} загружено`,
});
})
.catch(() => {
message.error({
key,
content: `Ошибка во время загрузки КП ${quoteName}`,
});
})
.finally(() => {
$process.delete('LoadKP');
});
}
);
reaction(
() => $process.has('LoadKP'),
(isLoadKP) => {
$calculation.$status.setStatus('selectQuote', isLoadKP ? 'Disabled' : 'Default');
}
);
}