2023-03-28 09:33:17 +03:00

63 lines
1.6 KiB
TypeScript

import * as CRMTypes from '@/graphql/crm.types';
import type { ProcessContext } from '@/process/types';
import { createCurrencyUtility } from '@/utils/currency';
import { reaction } from 'mobx';
export default function reactions({ store, apolloClient }: ProcessContext) {
const { $calculation } = store;
const { RUB } = createCurrencyUtility({ apolloClient });
reaction(
() =>
$calculation.$values.getValues([
'supplierCurrency',
'leaseObjectPrice',
'supplierDiscountRub',
]),
async ({ supplierCurrency: supplierCurrencyId, supplierDiscountRub, leaseObjectPrice }) => {
if (!supplierCurrencyId) {
$calculation.$values.resetValue('plPriceRub');
$calculation.$values.resetValue('discountRub');
return;
}
const {
data: { transactioncurrency },
} = await apolloClient.query({
query: CRMTypes.GetTransactionCurrencyDocument,
variables: {
currencyid: supplierCurrencyId,
},
});
if (transactioncurrency?.isocurrencycode === 'RUB') {
$calculation.$values.setValue('plPriceRub', leaseObjectPrice);
$calculation.$values.setValue('discountRub', supplierDiscountRub);
return;
}
$calculation.$values.setValue(
'plPriceRub',
await RUB({
currencyid: supplierCurrencyId,
value: leaseObjectPrice,
})
);
$calculation.$values.setValue(
'discountRub',
await RUB({
currencyid: supplierCurrencyId,
value: supplierDiscountRub,
})
);
},
{
delay: 100,
}
);
}