2023-02-03 08:30:24 +03:00

61 lines
3.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* 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;
}