login in dealer validated against the prniple dealer id

This commit is contained in:
laxman h 2026-03-26 21:11:34 +05:30
parent b76aa9b322
commit d6e86ff7fd
8 changed files with 42 additions and 24 deletions

View File

@ -1 +1 @@
import{a as s}from"./index-D9FSmDLr.js";import"./radix-vendor-CLtqm-Ae.js";import"./charts-vendor-CmYZJIYl.js";import"./utils-vendor-BTBPSQfW.js";import"./ui-vendor-DgwXkk2Y.js";import"./socket-vendor-TjCxX7sJ.js";import"./redux-vendor-tbZCm13o.js";import"./router-vendor-HW_ujxKo.js";async function m(n){return(await s.post(`/conclusions/${n}/generate`)).data.data}async function f(n,t){return(await s.post(`/conclusions/${n}/finalize`,{finalRemark:t})).data.data}async function d(n){var t;try{return(await s.get(`/conclusions/${n}`)).data.data}catch(o){if(((t=o.response)==null?void 0:t.status)===404)return null;throw o}}export{f as finalizeConclusion,m as generateConclusion,d as getConclusion};
import{a as s}from"./index-B4PRp9Lp.js";import"./radix-vendor-CLtqm-Ae.js";import"./charts-vendor-CmYZJIYl.js";import"./utils-vendor-BTBPSQfW.js";import"./ui-vendor-DgwXkk2Y.js";import"./socket-vendor-TjCxX7sJ.js";import"./redux-vendor-tbZCm13o.js";import"./router-vendor-HW_ujxKo.js";async function m(n){return(await s.post(`/conclusions/${n}/generate`)).data.data}async function f(n,t){return(await s.post(`/conclusions/${n}/finalize`,{finalRemark:t})).data.data}async function d(n){var t;try{return(await s.get(`/conclusions/${n}`)).data.data}catch(o){if(((t=o.response)==null?void 0:t.status)===404)return null;throw o}}export{f as finalizeConclusion,m as generateConclusion,d as getConclusion};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -13,7 +13,7 @@
<!-- Preload essential fonts and icons -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<script type="module" crossorigin src="/assets/index-D9FSmDLr.js"></script>
<script type="module" crossorigin src="/assets/index-B4PRp9Lp.js"></script>
<link rel="modulepreload" crossorigin href="/assets/charts-vendor-CmYZJIYl.js">
<link rel="modulepreload" crossorigin href="/assets/radix-vendor-CLtqm-Ae.js">
<link rel="modulepreload" crossorigin href="/assets/utils-vendor-BTBPSQfW.js">
@ -21,7 +21,7 @@
<link rel="modulepreload" crossorigin href="/assets/socket-vendor-TjCxX7sJ.js">
<link rel="modulepreload" crossorigin href="/assets/redux-vendor-tbZCm13o.js">
<link rel="modulepreload" crossorigin href="/assets/router-vendor-HW_ujxKo.js">
<link rel="stylesheet" crossorigin href="/assets/index-qC8Q4GZ7.css">
<link rel="stylesheet" crossorigin href="/assets/index-BNFD-0wA.css">
</head>
<body>

View File

@ -33,6 +33,7 @@ export interface DealerInfo {
gstin?: string | null;
pincode?: string | null;
itemGroup?: string | null;
parentCode?: string | null;
}
/**
@ -112,6 +113,7 @@ export async function getAllDealers(searchTerm?: string, limit: number = 10): Pr
gstin: dealer.gst || null,
pincode: dealer.showroomPincode || null,
itemGroup: null, // Local dealer table doesn't have item group yet
parentCode: null,
};
});
} catch (error) {
@ -138,9 +140,13 @@ export async function getDealerByCode(dealerCode: string): Promise<DealerInfo |
}
// 2. Try to find in User table directly (Validation logic)
// One dealer can have multiple codes but they share one parentCode.
// If externalData has a parentcode, we check if there's a user record for that parentcode.
const userLookupCode = externalData?.parentcode || dealerCode;
const user = await User.findOne({
where: {
employeeNumber: dealerCode,
employeeNumber: userLookupCode,
jobTitle: 'Dealer',
isActive: true
},
@ -149,11 +155,12 @@ export async function getDealerByCode(dealerCode: string): Promise<DealerInfo |
if (user) {
logger.info(`[DealerService] Dealer found in User table: ${dealerCode}`);
logger.info(`[DealerService] Dealer mapping found via code ${userLookupCode}: ${dealerCode}`);
return {
dealerId: user.userId,
userId: user.userId,
email: user.email,
dealerCode: user.employeeNumber || dealerCode,
dealerCode: dealerCode, // Return the originally requested code
dealerName: externalData?.['dealer name'] || user.displayName || '',
displayName: user.displayName || '',
phone: externalData?.['dealer phone'] || (user as any).mobilePhone || user.phone || undefined,
@ -165,6 +172,7 @@ export async function getDealerByCode(dealerCode: string): Promise<DealerInfo |
state: externalData?.['re state code'] || null,
pincode: externalData?.pincode || null,
itemGroup: externalData?.['item group'] || null,
parentCode: externalData?.parentcode || null,
};
}
@ -193,6 +201,7 @@ export async function getDealerByCode(dealerCode: string): Promise<DealerInfo |
state: externalData['re state code'],
pincode: externalData.pincode,
itemGroup: externalData['item group'] || null,
parentCode: externalData.parentcode || null,
};
}
logger.warn(`[DealerService] Dealer not found in any source: ${dealerCode}`);
@ -222,6 +231,7 @@ export async function getDealerByCode(dealerCode: string): Promise<DealerInfo |
gstin: externalData?.gstin || dealer.gst || null,
pincode: externalData?.pincode || dealer.showroomPincode || null,
itemGroup: externalData?.['item group'] || null,
parentCode: externalData?.parentcode || null,
};
} catch (error) {
logger.error('[DealerService] Error fetching dealer by code:', error);
@ -284,6 +294,7 @@ export async function getDealerByEmail(email: string): Promise<DealerInfo | null
gstin: dealer.gst || null,
pincode: dealer.showroomPincode || null,
itemGroup: null,
parentCode: null,
};
} catch (error) {
logger.error('[DealerService] Error fetching dealer by email:', error);

View File

@ -126,8 +126,13 @@ export class DealerClaimService {
// 2. Map and validate dealer user
const dealerCode = claimData.dealerCode;
logger.info(`[DealerClaimService] Validating dealer for code: ${claimData.dealerCode}`);
const dealerUser = await validateDealerUser(claimData.dealerCode);
logger.info(`[DealerClaimService] Resolving dealer mapping for code: ${dealerCode}`);
// Fetch dealer info (this handles external lookup and resolves parentCode)
const dealerInfo = await findDealerLocally(dealerCode);
const userLookupCode = dealerInfo?.parentCode || dealerCode;
logger.info(`[DealerClaimService] Validating dealer user for lookup code: ${userLookupCode}`);
const dealerUser = await validateDealerUser(userLookupCode);
// Validate Dealer Item Group against Activity Credit Posting
const activityType = await ActivityType.findOne({ where: { title: claimData.activityType } });

View File

@ -16,6 +16,7 @@ export interface ExternalDealerResponse {
pincode: string | null;
'dealer email': string | null;
'dealer phone': string | null;
parentcode?: string | null;
}
export class DealerExternalService {
@ -76,7 +77,8 @@ export class DealerExternalService {
'store address': data['store address'] || null,
pincode: data.pincode || null,
'dealer email': data['dealer email'] || null,
'dealer phone': data['dealer phone'] || null
'dealer phone': data['dealer phone'] || null,
parentcode: data.parentcode || null
};
} catch (error) {