@sachin9822/reports-lib 0.0.176 → 0.0.178
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/accounting-report/accounting-report.component.mjs +3 -3
- package/fesm2015/sachin9822-reports-lib.mjs +2 -2
- package/fesm2015/sachin9822-reports-lib.mjs.map +1 -1
- package/fesm2020/sachin9822-reports-lib.mjs +2 -2
- package/fesm2020/sachin9822-reports-lib.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sachin9822-reports-lib.mjs","sources":["../../../projects/reports-lib/src/lib/reports-lib.service.ts","../../../projects/reports-lib/src/lib/services/config.service.ts","../../../projects/reports-lib/src/lib/services/report.service.ts","../../../projects/reports-lib/src/lib/shared/export.service.ts","../../../projects/reports-lib/src/lib/shared/export-generic.service.ts","../../../projects/reports-lib/src/lib/shared/loader/loader.component.ts","../../../projects/reports-lib/src/lib/shared/loader/loader.component.html","../../../projects/reports-lib/src/lib/reports-lib.component.ts","../../../projects/reports-lib/src/lib/shared/page-size-selector/page-size-selector.component.ts","../../../projects/reports-lib/src/lib/shared/page-size-selector/page-size-selector.component.html","../../../projects/reports-lib/src/lib/shared/metadata/metadata.component.ts","../../../projects/reports-lib/src/lib/shared/metadata/metadata.component.html","../../../projects/reports-lib/src/lib/models/transaction-enquiry-report/transaction-enquiry.model.ts","../../../projects/reports-lib/src/lib/shared/search-filter/search-filter.component.ts","../../../projects/reports-lib/src/lib/shared/search-filter/search-filter.component.html","../../../projects/reports-lib/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.ts","../../../projects/reports-lib/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.html","../../../projects/reports-lib/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.ts","../../../projects/reports-lib/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.html","../../../projects/reports-lib/src/lib/reports-lib-routing.module.ts","../../../projects/reports-lib/src/lib/models/component-loading-states.ts","../../../projects/reports-lib/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.ts","../../../projects/reports-lib/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.html","../../../projects/reports-lib/src/lib/shared/shared.module.ts","../../../projects/reports-lib/src/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.ts","../../../projects/reports-lib/src/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.html","../../../projects/reports-lib/src/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.ts","../../../projects/reports-lib/src/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.html","../../../projects/reports-lib/src/lib/components/accounting-report/accounting-report.component.ts","../../../projects/reports-lib/src/lib/components/accounting-report/accounting-report.component.html","../../../projects/reports-lib/src/lib/reports-lib.module.ts","../../../projects/reports-lib/src/lib/models/branch-activity-report/branch-activity-send-report.ts","../../../projects/reports-lib/src/lib/models/branch-activity-report/branch-activity-send-report-request-domain-model.ts","../../../projects/reports-lib/src/public-api.ts","../../../projects/reports-lib/src/sachin9822-reports-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReportsLibService {\r\n\r\n constructor() { }\r\n}\r\n","\r\nimport {tap} from 'rxjs/operators';\r\nimport { IAppConfig } from '../models/app-config.model';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Observable , BehaviorSubject } from 'rxjs';\r\nimport * as _ from 'lodash';\r\n\r\n@Injectable()\r\nexport class ConfigService {\r\n private config: IAppConfig;\r\n\r\n onConfigChanged: BehaviorSubject<any>;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n load(url: string): Observable<any> {\r\n return this.http.get(url).pipe(tap((json: any) => {\r\n // Set the config\r\n this.config = json;\r\n\r\n // Create the behavior subject\r\n this.onConfigChanged = new BehaviorSubject(this.config);\r\n }));\r\n }\r\n\r\n get get(): IAppConfig {\r\n return this.config;\r\n }\r\n\r\n /**\r\n * Set the new config from given object\r\n *\r\n * @param config\r\n */\r\n setConfig(config: IAppConfig): void {\r\n // Merge the config\r\n this.config = _.merge({}, this.config, config);\r\n\r\n // Trigger the event\r\n this.onConfigChanged.next(this.config);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { AccGlDetailsEnquiryReportModel } from '../models/acc-gl-details-enquiry-report/accgl-details-enquiry-reportmodel';\r\nimport { Observable } from 'rxjs';\r\nimport { map, retry } from 'rxjs/operators';\r\nimport { BranchActivitySendReportRequestDomainModel } from '../models/branch-activity-report/branch-activity-send-report-request-domain-model';\r\nimport { BranchActivityReport } from '../models/branch-activity-report/branch-activity-send-report';\r\nimport { Product, User, Branch, TransactionData, PageLoadDataResponse, SearchCriteria } from '../models/transaction-enquiry-report/transaction-enquiry.model';\r\nimport { ConfigService } from './config.service';\r\nimport { BranchActivityReceiveReportModel } from '../models/branch-activity-receive-report/branch-activity-receive.model';\r\nimport { CancellationTransaction } from '../models/cancellation-transaction-report/cancellation-transaction.model';\r\nimport { AccountingReportModel } from '../models/accounting-report/accounting-report-model';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReportService {\r\n\r\n private reportServiceUrl: string;\r\n // private reportUrl = '/api/v1/Report';\r\n // private systemReportUrl = '/api/v1/CompanyConfiguration/SystemReports';\r\n\r\n constructor(private http: HttpClient, private config: ConfigService) {\r\n if (!this.config.get) {\r\n throw new Error('ConfigService is not initialized. Ensure APP_INITIALIZER ran before using ReportService.');\r\n }\r\n this.reportServiceUrl = this.config.get.reportServiceUrl;\r\n }\r\n\r\n public getAccGLDetailsReport(formattedDate: string | undefined, dateType: string): Observable<AccGlDetailsEnquiryReportModel> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccGlDetailsEnquiryReport/GetAccGLDetailsEnquiryReport/${formattedDate}/${dateType}`;\r\n return this.http.get<AccGlDetailsEnquiryReportModel>(apiPath);\r\n }\r\n\r\n getCompanyConfig(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetCompanyReportConfiguration`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getPayInAgents(sysUserId: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetAllPayInAgents/${sysUserId}`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getBranchByAgent(sysUserId: string, code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetBranchByAgent/${code}/${sysUserId}/BH`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n retry(2),\r\n map(response => response)\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getParams(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetBranchActivitySendReportParams`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n retry(2),\r\n map(response => response)\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getBranchActivityReport(data: BranchActivitySendReportRequestDomainModel | any): Observable<Record<string, BranchActivityReport[]>> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetBranchActivitySendReport`;\r\n return this.http.post(apiPath, data).pipe(map(response => {\r\n return <Record<string, BranchActivityReport[]>>response;\r\n }));\r\n }\r\n\r\n public getUserNameFromSessionStorage(): string {\r\n let fossilUserName = sessionStorage.getItem('fossilusername');\r\n let ezremitusername = sessionStorage.getItem('ezremitusername');\r\n if (fossilUserName) {\r\n return fossilUserName.replace(/^\"(.*)\"$/, '$1');\r\n } else {\r\n return ezremitusername.replace(/^\"(.*)\"$/, '$1');\r\n }\r\n }\r\n\r\n //Trasaction Enquiry Report Apis\r\n // API 1: Get initial page load data\r\n getPageLoadData(sysUserID: string): Observable<PageLoadDataResponse> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/pageLoadData/${sysUserID}`;\r\n return this.http.get(url).pipe(\r\n map(response => <PageLoadDataResponse>response)\r\n );\r\n }\r\n\r\n // API 2: Get branches by agent\r\n getBranchesByAgent(agentCode: string, sysUserID: string): Observable<Branch[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/branches/${agentCode}/${sysUserID}`;\r\n return this.http.get(url).pipe(\r\n map(response => <Branch[]>response)\r\n );\r\n }\r\n\r\n // API 3: Get products by agent\r\n getProductsByAgent(agentCode: string): Observable<Product[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/products/${agentCode}`;\r\n return this.http.get(url).pipe(\r\n map(response => <Product[]>response)\r\n );\r\n }\r\n\r\n // API 4: Get users by branch\r\n getUsersByBranch(businessPartnerCode: string, branchCode: string): Observable<User[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/users/${businessPartnerCode}/${branchCode}`;\r\n return this.http.get(url).pipe(\r\n map(response => <User[]>response)\r\n );\r\n }\r\n\r\n // API 5: Search transactions\r\n searchTransactions(request: SearchCriteria): Observable<TransactionData[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/search-transactions`;\r\n return this.http.post(url, request).pipe(\r\n map(response => <TransactionData[]>response)\r\n );\r\n }\r\n\r\n // Branch Activity Receive Report API\r\n getAllPayOutAgents(sysUserID:string):Observable<any[]>{\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/BranchActivityReceive/GetAllPayoutAgents/${sysUserID}`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n \r\n getBranchActivityReceiveParams(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/BranchActivityReceive/GetBranchActivityReceiveReportParams`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n \r\n getBranchActivityReceivePayoutAgentBranch(sysUserId: string, code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/BranchActivityReceive/GetBranchByPayoutAgent/${code}/${sysUserId}/BH`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n retry(2),\r\n map(response => response)\r\n return <any[]>response;\r\n }));\r\n }\r\n \r\n getBranchActivityReceiveReport(data:any):Observable < Record < string, BranchActivityReceiveReportModel[] >>{\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/BranchActivityReceive/GetBranchActivityReceiveReport`;\r\n return this.http.post(apiPath, data).pipe(map(response => {\r\n return <Record<string, BranchActivityReceiveReportModel[]>>response;\r\n }));\r\n }\r\n //Cancellation Transaction Report apis\r\n //Api 1\r\n loadDataforCancallation(sysUserId: string): Observable<any> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/CancellationTransactionReport/pageLoadData/${sysUserId}`;\r\n return this.http.get<any>(apiPath);\r\n }\r\n\r\n /** Api 2 - Get list of branches for an agent */\r\n getBranches(agentCode: string, sysUserId: string): Observable<Branch[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/CancellationTransactionReport/branches/${agentCode}/${sysUserId}`;\r\n return this.http.get<Branch[]>(apiPath).pipe(\r\n map(response => response || [])\r\n );\r\n }\r\n\r\n getCancellationReport(criteria: any): Observable<CancellationTransaction[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/CancellationTransactionReport/viewReport`;\r\n return this.http.post<CancellationTransaction[]>(url, criteria).pipe(\r\n map(response => response || [])\r\n );\r\n }\r\n\r\n\r\n \r\n // Accounting Report\r\n \r\n // Api 1 - get accounting report\r\n getAccountingReport(object: any): Observable<AccountingReportModel> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccountingReport/GetAccountingReport`;\r\n return this.http.post<AccountingReportModel>(apiPath, object).pipe(\r\n map(response => response || undefined)\r\n );\r\n }\r\n \r\n // Api 2 - get All clients\r\n getClientsForAccountingReport(sysUserID: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccountingReport/GetAllPayInAgents/${sysUserID}`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n \r\n // Api 3 - get branch by agent or client\r\n getBranchByAgentForAccountingReport(sysUserId: string, code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccountingReport/GetBranchByAgent/${code}/${sysUserId}/BH`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n retry(2),\r\n map(response => response)\r\n return <any[]>response;\r\n }));\r\n }\r\n \r\n // Api 4 - get All transaction types ( products )\r\n getTransactionTypesForAccountingReport(): Observable<Product[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/AccountingReport/getTransactionTypes`;\r\n return this.http.get(url).pipe(\r\n map(response => <Product[]>response)\r\n );\r\n }\r\n \r\n // Api 5 - get All currencies\r\n getAllCurrenciesForAccountingReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccountingReport/getAllCurrencies`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n \r\n // Api 6 - get All Transaction Status\r\n getAllTransactionStatusForAccountingReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccountingReport/GetAllTransactionStatus`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n \r\n // Api 7 - get All Countries\r\n getAllCountriesForAccountingReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccountingReport/GetAllCountries`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\nimport { formatDate } from '@angular/common';\r\n\r\ndeclare module 'jspdf' {\r\n interface jsPDF {\r\n autoTable: (options: any) => jsPDF;\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportService {\r\n\r\n private readonly pdfFontSize = 10;\r\n private readonly pdfLineHeight = 7;\r\n private readonly pdfLeftMargin = 15;\r\n public logoBase64: string | undefined;\r\n\r\n constructor() {\r\n this.loadImageAsBase64('assets/reports-lib/assets/images/XMLogo.png').then(base64 => {\r\n this.logoBase64 = base64;\r\n });\r\n }\r\n\r\n // ------------------------ Utility ------------------------\r\n private loadImageAsBase64(imagePath: string): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.crossOrigin = 'anonymous';\r\n img.src = imagePath;\r\n\r\n img.onload = () => {\r\n const scale = 6;\r\n const canvas = document.createElement('canvas');\r\n canvas.width = img.width * scale;\r\n canvas.height = img.height * scale;\r\n\r\n const ctx = canvas.getContext('2d');\r\n if (ctx) {\r\n ctx.scale(scale, scale);\r\n ctx.drawImage(img, 0, 0);\r\n const base64 = canvas.toDataURL('image/png', 1.0); // 1.0 = highest quality\r\n resolve(base64);\r\n } else {\r\n reject('Failed to get canvas context.');\r\n }\r\n };\r\n\r\n img.onerror = () => reject('Failed to load image: ' + imagePath);\r\n });\r\n }\r\n\r\n formatDate(value: any): string {\r\n const date = new Date(value);\r\n return isNaN(date.getTime()) ? '' :\r\n `${date.getDate().toString().padStart(2, '0')}/${(date.getMonth() + 1).toString().padStart(2, '0')}/${date.getFullYear()}`;\r\n }\r\n\r\n formatDateTime(date: Date): string {\r\n const day = date.getDate().toString().padStart(2, '0');\r\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\r\n const year = date.getFullYear();\r\n\r\n // 12-hour format\r\n let hours = date.getHours();\r\n const minutes = date.getMinutes().toString().padStart(2, '0');\r\n const ampm = hours >= 12 ? 'PM' : 'AM';\r\n hours = hours % 12;\r\n hours = hours ? hours : 12; // the hour '0' should be '12'\r\n const hoursStr = hours.toString().padStart(2, '0');\r\n\r\n return `${day}/${month}/${year} ${hoursStr}:${minutes} ${ampm}`;\r\n }\r\n\r\n generateReportMetadata(metadata: [string, string][]): [string, string][] {\r\n return metadata.filter(([_, value]) => value !== undefined && value !== null);\r\n }\r\n\r\n prepareExportTable(data: any[], columnDefs: any[], options: {\r\n excludeFields?: string[],\r\n currencyFields?: string[]\r\n } = {}): { headers: string[], rows: any[][] } {\r\n const { excludeFields = ['srno'], currencyFields = [] } = options;\r\n\r\n const filteredColumns = columnDefs.filter(col =>\r\n col.field &&\r\n !excludeFields.some(ex => col.field.toLowerCase().includes(ex)) &&\r\n !excludeFields.some(ex => col.headerName?.toLowerCase().includes(ex))\r\n );\r\n\r\n const headers = ['Sr No', ...filteredColumns.map(col => col.headerName || col.field)];\r\n\r\n const rows = data.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field];\r\n const fieldName = col.field?.toLowerCase() || '';\r\n\r\n // Handle various date field names\r\n if (fieldName.includes('transactiondateandtime') && value) {\r\n value = formatDate(value, 'dd/MM/yyyy hh:mm a', 'en-US');\r\n } else if ((fieldName.includes('date') || fieldName.includes('businessdate')) && value) {\r\n value = this.formatDate(value);\r\n }\r\n\r\n // Format currency fields\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n return value ?? '';\r\n });\r\n return [index + 1, ...rowData];\r\n });\r\n return { headers, rows };\r\n }\r\n\r\n // ------------------------ PDF Universal ------------------------\r\n async exportToPdfUniversal(title: string, metadata: [string, string][], headers: string[], rows: any[][], fileName: string): Promise<void> {\r\n let doc;\r\n if (fileName === \"Accounting-Report.pdf\") {\r\n doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: [700, 210] });\r\n } else {\r\n doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: [400, 210] });\r\n }\r\n\r\n const logoWidth = 38.4, logoHeight = 17.5, logoX = 15, logoY = 10;\r\n const pageWidth = doc.internal.pageSize.width;\r\n const titleY = 18;\r\n\r\n if (this.logoBase64) {\r\n doc.addImage(this.logoBase64, 'PNG', logoX, logoY, logoWidth, logoHeight);\r\n }\r\n\r\n doc.setFontSize(15);\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(title, pageWidth / 2, titleY, { align: 'center' });\r\n\r\n let currentY = titleY + 14;\r\n doc.setFontSize(this.pdfFontSize);\r\n metadata.forEach(([label, value], i) => {\r\n const y = currentY + i * this.pdfLineHeight;\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(label, this.pdfLeftMargin, y);\r\n const labelWidth = doc.getTextWidth(label + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(value, this.pdfLeftMargin + labelWidth, y);\r\n });\r\n currentY += metadata.length * this.pdfLineHeight + 5;\r\n\r\n const columnStyles: { [key: number]: any } = {};\r\n headers.forEach((_, i) => columnStyles[i] = { cellWidth: 'auto' });\r\n\r\n doc.autoTable({\r\n head: [headers],\r\n body: rows,\r\n startY: currentY,\r\n theme: 'grid',\r\n headStyles: {\r\n fillColor: [220, 220, 220], textColor: 0,\r\n fontStyle: 'bold', fontSize: 9, halign: 'center',\r\n },\r\n bodyStyles: { fontSize: 8, fillColor: [255, 255, 255], textColor: [0, 0, 0] },\r\n styles: { cellPadding: 2, overflow: 'linebreak', minCellHeight: 6 },\r\n columnStyles\r\n });\r\n\r\n doc.save(fileName);\r\n }\r\n\r\n // ------------------------ Excel Universal ------------------------\r\n exportToExcelUniversal(title: string, metadata: [string, string][], headers: string[], rows: any[][], fileName: string): void {\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet(title);\r\n\r\n let currentRow = 1;\r\n\r\n // Add image if available\r\n if (this.logoBase64) {\r\n const base64Data = this.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\r\n\r\n // Place image at top-left (e.g., A1:C4)\r\n worksheet.addImage(imageId, {\r\n tl: { col: 0, row: 0 },\r\n ext: { width: 145, height: 66 },\r\n editAs: 'oneCell'\r\n });\r\n }\r\n\r\n // Add title aligned in middle horizontally (merged across all columns)\r\n const titleRow = worksheet.getRow(currentRow);\r\n titleRow.getCell(4).value = title;\r\n titleRow.getCell(4).font = { bold: true, size: 16 };\r\n titleRow.getCell(4).alignment = { vertical: 'middle', horizontal: 'left' };\r\n\r\n const titleMergeEnd = String.fromCharCode(64 + headers.length);\r\n worksheet.mergeCells(`D${currentRow}:${titleMergeEnd}${currentRow}`);\r\n currentRow += 3; // Move past image space\r\n\r\n // Add metadata\r\n metadata.forEach(([label, value]) => {\r\n const row = worksheet.getRow(currentRow++);\r\n const cell = row.getCell(1);\r\n cell.value = {\r\n richText: [\r\n { text: `${label}: `, font: { bold: true } },\r\n { text: value ?? '', font: { bold: false } }\r\n ]\r\n };\r\n worksheet.mergeCells(`A${row.number}:${String.fromCharCode(64 + headers.length)}${row.number}`);\r\n });\r\n\r\n worksheet.addRow([]);\r\n currentRow++;\r\n\r\n // Add table header row\r\n const headerRow = worksheet.getRow(currentRow++);\r\n headers.forEach((header, i) => {\r\n const cell = headerRow.getCell(i + 1);\r\n cell.value = header;\r\n cell.font = { bold: true };\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'D9D9D9' } };\r\n cell.alignment = { vertical: 'middle', horizontal: 'center' };\r\n cell.border = {\r\n top: { style: 'thin' },\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n };\r\n });\r\n\r\n const dataStartRow = currentRow;\r\n rows.forEach(rowData => {\r\n const row = worksheet.getRow(currentRow++);\r\n rowData.forEach((value, i) => {\r\n const cell = row.getCell(i + 1);\r\n cell.value = value;\r\n cell.border = {\r\n top: { style: 'thin' },\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n };\r\n });\r\n });\r\n\r\n // Auto column widths\r\n for (let i = 1; i <= headers.length; i++) {\r\n let maxLength = headers[i - 1].length;\r\n for (let rowNum = dataStartRow; rowNum <= worksheet.lastRow!.number; rowNum++) {\r\n const val = worksheet.getRow(rowNum).getCell(i).value?.toString() || '';\r\n maxLength = Math.max(maxLength, val.length);\r\n }\r\n worksheet.getColumn(i).width = maxLength + 2;\r\n }\r\n\r\n workbook.xlsx.writeBuffer().then(buffer => {\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n });\r\n FileSaver.saveAs(blob, fileName);\r\n });\r\n }\r\n\r\n\r\n // ------------------------ CSV Universal ------------------------\r\n exportToCsvUniversal(title: string, metadata: [string, string][], headers: string[], rows: any[][], fileName: string): void {\r\n const metaRows = metadata.map(([k, v]) => [`${k}: ${v}`]);\r\n const csvContent = [\r\n [title],\r\n ...metaRows,\r\n [],\r\n headers,\r\n ...rows.map(row => row.map(value => `\"${value}\"`))\r\n ].map(e => e.join(',')).join('\\n');\r\n\r\n this.downloadFile(csvContent, fileName, 'text/csv');\r\n }\r\n\r\n private downloadFile(data: string, filename: string, type: string): void {\r\n const blob = new Blob([data], { type });\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(blob);\r\n link.setAttribute('download', filename);\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n\r\n}\r\n\r\n","// export-generic.service.ts\r\nimport { Injectable } from '@angular/core';\r\nimport jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\n\r\nexport interface ExportOptions {\r\n currencyFields?: string[];\r\n dateFields?: string[];\r\n dateFieldFormats?: {\r\n [field: string]: 'dd/MM/yyyy' | 'dd/MM/yyyy hh:mm a' | 'dd/MM/yyyy HH:mm' | string;\r\n };\r\n excludeFields?: string[];\r\n groupByKey?: boolean;\r\n specialDecimalFields?: {\r\n [field: string]: number;\r\n };\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GenericExportService {\r\n private logoBase64?: string;\r\n private readonly pdfFontSize = 10;\r\n private readonly pdfLineHeight = 7;\r\n private readonly pdfLeftMargin = 15;\r\n\r\n constructor() {\r\n this.loadImageAsBase64('assets/reports-lib/assets/images/XMLogo.png').then(base64 => {\r\n this.logoBase64 = base64;\r\n }).catch(() => {\r\n console.warn('Logo image failed to load');\r\n });\r\n }\r\n\r\n private loadImageAsBase64(imagePath: string): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.crossOrigin = 'anonymous';\r\n img.src = imagePath;\r\n img.onload = () => {\r\n const scale = 6;\r\n const canvas = document.createElement('canvas');\r\n canvas.width = img.width * scale;\r\n canvas.height = img.height * scale;\r\n const ctx = canvas.getContext('2d');\r\n if (ctx) {\r\n ctx.scale(scale, scale);\r\n ctx.drawImage(img, 0, 0);\r\n resolve(canvas.toDataURL('image/png', 1.0));\r\n } else {\r\n reject('Failed to get canvas context.');\r\n }\r\n };\r\n img.onerror = () => reject('Failed to load image: ' + imagePath);\r\n });\r\n }\r\n\r\n // ==================== PDF EXPORT ====================\r\n async exportToPdf({ title, metadata, columns, data, options = {} }: {\r\n title: string;\r\n metadata: [string, string][];\r\n columns: any[];\r\n data: any[] | Record<string, any[]>;\r\n options?: ExportOptions;\r\n }): Promise<void> {\r\n const doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: [400, 210] });\r\n const headers = ['Sr No', ...columns.map(c => c.headerName || c.field)];\r\n let rows: any[][] = [];\r\n\r\n if (options.groupByKey && !Array.isArray(data)) {\r\n for (const [group, items] of Object.entries(data)) {\r\n rows.push([{ content: group, colSpan: headers.length, styles: { halign: 'left', fontStyle: 'bold' } }]);\r\n rows.push(...this.prepareTableRows(items, columns, options));\r\n }\r\n } else {\r\n rows = this.prepareTableRows(data as any[], columns, options);\r\n }\r\n\r\n // Add logo at top left if available\r\n if (this.logoBase64) {\r\n doc.addImage(this.logoBase64, 'PNG', 15, 10, 38.4, 17.5);\r\n }\r\n\r\n // Title\r\n doc.setFontSize(15);\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(title, doc.internal.pageSize.width / 2, 18, { align: 'center' });\r\n\r\n // Metadata\r\n let currentY = 32;\r\n doc.setFontSize(this.pdfFontSize);\r\n metadata.forEach(([label, value], i) => {\r\n const y = currentY + i * this.pdfLineHeight;\r\n doc.setFont('helvetica', 'bold');\r\n const labelWithColon = label + ' :';\r\n doc.text(labelWithColon, this.pdfLeftMargin, y);\r\n const labelWidth = doc.getTextWidth(labelWithColon + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(value, this.pdfLeftMargin + labelWidth, y);\r\n });\r\n\r\n currentY += metadata.length * this.pdfLineHeight + 5;\r\n\r\n // Table styling\r\n const columnStyles: { [key: number]: any } = {};\r\n headers.forEach((_, i) => columnStyles[i] = { cellWidth: 'auto' });\r\n\r\n doc.autoTable({\r\n head: [headers],\r\n body: rows,\r\n startY: currentY,\r\n theme: 'grid',\r\n headStyles: {\r\n fillColor: [220, 220, 220],\r\n textColor: 0,\r\n fontStyle: 'bold',\r\n fontSize: 9,\r\n halign: 'center'\r\n },\r\n bodyStyles: {\r\n fontSize: 8,\r\n fillColor: [255, 255, 255],\r\n textColor: [0, 0, 0]\r\n },\r\n styles: {\r\n cellPadding: 2,\r\n overflow: 'linebreak',\r\n minCellHeight: 6\r\n },\r\n columnStyles\r\n });\r\n\r\n doc.save(title.replace(/\\s/g, '-') + '.pdf');\r\n }\r\n\r\n // ========== EXCEL EXPORT ==========\r\n async exportToExcel({\r\n title,\r\n metadata,\r\n columns,\r\n data,\r\n options = {}\r\n }: {\r\n title: string;\r\n metadata: [string, string][];\r\n columns: any[];\r\n data: any[] | Record<string, any[]>;\r\n options?: ExportOptions;\r\n }): Promise<void> {\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet(title);\r\n\r\n // Pre-calc\r\n const headerLabels = ['Sr No', ...columns.map(col => col.headerName || col.field)];\r\n const totalCols = headerLabels.length;\r\n const titleStartCol = 4; // Title in 4th Cell\r\n const titleColLetter = String.fromCharCode(64 + titleStartCol);\r\n const titleMergeEnd = String.fromCharCode(64 + totalCols);\r\n\r\n // --- Add logo in A1:C3, and make those cells tall\r\n if (this.logoBase64) {\r\n const base64Data = this.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\r\n worksheet.addImage(imageId, {\r\n tl: { col: 0, row: 0 },\r\n ext: { width: 145, height: 66 }\r\n });\r\n // Optionally, make rows 1-3 taller to fully display logo\r\n worksheet.getRow(1).height = 24;\r\n worksheet.getRow(2).height = 22;\r\n worksheet.getRow(3).height = 22;\r\n }\r\n\r\n // --- Title in D1 merged up to end\r\n worksheet.mergeCells(`${titleColLetter}1:${titleMergeEnd}1`);\r\n const titleCell = worksheet.getRow(1).getCell(titleStartCol);\r\n titleCell.value = title;\r\n titleCell.font = { bold: true, size: 16 };\r\n titleCell.alignment = { vertical: 'middle', horizontal: 'left' };\r\n\r\n // --- Leave A2:C3 empty (for image), place metadata starting at row 4\r\n let metaRowStart = 4;\r\n metadata.forEach(([label, value], idx) => {\r\n const row = worksheet.getRow(metaRowStart + idx);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: `${label} : `, font: { bold: true } },\r\n { text: value ?? '', font: { bold: false } }\r\n ]\r\n };\r\n worksheet.mergeCells(`A${row.number}:${titleMergeEnd}${row.number}`);\r\n });\r\n\r\n let currentRow = metaRowStart + metadata.length;\r\n\r\n worksheet.getRow(++currentRow).height = 6; // Blank for readability\r\n currentRow++;\r\n\r\n // Add headers and rest as before...\r\n const headerRow = worksheet.getRow(currentRow++);\r\n headerLabels.forEach((header, i) => {\r\n const cell = headerRow.getCell(i + 1);\r\n cell.value = header;\r\n cell.font = { bold: true };\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'D9D9D9' } };\r\n cell.alignment = { vertical: 'middle', horizontal: 'center' };\r\n cell.border = {\r\n top: { style: 'thin' },\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n };\r\n });\r\n\r\n // Data rows (handle grouping if present)\r\n let rowIdx = currentRow;\r\n if (options.groupByKey && !Array.isArray(data)) {\r\n for (const [group, items] of Object.entries(data)) {\r\n // Group header: bold, merged row\r\n const groupRow = worksheet.getRow(rowIdx++);\r\n groupRow.getCell(1).value = group;\r\n groupRow.font = { bold: true };\r\n worksheet.mergeCells(`A${groupRow.number}:${titleMergeEnd}${groupRow.number}`);\r\n\r\n // Data rows\r\n this.prepareTableRows(items, columns, options).forEach(rowData => {\r\n const dataRow = worksheet.getRow(rowIdx++);\r\n rowData.forEach((cellVal, cIdx) => {\r\n const cell = dataRow.getCell(cIdx + 1);\r\n cell.value = cellVal;\r\n cell.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n });\r\n });\r\n }\r\n } else {\r\n this.prepareTableRows(data as any[], columns, options).forEach(rowData => {\r\n const dataRow = worksheet.getRow(rowIdx++);\r\n rowData.forEach((cellVal, cIdx) => {\r\n const cell = dataRow.getCell(cIdx + 1);\r\n cell.value = cellVal;\r\n cell.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n });\r\n });\r\n }\r\n\r\n // --- Auto column widths\r\n for (let i = 1; i <= totalCols; i++) {\r\n let maxLength = 10; // minimum width\r\n worksheet.eachRow({ includeEmpty: true }, (row) => {\r\n const cell = row.getCell(i);\r\n if (cell.isMerged) return;\r\n let cellValue = '';\r\n if (cell.value == null) {\r\n cellValue = '';\r\n } else if (typeof cell.value === 'object' && 'richText' in cell.value) {\r\n cellValue = cell.value.richText.map(rt => rt.text).join('');\r\n } else {\r\n cellValue = cell.value.toString();\r\n }\r\n maxLength = Math.max(maxLength, cellValue.length);\r\n });\r\n // cap max width (so branch names don't explode sheet)\r\n const adjustedWidth = Math.min(maxLength, 50);\r\n worksheet.getColumn(i).width = adjustedWidth;\r\n }\r\n\r\n // --- Save workbook\r\n const buffer = await workbook.xlsx.writeBuffer();\r\n FileSaver.saveAs(\r\n new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }),\r\n title.replace(/\\s/g, '-') + '.xlsx'\r\n );\r\n }\r\n\r\n\r\n // ========== CSV EXPORT ==========\r\n exportToCsv({\r\n title,\r\n metadata,\r\n columns,\r\n data,\r\n options = {}\r\n }: {\r\n title: string;\r\n metadata: [string, string][];\r\n columns: any[];\r\n data: any[] | Record<string, any[]>;\r\n options?: ExportOptions;\r\n }): void {\r\n const headers = ['Sr No', ...columns.map(c => c.headerName || c.field)];\r\n const metaLines = metadata.map(([lbl, val]) => `${lbl}: ${val}`);\r\n let csv = [title, ...metaLines, '', headers.join(',')];\r\n\r\n if (options.groupByKey && !Array.isArray(data)) {\r\n for (const [group, items] of Object.entries(data)) {\r\n csv.push(group);\r\n this.prepareTableRows(items, columns, options).forEach(row => {\r\n csv.push(row.map(val => `\"${val}\"`).join(','));\r\n });\r\n }\r\n } else {\r\n this.prepareTableRows(data as any[], columns, options).forEach(row => {\r\n csv.push(row.map(val => `\"${val}\"`).join(','));\r\n });\r\n }\r\n\r\n // Download\r\n const blob = new Blob([csv.join('\\n')], { type: 'text/csv' });\r\n FileSaver.saveAs(blob, title.replace(/\\s/g, '-') + '.csv');\r\n }\r\n\r\n // ================= HELPER: TABLE ROW PREPARATION =================\r\n private prepareTableRows(data: any[], columns: any[], options: ExportOptions = {}): any[][] {\r\n const {\r\n excludeFields = [],\r\n currencyFields = [],\r\n dateFields = [],\r\n dateFieldFormats = {},\r\n specialDecimalFields = {}\r\n } = options;\r\n\r\n const filtered = columns.filter(c =>\r\n c.field && !excludeFields.some(f => c.field.toLowerCase().includes(f))\r\n );\r\n\r\n return data.map((row, idx) => ([\r\n idx + 1,\r\n ...filtered.map(col => {\r\n let value = row[col.field];\r\n\r\n // Format date fields with custom formats if specified\r\n if (col.field && (dateFields.includes(col.field) || col.field in dateFieldFormats)) {\r\n const format = dateFieldFormats[col.field] || 'dd/MM/yyyy';\r\n value = this.formatDateByFormat(value, format);\r\n }\r\n // Format special decimal fields with specific decimals\r\n else if (col.field && col.field in specialDecimalFields && value != null) {\r\n const decimals = specialDecimalFields[col.field];\r\n value = parseFloat(value).toFixed(decimals);\r\n }\r\n // Format regular currency fields with 3 decimals\r\n else if (col.field && currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n\r\n return value ?? '';\r\n })\r\n ]));\r\n }\r\n\r\n private formatDateByFormat(val: any, format: string): string {\r\n // Helper to pad single digits\r\n const pad = (n: number) => n.toString().padStart(2, '0');\r\n\r\n // Parse date for \"DD/MM/YYYY hh:mm AM/PM\" format manually\r\n if (typeof val === 'string' && /^\\d{2}\\/\\d{2}\\/\\d{4} \\d{2}:\\d{2} [AP]M$/.test(val)) {\r\n const parts = val.match(/^(\\d{2})\\/(\\d{2})\\/(\\d{4}) (\\d{2}):(\\d{2}) ([AP]M)$/);\r\n if (!parts) return '';\r\n let [, dd, mm, yyyy, hh, min, ampm] = parts;\r\n let hours = parseInt(hh, 10);\r\n if (ampm === 'PM' && hours !== 12) hours += 12;\r\n if (ampm === 'AM' && hours === 12) hours = 0;\r\n val = new Date(parseInt(yyyy, 10), parseInt(mm, 10) - 1, parseInt(dd, 10), hours, parseInt(min, 10));\r\n } else {\r\n val = new Date(val);\r\n }\r\n\r\n if (isNaN(val.getTime())) return '';\r\n\r\n const dt = val;\r\n\r\n switch (format) {\r\n case 'dd/MM/yyyy hh:mm a': { // 11/07/2025 10:56 PM\r\n let hours12 = dt.getHours() % 12 || 12;\r\n let ampm = dt.getHours() >= 12 ? 'PM' : 'AM';\r\n return `${pad(dt.getDate())}/${pad(dt.getMonth() + 1)}/${dt.getFullYear()} ${pad(hours12)}:${pad(dt.getMinutes())} ${ampm}`;\r\n }\r\n case 'dd/MM/yyyy HH:mm': { // 28/07/2025 13:08\r\n return `${pad(dt.getDate())}/${pad(dt.getMonth() + 1)}/${dt.getFullYear()} ${pad(dt.getHours())}:${pad(dt.getMinutes())}`;\r\n }\r\n case 'dd/MM/yyyy': { // 28/07/2025\r\n return `${pad(dt.getDate())}/${pad(dt.getMonth() + 1)}/${dt.getFullYear()}`;\r\n }\r\n default:\r\n return dt.toLocaleString();\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss']\r\n})\r\n\r\nexport class LoaderComponent {\r\n}\r\n","<div class=\"loaderContainer\">\r\n <div class=\"loading\">\r\n <div class=\"loading-bar\"></div>\r\n <div class=\"loading-bar\"></div>\r\n <div class=\"loading-bar\"></div>\r\n <div class=\"loading-bar\"></div>\r\n </div>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-reports-lib',\r\n template: `\r\n <p>\r\n reports-lib works!\r\n </p>\r\n `,\r\n styles: [\r\n ]\r\n})\r\nexport class ReportsLibComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-page-size-selector',\r\n templateUrl: './page-size-selector.component.html',\r\n styleUrls: ['./page-size-selector.component.scss']\r\n})\r\nexport class PageSizeSelectorComponent implements OnInit {\r\n\r\n @Input() pageSizeArray: (number | string)[] = [10, 15, 20, 30, 50, 100, 200, 'All'];\r\n @Input() defaultSize: string = '15';\r\n @Input() totalEntries: number = 0;\r\n @Input() gridApi: any;\r\n\r\n selectedPageSizeOption: string = '15';\r\n\r\n ngOnInit(): void {\r\n this.selectedPageSizeOption = this.defaultSize;\r\n this.applyPageSize(this.defaultSize);\r\n }\r\n\r\n onPageSizeChanged(value: string) {\r\n this.selectedPageSizeOption = value;\r\n this.applyPageSize(value);\r\n }\r\n\r\n private applyPageSize(value: string) {\r\n const size = value === 'All' ? this.totalEntries : Number(value);\r\n if (this.gridApi) {\r\n this.gridApi.paginationSetPageSize(size);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.gridApi = undefined;\r\n }\r\n\r\n}\r\n","<div class=\"d-flex align-items-center gap-2 entries-selecter-div\">\r\n <select class=\"form-select custom-height w-auto\" id=\"pageSize\" [(ngModel)]=\"selectedPageSizeOption\"\r\n (ngModelChange)=\"onPageSizeChanged($event)\">\r\n <option *ngFor=\"let size of pageSizeArray\" [value]=\"size\">{{ size }}</option>\r\n </select>\r\n <label class=\"entry-label\" for=\"pageSize\">Entries Per Page</label>\r\n</div>","import { Component, Input, OnInit, Output, EventEmitter} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-metadata',\r\n templateUrl: './metadata.component.html',\r\n styleUrls: ['./metadata.component.scss']\r\n})\r\nexport class MetadataComponent implements OnInit {\r\n @Input() metaDataOne:Record<string,string> ={};\r\n @Input() metaDataTwo:Record<string,string> = {};\r\n @Input()showmetaDataOne = true;\r\n @Input()showmetaDataTwo = false;\r\n @Input() reportName:string;\r\n @Output() searchEvent = new EventEmitter<string>();\r\n @Output() exportEvent = new EventEmitter<string>();\r\n searchText:any;\r\n exportFormats = [{formatName:\"Excel\",code:'excel'},{formatName:\"PDF\",code:'pdf'},{formatName:\"CSV\",code:'csv'}]\r\n selectedExportOption = 'excel';\r\n preserveOrder = (_a: any, _b: any): number => 0;\r\n constructor() {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log(\"Meta Data\")\r\n console.log(this.showmetaDataOne);\r\n console.log(this.showmetaDataTwo);\r\n }\r\n\r\n onSearch(){\r\n this.searchEvent.emit(this.searchText);\r\n }\r\n\r\n handleExport(){\r\n this.exportEvent.emit(this.selectedExportOption);\r\n }\r\n\r\n}\r\n","<section class=\"my-2\">\r\n <div class=\"title mb-3\">\r\n {{reportName}}\r\n </div>\r\n <div class=\"meta mb-2\">\r\n <div *ngIf=\"showmetaDataOne\" class=\"data-holder\">\r\n <tbody>\r\n <tr *ngFor=\"let item of metaDataOne | keyvalue:preserveOrder\">\r\n <td class=\"labl meta-td\">{{item.key}} :</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{item.value}}</span></td>\r\n </tr>\r\n </tbody>\r\n </div>\r\n <div *ngIf=\"showmetaDataTwo\" class=\"data-holder\">\r\n <tbody>\r\n <tr *ngFor=\"let item of metaDataTwo | keyvalue\">\r\n <td class=\"labl meta-td\">{{item.key}} :</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{item.value}}</span></td>\r\n </tr>\r\n </tbody>\r\n </div>\r\n </div>\r\n <div class=\"search-export\">\r\n <div class=\"searchBox\">\r\n <input type=\"text\" [(ngModel)]=\"searchText\" name=\"searchText\" class=\"search-input\"\r\n (ngModelChange)=\"onSearch()\" placeholder=\"Search...\" autocomplete=\"off\" />\r\n\r\n <button type=\"button\" class=\"btn btn-sm search-btn\" (click)=\"onSearch()\">\r\n <img src=\"assets/images/Search.svg\" alt=\"Search\" class=\"search-icon\" />\r\n </button>\r\n </div>\r\n\r\n <div class=\"export\">\r\n <div class=\"exp-options\">\r\n <ng-select [items]=\"exportFormats\" bindLabel=\"formatName\" bindValue=\"code\" placeholder=\"Select Format\"\r\n [(ngModel)]=\"selectedExportOption\" [clearable]=\"false\" class=\"export-selector\" required>\r\n </ng-select>\r\n </div>\r\n <button class=\"btn btn-report\" (click)=\"handleExport()\">Export</button>\r\n </div>\r\n </div>\r\n</section>","// transaction-enquiry.model.ts\r\n\r\nexport interface Client {\r\n businessPartnerCode: string;\r\n businessPartnerName: string;\r\n displayOrder: number;\r\n}\r\n\r\nexport interface Branch {\r\n businessPartnerBranch: string;\r\n businessPartnerBranch_CorrelationId: string;\r\n branchCode: string;\r\n bank: string;\r\n number: number;\r\n}\r\n\r\nexport interface User {\r\n userName: string;\r\n userId: number;\r\n number: number;\r\n}\r\n\r\nexport interface Currency {\r\n currencyCode: string;\r\n currency: string;\r\n number: string;\r\n od: number;\r\n}\r\n\r\nexport interface Product {\r\n productCode: string;\r\n productName: string;\r\n number: number;\r\n serviceTypeCode: string;\r\n}\r\n\r\nexport interface TransactionStatus {\r\n transactionStatus: string;\r\n number: number;\r\n}\r\n\r\nexport interface IdentityType {\r\n identityType: string;\r\n identityDescription: string;\r\n number: number;\r\n}\r\n\r\nexport interface UserReportDefaults {\r\n PrincipleUserName: string;\r\n ADPrincipleUserName: string;\r\n UserName: string;\r\n UserId: number;\r\n BranchCode: string;\r\n BranchName: string;\r\n BusinessDate: string;\r\n TillCode: string;\r\n LocalCurrency: string;\r\n TimeZone: string;\r\n ExecutionTime: string;\r\n StockEnquiryAll: number;\r\n StockEnquiryBranch: number;\r\n StockEnquiryExceptOwn: number;\r\n StockEnquiryExcludeLocalAmount: number;\r\n}\r\n\r\nexport interface CompanyReportConfig {\r\n Company: string;\r\n CompanyName: string;\r\n ReportLanguage: string;\r\n}\r\n\r\nexport interface TransactionData {\r\n product: string;\r\n id: string;\r\n transactionNumber: string;\r\n transactionReferenceNumber: string;\r\n businessDate: string;\r\n sendAgent: string;\r\n sendAgtBranch: string;\r\n recvAgent: string;\r\n rcvAgtBranch: string;\r\n sendName: string;\r\n sendIdType: string;\r\n sendIdNumber: string;\r\n benName: string;\r\n payOutCurrency: string;\r\n payOutAmount: number;\r\n commission: number;\r\n payInCurrency: string;\r\n payInAmount: number;\r\n transactionStatus: string;\r\n transactionUserId: number;\r\n payoutUserId: number;\r\n receiveAgentId: number;\r\n receiveBranchBusinessPartnerId: number;\r\n sendAgentCode: string;\r\n receiveAgentCode: string;\r\n sendBranchCode: string;\r\n receiveBranchCode: string;\r\n username: string;\r\n firstNames: string;\r\n amlStatus: string;\r\n transactionNote: string;\r\n cancellationBusinessDate: string;\r\n receiveAgentCountry: string;\r\n loyaltyCardNumber: string;\r\n personContacts: string;\r\n organizationContacts: string;\r\n sendAgentCountry: string;\r\n sendAgentId: number;\r\n chequeNumber: string;\r\n paidDate: string;\r\n forexAmount: number;\r\n payoutAgentName: string;\r\n authoriseDate: string;\r\n rejectedDate: string;\r\n note: string;\r\n stopPaymentDate: string;\r\n rejectedUser: string;\r\n}\r\n\r\nexport interface SearchCriteria {\r\n fromDate: string;\r\n toDate: string;\r\n client: string;\r\n branch: string;\r\n user: string;\r\n currency: string;\r\n product: string;\r\n transactionStatus: string;\r\n transactionNo: string;\r\n cardNo: string;\r\n idType: string;\r\n idNo: string;\r\n senderName: string;\r\n beneficiaryName: string;\r\n telNo: string;\r\n receiveAmount: number;\r\n branchName: string;\r\n country: string;\r\n}\r\n\r\nexport interface PageLoadDataResponse {\r\n clients: Client[];\r\n currencies: Currency[];\r\n transactionStatuses: TransactionStatus[];\r\n}\r\n\r\nexport enum ComponentLoadingState {\r\n Error = -1,\r\n Loading = 0,\r\n Complete = 1,\r\n}","import { Component, EventEmitter, Input, OnInit, OnDestroy, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ComponentLoadingState, Client, Branch, Currency, Product, TransactionStatus, User } from '../../models/transaction-enquiry-report/transaction-enquiry.model';\r\nimport { Subject } from 'rxjs';\r\nimport { forkJoin, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { ConfigService } from '../../services/config.service';\r\n\r\n\r\n@Component({\r\n selector: 'lib-search-filter',\r\n templateUrl: './search-filter.component.html',\r\n styleUrls: ['./search-filter.component.scss']\r\n})\r\n\r\nexport class SearchFilterComponent implements OnInit, OnDestroy {\r\n @Input() ReportName!: string;\r\n @Output() searchClicked = new EventEmitter<any>();\r\n\r\n searchForm!: FormGroup;\r\n formValidationError: boolean = false;\r\n private destroy$ = new Subject<void>();\r\n\r\n loadingState: ComponentLoadingState = ComponentLoadingState.Complete;\r\n ComponentLoadingState = ComponentLoadingState;\r\n hasSearched: boolean = false;\r\n private _errorMessage: string = '';\r\n\r\n currentUser: string = '';\r\n usernameMissing: boolean = false;\r\n token = sessionStorage.getItem('access_token');\r\n applicationType = 'ezremit';\r\n companyCode = 'BH';\r\n serviceUrl: string;\r\n public isOpen = false;\r\n\r\n clients1: Client[] = [];\r\n branches: Branch[] = [];\r\n users: User[] = [];\r\n currencies: Currency[] = [];\r\n products: Product[] = [];\r\n transactionStatuses: TransactionStatus[] = [];\r\n selectedStatuses: string[] = [];\r\n showStatusDropdown: boolean = false;\r\n visibleFieldKeys: string[] = [];\r\n params: any;\r\n countries: any[] = [];\r\n transactionProducts: any[] = [];\r\n dateType: any = 1;\r\n date: any;\r\n\r\n // Field visibility map, 'fromDate', 'toDate','product','userId','currency','transactionStatus','transactionNo'\r\n visibleFieldsMap: { [report: string]: string[] } = {\r\n 'Transaction Enquiry': ['client', 'fromDate', 'toDate', 'branch', 'product', 'currency', 'transactionStatus', 'transactionNo'],\r\n 'FC Ledger': ['client', 'fromDate', 'toDate', 'currency', 'product'],\r\n 'Branch Activity Send': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'currency', 'transactionStatus', 'sendCountry', 'receiveCountry'],\r\n 'ACC GL Details Enquiry': ['dateType', 'date'],\r\n 'Branch Activity Receive': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'currency', 'transactionStatus', 'sendCountry', 'receiveCountry'],\r\n 'Cancellation Transaction':['client','fromDate','toDate','branch','sendCountry','receiveCountry','product','receiveCurrency'],\r\n 'Accounting': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'currency', 'transactionStatus', 'sendCountry', 'receiveCountry'],\r\n\r\n // Add more report types here\r\n };\r\n\r\n get visibleFields(): string[] {\r\n return this.visibleFieldsMap[this.ReportName] || [];\r\n }\r\n\r\n isFieldVisible(field: string): boolean {\r\n return this.visibleFields.includes(field);\r\n }\r\n\r\n constructor(\r\n private reportService: ReportService,\r\n private fb: FormBuilder,\r\n private config: ConfigService\r\n ) {\r\n this.serviceUrl = this.config.get.serviceUrl;\r\n let fossilUser = sessionStorage.getItem('fossilusername');\r\n let ezremitUser = sessionStorage.getItem('ezremitusername');\r\n\r\n if (fossilUser) this.currentUser = fossilUser;\r\n else if (ezremitUser) this.currentUser = ezremitUser;\r\n else {\r\n this.usernameMissing = true;\r\n }\r\n this.currentUser = this.currentUser.replace(/^[\"'](.*)[\"']$/, '$1');\r\n }\r\n\r\n ngOnInit(): void {\r\n this.checkReport();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private checkReport() {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n this.initializeForm();\r\n this.subscribeToDateChanges();\r\n this.loadInitialData();\r\n }\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n }\r\n if (this.ReportName == \"ACC GL Details Enquiry\") {\r\n this.initializeForm();\r\n }\r\n if(this.ReportName == \"Cancellation Transaction\"){\r\n this.initializeForm();\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n }\r\n if (this.ReportName === \"Branch Activity Receive\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n }\r\n if (this.ReportName == \"Accounting\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n }\r\n }\r\n\r\n loadInitialData() {\r\n if (this.ReportName == 'Transaction Enquiry') {\r\n this.loadInitialDatafortxnEnquiry();\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n this.loadInitialDataforBranchActivitySend();\r\n }\r\n\r\n if (this.ReportName === \"Branch Activity Receive\") {\r\n this.loadInitialDataforBranchActivityReceive();\r\n }\r\n if(this.ReportName == \"Cancellation Transaction\"){\r\n this.loadInitialDataForCancellationReport();\r\n }\r\n if (this.ReportName == \"Accounting\") {\r\n this.loadInitialDataforAccounting();\r\n }\r\n\r\n }\r\n\r\n\r\n private initializeForm(): void {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n this.searchForm = this.fb.group(\r\n {\r\n client: [null, Validators.required],\r\n fromDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n toDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n branch: [null, Validators.required],\r\n userId: ['-1'],\r\n currency: ['All'],\r\n product: [null, Validators.required],\r\n transactionStatus: [['All'], Validators.required],\r\n transactionNo: [''],\r\n cardNo: [''],\r\n idType: [''],\r\n idNo: [''],\r\n senderName: [''],\r\n beneficiaryName: [''],\r\n telNo: [''],\r\n receiveAmount: [''],\r\n branchName: [''],\r\n country: [''],\r\n },\r\n );\r\n }\r\n\r\n if (this.ReportName == \"ACC GL Details Enquiry\") {\r\n this.searchForm = this.fb.group(\r\n {\r\n date: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n dateType: [1, Validators.required]\r\n });\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n this.searchForm = this.fb.group(\r\n {\r\n client: [null, Validators.required],\r\n fromDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n toDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n branch: [null, Validators.required],\r\n currency: ['All'],\r\n product: ['All', Validators.required],\r\n transactionStatus: [['All'], Validators.required],\r\n sendCountry: ['All'],\r\n receiveCountry: ['All']\r\n }\r\n );\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Receive\") {\r\n this.searchForm = this.fb.group(\r\n {\r\n client: [null, Validators.required],\r\n fromDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n toDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n branch: [null, Validators.required],\r\n currency: ['All'],\r\n product: ['All', Validators.required],\r\n transactionStatus: [['All'], Validators.required],\r\n sendCountry: ['All'],\r\n receiveCountry: ['All']\r\n }\r\n );\r\n }\r\n\r\n if(this.ReportName == \"Cancellation Transaction\"){\r\n this.searchForm = this.fb.group(\r\n {\r\n client: [null, Validators.required],\r\n fromDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n toDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n branch: [null, Validators.required],\r\n sendCountry: [null],\r\n receiveCountry: [null],\r\n product: [null, Validators.required],\r\n receiveCurrency: [null, Validators.required],\r\n }\r\n );\r\n }\r\n\r\n if (this.ReportName == \"Accounting\") {\r\n this.searchForm = this.fb.group(\r\n {\r\n client: [null, Validators.required],\r\n fromDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n toDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n branch: [null, Validators.required],\r\n currency: ['All'],\r\n product: ['All', Validators.required],\r\n transactionStatus: [['All'], Validators.required],\r\n sendCountry: ['All'],\r\n receiveCountry: ['All']\r\n }\r\n );\r\n }\r\n }\r\n\r\n loadInitialDataforBranchActivitySend() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n forkJoin({\r\n params: this.reportService.getParams().pipe(\r\n catchError(err => {\r\n console.error('Error loading params', err);\r\n return of(null);\r\n })\r\n ),\r\n clients: this.reportService.getPayInAgents(this.currentUser).pipe(\r\n map((clients: any[]): Client[] =>\r\n clients.map((client, index) => ({\r\n businessPartnerName: client.agent,\r\n businessPartnerCode: client.code,\r\n displayOrder: index // or use some value from the API if available\r\n }))\r\n ),\r\n catchError(err => {\r\n console.error('Error loading clients', err);\r\n return of([]);\r\n })\r\n )\r\n }).subscribe(\r\n {\r\n next: ({ params, clients }) => {\r\n this.params = params;\r\n this.clients1 = clients;\r\n // this.clientsData = [...clients];\r\n this.countries = [...params?.countries]\r\n this.currencies = [...params?.currencies];\r\n this.transactionStatuses = [...params?.transactionStatusTypes];\r\n this.transactionProducts = [...params?.transactionProductTypes];\r\n if (!sessionStorage.getItem('fossilusername') && this.clients1?.length) {\r\n this.selectClient(this.clients1[0].businessPartnerCode);\r\n }\r\n // this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n error: err => {\r\n // Occurs only if an inner catchError still rethrows\r\n console.error('Unexpected forkJoin error', err);\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n this.onClientSelected();\r\n }\r\n }\r\n );\r\n }\r\n\r\n private async loadInitialDatafortxnEnquiry(): Promise<void> {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n try {\r\n const data = await this.reportService\r\n .getPageLoadData(this.currentUser)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n\r\n if (data) {\r\n this.clients1 = data.clients || [];\r\n this.currencies = data.currencies || [];\r\n this.transactionStatuses = (data.transactionStatuses || []).filter(\r\n ts => ts.transactionStatus !== ''\r\n );\r\n if (\r\n !this.transactionStatuses.some(\r\n s => s.transactionStatus === 'All'\r\n )\r\n ) {\r\n this.transactionStatuses.unshift({\r\n transactionStatus: 'All',\r\n } as TransactionStatus);\r\n }\r\n\r\n if (this.clients1.length === 1) {\r\n this.searchForm.patchValue({\r\n client: this.clients1[0].businessPartnerCode,\r\n });\r\n await this.onClientChange();\r\n }\r\n }\r\n\r\n this.loadingState = ComponentLoadingState.Complete;\r\n } catch (error) {\r\n this.errorMessage = 'Failed to load initial data';\r\n this.loadingState = ComponentLoadingState.Error;\r\n }\r\n }\r\n\r\n loadInitialDataforBranchActivityReceive() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n forkJoin({\r\n params: this.reportService.getBranchActivityReceiveParams()\r\n .pipe(catchError(err => {\r\n console.error('Error loading params', err);\r\n return of(null);\r\n })\r\n ),\r\n payoutAgents: this.reportService.getAllPayOutAgents(this.currentUser)\r\n .pipe(map((clients: any[]): Client[] =>\r\n clients.map((client, index) => ({\r\n businessPartnerName: client.agent,\r\n businessPartnerCode: client.code,\r\n displayOrder: client.number\r\n }))\r\n ), catchError(err => {\r\n return of([]);\r\n }))\r\n }).subscribe({\r\n next: ({ params, payoutAgents }) => {\r\n this.params = params;\r\n this.clients1 = payoutAgents;\r\n // this.clientsData = [...clients];\r\n this.countries = [...params?.countries]\r\n this.currencies = [...params?.currencies];\r\n this.transactionStatuses = [...params?.transactionStatusTypes];\r\n this.transactionProducts = [...params?.transactionProductTypes];\r\n if (!sessionStorage.getItem('fossilusername') && this.clients1?.length) {\r\n this.selectClient(this.clients1[0].businessPartnerCode);\r\n }\r\n // this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n error: err => {\r\n // Occurs only if an inner catchError still rethrows\r\n console.error('Unexpected forkJoin error', err);\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n this.onClientSelected();\r\n }\r\n })\r\n }\r\n private async loadInitialDataForCancellationReport(): Promise<void> {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n\r\n try {\r\n const data = await this.reportService\r\n .loadDataforCancallation(this.currentUser)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n\r\n if (data) {\r\n this.countries = data.countries ?? [];\r\n this.clients1 = (data.payInAgents ?? []).map((agent, index) => ({\r\n businessPartnerName: agent.agent,\r\n businessPartnerCode: agent.code,\r\n displayOrder: index\r\n }));\r\n this.products = (data.productTypes ?? []).map((pt, index) => ({\r\n productCode: pt.productCode,\r\n productName: pt.name,\r\n number: index,\r\n serviceTypeCode: pt.serviceTypeCode || ''\r\n }));\r\n this.currencies = data.currencies ?? [];\r\n\r\n this.searchForm.patchValue({\r\n product: this.products[0]?.productCode,\r\n receiveCountry: this.countries[0]?.country,\r\n sendCountry: this.countries[0]?.country,\r\n receiveCurrency: this.currencies[0]?.currencyCode\r\n });\r\n\r\n // If only one client, preselect\r\n if (this.clients1.length === 1) {\r\n this.searchForm.patchValue({\r\n client: this.clients1[0].businessPartnerCode\r\n });\r\n await this.onClientChange();\r\n }\r\n } else {\r\n // No data case\r\n this.countries = [];\r\n this.clients1 = [];\r\n this.products = [];\r\n this.currencies = [];\r\n }\r\n\r\n this.loadingState = ComponentLoadingState.Complete;\r\n\r\n } catch (error) {\r\n console.error('Error loading cancellation report data', error);\r\n this.errorMessage = 'Failed to load cancellation report data';\r\n this.loadingState = ComponentLoadingState.Error;\r\n }\r\n }\r\n\r\n\r\n \r\n loadInitialDataforAccounting() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n \r\n forkJoin({\r\n clients: this.reportService.getClientsForAccountingReport(this.currentUser).pipe(\r\n map((clients: any[]): Client[] =>\r\n clients.map((client, index) => ({\r\n businessPartnerName: client.agent,\r\n businessPartnerCode: client.code,\r\n displayOrder: index\r\n }))\r\n ),\r\n catchError(err => {\r\n console.error('Error loading clients', err);\r\n return of([]);\r\n })\r\n ),\r\n products: this.reportService.getTransactionTypesForAccountingReport().pipe(\r\n catchError(err => {\r\n console.error('Error loading transaction types', err);\r\n return of([]);\r\n })\r\n ),\r\n currencies: this.reportService.getAllCurrenciesForAccountingReport().pipe(\r\n catchError(err => {\r\n console.error('Error loading currencies', err);\r\n return of([]);\r\n })\r\n ),\r\n statuses: this.reportService.getAllTransactionStatusForAccountingReport().pipe(\r\n catchError(err => {\r\n console.error('Error loading statuses', err);\r\n return of([]);\r\n })\r\n ),\r\n countries: this.reportService.getAllCountriesForAccountingReport().pipe(\r\n catchError(err => {\r\n console.error('Error loading countries', err);\r\n return of([]);\r\n })\r\n )\r\n }).subscribe({\r\n next: ({ clients, products, currencies, statuses, countries }) => {\r\n this.clients1 = clients;\r\n this.transactionProducts = products;\r\n this.currencies = currencies;\r\n this.transactionStatuses = statuses;\r\n this.countries = countries;\r\n \r\n // Preselect first client if none chosen\r\n if (!sessionStorage.getItem('fossilusername') && this.clients1?.length) {\r\n this.selectClient(this.clients1[0].businessPartnerCode);\r\n }\r\n },\r\n error: err => {\r\n console.error('Unexpected forkJoin error in Accounting init', err);\r\n this.loadingState = ComponentLoadingState.Error;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n this.onClientSelected();\r\n }\r\n });\r\n \r\n }\r\n\r\n\r\n\r\n private subscribeToDateChanges(): void {\r\n this.searchForm.get('fromDate')?.valueChanges.subscribe(fromDateStr => {\r\n const toDateControl = this.searchForm.get('toDate');\r\n const toDateStr = toDateControl?.value;\r\n if (!fromDateStr || !toDateStr) return;\r\n const fromDate = new Date(fromDateStr);\r\n const toDate = new Date(toDateStr);\r\n\r\n const maxToDate = new Date(fromDate);\r\n maxToDate?.setDate(fromDate.getDate() + 31);\r\n if (toDate.setHours(0, 0, 0, 0) > maxToDate.setHours(0, 0, 0, 0) || toDate.setHours(0, 0, 0, 0) < fromDate.setHours(0, 0, 0, 0)) {\r\n maxToDate.setHours(12, 0, 0, 0);\r\n toDateControl?.patchValue(maxToDate.toISOString().split(\"T\")[0]);\r\n console.log(toDateControl);\r\n }\r\n });\r\n\r\n this.searchForm.get('toDate')?.valueChanges.subscribe(toDateStr => {\r\n const fromDateControl = this.searchForm.get('fromDate');\r\n const fromDateStr = fromDateControl?.value;\r\n if (!toDateStr || !fromDateStr) return;\r\n const toDate = new Date(toDateStr);\r\n const fromDate = new Date(fromDateStr);\r\n\r\n const minFromDate = new Date(toDate);\r\n minFromDate?.setDate(toDate.getDate() - 31);\r\n if (fromDate.setHours(0, 0, 0, 0) < minFromDate.setHours(0, 0, 0, 0)) {\r\n minFromDate.setHours(12, 0, 0, 0);\r\n fromDateControl?.patchValue(minFromDate.toISOString().split(\"T\")[0]);\r\n }\r\n });\r\n }\r\n\r\n\r\n async onClientChange(): Promise<void> {\r\n\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n if (!selectedClient) return;\r\n\r\n this.searchForm.patchValue({ branch: '', userId: '' });\r\n this.branches = [];\r\n this.products = [];\r\n this.users = [];\r\n\r\n try {\r\n await Promise.all([\r\n this.loadBranchesByAgent(selectedClient),\r\n this.loadProductsByAgent(selectedClient),\r\n ]);\r\n this.searchForm.patchValue({ product: 'All' });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n } catch (err) {\r\n this.errorMessage = 'Failed to load branch/product';\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n if (!selectedClient) return;\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.reportService.getBranchByAgent(this.currentUser, selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n if (sessionStorage.getItem(\"ezremitusername\")) {\r\n const index = this.branches.findIndex((branch) => branch.branchCode === \"All\");\r\n if (index == -1) {\r\n this.searchForm.controls['branch'].setValue(this.branches[0].branchCode)\r\n } else {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n }\r\n this.loadingState = ComponentLoadingState.Complete;\r\n\r\n }\r\n });\r\n }\r\n\r\n if (this.ReportName === \"Branch Activity Receive\") {\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n if (!selectedClient) return;\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.reportService.getBranchActivityReceivePayoutAgentBranch(this.currentUser, selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n if (sessionStorage.getItem(\"ezremitusername\")) {\r\n const index = this.branches.findIndex((branch) => branch.branchCode === \"All\");\r\n if (index == -1) {\r\n this.searchForm.controls['branch'].setValue(this.branches[0].branchCode)\r\n } else {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n }\r\n this.loadingState = ComponentLoadingState.Complete;\r\n\r\n }\r\n });\r\n }\r\n\r\n if (this.ReportName == \"Cancellation Transaction\") {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n \r\n try {\r\n const data = await this.reportService\r\n .getBranches(selectedClient, this.currentUser)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n \r\n if (data) {\r\n this.branches = data;\r\n this.searchForm.patchValue({branch: this.branches[0].branchCode});\r\n }\r\n this.loadingState = ComponentLoadingState.Complete;\r\n \r\n } catch (error) {\r\n console.error('Failed to load branches', error);\r\n this.errorMessage = 'Failed to load branch data';\r\n this.loadingState = ComponentLoadingState.Error;\r\n }\r\n }\r\n\r\n\r\n \r\n // accounting report\r\n \r\n if (this.ReportName == \"Accounting\") {\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n if (!selectedClient) return;\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.reportService.getBranchByAgentForAccountingReport(this.currentUser, selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n if (sessionStorage.getItem(\"ezremitusername\")) {\r\n const index = this.branches.findIndex((branch) => branch.branchCode === \"All\");\r\n if (index == -1) {\r\n this.searchForm.controls['branch'].setValue(this.branches[0].branchCode)\r\n } else {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n }\r\n if (sessionStorage.getItem(\"fossilusername\")) {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n this.loadingState = ComponentLoadingState.Complete;\r\n \r\n }\r\n });\r\n }\r\n }\r\n\r\n private async loadBranchesByAgent(agentCode: string): Promise<void> {\r\n const branches = await this.reportService\r\n .getBranchesByAgent(agentCode, this.currentUser)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n this.branches = branches || [];\r\n\r\n if (this.branches.length === 1) {\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n // await this.loadUsersByBranch(agentCode, this.branches[0].branchCode);\r\n } else if (this.branches.some(b => b.branchCode === 'All')) {\r\n this.searchForm.patchValue({ branch: 'All' });\r\n // await this.loadUsersByBranch(agentCode, 'All');\r\n } else {\r\n this.searchForm.patchValue({ branch: '' });\r\n this.users = [];\r\n }\r\n }\r\n\r\n private async loadProductsByAgent(agentCode: string): Promise<void> {\r\n const products = await this.reportService\r\n .getProductsByAgent(agentCode)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n this.products = products || [];\r\n }\r\n\r\n async onBranchChange(): Promise<void> {\r\n \r\n }\r\n\r\n onSearch(): void {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n\r\n if (this.ReportName == \"ACC GL Details Enquiry\") {\r\n const modal = {\r\n selectedDateType: this.searchForm.controls[\"dateType\"]?.value,\r\n selectedDate: this.searchForm.controls[\"date\"]?.value\r\n }\r\n this.searchClicked.emit(modal);\r\n }\r\n\r\n if (this.ReportName === \"Branch Activity Receive\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n\r\n if(this.ReportName == \"Cancellation Transaction\"){\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n\r\n if (this.ReportName == \"Accounting\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n // this.markFormGroupTouched(this.searchForm);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n }\r\n\r\n private buildSearchCriteria(): any {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n const formValue = this.searchForm.value;\r\n return {\r\n bank: formValue.client,\r\n fromDate: this.toIsoFormat(formValue.fromDate),\r\n toDate: this.toIsoFormat(formValue.toDate),\r\n branch: formValue.branch,\r\n user: formValue.userId || '-1',\r\n currency: formValue.currency,\r\n product: formValue.product,\r\n status: this.selectedStatuses.includes('All') ? [''] : this.selectedStatuses,\r\n transactionNo: (formValue.transactionNo || '').trim(),\r\n cardNo: formValue.cardNo || '',\r\n idType: formValue.idType || '',\r\n idNo: formValue.idNo || '',\r\n senderName: formValue.senderName || '',\r\n beneficiaryName: formValue.beneficiaryName || '',\r\n telNo: formValue.telNo || '',\r\n payoutAmount: formValue.receiveAmount || '',\r\n branchName: formValue.branchName || '',\r\n company: this.companyCode || '',\r\n country: formValue.country || '',\r\n sysUserID: this.currentUser,\r\n };\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n const formValue = this.searchForm.value;\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser\r\n }\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Receive\") {\r\n const formValue = this.searchForm.value;\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser\r\n }\r\n }\r\n\r\n if(this.ReportName == \"Cancellation Transaction\"){\r\n const formValue = this.searchForm.value;\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser\r\n }\r\n }\r\n\r\n if (this.ReportName == \"Accounting\") {\r\n const formValue = this.searchForm.value;\r\n return {\r\n modal: {\r\n ...formValue,\r\n fromDate: this.toIsoFormat(formValue.fromDate),\r\n toDate: this.toIsoFormat(formValue.toDate),\r\n },\r\n sysUserID: this.currentUser\r\n };\r\n\r\n }\r\n }\r\n\r\n toIsoFormat(dateInput: any): string | undefined {\r\n if (!dateInput) return undefined;\r\n\r\n // Handle { year, month, day }\r\n if (\r\n typeof dateInput === 'object' &&\r\n dateInput.year &&\r\n dateInput.month &&\r\n dateInput.day\r\n ) {\r\n const year = dateInput.year;\r\n const month = String(dateInput.month).padStart(2, '0');\r\n const day = String(dateInput.day).padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n // Handle JS Date object\r\n if (dateInput instanceof Date) {\r\n if (isNaN(dateInput.getTime())) return undefined;\r\n const year = dateInput.getFullYear();\r\n const month = String(dateInput.getMonth() + 1).padStart(2, '0');\r\n const day = String(dateInput.getDate()).padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n // Handle dd/MM/yyyy string\r\n if (typeof dateInput === 'string' && dateInput.includes('/')) {\r\n const parts = dateInput.split('/');\r\n if (parts.length === 3) {\r\n const [day, month, year] = parts;\r\n return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;\r\n }\r\n }\r\n\r\n // Handle ISO string (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss.sssZ)\r\n if (typeof dateInput === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(dateInput)) {\r\n // Use only date part if full ISO string\r\n return dateInput.substring(0, 10);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n onOpen() {\r\n this.isOpen = true;\r\n }\r\n onClose() {\r\n this.isOpen = false;\r\n }\r\n\r\n\r\n get errorMessage(): string {\r\n return this._errorMessage;\r\n }\r\n\r\n set errorMessage(value: string) {\r\n this._errorMessage = value;\r\n }\r\n\r\n get isLoading(): boolean {\r\n return this.loadingState === ComponentLoadingState.Loading;\r\n }\r\n\r\n get isError(): boolean {\r\n return this.loadingState === ComponentLoadingState.Error;\r\n }\r\n\r\n selectClient(client: any) {\r\n this.searchForm.controls[\"client\"].setValue(client);\r\n this.searchForm.controls[\"branch\"].setValue(null);\r\n this.onAgentSelected(client);\r\n }\r\n\r\n onAgentSelected(code: any) {\r\n if (this.searchForm.controls['client'].value === null) {\r\n return;\r\n }\r\n this.searchForm.controls['branch'].patchValue(null);\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n this.reportService.getBranchByAgent(this.currentUser, code).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n // this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n complete: () => {\r\n if (sessionStorage.getItem(\"ezremitusername\")) {\r\n const index = this.branches.findIndex((branch) => branch.branchCode === \"All\");\r\n if (index == -1) {\r\n this.searchForm.controls['branch'].setValue(this.branches[0].branchCode)\r\n } else {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n }\r\n if (sessionStorage.getItem(\"fossilusername\")) {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n // this.loadingState = ComponentLoadingStates.Complete;\r\n\r\n }\r\n });\r\n }\r\n\r\n if (this.ReportName === \"Branch Activity Receive\") {\r\n this.reportService.getBranchActivityReceivePayoutAgentBranch(this.currentUser, code).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n // this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n complete: () => {\r\n if (sessionStorage.getItem(\"ezremitusername\")) {\r\n const index = this.branches.findIndex((branch) => branch.branchCode === \"All\");\r\n if (index == -1) {\r\n this.searchForm.controls['branch'].setValue(this.branches[0].branchCode)\r\n } else {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n }\r\n if (sessionStorage.getItem(\"fossilusername\")) {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n // accounting report \r\n\r\n if (this.ReportName == \"Accounting\") {\r\n this.reportService.getBranchByAgentForAccountingReport(this.currentUser, code).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n // this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n complete: () => {\r\n if (sessionStorage.getItem(\"ezremitusername\")) {\r\n const index = this.branches.findIndex((branch) => branch.branchCode === \"All\");\r\n if (index == -1) {\r\n this.searchForm.controls['branch'].setValue(this.branches[0].branchCode)\r\n } else {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n }\r\n // this.loadingState = ComponentLoadingStates.Complete;\r\n\r\n }\r\n });\r\n }\r\n }\r\n\r\n onClientSelected() {\r\n this.searchForm.get('client')?.valueChanges.subscribe((val) => {\r\n val = this.searchForm.get('client')?.value;\r\n this.onAgentSelected(val);\r\n })\r\n }\r\n}\r\n","<h6 class=\"Breadcrumb\">\r\n <a class=\"BreadCrumbLink\" [routerLink]=\"['/reports']\">\r\n <h1>Reports</h1>\r\n </a>\r\n <a href=\"BreadCrumbLink\"></a>\r\n <span class=\"BreadCrumbArrow\"></span>\r\n <a class=\"BreadCrumbLink\">\r\n <h2>{{ ReportName }}</h2>\r\n </a>\r\n</h6>\r\n\r\n<app-loader *ngIf=\"loadingState === ComponentLoadingState.Loading\"></app-loader>\r\n<section>\r\n <form [formGroup]=\"searchForm\" (ngSubmit)=\"onSearch()\">\r\n <div class=\"row\">\r\n <div class=\"col-custom-10-5\">\r\n <div class=\"filter-grid\">\r\n\r\n <!-- Dynamically render filters in order -->\r\n <ng-container *ngFor=\"let field of visibleFields\">\r\n <ng-container [ngSwitch]=\"field\">\r\n\r\n <!-- Client -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'client'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Client<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"clients1\" bindLabel=\"businessPartnerName\" bindValue=\"businessPartnerCode\"\r\n placeholder=\"Select Client\" [clearable]=\"false\" formControlName=\"client\" required\r\n (change)=\"onClientChange()\" (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span [title]=\"item.businessPartnerName\">{{ item.businessPartnerName }}</span>\r\n </ng-template>\r\n\r\n </ng-select>\r\n\r\n <!-- <ng-select [items]=\"clients1\" bindLabel=\"businessPartnerName\" bindValue=\"businessPartnerCode\"\r\n placeholder=\"Select Client\" [clearable]=\"false\" formControlName=\"client\" required\r\n (change)=\"onClientChange()\" (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n </ng-select> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Branch -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'branch'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Branch<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"branches\" bindLabel=\"businessPartnerBranch\" bindValue=\"branchCode\"\r\n placeholder=\"Select Branch\" [clearable]=\"false\" formControlName=\"branch\" required\r\n (change)=\"onBranchChange()\" (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span [title]=\"item.businessPartnerBranch\">{{ item.businessPartnerBranch }}</span>\r\n </ng-template>\r\n\r\n </ng-select>\r\n\r\n <!-- <ng-select [items]=\"branches\" bindLabel=\"businessPartnerBranch\" bindValue=\"branchCode\"\r\n placeholder=\"Select Branch\" [clearable]=\"false\" formControlName=\"branch\" required\r\n (change)=\"onBranchChange()\" (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n </ng-select> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- From Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'fromDate'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">From Date<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <div class=\"input-group date-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #fromDateInput=\"ngbDatepicker\" formControlName=\"fromDate\" autocomplete=\"off\" />\r\n <button class=\"input-group-button cal\" (click)=\"fromDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- To Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'toDate'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">To Date<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <div class=\"input-group date-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #toDateInput=\"ngbDatepicker\" formControlName=\"toDate\" autocomplete=\"off\" />\r\n <button class=\"input-group-button cal\" (click)=\"toDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Product -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'product'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Product</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"products\" bindLabel=\"productName\" bindValue=\"productCode\"\r\n placeholder=\"Select Product\" [clearable]=\"false\" formControlName=\"product\" (open)=\"onOpen()\"\r\n (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- User -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'userId'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">User<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"users\" bindLabel=\"userName\" bindValue=\"userId\" placeholder=\"Select User\"\r\n [clearable]=\"false\" formControlName=\"userId\" required (open)=\"onOpen()\" (close)=\"onClose()\"\r\n [searchable]=\"isOpen\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Currency -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'currency'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Currency</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"currencies\" bindValue=\"currencyCode\" placeholder=\"Select Currency\" [clearable]=\"false\"\r\n formControlName=\"currency\" (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n \r\n <!-- Template for dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div [title]=\"item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' - ' + item.currency)\">\r\n {{ item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' / ' + item.currency) }}\r\n </div>\r\n </ng-template>\r\n \r\n <!-- Template for selected value -->\r\n <ng-template ng-label-tmp let-item=\"item\">\r\n <div [title]=\"item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' - ' + item.currency)\">\r\n {{ item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' / ' + item.currency) }}\r\n </div>\r\n </ng-template>\r\n \r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Transaction Status (Multi-select) -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'transactionStatus'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Txn. Status<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select class=\"transaction-status-select\" [items]=\"transactionStatuses\"\r\n bindLabel=\"transactionStatus\" bindValue=\"transactionStatus\" [multiple]=\"true\"\r\n placeholder=\"Select Transaction Status\" formControlName=\"transactionStatus\"\r\n [closeOnSelect]=\"false\" [clearable]=\"false\" [searchable]=\"false\" required>\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input type=\"checkbox\" [checked]=\"item$.selected\" /> {{ item.transactionStatus }}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Transaction No -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'transactionNo'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Txn. Number</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <input class=\"form-control dpicker\" formControlName=\"transactionNo\"\r\n placeholder=\"Enter transaction number\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Value Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'valueDate'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-3\">\r\n <label class=\"form-label label-data\">Value Date<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-9\">\r\n <div class=\"input-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #toDateInput=\"ngbDatepicker\" formControlName=\"toDate\" autocomplete=\"off\" />\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"toDateInput.toggle()\">\r\n <i class=\"fa fa-calendar\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Send Country -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'sendCountry'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Send Country</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode\"\r\n placeholder=\"Select Product\" [clearable]=\"false\" formControlName=\"sendCountry\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span [title]=\"item.country\">{{ item.country }}</span>\r\n </ng-template>\r\n\r\n </ng-select>\r\n\r\n <!-- <ng-select [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode\"\r\n placeholder=\"Select Product\" [clearable]=\"false\" formControlName=\"sendCountry\">\r\n </ng-select> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Receive Country -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'receiveCountry'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Receive Country</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode\"\r\n placeholder=\"Select Product\" [clearable]=\"false\" formControlName=\"receiveCountry\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span [title]=\"item.country\">{{ item.country }}</span>\r\n </ng-template>\r\n\r\n </ng-select>\r\n\r\n <!-- <ng-select [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode\"\r\n placeholder=\"Select Product\" [clearable]=\"false\" formControlName=\"receiveCountry\">\r\n </ng-select> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Transaction Product -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'transactionProduct'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Product</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"transactionProducts\" bindLabel=\"name\" bindValue=\"productCode\"\r\n placeholder=\"Select Product\" [clearable]=\"false\" formControlName=\"product\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Date Type -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'dateType'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Date Type</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select placeholder=\"- Please select -\" formControlName=\"dateType\" [clearable]=\"false\" required>\r\n <ng-option [value]=\"1\">\r\n Value Date\r\n </ng-option>\r\n <ng-option [value]=\"2\">\r\n Posting Date\r\n </ng-option>\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'date'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Date</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <div class=\"input-group date-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #toDateInput=\"ngbDatepicker\" formControlName=\"date\" autocomplete=\"off\" />\r\n <button class=\"input-group-button cal\" (click)=\"toDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- receiveCurrency -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'receiveCurrency'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Receive Currency</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"currencies\" bindValue=\"currencyCode\" placeholder=\"Select Receive Currency\" [clearable]=\"false\"\r\n formControlName=\"receiveCurrency\" required (change)=\"onBranchChange()\" (open)=\"onOpen()\" (close)=\"onClose()\"\r\n [searchable]=\"isOpen\">\r\n \r\n <!-- Dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div [title]=\"item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' - ' + item.currency)\">\r\n {{ item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' / ' + item.currency) }}\r\n </div>\r\n </ng-template>\r\n \r\n <!-- Selected value -->\r\n <ng-template ng-label-tmp let-item=\"item\">\r\n <div [title]=\"item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' - ' + item.currency)\">\r\n {{ item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' / ' + item.currency) }}\r\n </div>\r\n </ng-template>\r\n \r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-custom-1-5\">\r\n <!-- View Report Button (Always at Top-Right) -->\r\n <div class=\"form-field view-report-btn\">\r\n <button type=\"submit\" class=\"btn btn-report\">View</button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</section>\r\n<hr>\r\n<!-- Error Messages -->\r\n<div class=\"alert alert-danger mt-3\" *ngIf=\"formValidationError && hasSearched\">\r\n Please fill all required fields before submitting the form.\r\n</div>\r\n\r\n<div class=\"alert alert-danger mt-3\" *ngIf=\"errorMessage && loadingState === ComponentLoadingState.Error\">\r\n {{ errorMessage }}\r\n <button type=\"button\" class=\"btn-close\" (click)=\"errorMessage = ''\"></button>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { AccGlDetailsEnquiryReportModel } from '../../models/acc-gl-details-enquiry-report/accgl-details-enquiry-reportmodel';\r\nimport { ColDef, ColumnApi, GridApi, GridReadyEvent } from 'ag-grid-community';\r\nimport { formatDate } from '@angular/common';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport 'jspdf-autotable';\r\nimport { ExportService } from '../../shared/export.service';\r\n\r\ndeclare module 'jspdf' {\r\n interface jsPDF {\r\n autoTable: (options: any) => jsPDF;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'lib-acc-gl-details-enquiry-report',\r\n templateUrl: './acc-gl-details-enquiry-report.component.html',\r\n styleUrls: ['./acc-gl-details-enquiry-report.component.scss'],\r\n\r\n})\r\nexport class AccGlDetailsEnquiryReportComponent implements OnInit {\r\n\r\n\r\n searchText: string = '';\r\n gridApi: GridApi<any>;\r\n gridColumnApi!: ColumnApi;\r\n selectedExportOption: string = 'excel';\r\n svgLoader: SafeHtml = '';\r\n loading: boolean = false;\r\n dataReady: boolean = false;\r\n dateTypeFilter: number = 1;\r\n dateType: any;\r\n sysCompanyCode: any;\r\n sysUserId: any;\r\n companyName: any;\r\n reportUser: any;\r\n reportTime: any;\r\n currentReportValueOrPostDate: any\r\n accGlDetailsEnquiryReportModel: AccGlDetailsEnquiryReportModel;\r\n rowData = [];\r\n date: string;\r\n pageSize: number = 15;\r\n ReportName = 'ACC GL Details Enquiry';\r\n exportFormats = [{ formatName: \"Excel\", code: 'excel' }, { formatName: \"PDF\", code: 'pdf' }, { formatName: \"CSV\", code: 'csv' }]\r\n metaDataOne: Record<string, string>;\r\n metaDataTwo: Record<string, string>;\r\n\r\n defaultColDef: ColDef = {\r\n resizable: true,\r\n sortable: false,\r\n suppressSizeToFit: false,\r\n cellStyle: { userSelect: 'text','line-height': '1.2','white-space': 'normal','word-break': 'normal','overflow-wrap': 'break-word' },\r\n \r\n // Header wrapping\r\n wrapHeaderText: true,\r\n autoHeaderHeight: true,\r\n\r\n // Cell wrapping\r\n wrapText: true,\r\n autoHeight: true\r\n };\r\n\r\n columnDefs: ColDef[] = [\r\n { headerName: 'Journal ID', field: 'journalID', flex: 1.8, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 95, tooltipField: 'journalID' },\r\n { headerName: 'Trans No', field: 'transactionNo', flex: 1.8, cellClass: 'ag-left-cols-cell compact-cell-transaction', minWidth: 73, tooltipField: 'transactionNo' },\r\n { headerName: 'Trans Code', field: 'transactionCode', flex: 1.2, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 60, tooltipField: 'transactionCode' },\r\n { headerName: 'Journal Type', field: 'journalType', flex: 1.2, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 73, tooltipField: 'journalType' },\r\n { headerName: 'Posting Date', field: 'postingDate', flex: 1.2, valueFormatter: this.formatDate, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 69, tooltipValueGetter: (params) => this.formatDate(params) },\r\n { headerName: 'Value Date', field: 'valueDate', flex: 1.2, valueFormatter: this.formatDate, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 68, tooltipValueGetter: (params) => this.formatDate(params), },\r\n { headerName: 'Description', field: 'description', flex: 4.8, minWidth: 119, wrapText: true, autoHeight: true,cellStyle: {'line-height': '1.2','white-space': 'normal','word-break': 'normal','overflow-wrap': 'break-word'}, tooltipField: 'description' },\r\n { headerName: 'Account Code', field: 'accountCode', flex: 1.2, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 73, tooltipField: 'accountCode' },\r\n { headerName: 'Ccy', field: 'currency', flex: 0.8, cellClass: 'ag-left-cols-cell', minWidth: 35, tooltipField: 'currency' },\r\n { headerName: 'Rate', field: 'rate', flex: 1.3, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 69, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'FxDebit', field: 'forexDebit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 58, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'Local Debit', field: 'localDebit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 62, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'FxCredit', field: 'forexCredit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 58, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'Local Credit', field: 'localCredit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 62, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n ];\r\n\r\n constructor(private exportService: ExportService, private reportService: ReportService, private http: HttpClient, private sanitizer: DomSanitizer) { }\r\n\r\n ngOnInit(): void {\r\n this.http.get('assets/reports-lib/assets/svg-loaders/blue-tail-spin.svg', { responseType: 'text' }).subscribe(svg => {\r\n this.svgLoader = this.sanitizer.bypassSecurityTrustHtml(svg);\r\n })\r\n this.date = new Date().toISOString().split('T')[0];\r\n }\r\n\r\n public getAccGLDetailsReport() {\r\n this.accGlDetailsEnquiryReportModel = undefined;\r\n this.loading = true;\r\n this.dataReady = false;\r\n this.selectedExportOption = 'excel';\r\n this.sysCompanyCode = 'BH';\r\n this.sysUserId = this.reportService.getUserNameFromSessionStorage();\r\n this.companyName = \"Xpress Money\";\r\n this.searchText = '';\r\n\r\n if (this.dateTypeFilter == 1) {\r\n this.dateType = 'VD';\r\n } else {\r\n this.dateType = 'PD';\r\n }\r\n\r\n this.reportService.getAccGLDetailsReport(this.date.split('T')[0], this.dateType)\r\n .subscribe(data => {\r\n this.accGlDetailsEnquiryReportModel = data;\r\n if (this.accGlDetailsEnquiryReportModel) {\r\n\r\n this.rowData = this.accGlDetailsEnquiryReportModel.journalVoucherEntries;\r\n this.companyName = this.accGlDetailsEnquiryReportModel.companyName;\r\n const userName = this.accGlDetailsEnquiryReportModel.reportUser;\r\n this.reportUser = userName.toLowerCase();\r\n this.reportTime = formatDate(new Date(), 'dd/MM/yyyy hh:mm a', 'en-US');\r\n this.currentReportValueOrPostDate = formatDate(this.accGlDetailsEnquiryReportModel.date, 'dd/MM/yyyy', 'en-US');\r\n this.metaDataOne = {\r\n 'Report User': this.reportUser,\r\n 'Report Time': this.reportTime\r\n }\r\n\r\n const DateType = this.dateType ==\r\n 'VD' ? 'Value Date' : 'Posting Date';\r\n this.metaDataTwo = {\r\n \"Company\":this.companyName,\r\n [DateType]: this.currentReportValueOrPostDate,\r\n }\r\n this.loading = false;\r\n this.dataReady = true;\r\n\r\n }\r\n }, error => {\r\n this.loading = false;\r\n });\r\n }\r\n\r\n public formatDate(params: any): string {\r\n return formatDate(new Date(params.value), 'dd/MM/yyyy', 'en-US');\r\n }\r\n\r\n onGridReady(params: GridReadyEvent) {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n }\r\n\r\n onGridSizeChanged(params: any) {\r\n params.api.sizeColumnsToFit();\r\n }\r\n\r\n getRowHeight(params: any): number {\r\n const description = params.data?.description || '';\r\n if (description.length > 50) {\r\n return 40;\r\n }\r\n return 20;\r\n }\r\n\r\n formatNumber(params: any): string {\r\n if (params.value == null) return '';\r\n\r\n const field = params.colDef.field;\r\n\r\n if (field === 'rate') {\r\n return Number(params.value).toFixed(8);\r\n }\r\n\r\n return Number(params.value).toFixed(3);\r\n }\r\n\r\n onSearch(text:string): void {\r\n const normalize = (str: any): string =>\r\n str?.toString()\r\n .toLowerCase()\r\n .replace(/,/g, '')\r\n .replace(/\\s+/g, ' ')\r\n .replace(/[\\u200B-\\u200D\\uFEFF]/g, '')\r\n .trim();\r\n\r\n this.searchText = text;\r\n const search = normalize(this.searchText);\r\n\r\n if (search) {\r\n this.rowData = this.accGlDetailsEnquiryReportModel.journalVoucherEntries.filter(item =>\r\n Object.values(item).some(value =>\r\n normalize(value).includes(search)\r\n )\r\n );\r\n } else {\r\n this.rowData = this.accGlDetailsEnquiryReportModel.journalVoucherEntries;\r\n }\r\n }\r\n\r\n handleExport(option:string): void {\r\n this.selectedExportOption = option;\r\n switch (this.selectedExportOption) {\r\n case 'excel':\r\n this.exportToExcel();\r\n break;\r\n case 'pdf':\r\n this.exportToPdf();\r\n break;\r\n case 'csv':\r\n this.exportToCsv();\r\n break;\r\n default:\r\n alert('Please select an export format.');\r\n }\r\n }\r\n\r\n async exportToPdf(): Promise<void> {\r\n if (!this.accGlDetailsEnquiryReportModel.journalVoucherEntries?.length) return;\r\n\r\n const title = `${this.companyName} - General Ledger Account Details Enquiry`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.reportUser],\r\n ['Report Time : ', this.reportTime],\r\n ['Search Criteria', ' - '],\r\n [`${this.dateType == 'VD' ? 'Value Date' : 'Posting Date'}:`, this.currentReportValueOrPostDate]\r\n\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.accGlDetailsEnquiryReportModel.journalVoucherEntries, this.columnDefs, {\r\n currencyFields: ['localCredit', 'forexCredit', 'localDebit', 'forexDebit']\r\n });\r\n\r\n await this.exportService.exportToPdfUniversal(title, metadata, headers, rows, 'ACC-GL-Details-Enquiry-Report.pdf');\r\n }\r\n\r\n exportToExcel(): void {\r\n if (!this.accGlDetailsEnquiryReportModel.journalVoucherEntries?.length) return;\r\n\r\n const title = `${this.companyName} - General Ledger Account Details Enquiry`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User', this.reportUser],\r\n ['Report Time', this.reportTime],\r\n ['Search Criteria', ' - '],\r\n [`${this.dateType == 'VD' ? 'Value Date' : 'Posting Date'}`, this.currentReportValueOrPostDate]\r\n\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.accGlDetailsEnquiryReportModel.journalVoucherEntries, this.columnDefs, {\r\n currencyFields: ['localCredit', 'forexCredit', 'localDebit', 'forexDebit']\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, headers, rows, 'ACC-GL-Details-Enquiry-Report.xlsx');\r\n }\r\n\r\n exportToCsv(): void {\r\n if (!this.accGlDetailsEnquiryReportModel.journalVoucherEntries?.length) return;\r\n\r\n const title = `${this.companyName} - General Ledger Account Details Enquiry`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User', this.reportUser],\r\n ['Report Time', this.reportTime],\r\n ['Search Criteria', '- '],\r\n [`${this.dateType == 'VD' ? 'Value Date' : 'Posting Date'}`, this.currentReportValueOrPostDate]\r\n\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.accGlDetailsEnquiryReportModel.journalVoucherEntries, this.columnDefs, {\r\n currencyFields: ['localCredit', 'forexCredit', 'localDebit', 'forexDebit']\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, headers, rows, 'ACC-GL-Details-Enquiry-Report.csv');\r\n }\r\n\r\n handleSearch(criteria: any): void {\r\n this.dateTypeFilter = criteria.selectedDateType;\r\n this.date = criteria.selectedDate.split(\"T\")[0];\r\n this.getAccGLDetailsReport();\r\n }\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\">\r\n</lib-search-filter>\r\n<div class=\"bootstrap-scope\">\r\n <div class=\"main-container\">\r\n <div class=\"report-loader\" *ngIf=\"loading && svgLoader\" [innerHTML]=\"svgLoader\"></div>\r\n\r\n <div class=\"report-container\" *ngIf=\"accGlDetailsEnquiryReportModel != undefined && dataReady\">\r\n <div class=\"main-report\" *ngIf=\"accGlDetailsEnquiryReportModel != undefined && dataReady\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"metaDataTwo\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n <!-- <h1 class=\"title\">General Ledger Account Details Enquiry</h1>\r\n <div class=\"report-content\">\r\n <div class=\"left-section\">\r\n <div class=\"labels\">\r\n <p><b>Report User</b></p>\r\n <p><b>Report Time</b></p>\r\n </div>\r\n <div class=\"values\">\r\n <p>: {{ reportUser }}</p>\r\n <p>: {{ reportTime }}</p>\r\n </div>\r\n </div>\r\n <div class=\"right-section\">\r\n <div class=\"labels\">\r\n <p><b>Company</b></p>\r\n <p><b>{{ dateType ==\r\n 'VD' ? 'Value Date' : 'Posting Date' }}</b></p>\r\n </div>\r\n <div class=\"values\">\r\n <p>: {{ companyName }}</p>\r\n <p>: {{currentReportValueOrPostDate}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\" style=\"margin-top: 10px; margin-bottom: 10px;\" >\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"d-flex justify-content-end align-items-center\">\r\n <input type=\"text\" [(ngModel)]=\"searchText\" name=\"searchText\" (ngModelChange)=\"onSearch()\"\r\n class=\"form-control custom-search-class\" placeholder=\"Search...\" />\r\n <button type=\"button\" class=\"btn btn-sm p-0 search-button\" (click)=\"onSearch()\">\r\n <img src=\"assets/images/Search.svg\" alt=\"Search\" class=\"search-button-image\" />\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-flex align-items-center\">\r\n <ng-select placeholder=\"- Please select -\" class=\"export-selector\" [(ngModel)]=\"selectedExportOption\"\r\n [clearable]=\"false\" required>\r\n <ng-option *ngFor=\"let format of exportFormats\" [value]=\"format.code\">\r\n {{ format.formatName }}\r\n </ng-option>\r\n </ng-select>\r\n <button type=\"button\" class=\"btn-report\" (click)=\"handleExport()\">Export</button>\r\n </div>\r\n </div> -->\r\n\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"accGlDetailsEnquiryReportModel?.journalVoucherEntries?.length\"\r\n [defaultSize]=\"'15'\" [gridApi]=\"gridApi\">\r\n ></lib-page-size-selector>\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"width: 100%;height: 375px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"rowData\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" [gridOptions]=\"{\r\n suppressHorizontalScroll: true,\r\n scrollbarWidth: 0\r\n }\" [pagination]=\"true\" [paginationPageSize]=\"pageSize\" (gridReady)=\"onGridReady($event)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event)\">\r\n </ag-grid-angular>\r\n <!-- <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" [rowData]=\"rowData\" [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\" [animateRows]=\"true\" [rowHeight]=\"20\" [headerHeight]=\"24\"\r\n [pagination]=\"true\" [domLayout]=\"'normal'\" [paginationPageSize]=\"pageSize\"\r\n [suppressHorizontalScroll]=\"false\" [suppressRowHoverHighlight]=\"false\"\r\n [getRowHeight]=\"getRowHeight.bind(this)\" (gridReady)=\"onGridReady($event)\"\r\n [suppressDragLeaveHidesColumns]=\"true\" [suppressMovableColumns]=\"false\">\r\n </ag-grid-angular> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { GridOptions, ColDef, GridReadyEvent, GridApi } from 'ag-grid-community';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil, finalize } from 'rxjs/operators';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { TransactionData, ComponentLoadingState } from '../../models/transaction-enquiry-report/transaction-enquiry.model';\r\nimport { ExportService } from '../../shared/export.service';\r\nimport { ConfigService } from '../../services/config.service';\r\nimport { formatDate } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-transaction-enquiry',\r\n templateUrl: './transaction-enquiry-report.component.html',\r\n styleUrls: ['./transaction-enquiry-report.component.scss']\r\n})\r\n\r\nexport class TransactionEnquiryComponent implements OnInit {\r\n @ViewChild('agGrid') agGrid!: AgGridAngular;\r\n\r\n private destroy$ = new Subject<void>();\r\n gridApi!: GridApi;\r\n searchText: string = '';\r\n paginationPageSize: number = 15;\r\n selectedExportOption: string = 'excel';\r\n currentDateTime: Date = new Date();\r\n\r\n exportFormats = [{ formatName: \"Excel\", code: 'excel' }, { formatName: \"PDF\", code: 'pdf' }, { formatName: \"CSV\", code: 'csv' }]\r\n productCodeMap: { [name: string]: string } = {\r\n \"DIRECT TO ACCOUNT\": \"DTA\",\r\n \"CASHPAYOUT\": \"CPO\",\r\n \"DIRECT TO WALLET\": \"DTW\",\r\n \"CASH TO CASH\": \"CTC\",\r\n \"CASH TO ACCOUNT\": \"CTA\"\r\n };\r\n\r\n loadingState: ComponentLoadingState = ComponentLoadingState.Complete;\r\n ComponentLoadingState = ComponentLoadingState;\r\n isSearching: boolean = false;\r\n hasSearched: boolean = false;\r\n _errorMessage: string = '';\r\n\r\n currentUserEmail: string = '';\r\n token = sessionStorage.getItem('access_token');\r\n applicationType = 'ezremit';\r\n companyCode = 'BH';\r\n serviceUrl: string;\r\n\r\n transactionData: TransactionData[] = [];\r\n ReportName = \"Transaction Enquiry\";\r\n metaDataOne: Record<string, string>;\r\n\r\n // AG Grid Column Definitions\r\n columnDefs: ColDef[] = [\r\n { headerName: 'Product', field: 'product', flex: 1, minWidth: 70, cellClass: 'ag-left-aligned-cell compact-cell', tooltipField: 'product', valueFormatter: params => this.productCodeMap[params.value] || params.value },\r\n { headerName: 'User Id', field: 'id', flex: 1, minWidth: 70, cellClass: 'compact-cell', tooltipField: 'id' },\r\n {\r\n headerName: 'Transaction Number', field: 'transactionNumber', tooltipField: 'transactionNumber',\r\n cellRenderer: (params: any) => {\r\n const url = this.buildTransactionDetailsUrl(params.value);\r\n return `<a href=\"${url}\" target=\"_blank\" rel=\"noopener noreferrer\">${params.value}</a>`;\r\n },\r\n flex: 1, minWidth: 100, cellClass: 'transaction-link-cell compact-cell'\r\n },\r\n { headerName: 'Transaction Ref Number', field: 'transactionReferenceNumber', flex: 1, minWidth: 100, cellClass: 'compact-cell', tooltipField: 'transactionReferenceNumber' },\r\n { headerName: 'Trans. Date', field: 'businessDate', flex: 1, minWidth: 75, valueFormatter: this.dateFormatter.bind(this), cellClass: 'ag-left-aligned-cell compact-cell', tooltipValueGetter: (params) => this.dateFormatter(params), },\r\n { headerName: 'SendClient', field: 'sendAgent', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'sendAgent' },\r\n { headerName: 'SendClntBranch', field: 'sendAgtBranch', flex: 1, minWidth: 150, cellClass: 'compact-cell', tooltipField: 'sendAgtBranch' },\r\n { headerName: 'RecvClient', field: 'recvAgent', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'recvAgent' },\r\n { headerName: 'RcvClntBranch', field: 'rcvAgtBranch', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'rcvAgtBranch' },\r\n { headerName: 'Sender Name', field: 'sendName', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'sendName' },\r\n { headerName: 'Sender ID Type', field: 'sendIdType', flex: 1, minWidth: 90, cellClass: 'compact-cell', tooltipField: 'sendIdType' },\r\n { headerName: 'Sender ID Number', field: 'sendIdNumber', flex: 1, minWidth: 85, cellClass: 'compact-cell', tooltipField: 'sendIdNumber' },\r\n { headerName: 'Benf. Name', field: 'benName', flex: 1, minWidth: 100, cellClass: 'compact-cell', tooltipField: 'benName' },\r\n { headerName: 'Receive Curr.', field: 'payOutCurrency', flex: 1, minWidth: 80, cellClass: 'ag-center-aligned-cell compact-cell', tooltipField: 'payOutCurrency' },\r\n { headerName: 'Receive Amount', field: 'payOutAmount', flex: 1, minWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Send Curr.', field: 'payInCurrency', flex: 1, minWidth: 70, cellClass: 'ag-center-aligned-cell compact-cell', tooltipField: 'payInCurrency' },\r\n { headerName: 'Send Amount', field: 'payInAmount', flex: 1, minWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Service Fee', field: 'commission', flex: 1, minWidth: 80, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Transaction Status', field: 'transactionStatus', flex: 1, minWidth: 98, cellClass: 'status-cell compact-cell', tooltipField: 'transactionStatus' }\r\n ];\r\n\r\n\r\n private buildTransactionDetailsUrl(transactionNumber: string): string {\r\n const baseUrl = this.serviceUrl;\r\n const token = this.token;\r\n const userName = this.currentUserEmail;\r\n const applicationType = this.applicationType;\r\n\r\n return `${baseUrl}/api/v1/RetailTransaction/GetTransactionDetailsHtmlView` +\r\n `?transactionNumber=${transactionNumber}&applicationType=${applicationType}` +\r\n `&access_token=${token}&userName=${userName}`;\r\n }\r\n\r\n // AG Grid Configuration\r\n gridOptions: GridOptions = {\r\n defaultColDef: {\r\n sortable: true,\r\n filter: true,\r\n resizable: true,\r\n cellStyle: { whiteSpace: 'normal' },\r\n autoHeight: true,\r\n autoHeaderHeight: true,\r\n wrapText: true,\r\n },\r\n suppressRowClickSelection: true,\r\n animateRows: true,\r\n pagination: true,\r\n paginationPageSize: 50,\r\n };\r\n\r\n constructor(\r\n private reportService: ReportService,\r\n private exportService: ExportService,\r\n private config: ConfigService\r\n ) {\r\n this.serviceUrl = this.config.get.serviceUrl;\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n handleSearch(criteria: any): void {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n this.transactionData = [];\r\n this.hasSearched = false;\r\n this.searchText = '';\r\n this.selectedExportOption = 'excel';\r\n console.log(criteria)\r\n this.currentUserEmail = criteria.sysUserID\r\n this.metaDataOne = {\r\n 'Report User': this.currentUserEmail,\r\n 'Report Time': formatDate(this.currentDateTime, 'dd/MM/yyyy hh:mm a', 'en-US')\r\n }\r\n\r\n this.reportService.searchTransactions(criteria)\r\n .pipe(\r\n takeUntil(this.destroy$),\r\n finalize(() => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n this.hasSearched = true;\r\n })\r\n )\r\n .subscribe({\r\n next: data => {\r\n this.transactionData = Array.isArray(data) ? data : [];\r\n if (this.gridApi) {\r\n this.gridApi.setRowData(this.transactionData);\r\n } else {\r\n console.error('Grid API is not initialized!');\r\n }\r\n },\r\n error: err => {\r\n this.errorMessage = 'Failed to fetch transaction data. Please try again.';\r\n this.loadingState = ComponentLoadingState.Error;\r\n console.error('Search error:', err);\r\n }\r\n });\r\n }\r\n\r\n filter(text:string): void {\r\n this.searchText = text;\r\n if (this.gridApi && this.searchText != null) {\r\n this.gridApi.setQuickFilter(this.searchText.trim().toLowerCase());\r\n }\r\n }\r\n\r\n onGridReady(params: GridReadyEvent): void {\r\n this.gridApi = params.api;\r\n if (this.transactionData) {\r\n this.gridApi.setRowData(this.transactionData);\r\n this.gridApi.sizeColumnsToFit();\r\n }\r\n }\r\n\r\n clearError(): void {\r\n this.errorMessage = '';\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n\r\n dateFormatter(params: any): string {\r\n if (!params.value) return '';\r\n try {\r\n const date = new Date(params.value);\r\n return date.toLocaleString('en-GB', {\r\n day: '2-digit',\r\n month: '2-digit',\r\n year: 'numeric',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n hour12: true\r\n }).replace(',', '');\r\n } catch {\r\n return params.value;\r\n }\r\n }\r\n\r\n currencyFormatter(params: any): string {\r\n if (params.value == null || params.value === '') return '';\r\n const number = parseFloat(params.value);\r\n if (isNaN(number)) return params.value;\r\n return number.toLocaleString('en-US', {\r\n minimumFractionDigits: 3,\r\n maximumFractionDigits: 3\r\n });\r\n }\r\n\r\n get isLoading(): boolean {\r\n return this.loadingState === ComponentLoadingState.Loading;\r\n }\r\n\r\n get isError(): boolean {\r\n return this.loadingState === ComponentLoadingState.Error;\r\n }\r\n\r\n get errorMessage(): string {\r\n return this._errorMessage;\r\n }\r\n\r\n set errorMessage(value: string) {\r\n this._errorMessage = value;\r\n }\r\n\r\n onExportChange(value: string): void {\r\n this.selectedExportOption = value;\r\n }\r\n\r\n handleExport(option:string): void {\r\n this.selectedExportOption = option;\r\n if (this.selectedExportOption === 'pdf') {\r\n this.exportToPDF();\r\n } else if (this.selectedExportOption === 'excel') {\r\n this.exportToExcel();\r\n } else if (this.selectedExportOption === 'csv') {\r\n this.exportToCSV();\r\n } else {\r\n alert('Please select a valid export format.');\r\n }\r\n }\r\n\r\n exportToPDF(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Transaction Enquiry';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.currentUserEmail],\r\n ['Report Time : ', this.exportService.formatDateTime(this.currentDateTime)]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: ['payOutAmount', 'payInAmount', 'commission']\r\n });\r\n\r\n this.exportService.exportToPdfUniversal(title, metadata, headers, rows, 'Transaction_Enquiry.pdf')\r\n .then(() => {\r\n console.log('PDF export completed.');\r\n })\r\n .catch(err => {\r\n console.error('PDF export failed:', err);\r\n });\r\n }\r\n\r\n exportToExcel(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Transaction Enquiry';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User ', this.currentUserEmail],\r\n ['Report Time ', this.exportService.formatDateTime(this.currentDateTime)]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: ['payOutAmount', 'payInAmount', 'commission']\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, headers, rows, 'Transaction_Enquiry.xlsx');\r\n }\r\n\r\n exportToCSV(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Transaction Enquiry';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.currentUserEmail],\r\n ['Report Time : ', this.exportService.formatDateTime(this.currentDateTime)]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: ['payOutAmount', 'payInAmount', 'commission']\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, headers, rows, 'Transaction_Enquiry.csv');\r\n }\r\n}","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\">\r\n</lib-search-filter>\r\n\r\n<app-loader *ngIf=\"loadingState === ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<span *ngIf=\"loadingState === ComponentLoadingState.Error\">{{ errorMessage }}</span>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"hasSearched && transactionData.length === 0 && loadingState === ComponentLoadingState.Complete\">\r\n No transactions found matching your search criteria.\r\n</div>\r\n\r\n<div *ngIf=\"transactionData && transactionData.length > 0 && loadingState === ComponentLoadingState.Complete\">\r\n\r\n <lib-metadata \r\n [reportName]=\"ReportName\" \r\n [showmetaDataOne]=\"true\" \r\n [showmetaDataTwo]=\"false\" \r\n [metaDataOne]=\"metaDataOne\"\r\n [metaDataTwo]=\"\" \r\n (exportEvent)=\"handleExport($event)\" \r\n (searchEvent)=\"filter($event)\">\r\n </lib-metadata>\r\n\r\n <div style=\"position: relative;\">\r\n\r\n <lib-page-size-selector \r\n [totalEntries]=\"transactionData.length\" \r\n [defaultSize]=\"'15'\" \r\n [gridApi]=\"gridApi\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" \r\n [rowData]=\"transactionData\" \r\n [columnDefs]=\"columnDefs\"\r\n [gridOptions]=\"gridOptions\" \r\n [pagination]=\"true\" \r\n [headerHeight]=\"30\" \r\n [paginationPageSize]=\"paginationPageSize\"\r\n (gridReady)=\"onGridReady($event)\" \r\n style=\"width: 100%; height: 435px;\">\r\n </ag-grid-angular>\r\n </div>\r\n\r\n</div>","\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { TransactionEnquiryComponent } from './components/transaction-enquiry-report/transaction-enquiry-report.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'transaction-enquiry-report',\r\n component: TransactionEnquiryComponent\r\n }\r\n \r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\n\r\nexport class ReportsLibRoutingModule {}\r\n","export enum ComponentLoadingStates {\r\n Error = -1,\r\n Loading = 0,\r\n Complete = 1,\r\n}\r\n","import { Component, NgZone, OnInit, ElementRef, HostListener, ViewChild } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { BranchActivityReport } from '../../models/branch-activity-report/branch-activity-send-report';\r\nimport { ColDef, GridApi, GridOptions, GridReadyEvent, RowGroupingDisplayType } from 'ag-grid-community';\r\nimport * as XLSX from 'xlsx';\r\nimport { saveAs } from 'file-saver';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\nimport { themeAlpine } from '@ag-grid-community/theming';\r\nimport jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\nimport { formatDate, DatePipe } from '@angular/common';\r\nimport { BranchActivitySendReportRequestDomainModel } from '../../models/branch-activity-report/branch-activity-send-report-request-domain-model';\r\nimport { forkJoin, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\n\r\ndeclare module 'jspdf' {\r\n interface jsPDF {\r\n autoTable: (options: any) => jsPDF;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'lib-branch-activity-send-report',\r\n templateUrl: './branch-activity-send-report.component.html',\r\n styleUrls: ['./branch-activity-send-report.component.scss']\r\n})\r\nexport class BranchActivitySendReportComponent implements OnInit {\r\n dataMap: Record<string, BranchActivityReport[]> = {}\r\n filteredData: Record<string, BranchActivityReport[]> = {}\r\n proxyData: Record<string, BranchActivityReport[]> = {}\r\n form: FormGroup;\r\n fromDate: any;\r\n toDate: any;\r\n showReport: boolean;\r\n paginationArray: any[];\r\n selectedExportOption = 'excel';\r\n gridAPi;\r\n gridApis: GridApi[] = [];\r\n gridColumnApi;\r\n user: string = \"kaushik.kulsange@xpressmoney.tech\";\r\n reportDate: string;\r\n searchText: string;\r\n buffer: any;\r\n errorMessage = '';\r\n sysUserId: string;\r\n private logoBase64: string | undefined;\r\n message: string = 'No Data Found';\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Loading;\r\n ReportName: string = \"Branch Activity Send\";\r\n leftData: Record<string, string>;\r\n // flags\r\n showError: boolean = false;\r\n showMessage: boolean = false;\r\n noDataFound: boolean = false;\r\n activeBranch: number;\r\n\r\n columnDefs: ColDef<BranchActivityReport>[] = [\r\n { field: 'businessDateTime', headerName: 'Business Date', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 70, width: 70, tooltipField: 'businessDateTime' },\r\n { field: 'transactionDateTime', headerName: 'Transaction Date', flex: 2, wrapText: true, autoHeight: true },\r\n { field: 'transactionNumber', headerName: 'Transaction Number', flex: 1.8, width: 130, cellClass: 'ag-left-cols-cell compact-cell-transaction', tooltipField: 'transactionNumber' },\r\n { field: 'product', headerName: 'Product', flex: 0.5, minWidth: 50, width: 60, tooltipField: 'product' },\r\n { field: 'sendAgentBranchCode', headerName: 'Send BranchCode', flex: 1, width: 120, tooltipField: 'sendAgentBranchCode' },\r\n { field: 'receiveAgentCode', headerName: 'Receive ClientCode', flex: 1, minWidth: 70, width: 70, tooltipField: 'receiveAgentCode' },\r\n { field: 'payoutCCcode', headerName: 'ReceiveCcy Code', flex: 1, width: 110, tooltipField: 'payoutCCcode' },\r\n { field: 'payoutAmount', headerName: 'Receive Amount', flex: 1, maxWidth: 130, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payoutAmount' },\r\n { field: 'payinCCcode', headerName: 'SendCcy Code', flex: 1, maxWidth: 90, tooltipField: 'payinCCcode' },\r\n { field: 'payinAmount', headerName: 'Send Amount', flex: 1, maxWidth: 120, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payinAmount' },\r\n { field: 'transactionCommissionAmount', headerName: 'Service Fee', flex: 1, maxWidth: 120, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'transactionCommissionAmount' },\r\n { field: 'tax', headerName: 'Tax', flex: 1, width: 70, maxWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'tax' },\r\n { field: 'totalPayinAmount', headerName: 'Total Send Amount', flex: 1, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'totalPayinAmount' },\r\n { field: 'status', headerName: 'Transaction Status', flex: 1, tooltipField: 'status' }\r\n ];\r\n\r\n\r\n defaultColDef = {\r\n sortable: true,\r\n filter: false,\r\n resizable: true,\r\n minwidth: 40,\r\n wrapHeaderText: true,\r\n autoHeaderHeight: true,\r\n suppressSizeToFit: false,\r\n wrapText: true\r\n };\r\n rowData: BranchActivityReport[] = [];\r\n\r\n constructor(private formBuilder: FormBuilder, private reportService: ReportService, private ngZone: NgZone) { }\r\n\r\n reportTheme = themeAlpine.withParams({\r\n headerFontSize: '10px',\r\n fontFamily: ['Arial', 'sans-serif'],\r\n fontSize: '9px'\r\n });\r\n\r\n ngOnInit(): void {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n // Check if User is falcon user or fossilUser\r\n if (sessionStorage.getItem('fossilusername')) {\r\n this.sysUserId = sessionStorage.getItem('fossilusername')\r\n }\r\n else {\r\n this.sysUserId = sessionStorage.getItem('ezremitusername');\r\n }\r\n this.sysUserId = this.sysUserId.replace(/^[\"'](.*)[\"']$/, '$1');\r\n this.user = this.sysUserId;\r\n console.log(\"System User Id : \" + this.sysUserId);\r\n this.loadImageAsBase64('/assets/reports-lib/assets/images/XMLogo.png').then(base64 => {\r\n this.logoBase64 = base64;\r\n });\r\n }\r\n\r\n filter(text: string) {\r\n this.searchText = text;\r\n if(this.searchText == null){\r\n return;\r\n }\r\n if (this.searchText?.trim().length === 0) {\r\n this.filteredData = structuredClone(this.dataMap);\r\n return;\r\n }\r\n this.searchText = this.searchText?.trim()?.toLowerCase();\r\n for (const [key, entries] of Object.entries(this.proxyData)) {\r\n const filteredData = entries.filter(entry => Object.values(entry)\r\n .some(val => {\r\n let a: string = val.toString().toLowerCase();\r\n return a.search(this.searchText) == -1 ? false : true;\r\n }))\r\n\r\n this.filteredData[key] = filteredData;\r\n }\r\n this.filteredData;\r\n }\r\n\r\n onGridReady(params: GridReadyEvent, id: number) {\r\n params.api.sizeColumnsToFit();\r\n this.gridAPi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApis[id] = params.api;\r\n }\r\n\r\n onGridSizeChanged(params: any) {\r\n params.api.sizeColumnsToFit();\r\n }\r\n\r\n async handleExport(option: string) {\r\n this.selectedExportOption = option;\r\n const data: any[] = [];\r\n if (Object.keys(this.filteredData).length == 0) {\r\n return;\r\n }\r\n this.gridAPi.forEachNode(node => data.push(node.data))\r\n switch (this.selectedExportOption) {\r\n case 'excel':\r\n this.exportExcel(data);\r\n break;\r\n case 'pdf':\r\n this.exportPDF(data);\r\n break;\r\n case 'csv':\r\n this.exportCSV(data);\r\n break;\r\n default:\r\n alert('Please select an export format.');\r\n }\r\n }\r\n\r\n // ------------------------ Utility ------------------------\r\n private loadImageAsBase64(imagePath: string): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.crossOrigin = 'anonymous';\r\n img.src = imagePath;\r\n\r\n img.onload = () => {\r\n // Scale up canvas resolution (2x or more)\r\n const scale = 2;\r\n const canvas = document.createElement('canvas');\r\n canvas.width = img.width * scale;\r\n canvas.height = img.height * scale;\r\n\r\n const ctx = canvas.getContext('2d');\r\n if (ctx) {\r\n ctx.scale(scale, scale); // Draw image at higher quality\r\n ctx.drawImage(img, 0, 0);\r\n const base64 = canvas.toDataURL('image/png', 1.0); // 1.0 = highest quality\r\n resolve(base64);\r\n } else {\r\n reject('Failed to get canvas context.');\r\n }\r\n };\r\n\r\n img.onerror = () => reject('Failed to load image: ' + imagePath);\r\n });\r\n }\r\n\r\n exportPDF(data: any) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n data = Object.values(this.dataMap)[0];\r\n const doc = new jsPDF({\r\n orientation: 'landscape',\r\n unit: 'mm',\r\n format: [400, 210]\r\n });\r\n\r\n const pageWidth = doc.internal.pageSize.width;\r\n\r\n //Title\r\n const title = `Branch Activity Send`;\r\n doc.setFontSize(15);\r\n doc.setFont('helvetica', 'bold');\r\n const textWidth = doc.getTextWidth(title);\r\n doc.text(title, doc.internal.pageSize.width / 2, 15, { align: 'center' });\r\n\r\n //Add Image\r\n if (this.logoBase64) {\r\n doc.addImage(this.logoBase64, 'PNG', 15, 5, 25, 20);\r\n }\r\n\r\n //Info block\r\n const infoY = 30;\r\n const leftMargin = 15;\r\n const lineHeight = 7;\r\n const infoLines = [\r\n ['Report User And Time:', this.user],\r\n ['Report Time', this.reportDate]\r\n // ['Report Period:', `${this.fromDate} - ${this.toDate}`]\r\n ]\r\n\r\n doc.setFontSize(10);\r\n infoLines.forEach(([label, value], i) => {\r\n const y = infoY + i * lineHeight;\r\n // Draw label in bold\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(label, leftMargin, y);\r\n\r\n // Draw value in normal font right after label\r\n const labelWidth = doc.getTextWidth(label + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(value, leftMargin + labelWidth, y);\r\n });\r\n\r\n const filteredColumns = this.columnDefs.filter(col =>\r\n !(col.headerName?.toLowerCase().includes('sr. no') || col.field?.toLowerCase().includes('srno') || col.field?.toLowerCase().includes('serial'))\r\n );\r\n\r\n // Prepare headers with Sr No\r\n const headers = ['Sr No', ...filteredColumns.map(col => col.headerName || col.field!)];\r\n\r\n let Rows: any[] = [];\r\n\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n Rows.push([{ content: key, colSpan: 15 }]);\r\n const rows = reports.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field!];\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n return value ?? '';\r\n });\r\n Rows.push([index + 1, ...rowData]);\r\n return [index + 1, ...rowData];\r\n });\r\n // Rows.push(rows);\r\n }\r\n\r\n // Prepare rows with Sr No\r\n const rows = data.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field!];\r\n return value ?? '';\r\n });\r\n return [index + 1, ...rowData];\r\n });\r\n\r\n // Generate dynamic column styles for auto-width\r\n const columnStyles: { [key: number]: any } = {};\r\n headers.forEach((_, i) => {\r\n columnStyles[i] = { cellWidth: 'auto' };\r\n });\r\n\r\n columnStyles[2] = { cellWidth: 40 };\r\n\r\n // Render Table\r\n doc.autoTable({\r\n head: [headers],\r\n body: Rows,\r\n startY: infoY + infoLines.length * lineHeight + 5,\r\n theme: 'grid',\r\n headStyles: {\r\n fillColor: [220, 220, 220],\r\n textColor: 0,\r\n fontStyle: 'bold',\r\n fontSize: 9,\r\n halign: 'center'\r\n },\r\n bdyStyles: {\r\n fontSize: 8,\r\n fillColor: [255, 255, 255],\r\n textColor: [0, 0, 0]\r\n },\r\n styles: {\r\n cellPadding: 2,\r\n overflow: 'linebreak',\r\n minCellHeight: 6\r\n },\r\n columnStyles: columnStyles\r\n });\r\n doc.save(\"Branch-Activity-Send-Report.pdf\")\r\n }\r\n\r\n exportExcel(data: any) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet('Branch-Activity-Send-Report');\r\n const totalColumns = this.columnDefs.length;\r\n\r\n // Title Row\r\n const titleRow = worksheet.addRow([\"Branch Activity Send\"]);\r\n titleRow.font = { bold: true, size: 14 };\r\n titleRow.height = 60;\r\n worksheet.mergeCells(`A${titleRow.number}:${String.fromCharCode(64 + totalColumns)}${titleRow.number}`);\r\n //Center align the title\r\n const masterCell = worksheet.getCell(`A${titleRow.number}`);\r\n masterCell.alignment = { horizontal: 'center', vertical: 'middle' };\r\n\r\n // Add image if available\r\n if (this.logoBase64) {\r\n const base64Data = this.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\r\n\r\n // Place image at top-left (e.g., A1:C4)\r\n worksheet.addImage(imageId, {\r\n tl: { col: 0, row: 0 },\r\n ext: { width: 150, height: 50 },\r\n });\r\n }\r\n\r\n //Meta Data\r\n const meta: [string, string][] = [\r\n ['Report User ', this.user],\r\n ['Report Time', this.reportDate]\r\n // ['Report Period', `${this.fromDate} - ${this.toDate}`]\r\n ]\r\n\r\n meta.forEach(([label, value]) => {\r\n const row = worksheet.addRow([label, value]);\r\n //Bold the key column\r\n const labelCell = row.getCell(1);\r\n labelCell.font = { bold: true };\r\n })\r\n // For Empty Row\r\n worksheet.addRow([]);\r\n\r\n // Add Header Row for Data Table\r\n const headerRow = worksheet.addRow(this.columnDefs.map(col => col.headerName || col.field));\r\n headerRow.font = { bold: true };\r\n for (let i = 1; i <= this.columnDefs.length; i++) {\r\n const cell = headerRow.getCell(i);\r\n cell.fill = {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: { argb: 'D9D9D9' },\r\n };\r\n }\r\n\r\n headerRow.alignment = {\r\n wrapText: true,\r\n vertical: 'top',\r\n horizontal: 'center'\r\n };\r\n headerRow.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n\r\n const dataStartRow = worksheet.lastRow!.number + 1;\r\n const branchRows = [];\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n console.log('Key:', key);\r\n console.log('Reports:', reports);\r\n const row = worksheet.addRow([`${key}`]);\r\n worksheet.mergeCells(row.number, 1, row.number, 10);\r\n branchRows.push(row.number);\r\n // Add Data Rows\r\n reports.forEach(row => {\r\n const rowData = this.columnDefs.map(col => {\r\n let value = row[col.field!];\r\n // Format currency fields\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n if (!isNaN(value) && value !== null && value !== '') {\r\n return `\\t ${value}`;\r\n }\r\n return value ?? '';\r\n })\r\n const dataRow = worksheet.addRow(rowData);\r\n dataRow.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n });\r\n worksheet.addRow([]);\r\n }\r\n\r\n // Auto column width ONLY based on data rows\r\n for (let i = 1; i <= totalColumns; i++) {\r\n let maxLength = 10;\r\n for (let rowNum = dataStartRow; rowNum <= worksheet.lastRow!.number; rowNum++) {\r\n if (branchRows.indexOf(x => x === rowNum) === -1) {\r\n continue;\r\n }\r\n const cell = worksheet.getRow(rowNum).getCell(i);\r\n const val = cell.value ? cell.value.toString() : '';\r\n maxLength = Math.max(maxLength, val.length);\r\n }\r\n worksheet.getColumn(i).width = maxLength + 2;\r\n }\r\n worksheet.getColumn(2).width = 20;\r\n worksheet.getColumn(3).width = 15;\r\n // Export\r\n workbook.xlsx.writeBuffer().then(buffer => {\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n })\r\n FileSaver.saveAs(blob, 'Branch-Activity-Send-Report.xlsx');\r\n })\r\n }\r\n\r\n exportCSV(data: any[]) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n const metadata = [\r\n ['Report Title', 'Branch Activity Send'],\r\n ['Report Time', this.reportDate]\r\n // ['Report User', this.user]\r\n ];\r\n\r\n const filteredCols = this.columnDefs.filter(\r\n col =>\r\n !(col.headerName?.toLowerCase().includes('sr. no') ||\r\n col.field?.toLowerCase().includes('sr. no'))\r\n );\r\n\r\n const headers = ['Sr No', ...filteredCols.map(col => col.headerName || col.field!)];\r\n\r\n let Rows: any[][] = []\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n Rows.push([key]);\r\n reports.map((row, index) => {\r\n const rowVals = filteredCols.map(col => {\r\n let v = row[col.field!];\r\n if (currencyFields.includes(col.field) && v != null) {\r\n v = parseFloat(v).toFixed(3);\r\n }\r\n if (col.field === 'transactionNumber' || col.headerName === 'Transaction Number') {\r\n return `\\t ${v}`;\r\n }\r\n return v ?? '';\r\n });\r\n Rows.push([index + 1, ...rowVals]);\r\n return [index + 1, ...rowVals];\r\n })\r\n }\r\n\r\n const aoa: any[][] = [\r\n ...metadata,\r\n [], // blank row for separation\r\n headers,\r\n ...Rows\r\n ];\r\n\r\n // convert to worksheet & CSV\r\n const ws = XLSX.utils.aoa_to_sheet(aoa);\r\n const csv = XLSX.utils.sheet_to_csv(ws, {\r\n FS: ',', RS: '\\n', blankrows: false, forceQuotes: false\r\n } as any);\r\n\r\n // trigger download\r\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\r\n saveAs(blob, 'Branch-Activity-Send-Report.csv');\r\n }\r\n\r\n currencyFormatter(params: any): string {\r\n if (params.value == null || params.value === '') return '';\r\n const number = parseFloat(params.value);\r\n if (isNaN(number)) return params.value;\r\n return number.toLocaleString('en-US', {\r\n minimumFractionDigits: 3,\r\n maximumFractionDigits: 3\r\n });\r\n }\r\n\r\n handleSearch(criteria: any): void {\r\n this.reportDate = new Date().toISOString();\r\n this.reportDate = formatDate(this.reportDate, 'dd/MM/yyyy hh:mm a', 'en-US');\r\n const modal = criteria.modal;\r\n this.user = criteria.sysUserID;\r\n console.log(modal);\r\n // Code For Meta Data\r\n this.leftData = {\r\n 'Report User': this.user,\r\n 'Report Time': this.reportDate\r\n }\r\n const searchData = {\r\n \"StartDate\": modal.fromDate,\r\n \"EndDate\": modal.toDate,\r\n \"SendCountryCode\": modal.sendCountry,\r\n \"RecvCountryCode\": modal.receiveCountry,\r\n \"BusinessPartnerCode\": modal.client,\r\n \"TransactionStatus\": modal.transactionStatus.join(\",\"),\r\n \"PayoutCurrency\": \"ALL\",\r\n \"TransactionType\": \"ALL\",\r\n \"BranchCode\": modal.branch,\r\n \"CompanyCode\": \"BH\"\r\n };\r\n try {\r\n const sdate = new Date(searchData?.StartDate);\r\n const edate = new Date(searchData?.EndDate);\r\n searchData.StartDate = sdate.toISOString().split(\"T\")[0];\r\n searchData.EndDate = edate.toISOString().split(\"T\")[0];\r\n } catch(err){\r\n throw new Error(\"Invalid Date\");\r\n }\r\n this.showMessage = true;\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getBranchActivityReport(searchData).subscribe({\r\n next: (data) => {\r\n console.log(data);\r\n this.dataMap = JSON.parse(JSON.stringify(data));\r\n this.filteredData = data;\r\n this.noDataFound = Object.keys(this.filteredData).length == 0 ? true : false;\r\n this.proxyData = structuredClone(data);\r\n this.paginationArray = new Array(Object.keys(this.filteredData).length).fill(15);\r\n this.showMessage = Object.keys(this.filteredData).length == 0 ? true : false;\r\n this.showReport = true;\r\n },\r\n\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n\r\n complete: () => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n this.showReport = true;\r\n }\r\n })\r\n }\r\n\r\n}\r\n\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\">\r\n</lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div class=\"alert alert-danger mt-3 d-flex justify-content-between align-items-center\" *ngIf=\"showError\">\r\n <span>{{ errorMessage }}</span>\r\n</div>\r\n\r\n<section *ngIf=\"showReport\" class=\"my-2\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"false\" [metaDataOne]=\"leftData\" [metaDataTwo]=\"\"(exportEvent)=\"handleExport($event)\" (searchEvent)=\"filter($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let item of filteredData | keyvalue; let i = index\">\r\n <ngb-panel *ngIf=\"item.value.length > 0\" [id]=\"'panel-' + i\">\r\n\r\n <ng-template ngbPanelTitle style=\"height: 10%;\">\r\n <label\r\n style=\"font-weight: bold; font-size: 13px; line-height: 1.2; margin: 0; padding: 2px 0;color: #0c63e4;\">{{\r\n item.key\r\n }}</label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"item?.value?.length\"\r\n [defaultSize]=\"'15'\" [gridApi]=\"gridApis[i]\">\r\n ></lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"width: 100%;height: 380px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"item.value\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" [gridOptions]=\"{\r\n suppressHorizontalScroll: true,\r\n scrollbarWidth: 0\r\n }\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event,i)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n </ng-template>\r\n\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data Found\r\n </div>\r\n</section>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { PageSizeSelectorComponent } from './page-size-selector/page-size-selector.component';\r\nimport { MetadataComponent } from './metadata/metadata.component';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\n\r\n@NgModule({\r\n declarations: [PageSizeSelectorComponent, MetadataComponent],\r\n imports: [CommonModule, FormsModule,NgSelectModule],\r\n exports: [PageSizeSelectorComponent,MetadataComponent]\r\n})\r\nexport class SharedModule { }\r\n","import { Component, inject, OnInit } from '@angular/core';\r\nimport { ColDef, GridApi, GridReadyEvent } from 'ag-grid-community';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { formatDate } from '@angular/common';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { BranchActivityReceiveReportModel } from '../../models/branch-activity-receive-report/branch-activity-receive.model';\r\nimport * as XLSX from 'xlsx';\r\nimport { saveAs } from 'file-saver';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\nimport { themeAlpine } from '@ag-grid-community/theming';\r\nimport jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\n\r\n@Component({\r\n selector: 'lib-branch-activity-receive-report',\r\n templateUrl: './branch-activity-receive-report.component.html',\r\n styleUrls: ['./branch-activity-receive-report.component.scss']\r\n})\r\nexport class BranchActivityReceiveReportComponent implements OnInit {\r\n data: any = [];\r\n dataMap: Record<string, BranchActivityReceiveReportModel[]> = {}\r\n filteredData: Record<string, BranchActivityReceiveReportModel[]> = {}\r\n user: string = \"kaushik.kulsange@xpressmoney.tech\";\r\n ReportName = \"Branch Activity Receive\"\r\n reportService: ReportService = inject(ReportService);\r\n reportDate: string;\r\n metaDataOne: Record<string, string>;\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n paginationArray: any[];\r\n selectedExportOption: string;\r\n private logoBase64: string | undefined;\r\n searchText: string = '';\r\n\r\n gridApis: GridApi[] = [];\r\n\r\n showReport: boolean = false;\r\n noDataFound: boolean = false;\r\n\r\n columnDefs: ColDef<BranchActivityReceiveReportModel>[] = [\r\n { field: 'businessDateTime', headerName: 'Business Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 70, width: 70, tooltipField: 'businessDateTime' },\r\n { field: 'transactionDateAndTime', headerName: 'Receive Date', flex: 2, headerClass: 'ag-header-cell', wrapText: true, autoHeight: true, tooltipField: 'transactionDateAndTime' },\r\n { field: 'transactionNumber', headerName: 'Transaction Number', flex: 1.8, headerClass: 'ag-header-cell', width: 130, cellClass: 'ag-left-cols-cell compact-cell-transaction', tooltipField: 'transactionNumber' },\r\n { field: 'product', headerName: 'Product', flex: 0.5, headerClass: 'ag-header-cell', minWidth: 50, width: 60, tooltipField: 'product' },\r\n { field: 'senderName', headerName: 'Sender Name', flex: 1, headerClass: 'ag-header-cell', width: 130, tooltipField: 'senderName' },\r\n { field: 'sendAgentCode', headerName: 'Send ClientCode', flex: 1, headerClass: 'ag-header-cell', minWidth: 70, width: 70, tooltipField: 'sendAgentCode' },\r\n { field: 'receiverName', headerName: 'Receiver Name', flex: 1, headerClass: 'ag-header-cell', width: 130, tooltipField: 'receiverName' },\r\n { field: 'receiveAgentBranchCode', headerName: 'ReceiveClient BranchCode', headerClass: 'ag-header-cell', flex: 1, maxWidth: 120, tooltipField: 'receiveAgentBranchCode' },\r\n { field: 'payOutCurrency', headerName: 'Receive CcyCode', flex: 1, headerClass: 'ag-header-cell', maxWidth: 90, tooltipField: 'payOutCurrency' },\r\n { field: 'amountPaid', headerName: 'Amount Paid', flex: 1, headerClass: 'ag-header-cell', width: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'amountPaid' },\r\n { field: 'status', headerName: 'Transaction Status', flex: 1, headerClass: 'ag-header-cell', tooltipField: 'status' }\r\n ];\r\n\r\n defaultColDef = {\r\n sortable: true,\r\n filter: false,\r\n resizable: true,\r\n minwidth: 40,\r\n wrapHeaderText: true,\r\n autoHeaderHeight: true,\r\n suppressSizeToFit: false,\r\n wrapText: true\r\n };\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.loadImageAsBase64('/assets/reports-lib/assets/images/XMLogo.png').then(base64 => {\r\n this.logoBase64 = base64;\r\n });\r\n }\r\n\r\n onGridReady(params: GridReadyEvent, id: number) {\r\n params.api.sizeColumnsToFit();\r\n this.gridApis[id] = params.api;\r\n }\r\n\r\n onGridSizeChanged(params: any) {\r\n params.api.sizeColumnsToFit();\r\n }\r\n\r\n // Currency Formatter\r\n currencyFormatter(params: any): string {\r\n if (params.value == null || params.value === '') return '';\r\n const number = parseFloat(params.value);\r\n if (isNaN(number)) return params.value;\r\n return number.toLocaleString('en-US', {\r\n minimumFractionDigits: 3,\r\n maximumFractionDigits: 3\r\n });\r\n }\r\n\r\n handleExport(option: string) {\r\n this.selectedExportOption = option;\r\n const data: any[] = [];\r\n if (Object.keys(this.filteredData).length == 0) {\r\n return;\r\n }\r\n switch (this.selectedExportOption) {\r\n case 'excel':\r\n this.exportExcel(data);\r\n break;\r\n case 'pdf':\r\n this.exportPDF(data);\r\n break;\r\n case 'csv':\r\n this.exportCSV(data);\r\n break;\r\n default:\r\n alert('Please select an export format.');\r\n }\r\n }\r\n\r\n // ------------------------ Utility ------------------------\r\n private loadImageAsBase64(imagePath: string): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.crossOrigin = 'anonymous';\r\n img.src = imagePath;\r\n\r\n img.onload = () => {\r\n // Scale up canvas resolution (2x or more)\r\n const scale = 2;\r\n const canvas = document.createElement('canvas');\r\n canvas.width = img.width * scale;\r\n canvas.height = img.height * scale;\r\n\r\n const ctx = canvas.getContext('2d');\r\n if (ctx) {\r\n ctx.scale(scale, scale); // Draw image at higher quality\r\n ctx.drawImage(img, 0, 0);\r\n const base64 = canvas.toDataURL('image/png', 1.0); // 1.0 = highest quality\r\n resolve(base64);\r\n } else {\r\n reject('Failed to get canvas context.');\r\n }\r\n };\r\n\r\n img.onerror = () => reject('Failed to load image: ' + imagePath);\r\n });\r\n }\r\n\r\n exportPDF(data: any) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n data = Object.values(this.dataMap)[0];\r\n const doc = new jsPDF({\r\n orientation: 'landscape',\r\n unit: 'mm',\r\n format: [400, 210]\r\n });\r\n\r\n const pageWidth = doc.internal.pageSize.width;\r\n\r\n //Title\r\n const title = `Branch Activity Send`;\r\n doc.setFontSize(15);\r\n doc.setFont('helvetica', 'bold');\r\n const textWidth = doc.getTextWidth(title);\r\n doc.text(title, doc.internal.pageSize.width / 2, 15, { align: 'center' });\r\n\r\n //Add Image\r\n if (this.logoBase64) {\r\n doc.addImage(this.logoBase64, 'PNG', 15, 5, 25, 20);\r\n }\r\n\r\n //Info block\r\n const infoY = 30;\r\n const leftMargin = 15;\r\n const lineHeight = 7;\r\n const infoLines = [\r\n ['Report User And Time:', this.user],\r\n ['Report Time', this.reportDate]\r\n // ['Report Period:', `${this.fromDate} - ${this.toDate}`]\r\n ]\r\n\r\n doc.setFontSize(10);\r\n infoLines.forEach(([label, value], i) => {\r\n const y = infoY + i * lineHeight;\r\n // Draw label in bold\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(label, leftMargin, y);\r\n\r\n // Draw value in normal font right after label\r\n const labelWidth = doc.getTextWidth(label + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(value, leftMargin + labelWidth, y);\r\n });\r\n\r\n const filteredColumns = this.columnDefs.filter(col =>\r\n !(col.headerName?.toLowerCase().includes('sr. no') || col.field?.toLowerCase().includes('srno') || col.field?.toLowerCase().includes('serial'))\r\n );\r\n\r\n // Prepare headers with Sr No\r\n const headers = ['Sr No', ...filteredColumns.map(col => col.headerName || col.field!)];\r\n\r\n let Rows: any[] = [];\r\n\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n Rows.push([{ content: key, colSpan: 15 }]);\r\n const rows = reports.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field!];\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n return value ?? '';\r\n });\r\n Rows.push([index + 1, ...rowData]);\r\n return [index + 1, ...rowData];\r\n });\r\n // Rows.push(rows);\r\n }\r\n\r\n // Prepare rows with Sr No\r\n const rows = data.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field!];\r\n return value ?? '';\r\n });\r\n return [index + 1, ...rowData];\r\n });\r\n\r\n // Generate dynamic column styles for auto-width\r\n const columnStyles: { [key: number]: any } = {};\r\n headers.forEach((_, i) => {\r\n columnStyles[i] = { cellWidth: 'auto' };\r\n });\r\n\r\n columnStyles[2] = { cellWidth: 40 };\r\n\r\n // Render Table\r\n doc.autoTable({\r\n head: [headers],\r\n body: Rows,\r\n startY: infoY + infoLines.length * lineHeight + 5,\r\n theme: 'grid',\r\n headStyles: {\r\n fillColor: [220, 220, 220],\r\n textColor: 0,\r\n fontStyle: 'bold',\r\n fontSize: 9,\r\n halign: 'center'\r\n },\r\n bdyStyles: {\r\n fontSize: 8,\r\n fillColor: [255, 255, 255],\r\n textColor: [0, 0, 0]\r\n },\r\n styles: {\r\n cellPadding: 2,\r\n overflow: 'linebreak',\r\n minCellHeight: 6\r\n },\r\n columnStyles: columnStyles\r\n });\r\n doc.save(\"Branch-Activity-Send-Report.pdf\")\r\n }\r\n\r\n exportExcel(data: any) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet('Branch-Activity-Send-Report');\r\n const totalColumns = this.columnDefs.length;\r\n\r\n // Title Row\r\n const titleRow = worksheet.addRow([\"Branch Activity Send\"]);\r\n titleRow.font = { bold: true, size: 14 };\r\n titleRow.height = 60;\r\n worksheet.mergeCells(`A${titleRow.number}:${String.fromCharCode(64 + totalColumns)}${titleRow.number}`);\r\n //Center align the title\r\n const masterCell = worksheet.getCell(`A${titleRow.number}`);\r\n masterCell.alignment = { horizontal: 'center', vertical: 'middle' };\r\n\r\n // Add image if available\r\n if (this.logoBase64) {\r\n const base64Data = this.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\r\n\r\n // Place image at top-left (e.g., A1:C4)\r\n worksheet.addImage(imageId, {\r\n tl: { col: 0, row: 0 },\r\n ext: { width: 150, height: 50 },\r\n });\r\n }\r\n\r\n //Meta Data\r\n const meta: [string, string][] = [\r\n ['Report User ', this.user],\r\n ['Report Time', this.reportDate]\r\n // ['Report Period', `${this.fromDate} - ${this.toDate}`]\r\n ]\r\n\r\n meta.forEach(([label, value]) => {\r\n const row = worksheet.addRow([label, value]);\r\n //Bold the key column\r\n const labelCell = row.getCell(1);\r\n labelCell.font = { bold: true };\r\n })\r\n // For Empty Row\r\n worksheet.addRow([]);\r\n\r\n // Add Header Row for Data Table\r\n const headerRow = worksheet.addRow(this.columnDefs.map(col => col.headerName || col.field));\r\n headerRow.font = { bold: true };\r\n for (let i = 1; i <= this.columnDefs.length; i++) {\r\n const cell = headerRow.getCell(i);\r\n cell.fill = {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: { argb: 'D9D9D9' },\r\n };\r\n }\r\n\r\n headerRow.alignment = {\r\n wrapText: true,\r\n vertical: 'top',\r\n horizontal: 'center'\r\n };\r\n headerRow.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n\r\n const dataStartRow = worksheet.lastRow!.number + 1;\r\n const branchRows = [];\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n console.log('Key:', key);\r\n console.log('Reports:', reports);\r\n const row = worksheet.addRow([`${key}`]);\r\n worksheet.mergeCells(row.number, 1, row.number, 10);\r\n branchRows.push(row.number);\r\n // Add Data Rows\r\n reports.forEach(row => {\r\n const rowData = this.columnDefs.map(col => {\r\n let value = row[col.field!];\r\n // Format currency fields\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n if (!isNaN(value) && value !== null && value !== '') {\r\n return `\\t ${value}`;\r\n }\r\n return value ?? '';\r\n })\r\n const dataRow = worksheet.addRow(rowData);\r\n dataRow.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n });\r\n worksheet.addRow([]);\r\n }\r\n\r\n // Auto column width ONLY based on data rows\r\n for (let i = 1; i <= totalColumns; i++) {\r\n let maxLength = 10;\r\n for (let rowNum = dataStartRow; rowNum <= worksheet.lastRow!.number; rowNum++) {\r\n if (branchRows.indexOf(x => x === rowNum) === -1) {\r\n continue;\r\n }\r\n const cell = worksheet.getRow(rowNum).getCell(i);\r\n const val = cell.value ? cell.value.toString() : '';\r\n maxLength = Math.max(maxLength, val.length);\r\n }\r\n worksheet.getColumn(i).width = maxLength + 2;\r\n }\r\n worksheet.getColumn(2).width = 20;\r\n worksheet.getColumn(3).width = 15;\r\n // Export\r\n workbook.xlsx.writeBuffer().then(buffer => {\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n })\r\n FileSaver.saveAs(blob, 'Branch-Activity-Send-Report.xlsx');\r\n })\r\n }\r\n\r\n exportCSV(data: any[]) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n const metadata = [\r\n ['Report Title', 'Branch Activity Send'],\r\n ['Report Time', this.reportDate]\r\n // ['Report User', this.user]\r\n ];\r\n\r\n const filteredCols = this.columnDefs.filter(\r\n col =>\r\n !(col.headerName?.toLowerCase().includes('sr. no') ||\r\n col.field?.toLowerCase().includes('sr. no'))\r\n );\r\n\r\n const headers = ['Sr No', ...filteredCols.map(col => col.headerName || col.field!)];\r\n\r\n let Rows: any[][] = []\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n Rows.push([key]);\r\n reports.map((row, index) => {\r\n const rowVals = filteredCols.map(col => {\r\n let v = row[col.field!];\r\n if (currencyFields.includes(col.field) && v != null) {\r\n v = parseFloat(v).toFixed(3);\r\n }\r\n if (col.field === 'transactionNumber' || col.headerName === 'Transaction Number') {\r\n return `\\t ${v}`;\r\n }\r\n return v ?? '';\r\n });\r\n Rows.push([index + 1, ...rowVals]);\r\n return [index + 1, ...rowVals];\r\n })\r\n }\r\n\r\n const aoa: any[][] = [\r\n ...metadata,\r\n [], // blank row for separation\r\n headers,\r\n ...Rows\r\n ];\r\n\r\n // convert to worksheet & CSV\r\n const ws = XLSX.utils.aoa_to_sheet(aoa);\r\n const csv = XLSX.utils.sheet_to_csv(ws, {\r\n FS: ',', RS: '\\n', blankrows: false, forceQuotes: false\r\n } as any);\r\n\r\n // trigger download\r\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\r\n saveAs(blob, 'Branch-Activity-Send-Report.csv');\r\n }\r\n\r\n\r\n public formatDate(params: any): string {\r\n return formatDate(new Date(params.value), 'dd/MM/yyyy', 'en-US');\r\n }\r\n\r\n filter(text: string) {\r\n this.searchText = text;\r\n if (this.searchText == null) {\r\n return;\r\n }\r\n if (this.searchText?.trim().length === 0) {\r\n this.filteredData = structuredClone(this.dataMap);\r\n return;\r\n }\r\n this.searchText = this.searchText?.trim()?.toLowerCase();\r\n for (const [key, entries] of Object.entries(this.dataMap)) {\r\n const filteredData = entries.filter(entry => Object.values(entry)\r\n .some(val => {\r\n let a: string = val.toString().toLowerCase();\r\n return a.search(this.searchText) == -1 ? false : true;\r\n }))\r\n\r\n this.filteredData[key] = filteredData;\r\n }\r\n this.filteredData;\r\n }\r\n\r\n //event handler for filter component\r\n handleSearch(criteria: any) {\r\n this.reportDate = new Date().toISOString();\r\n this.reportDate = formatDate(this.reportDate, 'dd/MM/yyyy hh:mm a', 'en-US');\r\n const modal = criteria.modal;\r\n this.user = criteria.sysUserID;\r\n console.log(modal);\r\n // Code For Meta Data\r\n this.metaDataOne = {\r\n 'Report User': this.user,\r\n 'Report Time': this.reportDate\r\n }\r\n const searchData = {\r\n \"StartDate\": modal.fromDate,\r\n \"EndDate\": modal.toDate,\r\n \"SendCountryCode\": modal.sendCountry,\r\n \"RecvCountryCode\": modal.receiveCountry,\r\n \"BusinessPartnerCode\": modal.client,\r\n \"TransactionStatus\": modal.transactionStatus.join(\",\"),\r\n \"PayoutCurrency\": \"ALL\",\r\n \"TransactionType\": \"ALL\",\r\n \"BranchCode\": modal.branch,\r\n \"CompanyCode\": \"BH\"\r\n };\r\n\r\n try {\r\n const sdate = new Date(searchData?.StartDate);\r\n const edate = new Date(searchData?.EndDate);\r\n searchData.StartDate = sdate.toISOString().split(\"T\")[0];\r\n searchData.EndDate = edate.toISOString().split(\"T\")[0];\r\n } catch(err){\r\n throw new Error(\"Invalid Date\");\r\n }\r\n\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getBranchActivityReceiveReport(searchData).subscribe({\r\n next: (data) => {\r\n console.log(data);\r\n this.filteredData = data;\r\n this.dataMap = JSON.parse(JSON.stringify(data));;\r\n this.noDataFound = Object.keys(data).length == 0 ? true : false;\r\n this.paginationArray = new Array(Object.keys(this.filteredData).length).fill(15);\r\n },\r\n\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n\r\n complete: () => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n this.showReport = true;\r\n }\r\n })\r\n }\r\n\r\n}\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\">\r\n</lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<section *ngIf=\"showReport\" class=\"my-2 mx-1\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"false\" [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"\"(exportEvent)=\"handleExport($event)\" (searchEvent)=\"filter($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let item of filteredData | keyvalue; let i = index\">\r\n <ngb-panel *ngIf=\"item.value.length > 0\" [id]=\"'panel-' + i\">\r\n\r\n <ng-template ngbPanelTitle style=\"height: 10%;\">\r\n <label\r\n style=\"font-weight: bold; font-size: 13px; line-height: 1.2; margin: 0; padding: 2px 0;color: #0c63e4;\">{{\r\n item.key\r\n }}</label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"item?.value?.length\"\r\n [defaultSize]=\"'15'\" [gridApi]=\"gridApis[i]\">\r\n ></lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"width: 100%;height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"item.value\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" [gridOptions]=\"{\r\n suppressHorizontalScroll: true,\r\n scrollbarWidth: 0\r\n }\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event,i)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n </ng-template>\r\n\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data Found\r\n </div>\r\n\r\n</section>\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { CancellationTransaction } from '../../models/cancellation-transaction-report/cancellation-transaction.model';\r\nimport { GridOptions } from 'ag-grid-community';\r\nimport { GenericExportService } from '../../shared/export-generic.service';\r\nimport { formatDate } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-cancellation-transaction-report',\r\n templateUrl: './cancellation-transaction-report.component.html',\r\n styleUrls: ['./cancellation-transaction-report.component.scss']\r\n})\r\n\r\nexport class CancellationTransactionReportComponent implements OnInit, OnDestroy {\r\n ReportName = \"Cancellation Transaction\";\r\n user: string;\r\n private destroy$ = new Subject<void>();\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n hasSearched: boolean = false;\r\n noDataFromApi: boolean = false;\r\n errorMessage: string;\r\n cancellationData: CancellationTransaction[];\r\n pageSize = 15;\r\n metaDataOne: Record<string, string>;\r\n rowData: CancellationTransaction[] = [];\r\n currentDateTime: Date = new Date();\r\n searchText: string;\r\n selectedExportOption = 'excel';\r\n \r\n dataMap: Record<string, CancellationTransaction[]> = {};\r\n filteredData: Record<string, CancellationTransaction[]> = {};\r\n \r\n paginationArray: (number | 'All')[] = [];\r\n gridApis: any[] = [];\r\n\r\n // ag-Grid properties\r\n columnDefs = [\r\n // { headerName: 'Branch Name & Code', field: 'sendAgentBranchNameAndCode' },\r\n { headerName: 'Txn Date & Time', field: 'txnDateAndTime', flex: 1, minWidth: 87, cellClass: 'ag-left-aligned-cell', tooltipValueGetter: params => this.formatDateTimeDDMMYYYY_AMPM(params), valueFormatter: this.formatDateTimeDDMMYYYY_AMPM.bind(this) },\r\n { headerName: 'Cancellation Branch Date', field: 'cancellationBranchDateTime', flex: 1, minWidth: 105, valueFormatter: this.dateValueFormatter('dd/MM/yyyy HH:mm'), tooltipValueGetter: this.dateValueFormatter('dd/MM/yyyy HH:mm') },\r\n { headerName: 'Cancellation Business Date', field: 'cancellationBusinessDate', flex: 1, minWidth: 105, valueFormatter: this.dateValueFormatter('dd/MM/yyyy'), tooltipValueGetter: this.dateValueFormatter('dd/MM/yyyy') },\r\n { headerName: 'Transaction Number', field: 'transactionNumber', flex: 1, minWidth: 100, tooltipField: 'transactionNumber' },\r\n { headerName: 'Product', field: 'product', flex: 1, minWidth: 100, tooltipField: 'product' },\r\n { headerName: 'Send Client Branch Code', field: 'sendAgentBranchCode', flex: 1, minWidth: 105, tooltipField: 'sendAgentBranchCode' },\r\n { headerName: 'Send Principal Client Code (If Applicable)', field: 'sendPrincipalAgentCode', flex: 1, minWidth: 120, tooltipField: 'sendPrincipalAgentCode' },\r\n { headerName: 'Receive Client Code', field: 'recvAGTcode', flex: 1, minWidth: 100, tooltipField: 'recvAGTcode' },\r\n { headerName: 'Receive CcyCode', field: 'payoutCCcode', flex: 1, minWidth: 84, tooltipField: 'payoutCCcode' },\r\n { headerName: 'Receive Amount', field: 'payOutAmount', flex: 1, minWidth: 100, tooltipField: 'payOutAmount', cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatCurrency },\r\n { headerName: 'Send CcyCode', field: 'payinCCcode', flex: 1, minWidth: 69, tooltipField: 'payinCCcode' },\r\n { headerName: 'Send Amount', field: 'payInAmount', flex: 1, minWidth: 100, tooltipField: 'payInAmount', cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatCurrency },\r\n { headerName: 'Service Fee', field: 'txnCommission', flex: 1, minWidth: 100, tooltipField: 'txnCommission', cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatCurrency },\r\n { headerName: 'Tax', field: 'tax', flex: 1, minWidth: 100, tooltipField: 'tax', cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatCurrency },\r\n { headerName: 'Total Send Amount', field: 'totalPayinAmount', flex: 1, minWidth: 100, tooltipField: 'totalPayinAmount', cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatCurrency },\r\n { headerName: 'Transaction Status', field: 'status', flex: 1, minWidth: 100, tooltipField: 'status' },\r\n { headerName: 'Cancellation Location Code', field: 'cancellationLocationCode', flex: 1, minWidth: 105, tooltipField: 'cancellationLocationCode' },\r\n { headerName: 'Cancellation Reason', field: 'cancellationReason', flex: 1, minWidth: 105, tooltipField: 'cancellationReason' },\r\n { headerName: 'Cancelled By User', field: 'statusChangedBy', flex: 1, minWidth: 100, tooltipField: 'statusChangedBy' } \r\n // { headerName: 'Business Date Time', field: 'businessDateTime' }\r\n];\r\n\r\n gridOptions: GridOptions = {\r\n defaultColDef: {\r\n sortable: true,\r\n filter: true,\r\n resizable: true,\r\n wrapText: true,\r\n autoHeight: true,\r\n autoHeaderHeight: true,\r\n cellStyle: { whiteSpace: 'normal' },\r\n },\r\n suppressRowClickSelection: true,\r\n animateRows: true,\r\n pagination: true,\r\n paginationPageSize: 15\r\n};\r\n\r\n constructor(\r\n private reportService: ReportService,\r\n private exportService: GenericExportService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n handleSearch(criteria: any): void {\r\n const modal = criteria.modal;\r\n this.user = criteria.sysUserID;\r\n this.metaDataOne = {\r\n 'Report User': this.user,\r\n 'Report Time': formatDate(this.currentDateTime, 'dd/MM/yyyy hh:mm a', 'en-US')\r\n }\r\n\r\n const searchData = {\r\n BusinessPartnerCode: modal.client,\r\n StartDate: modal.fromDate,\r\n EndDate: modal.toDate,\r\n // StartDate: modal.fromDate.toString().split(\"T\")[0],\r\n // EndDate: modal.toDate.toString().split('T')[0],\r\n BranchCode: modal.branch,\r\n SendCountryCode: modal.sendCountry,\r\n RecvCountryCode: modal.receiveCountry,\r\n TransactionType: modal.product,\r\n PayoutCurrency: modal.receiveCurrency,\r\n };\r\n try {\r\n const sdate = new Date(searchData?.StartDate);\r\n const edate = new Date(searchData?.EndDate);\r\n searchData.StartDate = sdate.toISOString().split(\"T\")[0];\r\n searchData.EndDate = edate.toISOString().split(\"T\")[0];\r\n } catch(err){\r\n throw new Error(\"Invalid Date\");\r\n }\r\n this.dataMap = {};\r\n this.filteredData = {};\r\n this.searchText='';\r\n this.errorMessage = '';\r\n this.noDataFromApi = false;\r\n this.selectedExportOption = 'excel';\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n\r\n this.reportService.getCancellationReport(searchData)\r\n .pipe(\r\n takeUntil(this.destroy$),\r\n finalize(() => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n this.hasSearched = true;\r\n })\r\n )\r\n .subscribe({\r\n next: (data) => {\r\n // 1) Flat list\r\n this.rowData = Array.isArray(data) ? data : [];\r\n\r\n // If API returns no data, set the flag and stop\r\n if (this.rowData.length === 0) {\r\n this.noDataFromApi = true;\r\n this.dataMap = {};\r\n this.filteredData = {};\r\n return;\r\n }\r\n\r\n // 2) Group into Record<string, CancellationTransaction[]>\r\n this.dataMap = this.groupByBranchToRecord(this.rowData);\r\n\r\n // 3) Start filteredData same as dataMap\r\n this.filteredData = this.dataMap;\r\n //this.proxyData = structuredClone(this.dataMap);\r\n\r\n // 4) Pagination array: one entry per group\r\n const groupCount = Object.keys(this.filteredData).length;\r\n this.paginationArray = new Array(groupCount).fill(this.pageSize);\r\n },\r\n error: (err) => {\r\n console.error('Search error:', err);\r\n this.errorMessage = 'Failed to fetch cancellation transaction data. Please try again.';\r\n this.dataMap = {}; // Clear data on error\r\n this.filteredData = {}; // Clear data on error\r\n this.loadingState = this.ComponentLoadingState.Error;\r\n }\r\n });\r\n }\r\n\r\n filter(text: string): void {\r\n this.searchText = text;\r\n const searchText = this.searchText ? this.searchText.trim().toLowerCase() : '';\r\n\r\n // If the search text is empty, restore the original data\r\n if (searchText.length === 0) {\r\n this.filteredData = structuredClone(this.dataMap);\r\n return;\r\n }\r\n\r\n // Create a new object for the filtered results\r\n const newFilteredData: Record<string, CancellationTransaction[]> = {};\r\n\r\n // Always iterate over the original, complete dataMap\r\n for (const [key, entries] of Object.entries(this.dataMap)) {\r\n const filteredEntries = entries.filter(entry =>\r\n Object.values(entry).some(val => {\r\n // Ensure val is not null or undefined before calling toString()\r\n return val != null && val.toString().toLowerCase().includes(searchText);\r\n })\r\n );\r\n\r\n // Only add the group to the new filtered data if it has matching entries\r\n if (filteredEntries.length > 0) {\r\n newFilteredData[key] = filteredEntries;\r\n }\r\n }\r\n\r\n // Replace the old filteredData with the newly computed results\r\n this.filteredData = newFilteredData;\r\n }\r\n\r\n formatCurrency(params) {\r\n if (params.value != null) {\r\n return params.value.toLocaleString('en-US', { minimumFractionDigits: 3 });\r\n }\r\n return '';\r\n }\r\n\r\n dateValueFormatter(format: string) {\r\n return (params: any) => {\r\n if (!params.value) return '';\r\n try {\r\n return formatDate(params.value, format, 'en-US');\r\n } catch {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n formatDateTimeDDMMYYYY_AMPM(params) {\r\n const v = params.value;\r\n if (!v) return '';\r\n\r\n let date: Date;\r\n\r\n if (v instanceof Date) {\r\n date = v;\r\n } else if (/^\\d{4}-\\d{2}-\\d{2}T/.test(v)) {\r\n date = new Date(v); // ISO format\r\n } else {\r\n date = this.parseDDMMYYYYhhmmAMPM(v);\r\n }\r\n\r\n if (!date || isNaN(date.getTime())) return '';\r\n const pad = (n) => (n < 10 ? '0' + n : n);\r\n let hours = date.getHours();\r\n const minutes = pad(date.getMinutes());\r\n const ampm = hours >= 12 ? 'PM' : 'AM';\r\n hours = hours % 12;\r\n hours = hours ? hours : 12;\r\n return `${pad(date.getDate())}/${pad(date.getMonth() + 1)}/${date.getFullYear()} ${pad(hours)}:${minutes} ${ampm}`;\r\n }\r\n\r\n\r\n parseDDMMYYYYhhmmAMPM(value: string): Date | null {\r\n // Match 'DD/MM/YYYY hh:mm AM/PM'\r\n const match = /^(\\d{2})\\/(\\d{2})\\/(\\d{4}) (\\d{2}):(\\d{2}) ([AP]M)$/.exec(value);\r\n if (!match) return null;\r\n let [, dd, mm, yyyy, hh, min, ampm] = match;\r\n let hours = parseInt(hh, 10);\r\n if (ampm === 'PM' && hours !== 12) hours += 12;\r\n if (ampm === 'AM' && hours === 12) hours = 0;\r\n return new Date(\r\n parseInt(yyyy, 10),\r\n parseInt(mm, 10) - 1,\r\n parseInt(dd, 10),\r\n hours,\r\n parseInt(min, 10)\r\n );\r\n }\r\n\r\n onGridReady(params: any, id: number) {\r\n params.api.sizeColumnsToFit();\r\n this.gridApis[id] = params.api;\r\n }\r\n\r\n onGridSizeChanged(params: any) {\r\n params.api.sizeColumnsToFit();\r\n }\r\n\r\n getKeys(obj: Record<string, unknown>): string[] {\r\n return obj ? Object.keys(obj) : [];\r\n }\r\n\r\n hasAnyGroups(): boolean {\r\n return this.filteredData && this.getKeys(this.filteredData).length > 0;\r\n }\r\n\r\n hasNoGroups(): boolean {\r\n return this.filteredData && this.getKeys(this.filteredData).length === 0 && this.loadingState == ComponentLoadingStates.Complete;\r\n }\r\n\r\n getPageSizeFor(index: number, total: number): number {\r\n const val = this.paginationArray[index];\r\n if (val === 'All') {\r\n return total; // show all rows for that panel\r\n }\r\n // Ensure it’s a number\r\n return Number(val ?? this.pageSize);\r\n }\r\n\r\n private groupByBranchToRecord(rows: CancellationTransaction[]): Record<string, CancellationTransaction[]> {\r\n const out: Record<string, CancellationTransaction[]> = {};\r\n for (const item of rows) {\r\n const key = item.sendAgentBranchNameAndCode || 'Unknown Branch';\r\n if (!out[key]) out[key] = [];\r\n out[key].push(item);\r\n }\r\n return out;\r\n }\r\n\r\n isDataAvailable(): boolean {\r\n return this.hasSearched && !this.noDataFromApi && !this.errorMessage && this.loadingState == ComponentLoadingStates.Complete;\r\n }\r\n\r\n handleExport(option:string): void {\r\n this.selectedExportOption = option;\r\n if (!this.hasAnyGroups()) {\r\n alert(\"There is no data to export based on your current filter.\");\r\n return;\r\n }\r\n // If no data, do nothing.\r\n if (!this.filteredData || Object.keys(this.filteredData).length === 0) {\r\n alert(\"No data to export\");\r\n return;\r\n }\r\n const title = \"Cancellation Transaction\";\r\n const reportTimeFormatter = this.dateValueFormatter('dd/MM/yyyy hh:mm a');\r\n const metadata: [string, string][] = [\r\n ['Report User ', this.user ?? ''],\r\n ['Report Time ', reportTimeFormatter({ value: new Date() })]\r\n ];\r\n const columns = this.columnDefs;\r\n const data = this.dataMap;\r\n // const data = this.filteredData;\r\n const options = {\r\n currencyFields: [\r\n 'payOutAmount', 'payInAmount', 'totalPayinAmount', 'txnCommission', 'tax'\r\n ],\r\n // specify all date fields expected\r\n dateFields: ['txnDateAndTime', 'cancellationBranchDateTime', 'cancellationBusinessDate'],\r\n\r\n dateFieldFormats: {\r\n txnDateAndTime: 'dd/MM/yyyy hh:mm a', // e.g. 11/07/2025 10:56 PM\r\n cancellationBranchDateTime: 'dd/MM/yyyy HH:mm', // e.g. 28/07/2025 13:08\r\n cancellationBusinessDate: 'dd/MM/yyyy' // e.g. 28/07/2025\r\n },\r\n\r\n specialDecimalFields: {\r\n rate: 8 // future field with 8 decimal places\r\n },\r\n\r\n groupByKey: true\r\n };\r\n\r\n switch (this.selectedExportOption) {\r\n case 'excel':\r\n this.exportService.exportToExcel({ title, metadata, columns, data, options });\r\n break;\r\n case 'pdf':\r\n this.exportService.exportToPdf({ title, metadata, columns, data, options });\r\n break;\r\n case 'csv':\r\n this.exportService.exportToCsv({ title, metadata, columns, data, options });\r\n break;\r\n default:\r\n alert(\"Please select an export format.\");\r\n }\r\n }\r\n\r\n}\r\n\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\">\r\n</lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"hasSearched && noDataFromApi\">\r\n No transactions found matching your search criteria.\r\n</div>\r\n\r\n<div *ngIf=\"errorMessage\" class=\"error alert alert-danger mt-3\">{{ errorMessage }}</div>\r\n\r\n<div *ngIf=\"isDataAvailable() && !errorMessage\">\r\n <lib-metadata \r\n [reportName]=\"ReportName\" \r\n [showmetaDataOne]=\"true\" \r\n [showmetaDataTwo]=\"false\" \r\n [metaDataOne]=\"metaDataOne\"\r\n [metaDataTwo]=\"\" \r\n (exportEvent)=\"handleExport($event)\" \r\n (searchEvent)=\"filter($event)\">\r\n </lib-metadata>\r\n</div>\r\n\r\n<div style=\"margin-top: 20px;\" *ngIf=\"hasAnyGroups() && !errorMessage\">\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let item of filteredData | keyvalue; let i = index\">\r\n\r\n <ngb-panel *ngIf=\"item.value.length > 0\" [id]=\"'panel-' + i\">\r\n\r\n <ng-template ngbPanelTitle style=\"height: 10%;\">\r\n <label style=\"font-weight: bold; font-size: 13px; line-height: 1.2; margin: 0; padding: 2px 0;color: #0c63e4;\">\r\n {{ item.key }}\r\n </label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"item?.value?.length\"\r\n [defaultSize]=\"'15'\" [gridApi]=\"gridApis[i]\">\r\n ></lib-page-size-selector>\r\n\r\n <ag-grid-angular\r\n class=\"ag-theme-alpine cancellation-grid\"\r\n style=\"width: 100%; height: 370px;\"\r\n [gridOptions]=\"gridOptions\"\r\n [rowData]=\"item.value\"\r\n [columnDefs]=\"columnDefs\"\r\n [pagination]=\"true\"\r\n [paginationPageSize]=\"getPageSizeFor(i, item.value.length)\"\r\n (gridReady)=\"onGridReady($event, i)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n </ng-template>\r\n\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n</div>\r\n\r\n<div class=\"alert alert-info mt-3\" *ngIf=\"hasSearched && !noDataFromApi && hasNoGroups() && !errorMessage && !hasAnyGroups()\">\r\n Your search filter did not match any transactions in the current report. Clear the search box to see all data.\r\n</div>","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { AccountingReportModel } from '../../models/accounting-report/accounting-report-model';\r\nimport { ColDef, ColumnApi, GridApi, GridReadyEvent } from 'ag-grid-community';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { ExportService } from '../../shared/export.service';\r\nimport { formatDate } from '@angular/common';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { AccountingReportBranchGroup } from '../../models/accounting-report/accounting-report-branch-group';\r\nimport jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\n\r\ndeclare module 'jspdf' {\r\n interface jsPDF {\r\n autoTable: (options: any) => jsPDF;\r\n }\r\n}\r\n\r\nexport interface AccountingReportRequest {\r\n startDate: string;\r\n endDate: string;\r\n sendCountryCode: string;\r\n recvCountryCode: string;\r\n businessPartnerCorrelationID: string;\r\n transactionStatus: string;\r\n payoutCurrency: string;\r\n transactionType: string;\r\n branchCode: string;\r\n companyCode: string;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-accounting-report',\r\n templateUrl: './accounting-report.component.html',\r\n styleUrls: ['./accounting-report.component.scss'],\r\n})\r\nexport class AccountingReportComponent implements OnInit {\r\n\r\n ReportName: string = \"Accounting\";\r\n reportUser: any;\r\n reportTime: any;\r\n reportPeriod: any;\r\n branchNameAndCode: any;\r\n subGroupColumn: any;\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n noDataFound: boolean = false;\r\n\r\n leftData: Record<string, string>;\r\n rightData: Record<string, string>;\r\n\r\n searchText: string = '';\r\n rowData = [];\r\n accountingReportModel: AccountingReportModel;\r\n pageSize: number = 15;\r\n\r\n selectedExportOption: string = 'excel';\r\n exportFormats = [{ formatName: \"Excel\", code: 'excel' }, { formatName: \"PDF\", code: 'pdf' }, { formatName: \"CSV\", code: 'csv' }]\r\n\r\n defaultColDef: ColDef = {\r\n resizable: true,\r\n sortable: false,\r\n minWidth: 40,\r\n suppressSizeToFit: false,\r\n cellStyle: { userSelect: 'text', 'line-height': '1.2', 'white-space': 'normal', 'word-break': 'normal', 'overflow-wrap': 'break-word' },\r\n\r\n // Header wrapping\r\n wrapHeaderText: true,\r\n autoHeaderHeight: true,\r\n\r\n // Cell wrapping\r\n wrapText: true,\r\n autoHeight: true\r\n };\r\n\r\n columnDefs: ColDef[] = [\r\n { headerName: 'BusinessDate', field: 'businessDate', tooltipField: 'businessDate' },\r\n { headerName: 'TxnDate&Time', field: 'transactionDateAndTime', tooltipField: 'transactionDateAndTime', minWidth: 110, },\r\n { headerName: 'Transaction Number', field: 'transactionNumber', tooltipField: 'transactionNumber' },\r\n { headerName: 'SendClient', field: 'sendClient', tooltipField: 'sendClient' },\r\n { headerName: 'Principle SendClient (If Applicable)', field: 'principleSendClient', tooltipField: 'principleSendClient' },\r\n { headerName: 'ReceiveClient', field: 'receiveClient', tooltipField: 'receiveClient' },\r\n { headerName: 'Principle ReceiveClient (If Applicable)', field: 'principleReceiveClient', tooltipField: 'principleReceiveClient' },\r\n { headerName: 'ReceiveCcy', field: 'receiveCurrency', tooltipField: 'receiveCurrency' },\r\n { headerName: 'AmountPaid', field: 'amountPaid', tooltipField: 'amountPaid', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'SendCcy', field: 'sendCurrency', tooltipField: 'sendCurrency', },\r\n { headerName: 'ServiceFee', field: 'serviceFee', tooltipField: 'serviceFee', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'Tax', field: 'tax', tooltipField: 'tax', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'PrincipleSend Amount', field: 'principleSendAmount', tooltipField: 'principleSendAmount', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'Transaction Status', field: 'transactionStatus', tooltipField: 'transactionStatus' },\r\n { headerName: 'SettlementCcy', field: 'settlementCurrency', tooltipField: 'settlementCurrency', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'ClientSettl (in SCcy)', field: 'clientSettlementInSCcy', tooltipField: 'clientSettlementInSCcy', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'ClientSettl (in USD)', field: 'clientSettlementInUSD', tooltipField: 'clientSettlementInUSD', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'ShareType', field: 'shareType', tooltipField: 'shareType' },\r\n { headerName: 'ShareValue', field: 'shareValue', tooltipField: 'shareValue', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'Send/Receive FeeCcy', field: 'sendReceiveFeeCcy', tooltipField: 'sendReceiveFeeCcy' },\r\n { headerName: 'ShareAmt (in USD)', field: 'shareAmountInUSD', tooltipField: 'shareAmountInUSD', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'Settlement Rate', field: 'settlementRate', tooltipField: 'settlementRate', cellClass: 'ag-right-aligned-cell' },\r\n ];\r\n\r\n\r\n gridApis: GridApi[] = [];\r\n gridColumnApis: ColumnApi[] = [];\r\n\r\n paginationArray: any[];\r\n ezremitUser: boolean = false;\r\n originalGroupEntries: AccountingReportBranchGroup[] = [];\r\n\r\n constructor(private reportService: ReportService, private exportService: ExportService) { }\r\n\r\n ngOnInit(): void {\r\n const ezremitusername = sessionStorage.getItem('ezremitusername');\r\n if (ezremitusername) {\r\n this.ezremitUser = true;\r\n }\r\n }\r\n\r\n public getAccountingReport(request?: AccountingReportRequest) {\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.accountingReportModel = undefined;\r\n this.branchNameAndCode = undefined;\r\n this.subGroupColumn = undefined;\r\n const finalReq = request;\r\n\r\n this.reportService.getAccountingReport(finalReq).subscribe(data => {\r\n this.accountingReportModel = data;\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n\r\n console.log(this.accountingReportModel);\r\n\r\n this.accountingReportModel.accountingReportByBranchGroups.forEach(group => {\r\n group.sendTransactions.entries = group.sendTransactions.entries.map(entry => ({\r\n ...entry,\r\n businessDate: formatDate(entry.businessDate, 'dd/MM/yyyy', 'en-US'),\r\n transactionDateAndTime: formatDate(entry.transactionDateAndTime, 'dd/MM/yyyy hh:mm a', 'en-US'),\r\n }));\r\n\r\n group.receiveTransactions.entries = group.receiveTransactions.entries.map(entry => ({\r\n ...entry,\r\n businessDate: formatDate(entry.businessDate, 'dd/MM/yyyy', 'en-US'),\r\n transactionDateAndTime: formatDate(entry.transactionDateAndTime, 'dd/MM/yyyy hh:mm a', 'en-US'),\r\n }));\r\n });\r\n\r\n\r\n this.accountingReportModel = data;\r\n this.noDataFound = Object.keys(this.accountingReportModel.accountingReportByBranchGroups).length == 0 ? true : false;\r\n const branchCount = this.accountingReportModel.accountingReportByBranchGroups.length;\r\n this.paginationArray = new Array(branchCount * 2).fill(15);\r\n\r\n\r\n this.reportUser = this.accountingReportModel.reportUser;\r\n this.reportTime = formatDate(new Date(), 'dd/MM/yyyy hh:mm a', 'en-US');\r\n this.reportPeriod = `${formatDate(finalReq.startDate, 'dd/MM/yyyy', 'en-US')} - ${formatDate(finalReq.endDate, 'dd/MM/yyyy', 'en-US')}`;\r\n\r\n this.leftData = {\r\n 'Report User ': `${this.reportUser}`,\r\n 'Report Time': `${this.reportTime}`,\r\n }\r\n\r\n this.rightData = {\r\n 'Report Period': `${this.reportPeriod}`,\r\n 'Company': \"Xpress Money\"\r\n }\r\n\r\n // Deep copy to preserve original data for search\r\n this.originalGroupEntries = this.accountingReportModel.accountingReportByBranchGroups.map(group => ({\r\n ...group,\r\n sendTransactions: {\r\n ...group.sendTransactions,\r\n entries: [...group.sendTransactions.entries]\r\n },\r\n receiveTransactions: {\r\n ...group.receiveTransactions,\r\n entries: [...group.receiveTransactions.entries]\r\n }\r\n }));\r\n\r\n\r\n }, error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n async handleExport(option: string) {\r\n this.selectedExportOption = option;\r\n switch (this.selectedExportOption) {\r\n case 'excel':\r\n this.exportToExcel();\r\n break;\r\n case 'pdf':\r\n this.exportToPdf();\r\n break;\r\n case 'csv':\r\n this.exportToCsv();\r\n break;\r\n default:\r\n alert('Please select an export format.');\r\n }\r\n }\r\n\r\n onSearch(text: string) {\r\n const normalize = (str: any): string =>\r\n str?.toString()\r\n .toLowerCase()\r\n .replace(/,/g, '')\r\n .replace(/\\s+/g, ' ')\r\n .replace(/[\\u200B-\\u200D\\uFEFF]/g, '')\r\n .trim();\r\n\r\n this.searchText = text;\r\n const search = normalize(text);\r\n\r\n if (!this.accountingReportModel?.accountingReportByBranchGroups) return;\r\n\r\n this.accountingReportModel.accountingReportByBranchGroups.forEach((group, index) => {\r\n const originalSendEntries = this.originalGroupEntries[index]?.sendTransactions.entries || [];\r\n const originalReceiveEntries = this.originalGroupEntries[index]?.receiveTransactions.entries || [];\r\n\r\n if (search) {\r\n group.sendTransactions.entries = originalSendEntries.filter(entry =>\r\n Object.values(entry).some(value => normalize(value).includes(search))\r\n );\r\n group.receiveTransactions.entries = originalReceiveEntries.filter(entry =>\r\n Object.values(entry).some(value => normalize(value).includes(search))\r\n );\r\n } else {\r\n group.sendTransactions.entries = [...originalSendEntries];\r\n group.receiveTransactions.entries = [...originalReceiveEntries];\r\n }\r\n\r\n // Reset both grids\r\n [group.sendTransactions.entries, group.receiveTransactions.entries].forEach((entries, idx) => {\r\n const gridApi = this.gridApis[index * 2 + idx]; // keep separate ids for grids\r\n if (gridApi) {\r\n gridApi.setRowData(entries);\r\n if (gridApi.paginationGoToFirstPage) gridApi.paginationGoToFirstPage();\r\n if (gridApi.paginationSetPageSize) gridApi.paginationSetPageSize(this.pageSize);\r\n }\r\n });\r\n });\r\n\r\n }\r\n\r\n onGridReady(params: GridReadyEvent, id: number) {\r\n this.gridApis[id] = params.api;\r\n this.gridColumnApis[id] = params.columnApi; // ✅ keep per grid\r\n\r\n setTimeout(() => this.autoSizeAllColumns(id), 100);\r\n }\r\n\r\n\r\n onGridSizeChanged(params: any, id: number) {\r\n this.autoSizeAllColumns(id);\r\n }\r\n\r\n\r\n autoSizeAllColumns(id: number, skipHeader: boolean = false) {\r\n const columnApi = this.gridColumnApis[id];\r\n if (!columnApi) return;\r\n\r\n const allColumnIds: string[] = [];\r\n columnApi.getColumns().forEach((column: any) => {\r\n allColumnIds.push(column.getId());\r\n });\r\n\r\n columnApi.autoSizeColumns(allColumnIds, skipHeader);\r\n }\r\n\r\n\r\n formatNumber(params: any): string {\r\n if (params.value == null) return '';\r\n\r\n const field = params.colDef.field;\r\n\r\n if (field === 'settlementRate') {\r\n return Number(params.value).toFixed(8);\r\n }\r\n\r\n return Number(params.value).toFixed(3);\r\n }\r\n\r\n private exportToPdf() {\r\n if (!this.accountingReportModel.accountingReportByBranchGroups?.length) return;\r\n const title = 'Accounting Report';\r\n const fileName = 'Accounting-Report.pdf';\r\n\r\n const metadata: [string, string][] = [\r\n ['Report User:', this.reportUser],\r\n ['Report Time:', this.reportTime],\r\n ['Report Period:', this.reportPeriod],\r\n ];\r\n\r\n const doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: [700, 210] });\r\n\r\n const logoWidth = 38.4, logoHeight = 17.5, logoX = 15, logoY = 8;\r\n const pageWidth = doc.internal.pageSize.width;\r\n const titleY = 18;\r\n\r\n // Logo\r\n if (this.exportService['logoBase64']) {\r\n doc.addImage(this.exportService['logoBase64'], 'PNG', logoX, logoY, logoWidth, logoHeight);\r\n }\r\n\r\n // Title\r\n doc.setFontSize(15);\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(title, pageWidth / 2, titleY, { align: 'center' });\r\n\r\n let currentY = titleY + 14;\r\n\r\n // Metadata\r\n doc.setFontSize(10);\r\n metadata.forEach(([label, value], i) => {\r\n const y = currentY + i * 7;\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(label, 15, y);\r\n const labelWidth = doc.getTextWidth(label + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(value ?? '', 15 + labelWidth, y);\r\n });\r\n currentY += metadata.length * 7 + 5;\r\n\r\n // Branches\r\n this.accountingReportModel.accountingReportByBranchGroups.forEach(group => {\r\n doc.setFontSize(10);\r\n doc.setFont('helvetica', 'bold');\r\n\r\n const branchText = `Branch (Name & Code): ${group.branchNameAndCode}`;\r\n doc.text(branchText, 15, currentY);\r\n currentY += 7;\r\n\r\n // Loop subgroups (Send + Receive)\r\n [group.sendTransactions, group.receiveTransactions].forEach(subGroup => {\r\n if (!subGroup.entries?.length) return;\r\n\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(`Sub Group: ${subGroup.subGroupName}`, 15, currentY);\r\n currentY += 5;\r\n\r\n const { headers, rows } = this.prepareAccountingTable(subGroup.entries);\r\n\r\n (doc as any).autoTable({\r\n head: [headers],\r\n body: rows,\r\n startY: currentY,\r\n theme: 'grid',\r\n headStyles: {\r\n fillColor: [220, 220, 220], textColor: 0,\r\n fontStyle: 'bold', fontSize: 9, halign: 'center',\r\n },\r\n bodyStyles: { fontSize: 8, fillColor: [255, 255, 255], textColor: [0, 0, 0] },\r\n styles: { cellPadding: 2, overflow: 'linebreak', minCellHeight: 6 },\r\n });\r\n\r\n currentY = (doc as any).lastAutoTable.finalY + 10;\r\n });\r\n });\r\n\r\n doc.save(fileName);\r\n }\r\n\r\n private exportToExcel() {\r\n if (!this.accountingReportModel.accountingReportByBranchGroups?.length) return;\r\n const title = 'Accounting Report';\r\n const fileName = 'Accounting-Report.xlsx';\r\n\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet('Accounting Report');\r\n let currentRow = 1;\r\n\r\n // Logo\r\n if (this.exportService.logoBase64) {\r\n const base64Data = this.exportService.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\r\n worksheet.addImage(imageId, { tl: { col: 0, row: 0 }, ext: { width: 145, height: 66 }, editAs: 'oneCell' });\r\n }\r\n\r\n // Title\r\n const titleRow = worksheet.getRow(currentRow);\r\n titleRow.getCell(6).value = title;\r\n titleRow.getCell(6).font = { bold: true, size: 16 };\r\n titleRow.getCell(6).alignment = { vertical: 'middle', horizontal: 'left' };\r\n worksheet.mergeCells(`F${currentRow}:J${currentRow}`);\r\n currentRow += 3;\r\n\r\n // Metadata\r\n const metadata: [string, string][] = [\r\n ['Report User', this.reportUser],\r\n ['Report Time', this.reportTime],\r\n ['Report Period', this.reportPeriod],\r\n ];\r\n metadata.forEach(([label, value]) => {\r\n const row = worksheet.getRow(currentRow++);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: `${label}: `, font: { bold: true } },\r\n { text: value ?? '', font: { bold: false } }\r\n ]\r\n };\r\n });\r\n\r\n worksheet.addRow([]); currentRow++;\r\n\r\n // Branches\r\n this.accountingReportModel.accountingReportByBranchGroups.forEach(group => {\r\n const branchRow = worksheet.getRow(currentRow++);\r\n branchRow.getCell(1).value = {\r\n richText: [\r\n { text: 'Branch (Name & Code): ', font: { bold: true } },\r\n { text: group.branchNameAndCode ?? '', font: { bold: false } }\r\n ]\r\n };\r\n worksheet.addRow([]); currentRow++;\r\n\r\n // Loop subgroups\r\n [group.sendTransactions, group.receiveTransactions].forEach(subGroup => {\r\n if (!subGroup.entries?.length) return;\r\n\r\n const subGroupRow = worksheet.getRow(currentRow++);\r\n subGroupRow.getCell(1).value = {\r\n richText: [\r\n { text: 'Sub Group: ', font: { bold: true } },\r\n { text: subGroup.subGroupName ?? '', font: { bold: false } }\r\n ]\r\n };\r\n\r\n worksheet.addRow([]); currentRow++;\r\n\r\n // Headers\r\n const { headers, rows } = this.prepareAccountingTable(subGroup.entries);\r\n const headerRow = worksheet.getRow(currentRow++);\r\n headers.forEach((header, i) => {\r\n const cell = headerRow.getCell(i + 1);\r\n cell.value = header;\r\n cell.font = { bold: true };\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'D9D9D9' } };\r\n cell.alignment = { vertical: 'middle', horizontal: 'center' };\r\n cell.border = { top: { style: 'thin' }, bottom: { style: 'thin' }, left: { style: 'thin' }, right: { style: 'thin' } };\r\n });\r\n\r\n // Rows\r\n rows.forEach(r => {\r\n const row = worksheet.getRow(currentRow++);\r\n r.forEach((val, i) => {\r\n const cell = row.getCell(i + 1);\r\n cell.value = val;\r\n cell.border = { top: { style: 'thin' }, bottom: { style: 'thin' }, left: { style: 'thin' }, right: { style: 'thin' } };\r\n });\r\n });\r\n\r\n worksheet.addRow([]); currentRow++;\r\n });\r\n });\r\n\r\n // 🔹 Auto-adjust column widths (including Sr No)\r\n const allHeaders = ['Sr No', ...this.columnDefs.map(c => c.headerName)];\r\n allHeaders.forEach((header, i) => {\r\n let maxLength = header.length; // start with header length\r\n\r\n this.accountingReportModel.accountingReportByBranchGroups.forEach(group => {\r\n [group.sendTransactions, group.receiveTransactions].forEach(subGroup => {\r\n subGroup.entries.forEach(entry => {\r\n // Sr No column (i = 0) is just numbers\r\n let val = i === 0 ? (subGroup.entries.indexOf(entry) + 1).toString() : (entry[this.columnDefs[i - 1]?.field] ?? '');\r\n const len = val.toString().length;\r\n if (len > maxLength) maxLength = len;\r\n });\r\n });\r\n });\r\n\r\n worksheet.getColumn(i + 1).width = maxLength + 5; // padding\r\n });\r\n\r\n workbook.xlsx.writeBuffer().then(buffer => {\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n });\r\n FileSaver.saveAs(blob, fileName);\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n private prepareAccountingTable(data: any[]): { headers: string[], rows: any[][] } {\r\n const currencyFields = ['amountPaid', 'serviceFee', 'tax', 'principleSendAmount', 'clientSettlementInSCcy'];\r\n const headers = ['Sr No', ...this.columnDefs.map(c => c.headerName)];\r\n\r\n if (!data || data.length === 0) {\r\n return { headers, rows: [] }; // ✅ return headers only, empty rows\r\n }\r\n\r\n const rows = data.map((row, i) => {\r\n return [\r\n i + 1,\r\n ...this.columnDefs.map(col => {\r\n let val = row[col.field];\r\n if (val == null) return '';\r\n if (currencyFields.includes(col.field)) return parseFloat(val).toFixed(3);\r\n if (col.field === 'settlementRate') return parseFloat(val).toFixed(8);\r\n return val;\r\n })\r\n ];\r\n });\r\n\r\n return { headers, rows };\r\n }\r\n\r\n private exportToCsv() {\r\n if (!this.accountingReportModel.accountingReportByBranchGroups?.length) return;\r\n const fileName = 'Accounting-Report.csv';\r\n const rows: string[] = [];\r\n\r\n rows.push('Report Title: Accounting Report');\r\n rows.push('');\r\n rows.push(`Report User: ${this.reportUser}`);\r\n rows.push(`Report Time: ${this.reportTime}`);\r\n rows.push(`Report Period: ${this.reportPeriod}`);\r\n rows.push(`Company: Xpress Money`);\r\n rows.push('');\r\n\r\n this.accountingReportModel.accountingReportByBranchGroups.forEach(group => {\r\n rows.push(`Branch (Name & Code): ${group.branchNameAndCode}`);\r\n\r\n [group.sendTransactions, group.receiveTransactions].forEach(subGroup => {\r\n if (!subGroup.entries?.length) return;\r\n\r\n rows.push(`Sub Group: ${subGroup.subGroupName}`);\r\n\r\n // 🔹 Add \"Sr No\" at the beginning of headers\r\n rows.push(['\"Sr No\"', ...this.columnDefs.map(col => `\"${col.headerName}\"`)].join(','));\r\n\r\n subGroup.entries.forEach((entry, idx) => {\r\n // 🔹 Add serial number at start of each row\r\n const row = [\r\n (idx + 1).toString(),\r\n ...this.columnDefs.map(col => {\r\n const val = entry[col.field];\r\n if (val == null) return '';\r\n if (['amountPaid', 'serviceFee', 'tax', 'principleSendAmount', 'clientSettlementInSCcy'].includes(col.field)) {\r\n return parseFloat(val).toFixed(3);\r\n }\r\n if (col.field === 'settlementRate') {\r\n return parseFloat(val).toFixed(8);\r\n }\r\n return `\"${val}\"`;\r\n })\r\n ].join(',');\r\n rows.push(row);\r\n });\r\n\r\n rows.push('');\r\n });\r\n });\r\n\r\n const blob = new Blob([rows.join('\\n')], { type: 'text/csv;charset=utf-8;' });\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(blob);\r\n link.setAttribute('download', fileName);\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n getReport(payload: any) {\r\n const modal = payload?.modal || payload;\r\n\r\n const req: AccountingReportRequest = {\r\n startDate: modal.fromDate, // yyyy-MM-dd from the filter\r\n endDate: modal.toDate,\r\n sendCountryCode: modal.sendCountry ?? 'ALL',\r\n recvCountryCode: modal.receiveCountry ?? 'ALL',\r\n businessPartnerCorrelationID: modal.client ?? 'ALL',\r\n transactionStatus: modal.transactionStatus.join(\",\"),\r\n payoutCurrency: modal.currency ?? 'ALL',\r\n transactionType: modal.product ?? 'ALL',\r\n branchCode: modal.branch ?? 'ALL',\r\n companyCode: 'ALL' // or 'BH' if your API requires it specifically\r\n };\r\n\r\n this.getAccountingReport(req);\r\n }\r\n\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"></lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"accountingReportModel!=undefined && accountingReportModel.accountingReportByBranchGroups?.length\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <div class=\"report-accordion\">\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let group of accountingReportModel?.accountingReportByBranchGroups; let i = index\">\r\n <ngb-panel [id]=\"'panel-' + i\">\r\n <ng-template ngbPanelTitle>\r\n <label class=\"title-stack line-1\">\r\n {{ group.branchNameAndCode }}\r\n </label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <!-- Send Transactions -->\r\n <div *ngIf=\"group.sendTransactions.entries.length\">\r\n <h6 class=\"subgroupcolumn\">{{ group.sendTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.sendTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.sendTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n\r\n <!-- Receive Transactions -->\r\n <div *ngIf=\"group.receiveTransactions.entries.length\" class=\"mt-3\">\r\n <h6 class=\"subgroupcolumn\">{{ group.receiveTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.receiveTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2 + 1]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\"\r\n [rowData]=\"group.receiveTransactions.entries\" [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\"\r\n [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event, i * 2 + 1)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n </div>\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound && loadingState!=ComponentLoadingState.Loading\">\r\n No Data found matching your search criteria.\r\n</div>","import { APP_INITIALIZER, NgModule } from '@angular/core';\r\nimport { AccGlDetailsEnquiryReportComponent } from './components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component';\r\nimport { AgGridModule } from 'ag-grid-angular';\r\nimport { ReportsLibRoutingModule } from './reports-lib-routing.module';\r\n\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { BranchActivitySendReportComponent } from './components/branch-activity-send-report/branch-activity-send-report.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { LoaderComponent } from './shared/loader/loader.component'\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ConfigService } from '../lib/services/config.service';\r\nimport { NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { SharedModule } from './shared/shared.module';\r\nimport { TransactionEnquiryComponent } from './components/transaction-enquiry-report/transaction-enquiry-report.component';\r\nimport { SearchFilterComponent } from './shared/search-filter/search-filter.component';\r\nimport { ReportsLibComponent } from './reports-lib.component';\r\nimport { BranchActivityReceiveReportComponent } from './components/branch-activity-receive-report/branch-activity-receive-report.component';\r\nimport { CancellationTransactionReportComponent } from './components/cancellation-transaction-report/cancellation-transaction-report.component';\r\nimport { AccountingReportComponent } from './components/accounting-report/accounting-report.component';\r\nexport function initializeApp(config: ConfigService) {\r\n const configFile = '/assets/config/app-config.json';\r\n\r\n return () => config.load(configFile).toPromise();\r\n}\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ReportsLibComponent,\r\n AccGlDetailsEnquiryReportComponent,\r\n BranchActivitySendReportComponent,\r\n LoaderComponent,\r\n TransactionEnquiryComponent,\r\n LoaderComponent,\r\n SearchFilterComponent,\r\n BranchActivityReceiveReportComponent,\r\n CancellationTransactionReportComponent,\r\n AccountingReportComponent\r\n ],\r\n imports: [\r\n AgGridModule,\r\n ReportsLibRoutingModule,\r\n CommonModule,\r\n RouterModule,\r\n NgbDatepickerModule,\r\n SharedModule,\r\n BrowserModule,\r\n AgGridModule,\r\n ReportsLibRoutingModule,\r\n FormsModule,\r\n AgGridModule,\r\n NgbModule,\r\n ReactiveFormsModule,\r\n NgSelectModule,\r\n ReactiveFormsModule,\r\n NgbModule,\r\n NgSelectModule\r\n ],\r\n providers: [\r\n ConfigService,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: initializeApp,\r\n deps: [ConfigService],\r\n multi: true\r\n }\r\n ],\r\n exports: [\r\n ReportsLibComponent,\r\n AccGlDetailsEnquiryReportComponent,\r\n BranchActivitySendReportComponent,\r\n TransactionEnquiryComponent,\r\n CancellationTransactionReportComponent,\r\n AccountingReportComponent\r\n ]\r\n})\r\nexport class ReportsLibModule { }\r\n","export interface BranchActivityReportDictionay{\r\n \r\n}\r\n\r\nexport class BranchActivityReport {\r\n SendAgentBranchNameAndCode: string;\r\n BusinessDateTime: string;\r\n TransactionDateTime: string;\r\n TransactionNumber: string;\r\n Product: string;\r\n SendAgentBranchCode: string;\r\n SendPrincipalAgentCode: string;\r\n ReceiveAgentCode: string;\r\n PayoutCCcode: string;\r\n PayoutAmount?: number;\r\n PayinCCcode: string;\r\n PayinAmount?: number;\r\n TransactionCommissionAmount?: number;\r\n Tax?: number;\r\n TotalPayinAmount?: number;\r\n Status: string;\r\n}\r\n","export class BranchActivitySendReportRequestDomainModel {\r\n startDate: string;\r\n endDate: string;\r\n sendCountryCode: string;\r\n recvCountryCode: string;\r\n businessPartnerCode: string;\r\n transactionStatus: string;\r\n payoutCurrency: string;\r\n transactionType: string;\r\n branchCode: string;\r\n companyCode: string;\r\n\r\n constructor(values: Object = {}) {\r\n Object.assign(this, values);\r\n }\r\n}","/*\r\n * Public API Surface of reports-lib\r\n */\r\n\r\n// Services\r\nexport * from './lib/reports-lib.service';\r\nexport * from './lib/services/report.service';\r\nexport * from './lib/services/config.service'\r\nexport * from './lib/shared/export.service';\r\nexport * from './lib/shared/export-generic.service';\r\nexport * from './lib/shared/loader/loader.component';\r\n\r\n// Components\r\nexport * from './lib/reports-lib.component';\r\nexport * from './lib/reports-lib.module';\r\nexport * from './lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component';\r\nexport * from './lib/components/transaction-enquiry-report/transaction-enquiry-report.component';\r\nexport * from './lib/components/branch-activity-send-report/branch-activity-send-report.component';\r\nexport * from './lib/components/branch-activity-receive-report/branch-activity-receive-report.component'\r\nexport * from './lib/components/cancellation-transaction-report/cancellation-transaction-report.component';\r\nexport * from './lib/components/accounting-report/accounting-report.component';\r\n\r\n// Models\r\nexport * from './lib/models/transaction-enquiry-report/transaction-enquiry.model';\r\nexport * from './lib/models/app-config.model';\r\nexport * from './lib/models/branch-activity-report/branch-activity-send-report';\r\nexport * from './lib/models/branch-activity-report/branch-activity-send-report-request-domain-model';\r\nexport * from './lib/models/branch-activity-receive-report/branch-activity-receive.model';\r\nexport * from './lib/models/cancellation-transaction-report/cancellation-transaction.model';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ConfigService","i1","i3","i1.ReportService","i3.ConfigService","i4","i5","i6","i8.LoaderComponent","i1.ExportService","i2.ReportService","i7.PageSizeSelectorComponent","i8.MetadataComponent","i9.SearchFilterComponent","i2.ExportService","i6.PageSizeSelectorComponent","i7.MetadataComponent","i5.PageSizeSelectorComponent","i6.MetadataComponent","i7","i2","i3.PageSizeSelectorComponent","i4.MetadataComponent","i6.LoaderComponent","i7.SearchFilterComponent","i2.GenericExportService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sachin9822-reports-lib.mjs","sources":["../../../projects/reports-lib/src/lib/reports-lib.service.ts","../../../projects/reports-lib/src/lib/services/config.service.ts","../../../projects/reports-lib/src/lib/services/report.service.ts","../../../projects/reports-lib/src/lib/shared/export.service.ts","../../../projects/reports-lib/src/lib/shared/export-generic.service.ts","../../../projects/reports-lib/src/lib/shared/loader/loader.component.ts","../../../projects/reports-lib/src/lib/shared/loader/loader.component.html","../../../projects/reports-lib/src/lib/reports-lib.component.ts","../../../projects/reports-lib/src/lib/shared/page-size-selector/page-size-selector.component.ts","../../../projects/reports-lib/src/lib/shared/page-size-selector/page-size-selector.component.html","../../../projects/reports-lib/src/lib/shared/metadata/metadata.component.ts","../../../projects/reports-lib/src/lib/shared/metadata/metadata.component.html","../../../projects/reports-lib/src/lib/models/transaction-enquiry-report/transaction-enquiry.model.ts","../../../projects/reports-lib/src/lib/shared/search-filter/search-filter.component.ts","../../../projects/reports-lib/src/lib/shared/search-filter/search-filter.component.html","../../../projects/reports-lib/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.ts","../../../projects/reports-lib/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.html","../../../projects/reports-lib/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.ts","../../../projects/reports-lib/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.html","../../../projects/reports-lib/src/lib/reports-lib-routing.module.ts","../../../projects/reports-lib/src/lib/models/component-loading-states.ts","../../../projects/reports-lib/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.ts","../../../projects/reports-lib/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.html","../../../projects/reports-lib/src/lib/shared/shared.module.ts","../../../projects/reports-lib/src/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.ts","../../../projects/reports-lib/src/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.html","../../../projects/reports-lib/src/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.ts","../../../projects/reports-lib/src/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.html","../../../projects/reports-lib/src/lib/components/accounting-report/accounting-report.component.ts","../../../projects/reports-lib/src/lib/components/accounting-report/accounting-report.component.html","../../../projects/reports-lib/src/lib/reports-lib.module.ts","../../../projects/reports-lib/src/lib/models/branch-activity-report/branch-activity-send-report.ts","../../../projects/reports-lib/src/lib/models/branch-activity-report/branch-activity-send-report-request-domain-model.ts","../../../projects/reports-lib/src/public-api.ts","../../../projects/reports-lib/src/sachin9822-reports-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReportsLibService {\r\n\r\n constructor() { }\r\n}\r\n","\r\nimport {tap} from 'rxjs/operators';\r\nimport { IAppConfig } from '../models/app-config.model';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Observable , BehaviorSubject } from 'rxjs';\r\nimport * as _ from 'lodash';\r\n\r\n@Injectable()\r\nexport class ConfigService {\r\n private config: IAppConfig;\r\n\r\n onConfigChanged: BehaviorSubject<any>;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n load(url: string): Observable<any> {\r\n return this.http.get(url).pipe(tap((json: any) => {\r\n // Set the config\r\n this.config = json;\r\n\r\n // Create the behavior subject\r\n this.onConfigChanged = new BehaviorSubject(this.config);\r\n }));\r\n }\r\n\r\n get get(): IAppConfig {\r\n return this.config;\r\n }\r\n\r\n /**\r\n * Set the new config from given object\r\n *\r\n * @param config\r\n */\r\n setConfig(config: IAppConfig): void {\r\n // Merge the config\r\n this.config = _.merge({}, this.config, config);\r\n\r\n // Trigger the event\r\n this.onConfigChanged.next(this.config);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { AccGlDetailsEnquiryReportModel } from '../models/acc-gl-details-enquiry-report/accgl-details-enquiry-reportmodel';\r\nimport { Observable } from 'rxjs';\r\nimport { map, retry } from 'rxjs/operators';\r\nimport { BranchActivitySendReportRequestDomainModel } from '../models/branch-activity-report/branch-activity-send-report-request-domain-model';\r\nimport { BranchActivityReport } from '../models/branch-activity-report/branch-activity-send-report';\r\nimport { Product, User, Branch, TransactionData, PageLoadDataResponse, SearchCriteria } from '../models/transaction-enquiry-report/transaction-enquiry.model';\r\nimport { ConfigService } from './config.service';\r\nimport { BranchActivityReceiveReportModel } from '../models/branch-activity-receive-report/branch-activity-receive.model';\r\nimport { CancellationTransaction } from '../models/cancellation-transaction-report/cancellation-transaction.model';\r\nimport { AccountingReportModel } from '../models/accounting-report/accounting-report-model';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReportService {\r\n\r\n private reportServiceUrl: string;\r\n // private reportUrl = '/api/v1/Report';\r\n // private systemReportUrl = '/api/v1/CompanyConfiguration/SystemReports';\r\n\r\n constructor(private http: HttpClient, private config: ConfigService) {\r\n if (!this.config.get) {\r\n throw new Error('ConfigService is not initialized. Ensure APP_INITIALIZER ran before using ReportService.');\r\n }\r\n this.reportServiceUrl = this.config.get.reportServiceUrl;\r\n }\r\n\r\n public getAccGLDetailsReport(formattedDate: string | undefined, dateType: string): Observable<AccGlDetailsEnquiryReportModel> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccGlDetailsEnquiryReport/GetAccGLDetailsEnquiryReport/${formattedDate}/${dateType}`;\r\n return this.http.get<AccGlDetailsEnquiryReportModel>(apiPath);\r\n }\r\n\r\n getCompanyConfig(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetCompanyReportConfiguration`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getPayInAgents(sysUserId: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetAllPayInAgents/${sysUserId}`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getBranchByAgent(sysUserId: string, code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetBranchByAgent/${code}/${sysUserId}/BH`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n retry(2),\r\n map(response => response)\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getParams(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetBranchActivitySendReportParams`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n retry(2),\r\n map(response => response)\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getBranchActivityReport(data: BranchActivitySendReportRequestDomainModel | any): Observable<Record<string, BranchActivityReport[]>> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetBranchActivitySendReport`;\r\n return this.http.post(apiPath, data).pipe(map(response => {\r\n return <Record<string, BranchActivityReport[]>>response;\r\n }));\r\n }\r\n\r\n public getUserNameFromSessionStorage(): string {\r\n let fossilUserName = sessionStorage.getItem('fossilusername');\r\n let ezremitusername = sessionStorage.getItem('ezremitusername');\r\n if (fossilUserName) {\r\n return fossilUserName.replace(/^\"(.*)\"$/, '$1');\r\n } else {\r\n return ezremitusername.replace(/^\"(.*)\"$/, '$1');\r\n }\r\n }\r\n\r\n //Trasaction Enquiry Report Apis\r\n // API 1: Get initial page load data\r\n getPageLoadData(sysUserID: string): Observable<PageLoadDataResponse> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/pageLoadData/${sysUserID}`;\r\n return this.http.get(url).pipe(\r\n map(response => <PageLoadDataResponse>response)\r\n );\r\n }\r\n\r\n // API 2: Get branches by agent\r\n getBranchesByAgent(agentCode: string, sysUserID: string): Observable<Branch[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/branches/${agentCode}/${sysUserID}`;\r\n return this.http.get(url).pipe(\r\n map(response => <Branch[]>response)\r\n );\r\n }\r\n\r\n // API 3: Get products by agent\r\n getProductsByAgent(agentCode: string): Observable<Product[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/products/${agentCode}`;\r\n return this.http.get(url).pipe(\r\n map(response => <Product[]>response)\r\n );\r\n }\r\n\r\n // API 4: Get users by branch\r\n getUsersByBranch(businessPartnerCode: string, branchCode: string): Observable<User[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/users/${businessPartnerCode}/${branchCode}`;\r\n return this.http.get(url).pipe(\r\n map(response => <User[]>response)\r\n );\r\n }\r\n\r\n // API 5: Search transactions\r\n searchTransactions(request: SearchCriteria): Observable<TransactionData[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/search-transactions`;\r\n return this.http.post(url, request).pipe(\r\n map(response => <TransactionData[]>response)\r\n );\r\n }\r\n\r\n // Branch Activity Receive Report API\r\n getAllPayOutAgents(sysUserID:string):Observable<any[]>{\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/BranchActivityReceive/GetAllPayoutAgents/${sysUserID}`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n \r\n getBranchActivityReceiveParams(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/BranchActivityReceive/GetBranchActivityReceiveReportParams`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n \r\n getBranchActivityReceivePayoutAgentBranch(sysUserId: string, code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/BranchActivityReceive/GetBranchByPayoutAgent/${code}/${sysUserId}/BH`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n retry(2),\r\n map(response => response)\r\n return <any[]>response;\r\n }));\r\n }\r\n \r\n getBranchActivityReceiveReport(data:any):Observable < Record < string, BranchActivityReceiveReportModel[] >>{\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/BranchActivityReceive/GetBranchActivityReceiveReport`;\r\n return this.http.post(apiPath, data).pipe(map(response => {\r\n return <Record<string, BranchActivityReceiveReportModel[]>>response;\r\n }));\r\n }\r\n //Cancellation Transaction Report apis\r\n //Api 1\r\n loadDataforCancallation(sysUserId: string): Observable<any> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/CancellationTransactionReport/pageLoadData/${sysUserId}`;\r\n return this.http.get<any>(apiPath);\r\n }\r\n\r\n /** Api 2 - Get list of branches for an agent */\r\n getBranches(agentCode: string, sysUserId: string): Observable<Branch[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/CancellationTransactionReport/branches/${agentCode}/${sysUserId}`;\r\n return this.http.get<Branch[]>(apiPath).pipe(\r\n map(response => response || [])\r\n );\r\n }\r\n\r\n getCancellationReport(criteria: any): Observable<CancellationTransaction[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/CancellationTransactionReport/viewReport`;\r\n return this.http.post<CancellationTransaction[]>(url, criteria).pipe(\r\n map(response => response || [])\r\n );\r\n }\r\n\r\n\r\n \r\n // Accounting Report\r\n \r\n // Api 1 - get accounting report\r\n getAccountingReport(object: any): Observable<AccountingReportModel> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccountingReport/GetAccountingReport`;\r\n return this.http.post<AccountingReportModel>(apiPath, object).pipe(\r\n map(response => response || undefined)\r\n );\r\n }\r\n \r\n // Api 2 - get All clients\r\n getClientsForAccountingReport(sysUserID: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccountingReport/GetAllPayInAgents/${sysUserID}`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n \r\n // Api 3 - get branch by agent or client\r\n getBranchByAgentForAccountingReport(sysUserId: string, code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccountingReport/GetBranchByAgent/${code}/${sysUserId}/BH`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n retry(2),\r\n map(response => response)\r\n return <any[]>response;\r\n }));\r\n }\r\n \r\n // Api 4 - get All transaction types ( products )\r\n getTransactionTypesForAccountingReport(): Observable<Product[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/AccountingReport/getTransactionTypes`;\r\n return this.http.get(url).pipe(\r\n map(response => <Product[]>response)\r\n );\r\n }\r\n \r\n // Api 5 - get All currencies\r\n getAllCurrenciesForAccountingReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccountingReport/getAllCurrencies`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n \r\n // Api 6 - get All Transaction Status\r\n getAllTransactionStatusForAccountingReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccountingReport/GetAllTransactionStatus`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n \r\n // Api 7 - get All Countries\r\n getAllCountriesForAccountingReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccountingReport/GetAllCountries`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\nimport { formatDate } from '@angular/common';\r\n\r\ndeclare module 'jspdf' {\r\n interface jsPDF {\r\n autoTable: (options: any) => jsPDF;\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportService {\r\n\r\n private readonly pdfFontSize = 10;\r\n private readonly pdfLineHeight = 7;\r\n private readonly pdfLeftMargin = 15;\r\n public logoBase64: string | undefined;\r\n\r\n constructor() {\r\n this.loadImageAsBase64('assets/reports-lib/assets/images/XMLogo.png').then(base64 => {\r\n this.logoBase64 = base64;\r\n });\r\n }\r\n\r\n // ------------------------ Utility ------------------------\r\n private loadImageAsBase64(imagePath: string): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.crossOrigin = 'anonymous';\r\n img.src = imagePath;\r\n\r\n img.onload = () => {\r\n const scale = 6;\r\n const canvas = document.createElement('canvas');\r\n canvas.width = img.width * scale;\r\n canvas.height = img.height * scale;\r\n\r\n const ctx = canvas.getContext('2d');\r\n if (ctx) {\r\n ctx.scale(scale, scale);\r\n ctx.drawImage(img, 0, 0);\r\n const base64 = canvas.toDataURL('image/png', 1.0); // 1.0 = highest quality\r\n resolve(base64);\r\n } else {\r\n reject('Failed to get canvas context.');\r\n }\r\n };\r\n\r\n img.onerror = () => reject('Failed to load image: ' + imagePath);\r\n });\r\n }\r\n\r\n formatDate(value: any): string {\r\n const date = new Date(value);\r\n return isNaN(date.getTime()) ? '' :\r\n `${date.getDate().toString().padStart(2, '0')}/${(date.getMonth() + 1).toString().padStart(2, '0')}/${date.getFullYear()}`;\r\n }\r\n\r\n formatDateTime(date: Date): string {\r\n const day = date.getDate().toString().padStart(2, '0');\r\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\r\n const year = date.getFullYear();\r\n\r\n // 12-hour format\r\n let hours = date.getHours();\r\n const minutes = date.getMinutes().toString().padStart(2, '0');\r\n const ampm = hours >= 12 ? 'PM' : 'AM';\r\n hours = hours % 12;\r\n hours = hours ? hours : 12; // the hour '0' should be '12'\r\n const hoursStr = hours.toString().padStart(2, '0');\r\n\r\n return `${day}/${month}/${year} ${hoursStr}:${minutes} ${ampm}`;\r\n }\r\n\r\n generateReportMetadata(metadata: [string, string][]): [string, string][] {\r\n return metadata.filter(([_, value]) => value !== undefined && value !== null);\r\n }\r\n\r\n prepareExportTable(data: any[], columnDefs: any[], options: {\r\n excludeFields?: string[],\r\n currencyFields?: string[]\r\n } = {}): { headers: string[], rows: any[][] } {\r\n const { excludeFields = ['srno'], currencyFields = [] } = options;\r\n\r\n const filteredColumns = columnDefs.filter(col =>\r\n col.field &&\r\n !excludeFields.some(ex => col.field.toLowerCase().includes(ex)) &&\r\n !excludeFields.some(ex => col.headerName?.toLowerCase().includes(ex))\r\n );\r\n\r\n const headers = ['Sr No', ...filteredColumns.map(col => col.headerName || col.field)];\r\n\r\n const rows = data.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field];\r\n const fieldName = col.field?.toLowerCase() || '';\r\n\r\n // Handle various date field names\r\n if (fieldName.includes('transactiondateandtime') && value) {\r\n value = formatDate(value, 'dd/MM/yyyy hh:mm a', 'en-US');\r\n } else if ((fieldName.includes('date') || fieldName.includes('businessdate')) && value) {\r\n value = this.formatDate(value);\r\n }\r\n\r\n // Format currency fields\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n return value ?? '';\r\n });\r\n return [index + 1, ...rowData];\r\n });\r\n return { headers, rows };\r\n }\r\n\r\n // ------------------------ PDF Universal ------------------------\r\n async exportToPdfUniversal(title: string, metadata: [string, string][], headers: string[], rows: any[][], fileName: string): Promise<void> {\r\n let doc;\r\n if (fileName === \"Accounting-Report.pdf\") {\r\n doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: [700, 210] });\r\n } else {\r\n doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: [400, 210] });\r\n }\r\n\r\n const logoWidth = 38.4, logoHeight = 17.5, logoX = 15, logoY = 10;\r\n const pageWidth = doc.internal.pageSize.width;\r\n const titleY = 18;\r\n\r\n if (this.logoBase64) {\r\n doc.addImage(this.logoBase64, 'PNG', logoX, logoY, logoWidth, logoHeight);\r\n }\r\n\r\n doc.setFontSize(15);\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(title, pageWidth / 2, titleY, { align: 'center' });\r\n\r\n let currentY = titleY + 14;\r\n doc.setFontSize(this.pdfFontSize);\r\n metadata.forEach(([label, value], i) => {\r\n const y = currentY + i * this.pdfLineHeight;\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(label, this.pdfLeftMargin, y);\r\n const labelWidth = doc.getTextWidth(label + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(value, this.pdfLeftMargin + labelWidth, y);\r\n });\r\n currentY += metadata.length * this.pdfLineHeight + 5;\r\n\r\n const columnStyles: { [key: number]: any } = {};\r\n headers.forEach((_, i) => columnStyles[i] = { cellWidth: 'auto' });\r\n\r\n doc.autoTable({\r\n head: [headers],\r\n body: rows,\r\n startY: currentY,\r\n theme: 'grid',\r\n headStyles: {\r\n fillColor: [220, 220, 220], textColor: 0,\r\n fontStyle: 'bold', fontSize: 9, halign: 'center',\r\n },\r\n bodyStyles: { fontSize: 8, fillColor: [255, 255, 255], textColor: [0, 0, 0] },\r\n styles: { cellPadding: 2, overflow: 'linebreak', minCellHeight: 6 },\r\n columnStyles\r\n });\r\n\r\n doc.save(fileName);\r\n }\r\n\r\n // ------------------------ Excel Universal ------------------------\r\n exportToExcelUniversal(title: string, metadata: [string, string][], headers: string[], rows: any[][], fileName: string): void {\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet(title);\r\n\r\n let currentRow = 1;\r\n\r\n // Add image if available\r\n if (this.logoBase64) {\r\n const base64Data = this.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\r\n\r\n // Place image at top-left (e.g., A1:C4)\r\n worksheet.addImage(imageId, {\r\n tl: { col: 0, row: 0 },\r\n ext: { width: 145, height: 66 },\r\n editAs: 'oneCell'\r\n });\r\n }\r\n\r\n // Add title aligned in middle horizontally (merged across all columns)\r\n const titleRow = worksheet.getRow(currentRow);\r\n titleRow.getCell(4).value = title;\r\n titleRow.getCell(4).font = { bold: true, size: 16 };\r\n titleRow.getCell(4).alignment = { vertical: 'middle', horizontal: 'left' };\r\n\r\n const titleMergeEnd = String.fromCharCode(64 + headers.length);\r\n worksheet.mergeCells(`D${currentRow}:${titleMergeEnd}${currentRow}`);\r\n currentRow += 3; // Move past image space\r\n\r\n // Add metadata\r\n metadata.forEach(([label, value]) => {\r\n const row = worksheet.getRow(currentRow++);\r\n const cell = row.getCell(1);\r\n cell.value = {\r\n richText: [\r\n { text: `${label}: `, font: { bold: true } },\r\n { text: value ?? '', font: { bold: false } }\r\n ]\r\n };\r\n worksheet.mergeCells(`A${row.number}:${String.fromCharCode(64 + headers.length)}${row.number}`);\r\n });\r\n\r\n worksheet.addRow([]);\r\n currentRow++;\r\n\r\n // Add table header row\r\n const headerRow = worksheet.getRow(currentRow++);\r\n headers.forEach((header, i) => {\r\n const cell = headerRow.getCell(i + 1);\r\n cell.value = header;\r\n cell.font = { bold: true };\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'D9D9D9' } };\r\n cell.alignment = { vertical: 'middle', horizontal: 'center' };\r\n cell.border = {\r\n top: { style: 'thin' },\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n };\r\n });\r\n\r\n const dataStartRow = currentRow;\r\n rows.forEach(rowData => {\r\n const row = worksheet.getRow(currentRow++);\r\n rowData.forEach((value, i) => {\r\n const cell = row.getCell(i + 1);\r\n cell.value = value;\r\n cell.border = {\r\n top: { style: 'thin' },\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n };\r\n });\r\n });\r\n\r\n // Auto column widths\r\n for (let i = 1; i <= headers.length; i++) {\r\n let maxLength = headers[i - 1].length;\r\n for (let rowNum = dataStartRow; rowNum <= worksheet.lastRow!.number; rowNum++) {\r\n const val = worksheet.getRow(rowNum).getCell(i).value?.toString() || '';\r\n maxLength = Math.max(maxLength, val.length);\r\n }\r\n worksheet.getColumn(i).width = maxLength + 2;\r\n }\r\n\r\n workbook.xlsx.writeBuffer().then(buffer => {\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n });\r\n FileSaver.saveAs(blob, fileName);\r\n });\r\n }\r\n\r\n\r\n // ------------------------ CSV Universal ------------------------\r\n exportToCsvUniversal(title: string, metadata: [string, string][], headers: string[], rows: any[][], fileName: string): void {\r\n const metaRows = metadata.map(([k, v]) => [`${k}: ${v}`]);\r\n const csvContent = [\r\n [title],\r\n ...metaRows,\r\n [],\r\n headers,\r\n ...rows.map(row => row.map(value => `\"${value}\"`))\r\n ].map(e => e.join(',')).join('\\n');\r\n\r\n this.downloadFile(csvContent, fileName, 'text/csv');\r\n }\r\n\r\n private downloadFile(data: string, filename: string, type: string): void {\r\n const blob = new Blob([data], { type });\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(blob);\r\n link.setAttribute('download', filename);\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n\r\n}\r\n\r\n","// export-generic.service.ts\r\nimport { Injectable } from '@angular/core';\r\nimport jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\n\r\nexport interface ExportOptions {\r\n currencyFields?: string[];\r\n dateFields?: string[];\r\n dateFieldFormats?: {\r\n [field: string]: 'dd/MM/yyyy' | 'dd/MM/yyyy hh:mm a' | 'dd/MM/yyyy HH:mm' | string;\r\n };\r\n excludeFields?: string[];\r\n groupByKey?: boolean;\r\n specialDecimalFields?: {\r\n [field: string]: number;\r\n };\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GenericExportService {\r\n private logoBase64?: string;\r\n private readonly pdfFontSize = 10;\r\n private readonly pdfLineHeight = 7;\r\n private readonly pdfLeftMargin = 15;\r\n\r\n constructor() {\r\n this.loadImageAsBase64('assets/reports-lib/assets/images/XMLogo.png').then(base64 => {\r\n this.logoBase64 = base64;\r\n }).catch(() => {\r\n console.warn('Logo image failed to load');\r\n });\r\n }\r\n\r\n private loadImageAsBase64(imagePath: string): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.crossOrigin = 'anonymous';\r\n img.src = imagePath;\r\n img.onload = () => {\r\n const scale = 6;\r\n const canvas = document.createElement('canvas');\r\n canvas.width = img.width * scale;\r\n canvas.height = img.height * scale;\r\n const ctx = canvas.getContext('2d');\r\n if (ctx) {\r\n ctx.scale(scale, scale);\r\n ctx.drawImage(img, 0, 0);\r\n resolve(canvas.toDataURL('image/png', 1.0));\r\n } else {\r\n reject('Failed to get canvas context.');\r\n }\r\n };\r\n img.onerror = () => reject('Failed to load image: ' + imagePath);\r\n });\r\n }\r\n\r\n // ==================== PDF EXPORT ====================\r\n async exportToPdf({ title, metadata, columns, data, options = {} }: {\r\n title: string;\r\n metadata: [string, string][];\r\n columns: any[];\r\n data: any[] | Record<string, any[]>;\r\n options?: ExportOptions;\r\n }): Promise<void> {\r\n const doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: [400, 210] });\r\n const headers = ['Sr No', ...columns.map(c => c.headerName || c.field)];\r\n let rows: any[][] = [];\r\n\r\n if (options.groupByKey && !Array.isArray(data)) {\r\n for (const [group, items] of Object.entries(data)) {\r\n rows.push([{ content: group, colSpan: headers.length, styles: { halign: 'left', fontStyle: 'bold' } }]);\r\n rows.push(...this.prepareTableRows(items, columns, options));\r\n }\r\n } else {\r\n rows = this.prepareTableRows(data as any[], columns, options);\r\n }\r\n\r\n // Add logo at top left if available\r\n if (this.logoBase64) {\r\n doc.addImage(this.logoBase64, 'PNG', 15, 10, 38.4, 17.5);\r\n }\r\n\r\n // Title\r\n doc.setFontSize(15);\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(title, doc.internal.pageSize.width / 2, 18, { align: 'center' });\r\n\r\n // Metadata\r\n let currentY = 32;\r\n doc.setFontSize(this.pdfFontSize);\r\n metadata.forEach(([label, value], i) => {\r\n const y = currentY + i * this.pdfLineHeight;\r\n doc.setFont('helvetica', 'bold');\r\n const labelWithColon = label + ' :';\r\n doc.text(labelWithColon, this.pdfLeftMargin, y);\r\n const labelWidth = doc.getTextWidth(labelWithColon + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(value, this.pdfLeftMargin + labelWidth, y);\r\n });\r\n\r\n currentY += metadata.length * this.pdfLineHeight + 5;\r\n\r\n // Table styling\r\n const columnStyles: { [key: number]: any } = {};\r\n headers.forEach((_, i) => columnStyles[i] = { cellWidth: 'auto' });\r\n\r\n doc.autoTable({\r\n head: [headers],\r\n body: rows,\r\n startY: currentY,\r\n theme: 'grid',\r\n headStyles: {\r\n fillColor: [220, 220, 220],\r\n textColor: 0,\r\n fontStyle: 'bold',\r\n fontSize: 9,\r\n halign: 'center'\r\n },\r\n bodyStyles: {\r\n fontSize: 8,\r\n fillColor: [255, 255, 255],\r\n textColor: [0, 0, 0]\r\n },\r\n styles: {\r\n cellPadding: 2,\r\n overflow: 'linebreak',\r\n minCellHeight: 6\r\n },\r\n columnStyles\r\n });\r\n\r\n doc.save(title.replace(/\\s/g, '-') + '.pdf');\r\n }\r\n\r\n // ========== EXCEL EXPORT ==========\r\n async exportToExcel({\r\n title,\r\n metadata,\r\n columns,\r\n data,\r\n options = {}\r\n }: {\r\n title: string;\r\n metadata: [string, string][];\r\n columns: any[];\r\n data: any[] | Record<string, any[]>;\r\n options?: ExportOptions;\r\n }): Promise<void> {\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet(title);\r\n\r\n // Pre-calc\r\n const headerLabels = ['Sr No', ...columns.map(col => col.headerName || col.field)];\r\n const totalCols = headerLabels.length;\r\n const titleStartCol = 4; // Title in 4th Cell\r\n const titleColLetter = String.fromCharCode(64 + titleStartCol);\r\n const titleMergeEnd = String.fromCharCode(64 + totalCols);\r\n\r\n // --- Add logo in A1:C3, and make those cells tall\r\n if (this.logoBase64) {\r\n const base64Data = this.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\r\n worksheet.addImage(imageId, {\r\n tl: { col: 0, row: 0 },\r\n ext: { width: 145, height: 66 }\r\n });\r\n // Optionally, make rows 1-3 taller to fully display logo\r\n worksheet.getRow(1).height = 24;\r\n worksheet.getRow(2).height = 22;\r\n worksheet.getRow(3).height = 22;\r\n }\r\n\r\n // --- Title in D1 merged up to end\r\n worksheet.mergeCells(`${titleColLetter}1:${titleMergeEnd}1`);\r\n const titleCell = worksheet.getRow(1).getCell(titleStartCol);\r\n titleCell.value = title;\r\n titleCell.font = { bold: true, size: 16 };\r\n titleCell.alignment = { vertical: 'middle', horizontal: 'left' };\r\n\r\n // --- Leave A2:C3 empty (for image), place metadata starting at row 4\r\n let metaRowStart = 4;\r\n metadata.forEach(([label, value], idx) => {\r\n const row = worksheet.getRow(metaRowStart + idx);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: `${label} : `, font: { bold: true } },\r\n { text: value ?? '', font: { bold: false } }\r\n ]\r\n };\r\n worksheet.mergeCells(`A${row.number}:${titleMergeEnd}${row.number}`);\r\n });\r\n\r\n let currentRow = metaRowStart + metadata.length;\r\n\r\n worksheet.getRow(++currentRow).height = 6; // Blank for readability\r\n currentRow++;\r\n\r\n // Add headers and rest as before...\r\n const headerRow = worksheet.getRow(currentRow++);\r\n headerLabels.forEach((header, i) => {\r\n const cell = headerRow.getCell(i + 1);\r\n cell.value = header;\r\n cell.font = { bold: true };\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'D9D9D9' } };\r\n cell.alignment = { vertical: 'middle', horizontal: 'center' };\r\n cell.border = {\r\n top: { style: 'thin' },\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n };\r\n });\r\n\r\n // Data rows (handle grouping if present)\r\n let rowIdx = currentRow;\r\n if (options.groupByKey && !Array.isArray(data)) {\r\n for (const [group, items] of Object.entries(data)) {\r\n // Group header: bold, merged row\r\n const groupRow = worksheet.getRow(rowIdx++);\r\n groupRow.getCell(1).value = group;\r\n groupRow.font = { bold: true };\r\n worksheet.mergeCells(`A${groupRow.number}:${titleMergeEnd}${groupRow.number}`);\r\n\r\n // Data rows\r\n this.prepareTableRows(items, columns, options).forEach(rowData => {\r\n const dataRow = worksheet.getRow(rowIdx++);\r\n rowData.forEach((cellVal, cIdx) => {\r\n const cell = dataRow.getCell(cIdx + 1);\r\n cell.value = cellVal;\r\n cell.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n });\r\n });\r\n }\r\n } else {\r\n this.prepareTableRows(data as any[], columns, options).forEach(rowData => {\r\n const dataRow = worksheet.getRow(rowIdx++);\r\n rowData.forEach((cellVal, cIdx) => {\r\n const cell = dataRow.getCell(cIdx + 1);\r\n cell.value = cellVal;\r\n cell.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n });\r\n });\r\n }\r\n\r\n // --- Auto column widths\r\n for (let i = 1; i <= totalCols; i++) {\r\n let maxLength = 10; // minimum width\r\n worksheet.eachRow({ includeEmpty: true }, (row) => {\r\n const cell = row.getCell(i);\r\n if (cell.isMerged) return;\r\n let cellValue = '';\r\n if (cell.value == null) {\r\n cellValue = '';\r\n } else if (typeof cell.value === 'object' && 'richText' in cell.value) {\r\n cellValue = cell.value.richText.map(rt => rt.text).join('');\r\n } else {\r\n cellValue = cell.value.toString();\r\n }\r\n maxLength = Math.max(maxLength, cellValue.length);\r\n });\r\n // cap max width (so branch names don't explode sheet)\r\n const adjustedWidth = Math.min(maxLength, 50);\r\n worksheet.getColumn(i).width = adjustedWidth;\r\n }\r\n\r\n // --- Save workbook\r\n const buffer = await workbook.xlsx.writeBuffer();\r\n FileSaver.saveAs(\r\n new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }),\r\n title.replace(/\\s/g, '-') + '.xlsx'\r\n );\r\n }\r\n\r\n\r\n // ========== CSV EXPORT ==========\r\n exportToCsv({\r\n title,\r\n metadata,\r\n columns,\r\n data,\r\n options = {}\r\n }: {\r\n title: string;\r\n metadata: [string, string][];\r\n columns: any[];\r\n data: any[] | Record<string, any[]>;\r\n options?: ExportOptions;\r\n }): void {\r\n const headers = ['Sr No', ...columns.map(c => c.headerName || c.field)];\r\n const metaLines = metadata.map(([lbl, val]) => `${lbl}: ${val}`);\r\n let csv = [title, ...metaLines, '', headers.join(',')];\r\n\r\n if (options.groupByKey && !Array.isArray(data)) {\r\n for (const [group, items] of Object.entries(data)) {\r\n csv.push(group);\r\n this.prepareTableRows(items, columns, options).forEach(row => {\r\n csv.push(row.map(val => `\"${val}\"`).join(','));\r\n });\r\n }\r\n } else {\r\n this.prepareTableRows(data as any[], columns, options).forEach(row => {\r\n csv.push(row.map(val => `\"${val}\"`).join(','));\r\n });\r\n }\r\n\r\n // Download\r\n const blob = new Blob([csv.join('\\n')], { type: 'text/csv' });\r\n FileSaver.saveAs(blob, title.replace(/\\s/g, '-') + '.csv');\r\n }\r\n\r\n // ================= HELPER: TABLE ROW PREPARATION =================\r\n private prepareTableRows(data: any[], columns: any[], options: ExportOptions = {}): any[][] {\r\n const {\r\n excludeFields = [],\r\n currencyFields = [],\r\n dateFields = [],\r\n dateFieldFormats = {},\r\n specialDecimalFields = {}\r\n } = options;\r\n\r\n const filtered = columns.filter(c =>\r\n c.field && !excludeFields.some(f => c.field.toLowerCase().includes(f))\r\n );\r\n\r\n return data.map((row, idx) => ([\r\n idx + 1,\r\n ...filtered.map(col => {\r\n let value = row[col.field];\r\n\r\n // Format date fields with custom formats if specified\r\n if (col.field && (dateFields.includes(col.field) || col.field in dateFieldFormats)) {\r\n const format = dateFieldFormats[col.field] || 'dd/MM/yyyy';\r\n value = this.formatDateByFormat(value, format);\r\n }\r\n // Format special decimal fields with specific decimals\r\n else if (col.field && col.field in specialDecimalFields && value != null) {\r\n const decimals = specialDecimalFields[col.field];\r\n value = parseFloat(value).toFixed(decimals);\r\n }\r\n // Format regular currency fields with 3 decimals\r\n else if (col.field && currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n\r\n return value ?? '';\r\n })\r\n ]));\r\n }\r\n\r\n private formatDateByFormat(val: any, format: string): string {\r\n // Helper to pad single digits\r\n const pad = (n: number) => n.toString().padStart(2, '0');\r\n\r\n // Parse date for \"DD/MM/YYYY hh:mm AM/PM\" format manually\r\n if (typeof val === 'string' && /^\\d{2}\\/\\d{2}\\/\\d{4} \\d{2}:\\d{2} [AP]M$/.test(val)) {\r\n const parts = val.match(/^(\\d{2})\\/(\\d{2})\\/(\\d{4}) (\\d{2}):(\\d{2}) ([AP]M)$/);\r\n if (!parts) return '';\r\n let [, dd, mm, yyyy, hh, min, ampm] = parts;\r\n let hours = parseInt(hh, 10);\r\n if (ampm === 'PM' && hours !== 12) hours += 12;\r\n if (ampm === 'AM' && hours === 12) hours = 0;\r\n val = new Date(parseInt(yyyy, 10), parseInt(mm, 10) - 1, parseInt(dd, 10), hours, parseInt(min, 10));\r\n } else {\r\n val = new Date(val);\r\n }\r\n\r\n if (isNaN(val.getTime())) return '';\r\n\r\n const dt = val;\r\n\r\n switch (format) {\r\n case 'dd/MM/yyyy hh:mm a': { // 11/07/2025 10:56 PM\r\n let hours12 = dt.getHours() % 12 || 12;\r\n let ampm = dt.getHours() >= 12 ? 'PM' : 'AM';\r\n return `${pad(dt.getDate())}/${pad(dt.getMonth() + 1)}/${dt.getFullYear()} ${pad(hours12)}:${pad(dt.getMinutes())} ${ampm}`;\r\n }\r\n case 'dd/MM/yyyy HH:mm': { // 28/07/2025 13:08\r\n return `${pad(dt.getDate())}/${pad(dt.getMonth() + 1)}/${dt.getFullYear()} ${pad(dt.getHours())}:${pad(dt.getMinutes())}`;\r\n }\r\n case 'dd/MM/yyyy': { // 28/07/2025\r\n return `${pad(dt.getDate())}/${pad(dt.getMonth() + 1)}/${dt.getFullYear()}`;\r\n }\r\n default:\r\n return dt.toLocaleString();\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss']\r\n})\r\n\r\nexport class LoaderComponent {\r\n}\r\n","<div class=\"loaderContainer\">\r\n <div class=\"loading\">\r\n <div class=\"loading-bar\"></div>\r\n <div class=\"loading-bar\"></div>\r\n <div class=\"loading-bar\"></div>\r\n <div class=\"loading-bar\"></div>\r\n </div>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-reports-lib',\r\n template: `\r\n <p>\r\n reports-lib works!\r\n </p>\r\n `,\r\n styles: [\r\n ]\r\n})\r\nexport class ReportsLibComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-page-size-selector',\r\n templateUrl: './page-size-selector.component.html',\r\n styleUrls: ['./page-size-selector.component.scss']\r\n})\r\nexport class PageSizeSelectorComponent implements OnInit {\r\n\r\n @Input() pageSizeArray: (number | string)[] = [10, 15, 20, 30, 50, 100, 200, 'All'];\r\n @Input() defaultSize: string = '15';\r\n @Input() totalEntries: number = 0;\r\n @Input() gridApi: any;\r\n\r\n selectedPageSizeOption: string = '15';\r\n\r\n ngOnInit(): void {\r\n this.selectedPageSizeOption = this.defaultSize;\r\n this.applyPageSize(this.defaultSize);\r\n }\r\n\r\n onPageSizeChanged(value: string) {\r\n this.selectedPageSizeOption = value;\r\n this.applyPageSize(value);\r\n }\r\n\r\n private applyPageSize(value: string) {\r\n const size = value === 'All' ? this.totalEntries : Number(value);\r\n if (this.gridApi) {\r\n this.gridApi.paginationSetPageSize(size);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.gridApi = undefined;\r\n }\r\n\r\n}\r\n","<div class=\"d-flex align-items-center gap-2 entries-selecter-div\">\r\n <select class=\"form-select custom-height w-auto\" id=\"pageSize\" [(ngModel)]=\"selectedPageSizeOption\"\r\n (ngModelChange)=\"onPageSizeChanged($event)\">\r\n <option *ngFor=\"let size of pageSizeArray\" [value]=\"size\">{{ size }}</option>\r\n </select>\r\n <label class=\"entry-label\" for=\"pageSize\">Entries Per Page</label>\r\n</div>","import { Component, Input, OnInit, Output, EventEmitter} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-metadata',\r\n templateUrl: './metadata.component.html',\r\n styleUrls: ['./metadata.component.scss']\r\n})\r\nexport class MetadataComponent implements OnInit {\r\n @Input() metaDataOne:Record<string,string> ={};\r\n @Input() metaDataTwo:Record<string,string> = {};\r\n @Input()showmetaDataOne = true;\r\n @Input()showmetaDataTwo = false;\r\n @Input() reportName:string;\r\n @Output() searchEvent = new EventEmitter<string>();\r\n @Output() exportEvent = new EventEmitter<string>();\r\n searchText:any;\r\n exportFormats = [{formatName:\"Excel\",code:'excel'},{formatName:\"PDF\",code:'pdf'},{formatName:\"CSV\",code:'csv'}]\r\n selectedExportOption = 'excel';\r\n preserveOrder = (_a: any, _b: any): number => 0;\r\n constructor() {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log(\"Meta Data\")\r\n console.log(this.showmetaDataOne);\r\n console.log(this.showmetaDataTwo);\r\n }\r\n\r\n onSearch(){\r\n this.searchEvent.emit(this.searchText);\r\n }\r\n\r\n handleExport(){\r\n this.exportEvent.emit(this.selectedExportOption);\r\n }\r\n\r\n}\r\n","<section class=\"my-2\">\r\n <div class=\"title mb-3\">\r\n {{reportName}}\r\n </div>\r\n <div class=\"meta mb-2\">\r\n <div *ngIf=\"showmetaDataOne\" class=\"data-holder\">\r\n <tbody>\r\n <tr *ngFor=\"let item of metaDataOne | keyvalue:preserveOrder\">\r\n <td class=\"labl meta-td\">{{item.key}} :</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{item.value}}</span></td>\r\n </tr>\r\n </tbody>\r\n </div>\r\n <div *ngIf=\"showmetaDataTwo\" class=\"data-holder\">\r\n <tbody>\r\n <tr *ngFor=\"let item of metaDataTwo | keyvalue\">\r\n <td class=\"labl meta-td\">{{item.key}} :</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{item.value}}</span></td>\r\n </tr>\r\n </tbody>\r\n </div>\r\n </div>\r\n <div class=\"search-export\">\r\n <div class=\"searchBox\">\r\n <input type=\"text\" [(ngModel)]=\"searchText\" name=\"searchText\" class=\"search-input\"\r\n (ngModelChange)=\"onSearch()\" placeholder=\"Search...\" autocomplete=\"off\" />\r\n\r\n <button type=\"button\" class=\"btn btn-sm search-btn\" (click)=\"onSearch()\">\r\n <img src=\"assets/images/Search.svg\" alt=\"Search\" class=\"search-icon\" />\r\n </button>\r\n </div>\r\n\r\n <div class=\"export\">\r\n <div class=\"exp-options\">\r\n <ng-select [items]=\"exportFormats\" bindLabel=\"formatName\" bindValue=\"code\" placeholder=\"Select Format\"\r\n [(ngModel)]=\"selectedExportOption\" [clearable]=\"false\" class=\"export-selector\" required>\r\n </ng-select>\r\n </div>\r\n <button class=\"btn btn-report\" (click)=\"handleExport()\">Export</button>\r\n </div>\r\n </div>\r\n</section>","// transaction-enquiry.model.ts\r\n\r\nexport interface Client {\r\n businessPartnerCode: string;\r\n businessPartnerName: string;\r\n displayOrder: number;\r\n}\r\n\r\nexport interface Branch {\r\n businessPartnerBranch: string;\r\n businessPartnerBranch_CorrelationId: string;\r\n branchCode: string;\r\n bank: string;\r\n number: number;\r\n}\r\n\r\nexport interface User {\r\n userName: string;\r\n userId: number;\r\n number: number;\r\n}\r\n\r\nexport interface Currency {\r\n currencyCode: string;\r\n currency: string;\r\n number: string;\r\n od: number;\r\n}\r\n\r\nexport interface Product {\r\n productCode: string;\r\n productName: string;\r\n number: number;\r\n serviceTypeCode: string;\r\n}\r\n\r\nexport interface TransactionStatus {\r\n transactionStatus: string;\r\n number: number;\r\n}\r\n\r\nexport interface IdentityType {\r\n identityType: string;\r\n identityDescription: string;\r\n number: number;\r\n}\r\n\r\nexport interface UserReportDefaults {\r\n PrincipleUserName: string;\r\n ADPrincipleUserName: string;\r\n UserName: string;\r\n UserId: number;\r\n BranchCode: string;\r\n BranchName: string;\r\n BusinessDate: string;\r\n TillCode: string;\r\n LocalCurrency: string;\r\n TimeZone: string;\r\n ExecutionTime: string;\r\n StockEnquiryAll: number;\r\n StockEnquiryBranch: number;\r\n StockEnquiryExceptOwn: number;\r\n StockEnquiryExcludeLocalAmount: number;\r\n}\r\n\r\nexport interface CompanyReportConfig {\r\n Company: string;\r\n CompanyName: string;\r\n ReportLanguage: string;\r\n}\r\n\r\nexport interface TransactionData {\r\n product: string;\r\n id: string;\r\n transactionNumber: string;\r\n transactionReferenceNumber: string;\r\n businessDate: string;\r\n sendAgent: string;\r\n sendAgtBranch: string;\r\n recvAgent: string;\r\n rcvAgtBranch: string;\r\n sendName: string;\r\n sendIdType: string;\r\n sendIdNumber: string;\r\n benName: string;\r\n payOutCurrency: string;\r\n payOutAmount: number;\r\n commission: number;\r\n payInCurrency: string;\r\n payInAmount: number;\r\n transactionStatus: string;\r\n transactionUserId: number;\r\n payoutUserId: number;\r\n receiveAgentId: number;\r\n receiveBranchBusinessPartnerId: number;\r\n sendAgentCode: string;\r\n receiveAgentCode: string;\r\n sendBranchCode: string;\r\n receiveBranchCode: string;\r\n username: string;\r\n firstNames: string;\r\n amlStatus: string;\r\n transactionNote: string;\r\n cancellationBusinessDate: string;\r\n receiveAgentCountry: string;\r\n loyaltyCardNumber: string;\r\n personContacts: string;\r\n organizationContacts: string;\r\n sendAgentCountry: string;\r\n sendAgentId: number;\r\n chequeNumber: string;\r\n paidDate: string;\r\n forexAmount: number;\r\n payoutAgentName: string;\r\n authoriseDate: string;\r\n rejectedDate: string;\r\n note: string;\r\n stopPaymentDate: string;\r\n rejectedUser: string;\r\n}\r\n\r\nexport interface SearchCriteria {\r\n fromDate: string;\r\n toDate: string;\r\n client: string;\r\n branch: string;\r\n user: string;\r\n currency: string;\r\n product: string;\r\n transactionStatus: string;\r\n transactionNo: string;\r\n cardNo: string;\r\n idType: string;\r\n idNo: string;\r\n senderName: string;\r\n beneficiaryName: string;\r\n telNo: string;\r\n receiveAmount: number;\r\n branchName: string;\r\n country: string;\r\n}\r\n\r\nexport interface PageLoadDataResponse {\r\n clients: Client[];\r\n currencies: Currency[];\r\n transactionStatuses: TransactionStatus[];\r\n}\r\n\r\nexport enum ComponentLoadingState {\r\n Error = -1,\r\n Loading = 0,\r\n Complete = 1,\r\n}","import { Component, EventEmitter, Input, OnInit, OnDestroy, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ComponentLoadingState, Client, Branch, Currency, Product, TransactionStatus, User } from '../../models/transaction-enquiry-report/transaction-enquiry.model';\r\nimport { Subject } from 'rxjs';\r\nimport { forkJoin, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { ConfigService } from '../../services/config.service';\r\n\r\n\r\n@Component({\r\n selector: 'lib-search-filter',\r\n templateUrl: './search-filter.component.html',\r\n styleUrls: ['./search-filter.component.scss']\r\n})\r\n\r\nexport class SearchFilterComponent implements OnInit, OnDestroy {\r\n @Input() ReportName!: string;\r\n @Output() searchClicked = new EventEmitter<any>();\r\n\r\n searchForm!: FormGroup;\r\n formValidationError: boolean = false;\r\n private destroy$ = new Subject<void>();\r\n\r\n loadingState: ComponentLoadingState = ComponentLoadingState.Complete;\r\n ComponentLoadingState = ComponentLoadingState;\r\n hasSearched: boolean = false;\r\n private _errorMessage: string = '';\r\n\r\n currentUser: string = '';\r\n usernameMissing: boolean = false;\r\n token = sessionStorage.getItem('access_token');\r\n applicationType = 'ezremit';\r\n companyCode = 'BH';\r\n serviceUrl: string;\r\n public isOpen = false;\r\n\r\n clients1: Client[] = [];\r\n branches: Branch[] = [];\r\n users: User[] = [];\r\n currencies: Currency[] = [];\r\n products: Product[] = [];\r\n transactionStatuses: TransactionStatus[] = [];\r\n selectedStatuses: string[] = [];\r\n showStatusDropdown: boolean = false;\r\n visibleFieldKeys: string[] = [];\r\n params: any;\r\n countries: any[] = [];\r\n transactionProducts: any[] = [];\r\n dateType: any = 1;\r\n date: any;\r\n\r\n // Field visibility map, 'fromDate', 'toDate','product','userId','currency','transactionStatus','transactionNo'\r\n visibleFieldsMap: { [report: string]: string[] } = {\r\n 'Transaction Enquiry': ['client', 'fromDate', 'toDate', 'branch', 'product', 'currency', 'transactionStatus', 'transactionNo'],\r\n 'FC Ledger': ['client', 'fromDate', 'toDate', 'currency', 'product'],\r\n 'Branch Activity Send': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'currency', 'transactionStatus', 'sendCountry', 'receiveCountry'],\r\n 'ACC GL Details Enquiry': ['dateType', 'date'],\r\n 'Branch Activity Receive': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'currency', 'transactionStatus', 'sendCountry', 'receiveCountry'],\r\n 'Cancellation Transaction':['client','fromDate','toDate','branch','sendCountry','receiveCountry','product','receiveCurrency'],\r\n 'Accounting': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'currency', 'transactionStatus', 'sendCountry', 'receiveCountry'],\r\n\r\n // Add more report types here\r\n };\r\n\r\n get visibleFields(): string[] {\r\n return this.visibleFieldsMap[this.ReportName] || [];\r\n }\r\n\r\n isFieldVisible(field: string): boolean {\r\n return this.visibleFields.includes(field);\r\n }\r\n\r\n constructor(\r\n private reportService: ReportService,\r\n private fb: FormBuilder,\r\n private config: ConfigService\r\n ) {\r\n this.serviceUrl = this.config.get.serviceUrl;\r\n let fossilUser = sessionStorage.getItem('fossilusername');\r\n let ezremitUser = sessionStorage.getItem('ezremitusername');\r\n\r\n if (fossilUser) this.currentUser = fossilUser;\r\n else if (ezremitUser) this.currentUser = ezremitUser;\r\n else {\r\n this.usernameMissing = true;\r\n }\r\n this.currentUser = this.currentUser.replace(/^[\"'](.*)[\"']$/, '$1');\r\n }\r\n\r\n ngOnInit(): void {\r\n this.checkReport();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private checkReport() {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n this.initializeForm();\r\n this.subscribeToDateChanges();\r\n this.loadInitialData();\r\n }\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n }\r\n if (this.ReportName == \"ACC GL Details Enquiry\") {\r\n this.initializeForm();\r\n }\r\n if(this.ReportName == \"Cancellation Transaction\"){\r\n this.initializeForm();\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n }\r\n if (this.ReportName === \"Branch Activity Receive\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n }\r\n if (this.ReportName == \"Accounting\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n }\r\n }\r\n\r\n loadInitialData() {\r\n if (this.ReportName == 'Transaction Enquiry') {\r\n this.loadInitialDatafortxnEnquiry();\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n this.loadInitialDataforBranchActivitySend();\r\n }\r\n\r\n if (this.ReportName === \"Branch Activity Receive\") {\r\n this.loadInitialDataforBranchActivityReceive();\r\n }\r\n if(this.ReportName == \"Cancellation Transaction\"){\r\n this.loadInitialDataForCancellationReport();\r\n }\r\n if (this.ReportName == \"Accounting\") {\r\n this.loadInitialDataforAccounting();\r\n }\r\n\r\n }\r\n\r\n\r\n private initializeForm(): void {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n this.searchForm = this.fb.group(\r\n {\r\n client: [null, Validators.required],\r\n fromDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n toDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n branch: [null, Validators.required],\r\n userId: ['-1'],\r\n currency: ['All'],\r\n product: [null, Validators.required],\r\n transactionStatus: [['All'], Validators.required],\r\n transactionNo: [''],\r\n cardNo: [''],\r\n idType: [''],\r\n idNo: [''],\r\n senderName: [''],\r\n beneficiaryName: [''],\r\n telNo: [''],\r\n receiveAmount: [''],\r\n branchName: [''],\r\n country: [''],\r\n },\r\n );\r\n }\r\n\r\n if (this.ReportName == \"ACC GL Details Enquiry\") {\r\n this.searchForm = this.fb.group(\r\n {\r\n date: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n dateType: [1, Validators.required]\r\n });\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n this.searchForm = this.fb.group(\r\n {\r\n client: [null, Validators.required],\r\n fromDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n toDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n branch: [null, Validators.required],\r\n currency: ['All'],\r\n product: ['All', Validators.required],\r\n transactionStatus: [['All'], Validators.required],\r\n sendCountry: ['All'],\r\n receiveCountry: ['All']\r\n }\r\n );\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Receive\") {\r\n this.searchForm = this.fb.group(\r\n {\r\n client: [null, Validators.required],\r\n fromDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n toDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n branch: [null, Validators.required],\r\n currency: ['All'],\r\n product: ['All', Validators.required],\r\n transactionStatus: [['All'], Validators.required],\r\n sendCountry: ['All'],\r\n receiveCountry: ['All']\r\n }\r\n );\r\n }\r\n\r\n if(this.ReportName == \"Cancellation Transaction\"){\r\n this.searchForm = this.fb.group(\r\n {\r\n client: [null, Validators.required],\r\n fromDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n toDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n branch: [null, Validators.required],\r\n sendCountry: [null],\r\n receiveCountry: [null],\r\n product: [null, Validators.required],\r\n receiveCurrency: [null, Validators.required],\r\n }\r\n );\r\n }\r\n\r\n if (this.ReportName == \"Accounting\") {\r\n this.searchForm = this.fb.group(\r\n {\r\n client: [null, Validators.required],\r\n fromDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n toDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n branch: [null, Validators.required],\r\n currency: ['All'],\r\n product: ['All', Validators.required],\r\n transactionStatus: [['All'], Validators.required],\r\n sendCountry: ['All'],\r\n receiveCountry: ['All']\r\n }\r\n );\r\n }\r\n }\r\n\r\n loadInitialDataforBranchActivitySend() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n forkJoin({\r\n params: this.reportService.getParams().pipe(\r\n catchError(err => {\r\n console.error('Error loading params', err);\r\n return of(null);\r\n })\r\n ),\r\n clients: this.reportService.getPayInAgents(this.currentUser).pipe(\r\n map((clients: any[]): Client[] =>\r\n clients.map((client, index) => ({\r\n businessPartnerName: client.agent,\r\n businessPartnerCode: client.code,\r\n displayOrder: index // or use some value from the API if available\r\n }))\r\n ),\r\n catchError(err => {\r\n console.error('Error loading clients', err);\r\n return of([]);\r\n })\r\n )\r\n }).subscribe(\r\n {\r\n next: ({ params, clients }) => {\r\n this.params = params;\r\n this.clients1 = clients;\r\n // this.clientsData = [...clients];\r\n this.countries = [...params?.countries]\r\n this.currencies = [...params?.currencies];\r\n this.transactionStatuses = [...params?.transactionStatusTypes];\r\n this.transactionProducts = [...params?.transactionProductTypes];\r\n if (!sessionStorage.getItem('fossilusername') && this.clients1?.length) {\r\n this.selectClient(this.clients1[0].businessPartnerCode);\r\n }\r\n // this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n error: err => {\r\n // Occurs only if an inner catchError still rethrows\r\n console.error('Unexpected forkJoin error', err);\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n this.onClientSelected();\r\n }\r\n }\r\n );\r\n }\r\n\r\n private async loadInitialDatafortxnEnquiry(): Promise<void> {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n try {\r\n const data = await this.reportService\r\n .getPageLoadData(this.currentUser)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n\r\n if (data) {\r\n this.clients1 = data.clients || [];\r\n this.currencies = data.currencies || [];\r\n this.transactionStatuses = (data.transactionStatuses || []).filter(\r\n ts => ts.transactionStatus !== ''\r\n );\r\n if (\r\n !this.transactionStatuses.some(\r\n s => s.transactionStatus === 'All'\r\n )\r\n ) {\r\n this.transactionStatuses.unshift({\r\n transactionStatus: 'All',\r\n } as TransactionStatus);\r\n }\r\n\r\n if (this.clients1.length === 1) {\r\n this.searchForm.patchValue({\r\n client: this.clients1[0].businessPartnerCode,\r\n });\r\n await this.onClientChange();\r\n }\r\n }\r\n\r\n this.loadingState = ComponentLoadingState.Complete;\r\n } catch (error) {\r\n this.errorMessage = 'Failed to load initial data';\r\n this.loadingState = ComponentLoadingState.Error;\r\n }\r\n }\r\n\r\n loadInitialDataforBranchActivityReceive() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n forkJoin({\r\n params: this.reportService.getBranchActivityReceiveParams()\r\n .pipe(catchError(err => {\r\n console.error('Error loading params', err);\r\n return of(null);\r\n })\r\n ),\r\n payoutAgents: this.reportService.getAllPayOutAgents(this.currentUser)\r\n .pipe(map((clients: any[]): Client[] =>\r\n clients.map((client, index) => ({\r\n businessPartnerName: client.agent,\r\n businessPartnerCode: client.code,\r\n displayOrder: client.number\r\n }))\r\n ), catchError(err => {\r\n return of([]);\r\n }))\r\n }).subscribe({\r\n next: ({ params, payoutAgents }) => {\r\n this.params = params;\r\n this.clients1 = payoutAgents;\r\n // this.clientsData = [...clients];\r\n this.countries = [...params?.countries]\r\n this.currencies = [...params?.currencies];\r\n this.transactionStatuses = [...params?.transactionStatusTypes];\r\n this.transactionProducts = [...params?.transactionProductTypes];\r\n if (!sessionStorage.getItem('fossilusername') && this.clients1?.length) {\r\n this.selectClient(this.clients1[0].businessPartnerCode);\r\n }\r\n // this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n error: err => {\r\n // Occurs only if an inner catchError still rethrows\r\n console.error('Unexpected forkJoin error', err);\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n this.onClientSelected();\r\n }\r\n })\r\n }\r\n private async loadInitialDataForCancellationReport(): Promise<void> {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n\r\n try {\r\n const data = await this.reportService\r\n .loadDataforCancallation(this.currentUser)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n\r\n if (data) {\r\n this.countries = data.countries ?? [];\r\n this.clients1 = (data.payInAgents ?? []).map((agent, index) => ({\r\n businessPartnerName: agent.agent,\r\n businessPartnerCode: agent.code,\r\n displayOrder: index\r\n }));\r\n this.products = (data.productTypes ?? []).map((pt, index) => ({\r\n productCode: pt.productCode,\r\n productName: pt.name,\r\n number: index,\r\n serviceTypeCode: pt.serviceTypeCode || ''\r\n }));\r\n this.currencies = data.currencies ?? [];\r\n\r\n this.searchForm.patchValue({\r\n product: this.products[0]?.productCode,\r\n receiveCountry: this.countries[0]?.country,\r\n sendCountry: this.countries[0]?.country,\r\n receiveCurrency: this.currencies[0]?.currencyCode\r\n });\r\n\r\n // If only one client, preselect\r\n if (this.clients1.length === 1) {\r\n this.searchForm.patchValue({\r\n client: this.clients1[0].businessPartnerCode\r\n });\r\n await this.onClientChange();\r\n }\r\n } else {\r\n // No data case\r\n this.countries = [];\r\n this.clients1 = [];\r\n this.products = [];\r\n this.currencies = [];\r\n }\r\n\r\n this.loadingState = ComponentLoadingState.Complete;\r\n\r\n } catch (error) {\r\n console.error('Error loading cancellation report data', error);\r\n this.errorMessage = 'Failed to load cancellation report data';\r\n this.loadingState = ComponentLoadingState.Error;\r\n }\r\n }\r\n\r\n\r\n \r\n loadInitialDataforAccounting() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n \r\n forkJoin({\r\n clients: this.reportService.getClientsForAccountingReport(this.currentUser).pipe(\r\n map((clients: any[]): Client[] =>\r\n clients.map((client, index) => ({\r\n businessPartnerName: client.agent,\r\n businessPartnerCode: client.code,\r\n displayOrder: index\r\n }))\r\n ),\r\n catchError(err => {\r\n console.error('Error loading clients', err);\r\n return of([]);\r\n })\r\n ),\r\n products: this.reportService.getTransactionTypesForAccountingReport().pipe(\r\n catchError(err => {\r\n console.error('Error loading transaction types', err);\r\n return of([]);\r\n })\r\n ),\r\n currencies: this.reportService.getAllCurrenciesForAccountingReport().pipe(\r\n catchError(err => {\r\n console.error('Error loading currencies', err);\r\n return of([]);\r\n })\r\n ),\r\n statuses: this.reportService.getAllTransactionStatusForAccountingReport().pipe(\r\n catchError(err => {\r\n console.error('Error loading statuses', err);\r\n return of([]);\r\n })\r\n ),\r\n countries: this.reportService.getAllCountriesForAccountingReport().pipe(\r\n catchError(err => {\r\n console.error('Error loading countries', err);\r\n return of([]);\r\n })\r\n )\r\n }).subscribe({\r\n next: ({ clients, products, currencies, statuses, countries }) => {\r\n this.clients1 = clients;\r\n this.transactionProducts = products;\r\n this.currencies = currencies;\r\n this.transactionStatuses = statuses;\r\n this.countries = countries;\r\n \r\n // Preselect first client if none chosen\r\n if (!sessionStorage.getItem('fossilusername') && this.clients1?.length) {\r\n this.selectClient(this.clients1[0].businessPartnerCode);\r\n }\r\n },\r\n error: err => {\r\n console.error('Unexpected forkJoin error in Accounting init', err);\r\n this.loadingState = ComponentLoadingState.Error;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n this.onClientSelected();\r\n }\r\n });\r\n \r\n }\r\n\r\n\r\n\r\n private subscribeToDateChanges(): void {\r\n this.searchForm.get('fromDate')?.valueChanges.subscribe(fromDateStr => {\r\n const toDateControl = this.searchForm.get('toDate');\r\n const toDateStr = toDateControl?.value;\r\n if (!fromDateStr || !toDateStr) return;\r\n const fromDate = new Date(fromDateStr);\r\n const toDate = new Date(toDateStr);\r\n\r\n const maxToDate = new Date(fromDate);\r\n maxToDate?.setDate(fromDate.getDate() + 31);\r\n if (toDate.setHours(0, 0, 0, 0) > maxToDate.setHours(0, 0, 0, 0) || toDate.setHours(0, 0, 0, 0) < fromDate.setHours(0, 0, 0, 0)) {\r\n maxToDate.setHours(12, 0, 0, 0);\r\n toDateControl?.patchValue(maxToDate.toISOString().split(\"T\")[0]);\r\n console.log(toDateControl);\r\n }\r\n });\r\n\r\n this.searchForm.get('toDate')?.valueChanges.subscribe(toDateStr => {\r\n const fromDateControl = this.searchForm.get('fromDate');\r\n const fromDateStr = fromDateControl?.value;\r\n if (!toDateStr || !fromDateStr) return;\r\n const toDate = new Date(toDateStr);\r\n const fromDate = new Date(fromDateStr);\r\n\r\n const minFromDate = new Date(toDate);\r\n minFromDate?.setDate(toDate.getDate() - 31);\r\n if (fromDate.setHours(0, 0, 0, 0) < minFromDate.setHours(0, 0, 0, 0)) {\r\n minFromDate.setHours(12, 0, 0, 0);\r\n fromDateControl?.patchValue(minFromDate.toISOString().split(\"T\")[0]);\r\n }\r\n });\r\n }\r\n\r\n\r\n async onClientChange(): Promise<void> {\r\n\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n if (!selectedClient) return;\r\n\r\n this.searchForm.patchValue({ branch: '', userId: '' });\r\n this.branches = [];\r\n this.products = [];\r\n this.users = [];\r\n\r\n try {\r\n await Promise.all([\r\n this.loadBranchesByAgent(selectedClient),\r\n this.loadProductsByAgent(selectedClient),\r\n ]);\r\n this.searchForm.patchValue({ product: 'All' });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n } catch (err) {\r\n this.errorMessage = 'Failed to load branch/product';\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n if (!selectedClient) return;\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.reportService.getBranchByAgent(this.currentUser, selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n if (sessionStorage.getItem(\"ezremitusername\")) {\r\n const index = this.branches.findIndex((branch) => branch.branchCode === \"All\");\r\n if (index == -1) {\r\n this.searchForm.controls['branch'].setValue(this.branches[0].branchCode)\r\n } else {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n }\r\n this.loadingState = ComponentLoadingState.Complete;\r\n\r\n }\r\n });\r\n }\r\n\r\n if (this.ReportName === \"Branch Activity Receive\") {\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n if (!selectedClient) return;\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.reportService.getBranchActivityReceivePayoutAgentBranch(this.currentUser, selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n if (sessionStorage.getItem(\"ezremitusername\")) {\r\n const index = this.branches.findIndex((branch) => branch.branchCode === \"All\");\r\n if (index == -1) {\r\n this.searchForm.controls['branch'].setValue(this.branches[0].branchCode)\r\n } else {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n }\r\n this.loadingState = ComponentLoadingState.Complete;\r\n\r\n }\r\n });\r\n }\r\n\r\n if (this.ReportName == \"Cancellation Transaction\") {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n \r\n try {\r\n const data = await this.reportService\r\n .getBranches(selectedClient, this.currentUser)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n \r\n if (data) {\r\n this.branches = data;\r\n this.searchForm.patchValue({branch: this.branches[0].branchCode});\r\n }\r\n this.loadingState = ComponentLoadingState.Complete;\r\n \r\n } catch (error) {\r\n console.error('Failed to load branches', error);\r\n this.errorMessage = 'Failed to load branch data';\r\n this.loadingState = ComponentLoadingState.Error;\r\n }\r\n }\r\n\r\n\r\n \r\n // accounting report\r\n \r\n if (this.ReportName == \"Accounting\") {\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n if (!selectedClient) return;\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.reportService.getBranchByAgentForAccountingReport(this.currentUser, selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n if (sessionStorage.getItem(\"ezremitusername\")) {\r\n const index = this.branches.findIndex((branch) => branch.branchCode === \"All\");\r\n if (index == -1) {\r\n this.searchForm.controls['branch'].setValue(this.branches[0].branchCode)\r\n } else {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n }\r\n if (sessionStorage.getItem(\"fossilusername\")) {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n this.loadingState = ComponentLoadingState.Complete;\r\n \r\n }\r\n });\r\n }\r\n }\r\n\r\n private async loadBranchesByAgent(agentCode: string): Promise<void> {\r\n const branches = await this.reportService\r\n .getBranchesByAgent(agentCode, this.currentUser)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n this.branches = branches || [];\r\n\r\n if (this.branches.length === 1) {\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n // await this.loadUsersByBranch(agentCode, this.branches[0].branchCode);\r\n } else if (this.branches.some(b => b.branchCode === 'All')) {\r\n this.searchForm.patchValue({ branch: 'All' });\r\n // await this.loadUsersByBranch(agentCode, 'All');\r\n } else {\r\n this.searchForm.patchValue({ branch: '' });\r\n this.users = [];\r\n }\r\n }\r\n\r\n private async loadProductsByAgent(agentCode: string): Promise<void> {\r\n const products = await this.reportService\r\n .getProductsByAgent(agentCode)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n this.products = products || [];\r\n }\r\n\r\n async onBranchChange(): Promise<void> {\r\n \r\n }\r\n\r\n onSearch(): void {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n\r\n if (this.ReportName == \"ACC GL Details Enquiry\") {\r\n const modal = {\r\n selectedDateType: this.searchForm.controls[\"dateType\"]?.value,\r\n selectedDate: this.searchForm.controls[\"date\"]?.value\r\n }\r\n this.searchClicked.emit(modal);\r\n }\r\n\r\n if (this.ReportName === \"Branch Activity Receive\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n\r\n if(this.ReportName == \"Cancellation Transaction\"){\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n\r\n if (this.ReportName == \"Accounting\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n // this.markFormGroupTouched(this.searchForm);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n }\r\n\r\n private buildSearchCriteria(): any {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n const formValue = this.searchForm.value;\r\n return {\r\n bank: formValue.client,\r\n fromDate: this.toIsoFormat(formValue.fromDate),\r\n toDate: this.toIsoFormat(formValue.toDate),\r\n branch: formValue.branch,\r\n user: formValue.userId || '-1',\r\n currency: formValue.currency,\r\n product: formValue.product,\r\n status: this.selectedStatuses.includes('All') ? [''] : this.selectedStatuses,\r\n transactionNo: (formValue.transactionNo || '').trim(),\r\n cardNo: formValue.cardNo || '',\r\n idType: formValue.idType || '',\r\n idNo: formValue.idNo || '',\r\n senderName: formValue.senderName || '',\r\n beneficiaryName: formValue.beneficiaryName || '',\r\n telNo: formValue.telNo || '',\r\n payoutAmount: formValue.receiveAmount || '',\r\n branchName: formValue.branchName || '',\r\n company: this.companyCode || '',\r\n country: formValue.country || '',\r\n sysUserID: this.currentUser,\r\n };\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n const formValue = this.searchForm.value;\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser\r\n }\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Receive\") {\r\n const formValue = this.searchForm.value;\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser\r\n }\r\n }\r\n\r\n if(this.ReportName == \"Cancellation Transaction\"){\r\n const formValue = this.searchForm.value;\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser\r\n }\r\n }\r\n\r\n if (this.ReportName == \"Accounting\") {\r\n const formValue = this.searchForm.value;\r\n return {\r\n modal: {\r\n ...formValue,\r\n fromDate: this.toIsoFormat(formValue.fromDate),\r\n toDate: this.toIsoFormat(formValue.toDate),\r\n },\r\n sysUserID: this.currentUser\r\n };\r\n\r\n }\r\n }\r\n\r\n toIsoFormat(dateInput: any): string | undefined {\r\n if (!dateInput) return undefined;\r\n\r\n // Handle { year, month, day }\r\n if (\r\n typeof dateInput === 'object' &&\r\n dateInput.year &&\r\n dateInput.month &&\r\n dateInput.day\r\n ) {\r\n const year = dateInput.year;\r\n const month = String(dateInput.month).padStart(2, '0');\r\n const day = String(dateInput.day).padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n // Handle JS Date object\r\n if (dateInput instanceof Date) {\r\n if (isNaN(dateInput.getTime())) return undefined;\r\n const year = dateInput.getFullYear();\r\n const month = String(dateInput.getMonth() + 1).padStart(2, '0');\r\n const day = String(dateInput.getDate()).padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n // Handle dd/MM/yyyy string\r\n if (typeof dateInput === 'string' && dateInput.includes('/')) {\r\n const parts = dateInput.split('/');\r\n if (parts.length === 3) {\r\n const [day, month, year] = parts;\r\n return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;\r\n }\r\n }\r\n\r\n // Handle ISO string (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss.sssZ)\r\n if (typeof dateInput === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(dateInput)) {\r\n // Use only date part if full ISO string\r\n return dateInput.substring(0, 10);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n onOpen() {\r\n this.isOpen = true;\r\n }\r\n onClose() {\r\n this.isOpen = false;\r\n }\r\n\r\n\r\n get errorMessage(): string {\r\n return this._errorMessage;\r\n }\r\n\r\n set errorMessage(value: string) {\r\n this._errorMessage = value;\r\n }\r\n\r\n get isLoading(): boolean {\r\n return this.loadingState === ComponentLoadingState.Loading;\r\n }\r\n\r\n get isError(): boolean {\r\n return this.loadingState === ComponentLoadingState.Error;\r\n }\r\n\r\n selectClient(client: any) {\r\n this.searchForm.controls[\"client\"].setValue(client);\r\n this.searchForm.controls[\"branch\"].setValue(null);\r\n this.onAgentSelected(client);\r\n }\r\n\r\n onAgentSelected(code: any) {\r\n if (this.searchForm.controls['client'].value === null) {\r\n return;\r\n }\r\n this.searchForm.controls['branch'].patchValue(null);\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n this.reportService.getBranchByAgent(this.currentUser, code).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n // this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n complete: () => {\r\n if (sessionStorage.getItem(\"ezremitusername\")) {\r\n const index = this.branches.findIndex((branch) => branch.branchCode === \"All\");\r\n if (index == -1) {\r\n this.searchForm.controls['branch'].setValue(this.branches[0].branchCode)\r\n } else {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n }\r\n if (sessionStorage.getItem(\"fossilusername\")) {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n // this.loadingState = ComponentLoadingStates.Complete;\r\n\r\n }\r\n });\r\n }\r\n\r\n if (this.ReportName === \"Branch Activity Receive\") {\r\n this.reportService.getBranchActivityReceivePayoutAgentBranch(this.currentUser, code).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n // this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n complete: () => {\r\n if (sessionStorage.getItem(\"ezremitusername\")) {\r\n const index = this.branches.findIndex((branch) => branch.branchCode === \"All\");\r\n if (index == -1) {\r\n this.searchForm.controls['branch'].setValue(this.branches[0].branchCode)\r\n } else {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n }\r\n if (sessionStorage.getItem(\"fossilusername\")) {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n // accounting report \r\n\r\n if (this.ReportName == \"Accounting\") {\r\n this.reportService.getBranchByAgentForAccountingReport(this.currentUser, code).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n // this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n complete: () => {\r\n if (sessionStorage.getItem(\"ezremitusername\")) {\r\n const index = this.branches.findIndex((branch) => branch.branchCode === \"All\");\r\n if (index == -1) {\r\n this.searchForm.controls['branch'].setValue(this.branches[0].branchCode)\r\n } else {\r\n this.searchForm.controls['branch'].setValue('All');\r\n }\r\n }\r\n // this.loadingState = ComponentLoadingStates.Complete;\r\n\r\n }\r\n });\r\n }\r\n }\r\n\r\n onClientSelected() {\r\n this.searchForm.get('client')?.valueChanges.subscribe((val) => {\r\n val = this.searchForm.get('client')?.value;\r\n this.onAgentSelected(val);\r\n })\r\n }\r\n}\r\n","<h6 class=\"Breadcrumb\">\r\n <a class=\"BreadCrumbLink\" [routerLink]=\"['/reports']\">\r\n <h1>Reports</h1>\r\n </a>\r\n <a href=\"BreadCrumbLink\"></a>\r\n <span class=\"BreadCrumbArrow\"></span>\r\n <a class=\"BreadCrumbLink\">\r\n <h2>{{ ReportName }}</h2>\r\n </a>\r\n</h6>\r\n\r\n<app-loader *ngIf=\"loadingState === ComponentLoadingState.Loading\"></app-loader>\r\n<section>\r\n <form [formGroup]=\"searchForm\" (ngSubmit)=\"onSearch()\">\r\n <div class=\"row\">\r\n <div class=\"col-custom-10-5\">\r\n <div class=\"filter-grid\">\r\n\r\n <!-- Dynamically render filters in order -->\r\n <ng-container *ngFor=\"let field of visibleFields\">\r\n <ng-container [ngSwitch]=\"field\">\r\n\r\n <!-- Client -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'client'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Client<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"clients1\" bindLabel=\"businessPartnerName\" bindValue=\"businessPartnerCode\"\r\n placeholder=\"Select Client\" [clearable]=\"false\" formControlName=\"client\" required\r\n (change)=\"onClientChange()\" (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span [title]=\"item.businessPartnerName\">{{ item.businessPartnerName }}</span>\r\n </ng-template>\r\n\r\n </ng-select>\r\n\r\n <!-- <ng-select [items]=\"clients1\" bindLabel=\"businessPartnerName\" bindValue=\"businessPartnerCode\"\r\n placeholder=\"Select Client\" [clearable]=\"false\" formControlName=\"client\" required\r\n (change)=\"onClientChange()\" (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n </ng-select> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Branch -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'branch'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Branch<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"branches\" bindLabel=\"businessPartnerBranch\" bindValue=\"branchCode\"\r\n placeholder=\"Select Branch\" [clearable]=\"false\" formControlName=\"branch\" required\r\n (change)=\"onBranchChange()\" (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span [title]=\"item.businessPartnerBranch\">{{ item.businessPartnerBranch }}</span>\r\n </ng-template>\r\n\r\n </ng-select>\r\n\r\n <!-- <ng-select [items]=\"branches\" bindLabel=\"businessPartnerBranch\" bindValue=\"branchCode\"\r\n placeholder=\"Select Branch\" [clearable]=\"false\" formControlName=\"branch\" required\r\n (change)=\"onBranchChange()\" (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n </ng-select> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- From Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'fromDate'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">From Date<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <div class=\"input-group date-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #fromDateInput=\"ngbDatepicker\" formControlName=\"fromDate\" autocomplete=\"off\" />\r\n <button class=\"input-group-button cal\" (click)=\"fromDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- To Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'toDate'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">To Date<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <div class=\"input-group date-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #toDateInput=\"ngbDatepicker\" formControlName=\"toDate\" autocomplete=\"off\" />\r\n <button class=\"input-group-button cal\" (click)=\"toDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Product -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'product'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Product</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"products\" bindLabel=\"productName\" bindValue=\"productCode\"\r\n placeholder=\"Select Product\" [clearable]=\"false\" formControlName=\"product\" (open)=\"onOpen()\"\r\n (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- User -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'userId'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">User<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"users\" bindLabel=\"userName\" bindValue=\"userId\" placeholder=\"Select User\"\r\n [clearable]=\"false\" formControlName=\"userId\" required (open)=\"onOpen()\" (close)=\"onClose()\"\r\n [searchable]=\"isOpen\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Currency -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'currency'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Currency</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"currencies\" bindValue=\"currencyCode\" placeholder=\"Select Currency\" [clearable]=\"false\"\r\n formControlName=\"currency\" (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n \r\n <!-- Template for dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div [title]=\"item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' - ' + item.currency)\">\r\n {{ item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' / ' + item.currency) }}\r\n </div>\r\n </ng-template>\r\n \r\n <!-- Template for selected value -->\r\n <ng-template ng-label-tmp let-item=\"item\">\r\n <div [title]=\"item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' - ' + item.currency)\">\r\n {{ item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' / ' + item.currency) }}\r\n </div>\r\n </ng-template>\r\n \r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Transaction Status (Multi-select) -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'transactionStatus'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Txn. Status<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select class=\"transaction-status-select\" [items]=\"transactionStatuses\"\r\n bindLabel=\"transactionStatus\" bindValue=\"transactionStatus\" [multiple]=\"true\"\r\n placeholder=\"Select Transaction Status\" formControlName=\"transactionStatus\"\r\n [closeOnSelect]=\"false\" [clearable]=\"false\" [searchable]=\"false\" required>\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input type=\"checkbox\" [checked]=\"item$.selected\" /> {{ item.transactionStatus }}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Transaction No -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'transactionNo'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Txn. Number</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <input class=\"form-control dpicker\" formControlName=\"transactionNo\"\r\n placeholder=\"Enter transaction number\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Value Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'valueDate'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-3\">\r\n <label class=\"form-label label-data\">Value Date<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-9\">\r\n <div class=\"input-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #toDateInput=\"ngbDatepicker\" formControlName=\"toDate\" autocomplete=\"off\" />\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"toDateInput.toggle()\">\r\n <i class=\"fa fa-calendar\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Send Country -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'sendCountry'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Send Country</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode\"\r\n placeholder=\"Select Product\" [clearable]=\"false\" formControlName=\"sendCountry\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span [title]=\"item.country\">{{ item.country }}</span>\r\n </ng-template>\r\n\r\n </ng-select>\r\n\r\n <!-- <ng-select [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode\"\r\n placeholder=\"Select Product\" [clearable]=\"false\" formControlName=\"sendCountry\">\r\n </ng-select> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Receive Country -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'receiveCountry'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Receive Country</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode\"\r\n placeholder=\"Select Product\" [clearable]=\"false\" formControlName=\"receiveCountry\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span [title]=\"item.country\">{{ item.country }}</span>\r\n </ng-template>\r\n\r\n </ng-select>\r\n\r\n <!-- <ng-select [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode\"\r\n placeholder=\"Select Product\" [clearable]=\"false\" formControlName=\"receiveCountry\">\r\n </ng-select> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Transaction Product -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'transactionProduct'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Product</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"transactionProducts\" bindLabel=\"name\" bindValue=\"productCode\"\r\n placeholder=\"Select Product\" [clearable]=\"false\" formControlName=\"product\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Date Type -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'dateType'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Date Type</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select placeholder=\"- Please select -\" formControlName=\"dateType\" [clearable]=\"false\" required>\r\n <ng-option [value]=\"1\">\r\n Value Date\r\n </ng-option>\r\n <ng-option [value]=\"2\">\r\n Posting Date\r\n </ng-option>\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'date'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Date</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <div class=\"input-group date-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #toDateInput=\"ngbDatepicker\" formControlName=\"date\" autocomplete=\"off\" />\r\n <button class=\"input-group-button cal\" (click)=\"toDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- receiveCurrency -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'receiveCurrency'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Receive Currency</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"currencies\" bindValue=\"currencyCode\" placeholder=\"Select Receive Currency\" [clearable]=\"false\"\r\n formControlName=\"receiveCurrency\" required (change)=\"onBranchChange()\" (open)=\"onOpen()\" (close)=\"onClose()\"\r\n [searchable]=\"isOpen\">\r\n \r\n <!-- Dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div [title]=\"item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' - ' + item.currency)\">\r\n {{ item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' / ' + item.currency) }}\r\n </div>\r\n </ng-template>\r\n \r\n <!-- Selected value -->\r\n <ng-template ng-label-tmp let-item=\"item\">\r\n <div [title]=\"item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' - ' + item.currency)\">\r\n {{ item.currencyCode === 'All' ? 'All' : (item.currencyCode + ' / ' + item.currency) }}\r\n </div>\r\n </ng-template>\r\n \r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-custom-1-5\">\r\n <!-- View Report Button (Always at Top-Right) -->\r\n <div class=\"form-field view-report-btn\">\r\n <button type=\"submit\" class=\"btn btn-report\">View</button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</section>\r\n<hr>\r\n<!-- Error Messages -->\r\n<div class=\"alert alert-danger mt-3\" *ngIf=\"formValidationError && hasSearched\">\r\n Please fill all required fields before submitting the form.\r\n</div>\r\n\r\n<div class=\"alert alert-danger mt-3\" *ngIf=\"errorMessage && loadingState === ComponentLoadingState.Error\">\r\n {{ errorMessage }}\r\n <button type=\"button\" class=\"btn-close\" (click)=\"errorMessage = ''\"></button>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { AccGlDetailsEnquiryReportModel } from '../../models/acc-gl-details-enquiry-report/accgl-details-enquiry-reportmodel';\r\nimport { ColDef, ColumnApi, GridApi, GridReadyEvent } from 'ag-grid-community';\r\nimport { formatDate } from '@angular/common';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport 'jspdf-autotable';\r\nimport { ExportService } from '../../shared/export.service';\r\n\r\ndeclare module 'jspdf' {\r\n interface jsPDF {\r\n autoTable: (options: any) => jsPDF;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'lib-acc-gl-details-enquiry-report',\r\n templateUrl: './acc-gl-details-enquiry-report.component.html',\r\n styleUrls: ['./acc-gl-details-enquiry-report.component.scss'],\r\n\r\n})\r\nexport class AccGlDetailsEnquiryReportComponent implements OnInit {\r\n\r\n\r\n searchText: string = '';\r\n gridApi: GridApi<any>;\r\n gridColumnApi!: ColumnApi;\r\n selectedExportOption: string = 'excel';\r\n svgLoader: SafeHtml = '';\r\n loading: boolean = false;\r\n dataReady: boolean = false;\r\n dateTypeFilter: number = 1;\r\n dateType: any;\r\n sysCompanyCode: any;\r\n sysUserId: any;\r\n companyName: any;\r\n reportUser: any;\r\n reportTime: any;\r\n currentReportValueOrPostDate: any\r\n accGlDetailsEnquiryReportModel: AccGlDetailsEnquiryReportModel;\r\n rowData = [];\r\n date: string;\r\n pageSize: number = 15;\r\n ReportName = 'ACC GL Details Enquiry';\r\n exportFormats = [{ formatName: \"Excel\", code: 'excel' }, { formatName: \"PDF\", code: 'pdf' }, { formatName: \"CSV\", code: 'csv' }]\r\n metaDataOne: Record<string, string>;\r\n metaDataTwo: Record<string, string>;\r\n\r\n defaultColDef: ColDef = {\r\n resizable: true,\r\n sortable: false,\r\n suppressSizeToFit: false,\r\n cellStyle: { userSelect: 'text','line-height': '1.2','white-space': 'normal','word-break': 'normal','overflow-wrap': 'break-word' },\r\n \r\n // Header wrapping\r\n wrapHeaderText: true,\r\n autoHeaderHeight: true,\r\n\r\n // Cell wrapping\r\n wrapText: true,\r\n autoHeight: true\r\n };\r\n\r\n columnDefs: ColDef[] = [\r\n { headerName: 'Journal ID', field: 'journalID', flex: 1.8, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 95, tooltipField: 'journalID' },\r\n { headerName: 'Trans No', field: 'transactionNo', flex: 1.8, cellClass: 'ag-left-cols-cell compact-cell-transaction', minWidth: 73, tooltipField: 'transactionNo' },\r\n { headerName: 'Trans Code', field: 'transactionCode', flex: 1.2, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 60, tooltipField: 'transactionCode' },\r\n { headerName: 'Journal Type', field: 'journalType', flex: 1.2, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 73, tooltipField: 'journalType' },\r\n { headerName: 'Posting Date', field: 'postingDate', flex: 1.2, valueFormatter: this.formatDate, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 69, tooltipValueGetter: (params) => this.formatDate(params) },\r\n { headerName: 'Value Date', field: 'valueDate', flex: 1.2, valueFormatter: this.formatDate, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 68, tooltipValueGetter: (params) => this.formatDate(params), },\r\n { headerName: 'Description', field: 'description', flex: 4.8, minWidth: 119, wrapText: true, autoHeight: true,cellStyle: {'line-height': '1.2','white-space': 'normal','word-break': 'normal','overflow-wrap': 'break-word'}, tooltipField: 'description' },\r\n { headerName: 'Account Code', field: 'accountCode', flex: 1.2, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 73, tooltipField: 'accountCode' },\r\n { headerName: 'Ccy', field: 'currency', flex: 0.8, cellClass: 'ag-left-cols-cell', minWidth: 35, tooltipField: 'currency' },\r\n { headerName: 'Rate', field: 'rate', flex: 1.3, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 69, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'FxDebit', field: 'forexDebit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 58, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'Local Debit', field: 'localDebit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 62, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'FxCredit', field: 'forexCredit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 58, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'Local Credit', field: 'localCredit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 62, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n ];\r\n\r\n constructor(private exportService: ExportService, private reportService: ReportService, private http: HttpClient, private sanitizer: DomSanitizer) { }\r\n\r\n ngOnInit(): void {\r\n this.http.get('assets/reports-lib/assets/svg-loaders/blue-tail-spin.svg', { responseType: 'text' }).subscribe(svg => {\r\n this.svgLoader = this.sanitizer.bypassSecurityTrustHtml(svg);\r\n })\r\n this.date = new Date().toISOString().split('T')[0];\r\n }\r\n\r\n public getAccGLDetailsReport() {\r\n this.accGlDetailsEnquiryReportModel = undefined;\r\n this.loading = true;\r\n this.dataReady = false;\r\n this.selectedExportOption = 'excel';\r\n this.sysCompanyCode = 'BH';\r\n this.sysUserId = this.reportService.getUserNameFromSessionStorage();\r\n this.companyName = \"Xpress Money\";\r\n this.searchText = '';\r\n\r\n if (this.dateTypeFilter == 1) {\r\n this.dateType = 'VD';\r\n } else {\r\n this.dateType = 'PD';\r\n }\r\n\r\n this.reportService.getAccGLDetailsReport(this.date.split('T')[0], this.dateType)\r\n .subscribe(data => {\r\n this.accGlDetailsEnquiryReportModel = data;\r\n if (this.accGlDetailsEnquiryReportModel) {\r\n\r\n this.rowData = this.accGlDetailsEnquiryReportModel.journalVoucherEntries;\r\n this.companyName = this.accGlDetailsEnquiryReportModel.companyName;\r\n const userName = this.accGlDetailsEnquiryReportModel.reportUser;\r\n this.reportUser = userName.toLowerCase();\r\n this.reportTime = formatDate(new Date(), 'dd/MM/yyyy hh:mm a', 'en-US');\r\n this.currentReportValueOrPostDate = formatDate(this.accGlDetailsEnquiryReportModel.date, 'dd/MM/yyyy', 'en-US');\r\n this.metaDataOne = {\r\n 'Report User': this.reportUser,\r\n 'Report Time': this.reportTime\r\n }\r\n\r\n const DateType = this.dateType ==\r\n 'VD' ? 'Value Date' : 'Posting Date';\r\n this.metaDataTwo = {\r\n \"Company\":this.companyName,\r\n [DateType]: this.currentReportValueOrPostDate,\r\n }\r\n this.loading = false;\r\n this.dataReady = true;\r\n\r\n }\r\n }, error => {\r\n this.loading = false;\r\n });\r\n }\r\n\r\n public formatDate(params: any): string {\r\n return formatDate(new Date(params.value), 'dd/MM/yyyy', 'en-US');\r\n }\r\n\r\n onGridReady(params: GridReadyEvent) {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n }\r\n\r\n onGridSizeChanged(params: any) {\r\n params.api.sizeColumnsToFit();\r\n }\r\n\r\n getRowHeight(params: any): number {\r\n const description = params.data?.description || '';\r\n if (description.length > 50) {\r\n return 40;\r\n }\r\n return 20;\r\n }\r\n\r\n formatNumber(params: any): string {\r\n if (params.value == null) return '';\r\n\r\n const field = params.colDef.field;\r\n\r\n if (field === 'rate') {\r\n return Number(params.value).toFixed(8);\r\n }\r\n\r\n return Number(params.value).toFixed(3);\r\n }\r\n\r\n onSearch(text:string): void {\r\n const normalize = (str: any): string =>\r\n str?.toString()\r\n .toLowerCase()\r\n .replace(/,/g, '')\r\n .replace(/\\s+/g, ' ')\r\n .replace(/[\\u200B-\\u200D\\uFEFF]/g, '')\r\n .trim();\r\n\r\n this.searchText = text;\r\n const search = normalize(this.searchText);\r\n\r\n if (search) {\r\n this.rowData = this.accGlDetailsEnquiryReportModel.journalVoucherEntries.filter(item =>\r\n Object.values(item).some(value =>\r\n normalize(value).includes(search)\r\n )\r\n );\r\n } else {\r\n this.rowData = this.accGlDetailsEnquiryReportModel.journalVoucherEntries;\r\n }\r\n }\r\n\r\n handleExport(option:string): void {\r\n this.selectedExportOption = option;\r\n switch (this.selectedExportOption) {\r\n case 'excel':\r\n this.exportToExcel();\r\n break;\r\n case 'pdf':\r\n this.exportToPdf();\r\n break;\r\n case 'csv':\r\n this.exportToCsv();\r\n break;\r\n default:\r\n alert('Please select an export format.');\r\n }\r\n }\r\n\r\n async exportToPdf(): Promise<void> {\r\n if (!this.accGlDetailsEnquiryReportModel.journalVoucherEntries?.length) return;\r\n\r\n const title = `${this.companyName} - General Ledger Account Details Enquiry`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.reportUser],\r\n ['Report Time : ', this.reportTime],\r\n ['Search Criteria', ' - '],\r\n [`${this.dateType == 'VD' ? 'Value Date' : 'Posting Date'}:`, this.currentReportValueOrPostDate]\r\n\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.accGlDetailsEnquiryReportModel.journalVoucherEntries, this.columnDefs, {\r\n currencyFields: ['localCredit', 'forexCredit', 'localDebit', 'forexDebit']\r\n });\r\n\r\n await this.exportService.exportToPdfUniversal(title, metadata, headers, rows, 'ACC-GL-Details-Enquiry-Report.pdf');\r\n }\r\n\r\n exportToExcel(): void {\r\n if (!this.accGlDetailsEnquiryReportModel.journalVoucherEntries?.length) return;\r\n\r\n const title = `${this.companyName} - General Ledger Account Details Enquiry`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User', this.reportUser],\r\n ['Report Time', this.reportTime],\r\n ['Search Criteria', ' - '],\r\n [`${this.dateType == 'VD' ? 'Value Date' : 'Posting Date'}`, this.currentReportValueOrPostDate]\r\n\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.accGlDetailsEnquiryReportModel.journalVoucherEntries, this.columnDefs, {\r\n currencyFields: ['localCredit', 'forexCredit', 'localDebit', 'forexDebit']\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, headers, rows, 'ACC-GL-Details-Enquiry-Report.xlsx');\r\n }\r\n\r\n exportToCsv(): void {\r\n if (!this.accGlDetailsEnquiryReportModel.journalVoucherEntries?.length) return;\r\n\r\n const title = `${this.companyName} - General Ledger Account Details Enquiry`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User', this.reportUser],\r\n ['Report Time', this.reportTime],\r\n ['Search Criteria', '- '],\r\n [`${this.dateType == 'VD' ? 'Value Date' : 'Posting Date'}`, this.currentReportValueOrPostDate]\r\n\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.accGlDetailsEnquiryReportModel.journalVoucherEntries, this.columnDefs, {\r\n currencyFields: ['localCredit', 'forexCredit', 'localDebit', 'forexDebit']\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, headers, rows, 'ACC-GL-Details-Enquiry-Report.csv');\r\n }\r\n\r\n handleSearch(criteria: any): void {\r\n this.dateTypeFilter = criteria.selectedDateType;\r\n this.date = criteria.selectedDate.split(\"T\")[0];\r\n this.getAccGLDetailsReport();\r\n }\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\">\r\n</lib-search-filter>\r\n<div class=\"bootstrap-scope\">\r\n <div class=\"main-container\">\r\n <div class=\"report-loader\" *ngIf=\"loading && svgLoader\" [innerHTML]=\"svgLoader\"></div>\r\n\r\n <div class=\"report-container\" *ngIf=\"accGlDetailsEnquiryReportModel != undefined && dataReady\">\r\n <div class=\"main-report\" *ngIf=\"accGlDetailsEnquiryReportModel != undefined && dataReady\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"metaDataTwo\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n <!-- <h1 class=\"title\">General Ledger Account Details Enquiry</h1>\r\n <div class=\"report-content\">\r\n <div class=\"left-section\">\r\n <div class=\"labels\">\r\n <p><b>Report User</b></p>\r\n <p><b>Report Time</b></p>\r\n </div>\r\n <div class=\"values\">\r\n <p>: {{ reportUser }}</p>\r\n <p>: {{ reportTime }}</p>\r\n </div>\r\n </div>\r\n <div class=\"right-section\">\r\n <div class=\"labels\">\r\n <p><b>Company</b></p>\r\n <p><b>{{ dateType ==\r\n 'VD' ? 'Value Date' : 'Posting Date' }}</b></p>\r\n </div>\r\n <div class=\"values\">\r\n <p>: {{ companyName }}</p>\r\n <p>: {{currentReportValueOrPostDate}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\" style=\"margin-top: 10px; margin-bottom: 10px;\" >\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"d-flex justify-content-end align-items-center\">\r\n <input type=\"text\" [(ngModel)]=\"searchText\" name=\"searchText\" (ngModelChange)=\"onSearch()\"\r\n class=\"form-control custom-search-class\" placeholder=\"Search...\" />\r\n <button type=\"button\" class=\"btn btn-sm p-0 search-button\" (click)=\"onSearch()\">\r\n <img src=\"assets/images/Search.svg\" alt=\"Search\" class=\"search-button-image\" />\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-flex align-items-center\">\r\n <ng-select placeholder=\"- Please select -\" class=\"export-selector\" [(ngModel)]=\"selectedExportOption\"\r\n [clearable]=\"false\" required>\r\n <ng-option *ngFor=\"let format of exportFormats\" [value]=\"format.code\">\r\n {{ format.formatName }}\r\n </ng-option>\r\n </ng-select>\r\n <button type=\"button\" class=\"btn-report\" (click)=\"handleExport()\">Export</button>\r\n </div>\r\n </div> -->\r\n\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"accGlDetailsEnquiryReportModel?.journalVoucherEntries?.length\"\r\n [defaultSize]=\"'15'\" [gridApi]=\"gridApi\">\r\n ></lib-page-size-selector>\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"width: 100%;height: 375px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"rowData\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" [gridOptions]=\"{\r\n suppressHorizontalScroll: true,\r\n scrollbarWidth: 0\r\n }\" [pagination]=\"true\" [paginationPageSize]=\"pageSize\" (gridReady)=\"onGridReady($event)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event)\">\r\n </ag-grid-angular>\r\n <!-- <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" [rowData]=\"rowData\" [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\" [animateRows]=\"true\" [rowHeight]=\"20\" [headerHeight]=\"24\"\r\n [pagination]=\"true\" [domLayout]=\"'normal'\" [paginationPageSize]=\"pageSize\"\r\n [suppressHorizontalScroll]=\"false\" [suppressRowHoverHighlight]=\"false\"\r\n [getRowHeight]=\"getRowHeight.bind(this)\" (gridReady)=\"onGridReady($event)\"\r\n [suppressDragLeaveHidesColumns]=\"true\" [suppressMovableColumns]=\"false\">\r\n </ag-grid-angular> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { GridOptions, ColDef, GridReadyEvent, GridApi } from 'ag-grid-community';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil, finalize } from 'rxjs/operators';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { TransactionData, ComponentLoadingState } from '../../models/transaction-enquiry-report/transaction-enquiry.model';\r\nimport { ExportService } from '../../shared/export.service';\r\nimport { ConfigService } from '../../services/config.service';\r\nimport { formatDate } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-transaction-enquiry',\r\n templateUrl: './transaction-enquiry-report.component.html',\r\n styleUrls: ['./transaction-enquiry-report.component.scss']\r\n})\r\n\r\nexport class TransactionEnquiryComponent implements OnInit {\r\n @ViewChild('agGrid') agGrid!: AgGridAngular;\r\n\r\n private destroy$ = new Subject<void>();\r\n gridApi!: GridApi;\r\n searchText: string = '';\r\n paginationPageSize: number = 15;\r\n selectedExportOption: string = 'excel';\r\n currentDateTime: Date = new Date();\r\n\r\n exportFormats = [{ formatName: \"Excel\", code: 'excel' }, { formatName: \"PDF\", code: 'pdf' }, { formatName: \"CSV\", code: 'csv' }]\r\n productCodeMap: { [name: string]: string } = {\r\n \"DIRECT TO ACCOUNT\": \"DTA\",\r\n \"CASHPAYOUT\": \"CPO\",\r\n \"DIRECT TO WALLET\": \"DTW\",\r\n \"CASH TO CASH\": \"CTC\",\r\n \"CASH TO ACCOUNT\": \"CTA\"\r\n };\r\n\r\n loadingState: ComponentLoadingState = ComponentLoadingState.Complete;\r\n ComponentLoadingState = ComponentLoadingState;\r\n isSearching: boolean = false;\r\n hasSearched: boolean = false;\r\n _errorMessage: string = '';\r\n\r\n currentUserEmail: string = '';\r\n token = sessionStorage.getItem('access_token');\r\n applicationType = 'ezremit';\r\n companyCode = 'BH';\r\n serviceUrl: string;\r\n\r\n transactionData: TransactionData[] = [];\r\n ReportName = \"Transaction Enquiry\";\r\n metaDataOne: Record<string, string>;\r\n\r\n // AG Grid Column Definitions\r\n columnDefs: ColDef[] = [\r\n { headerName: 'Product', field: 'product', flex: 1, minWidth: 70, cellClass: 'ag-left-aligned-cell compact-cell', tooltipField: 'product', valueFormatter: params => this.productCodeMap[params.value] || params.value },\r\n { headerName: 'User Id', field: 'id', flex: 1, minWidth: 70, cellClass: 'compact-cell', tooltipField: 'id' },\r\n {\r\n headerName: 'Transaction Number', field: 'transactionNumber', tooltipField: 'transactionNumber',\r\n cellRenderer: (params: any) => {\r\n const url = this.buildTransactionDetailsUrl(params.value);\r\n return `<a href=\"${url}\" target=\"_blank\" rel=\"noopener noreferrer\">${params.value}</a>`;\r\n },\r\n flex: 1, minWidth: 100, cellClass: 'transaction-link-cell compact-cell'\r\n },\r\n { headerName: 'Transaction Ref Number', field: 'transactionReferenceNumber', flex: 1, minWidth: 100, cellClass: 'compact-cell', tooltipField: 'transactionReferenceNumber' },\r\n { headerName: 'Trans. Date', field: 'businessDate', flex: 1, minWidth: 75, valueFormatter: this.dateFormatter.bind(this), cellClass: 'ag-left-aligned-cell compact-cell', tooltipValueGetter: (params) => this.dateFormatter(params), },\r\n { headerName: 'SendClient', field: 'sendAgent', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'sendAgent' },\r\n { headerName: 'SendClntBranch', field: 'sendAgtBranch', flex: 1, minWidth: 150, cellClass: 'compact-cell', tooltipField: 'sendAgtBranch' },\r\n { headerName: 'RecvClient', field: 'recvAgent', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'recvAgent' },\r\n { headerName: 'RcvClntBranch', field: 'rcvAgtBranch', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'rcvAgtBranch' },\r\n { headerName: 'Sender Name', field: 'sendName', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'sendName' },\r\n { headerName: 'Sender ID Type', field: 'sendIdType', flex: 1, minWidth: 90, cellClass: 'compact-cell', tooltipField: 'sendIdType' },\r\n { headerName: 'Sender ID Number', field: 'sendIdNumber', flex: 1, minWidth: 85, cellClass: 'compact-cell', tooltipField: 'sendIdNumber' },\r\n { headerName: 'Benf. Name', field: 'benName', flex: 1, minWidth: 100, cellClass: 'compact-cell', tooltipField: 'benName' },\r\n { headerName: 'Receive Curr.', field: 'payOutCurrency', flex: 1, minWidth: 80, cellClass: 'ag-center-aligned-cell compact-cell', tooltipField: 'payOutCurrency' },\r\n { headerName: 'Receive Amount', field: 'payOutAmount', flex: 1, minWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Send Curr.', field: 'payInCurrency', flex: 1, minWidth: 70, cellClass: 'ag-center-aligned-cell compact-cell', tooltipField: 'payInCurrency' },\r\n { headerName: 'Send Amount', field: 'payInAmount', flex: 1, minWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Service Fee', field: 'commission', flex: 1, minWidth: 80, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Transaction Status', field: 'transactionStatus', flex: 1, minWidth: 98, cellClass: 'status-cell compact-cell', tooltipField: 'transactionStatus' }\r\n ];\r\n\r\n\r\n private buildTransactionDetailsUrl(transactionNumber: string): string {\r\n const baseUrl = this.serviceUrl;\r\n const token = this.token;\r\n const userName = this.currentUserEmail;\r\n const applicationType = this.applicationType;\r\n\r\n return `${baseUrl}/api/v1/RetailTransaction/GetTransactionDetailsHtmlView` +\r\n `?transactionNumber=${transactionNumber}&applicationType=${applicationType}` +\r\n `&access_token=${token}&userName=${userName}`;\r\n }\r\n\r\n // AG Grid Configuration\r\n gridOptions: GridOptions = {\r\n defaultColDef: {\r\n sortable: true,\r\n filter: true,\r\n resizable: true,\r\n cellStyle: { whiteSpace: 'normal' },\r\n autoHeight: true,\r\n autoHeaderHeight: true,\r\n wrapText: true,\r\n },\r\n suppressRowClickSelection: true,\r\n animateRows: true,\r\n pagination: true,\r\n paginationPageSize: 50,\r\n };\r\n\r\n constructor(\r\n private reportService: ReportService,\r\n private exportService: ExportService,\r\n private config: ConfigService\r\n ) {\r\n this.serviceUrl = this.config.get.serviceUrl;\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n handleSearch(criteria: any): void {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n this.transactionData = [];\r\n this.hasSearched = false;\r\n this.searchText = '';\r\n this.selectedExportOption = 'excel';\r\n console.log(criteria)\r\n this.currentUserEmail = criteria.sysUserID\r\n this.metaDataOne = {\r\n 'Report User': this.currentUserEmail,\r\n 'Report Time': formatDate(this.currentDateTime, 'dd/MM/yyyy hh:mm a', 'en-US')\r\n }\r\n\r\n this.reportService.searchTransactions(criteria)\r\n .pipe(\r\n takeUntil(this.destroy$),\r\n finalize(() => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n this.hasSearched = true;\r\n })\r\n )\r\n .subscribe({\r\n next: data => {\r\n this.transactionData = Array.isArray(data) ? data : [];\r\n if (this.gridApi) {\r\n this.gridApi.setRowData(this.transactionData);\r\n } else {\r\n console.error('Grid API is not initialized!');\r\n }\r\n },\r\n error: err => {\r\n this.errorMessage = 'Failed to fetch transaction data. Please try again.';\r\n this.loadingState = ComponentLoadingState.Error;\r\n console.error('Search error:', err);\r\n }\r\n });\r\n }\r\n\r\n filter(text:string): void {\r\n this.searchText = text;\r\n if (this.gridApi && this.searchText != null) {\r\n this.gridApi.setQuickFilter(this.searchText.trim().toLowerCase());\r\n }\r\n }\r\n\r\n onGridReady(params: GridReadyEvent): void {\r\n this.gridApi = params.api;\r\n if (this.transactionData) {\r\n this.gridApi.setRowData(this.transactionData);\r\n this.gridApi.sizeColumnsToFit();\r\n }\r\n }\r\n\r\n clearError(): void {\r\n this.errorMessage = '';\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n\r\n dateFormatter(params: any): string {\r\n if (!params.value) return '';\r\n try {\r\n const date = new Date(params.value);\r\n return date.toLocaleString('en-GB', {\r\n day: '2-digit',\r\n month: '2-digit',\r\n year: 'numeric',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n hour12: true\r\n }).replace(',', '');\r\n } catch {\r\n return params.value;\r\n }\r\n }\r\n\r\n currencyFormatter(params: any): string {\r\n if (params.value == null || params.value === '') return '';\r\n const number = parseFloat(params.value);\r\n if (isNaN(number)) return params.value;\r\n return number.toLocaleString('en-US', {\r\n minimumFractionDigits: 3,\r\n maximumFractionDigits: 3\r\n });\r\n }\r\n\r\n get isLoading(): boolean {\r\n return this.loadingState === ComponentLoadingState.Loading;\r\n }\r\n\r\n get isError(): boolean {\r\n return this.loadingState === ComponentLoadingState.Error;\r\n }\r\n\r\n get errorMessage(): string {\r\n return this._errorMessage;\r\n }\r\n\r\n set errorMessage(value: string) {\r\n this._errorMessage = value;\r\n }\r\n\r\n onExportChange(value: string): void {\r\n this.selectedExportOption = value;\r\n }\r\n\r\n handleExport(option:string): void {\r\n this.selectedExportOption = option;\r\n if (this.selectedExportOption === 'pdf') {\r\n this.exportToPDF();\r\n } else if (this.selectedExportOption === 'excel') {\r\n this.exportToExcel();\r\n } else if (this.selectedExportOption === 'csv') {\r\n this.exportToCSV();\r\n } else {\r\n alert('Please select a valid export format.');\r\n }\r\n }\r\n\r\n exportToPDF(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Transaction Enquiry';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.currentUserEmail],\r\n ['Report Time : ', this.exportService.formatDateTime(this.currentDateTime)]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: ['payOutAmount', 'payInAmount', 'commission']\r\n });\r\n\r\n this.exportService.exportToPdfUniversal(title, metadata, headers, rows, 'Transaction_Enquiry.pdf')\r\n .then(() => {\r\n console.log('PDF export completed.');\r\n })\r\n .catch(err => {\r\n console.error('PDF export failed:', err);\r\n });\r\n }\r\n\r\n exportToExcel(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Transaction Enquiry';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User ', this.currentUserEmail],\r\n ['Report Time ', this.exportService.formatDateTime(this.currentDateTime)]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: ['payOutAmount', 'payInAmount', 'commission']\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, headers, rows, 'Transaction_Enquiry.xlsx');\r\n }\r\n\r\n exportToCSV(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Transaction Enquiry';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.currentUserEmail],\r\n ['Report Time : ', this.exportService.formatDateTime(this.currentDateTime)]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: ['payOutAmount', 'payInAmount', 'commission']\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, headers, rows, 'Transaction_Enquiry.csv');\r\n }\r\n}","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\">\r\n</lib-search-filter>\r\n\r\n<app-loader *ngIf=\"loadingState === ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<span *ngIf=\"loadingState === ComponentLoadingState.Error\">{{ errorMessage }}</span>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"hasSearched && transactionData.length === 0 && loadingState === ComponentLoadingState.Complete\">\r\n No transactions found matching your search criteria.\r\n</div>\r\n\r\n<div *ngIf=\"transactionData && transactionData.length > 0 && loadingState === ComponentLoadingState.Complete\">\r\n\r\n <lib-metadata \r\n [reportName]=\"ReportName\" \r\n [showmetaDataOne]=\"true\" \r\n [showmetaDataTwo]=\"false\" \r\n [metaDataOne]=\"metaDataOne\"\r\n [metaDataTwo]=\"\" \r\n (exportEvent)=\"handleExport($event)\" \r\n (searchEvent)=\"filter($event)\">\r\n </lib-metadata>\r\n\r\n <div style=\"position: relative;\">\r\n\r\n <lib-page-size-selector \r\n [totalEntries]=\"transactionData.length\" \r\n [defaultSize]=\"'15'\" \r\n [gridApi]=\"gridApi\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" \r\n [rowData]=\"transactionData\" \r\n [columnDefs]=\"columnDefs\"\r\n [gridOptions]=\"gridOptions\" \r\n [pagination]=\"true\" \r\n [headerHeight]=\"30\" \r\n [paginationPageSize]=\"paginationPageSize\"\r\n (gridReady)=\"onGridReady($event)\" \r\n style=\"width: 100%; height: 435px;\">\r\n </ag-grid-angular>\r\n </div>\r\n\r\n</div>","\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { TransactionEnquiryComponent } from './components/transaction-enquiry-report/transaction-enquiry-report.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'transaction-enquiry-report',\r\n component: TransactionEnquiryComponent\r\n }\r\n \r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\n\r\nexport class ReportsLibRoutingModule {}\r\n","export enum ComponentLoadingStates {\r\n Error = -1,\r\n Loading = 0,\r\n Complete = 1,\r\n}\r\n","import { Component, NgZone, OnInit, ElementRef, HostListener, ViewChild } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { BranchActivityReport } from '../../models/branch-activity-report/branch-activity-send-report';\r\nimport { ColDef, GridApi, GridOptions, GridReadyEvent, RowGroupingDisplayType } from 'ag-grid-community';\r\nimport * as XLSX from 'xlsx';\r\nimport { saveAs } from 'file-saver';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\nimport { themeAlpine } from '@ag-grid-community/theming';\r\nimport jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\nimport { formatDate, DatePipe } from '@angular/common';\r\nimport { BranchActivitySendReportRequestDomainModel } from '../../models/branch-activity-report/branch-activity-send-report-request-domain-model';\r\nimport { forkJoin, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\n\r\ndeclare module 'jspdf' {\r\n interface jsPDF {\r\n autoTable: (options: any) => jsPDF;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'lib-branch-activity-send-report',\r\n templateUrl: './branch-activity-send-report.component.html',\r\n styleUrls: ['./branch-activity-send-report.component.scss']\r\n})\r\nexport class BranchActivitySendReportComponent implements OnInit {\r\n dataMap: Record<string, BranchActivityReport[]> = {}\r\n filteredData: Record<string, BranchActivityReport[]> = {}\r\n proxyData: Record<string, BranchActivityReport[]> = {}\r\n form: FormGroup;\r\n fromDate: any;\r\n toDate: any;\r\n showReport: boolean;\r\n paginationArray: any[];\r\n selectedExportOption = 'excel';\r\n gridAPi;\r\n gridApis: GridApi[] = [];\r\n gridColumnApi;\r\n user: string = \"kaushik.kulsange@xpressmoney.tech\";\r\n reportDate: string;\r\n searchText: string;\r\n buffer: any;\r\n errorMessage = '';\r\n sysUserId: string;\r\n private logoBase64: string | undefined;\r\n message: string = 'No Data Found';\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Loading;\r\n ReportName: string = \"Branch Activity Send\";\r\n leftData: Record<string, string>;\r\n // flags\r\n showError: boolean = false;\r\n showMessage: boolean = false;\r\n noDataFound: boolean = false;\r\n activeBranch: number;\r\n\r\n columnDefs: ColDef<BranchActivityReport>[] = [\r\n { field: 'businessDateTime', headerName: 'Business Date', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 70, width: 70, tooltipField: 'businessDateTime' },\r\n { field: 'transactionDateTime', headerName: 'Transaction Date', flex: 2, wrapText: true, autoHeight: true },\r\n { field: 'transactionNumber', headerName: 'Transaction Number', flex: 1.8, width: 130, cellClass: 'ag-left-cols-cell compact-cell-transaction', tooltipField: 'transactionNumber' },\r\n { field: 'product', headerName: 'Product', flex: 0.5, minWidth: 50, width: 60, tooltipField: 'product' },\r\n { field: 'sendAgentBranchCode', headerName: 'Send BranchCode', flex: 1, width: 120, tooltipField: 'sendAgentBranchCode' },\r\n { field: 'receiveAgentCode', headerName: 'Receive ClientCode', flex: 1, minWidth: 70, width: 70, tooltipField: 'receiveAgentCode' },\r\n { field: 'payoutCCcode', headerName: 'ReceiveCcy Code', flex: 1, width: 110, tooltipField: 'payoutCCcode' },\r\n { field: 'payoutAmount', headerName: 'Receive Amount', flex: 1, maxWidth: 130, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payoutAmount' },\r\n { field: 'payinCCcode', headerName: 'SendCcy Code', flex: 1, maxWidth: 90, tooltipField: 'payinCCcode' },\r\n { field: 'payinAmount', headerName: 'Send Amount', flex: 1, maxWidth: 120, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payinAmount' },\r\n { field: 'transactionCommissionAmount', headerName: 'Service Fee', flex: 1, maxWidth: 120, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'transactionCommissionAmount' },\r\n { field: 'tax', headerName: 'Tax', flex: 1, width: 70, maxWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'tax' },\r\n { field: 'totalPayinAmount', headerName: 'Total Send Amount', flex: 1, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'totalPayinAmount' },\r\n { field: 'status', headerName: 'Transaction Status', flex: 1, tooltipField: 'status' }\r\n ];\r\n\r\n\r\n defaultColDef = {\r\n sortable: true,\r\n filter: false,\r\n resizable: true,\r\n minwidth: 40,\r\n wrapHeaderText: true,\r\n autoHeaderHeight: true,\r\n suppressSizeToFit: false,\r\n wrapText: true\r\n };\r\n rowData: BranchActivityReport[] = [];\r\n\r\n constructor(private formBuilder: FormBuilder, private reportService: ReportService, private ngZone: NgZone) { }\r\n\r\n reportTheme = themeAlpine.withParams({\r\n headerFontSize: '10px',\r\n fontFamily: ['Arial', 'sans-serif'],\r\n fontSize: '9px'\r\n });\r\n\r\n ngOnInit(): void {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n // Check if User is falcon user or fossilUser\r\n if (sessionStorage.getItem('fossilusername')) {\r\n this.sysUserId = sessionStorage.getItem('fossilusername')\r\n }\r\n else {\r\n this.sysUserId = sessionStorage.getItem('ezremitusername');\r\n }\r\n this.sysUserId = this.sysUserId.replace(/^[\"'](.*)[\"']$/, '$1');\r\n this.user = this.sysUserId;\r\n console.log(\"System User Id : \" + this.sysUserId);\r\n this.loadImageAsBase64('/assets/reports-lib/assets/images/XMLogo.png').then(base64 => {\r\n this.logoBase64 = base64;\r\n });\r\n }\r\n\r\n filter(text: string) {\r\n this.searchText = text;\r\n if(this.searchText == null){\r\n return;\r\n }\r\n if (this.searchText?.trim().length === 0) {\r\n this.filteredData = structuredClone(this.dataMap);\r\n return;\r\n }\r\n this.searchText = this.searchText?.trim()?.toLowerCase();\r\n for (const [key, entries] of Object.entries(this.proxyData)) {\r\n const filteredData = entries.filter(entry => Object.values(entry)\r\n .some(val => {\r\n let a: string = val.toString().toLowerCase();\r\n return a.search(this.searchText) == -1 ? false : true;\r\n }))\r\n\r\n this.filteredData[key] = filteredData;\r\n }\r\n this.filteredData;\r\n }\r\n\r\n onGridReady(params: GridReadyEvent, id: number) {\r\n params.api.sizeColumnsToFit();\r\n this.gridAPi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApis[id] = params.api;\r\n }\r\n\r\n onGridSizeChanged(params: any) {\r\n params.api.sizeColumnsToFit();\r\n }\r\n\r\n async handleExport(option: string) {\r\n this.selectedExportOption = option;\r\n const data: any[] = [];\r\n if (Object.keys(this.filteredData).length == 0) {\r\n return;\r\n }\r\n this.gridAPi.forEachNode(node => data.push(node.data))\r\n switch (this.selectedExportOption) {\r\n case 'excel':\r\n this.exportExcel(data);\r\n break;\r\n case 'pdf':\r\n this.exportPDF(data);\r\n break;\r\n case 'csv':\r\n this.exportCSV(data);\r\n break;\r\n default:\r\n alert('Please select an export format.');\r\n }\r\n }\r\n\r\n // ------------------------ Utility ------------------------\r\n private loadImageAsBase64(imagePath: string): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.crossOrigin = 'anonymous';\r\n img.src = imagePath;\r\n\r\n img.onload = () => {\r\n // Scale up canvas resolution (2x or more)\r\n const scale = 2;\r\n const canvas = document.createElement('canvas');\r\n canvas.width = img.width * scale;\r\n canvas.height = img.height * scale;\r\n\r\n const ctx = canvas.getContext('2d');\r\n if (ctx) {\r\n ctx.scale(scale, scale); // Draw image at higher quality\r\n ctx.drawImage(img, 0, 0);\r\n const base64 = canvas.toDataURL('image/png', 1.0); // 1.0 = highest quality\r\n resolve(base64);\r\n } else {\r\n reject('Failed to get canvas context.');\r\n }\r\n };\r\n\r\n img.onerror = () => reject('Failed to load image: ' + imagePath);\r\n });\r\n }\r\n\r\n exportPDF(data: any) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n data = Object.values(this.dataMap)[0];\r\n const doc = new jsPDF({\r\n orientation: 'landscape',\r\n unit: 'mm',\r\n format: [400, 210]\r\n });\r\n\r\n const pageWidth = doc.internal.pageSize.width;\r\n\r\n //Title\r\n const title = `Branch Activity Send`;\r\n doc.setFontSize(15);\r\n doc.setFont('helvetica', 'bold');\r\n const textWidth = doc.getTextWidth(title);\r\n doc.text(title, doc.internal.pageSize.width / 2, 15, { align: 'center' });\r\n\r\n //Add Image\r\n if (this.logoBase64) {\r\n doc.addImage(this.logoBase64, 'PNG', 15, 5, 25, 20);\r\n }\r\n\r\n //Info block\r\n const infoY = 30;\r\n const leftMargin = 15;\r\n const lineHeight = 7;\r\n const infoLines = [\r\n ['Report User And Time:', this.user],\r\n ['Report Time', this.reportDate]\r\n // ['Report Period:', `${this.fromDate} - ${this.toDate}`]\r\n ]\r\n\r\n doc.setFontSize(10);\r\n infoLines.forEach(([label, value], i) => {\r\n const y = infoY + i * lineHeight;\r\n // Draw label in bold\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(label, leftMargin, y);\r\n\r\n // Draw value in normal font right after label\r\n const labelWidth = doc.getTextWidth(label + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(value, leftMargin + labelWidth, y);\r\n });\r\n\r\n const filteredColumns = this.columnDefs.filter(col =>\r\n !(col.headerName?.toLowerCase().includes('sr. no') || col.field?.toLowerCase().includes('srno') || col.field?.toLowerCase().includes('serial'))\r\n );\r\n\r\n // Prepare headers with Sr No\r\n const headers = ['Sr No', ...filteredColumns.map(col => col.headerName || col.field!)];\r\n\r\n let Rows: any[] = [];\r\n\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n Rows.push([{ content: key, colSpan: 15 }]);\r\n const rows = reports.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field!];\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n return value ?? '';\r\n });\r\n Rows.push([index + 1, ...rowData]);\r\n return [index + 1, ...rowData];\r\n });\r\n // Rows.push(rows);\r\n }\r\n\r\n // Prepare rows with Sr No\r\n const rows = data.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field!];\r\n return value ?? '';\r\n });\r\n return [index + 1, ...rowData];\r\n });\r\n\r\n // Generate dynamic column styles for auto-width\r\n const columnStyles: { [key: number]: any } = {};\r\n headers.forEach((_, i) => {\r\n columnStyles[i] = { cellWidth: 'auto' };\r\n });\r\n\r\n columnStyles[2] = { cellWidth: 40 };\r\n\r\n // Render Table\r\n doc.autoTable({\r\n head: [headers],\r\n body: Rows,\r\n startY: infoY + infoLines.length * lineHeight + 5,\r\n theme: 'grid',\r\n headStyles: {\r\n fillColor: [220, 220, 220],\r\n textColor: 0,\r\n fontStyle: 'bold',\r\n fontSize: 9,\r\n halign: 'center'\r\n },\r\n bdyStyles: {\r\n fontSize: 8,\r\n fillColor: [255, 255, 255],\r\n textColor: [0, 0, 0]\r\n },\r\n styles: {\r\n cellPadding: 2,\r\n overflow: 'linebreak',\r\n minCellHeight: 6\r\n },\r\n columnStyles: columnStyles\r\n });\r\n doc.save(\"Branch-Activity-Send-Report.pdf\")\r\n }\r\n\r\n exportExcel(data: any) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet('Branch-Activity-Send-Report');\r\n const totalColumns = this.columnDefs.length;\r\n\r\n // Title Row\r\n const titleRow = worksheet.addRow([\"Branch Activity Send\"]);\r\n titleRow.font = { bold: true, size: 14 };\r\n titleRow.height = 60;\r\n worksheet.mergeCells(`A${titleRow.number}:${String.fromCharCode(64 + totalColumns)}${titleRow.number}`);\r\n //Center align the title\r\n const masterCell = worksheet.getCell(`A${titleRow.number}`);\r\n masterCell.alignment = { horizontal: 'center', vertical: 'middle' };\r\n\r\n // Add image if available\r\n if (this.logoBase64) {\r\n const base64Data = this.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\r\n\r\n // Place image at top-left (e.g., A1:C4)\r\n worksheet.addImage(imageId, {\r\n tl: { col: 0, row: 0 },\r\n ext: { width: 150, height: 50 },\r\n });\r\n }\r\n\r\n //Meta Data\r\n const meta: [string, string][] = [\r\n ['Report User ', this.user],\r\n ['Report Time', this.reportDate]\r\n // ['Report Period', `${this.fromDate} - ${this.toDate}`]\r\n ]\r\n\r\n meta.forEach(([label, value]) => {\r\n const row = worksheet.addRow([label, value]);\r\n //Bold the key column\r\n const labelCell = row.getCell(1);\r\n labelCell.font = { bold: true };\r\n })\r\n // For Empty Row\r\n worksheet.addRow([]);\r\n\r\n // Add Header Row for Data Table\r\n const headerRow = worksheet.addRow(this.columnDefs.map(col => col.headerName || col.field));\r\n headerRow.font = { bold: true };\r\n for (let i = 1; i <= this.columnDefs.length; i++) {\r\n const cell = headerRow.getCell(i);\r\n cell.fill = {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: { argb: 'D9D9D9' },\r\n };\r\n }\r\n\r\n headerRow.alignment = {\r\n wrapText: true,\r\n vertical: 'top',\r\n horizontal: 'center'\r\n };\r\n headerRow.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n\r\n const dataStartRow = worksheet.lastRow!.number + 1;\r\n const branchRows = [];\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n console.log('Key:', key);\r\n console.log('Reports:', reports);\r\n const row = worksheet.addRow([`${key}`]);\r\n worksheet.mergeCells(row.number, 1, row.number, 10);\r\n branchRows.push(row.number);\r\n // Add Data Rows\r\n reports.forEach(row => {\r\n const rowData = this.columnDefs.map(col => {\r\n let value = row[col.field!];\r\n // Format currency fields\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n if (!isNaN(value) && value !== null && value !== '') {\r\n return `\\t ${value}`;\r\n }\r\n return value ?? '';\r\n })\r\n const dataRow = worksheet.addRow(rowData);\r\n dataRow.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n });\r\n worksheet.addRow([]);\r\n }\r\n\r\n // Auto column width ONLY based on data rows\r\n for (let i = 1; i <= totalColumns; i++) {\r\n let maxLength = 10;\r\n for (let rowNum = dataStartRow; rowNum <= worksheet.lastRow!.number; rowNum++) {\r\n if (branchRows.indexOf(x => x === rowNum) === -1) {\r\n continue;\r\n }\r\n const cell = worksheet.getRow(rowNum).getCell(i);\r\n const val = cell.value ? cell.value.toString() : '';\r\n maxLength = Math.max(maxLength, val.length);\r\n }\r\n worksheet.getColumn(i).width = maxLength + 2;\r\n }\r\n worksheet.getColumn(2).width = 20;\r\n worksheet.getColumn(3).width = 15;\r\n // Export\r\n workbook.xlsx.writeBuffer().then(buffer => {\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n })\r\n FileSaver.saveAs(blob, 'Branch-Activity-Send-Report.xlsx');\r\n })\r\n }\r\n\r\n exportCSV(data: any[]) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n const metadata = [\r\n ['Report Title', 'Branch Activity Send'],\r\n ['Report Time', this.reportDate]\r\n // ['Report User', this.user]\r\n ];\r\n\r\n const filteredCols = this.columnDefs.filter(\r\n col =>\r\n !(col.headerName?.toLowerCase().includes('sr. no') ||\r\n col.field?.toLowerCase().includes('sr. no'))\r\n );\r\n\r\n const headers = ['Sr No', ...filteredCols.map(col => col.headerName || col.field!)];\r\n\r\n let Rows: any[][] = []\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n Rows.push([key]);\r\n reports.map((row, index) => {\r\n const rowVals = filteredCols.map(col => {\r\n let v = row[col.field!];\r\n if (currencyFields.includes(col.field) && v != null) {\r\n v = parseFloat(v).toFixed(3);\r\n }\r\n if (col.field === 'transactionNumber' || col.headerName === 'Transaction Number') {\r\n return `\\t ${v}`;\r\n }\r\n return v ?? '';\r\n });\r\n Rows.push([index + 1, ...rowVals]);\r\n return [index + 1, ...rowVals];\r\n })\r\n }\r\n\r\n const aoa: any[][] = [\r\n ...metadata,\r\n [], // blank row for separation\r\n headers,\r\n ...Rows\r\n ];\r\n\r\n // convert to worksheet & CSV\r\n const ws = XLSX.utils.aoa_to_sheet(aoa);\r\n const csv = XLSX.utils.sheet_to_csv(ws, {\r\n FS: ',', RS: '\\n', blankrows: false, forceQuotes: false\r\n } as any);\r\n\r\n // trigger download\r\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\r\n saveAs(blob, 'Branch-Activity-Send-Report.csv');\r\n }\r\n\r\n currencyFormatter(params: any): string {\r\n if (params.value == null || params.value === '') return '';\r\n const number = parseFloat(params.value);\r\n if (isNaN(number)) return params.value;\r\n return number.toLocaleString('en-US', {\r\n minimumFractionDigits: 3,\r\n maximumFractionDigits: 3\r\n });\r\n }\r\n\r\n handleSearch(criteria: any): void {\r\n this.reportDate = new Date().toISOString();\r\n this.reportDate = formatDate(this.reportDate, 'dd/MM/yyyy hh:mm a', 'en-US');\r\n const modal = criteria.modal;\r\n this.user = criteria.sysUserID;\r\n console.log(modal);\r\n // Code For Meta Data\r\n this.leftData = {\r\n 'Report User': this.user,\r\n 'Report Time': this.reportDate\r\n }\r\n const searchData = {\r\n \"StartDate\": modal.fromDate,\r\n \"EndDate\": modal.toDate,\r\n \"SendCountryCode\": modal.sendCountry,\r\n \"RecvCountryCode\": modal.receiveCountry,\r\n \"BusinessPartnerCode\": modal.client,\r\n \"TransactionStatus\": modal.transactionStatus.join(\",\"),\r\n \"PayoutCurrency\": \"ALL\",\r\n \"TransactionType\": \"ALL\",\r\n \"BranchCode\": modal.branch,\r\n \"CompanyCode\": \"BH\"\r\n };\r\n try {\r\n const sdate = new Date(searchData?.StartDate);\r\n const edate = new Date(searchData?.EndDate);\r\n searchData.StartDate = sdate.toISOString().split(\"T\")[0];\r\n searchData.EndDate = edate.toISOString().split(\"T\")[0];\r\n } catch(err){\r\n throw new Error(\"Invalid Date\");\r\n }\r\n this.showMessage = true;\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getBranchActivityReport(searchData).subscribe({\r\n next: (data) => {\r\n console.log(data);\r\n this.dataMap = JSON.parse(JSON.stringify(data));\r\n this.filteredData = data;\r\n this.noDataFound = Object.keys(this.filteredData).length == 0 ? true : false;\r\n this.proxyData = structuredClone(data);\r\n this.paginationArray = new Array(Object.keys(this.filteredData).length).fill(15);\r\n this.showMessage = Object.keys(this.filteredData).length == 0 ? true : false;\r\n this.showReport = true;\r\n },\r\n\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n\r\n complete: () => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n this.showReport = true;\r\n }\r\n })\r\n }\r\n\r\n}\r\n\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\">\r\n</lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div class=\"alert alert-danger mt-3 d-flex justify-content-between align-items-center\" *ngIf=\"showError\">\r\n <span>{{ errorMessage }}</span>\r\n</div>\r\n\r\n<section *ngIf=\"showReport\" class=\"my-2\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"false\" [metaDataOne]=\"leftData\" [metaDataTwo]=\"\"(exportEvent)=\"handleExport($event)\" (searchEvent)=\"filter($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let item of filteredData | keyvalue; let i = index\">\r\n <ngb-panel *ngIf=\"item.value.length > 0\" [id]=\"'panel-' + i\">\r\n\r\n <ng-template ngbPanelTitle style=\"height: 10%;\">\r\n <label\r\n style=\"font-weight: bold; font-size: 13px; line-height: 1.2; margin: 0; padding: 2px 0;color: #0c63e4;\">{{\r\n item.key\r\n }}</label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"item?.value?.length\"\r\n [defaultSize]=\"'15'\" [gridApi]=\"gridApis[i]\">\r\n ></lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"width: 100%;height: 380px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"item.value\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" [gridOptions]=\"{\r\n suppressHorizontalScroll: true,\r\n scrollbarWidth: 0\r\n }\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event,i)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n </ng-template>\r\n\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data Found\r\n </div>\r\n</section>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { PageSizeSelectorComponent } from './page-size-selector/page-size-selector.component';\r\nimport { MetadataComponent } from './metadata/metadata.component';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\n\r\n@NgModule({\r\n declarations: [PageSizeSelectorComponent, MetadataComponent],\r\n imports: [CommonModule, FormsModule,NgSelectModule],\r\n exports: [PageSizeSelectorComponent,MetadataComponent]\r\n})\r\nexport class SharedModule { }\r\n","import { Component, inject, OnInit } from '@angular/core';\r\nimport { ColDef, GridApi, GridReadyEvent } from 'ag-grid-community';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { formatDate } from '@angular/common';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { BranchActivityReceiveReportModel } from '../../models/branch-activity-receive-report/branch-activity-receive.model';\r\nimport * as XLSX from 'xlsx';\r\nimport { saveAs } from 'file-saver';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\nimport { themeAlpine } from '@ag-grid-community/theming';\r\nimport jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\n\r\n@Component({\r\n selector: 'lib-branch-activity-receive-report',\r\n templateUrl: './branch-activity-receive-report.component.html',\r\n styleUrls: ['./branch-activity-receive-report.component.scss']\r\n})\r\nexport class BranchActivityReceiveReportComponent implements OnInit {\r\n data: any = [];\r\n dataMap: Record<string, BranchActivityReceiveReportModel[]> = {}\r\n filteredData: Record<string, BranchActivityReceiveReportModel[]> = {}\r\n user: string = \"kaushik.kulsange@xpressmoney.tech\";\r\n ReportName = \"Branch Activity Receive\"\r\n reportService: ReportService = inject(ReportService);\r\n reportDate: string;\r\n metaDataOne: Record<string, string>;\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n paginationArray: any[];\r\n selectedExportOption: string;\r\n private logoBase64: string | undefined;\r\n searchText: string = '';\r\n\r\n gridApis: GridApi[] = [];\r\n\r\n showReport: boolean = false;\r\n noDataFound: boolean = false;\r\n\r\n columnDefs: ColDef<BranchActivityReceiveReportModel>[] = [\r\n { field: 'businessDateTime', headerName: 'Business Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 70, width: 70, tooltipField: 'businessDateTime' },\r\n { field: 'transactionDateAndTime', headerName: 'Receive Date', flex: 2, headerClass: 'ag-header-cell', wrapText: true, autoHeight: true, tooltipField: 'transactionDateAndTime' },\r\n { field: 'transactionNumber', headerName: 'Transaction Number', flex: 1.8, headerClass: 'ag-header-cell', width: 130, cellClass: 'ag-left-cols-cell compact-cell-transaction', tooltipField: 'transactionNumber' },\r\n { field: 'product', headerName: 'Product', flex: 0.5, headerClass: 'ag-header-cell', minWidth: 50, width: 60, tooltipField: 'product' },\r\n { field: 'senderName', headerName: 'Sender Name', flex: 1, headerClass: 'ag-header-cell', width: 130, tooltipField: 'senderName' },\r\n { field: 'sendAgentCode', headerName: 'Send ClientCode', flex: 1, headerClass: 'ag-header-cell', minWidth: 70, width: 70, tooltipField: 'sendAgentCode' },\r\n { field: 'receiverName', headerName: 'Receiver Name', flex: 1, headerClass: 'ag-header-cell', width: 130, tooltipField: 'receiverName' },\r\n { field: 'receiveAgentBranchCode', headerName: 'ReceiveClient BranchCode', headerClass: 'ag-header-cell', flex: 1, maxWidth: 120, tooltipField: 'receiveAgentBranchCode' },\r\n { field: 'payOutCurrency', headerName: 'Receive CcyCode', flex: 1, headerClass: 'ag-header-cell', maxWidth: 90, tooltipField: 'payOutCurrency' },\r\n { field: 'amountPaid', headerName: 'Amount Paid', flex: 1, headerClass: 'ag-header-cell', width: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'amountPaid' },\r\n { field: 'status', headerName: 'Transaction Status', flex: 1, headerClass: 'ag-header-cell', tooltipField: 'status' }\r\n ];\r\n\r\n defaultColDef = {\r\n sortable: true,\r\n filter: false,\r\n resizable: true,\r\n minwidth: 40,\r\n wrapHeaderText: true,\r\n autoHeaderHeight: true,\r\n suppressSizeToFit: false,\r\n wrapText: true\r\n };\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.loadImageAsBase64('/assets/reports-lib/assets/images/XMLogo.png').then(base64 => {\r\n this.logoBase64 = base64;\r\n });\r\n }\r\n\r\n onGridReady(params: GridReadyEvent, id: number) {\r\n params.api.sizeColumnsToFit();\r\n this.gridApis[id] = params.api;\r\n }\r\n\r\n onGridSizeChanged(params: any) {\r\n params.api.sizeColumnsToFit();\r\n }\r\n\r\n // Currency Formatter\r\n currencyFormatter(params: any): string {\r\n if (params.value == null || params.value === '') return '';\r\n const number = parseFloat(params.value);\r\n if (isNaN(number)) return params.value;\r\n return number.toLocaleString('en-US', {\r\n minimumFractionDigits: 3,\r\n maximumFractionDigits: 3\r\n });\r\n }\r\n\r\n handleExport(option: string) {\r\n this.selectedExportOption = option;\r\n const data: any[] = [];\r\n if (Object.keys(this.filteredData).length == 0) {\r\n return;\r\n }\r\n switch (this.selectedExportOption) {\r\n case 'excel':\r\n this.exportExcel(data);\r\n break;\r\n case 'pdf':\r\n this.exportPDF(data);\r\n break;\r\n case 'csv':\r\n this.exportCSV(data);\r\n break;\r\n default:\r\n alert('Please select an export format.');\r\n }\r\n }\r\n\r\n // ------------------------ Utility ------------------------\r\n private loadImageAsBase64(imagePath: string): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.crossOrigin = 'anonymous';\r\n img.src = imagePath;\r\n\r\n img.onload = () => {\r\n // Scale up canvas resolution (2x or more)\r\n const scale = 2;\r\n const canvas = document.createElement('canvas');\r\n canvas.width = img.width * scale;\r\n canvas.height = img.height * scale;\r\n\r\n const ctx = canvas.getContext('2d');\r\n if (ctx) {\r\n ctx.scale(scale, scale); // Draw image at higher quality\r\n ctx.drawImage(img, 0, 0);\r\n const base64 = canvas.toDataURL('image/png', 1.0); // 1.0 = highest quality\r\n resolve(base64);\r\n } else {\r\n reject('Failed to get canvas context.');\r\n }\r\n };\r\n\r\n img.onerror = () => reject('Failed to load image: ' + imagePath);\r\n });\r\n }\r\n\r\n exportPDF(data: any) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n data = Object.values(this.dataMap)[0];\r\n const doc = new jsPDF({\r\n orientation: 'landscape',\r\n unit: 'mm',\r\n format: [400, 210]\r\n });\r\n\r\n const pageWidth = doc.internal.pageSize.width;\r\n\r\n //Title\r\n const title = `Branch Activity Send`;\r\n doc.setFontSize(15);\r\n doc.setFont('helvetica', 'bold');\r\n const textWidth = doc.getTextWidth(title);\r\n doc.text(title, doc.internal.pageSize.width / 2, 15, { align: 'center' });\r\n\r\n //Add Image\r\n if (this.logoBase64) {\r\n doc.addImage(this.logoBase64, 'PNG', 15, 5, 25, 20);\r\n }\r\n\r\n //Info block\r\n const infoY = 30;\r\n const leftMargin = 15;\r\n const lineHeight = 7;\r\n const infoLines = [\r\n ['Report User And Time:', this.user],\r\n ['Report Time', this.reportDate]\r\n // ['Report Period:', `${this.fromDate} - ${this.toDate}`]\r\n ]\r\n\r\n doc.setFontSize(10);\r\n infoLines.forEach(([label, value], i) => {\r\n const y = infoY + i * lineHeight;\r\n // Draw label in bold\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(label, leftMargin, y);\r\n\r\n // Draw value in normal font right after label\r\n const labelWidth = doc.getTextWidth(label + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(value, leftMargin + labelWidth, y);\r\n });\r\n\r\n const filteredColumns = this.columnDefs.filter(col =>\r\n !(col.headerName?.toLowerCase().includes('sr. no') || col.field?.toLowerCase().includes('srno') || col.field?.toLowerCase().includes('serial'))\r\n );\r\n\r\n // Prepare headers with Sr No\r\n const headers = ['Sr No', ...filteredColumns.map(col => col.headerName || col.field!)];\r\n\r\n let Rows: any[] = [];\r\n\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n Rows.push([{ content: key, colSpan: 15 }]);\r\n const rows = reports.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field!];\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n return value ?? '';\r\n });\r\n Rows.push([index + 1, ...rowData]);\r\n return [index + 1, ...rowData];\r\n });\r\n // Rows.push(rows);\r\n }\r\n\r\n // Prepare rows with Sr No\r\n const rows = data.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field!];\r\n return value ?? '';\r\n });\r\n return [index + 1, ...rowData];\r\n });\r\n\r\n // Generate dynamic column styles for auto-width\r\n const columnStyles: { [key: number]: any } = {};\r\n headers.forEach((_, i) => {\r\n columnStyles[i] = { cellWidth: 'auto' };\r\n });\r\n\r\n columnStyles[2] = { cellWidth: 40 };\r\n\r\n // Render Table\r\n doc.autoTable({\r\n head: [headers],\r\n body: Rows,\r\n startY: infoY + infoLines.length * lineHeight + 5,\r\n theme: 'grid',\r\n headStyles: {\r\n fillColor: [220, 220, 220],\r\n textColor: 0,\r\n fontStyle: 'bold',\r\n fontSize: 9,\r\n halign: 'center'\r\n },\r\n bdyStyles: {\r\n fontSize: 8,\r\n fillColor: [255, 255, 255],\r\n textColor: [0, 0, 0]\r\n },\r\n styles: {\r\n cellPadding: 2,\r\n overflow: 'linebreak',\r\n minCellHeight: 6\r\n },\r\n columnStyles: columnStyles\r\n });\r\n doc.save(\"Branch-Activity-Send-Report.pdf\")\r\n }\r\n\r\n exportExcel(data: any) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet('Branch-Activity-Send-Report');\r\n const totalColumns = this.columnDefs.length;\r\n\r\n // Title Row\r\n const titleRow = worksheet.addRow([\"Branch Activity Send\"]);\r\n titleRow.font = { bold: true, size: 14 };\r\n titleRow.height = 60;\r\n worksheet.mergeCells(`A${titleRow.number}:${String.fromCharCode(64 + totalColumns)}${titleRow.number}`);\r\n //Center align the title\r\n const masterCell = worksheet.getCell(`A${titleRow.number}`);\r\n masterCell.alignment = { horizontal: 'center', vertical: 'middle' };\r\n\r\n // Add image if available\r\n if (this.logoBase64) {\r\n const base64Data = this.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\r\n\r\n // Place image at top-left (e.g., A1:C4)\r\n worksheet.addImage(imageId, {\r\n tl: { col: 0, row: 0 },\r\n ext: { width: 150, height: 50 },\r\n });\r\n }\r\n\r\n //Meta Data\r\n const meta: [string, string][] = [\r\n ['Report User ', this.user],\r\n ['Report Time', this.reportDate]\r\n // ['Report Period', `${this.fromDate} - ${this.toDate}`]\r\n ]\r\n\r\n meta.forEach(([label, value]) => {\r\n const row = worksheet.addRow([label, value]);\r\n //Bold the key column\r\n const labelCell = row.getCell(1);\r\n labelCell.font = { bold: true };\r\n })\r\n // For Empty Row\r\n worksheet.addRow([]);\r\n\r\n // Add Header Row for Data Table\r\n const headerRow = worksheet.addRow(this.columnDefs.map(col => col.headerName || col.field));\r\n headerRow.font = { bold: true };\r\n for (let i = 1; i <= this.columnDefs.length; i++) {\r\n const cell = headerRow.getCell(i);\r\n cell.fill = {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: { argb: 'D9D9D9' },\r\n };\r\n }\r\n\r\n headerRow.alignment = {\r\n wrapText: true,\r\n vertical: 'top',\r\n horizontal: 'center'\r\n };\r\n headerRow.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n\r\n const dataStartRow = worksheet.lastRow!.number + 1;\r\n const branchRows = [];\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n console.log('Key:', key);\r\n console.log('Reports:', reports);\r\n const row = worksheet.addRow([`${key}`]);\r\n worksheet.mergeCells(row.number, 1, row.number, 10);\r\n branchRows.push(row.number);\r\n // Add Data Rows\r\n reports.forEach(row => {\r\n const rowData = this.columnDefs.map(col => {\r\n let value = row[col.field!];\r\n // Format currency fields\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n if (!isNaN(value) && value !== null && value !== '') {\r\n return `\\t ${value}`;\r\n }\r\n return value ?? '';\r\n })\r\n const dataRow = worksheet.addRow(rowData);\r\n dataRow.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n });\r\n worksheet.addRow([]);\r\n }\r\n\r\n // Auto column width ONLY based on data rows\r\n for (let i = 1; i <= totalColumns; i++) {\r\n let maxLength = 10;\r\n for (let rowNum = dataStartRow; rowNum <= worksheet.lastRow!.number; rowNum++) {\r\n if (branchRows.indexOf(x => x === rowNum) === -1) {\r\n continue;\r\n }\r\n const cell = worksheet.getRow(rowNum).getCell(i);\r\n const val = cell.value ? cell.value.toString() : '';\r\n maxLength = Math.max(maxLength, val.length);\r\n }\r\n worksheet.getColumn(i).width = maxLength + 2;\r\n }\r\n worksheet.getColumn(2).width = 20;\r\n worksheet.getColumn(3).width = 15;\r\n // Export\r\n workbook.xlsx.writeBuffer().then(buffer => {\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n })\r\n FileSaver.saveAs(blob, 'Branch-Activity-Send-Report.xlsx');\r\n })\r\n }\r\n\r\n exportCSV(data: any[]) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n const metadata = [\r\n ['Report Title', 'Branch Activity Send'],\r\n ['Report Time', this.reportDate]\r\n // ['Report User', this.user]\r\n ];\r\n\r\n const filteredCols = this.columnDefs.filter(\r\n col =>\r\n !(col.headerName?.toLowerCase().includes('sr. no') ||\r\n col.field?.toLowerCase().includes('sr. no'))\r\n );\r\n\r\n const headers = ['Sr No', ...filteredCols.map(col => col.headerName || col.field!)];\r\n\r\n let Rows: any[][] = []\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n Rows.push([key]);\r\n reports.map((row, index) => {\r\n const rowVals = filteredCols.map(col => {\r\n let v = row[col.field!];\r\n if (currencyFields.includes(col.field) && v != null) {\r\n v = parseFloat(v).toFixed(3);\r\n }\r\n if (col.field === 'transactionNumber' || col.headerName === 'Transaction Number') {\r\n return `\\t ${v}`;\r\n }\r\n return v ?? '';\r\n });\r\n Rows.push([index + 1, ...rowVals]);\r\n return [index + 1, ...rowVals];\r\n })\r\n }\r\n\r\n const aoa: any[][] = [\r\n ...metadata,\r\n [], // blank row for separation\r\n headers,\r\n ...Rows\r\n ];\r\n\r\n // convert to worksheet & CSV\r\n const ws = XLSX.utils.aoa_to_sheet(aoa);\r\n const csv = XLSX.utils.sheet_to_csv(ws, {\r\n FS: ',', RS: '\\n', blankrows: false, forceQuotes: false\r\n } as any);\r\n\r\n // trigger download\r\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\r\n saveAs(blob, 'Branch-Activity-Send-Report.csv');\r\n }\r\n\r\n\r\n public formatDate(params: any): string {\r\n return formatDate(new Date(params.value), 'dd/MM/yyyy', 'en-US');\r\n }\r\n\r\n filter(text: string) {\r\n this.searchText = text;\r\n if (this.searchText == null) {\r\n return;\r\n }\r\n if (this.searchText?.trim().length === 0) {\r\n this.filteredData = structuredClone(this.dataMap);\r\n return;\r\n }\r\n this.searchText = this.searchText?.trim()?.toLowerCase();\r\n for (const [key, entries] of Object.entries(this.dataMap)) {\r\n const filteredData = entries.filter(entry => Object.values(entry)\r\n .some(val => {\r\n let a: string = val.toString().toLowerCase();\r\n return a.search(this.searchText) == -1 ? false : true;\r\n }))\r\n\r\n this.filteredData[key] = filteredData;\r\n }\r\n this.filteredData;\r\n }\r\n\r\n //event handler for filter component\r\n handleSearch(criteria: any) {\r\n this.reportDate = new Date().toISOString();\r\n this.reportDate = formatDate(this.reportDate, 'dd/MM/yyyy hh:mm a', 'en-US');\r\n const modal = criteria.modal;\r\n this.user = criteria.sysUserID;\r\n console.log(modal);\r\n // Code For Meta Data\r\n this.metaDataOne = {\r\n 'Report User': this.user,\r\n 'Report Time': this.reportDate\r\n }\r\n const searchData = {\r\n \"StartDate\": modal.fromDate,\r\n \"EndDate\": modal.toDate,\r\n \"SendCountryCode\": modal.sendCountry,\r\n \"RecvCountryCode\": modal.receiveCountry,\r\n \"BusinessPartnerCode\": modal.client,\r\n \"TransactionStatus\": modal.transactionStatus.join(\",\"),\r\n \"PayoutCurrency\": \"ALL\",\r\n \"TransactionType\": \"ALL\",\r\n \"BranchCode\": modal.branch,\r\n \"CompanyCode\": \"BH\"\r\n };\r\n\r\n try {\r\n const sdate = new Date(searchData?.StartDate);\r\n const edate = new Date(searchData?.EndDate);\r\n searchData.StartDate = sdate.toISOString().split(\"T\")[0];\r\n searchData.EndDate = edate.toISOString().split(\"T\")[0];\r\n } catch(err){\r\n throw new Error(\"Invalid Date\");\r\n }\r\n\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getBranchActivityReceiveReport(searchData).subscribe({\r\n next: (data) => {\r\n console.log(data);\r\n this.filteredData = data;\r\n this.dataMap = JSON.parse(JSON.stringify(data));;\r\n this.noDataFound = Object.keys(data).length == 0 ? true : false;\r\n this.paginationArray = new Array(Object.keys(this.filteredData).length).fill(15);\r\n },\r\n\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n\r\n complete: () => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n this.showReport = true;\r\n }\r\n })\r\n }\r\n\r\n}\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\">\r\n</lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<section *ngIf=\"showReport\" class=\"my-2 mx-1\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"false\" [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"\"(exportEvent)=\"handleExport($event)\" (searchEvent)=\"filter($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let item of filteredData | keyvalue; let i = index\">\r\n <ngb-panel *ngIf=\"item.value.length > 0\" [id]=\"'panel-' + i\">\r\n\r\n <ng-template ngbPanelTitle style=\"height: 10%;\">\r\n <label\r\n style=\"font-weight: bold; font-size: 13px; line-height: 1.2; margin: 0; padding: 2px 0;color: #0c63e4;\">{{\r\n item.key\r\n }}</label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"item?.value?.length\"\r\n [defaultSize]=\"'15'\" [gridApi]=\"gridApis[i]\">\r\n ></lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"width: 100%;height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"item.value\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" [gridOptions]=\"{\r\n suppressHorizontalScroll: true,\r\n scrollbarWidth: 0\r\n }\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event,i)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n </ng-template>\r\n\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data Found\r\n </div>\r\n\r\n</section>\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { CancellationTransaction } from '../../models/cancellation-transaction-report/cancellation-transaction.model';\r\nimport { GridOptions } from 'ag-grid-community';\r\nimport { GenericExportService } from '../../shared/export-generic.service';\r\nimport { formatDate } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-cancellation-transaction-report',\r\n templateUrl: './cancellation-transaction-report.component.html',\r\n styleUrls: ['./cancellation-transaction-report.component.scss']\r\n})\r\n\r\nexport class CancellationTransactionReportComponent implements OnInit, OnDestroy {\r\n ReportName = \"Cancellation Transaction\";\r\n user: string;\r\n private destroy$ = new Subject<void>();\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n hasSearched: boolean = false;\r\n noDataFromApi: boolean = false;\r\n errorMessage: string;\r\n cancellationData: CancellationTransaction[];\r\n pageSize = 15;\r\n metaDataOne: Record<string, string>;\r\n rowData: CancellationTransaction[] = [];\r\n currentDateTime: Date = new Date();\r\n searchText: string;\r\n selectedExportOption = 'excel';\r\n \r\n dataMap: Record<string, CancellationTransaction[]> = {};\r\n filteredData: Record<string, CancellationTransaction[]> = {};\r\n \r\n paginationArray: (number | 'All')[] = [];\r\n gridApis: any[] = [];\r\n\r\n // ag-Grid properties\r\n columnDefs = [\r\n // { headerName: 'Branch Name & Code', field: 'sendAgentBranchNameAndCode' },\r\n { headerName: 'Txn Date & Time', field: 'txnDateAndTime', flex: 1, minWidth: 87, cellClass: 'ag-left-aligned-cell', tooltipValueGetter: params => this.formatDateTimeDDMMYYYY_AMPM(params), valueFormatter: this.formatDateTimeDDMMYYYY_AMPM.bind(this) },\r\n { headerName: 'Cancellation Branch Date', field: 'cancellationBranchDateTime', flex: 1, minWidth: 105, valueFormatter: this.dateValueFormatter('dd/MM/yyyy HH:mm'), tooltipValueGetter: this.dateValueFormatter('dd/MM/yyyy HH:mm') },\r\n { headerName: 'Cancellation Business Date', field: 'cancellationBusinessDate', flex: 1, minWidth: 105, valueFormatter: this.dateValueFormatter('dd/MM/yyyy'), tooltipValueGetter: this.dateValueFormatter('dd/MM/yyyy') },\r\n { headerName: 'Transaction Number', field: 'transactionNumber', flex: 1, minWidth: 100, tooltipField: 'transactionNumber' },\r\n { headerName: 'Product', field: 'product', flex: 1, minWidth: 100, tooltipField: 'product' },\r\n { headerName: 'Send Client Branch Code', field: 'sendAgentBranchCode', flex: 1, minWidth: 105, tooltipField: 'sendAgentBranchCode' },\r\n { headerName: 'Send Principal Client Code (If Applicable)', field: 'sendPrincipalAgentCode', flex: 1, minWidth: 120, tooltipField: 'sendPrincipalAgentCode' },\r\n { headerName: 'Receive Client Code', field: 'recvAGTcode', flex: 1, minWidth: 100, tooltipField: 'recvAGTcode' },\r\n { headerName: 'Receive CcyCode', field: 'payoutCCcode', flex: 1, minWidth: 84, tooltipField: 'payoutCCcode' },\r\n { headerName: 'Receive Amount', field: 'payOutAmount', flex: 1, minWidth: 100, tooltipField: 'payOutAmount', cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatCurrency },\r\n { headerName: 'Send CcyCode', field: 'payinCCcode', flex: 1, minWidth: 69, tooltipField: 'payinCCcode' },\r\n { headerName: 'Send Amount', field: 'payInAmount', flex: 1, minWidth: 100, tooltipField: 'payInAmount', cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatCurrency },\r\n { headerName: 'Service Fee', field: 'txnCommission', flex: 1, minWidth: 100, tooltipField: 'txnCommission', cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatCurrency },\r\n { headerName: 'Tax', field: 'tax', flex: 1, minWidth: 100, tooltipField: 'tax', cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatCurrency },\r\n { headerName: 'Total Send Amount', field: 'totalPayinAmount', flex: 1, minWidth: 100, tooltipField: 'totalPayinAmount', cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatCurrency },\r\n { headerName: 'Transaction Status', field: 'status', flex: 1, minWidth: 100, tooltipField: 'status' },\r\n { headerName: 'Cancellation Location Code', field: 'cancellationLocationCode', flex: 1, minWidth: 105, tooltipField: 'cancellationLocationCode' },\r\n { headerName: 'Cancellation Reason', field: 'cancellationReason', flex: 1, minWidth: 105, tooltipField: 'cancellationReason' },\r\n { headerName: 'Cancelled By User', field: 'statusChangedBy', flex: 1, minWidth: 100, tooltipField: 'statusChangedBy' } \r\n // { headerName: 'Business Date Time', field: 'businessDateTime' }\r\n];\r\n\r\n gridOptions: GridOptions = {\r\n defaultColDef: {\r\n sortable: true,\r\n filter: true,\r\n resizable: true,\r\n wrapText: true,\r\n autoHeight: true,\r\n autoHeaderHeight: true,\r\n cellStyle: { whiteSpace: 'normal' },\r\n },\r\n suppressRowClickSelection: true,\r\n animateRows: true,\r\n pagination: true,\r\n paginationPageSize: 15\r\n};\r\n\r\n constructor(\r\n private reportService: ReportService,\r\n private exportService: GenericExportService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n handleSearch(criteria: any): void {\r\n const modal = criteria.modal;\r\n this.user = criteria.sysUserID;\r\n this.metaDataOne = {\r\n 'Report User': this.user,\r\n 'Report Time': formatDate(this.currentDateTime, 'dd/MM/yyyy hh:mm a', 'en-US')\r\n }\r\n\r\n const searchData = {\r\n BusinessPartnerCode: modal.client,\r\n StartDate: modal.fromDate,\r\n EndDate: modal.toDate,\r\n // StartDate: modal.fromDate.toString().split(\"T\")[0],\r\n // EndDate: modal.toDate.toString().split('T')[0],\r\n BranchCode: modal.branch,\r\n SendCountryCode: modal.sendCountry,\r\n RecvCountryCode: modal.receiveCountry,\r\n TransactionType: modal.product,\r\n PayoutCurrency: modal.receiveCurrency,\r\n };\r\n try {\r\n const sdate = new Date(searchData?.StartDate);\r\n const edate = new Date(searchData?.EndDate);\r\n searchData.StartDate = sdate.toISOString().split(\"T\")[0];\r\n searchData.EndDate = edate.toISOString().split(\"T\")[0];\r\n } catch(err){\r\n throw new Error(\"Invalid Date\");\r\n }\r\n this.dataMap = {};\r\n this.filteredData = {};\r\n this.searchText='';\r\n this.errorMessage = '';\r\n this.noDataFromApi = false;\r\n this.selectedExportOption = 'excel';\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n\r\n this.reportService.getCancellationReport(searchData)\r\n .pipe(\r\n takeUntil(this.destroy$),\r\n finalize(() => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n this.hasSearched = true;\r\n })\r\n )\r\n .subscribe({\r\n next: (data) => {\r\n // 1) Flat list\r\n this.rowData = Array.isArray(data) ? data : [];\r\n\r\n // If API returns no data, set the flag and stop\r\n if (this.rowData.length === 0) {\r\n this.noDataFromApi = true;\r\n this.dataMap = {};\r\n this.filteredData = {};\r\n return;\r\n }\r\n\r\n // 2) Group into Record<string, CancellationTransaction[]>\r\n this.dataMap = this.groupByBranchToRecord(this.rowData);\r\n\r\n // 3) Start filteredData same as dataMap\r\n this.filteredData = this.dataMap;\r\n //this.proxyData = structuredClone(this.dataMap);\r\n\r\n // 4) Pagination array: one entry per group\r\n const groupCount = Object.keys(this.filteredData).length;\r\n this.paginationArray = new Array(groupCount).fill(this.pageSize);\r\n },\r\n error: (err) => {\r\n console.error('Search error:', err);\r\n this.errorMessage = 'Failed to fetch cancellation transaction data. Please try again.';\r\n this.dataMap = {}; // Clear data on error\r\n this.filteredData = {}; // Clear data on error\r\n this.loadingState = this.ComponentLoadingState.Error;\r\n }\r\n });\r\n }\r\n\r\n filter(text: string): void {\r\n this.searchText = text;\r\n const searchText = this.searchText ? this.searchText.trim().toLowerCase() : '';\r\n\r\n // If the search text is empty, restore the original data\r\n if (searchText.length === 0) {\r\n this.filteredData = structuredClone(this.dataMap);\r\n return;\r\n }\r\n\r\n // Create a new object for the filtered results\r\n const newFilteredData: Record<string, CancellationTransaction[]> = {};\r\n\r\n // Always iterate over the original, complete dataMap\r\n for (const [key, entries] of Object.entries(this.dataMap)) {\r\n const filteredEntries = entries.filter(entry =>\r\n Object.values(entry).some(val => {\r\n // Ensure val is not null or undefined before calling toString()\r\n return val != null && val.toString().toLowerCase().includes(searchText);\r\n })\r\n );\r\n\r\n // Only add the group to the new filtered data if it has matching entries\r\n if (filteredEntries.length > 0) {\r\n newFilteredData[key] = filteredEntries;\r\n }\r\n }\r\n\r\n // Replace the old filteredData with the newly computed results\r\n this.filteredData = newFilteredData;\r\n }\r\n\r\n formatCurrency(params) {\r\n if (params.value != null) {\r\n return params.value.toLocaleString('en-US', { minimumFractionDigits: 3 });\r\n }\r\n return '';\r\n }\r\n\r\n dateValueFormatter(format: string) {\r\n return (params: any) => {\r\n if (!params.value) return '';\r\n try {\r\n return formatDate(params.value, format, 'en-US');\r\n } catch {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n formatDateTimeDDMMYYYY_AMPM(params) {\r\n const v = params.value;\r\n if (!v) return '';\r\n\r\n let date: Date;\r\n\r\n if (v instanceof Date) {\r\n date = v;\r\n } else if (/^\\d{4}-\\d{2}-\\d{2}T/.test(v)) {\r\n date = new Date(v); // ISO format\r\n } else {\r\n date = this.parseDDMMYYYYhhmmAMPM(v);\r\n }\r\n\r\n if (!date || isNaN(date.getTime())) return '';\r\n const pad = (n) => (n < 10 ? '0' + n : n);\r\n let hours = date.getHours();\r\n const minutes = pad(date.getMinutes());\r\n const ampm = hours >= 12 ? 'PM' : 'AM';\r\n hours = hours % 12;\r\n hours = hours ? hours : 12;\r\n return `${pad(date.getDate())}/${pad(date.getMonth() + 1)}/${date.getFullYear()} ${pad(hours)}:${minutes} ${ampm}`;\r\n }\r\n\r\n\r\n parseDDMMYYYYhhmmAMPM(value: string): Date | null {\r\n // Match 'DD/MM/YYYY hh:mm AM/PM'\r\n const match = /^(\\d{2})\\/(\\d{2})\\/(\\d{4}) (\\d{2}):(\\d{2}) ([AP]M)$/.exec(value);\r\n if (!match) return null;\r\n let [, dd, mm, yyyy, hh, min, ampm] = match;\r\n let hours = parseInt(hh, 10);\r\n if (ampm === 'PM' && hours !== 12) hours += 12;\r\n if (ampm === 'AM' && hours === 12) hours = 0;\r\n return new Date(\r\n parseInt(yyyy, 10),\r\n parseInt(mm, 10) - 1,\r\n parseInt(dd, 10),\r\n hours,\r\n parseInt(min, 10)\r\n );\r\n }\r\n\r\n onGridReady(params: any, id: number) {\r\n params.api.sizeColumnsToFit();\r\n this.gridApis[id] = params.api;\r\n }\r\n\r\n onGridSizeChanged(params: any) {\r\n params.api.sizeColumnsToFit();\r\n }\r\n\r\n getKeys(obj: Record<string, unknown>): string[] {\r\n return obj ? Object.keys(obj) : [];\r\n }\r\n\r\n hasAnyGroups(): boolean {\r\n return this.filteredData && this.getKeys(this.filteredData).length > 0;\r\n }\r\n\r\n hasNoGroups(): boolean {\r\n return this.filteredData && this.getKeys(this.filteredData).length === 0 && this.loadingState == ComponentLoadingStates.Complete;\r\n }\r\n\r\n getPageSizeFor(index: number, total: number): number {\r\n const val = this.paginationArray[index];\r\n if (val === 'All') {\r\n return total; // show all rows for that panel\r\n }\r\n // Ensure it’s a number\r\n return Number(val ?? this.pageSize);\r\n }\r\n\r\n private groupByBranchToRecord(rows: CancellationTransaction[]): Record<string, CancellationTransaction[]> {\r\n const out: Record<string, CancellationTransaction[]> = {};\r\n for (const item of rows) {\r\n const key = item.sendAgentBranchNameAndCode || 'Unknown Branch';\r\n if (!out[key]) out[key] = [];\r\n out[key].push(item);\r\n }\r\n return out;\r\n }\r\n\r\n isDataAvailable(): boolean {\r\n return this.hasSearched && !this.noDataFromApi && !this.errorMessage && this.loadingState == ComponentLoadingStates.Complete;\r\n }\r\n\r\n handleExport(option:string): void {\r\n this.selectedExportOption = option;\r\n if (!this.hasAnyGroups()) {\r\n alert(\"There is no data to export based on your current filter.\");\r\n return;\r\n }\r\n // If no data, do nothing.\r\n if (!this.filteredData || Object.keys(this.filteredData).length === 0) {\r\n alert(\"No data to export\");\r\n return;\r\n }\r\n const title = \"Cancellation Transaction\";\r\n const reportTimeFormatter = this.dateValueFormatter('dd/MM/yyyy hh:mm a');\r\n const metadata: [string, string][] = [\r\n ['Report User ', this.user ?? ''],\r\n ['Report Time ', reportTimeFormatter({ value: new Date() })]\r\n ];\r\n const columns = this.columnDefs;\r\n const data = this.dataMap;\r\n // const data = this.filteredData;\r\n const options = {\r\n currencyFields: [\r\n 'payOutAmount', 'payInAmount', 'totalPayinAmount', 'txnCommission', 'tax'\r\n ],\r\n // specify all date fields expected\r\n dateFields: ['txnDateAndTime', 'cancellationBranchDateTime', 'cancellationBusinessDate'],\r\n\r\n dateFieldFormats: {\r\n txnDateAndTime: 'dd/MM/yyyy hh:mm a', // e.g. 11/07/2025 10:56 PM\r\n cancellationBranchDateTime: 'dd/MM/yyyy HH:mm', // e.g. 28/07/2025 13:08\r\n cancellationBusinessDate: 'dd/MM/yyyy' // e.g. 28/07/2025\r\n },\r\n\r\n specialDecimalFields: {\r\n rate: 8 // future field with 8 decimal places\r\n },\r\n\r\n groupByKey: true\r\n };\r\n\r\n switch (this.selectedExportOption) {\r\n case 'excel':\r\n this.exportService.exportToExcel({ title, metadata, columns, data, options });\r\n break;\r\n case 'pdf':\r\n this.exportService.exportToPdf({ title, metadata, columns, data, options });\r\n break;\r\n case 'csv':\r\n this.exportService.exportToCsv({ title, metadata, columns, data, options });\r\n break;\r\n default:\r\n alert(\"Please select an export format.\");\r\n }\r\n }\r\n\r\n}\r\n\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\">\r\n</lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"hasSearched && noDataFromApi\">\r\n No transactions found matching your search criteria.\r\n</div>\r\n\r\n<div *ngIf=\"errorMessage\" class=\"error alert alert-danger mt-3\">{{ errorMessage }}</div>\r\n\r\n<div *ngIf=\"isDataAvailable() && !errorMessage\">\r\n <lib-metadata \r\n [reportName]=\"ReportName\" \r\n [showmetaDataOne]=\"true\" \r\n [showmetaDataTwo]=\"false\" \r\n [metaDataOne]=\"metaDataOne\"\r\n [metaDataTwo]=\"\" \r\n (exportEvent)=\"handleExport($event)\" \r\n (searchEvent)=\"filter($event)\">\r\n </lib-metadata>\r\n</div>\r\n\r\n<div style=\"margin-top: 20px;\" *ngIf=\"hasAnyGroups() && !errorMessage\">\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let item of filteredData | keyvalue; let i = index\">\r\n\r\n <ngb-panel *ngIf=\"item.value.length > 0\" [id]=\"'panel-' + i\">\r\n\r\n <ng-template ngbPanelTitle style=\"height: 10%;\">\r\n <label style=\"font-weight: bold; font-size: 13px; line-height: 1.2; margin: 0; padding: 2px 0;color: #0c63e4;\">\r\n {{ item.key }}\r\n </label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"item?.value?.length\"\r\n [defaultSize]=\"'15'\" [gridApi]=\"gridApis[i]\">\r\n ></lib-page-size-selector>\r\n\r\n <ag-grid-angular\r\n class=\"ag-theme-alpine cancellation-grid\"\r\n style=\"width: 100%; height: 370px;\"\r\n [gridOptions]=\"gridOptions\"\r\n [rowData]=\"item.value\"\r\n [columnDefs]=\"columnDefs\"\r\n [pagination]=\"true\"\r\n [paginationPageSize]=\"getPageSizeFor(i, item.value.length)\"\r\n (gridReady)=\"onGridReady($event, i)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n </ng-template>\r\n\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n</div>\r\n\r\n<div class=\"alert alert-info mt-3\" *ngIf=\"hasSearched && !noDataFromApi && hasNoGroups() && !errorMessage && !hasAnyGroups()\">\r\n Your search filter did not match any transactions in the current report. Clear the search box to see all data.\r\n</div>","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { AccountingReportModel } from '../../models/accounting-report/accounting-report-model';\r\nimport { ColDef, ColumnApi, GridApi, GridReadyEvent } from 'ag-grid-community';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { ExportService } from '../../shared/export.service';\r\nimport { formatDate } from '@angular/common';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { AccountingReportBranchGroup } from '../../models/accounting-report/accounting-report-branch-group';\r\nimport jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\n\r\ndeclare module 'jspdf' {\r\n interface jsPDF {\r\n autoTable: (options: any) => jsPDF;\r\n }\r\n}\r\n\r\nexport interface AccountingReportRequest {\r\n startDate: string;\r\n endDate: string;\r\n sendCountryCode: string;\r\n recvCountryCode: string;\r\n businessPartnerCorrelationID: string;\r\n transactionStatus: string;\r\n payoutCurrency: string;\r\n transactionType: string;\r\n branchCode: string;\r\n companyCode: string;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-accounting-report',\r\n templateUrl: './accounting-report.component.html',\r\n styleUrls: ['./accounting-report.component.scss'],\r\n})\r\nexport class AccountingReportComponent implements OnInit {\r\n\r\n ReportName: string = \"Accounting\";\r\n reportUser: any;\r\n reportTime: any;\r\n reportPeriod: any;\r\n branchNameAndCode: any;\r\n subGroupColumn: any;\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n noDataFound: boolean = false;\r\n\r\n leftData: Record<string, string>;\r\n rightData: Record<string, string>;\r\n\r\n searchText: string = '';\r\n rowData = [];\r\n accountingReportModel: AccountingReportModel;\r\n pageSize: number = 15;\r\n\r\n selectedExportOption: string = 'excel';\r\n exportFormats = [{ formatName: \"Excel\", code: 'excel' }, { formatName: \"PDF\", code: 'pdf' }, { formatName: \"CSV\", code: 'csv' }]\r\n\r\n defaultColDef: ColDef = {\r\n resizable: true,\r\n sortable: false,\r\n minWidth: 40,\r\n suppressSizeToFit: false,\r\n cellStyle: { userSelect: 'text', 'line-height': '1.2', 'white-space': 'normal', 'word-break': 'normal', 'overflow-wrap': 'break-word' },\r\n\r\n // Header wrapping\r\n wrapHeaderText: true,\r\n autoHeaderHeight: true,\r\n\r\n // Cell wrapping\r\n wrapText: true,\r\n autoHeight: true\r\n };\r\n\r\n columnDefs: ColDef[] = [\r\n { headerName: 'BusinessDate', field: 'businessDate', tooltipField: 'businessDate' },\r\n { headerName: 'TxnDate&Time', field: 'transactionDateAndTime', tooltipField: 'transactionDateAndTime', minWidth: 110, },\r\n { headerName: 'Transaction Number', field: 'transactionNumber', tooltipField: 'transactionNumber' },\r\n { headerName: 'SendClient', field: 'sendClient', tooltipField: 'sendClient' },\r\n { headerName: 'Principle SendClient (If Applicable)', field: 'principleSendClient', tooltipField: 'principleSendClient' },\r\n { headerName: 'ReceiveClient', field: 'receiveClient', tooltipField: 'receiveClient' },\r\n { headerName: 'Principle ReceiveClient (If Applicable)', field: 'principleReceiveClient', tooltipField: 'principleReceiveClient' },\r\n { headerName: 'ReceiveCcy', field: 'receiveCurrency', tooltipField: 'receiveCurrency' },\r\n { headerName: 'AmountPaid', field: 'amountPaid', tooltipField: 'amountPaid', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'SendCcy', field: 'sendCurrency', tooltipField: 'sendCurrency', },\r\n { headerName: 'ServiceFee', field: 'serviceFee', tooltipField: 'serviceFee', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'Tax', field: 'tax', tooltipField: 'tax', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'PrincipleSend Amount', field: 'principleSendAmount', tooltipField: 'principleSendAmount', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'Transaction Status', field: 'transactionStatus', tooltipField: 'transactionStatus' },\r\n { headerName: 'SettlementCcy', field: 'settlementCurrency', tooltipField: 'settlementCurrency', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'ClientSettl (in SCcy)', field: 'clientSettlementInSCcy', tooltipField: 'clientSettlementInSCcy', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'ClientSettl (in USD)', field: 'clientSettlementInUSD', tooltipField: 'clientSettlementInUSD', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'ShareType', field: 'shareType', tooltipField: 'shareType' },\r\n { headerName: 'ShareValue', field: 'shareValue', tooltipField: 'shareValue', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'Send/Receive FeeCcy', field: 'sendReceiveFeeCcy', tooltipField: 'sendReceiveFeeCcy' },\r\n { headerName: 'ShareAmt (in USD)', field: 'shareAmountInUSD', tooltipField: 'shareAmountInUSD', cellClass: 'ag-right-aligned-cell' },\r\n { headerName: 'Settlement Rate', field: 'settlementRate', tooltipField: 'settlementRate', cellClass: 'ag-right-aligned-cell' },\r\n ];\r\n\r\n\r\n gridApis: GridApi[] = [];\r\n gridColumnApis: ColumnApi[] = [];\r\n\r\n paginationArray: any[];\r\n ezremitUser: boolean = false;\r\n originalGroupEntries: AccountingReportBranchGroup[] = [];\r\n\r\n constructor(private reportService: ReportService, private exportService: ExportService) { }\r\n\r\n ngOnInit(): void {\r\n const ezremitusername = sessionStorage.getItem('ezremitusername');\r\n if (ezremitusername) {\r\n this.ezremitUser = true;\r\n }\r\n }\r\n\r\n public getAccountingReport(request?: AccountingReportRequest) {\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.accountingReportModel = undefined;\r\n this.branchNameAndCode = undefined;\r\n this.subGroupColumn = undefined;\r\n const finalReq = request;\r\n\r\n this.reportService.getAccountingReport(finalReq).subscribe(data => {\r\n this.accountingReportModel = data;\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n\r\n console.log(this.accountingReportModel);\r\n\r\n this.accountingReportModel.accountingReportByBranchGroups.forEach(group => {\r\n group.sendTransactions.entries = group.sendTransactions.entries.map(entry => ({\r\n ...entry,\r\n businessDate: formatDate(entry.businessDate, 'dd/MM/yyyy', 'en-US'),\r\n transactionDateAndTime: formatDate(entry.transactionDateAndTime, 'dd/MM/yyyy hh:mm a', 'en-US'),\r\n }));\r\n\r\n group.receiveTransactions.entries = group.receiveTransactions.entries.map(entry => ({\r\n ...entry,\r\n businessDate: formatDate(entry.businessDate, 'dd/MM/yyyy', 'en-US'),\r\n transactionDateAndTime: formatDate(entry.transactionDateAndTime, 'dd/MM/yyyy hh:mm a', 'en-US'),\r\n }));\r\n });\r\n\r\n\r\n this.accountingReportModel = data;\r\n this.noDataFound = Object.keys(this.accountingReportModel.accountingReportByBranchGroups).length == 0 ? true : false;\r\n const branchCount = this.accountingReportModel.accountingReportByBranchGroups.length;\r\n this.paginationArray = new Array(branchCount * 2).fill(15);\r\n\r\n\r\n this.reportUser = this.accountingReportModel.reportUser;\r\n this.reportTime = formatDate(new Date(), 'dd/MM/yyyy hh:mm a', 'en-US');\r\n this.reportPeriod = `${formatDate(finalReq.startDate, 'dd/MM/yyyy', 'en-US')} - ${formatDate(finalReq.endDate, 'dd/MM/yyyy', 'en-US')}`;\r\n\r\n this.leftData = {\r\n 'Report User ': `${this.reportUser}`,\r\n 'Report Time': `${this.reportTime}`,\r\n }\r\n\r\n this.rightData = {\r\n 'Report Period': `${this.reportPeriod}`,\r\n 'Company': \"Xpress Money\"\r\n }\r\n\r\n // Deep copy to preserve original data for search\r\n this.originalGroupEntries = this.accountingReportModel.accountingReportByBranchGroups.map(group => ({\r\n ...group,\r\n sendTransactions: {\r\n ...group.sendTransactions,\r\n entries: [...group.sendTransactions.entries]\r\n },\r\n receiveTransactions: {\r\n ...group.receiveTransactions,\r\n entries: [...group.receiveTransactions.entries]\r\n }\r\n }));\r\n\r\n\r\n }, error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n async handleExport(option: string) {\r\n this.selectedExportOption = option;\r\n switch (this.selectedExportOption) {\r\n case 'excel':\r\n this.exportToExcel();\r\n break;\r\n case 'pdf':\r\n this.exportToPdf();\r\n break;\r\n case 'csv':\r\n this.exportToCsv();\r\n break;\r\n default:\r\n alert('Please select an export format.');\r\n }\r\n }\r\n\r\n onSearch(text: string) {\r\n const normalize = (str: any): string =>\r\n str?.toString()\r\n .toLowerCase()\r\n .replace(/,/g, '')\r\n .replace(/\\s+/g, ' ')\r\n .replace(/[\\u200B-\\u200D\\uFEFF]/g, '')\r\n .trim();\r\n\r\n this.searchText = text;\r\n const search = normalize(text);\r\n\r\n if (!this.accountingReportModel?.accountingReportByBranchGroups) return;\r\n\r\n this.accountingReportModel.accountingReportByBranchGroups.forEach((group, index) => {\r\n const originalSendEntries = this.originalGroupEntries[index]?.sendTransactions.entries || [];\r\n const originalReceiveEntries = this.originalGroupEntries[index]?.receiveTransactions.entries || [];\r\n\r\n if (search) {\r\n group.sendTransactions.entries = originalSendEntries.filter(entry =>\r\n Object.values(entry).some(value => normalize(value).includes(search))\r\n );\r\n group.receiveTransactions.entries = originalReceiveEntries.filter(entry =>\r\n Object.values(entry).some(value => normalize(value).includes(search))\r\n );\r\n } else {\r\n group.sendTransactions.entries = [...originalSendEntries];\r\n group.receiveTransactions.entries = [...originalReceiveEntries];\r\n }\r\n\r\n // Reset both grids\r\n [group.sendTransactions.entries, group.receiveTransactions.entries].forEach((entries, idx) => {\r\n const gridApi = this.gridApis[index * 2 + idx]; // keep separate ids for grids\r\n if (gridApi) {\r\n gridApi.setRowData(entries);\r\n if (gridApi.paginationGoToFirstPage) gridApi.paginationGoToFirstPage();\r\n if (gridApi.paginationSetPageSize) gridApi.paginationSetPageSize(this.pageSize);\r\n }\r\n });\r\n });\r\n\r\n }\r\n\r\n onGridReady(params: GridReadyEvent, id: number) {\r\n this.gridApis[id] = params.api;\r\n this.gridColumnApis[id] = params.columnApi; // ✅ keep per grid\r\n\r\n setTimeout(() => this.autoSizeAllColumns(id), 100);\r\n }\r\n\r\n\r\n onGridSizeChanged(params: any, id: number) {\r\n this.autoSizeAllColumns(id);\r\n }\r\n\r\n\r\n autoSizeAllColumns(id: number, skipHeader: boolean = false) {\r\n const columnApi = this.gridColumnApis[id];\r\n if (!columnApi) return;\r\n\r\n const allColumnIds: string[] = [];\r\n columnApi.getColumns().forEach((column: any) => {\r\n allColumnIds.push(column.getId());\r\n });\r\n\r\n columnApi.autoSizeColumns(allColumnIds, skipHeader);\r\n }\r\n\r\n\r\n formatNumber(params: any): string {\r\n if (params.value == null) return '';\r\n\r\n const field = params.colDef.field;\r\n\r\n if (field === 'settlementRate') {\r\n return Number(params.value).toFixed(8);\r\n }\r\n\r\n return Number(params.value).toFixed(3);\r\n }\r\n\r\n private exportToPdf() {\r\n if (!this.accountingReportModel.accountingReportByBranchGroups?.length) return;\r\n const title = 'Accounting Report';\r\n const fileName = 'Accounting-Report.pdf';\r\n\r\n const metadata: [string, string][] = [\r\n ['Report User:', this.reportUser],\r\n ['Report Time:', this.reportTime],\r\n ['Report Period:', this.reportPeriod],\r\n ];\r\n\r\n const doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: [700, 210] });\r\n\r\n const logoWidth = 38.4, logoHeight = 17.5, logoX = 15, logoY = 8;\r\n const pageWidth = doc.internal.pageSize.width;\r\n const titleY = 18;\r\n\r\n // Logo\r\n if (this.exportService['logoBase64']) {\r\n doc.addImage(this.exportService['logoBase64'], 'PNG', logoX, logoY, logoWidth, logoHeight);\r\n }\r\n\r\n // Title\r\n doc.setFontSize(15);\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(title, pageWidth / 2, titleY, { align: 'center' });\r\n\r\n let currentY = titleY + 14;\r\n\r\n // Metadata\r\n doc.setFontSize(10);\r\n metadata.forEach(([label, value], i) => {\r\n const y = currentY + i * 7;\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(label, 15, y);\r\n const labelWidth = doc.getTextWidth(label + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(value ?? '', 15 + labelWidth, y);\r\n });\r\n currentY += metadata.length * 7 + 5;\r\n\r\n // Branches\r\n this.accountingReportModel.accountingReportByBranchGroups.forEach(group => {\r\n doc.setFontSize(10);\r\n doc.setFont('helvetica', 'bold');\r\n\r\n const branchText = `Branch (Name & Code): ${group.branchNameAndCode}`;\r\n doc.text(branchText, 15, currentY);\r\n currentY += 7;\r\n\r\n // Loop subgroups (Send + Receive)\r\n [group.sendTransactions, group.receiveTransactions].forEach(subGroup => {\r\n if (!subGroup.entries?.length) return;\r\n\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(`Sub Group: ${subGroup.subGroupName}`, 15, currentY);\r\n currentY += 5;\r\n\r\n const { headers, rows } = this.prepareAccountingTable(subGroup.entries);\r\n\r\n (doc as any).autoTable({\r\n head: [headers],\r\n body: rows,\r\n startY: currentY,\r\n theme: 'grid',\r\n headStyles: {\r\n fillColor: [220, 220, 220], textColor: 0,\r\n fontStyle: 'bold', fontSize: 9, halign: 'center',\r\n },\r\n bodyStyles: { fontSize: 8, fillColor: [255, 255, 255], textColor: [0, 0, 0] },\r\n styles: { cellPadding: 2, overflow: 'linebreak', minCellHeight: 6 },\r\n });\r\n\r\n currentY = (doc as any).lastAutoTable.finalY + 10;\r\n });\r\n });\r\n\r\n doc.save(fileName);\r\n }\r\n\r\n private exportToExcel() {\r\n if (!this.accountingReportModel.accountingReportByBranchGroups?.length) return;\r\n const title = 'Accounting Report';\r\n const fileName = 'Accounting-Report.xlsx';\r\n\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet('Accounting Report');\r\n let currentRow = 1;\r\n\r\n // Logo\r\n if (this.exportService.logoBase64) {\r\n const base64Data = this.exportService.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\r\n worksheet.addImage(imageId, { tl: { col: 0, row: 0 }, ext: { width: 145, height: 66 }, editAs: 'oneCell' });\r\n }\r\n\r\n // Title\r\n const titleRow = worksheet.getRow(currentRow);\r\n titleRow.getCell(6).value = title;\r\n titleRow.getCell(6).font = { bold: true, size: 16 };\r\n titleRow.getCell(6).alignment = { vertical: 'middle', horizontal: 'left' };\r\n worksheet.mergeCells(`F${currentRow}:J${currentRow}`);\r\n currentRow += 3;\r\n\r\n // Metadata\r\n const metadata: [string, string][] = [\r\n ['Report User', this.reportUser],\r\n ['Report Time', this.reportTime],\r\n ['Report Period', this.reportPeriod],\r\n ];\r\n metadata.forEach(([label, value]) => {\r\n const row = worksheet.getRow(currentRow++);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: `${label}: `, font: { bold: true } },\r\n { text: value ?? '', font: { bold: false } }\r\n ]\r\n };\r\n });\r\n\r\n worksheet.addRow([]); currentRow++;\r\n\r\n // Branches\r\n this.accountingReportModel.accountingReportByBranchGroups.forEach(group => {\r\n const branchRow = worksheet.getRow(currentRow++);\r\n branchRow.getCell(1).value = {\r\n richText: [\r\n { text: 'Branch (Name & Code): ', font: { bold: true } },\r\n { text: group.branchNameAndCode ?? '', font: { bold: false } }\r\n ]\r\n };\r\n worksheet.addRow([]); currentRow++;\r\n\r\n // Loop subgroups\r\n [group.sendTransactions, group.receiveTransactions].forEach(subGroup => {\r\n if (!subGroup.entries?.length) return;\r\n\r\n const subGroupRow = worksheet.getRow(currentRow++);\r\n subGroupRow.getCell(1).value = {\r\n richText: [\r\n { text: 'Sub Group: ', font: { bold: true } },\r\n { text: subGroup.subGroupName ?? '', font: { bold: false } }\r\n ]\r\n };\r\n\r\n worksheet.addRow([]); currentRow++;\r\n\r\n // Headers\r\n const { headers, rows } = this.prepareAccountingTable(subGroup.entries);\r\n const headerRow = worksheet.getRow(currentRow++);\r\n headers.forEach((header, i) => {\r\n const cell = headerRow.getCell(i + 1);\r\n cell.value = header;\r\n cell.font = { bold: true };\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'D9D9D9' } };\r\n cell.alignment = { vertical: 'middle', horizontal: 'center' };\r\n cell.border = { top: { style: 'thin' }, bottom: { style: 'thin' }, left: { style: 'thin' }, right: { style: 'thin' } };\r\n });\r\n\r\n // Rows\r\n rows.forEach(r => {\r\n const row = worksheet.getRow(currentRow++);\r\n r.forEach((val, i) => {\r\n const cell = row.getCell(i + 1);\r\n cell.value = val;\r\n cell.border = { top: { style: 'thin' }, bottom: { style: 'thin' }, left: { style: 'thin' }, right: { style: 'thin' } };\r\n });\r\n });\r\n\r\n worksheet.addRow([]); currentRow++;\r\n });\r\n });\r\n\r\n // 🔹 Auto-adjust column widths (including Sr No)\r\n const allHeaders = ['Sr No', ...this.columnDefs.map(c => c.headerName)];\r\n allHeaders.forEach((header, i) => {\r\n let maxLength = header.length; // start with header length\r\n\r\n this.accountingReportModel.accountingReportByBranchGroups.forEach(group => {\r\n [group.sendTransactions, group.receiveTransactions].forEach(subGroup => {\r\n subGroup.entries.forEach(entry => {\r\n // Sr No column (i = 0) is just numbers\r\n let val = i === 0 ? (subGroup.entries.indexOf(entry) + 1).toString() : (entry[this.columnDefs[i - 1]?.field] ?? '');\r\n const len = val.toString().length;\r\n if (len > maxLength) maxLength = len;\r\n });\r\n });\r\n });\r\n\r\n worksheet.getColumn(i + 1).width = maxLength + 5; // padding\r\n });\r\n\r\n workbook.xlsx.writeBuffer().then(buffer => {\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n });\r\n FileSaver.saveAs(blob, fileName);\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n private prepareAccountingTable(data: any[]): { headers: string[], rows: any[][] } {\r\n const currencyFields = ['amountPaid', 'serviceFee', 'tax', 'principleSendAmount', 'clientSettlementInSCcy'];\r\n const headers = ['Sr No', ...this.columnDefs.map(c => c.headerName)];\r\n\r\n if (!data || data.length === 0) {\r\n return { headers, rows: [] }; // ✅ return headers only, empty rows\r\n }\r\n\r\n const rows = data.map((row, i) => {\r\n return [\r\n i + 1,\r\n ...this.columnDefs.map(col => {\r\n let val = row[col.field];\r\n if (val == null) return '';\r\n if (currencyFields.includes(col.field)) return parseFloat(val).toFixed(3);\r\n if (col.field === 'settlementRate') return parseFloat(val).toFixed(8);\r\n return val;\r\n })\r\n ];\r\n });\r\n\r\n return { headers, rows };\r\n }\r\n\r\n private exportToCsv() {\r\n if (!this.accountingReportModel.accountingReportByBranchGroups?.length) return;\r\n const fileName = 'Accounting-Report.csv';\r\n const rows: string[] = [];\r\n\r\n rows.push('Report Title: Accounting Report');\r\n rows.push('');\r\n rows.push(`Report User: ${this.reportUser}`);\r\n rows.push(`Report Time: ${this.reportTime}`);\r\n rows.push(`Report Period: ${this.reportPeriod}`);\r\n rows.push(`Company: Xpress Money`);\r\n rows.push('');\r\n\r\n this.accountingReportModel.accountingReportByBranchGroups.forEach(group => {\r\n rows.push(`Branch (Name & Code): ${group.branchNameAndCode}`);\r\n\r\n [group.sendTransactions, group.receiveTransactions].forEach(subGroup => {\r\n if (!subGroup.entries?.length) return;\r\n\r\n rows.push(`Sub Group: ${subGroup.subGroupName}`);\r\n\r\n // 🔹 Add \"Sr No\" at the beginning of headers\r\n rows.push(['\"Sr No\"', ...this.columnDefs.map(col => `\"${col.headerName}\"`)].join(','));\r\n\r\n subGroup.entries.forEach((entry, idx) => {\r\n // 🔹 Add serial number at start of each row\r\n const row = [\r\n (idx + 1).toString(),\r\n ...this.columnDefs.map(col => {\r\n const val = entry[col.field];\r\n if (val == null) return '';\r\n if (['amountPaid', 'serviceFee', 'tax', 'principleSendAmount', 'clientSettlementInSCcy'].includes(col.field)) {\r\n return parseFloat(val).toFixed(3);\r\n }\r\n if (col.field === 'settlementRate') {\r\n return parseFloat(val).toFixed(8);\r\n }\r\n return `\"${val}\"`;\r\n })\r\n ].join(',');\r\n rows.push(row);\r\n });\r\n\r\n rows.push('');\r\n });\r\n });\r\n\r\n const blob = new Blob([rows.join('\\n')], { type: 'text/csv;charset=utf-8;' });\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(blob);\r\n link.setAttribute('download', fileName);\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n getReport(payload: any) {\r\n const modal = payload?.modal || payload;\r\n\r\n const req: AccountingReportRequest = {\r\n startDate: modal.fromDate, // yyyy-MM-dd from the filter\r\n endDate: modal.toDate,\r\n sendCountryCode: modal.sendCountry ?? 'ALL',\r\n recvCountryCode: modal.receiveCountry ?? 'ALL',\r\n businessPartnerCorrelationID: modal.client ?? 'ALL',\r\n transactionStatus: modal.transactionStatus.join(\",\"),\r\n payoutCurrency: modal.currency ?? 'ALL',\r\n transactionType: modal.product ?? 'ALL',\r\n branchCode: modal.branch ?? 'ALL',\r\n companyCode: 'ALL' // or 'BH' if your API requires it specifically\r\n };\r\n\r\n this.getAccountingReport(req);\r\n }\r\n\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"></lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"accountingReportModel!=undefined && accountingReportModel.accountingReportByBranchGroups?.length\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let group of accountingReportModel?.accountingReportByBranchGroups; let i = index\">\r\n <ngb-panel [id]=\"'panel-' + i\">\r\n <ng-template ngbPanelTitle>\r\n <label class=\"title-stack line-1\">\r\n {{ group.branchNameAndCode }}\r\n </label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <!-- Send Transactions -->\r\n <div *ngIf=\"group.sendTransactions.entries.length\">\r\n <h6 class=\"subgroupcolumn\">{{ group.sendTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.sendTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.sendTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n\r\n <!-- Receive Transactions -->\r\n <div *ngIf=\"group.receiveTransactions.entries.length\" class=\"mt-3\">\r\n <h6 class=\"subgroupcolumn\">{{ group.receiveTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.receiveTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2 + 1]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.receiveTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2 + 1)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound && loadingState!=ComponentLoadingState.Loading\">\r\n No Data found matching your search criteria.\r\n</div>","import { APP_INITIALIZER, NgModule } from '@angular/core';\r\nimport { AccGlDetailsEnquiryReportComponent } from './components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component';\r\nimport { AgGridModule } from 'ag-grid-angular';\r\nimport { ReportsLibRoutingModule } from './reports-lib-routing.module';\r\n\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { BranchActivitySendReportComponent } from './components/branch-activity-send-report/branch-activity-send-report.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { LoaderComponent } from './shared/loader/loader.component'\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ConfigService } from '../lib/services/config.service';\r\nimport { NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { SharedModule } from './shared/shared.module';\r\nimport { TransactionEnquiryComponent } from './components/transaction-enquiry-report/transaction-enquiry-report.component';\r\nimport { SearchFilterComponent } from './shared/search-filter/search-filter.component';\r\nimport { ReportsLibComponent } from './reports-lib.component';\r\nimport { BranchActivityReceiveReportComponent } from './components/branch-activity-receive-report/branch-activity-receive-report.component';\r\nimport { CancellationTransactionReportComponent } from './components/cancellation-transaction-report/cancellation-transaction-report.component';\r\nimport { AccountingReportComponent } from './components/accounting-report/accounting-report.component';\r\nexport function initializeApp(config: ConfigService) {\r\n const configFile = '/assets/config/app-config.json';\r\n\r\n return () => config.load(configFile).toPromise();\r\n}\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ReportsLibComponent,\r\n AccGlDetailsEnquiryReportComponent,\r\n BranchActivitySendReportComponent,\r\n LoaderComponent,\r\n TransactionEnquiryComponent,\r\n LoaderComponent,\r\n SearchFilterComponent,\r\n BranchActivityReceiveReportComponent,\r\n CancellationTransactionReportComponent,\r\n AccountingReportComponent\r\n ],\r\n imports: [\r\n AgGridModule,\r\n ReportsLibRoutingModule,\r\n CommonModule,\r\n RouterModule,\r\n NgbDatepickerModule,\r\n SharedModule,\r\n BrowserModule,\r\n AgGridModule,\r\n ReportsLibRoutingModule,\r\n FormsModule,\r\n AgGridModule,\r\n NgbModule,\r\n ReactiveFormsModule,\r\n NgSelectModule,\r\n ReactiveFormsModule,\r\n NgbModule,\r\n NgSelectModule\r\n ],\r\n providers: [\r\n ConfigService,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: initializeApp,\r\n deps: [ConfigService],\r\n multi: true\r\n }\r\n ],\r\n exports: [\r\n ReportsLibComponent,\r\n AccGlDetailsEnquiryReportComponent,\r\n BranchActivitySendReportComponent,\r\n TransactionEnquiryComponent,\r\n CancellationTransactionReportComponent,\r\n AccountingReportComponent\r\n ]\r\n})\r\nexport class ReportsLibModule { }\r\n","export interface BranchActivityReportDictionay{\r\n \r\n}\r\n\r\nexport class BranchActivityReport {\r\n SendAgentBranchNameAndCode: string;\r\n BusinessDateTime: string;\r\n TransactionDateTime: string;\r\n TransactionNumber: string;\r\n Product: string;\r\n SendAgentBranchCode: string;\r\n SendPrincipalAgentCode: string;\r\n ReceiveAgentCode: string;\r\n PayoutCCcode: string;\r\n PayoutAmount?: number;\r\n PayinCCcode: string;\r\n PayinAmount?: number;\r\n TransactionCommissionAmount?: number;\r\n Tax?: number;\r\n TotalPayinAmount?: number;\r\n Status: string;\r\n}\r\n","export class BranchActivitySendReportRequestDomainModel {\r\n startDate: string;\r\n endDate: string;\r\n sendCountryCode: string;\r\n recvCountryCode: string;\r\n businessPartnerCode: string;\r\n transactionStatus: string;\r\n payoutCurrency: string;\r\n transactionType: string;\r\n branchCode: string;\r\n companyCode: string;\r\n\r\n constructor(values: Object = {}) {\r\n Object.assign(this, values);\r\n }\r\n}","/*\r\n * Public API Surface of reports-lib\r\n */\r\n\r\n// Services\r\nexport * from './lib/reports-lib.service';\r\nexport * from './lib/services/report.service';\r\nexport * from './lib/services/config.service'\r\nexport * from './lib/shared/export.service';\r\nexport * from './lib/shared/export-generic.service';\r\nexport * from './lib/shared/loader/loader.component';\r\n\r\n// Components\r\nexport * from './lib/reports-lib.component';\r\nexport * from './lib/reports-lib.module';\r\nexport * from './lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component';\r\nexport * from './lib/components/transaction-enquiry-report/transaction-enquiry-report.component';\r\nexport * from './lib/components/branch-activity-send-report/branch-activity-send-report.component';\r\nexport * from './lib/components/branch-activity-receive-report/branch-activity-receive-report.component'\r\nexport * from './lib/components/cancellation-transaction-report/cancellation-transaction-report.component';\r\nexport * from './lib/components/accounting-report/accounting-report.component';\r\n\r\n// Models\r\nexport * from './lib/models/transaction-enquiry-report/transaction-enquiry.model';\r\nexport * from './lib/models/app-config.model';\r\nexport * from './lib/models/branch-activity-report/branch-activity-send-report';\r\nexport * from './lib/models/branch-activity-report/branch-activity-send-report-request-domain-model';\r\nexport * from './lib/models/branch-activity-receive-report/branch-activity-receive.model';\r\nexport * from './lib/models/cancellation-transaction-report/cancellation-transaction.model';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ConfigService","i1","i3","i1.ReportService","i3.ConfigService","i4","i5","i6","i8.LoaderComponent","i1.ExportService","i2.ReportService","i7.PageSizeSelectorComponent","i8.MetadataComponent","i9.SearchFilterComponent","i2.ExportService","i6.PageSizeSelectorComponent","i7.MetadataComponent","i5.PageSizeSelectorComponent","i6.MetadataComponent","i7","i2","i3.PageSizeSelectorComponent","i4.MetadataComponent","i6.LoaderComponent","i7.SearchFilterComponent","i2.GenericExportService"],"mappings":"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"}
|