136 lines
4.4 KiB
TypeScript
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;
|