import helper from './lib/helper'; import type { ProcessContext } from '@/process/types'; import { disposableReaction } from '@/utils/mobx'; import { comparer } from 'mobx'; /** * При изменении "Программа от производителя" 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 common(context: ProcessContext) { const { store } = context; const { $calculation, $process } = store; const { getSubsidySum, getImportProgramSum } = helper(context); disposableReaction( () => $process.has('LoadKP'), () => $calculation.$values.getValues(['importProgram', 'plPriceRub', 'discountRub']), async (values) => { const importProgramSum = await getImportProgramSum(values); $calculation.element('tbxImportProgramSum').setValue(importProgramSum); }, { delay: 5, equals: comparer.shallow, } ); disposableReaction( () => $process.has('LoadKP'), () => $calculation.$values.getValues([ 'subsidy', 'plPriceRub', 'discountRub', 'addEquipmentPrice', 'importProgramSum', 'quote', ]), async (values) => { const subsidySum = await getSubsidySum(values); $calculation.element('tbxSubsidySum').setValue(subsidySum); }, { delay: 5, equals: comparer.shallow, } ); }