removed suspicious comments

This commit is contained in:
laxmanhalaki 2026-02-10 09:54:24 +05:30
parent 17c62d2b45
commit 9060c39f9c
6 changed files with 156 additions and 273 deletions

View File

@ -49,7 +49,7 @@ router.use('/templates', templateRoutes);
router.use('/dealers', dealerRoutes); router.use('/dealers', dealerRoutes);
router.use('/webhooks/dms', dmsWebhookRoutes); router.use('/webhooks/dms', dmsWebhookRoutes);
// TODO: Add other route modules as they are implemented // Add other route modules as they are implemented
// router.use('/approvals', approvalRoutes); // router.use('/approvals', approvalRoutes);
// router.use('/participants', participantRoutes); // router.use('/participants', participantRoutes);

View File

@ -58,7 +58,7 @@ interface DealerSeedData {
} }
// Sample data based on the provided table // Sample data based on the provided table
// TODO: Replace with your actual dealer data from Excel/CSV // Replace with your actual dealer data from Excel/CSV
const dealersData: DealerSeedData[] = [ const dealersData: DealerSeedData[] = [
{ {
salesCode: '5124', salesCode: '5124',
@ -130,10 +130,10 @@ async function seedDealersTable(): Promise<void> {
const existingDealer = whereConditions.length > 0 const existingDealer = whereConditions.length > 0
? await Dealer.findOne({ ? await Dealer.findOne({
where: { where: {
[Op.or]: whereConditions [Op.or]: whereConditions
} }
}) })
: null; : null;
if (existingDealer) { if (existingDealer) {

View File

@ -673,7 +673,7 @@ export class DashboardService {
totalCompleted, totalCompleted,
compliantWorkflows: compliantCount, compliantWorkflows: compliantCount,
changeFromPrevious: { changeFromPrevious: {
compliance: '+5.8%', // TODO: Calculate actual change compliance: '+5.8%', // Calculate actual change
cycleTime: '-0.5h' cycleTime: '-0.5h'
} }
}; };

View File

@ -2215,14 +2215,6 @@ export class DealerClaimService {
dealerName: claimDetails.dealerName, dealerName: claimDetails.dealerName,
}); });
// TODO: Implement email service to send credit note to dealer
// await emailService.sendCreditNoteToDealer({
// dealerEmail: claimDetails.dealerEmail,
// dealerName: claimDetails.dealerName,
// creditNoteNumber: creditNote.creditNoteNumber,
// creditNoteAmount: creditNote.creditNoteAmount,
// requestNumber: requestNumber,
// });
} catch (error) { } catch (error) {
logger.error('[DealerClaimService] Error sending credit note to dealer:', error); logger.error('[DealerClaimService] Error sending credit note to dealer:', error);

View File

@ -64,30 +64,6 @@ export class DMSIntegrationService {
}; };
} }
// TODO: Implement actual DMS API call
// Example:
// const response = await axios.post(`${this.dmsBaseUrl}/api/invoices/generate`, {
// request_number: invoiceData.requestNumber,
// dealer_code: invoiceData.dealerCode,
// dealer_name: invoiceData.dealerName,
// amount: invoiceData.amount,
// description: invoiceData.description,
// io_number: invoiceData.ioNumber,
// tax_details: invoiceData.taxDetails
// }, {
// headers: {
// 'Authorization': `Bearer ${this.dmsApiKey}`,
// 'Content-Type': 'application/json'
// }
// });
//
// return {
// success: response.data.success,
// eInvoiceNumber: response.data.e_invoice_number,
// dmsNumber: response.data.dms_number,
// invoiceDate: new Date(response.data.invoice_date),
// invoiceUrl: response.data.invoice_url
// };
logger.warn('[DMS] DMS e-invoice generation not implemented, generating mock invoice'); logger.warn('[DMS] DMS e-invoice generation not implemented, generating mock invoice');
const mockInvoiceNumber = `EINV-${Date.now()}`; const mockInvoiceNumber = `EINV-${Date.now()}`;
@ -145,31 +121,6 @@ export class DMSIntegrationService {
}; };
} }
// TODO: Implement actual DMS API call
// Example:
// const response = await axios.post(`${this.dmsBaseUrl}/api/credit-notes/generate`, {
// request_number: creditNoteData.requestNumber,
// e_invoice_number: creditNoteData.eInvoiceNumber,
// dealer_code: creditNoteData.dealerCode,
// dealer_name: creditNoteData.dealerName,
// amount: creditNoteData.amount,
// reason: creditNoteData.reason,
// description: creditNoteData.description
// }, {
// headers: {
// 'Authorization': `Bearer ${this.dmsApiKey}`,
// 'Content-Type': 'application/json'
// }
// });
//
// return {
// success: response.data.success,
// creditNoteNumber: response.data.credit_note_number,
// creditNoteDate: new Date(response.data.credit_note_date),
// creditNoteAmount: response.data.credit_note_amount,
// creditNoteUrl: response.data.credit_note_url
// };
logger.warn('[DMS] DMS credit note generation not implemented, generating mock credit note'); logger.warn('[DMS] DMS credit note generation not implemented, generating mock credit note');
const mockCreditNoteNumber = `CN-${Date.now()}`; const mockCreditNoteNumber = `CN-${Date.now()}`;
return { return {
@ -217,23 +168,7 @@ export class DMSIntegrationService {
}; };
} }
// TODO: Implement actual DMS API call ;
// Example:
// const response = await axios.get(`${this.dmsBaseUrl}/api/invoices/${eInvoiceNumber}/status`, {
// headers: {
// 'Authorization': `Bearer ${this.dmsApiKey}`,
// 'Content-Type': 'application/json'
// }
// });
//
// return {
// success: true,
// status: response.data.status,
// invoiceNumber: response.data.invoice_number,
// dmsNumber: response.data.dms_number,
// invoiceDate: new Date(response.data.invoice_date),
// amount: response.data.amount
// };
logger.warn('[DMS] DMS invoice status check not implemented, returning mock status'); logger.warn('[DMS] DMS invoice status check not implemented, returning mock status');
return { return {
@ -277,20 +212,7 @@ export class DMSIntegrationService {
}; };
} }
// TODO: Implement actual DMS API call
// Example:
// const response = await axios.get(`${this.dmsBaseUrl}/api/invoices/${eInvoiceNumber}/download`, {
// headers: {
// 'Authorization': `Bearer ${this.dmsApiKey}`
// },
// responseType: 'arraybuffer'
// });
//
// return {
// success: true,
// documentBuffer: Buffer.from(response.data),
// mimeType: response.headers['content-type'] || 'application/pdf'
// };
logger.warn('[DMS] DMS invoice download not implemented, returning mock URL'); logger.warn('[DMS] DMS invoice download not implemented, returning mock URL');
return { return {

View File

@ -86,9 +86,9 @@ export class SAPIntegrationService {
// SAP returns CSRF token in response headers (check multiple case variations) // SAP returns CSRF token in response headers (check multiple case variations)
const csrfToken = response.headers['x-csrf-token'] || const csrfToken = response.headers['x-csrf-token'] ||
response.headers['X-CSRF-Token'] || response.headers['X-CSRF-Token'] ||
response.headers['X-Csrf-Token'] || response.headers['X-Csrf-Token'] ||
response.headers['x-csrf-token']; response.headers['x-csrf-token'];
// Extract cookies from response headers // Extract cookies from response headers
// SAP sets cookies like: SAP_SESSIONID_DRE_200 and sap-usercontext // SAP sets cookies like: SAP_SESSIONID_DRE_200 and sap-usercontext
@ -598,7 +598,7 @@ export class SAPIntegrationService {
// Check if response is XML (SAP returns XML/Atom by default for POST) // Check if response is XML (SAP returns XML/Atom by default for POST)
const contentType = response.headers['content-type'] || ''; const contentType = response.headers['content-type'] || '';
const isXML = contentType.includes('xml') || contentType.includes('atom') || const isXML = contentType.includes('xml') || contentType.includes('atom') ||
(typeof response.data === 'string' && response.data.trim().startsWith('<')); (typeof response.data === 'string' && response.data.trim().startsWith('<'));
let responseData: any = response.data; let responseData: any = response.data;
@ -674,17 +674,17 @@ export class SAPIntegrationService {
// IMPORTANT: Check 'd:Available_Amount' first as that's what SAP returns in XML // IMPORTANT: Check 'd:Available_Amount' first as that's what SAP returns in XML
// Also check without namespace prefix as parser might strip it // Also check without namespace prefix as parser might strip it
const value = getFieldValue('d:Available_Amount') ?? // XML format with namespace prefix (PRIORITY) const value = getFieldValue('d:Available_Amount') ?? // XML format with namespace prefix (PRIORITY)
getFieldValue('Available_Amount') ?? // XML format without prefix (parser might strip 'd:') getFieldValue('Available_Amount') ?? // XML format without prefix (parser might strip 'd:')
getFieldValue('d:AvailableAmount') ?? // CamelCase variation with prefix getFieldValue('d:AvailableAmount') ?? // CamelCase variation with prefix
getFieldValue('AvailableAmount') ?? // CamelCase variation without prefix getFieldValue('AvailableAmount') ?? // CamelCase variation without prefix
getFieldValue('d:RemainingBalance') ?? getFieldValue('d:RemainingBalance') ??
getFieldValue('RemainingBalance') ?? getFieldValue('RemainingBalance') ??
getFieldValue('RemainingAmount') ?? getFieldValue('RemainingAmount') ??
getFieldValue('Remaining') ?? getFieldValue('Remaining') ??
getFieldValue('AvailableBalance') ?? getFieldValue('AvailableBalance') ??
getFieldValue('Balance') ?? getFieldValue('Balance') ??
getFieldValue('Available') ?? getFieldValue('Available') ??
null; null;
if (value === null || value === undefined) { if (value === null || value === undefined) {
logger.debug(`[SAP] extractRemainingBalance: No value found. Object keys:`, Object.keys(obj)); logger.debug(`[SAP] extractRemainingBalance: No value found. Object keys:`, Object.keys(obj));
@ -719,9 +719,9 @@ export class SAPIntegrationService {
if (!obj) return amount; if (!obj) return amount;
const value = obj.BlockedAmount || const value = obj.BlockedAmount ||
obj.Amount || obj.Amount ||
obj.Blocked || obj.Blocked ||
amount.toString(); amount.toString();
const parsed = parseFloat(value?.toString() || amount.toString()); const parsed = parseFloat(value?.toString() || amount.toString());
return isNaN(parsed) ? amount : parsed; return isNaN(parsed) ? amount : parsed;
@ -862,16 +862,16 @@ export class SAPIntegrationService {
// Try various field name variations for SAP reference number // Try various field name variations for SAP reference number
const value = getFieldValue('d:Sap_Reference_no') ?? // XML format with namespace prefix (PRIORITY) const value = getFieldValue('d:Sap_Reference_no') ?? // XML format with namespace prefix (PRIORITY)
getFieldValue('Sap_Reference_no') ?? // XML format without prefix getFieldValue('Sap_Reference_no') ?? // XML format without prefix
getFieldValue('d:SapReferenceNo') ?? getFieldValue('d:SapReferenceNo') ??
getFieldValue('SapReferenceNo') ?? getFieldValue('SapReferenceNo') ??
getFieldValue('d:Reference') ?? getFieldValue('d:Reference') ??
getFieldValue('Reference') ?? getFieldValue('Reference') ??
getFieldValue('d:BlockId') ?? getFieldValue('d:BlockId') ??
getFieldValue('BlockId') ?? getFieldValue('BlockId') ??
getFieldValue('d:DocumentNumber') ?? getFieldValue('d:DocumentNumber') ??
getFieldValue('DocumentNumber') ?? getFieldValue('DocumentNumber') ??
null; null;
if (value === null || value === undefined) { if (value === null || value === undefined) {
logger.debug(`[SAP] extractSapReference: No value found. Object keys:`, Object.keys(obj)); logger.debug(`[SAP] extractSapReference: No value found. Object keys:`, Object.keys(obj));
@ -897,9 +897,9 @@ export class SAPIntegrationService {
foundInMainEntry: remainingBalance > 0 && mainEntryProperties ? true : false, foundInMainEntry: remainingBalance > 0 && mainEntryProperties ? true : false,
ioOutputDataSample: Object.keys(ioOutputData).reduce((acc: any, key: string) => { ioOutputDataSample: Object.keys(ioOutputData).reduce((acc: any, key: string) => {
if (key.toLowerCase().includes('available') || if (key.toLowerCase().includes('available') ||
key.toLowerCase().includes('amount') || key.toLowerCase().includes('amount') ||
key.toLowerCase().includes('reference') || key.toLowerCase().includes('reference') ||
key.toLowerCase().includes('sap')) { key.toLowerCase().includes('sap')) {
acc[key] = ioOutputData[key]; acc[key] = ioOutputData[key];
} }
return acc; return acc;
@ -1117,22 +1117,7 @@ export class SAPIntegrationService {
}; };
} }
// TODO: Implement actual SAP API call to release budget
// Example:
// const response = await axios.post(`${this.sapBaseUrl}/api/io/${ioNumber}/release`, {
// block_id: blockId,
// reference: requestNumber
// }, {
// headers: {
// 'Authorization': `Bearer ${this.sapApiKey}`,
// 'Content-Type': 'application/json'
// }
// });
//
// return {
// success: response.data.success,
// releasedAmount: response.data.released_amount
// };
logger.warn('[SAP] SAP budget release not implemented, simulating release'); logger.warn('[SAP] SAP budget release not implemented, simulating release');
return { return {
@ -1177,23 +1162,7 @@ export class SAPIntegrationService {
}; };
} }
// TODO: Implement actual SAP API call to get dealer info
// Example:
// const response = await axios.get(`${this.sapBaseUrl}/api/dealers/${dealerCode}`, {
// headers: {
// 'Authorization': `Bearer ${this.sapApiKey}`,
// 'Content-Type': 'application/json'
// }
// });
//
// return {
// isValid: response.data.valid,
// dealerCode: response.data.dealer_code,
// dealerName: response.data.dealer_name,
// dealerEmail: response.data.dealer_email,
// dealerPhone: response.data.dealer_phone,
// dealerAddress: response.data.dealer_address
// };
logger.warn('[SAP] SAP dealer lookup not implemented, returning mock data'); logger.warn('[SAP] SAP dealer lookup not implemented, returning mock data');
return { return {