заполнение tbxSubsidySum
This commit is contained in:
parent
225ab2c766
commit
bbffa9f487
@ -1,6 +1,7 @@
|
||||
import * as CRMTypes from '@/graphql/crm.types';
|
||||
import type { ReactionsContext } from '@/process/types';
|
||||
import { autorun } from 'mobx';
|
||||
import { autorun, reaction } from 'mobx';
|
||||
import { pick } from 'radash';
|
||||
|
||||
/**
|
||||
* При изменении "Программа от производителя" selectImportProgram , Стоимости ПЛ tbxLeaseObjectPrice, Валюты selectSupplierCurrency, Скидка от поставщика, в валюте поставщика (tbxSupplierDiscountRub)
|
||||
@ -22,34 +23,72 @@ import { autorun } from 'mobx';
|
||||
export function computedReactions({ store, apolloClient }: ReactionsContext) {
|
||||
const { $calculation } = store;
|
||||
|
||||
autorun(async () => {
|
||||
const importProgramId = $calculation.element('selectImportProgram').getValue();
|
||||
const plPriceRub = $calculation.$values.getValue('plPriceRub');
|
||||
const supplierDiscountRub = $calculation.element('tbxSupplierDiscountRub').getValue();
|
||||
reaction(
|
||||
() => pick($calculation.$values.values, ['importProgram', 'plPriceRub', 'supplierDiscountRub']),
|
||||
async ({ importProgram: importProgramId, plPriceRub, supplierDiscountRub }) => {
|
||||
if (importProgramId) {
|
||||
const {
|
||||
data: { evo_subsidy: importProgram },
|
||||
} = await apolloClient.query({
|
||||
query: CRMTypes.GetSubsidyDocument,
|
||||
variables: {
|
||||
subsidyId: importProgramId,
|
||||
},
|
||||
});
|
||||
|
||||
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;
|
||||
|
||||
if (importProgram?.evo_subsidy_summ && importProgram?.evo_subsidy_summ > 0) {
|
||||
$calculation.element('tbxImportProgramSum').setValue(importProgram?.evo_subsidy_summ);
|
||||
const sum = (plPriceRub - supplierDiscountRub) * subsidyPercent;
|
||||
const maxSum = importProgram?.evo_max_subsidy_summ || 0;
|
||||
|
||||
$calculation.element('tbxImportProgramSum').setValue(Math.min(sum, maxSum));
|
||||
}
|
||||
} 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));
|
||||
$calculation.element('tbxImportProgramSum').setValue(0);
|
||||
}
|
||||
} else {
|
||||
$calculation.element('tbxImportProgramSum').setValue(0);
|
||||
}
|
||||
);
|
||||
|
||||
autorun(async () => {
|
||||
const {
|
||||
subsidy: subsidyId,
|
||||
plPriceRub,
|
||||
discountRub,
|
||||
addEquipmentPrice,
|
||||
importProgramSum,
|
||||
} = $calculation.$values.values;
|
||||
|
||||
if (!subsidyId) {
|
||||
$calculation.element('tbxSubsidySum').resetValue();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
const {
|
||||
data: { evo_subsidy: subsidy },
|
||||
} = await apolloClient.query({
|
||||
query: CRMTypes.GetSubsidyDocument,
|
||||
variables: {
|
||||
subsidyId,
|
||||
},
|
||||
});
|
||||
|
||||
if (subsidy?.evo_subsidy_summ) {
|
||||
$calculation.element('tbxSubsidySum').setValue(subsidy?.evo_subsidy_summ);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
const price = plPriceRub - discountRub - importProgramSum + addEquipmentPrice;
|
||||
|
||||
let sum = (price * (subsidy?.evo_percent_subsidy ?? 0)) / 100;
|
||||
const maxSum = subsidy?.evo_max_subsidy_summ ?? 0;
|
||||
if (sum > maxSum) sum = maxSum;
|
||||
|
||||
$calculation.element('tbxSubsidySum').setValue(sum);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user