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