diff --git a/src/pg/carnet-application/carnet-application.service.ts b/src/pg/carnet-application/carnet-application.service.ts index a260d9b..eaf78a6 100644 --- a/src/pg/carnet-application/carnet-application.service.ts +++ b/src/pg/carnet-application/carnet-application.service.ts @@ -27,7 +27,7 @@ import { import { BadRequestException } from 'src/exceptions/badRequest.exception'; import { PoolClient } from 'pg'; import { PgDBService } from 'src/db/db.service'; -import { checkPgUserDefinedErrors, deleteFilesAsync, fnCounterFoil, fnVochers, generateFinalPDF, generateGL, generateGL1, generateGreenCoverPDF, handlePgError, pdfCarnetData, pdfGLData, releasePgClient, replaceSlashWithDash, ResponseStatus, tnVochers, toUpperCaseKeys, tsCounterFoil, usCounterFoil } from 'src/utils/helper'; +import { checkPgUserDefinedErrors, deleteFilesAsync, fnCounterFoil, fnVochers, generateFinalPDF, generateGL, generateGL1, generateGreenCoverPDF, handlePgError, parsePGNumericFields, pdfCarnetData, pdfGLData, releasePgClient, replaceSlashWithDash, ResponseStatus, tnVochers, toUpperCaseKeys, tsCounterFoil, usCounterFoil } from 'src/utils/helper'; import { InternalServerException } from 'src/exceptions/internalServerError.exception'; import axios from 'axios'; import { PaypalService } from 'src/paypal/paypal.service'; @@ -509,7 +509,7 @@ export class CarnetApplicationService { await client.query(`CLOSE ${cursorName}`); await client.query('COMMIT'); - return toUpperCaseKeys(fetchResult.rows)[0] ?? []; + return parsePGNumericFields(toUpperCaseKeys(fetchResult.rows)[0] ?? []); } catch (error) { if (client) await client.query('ROLLBACK'); diff --git a/src/utils/helper.ts b/src/utils/helper.ts index 52ce69d..c34cfac 100644 --- a/src/utils/helper.ts +++ b/src/utils/helper.ts @@ -65,6 +65,21 @@ export function extractSubdomain(domain: string): string | null { } } +export function parsePGNumericFields(row) { + const keysToConvert = [ + 'BASICFEE', 'CFFEE', 'CSFEE', 'EFFEE', 'SHIPFEE', + 'SECURITYAMOUNT', 'BONDPREMIUM', 'INSUREDVALUE', + 'CARGOPREMIUM', 'LDIPREMIUM' + ]; + + const parsed = { ...row }; + for (const key of keysToConvert) { + if (parsed[key] !== null && parsed[key] !== undefined) { + parsed[key] = Number(parsed[key]); + } + } + return parsed; +} export function normalizeKeysToUpperCase(obj) { return Object.keys(obj).reduce((acc, key) => { @@ -1295,8 +1310,8 @@ export async function processGlDataInBatches( let totalItemValue = 0; for (const item of glDataArray) { - if (typeof item.itemValue === 'number') { - totalItemValue += item.itemValue; + if (typeof Number(item.itemValue) === 'number') { + totalItemValue += Number(item.itemValue); } else { console.warn(`Non-numeric itemValue encountered for itemNo: ${item.itemNo}. Skipping value.`); }