117 lines
2.9 KiB
TypeScript
117 lines
2.9 KiB
TypeScript
/* eslint-disable @typescript-eslint/naming-convention */
|
|
import type { GetQuoteDataInput, GetQuoteDataOutput } from '../load-kp/types';
|
|
import initializeApollo from '@/apollo/client';
|
|
import type * as CRMTypes from '@/graphql/crm.types';
|
|
import { gql } from '@apollo/client';
|
|
|
|
const QUERY_GET_LEASING_OBJECT_DATA_FROM_QUOTE = gql`
|
|
query GetLeasingObjectDataFromQuote($quoteId: Uuid!) {
|
|
quote(quoteId: $quoteId) {
|
|
evo_brandid
|
|
evo_category
|
|
evo_delivery_time
|
|
evo_engine_hours
|
|
evo_engine_type
|
|
evo_engine_volume
|
|
evo_equipmentid
|
|
evo_leasingobject_typeid
|
|
evo_leasingobject_used
|
|
evo_max_mass
|
|
evo_max_speed
|
|
evo_mileage
|
|
evo_modelid
|
|
evo_object_count
|
|
evo_power
|
|
evo_recalc_limit
|
|
evo_seats
|
|
evo_trailer
|
|
evo_use_for
|
|
evo_vin
|
|
evo_year
|
|
}
|
|
}
|
|
`;
|
|
|
|
export type Quote = NonNullable<CRMTypes.GetLeasingObjectDataFromQuoteQuery['quote']>;
|
|
|
|
type QuoteLeasingObjectProcessData = {
|
|
values: Partial<GetQuoteDataOutput['values']>;
|
|
};
|
|
|
|
export async function getKPData({
|
|
values: { quote: quoteId, recalcWithRevision },
|
|
}: GetQuoteDataInput): Promise<QuoteLeasingObjectProcessData> {
|
|
const apolloClient = initializeApollo();
|
|
|
|
const {
|
|
data: { quote },
|
|
} = await apolloClient.query<
|
|
CRMTypes.GetLeasingObjectDataFromQuoteQuery,
|
|
CRMTypes.GetLeasingObjectDataFromQuoteQueryVariables
|
|
>({
|
|
query: QUERY_GET_LEASING_OBJECT_DATA_FROM_QUOTE,
|
|
variables: {
|
|
quoteId,
|
|
},
|
|
});
|
|
|
|
if (!quote) {
|
|
throw new Error('Quote is empty');
|
|
}
|
|
|
|
const {
|
|
evo_brandid,
|
|
evo_category,
|
|
evo_delivery_time,
|
|
evo_engine_hours,
|
|
evo_engine_type,
|
|
evo_engine_volume,
|
|
evo_equipmentid,
|
|
evo_leasingobject_typeid,
|
|
evo_leasingobject_used,
|
|
evo_max_mass,
|
|
evo_max_speed,
|
|
evo_mileage,
|
|
evo_modelid,
|
|
evo_object_count,
|
|
evo_power,
|
|
evo_recalc_limit,
|
|
evo_seats,
|
|
evo_trailer,
|
|
evo_use_for,
|
|
evo_year,
|
|
evo_vin,
|
|
} = quote;
|
|
|
|
let leaseObjectCount = evo_object_count ?? undefined;
|
|
|
|
if (recalcWithRevision && evo_recalc_limit) {
|
|
leaseObjectCount = evo_recalc_limit;
|
|
}
|
|
|
|
return {
|
|
values: {
|
|
brand: evo_brandid,
|
|
configuration: evo_equipmentid,
|
|
countSeats: evo_seats ?? undefined,
|
|
deliveryTime: evo_delivery_time,
|
|
engineHours: evo_engine_hours ?? undefined,
|
|
engineType: evo_engine_type,
|
|
engineVolume: evo_engine_volume ?? undefined,
|
|
leaseObjectCategory: evo_category,
|
|
leaseObjectCount,
|
|
leaseObjectMotorPower: evo_power ?? undefined,
|
|
leaseObjectType: evo_leasingobject_typeid,
|
|
leaseObjectUseFor: evo_use_for,
|
|
leaseObjectUsed: evo_leasingobject_used ?? undefined,
|
|
leaseObjectYear: evo_year ?? undefined,
|
|
maxMass: evo_max_mass ?? undefined,
|
|
maxSpeed: evo_max_speed ?? undefined,
|
|
mileage: evo_mileage ?? undefined,
|
|
model: evo_modelid,
|
|
vin: evo_vin,
|
|
withTrailer: evo_trailer ?? undefined,
|
|
},
|
|
};
|
|
}
|