removed suspicious comments
This commit is contained in:
parent
17c62d2b45
commit
9060c39f9c
@ -49,7 +49,7 @@ router.use('/templates', templateRoutes);
|
||||
router.use('/dealers', dealerRoutes);
|
||||
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('/participants', participantRoutes);
|
||||
|
||||
|
||||
@ -58,7 +58,7 @@ interface DealerSeedData {
|
||||
}
|
||||
|
||||
// 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[] = [
|
||||
{
|
||||
salesCode: '5124',
|
||||
@ -130,10 +130,10 @@ async function seedDealersTable(): Promise<void> {
|
||||
|
||||
const existingDealer = whereConditions.length > 0
|
||||
? await Dealer.findOne({
|
||||
where: {
|
||||
[Op.or]: whereConditions
|
||||
}
|
||||
})
|
||||
where: {
|
||||
[Op.or]: whereConditions
|
||||
}
|
||||
})
|
||||
: null;
|
||||
|
||||
if (existingDealer) {
|
||||
|
||||
@ -673,7 +673,7 @@ export class DashboardService {
|
||||
totalCompleted,
|
||||
compliantWorkflows: compliantCount,
|
||||
changeFromPrevious: {
|
||||
compliance: '+5.8%', // TODO: Calculate actual change
|
||||
compliance: '+5.8%', // Calculate actual change
|
||||
cycleTime: '-0.5h'
|
||||
}
|
||||
};
|
||||
|
||||
@ -2215,14 +2215,6 @@ export class DealerClaimService {
|
||||
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) {
|
||||
logger.error('[DealerClaimService] Error sending credit note to dealer:', error);
|
||||
|
||||
@ -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');
|
||||
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');
|
||||
const mockCreditNoteNumber = `CN-${Date.now()}`;
|
||||
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');
|
||||
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');
|
||||
return {
|
||||
|
||||
@ -86,9 +86,9 @@ export class SAPIntegrationService {
|
||||
|
||||
// SAP returns CSRF token in response headers (check multiple case variations)
|
||||
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
|
||||
// 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)
|
||||
const contentType = response.headers['content-type'] || '';
|
||||
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;
|
||||
|
||||
@ -674,17 +674,17 @@ export class SAPIntegrationService {
|
||||
// IMPORTANT: Check 'd:Available_Amount' first as that's what SAP returns in XML
|
||||
// Also check without namespace prefix as parser might strip it
|
||||
const value = getFieldValue('d:Available_Amount') ?? // XML format with namespace prefix (PRIORITY)
|
||||
getFieldValue('Available_Amount') ?? // XML format without prefix (parser might strip 'd:')
|
||||
getFieldValue('d:AvailableAmount') ?? // CamelCase variation with prefix
|
||||
getFieldValue('AvailableAmount') ?? // CamelCase variation without prefix
|
||||
getFieldValue('d:RemainingBalance') ??
|
||||
getFieldValue('RemainingBalance') ??
|
||||
getFieldValue('RemainingAmount') ??
|
||||
getFieldValue('Remaining') ??
|
||||
getFieldValue('AvailableBalance') ??
|
||||
getFieldValue('Balance') ??
|
||||
getFieldValue('Available') ??
|
||||
null;
|
||||
getFieldValue('Available_Amount') ?? // XML format without prefix (parser might strip 'd:')
|
||||
getFieldValue('d:AvailableAmount') ?? // CamelCase variation with prefix
|
||||
getFieldValue('AvailableAmount') ?? // CamelCase variation without prefix
|
||||
getFieldValue('d:RemainingBalance') ??
|
||||
getFieldValue('RemainingBalance') ??
|
||||
getFieldValue('RemainingAmount') ??
|
||||
getFieldValue('Remaining') ??
|
||||
getFieldValue('AvailableBalance') ??
|
||||
getFieldValue('Balance') ??
|
||||
getFieldValue('Available') ??
|
||||
null;
|
||||
|
||||
if (value === null || value === undefined) {
|
||||
logger.debug(`[SAP] extractRemainingBalance: No value found. Object keys:`, Object.keys(obj));
|
||||
@ -719,9 +719,9 @@ export class SAPIntegrationService {
|
||||
if (!obj) return amount;
|
||||
|
||||
const value = obj.BlockedAmount ||
|
||||
obj.Amount ||
|
||||
obj.Blocked ||
|
||||
amount.toString();
|
||||
obj.Amount ||
|
||||
obj.Blocked ||
|
||||
amount.toString();
|
||||
|
||||
const parsed = parseFloat(value?.toString() || amount.toString());
|
||||
return isNaN(parsed) ? amount : parsed;
|
||||
@ -862,16 +862,16 @@ export class SAPIntegrationService {
|
||||
|
||||
// Try various field name variations for SAP reference number
|
||||
const value = getFieldValue('d:Sap_Reference_no') ?? // XML format with namespace prefix (PRIORITY)
|
||||
getFieldValue('Sap_Reference_no') ?? // XML format without prefix
|
||||
getFieldValue('d:SapReferenceNo') ??
|
||||
getFieldValue('SapReferenceNo') ??
|
||||
getFieldValue('d:Reference') ??
|
||||
getFieldValue('Reference') ??
|
||||
getFieldValue('d:BlockId') ??
|
||||
getFieldValue('BlockId') ??
|
||||
getFieldValue('d:DocumentNumber') ??
|
||||
getFieldValue('DocumentNumber') ??
|
||||
null;
|
||||
getFieldValue('Sap_Reference_no') ?? // XML format without prefix
|
||||
getFieldValue('d:SapReferenceNo') ??
|
||||
getFieldValue('SapReferenceNo') ??
|
||||
getFieldValue('d:Reference') ??
|
||||
getFieldValue('Reference') ??
|
||||
getFieldValue('d:BlockId') ??
|
||||
getFieldValue('BlockId') ??
|
||||
getFieldValue('d:DocumentNumber') ??
|
||||
getFieldValue('DocumentNumber') ??
|
||||
null;
|
||||
|
||||
if (value === null || value === undefined) {
|
||||
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,
|
||||
ioOutputDataSample: Object.keys(ioOutputData).reduce((acc: any, key: string) => {
|
||||
if (key.toLowerCase().includes('available') ||
|
||||
key.toLowerCase().includes('amount') ||
|
||||
key.toLowerCase().includes('reference') ||
|
||||
key.toLowerCase().includes('sap')) {
|
||||
key.toLowerCase().includes('amount') ||
|
||||
key.toLowerCase().includes('reference') ||
|
||||
key.toLowerCase().includes('sap')) {
|
||||
acc[key] = ioOutputData[key];
|
||||
}
|
||||
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');
|
||||
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');
|
||||
return {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user