50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
import type { ApolloClient } from '@apollo/client';
|
|
import { reaction, toJS } from 'mobx';
|
|
import type RootStore from 'stores/root';
|
|
|
|
export default function paymentsReactions(store: RootStore, apolloClient: ApolloClient<object>) {
|
|
const { $calculation, $tables } = store;
|
|
|
|
/**
|
|
* При изменении срока лизинга регулируем длину таблицы платежей
|
|
*/
|
|
reaction(
|
|
() => $calculation.$values.getValue('leasingPeriod'),
|
|
(leasingPeriod) => {
|
|
if (leasingPeriod) {
|
|
$tables.payments.setValues(
|
|
Array.from(
|
|
{
|
|
length: leasingPeriod,
|
|
},
|
|
() => 0
|
|
)
|
|
);
|
|
}
|
|
},
|
|
{
|
|
fireImmediately: true,
|
|
}
|
|
);
|
|
|
|
/**
|
|
* Проверяем платежи на 0
|
|
*/
|
|
const errorText = 'Значения должны быть больше 0';
|
|
let removeError: () => void;
|
|
|
|
reaction(
|
|
() => toJS($tables.payments.values),
|
|
(values) => {
|
|
if (values.includes(0)) {
|
|
removeError = $tables.payments.validation.addError(errorText);
|
|
} else {
|
|
removeError();
|
|
}
|
|
},
|
|
{
|
|
fireImmediately: true,
|
|
}
|
|
);
|
|
}
|