process/leasing-object: fix importerRewardPerc, importerRewardRub (get-kp-data)

This commit is contained in:
vchikalkin 2023-06-15 10:26:38 +03:00
parent 0f32abc6b2
commit 498fa217fe
3 changed files with 90 additions and 52 deletions

View File

@ -1,9 +1,11 @@
import type { GetQuoteInputData, GetQuoteProcessData } from '../load-kp/types';
import helper from './lib/helper';
import initializeApollo from '@/apollo/client';
import defaultValues from '@/config/default-values';
import * as CRMTypes from '@/graphql/crm.types';
import { gql } from '@apollo/client';
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const QUERY_GET_QUOTE_LEASING_OBJECT_DATA = gql`
query GetQuoteLeasingObjectData($quoteId: Uuid!) {
quote(quoteId: $quoteId) {
@ -46,15 +48,28 @@ export async function getKPData({
},
});
const brand = quote?.evo_brandid ?? defaultValues.brand;
const model = quote?.evo_modelid ?? defaultValues.model;
const leaseObjectUsed = quote?.evo_leasingobject_used ?? defaultValues.leaseObjectUsed;
const { getImporterReward } = helper({ apolloClient });
const { importerRewardPerc, importerRewardRub } = await getImporterReward({
brand,
leaseObjectUsed,
model,
});
return {
values: {
brand: quote?.evo_brandid,
brand,
configuration: quote?.evo_equipmentid,
countSeats: quote?.evo_seats ?? defaultValues.countSeats,
deliveryTime: quote?.evo_delivery_time ?? defaultValues.deliveryTime,
engineHours: quote?.evo_engine_hours ?? defaultValues.engineHours,
engineType: quote?.evo_engine_type,
engineVolume: quote?.evo_engine_volume ?? defaultValues.engineVolume,
importerRewardPerc,
importerRewardRub,
leaseObjectCategory: quote?.evo_category,
leaseObjectCount:
(recalcWithRevision ? quote?.evo_recalc_limit : quote?.evo_object_count) ??
@ -62,12 +77,12 @@ export async function getKPData({
leaseObjectMotorPower: quote?.evo_power ?? defaultValues.leaseObjectMotorPower,
leaseObjectType: quote?.evo_leasingobject_typeid,
leaseObjectUseFor: quote?.evo_use_for,
leaseObjectUsed: quote?.evo_leasingobject_used ?? defaultValues.leaseObjectUsed,
leaseObjectUsed,
leaseObjectYear: quote?.evo_year ?? defaultValues.leaseObjectYear,
maxMass: quote?.evo_max_mass ?? defaultValues.maxMass,
maxSpeed: quote?.evo_max_speed ?? defaultValues.maxSpeed,
mileage: quote?.evo_mileage ?? defaultValues.mileage,
model: quote?.evo_modelid,
model,
vin: quote?.evo_vin,
withTrailer: quote?.evo_trailer ?? defaultValues.withTrailer,
},

View File

@ -0,0 +1,65 @@
import type { ProcessContext } from '../../types';
import defaultValues from '@/config/default-values';
import * as CRMTypes from '@/graphql/crm.types';
import type { CalculationValues } from '@/stores/calculation/values/types';
type GetImporterRewardInput = Pick<CalculationValues, 'brand' | 'leaseObjectUsed' | 'model'>;
export default function helper({ apolloClient }: Pick<ProcessContext, 'apolloClient'>) {
return {
async getImporterReward({
brand: brandId,
leaseObjectUsed,
model: modelId,
}: GetImporterRewardInput) {
if (leaseObjectUsed) {
return {
importerRewardPerc: defaultValues.importerRewardPerc,
importerRewardRub: defaultValues.importerRewardRub,
};
}
let evo_importer_reward_perc = 0;
let evo_importer_reward_rub = 0;
if (modelId) {
const {
data: { evo_model },
} = await apolloClient.query({
query: CRMTypes.GetModelDocument,
variables: { modelId },
});
if (evo_model?.evo_importer_reward_perc) {
evo_importer_reward_perc = evo_model?.evo_importer_reward_perc;
}
if (evo_model?.evo_importer_reward_rub) {
evo_importer_reward_rub = evo_model?.evo_importer_reward_rub;
}
}
if (brandId && evo_importer_reward_perc === 0 && evo_importer_reward_rub === 0) {
const {
data: { evo_brand },
} = await apolloClient.query({
query: CRMTypes.GetBrandDocument,
variables: { brandId },
});
if (evo_brand?.evo_importer_reward_perc) {
evo_importer_reward_perc = evo_brand?.evo_importer_reward_perc;
}
if (evo_brand?.evo_importer_reward_rub) {
evo_importer_reward_rub = evo_brand?.evo_importer_reward_rub;
}
}
return {
importerRewardPerc: evo_importer_reward_perc,
importerRewardRub: evo_importer_reward_rub,
};
},
};
}

View File

@ -1,3 +1,4 @@
import helper from '../lib/helper';
import * as CRMTypes from '@/graphql/crm.types';
import type { ProcessContext } from '@/process/types';
import { normalizeOptions } from '@/utils/entity';
@ -7,6 +8,8 @@ import { intersects } from 'radash';
export default function reactions({ store, apolloClient }: ProcessContext) {
const { $calculation } = store;
const { getImporterReward } = helper({ apolloClient });
reaction(
() => $calculation.$values.getValues(['brand', 'importProgram', 'leaseObjectType', 'subsidy']),
async ({
@ -306,56 +309,11 @@ export default function reactions({ store, apolloClient }: ProcessContext) {
reaction(
() => $calculation.$values.getValues(['brand', 'model', 'leaseObjectUsed']),
async ({ brand: brandId, model: modelId, leaseObjectUsed }) => {
const tbxImporterRewardPerc = $calculation.element('tbxImporterRewardPerc');
const tbxImporterRewardRub = $calculation.element('tbxImporterRewardRub');
async (values) => {
const { importerRewardPerc, importerRewardRub } = await getImporterReward(values);
if (leaseObjectUsed) {
tbxImporterRewardPerc.resetValue();
tbxImporterRewardRub.resetValue();
return;
}
let evo_importer_reward_perc = 0;
let evo_importer_reward_rub = 0;
if (modelId) {
const {
data: { evo_model },
} = await apolloClient.query({
query: CRMTypes.GetModelDocument,
variables: { modelId },
});
if (evo_model?.evo_importer_reward_perc) {
evo_importer_reward_perc = evo_model?.evo_importer_reward_perc;
}
if (evo_model?.evo_importer_reward_rub) {
evo_importer_reward_rub = evo_model?.evo_importer_reward_rub;
}
}
if (brandId && evo_importer_reward_perc === 0 && evo_importer_reward_rub === 0) {
const {
data: { evo_brand },
} = await apolloClient.query({
query: CRMTypes.GetBrandDocument,
variables: { brandId },
});
if (evo_brand?.evo_importer_reward_perc) {
evo_importer_reward_perc = evo_brand?.evo_importer_reward_perc;
}
if (evo_brand?.evo_importer_reward_rub) {
evo_importer_reward_rub = evo_brand?.evo_importer_reward_rub;
}
}
tbxImporterRewardPerc.setValue(evo_importer_reward_perc);
tbxImporterRewardRub.setValue(evo_importer_reward_rub);
$calculation.element('tbxImporterRewardPerc').setValue(importerRewardPerc);
$calculation.element('tbxImporterRewardRub').setValue(importerRewardRub);
}
);