This repository has been archived on 2025-05-09. You can view files and clone it, but cannot push or open issues or pull requests.
Владислав Чикалкин eea517dae1 fix quote not reset if no options
2020-09-23 19:22:24 +03:00

136 lines
4.4 KiB
TypeScript

import CalculationService from 'client/services/CalculationService';
import { IReactionEffect } from 'core/types/effect';
import { Status } from 'core/types/statuses';
const reactionEffects: IReactionEffect[] = [
calculationStore => ({
expression: () => {
const { values } = calculationStore;
return values.lead;
},
effect: async leadId => {
const lead = calculationStore.options.selectLead?.find(
x => x.value === leadId,
);
if (lead) {
CalculationService.getEntityOptions({
entityName: 'opportunity',
where: { opportunityid: lead.evo_opportunityid || null },
})
.then(opportunities => {
if (opportunities) {
calculationStore.setOptions('selectOpportunity', opportunities);
calculationStore.setValue(
'opportunity',
opportunities[0] ? opportunities[0].opportunityid : null,
);
}
})
.catch(err => {
throw err;
});
CalculationService.getEntityOptions({
entityName: 'quote',
where: {
evo_leadid: leadId,
},
})
.then(quotes => {
calculationStore.setOptions('selectQuote', quotes);
if (quotes.length === 0) calculationStore.setValue('quote', null);
})
.catch(err => {
throw err;
});
}
},
}),
calculationStore => ({
expression: () => {
const { options } = calculationStore;
return options.selectQuote;
},
effect: quotes => {
if (quotes.length > 0) {
calculationStore.setStatus('tbxQuoteName', Status.Disabled);
} else {
calculationStore.setStatus('tbxQuoteName', Status.Default);
}
},
}),
calculationStore => ({
expression: () => {
const { channel } = calculationStore.values;
return channel;
},
effect: channel => {
switch (channel) {
case 100000000:
calculationStore.setStatus('selectSupplier', Status.Default);
calculationStore.setStatus('selectAgent', Status.Default);
calculationStore.setStatus('selectFinDepartment', Status.Disabled);
calculationStore.setValue('finDepartment', undefined);
calculationStore.setStatus('selectBroker', Status.Disabled);
calculationStore.setValue('broker', undefined);
break;
case 100000001:
calculationStore.setStatus('selectSupplier', Status.Default);
calculationStore.setStatus('selectAgent', Status.Default);
calculationStore.setStatus('selectFinDepartment', Status.Default);
calculationStore.setStatus('selectBroker', Status.Disabled);
calculationStore.setValue('broker', undefined);
break;
case 100000002:
calculationStore.setStatus('selectSupplier', Status.Disabled);
calculationStore.setValue('supplier', undefined);
calculationStore.setStatus('selectAgent', Status.Default);
calculationStore.setStatus('selectFinDepartment', Status.Disabled);
calculationStore.setValue('finDepartment', undefined);
calculationStore.setStatus('selectBroker', Status.Disabled);
calculationStore.setValue('broker', undefined);
break;
case 100000003:
calculationStore.setStatus('selectSupplier', Status.Disabled);
calculationStore.setValue('supplier', undefined);
calculationStore.setStatus('selectAgent', Status.Default);
calculationStore.setValue('agent', undefined);
calculationStore.setStatus('selectFinDepartment', Status.Disabled);
calculationStore.setValue('finDepartment', undefined);
calculationStore.setStatus('selectBroker', Status.Default);
break;
case 100000004:
default:
calculationStore.setStatus('selectSupplier', Status.Disabled);
calculationStore.setValue('supplier', undefined);
calculationStore.setStatus('selectAgent', Status.Disabled);
calculationStore.setValue('agent', undefined);
calculationStore.setStatus('selectFinDepartment', Status.Disabled);
calculationStore.setValue('finDepartment', undefined);
calculationStore.setStatus('selectBroker', Status.Disabled);
calculationStore.setValue('broker', undefined);
break;
}
},
}),
];
export default reactionEffects;