process/leasing-object: fix importerRewardPerc, importerRewardRub (get-kp-data)
This commit is contained in:
parent
0f32abc6b2
commit
498fa217fe
@ -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,
|
||||
},
|
||||
|
||||
65
apps/web/process/leasing-object/lib/helper.ts
Normal file
65
apps/web/process/leasing-object/lib/helper.ts
Normal 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,
|
||||
};
|
||||
},
|
||||
};
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user