63 lines
1.6 KiB
TypeScript
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,
|
|
}
|
|
);
|
|
}
|