61 lines
3.1 KiB
TypeScript
61 lines
3.1 KiB
TypeScript
/* eslint-disable @typescript-eslint/naming-convention */
|
||
import * as CRMTypes from 'graphql/crm.types';
|
||
import { autorun } from 'mobx';
|
||
import type { ReactionsContext } from 'process/types';
|
||
|
||
/* eslint-disable max-len */
|
||
/**
|
||
* При изменении "Программа от производителя" selectImportProgram , Стоимости ПЛ tbxLeaseObjectPrice, Валюты selectSupplierCurrency, Скидка от поставщика, в валюте поставщика (tbxSupplierDiscountRub)
|
||
* необходимо заполнять поле "Скидка от производителя, руб., с НДС" labelImportProgramSum:
|
||
если поле selectImportProgram содержит данные,
|
||
то
|
||
если
|
||
поле "Сумма субсидии с НДС" evo_subsidy.evo_subsidy_summ из selectImportProgram > 0,
|
||
то указывает данное значение в поле labelImportProgramSum,
|
||
иначе:
|
||
1)labelImportProgramSum = ( (Стоимость ПЛ tbxLeaseObjectPrice ), переведенные в рубли - Скидка от поставщика, в валюте поставщика (tbxSupplierDiscountRub))* "% субсидии от стоимости ПЛ" evo_subsidy.evo_percent_subsidy из selectImportProgram / 100.
|
||
2) Если полученное значение больше значения в поле "Максимальная сумма субсидии с НДС, руб." evo_subsidy.evo_max_subsidy_summ из записи Субсидия в поле selectImportProgram ,
|
||
то в labelImportProgramSum указываем значение из поля "Максимальная сумма субсидии с НДС, руб." evo_subsidy.evo_max_subsidy_summ ,
|
||
иначе результат расчета п.1
|
||
иначе 0
|
||
*/
|
||
/* eslint-enable */
|
||
|
||
export function computedReactions({ store, apolloClient, queryClient }: ReactionsContext) {
|
||
const { $calculation } = store;
|
||
|
||
autorun(async () => {
|
||
const importProgramId = $calculation.element('selectImportProgram').getValue();
|
||
const plPriceRub = $calculation.$values.getValue('plPriceRub');
|
||
const supplierDiscountRub = $calculation.element('tbxSupplierDiscountRub').getValue();
|
||
|
||
if (importProgramId) {
|
||
const {
|
||
data: { evo_subsidy: importProgram },
|
||
} = await apolloClient.query({
|
||
query: CRMTypes.GetSubsidyDocument,
|
||
variables: {
|
||
subsidyId: importProgramId,
|
||
},
|
||
});
|
||
|
||
if (importProgram?.evo_subsidy_summ && importProgram?.evo_subsidy_summ > 0) {
|
||
$calculation.element('tbxImportProgramSum').setValue(importProgram?.evo_subsidy_summ);
|
||
} else {
|
||
const subsidyPercent = (importProgram?.evo_percent_subsidy || 0) / 100;
|
||
|
||
const sum = (plPriceRub - supplierDiscountRub) * subsidyPercent;
|
||
const maxSum = importProgram?.evo_max_subsidy_summ || 0;
|
||
|
||
$calculation.element('tbxImportProgramSum').setValue(Math.min(sum, maxSum));
|
||
}
|
||
} else {
|
||
$calculation.element('tbxImportProgramSum').setValue(0);
|
||
}
|
||
});
|
||
}
|
||
|
||
export function commonReactions({ store, apolloClient, queryClient }: ReactionsContext) {
|
||
const { $calculation, $tables } = store;
|
||
}
|