@sachin9822/reports-lib 0.0.185 → 0.0.186
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 +8 -8
- package/fesm2015/sachin9822-reports-lib.mjs +7 -7
- package/fesm2015/sachin9822-reports-lib.mjs.map +1 -1
- package/fesm2020/sachin9822-reports-lib.mjs +7 -7
- 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/revenue-per-transaction-report/revenue-per-transaction-report.component.ts","../../../projects/reports-lib/src/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.html","../../../projects/reports-lib/src/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.ts","../../../projects/reports-lib/src/lib/components/statement-of-accounts-report/statement-of-accounts-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/lib/models/cancellation-transaction-report/cancellation-transaction.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 { RevenuePerTransactionResponseModel } from '../models/revenue-per-transaction-report/revenue-per-transaction.model';\r\nimport { StatementOfAccountRequest, StatementOfAccountResponse } from '../models/statement-of-account-report/statement-of-accounts.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 getPayInAgents(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetAllPayInAgents`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getBranchByAgent(code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetBranchByAgent/${code}/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(): Observable<PageLoadDataResponse> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/pageLoadData`;\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): Observable<Branch[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/branches/${agentCode}`;\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/viewReport`;\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(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/BranchActivityReceive/GetAllPayoutAgents/`;\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(code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/BranchActivityReceive/GetBranchByPayoutAgent/${code}/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\r\n //Cancellation Transaction Report apis\r\n //Api 1\r\n loadDataforCancallation(): Observable<any> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/CancellationTransactionReport/pageLoadData`;\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): Observable<Branch[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/CancellationTransactionReport/branches/${agentCode}`;\r\n return this.http.get<Branch[]>(apiPath).pipe(\r\n map(response => response || [])\r\n );\r\n }\r\n\r\n //Api 3\r\n getCancellationReport(criteria: any): Observable<Record<string, CancellationTransaction[]>> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/CancellationTransactionReport/viewReport`;\r\n return this.http.post(url, criteria).pipe(map(response => {\r\n return <Record<string, CancellationTransaction[]>>response;\r\n }));\r\n }\r\n\r\n // Revenue Per Transaction Report API\r\n getAgentsForRevenuePerTransaction():Observable<any[]>{\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/RevenuePerTransaction/GetAgentsForRevenuePerTransaction`;\r\n return this.http.get(apiPath).pipe(map(response =>{\r\n return <any[]>response;\r\n }))\r\n }\r\n \r\n getRevenuePerTransactionReportParams():Observable<any>{\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/RevenuePerTransaction/GetRevenuePerTransactionParams`;\r\n return this.http.get(apiPath);\r\n }\r\n \r\n getRevenuePerTransactionReport(data:any):Observable<RevenuePerTransactionResponseModel[]>{\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/RevenuePerTransaction/GetRevenuePerTransactionReport`;\r\n return this.http.post(apiPath,data).pipe(\r\n map(response => {\r\n return <RevenuePerTransactionResponseModel[]>response;\r\n })\r\n )\r\n }\r\n\r\n //Statement of Accounts Report\r\n loadClientsForStatementOfAccounts(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/StatementofAccounts/Clients`;\r\n return this.http.get<any[]>(apiPath);\r\n }\r\n\r\n checkClientForStatementOfAccounts(clientId: string): Observable<{ result: string }> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/StatementofAccounts/checkClient/${clientId}`;\r\n return this.http.get<{ result: string }>(apiPath);\r\n }\r\n\r\n getStatementOfAccount(criteria: StatementOfAccountRequest): Observable<StatementOfAccountResponse> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/StatementofAccounts/statementOfAccount`;\r\n return this.http.post<StatementOfAccountResponse>(url, criteria).pipe(\r\n map(response => response || {\r\n openingBalAndFunding: [],\r\n sendDetails: [],\r\n receiveDetails: []\r\n })\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 if (value instanceof Date || !/^\\d{2}\\/\\d{2}\\/\\d{4}/.test(value)) {\r\n value = this.formatDate(value);\r\n }\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?.trim());\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@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 sendBusinessPartnerAgents: any[] = [];\r\n recvBusinessPartnerAgents: any[] = [];\r\n clientName: string;\r\n clientType: string;\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', 'receiveCurrency', 'transactionStatus', 'sendCountry', 'receiveCountry'],\r\n 'ACC GL Details Enquiry': ['dateType', 'date'],\r\n 'Branch Activity Receive': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'receiveCurrency', 'transactionStatus', 'sendCountry', 'receiveCountry'],\r\n 'Cancellation Transaction': ['client', 'fromDate', 'toDate', 'branch', 'sendCountry', 'receiveCountry', 'product', 'receiveCurrency'],\r\n 'Revenue Per Transaction': ['sendBusinessPartner', 'fromDate', 'toDate', 'recvBusinessPartner', 'sendCountry', 'receiveCountry', 'transactionStatus'],\r\n 'Statement of Accounts': ['client', 'fromDate', 'toDate'],\r\n 'Accounting': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'sendCurrency', '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 === \"Revenue Per Transaction\") {\r\n this.initializeForm()\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n }\r\n if (this.ReportName == \"Statement of Accounts\") {\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 === \"Revenue Per Transaction\") {\r\n this.loadDataForRevenuePerTransactionReport();\r\n }\r\n if (this.ReportName == \"Statement of Accounts\") {\r\n this.loadInitialDataForStatementOfAccounts();\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 receiveCurrency: ['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 receiveCurrency: ['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 === \"Revenue Per Transaction\") {\r\n this.searchForm = this.fb.group({\r\n sendBusinessPartner: [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 recvBusinessPartner: [null, Validators.required],\r\n transactionStatus: [['All'], Validators.required],\r\n sendCountry: ['All'],\r\n receiveCountry: ['All']\r\n })\r\n }\r\n\r\n if (this.ReportName == \"Statement of Accounts\") {\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 }\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().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.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 },\r\n error: err => {\r\n console.error('Unexpected forkJoin error', err);\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n this.onClientSelected();\r\n this.loadingState = ComponentLoadingState.Complete;\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()\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()\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.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 },\r\n error: err => {\r\n console.error('Unexpected forkJoin error', err);\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n this.onClientSelected();\r\n this.loadingState = ComponentLoadingState.Complete;\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()\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 loadDataForRevenuePerTransactionReport() {\r\n const $agents = this.reportService.getAgentsForRevenuePerTransaction();\r\n const $params = this.reportService.getRevenuePerTransactionReportParams();\r\n this.loadingState = ComponentLoadingState.Loading;\r\n forkJoin([$agents, $params]).subscribe({\r\n next: ([agents, params]) => {\r\n this.sendBusinessPartnerAgents = agents.filter(agent => agent.transactionLeg === \"PayIn\");\r\n this.recvBusinessPartnerAgents = agents.filter(agent => agent.transactionLeg === \"PayOut\");\r\n this.transactionStatuses = params.transactionStatusTypes\r\n this.countries = params.countries;\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n console.log(err);\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\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 private async loadInitialDataForStatementOfAccounts(): Promise<void> {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n\r\n try {\r\n const clients = await this.reportService\r\n .loadClientsForStatementOfAccounts()\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n\r\n if (clients && clients.length > 0) {\r\n this.clients1 = clients.map((c, index) => ({\r\n businessPartnerCode: c.agentID,\r\n businessPartnerName: c.agentName,\r\n displayOrder: index\r\n }));\r\n } else {\r\n this.clients1 = [];\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 this.loadingState = ComponentLoadingState.Complete;\r\n\r\n } catch (error) {\r\n console.error('Error loading Statement of Accounts clients', error);\r\n this.errorMessage = 'Failed to load clients for Statement of Accounts';\r\n this.loadingState = ComponentLoadingState.Error;\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(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(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)\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 if (this.ReportName == \"Statement of Accounts\") {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n const ClientId = this.searchForm.get('client')?.value;\r\n this.clientName = this.clients1.find(c => c.businessPartnerCode === ClientId)?.businessPartnerName;\r\n try {\r\n const response = await this.reportService\r\n .checkClientForStatementOfAccounts(ClientId)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n\r\n if (response && response.result) {\r\n this.clientType = response.result; // e.g. \"ReceiveClient\"\r\n console.log('Client type:', this.clientType);\r\n }\r\n this.loadingState = ComponentLoadingState.Complete;\r\n } catch (error) {\r\n console.error('Error checking client type', error);\r\n this.errorMessage = 'Failed to check client type';\r\n this.loadingState = ComponentLoadingState.Error;\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)\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 === \"Revenue Per 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 == \"Statement of Accounts\"){\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\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 formValue.fromDate = this.toIsoFormat(formValue.fromDate);\r\n formValue.toDate = this.toIsoFormat(formValue.toDate);\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 formValue.fromDate = this.toIsoFormat(formValue.fromDate);\r\n formValue.toDate = this.toIsoFormat(formValue.toDate);\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 === \"Revenue Per Transaction\") {\r\n const formValue = this.searchForm.value;\r\n formValue.fromDate = this.toIsoFormat(formValue.fromDate);\r\n formValue.toDate = this.toIsoFormat(formValue.toDate);\r\n return {\r\n modal:formValue,\r\n sysUserId: this.currentUser\r\n }\r\n }\r\n\r\n if(this.ReportName == \"Statement of Accounts\"){\r\n const formValue = this.searchForm.value;\r\n return{\r\n modal: formValue,\r\n clientType: this.clientType,\r\n sysUserID: this.currentUser,\r\n clientName: this.clientName\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(code).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n throw err;\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 if (this.ReportName === \"Branch Activity Receive\") {\r\n this.reportService.getBranchActivityReceivePayoutAgentBranch(code).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n throw err;\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\"\r\n [clearable]=\"false\" formControlName=\"currency\" (open)=\"onOpen()\" (close)=\"onClose()\"\r\n [searchable]=\"isOpen\">\r\n\r\n <!-- Template for dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div\r\n [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\r\n [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 <!--Send Currency -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'sendCurrency'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Send Currency</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"currencies\" bindValue=\"currencyCode\" placeholder=\"Select Currency\"\r\n [clearable]=\"false\" formControlName=\"currency\" (open)=\"onOpen()\" (close)=\"onClose()\"\r\n [searchable]=\"isOpen\">\r\n\r\n <!-- Template for dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div\r\n [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\r\n [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\"\r\n [clearable]=\"false\" formControlName=\"receiveCurrency\" required (change)=\"onBranchChange()\"\r\n (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n\r\n <!-- Dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div\r\n [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\r\n [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 <!-- Send BusinessPartner -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'sendBusinessPartner'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Sender Partner<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"sendBusinessPartnerAgents\" bindLabel=\"name\" bindValue=\"id\"\r\n placeholder=\"Select Send Partner\" [clearable]=\"false\" formControlName=\"sendBusinessPartner\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span [title]=\"item.name\">{{ item.name }}</span>\r\n </ng-template>\r\n\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Recv BusinessPartner -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'recvBusinessPartner'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Recv Partner<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"recvBusinessPartnerAgents\" bindLabel=\"name\" bindValue=\"id\"\r\n placeholder=\"Select Recv Partner\" [clearable]=\"false\" formControlName=\"recvBusinessPartner\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span [title]=\"item.name\">{{ item.name }}</span>\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</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 = [\r\n { formatName: 'Excel', code: 'excel' },\r\n { formatName: 'PDF', code: 'pdf' },\r\n { formatName: 'CSV', code: 'csv' },\r\n ];\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 minWidth: 40,\r\n suppressSizeToFit: false,\r\n cellStyle: {\r\n userSelect: 'text',\r\n 'line-height': '1.2',\r\n 'white-space': 'normal',\r\n 'word-break': 'normal',\r\n 'overflow-wrap': 'break-word',\r\n },\r\n wrapHeaderText: true,\r\n autoHeaderHeight: true,\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, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 69, tooltipField: 'postingDate' },\r\n { headerName: 'Value Date', field: 'valueDate', flex: 1.2, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 68, tooltipField: 'valueDate' },\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, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 69, tooltipField: 'rate' },\r\n { headerName: 'FxDebit', field: 'forexDebit', flex: 1, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 58, tooltipField: 'forexDebit' },\r\n { headerName: 'Local Debit', field: 'localDebit', flex: 1, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 62, tooltipField: 'localDebit' },\r\n { headerName: 'FxCredit', field: 'forexCredit', flex: 1, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 58, tooltipField: 'forexCredit' },\r\n { headerName: 'Local Credit', field: 'localCredit', flex: 1, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 62, tooltipField: 'localCredit' },\r\n ];\r\n\r\n constructor(\r\n private exportService: ExportService,\r\n private reportService: ReportService,\r\n private http: HttpClient,\r\n private sanitizer: DomSanitizer\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.http\r\n .get('assets/reports-lib/assets/svg-loaders/blue-tail-spin.svg', { responseType: 'text' })\r\n .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 this.dateType = this.dateTypeFilter === 1 ? 'VD' : 'PD';\r\n\r\n this.reportService.getAccGLDetailsReport(this.date.split('T')[0], this.dateType).subscribe(\r\n (data) => {\r\n if (data) {\r\n // Pre-format entries before storing\r\n const formattedEntries = data.journalVoucherEntries.map((entry) => ({\r\n ...entry,\r\n postingDate: this.formatDateValue(entry.postingDate),\r\n valueDate: this.formatDateValue(entry.valueDate),\r\n rate: this.formatNumberValue(entry.rate, 'rate'),\r\n forexDebit: this.formatNumberValue(entry.forexDebit, 'forexDebit'),\r\n localDebit: this.formatNumberValue(entry.localDebit, 'localDebit'),\r\n forexCredit: this.formatNumberValue(entry.forexCredit, 'forexCredit'),\r\n localCredit: this.formatNumberValue(entry.localCredit, 'localCredit'),\r\n }));\r\n\r\n this.accGlDetailsEnquiryReportModel = {\r\n ...data,\r\n journalVoucherEntries: formattedEntries,\r\n };\r\n\r\n this.rowData = formattedEntries;\r\n this.companyName = data.companyName;\r\n this.reportUser = data.reportUser.toLowerCase();\r\n this.reportTime = formatDate(new Date(), 'dd/MM/yyyy hh:mm a', 'en-US');\r\n this.currentReportValueOrPostDate = formatDate(data.date, 'dd/MM/yyyy', 'en-US');\r\n\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 === 'VD' ? 'Value Date' : 'Posting Date';\r\n this.metaDataTwo = {\r\n Company: this.companyName,\r\n [DateType]: this.currentReportValueOrPostDate,\r\n };\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 window.alert(error.message);\r\n }\r\n );\r\n }\r\n\r\n private formatDateValue(value: any): string {\r\n if (!value) return '';\r\n return formatDate(new Date(value), 'dd/MM/yyyy', 'en-US');\r\n }\r\n\r\n private formatNumberValue(value: any, field: string): string {\r\n if (value == null) return '';\r\n return field === 'rate' ? Number(value).toFixed(8) : Number(value).toFixed(3);\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 return description.length > 50 ? 40 : 20;\r\n }\r\n\r\n onSearch(text: string): void {\r\n const normalize = (str: any): string =>\r\n str\r\n ?.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) => normalize(value).includes(search))\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 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 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 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 <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\" [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, tooltipField: 'product', valueFormatter: params => this.productCodeMap[params.value] || params.value },\r\n { headerName: 'User Id', field: 'id', flex: 1, minWidth: 70, cellClass: '', 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'\r\n },\r\n { headerName: 'Transaction Ref Number', field: 'transactionReferenceNumber', flex: 1, minWidth: 100, tooltipField: 'transactionReferenceNumber' },\r\n { headerName: 'Trans. Date', field: 'businessDate', flex: 1, minWidth: 75, valueFormatter: this.dateFormatter.bind(this), tooltipValueGetter: (params) => this.dateFormatter(params), },\r\n { headerName: 'SendClient', field: 'sendAgent', flex: 1, minWidth: 120, tooltipField: 'sendAgent' },\r\n { headerName: 'SendClntBranch', field: 'sendAgtBranch', flex: 1, minWidth: 120, tooltipField: 'sendAgtBranch' },\r\n { headerName: 'RecvClient', field: 'recvAgent', flex: 1, minWidth: 120, tooltipField: 'recvAgent' },\r\n { headerName: 'RcvClntBranch', field: 'rcvAgtBranch', flex: 1, minWidth: 120, tooltipField: 'rcvAgtBranch' },\r\n { headerName: 'Sender Name', field: 'sendName', flex: 1, minWidth: 120, tooltipField: 'sendName' },\r\n { headerName: 'Sender ID Type', field: 'sendIdType', flex: 1, minWidth: 90, tooltipField: 'sendIdType' },\r\n { headerName: 'Sender ID Number', field: 'sendIdNumber', flex: 1, minWidth: 85, tooltipField: 'sendIdNumber' },\r\n { headerName: 'Benf. Name', field: 'benName', flex: 1, minWidth: 100, tooltipField: 'benName' },\r\n { headerName: 'Receive Curr.', field: 'payOutCurrency', flex: 1, minWidth: 80, tooltipField: 'payOutCurrency' },\r\n { headerName: 'Receive Amount', field: 'payOutAmount', flex: 1, minWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell ', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Send Curr.', field: 'payInCurrency', flex: 1, minWidth: 70, tooltipField: 'payInCurrency' },\r\n { headerName: 'Send Amount', field: 'payInAmount', flex: 1, minWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-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', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Transaction Status', field: 'transactionStatus', flex: 1, minWidth: 98, cellClass: 'status-cell', tooltipField: 'transactionStatus' }\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 autoHeight: true\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 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\r\n .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 })\r\n .replace(',', '') // remove the comma\r\n .replace(/\\bam\\b/, 'AM') // force uppercase\r\n .replace(/\\bpm\\b/, 'PM');\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 // Truncate to 3 decimals (no rounding)\r\n return (Math.trunc(number * 1000) / 1000).toFixed(3);\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 [defaultColDef]=\"defaultColDef\"\r\n [rowHeight]=\"22\" \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, inject } from '@angular/core';\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 { themeAlpine } from '@ag-grid-community/theming';\r\nimport 'jspdf-autotable';\r\nimport { formatDate, DatePipe } from '@angular/common';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { GenericExportService } from '../../shared/export-generic.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-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 showReport: boolean;\r\n paginationArray: any[];\r\n selectedExportOption = 'excel';\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 sysUserId: string;\r\n private logoBase64: string | undefined;\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 exportService: GenericExportService = inject(GenericExportService);\r\n\r\n // flags\r\n showMessage: boolean = false;\r\n noDataFound: boolean = false;\r\n\r\n columnDefs: ColDef<BranchActivityReport>[] = [\r\n { field: 'businessDateTime', headerName: 'Business Date', flex: 1,wrapText: true, autoHeight: true, headerClass: 'ag-left-aligned-header', minWidth: 70, width: 70, tooltipField: 'businessDateTime' },\r\n { field: 'transactionDateTime', headerName: 'Transaction Date', minWidth:100,flex: 2, wrapText: true, autoHeight: true },\r\n { field: 'transactionNumber', headerName: 'Transaction Number', flex: 1.8,wrapText: true, autoHeight: true, minWidth:90, width: 130, cellClass: 'ag-left-cols-cell compact-cell-transaction', tooltipField: 'transactionNumber' },\r\n { field: 'product', headerName: 'Product', flex: 0.5,wrapText: true, autoHeight: true, minWidth:80, width: 120, tooltipField: 'product' },\r\n { field: 'sendAgentBranchCode', headerName: 'SendClient BranchCode', flex: 1,wrapText: true, autoHeight: true, minWidth:90, width: 120, tooltipField: 'sendAgentBranchCode' },\r\n { field: 'receiveAgentCode', headerName: 'Receive ClientCode', flex: 1,wrapText: true, autoHeight: true, minWidth: 90, width: 70, tooltipField: 'receiveAgentCode' },\r\n { field: 'payoutCCcode', headerName: 'ReceiveCcy Code', flex: 1,wrapText: true, autoHeight: true,minWidth:90, width: 110, tooltipField: 'payoutCCcode' },\r\n { field: 'payoutAmount', headerName: 'Receive Amount', flex: 1,wrapText: true, autoHeight: true,minWidth:90, maxWidth: 120, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payoutAmount' },\r\n { field: 'payinCCcode', headerName: 'SendCcy Code', flex: 1,wrapText: true, autoHeight: true, minWidth:90,maxWidth: 90, tooltipField: 'payinCCcode' },\r\n { field: 'payinAmount', headerName: 'Send Amount', flex: 1,wrapText: true, autoHeight: true, minWidth:80, maxWidth: 120, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payinAmount' },\r\n { field: 'transactionCommissionAmount', headerName: 'Service Fee', flex: 1, wrapText: true, autoHeight: true, minWidth:90, maxWidth: 100, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'transactionCommissionAmount' },\r\n { field: 'tax', headerName: 'Tax', flex: 1,wrapText: true, autoHeight: true, minWidth: 80, maxWidth: 100, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'tax' },\r\n { field: 'totalPayinAmount', headerName: 'Total Send Amount',minWidth:100, flex: 1,wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'totalPayinAmount' },\r\n { field: 'status', headerName: 'Transaction Status',minWidth:100, flex: 1,wrapText: true, autoHeight: true, tooltipField: 'status' }\r\n ];\r\n\r\n\r\n defaultColDef = {\r\n sortable: true,\r\n filter: true,\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 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 }\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?.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.gridColumnApi = params.columnApi;\r\n this.gridApis[id] = params.api;\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 = \"Branch Activity Receive\";\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 ', this.reportDate]\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','transactionCommissionAmount','tax','totalPayinAmount'\r\n ],\r\n // specify all date fields expected\r\n dateFields: ['businessDateTime', 'transactionDateTime'],\r\n\r\n dateFieldFormats: {\r\n txnDateAndTime: 'dd/MM/yyyy hh:mm a', \r\n cancellationBranchDateTime: 'dd/MM/yyyy HH:mm', \r\n cancellationBusinessDate: 'dd/MM/yyyy' \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 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 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 formatAmount(params: any): string {\r\n const value = params?.value;\r\n if (value !== null && value !== undefined && value !== '') {\r\n const num = Number(value);\r\n return (Math.trunc(num * 1000) / 1000).toFixed(3);\r\n }\r\n return '';\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\": modal.receiveCurrency,\r\n \"TransactionType\": modal.product,\r\n \"BranchCode\": modal.branch\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<section *ngIf=\"showReport\" class=\"my-2\">\r\n <ng-container *ngIf=\"!noDataFound\">\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 class=\"panel-cls\">{{\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\"[pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event,i)\"\r\n >\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 </ng-container>\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data found matching your search criteria.\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, GridOptions, 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 'jspdf-autotable';\r\nimport { GenericExportService } from '../../shared/export-generic.service';\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 = \"\";\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 exportService: GenericExportService = inject(GenericExportService);\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,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', minWidth: 90, width: 70, tooltipField: 'businessDateTime' },\r\n { field: 'transactionDateAndTime', headerName: 'Receive Date', minWidth: 100, flex: 2, headerClass: 'ag-header-cell', wrapText: true, autoHeight: true, tooltipField: 'transactionDateAndTime' },\r\n { field: 'transactionNumber', headerName: 'Transaction Number', minWidth: 90, flex: 1.8,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', width: 130, cellClass: 'ag-left-cols-cell compact-cell-transaction', tooltipField: 'transactionNumber' },\r\n { field: 'product', headerName: 'Product', minWidth: 80, flex: 0.5,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', width: 120, tooltipField: 'product' },\r\n { field: 'senderName', headerName: 'Sender Name', flex: 1,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', minWidth: 90,width: 130, tooltipField: 'senderName' },\r\n { field: 'sendAgentCode', headerName: 'Send ClientCode', flex: 1,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', minWidth: 90, width: 70, tooltipField: 'sendAgentCode' },\r\n { field: 'receiverName', headerName: 'Receiver Name', flex: 1,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', minWidth: 90, width: 130, tooltipField: 'receiverName' },\r\n { field: 'receiveAgentBranchCode', headerName: 'ReceiveClient BranchCode', headerClass: 'ag-header-cell', flex: 1,wrapText: true, autoHeight: true, minWidth: 100, maxWidth: 120, tooltipField: 'receiveAgentBranchCode' },\r\n { field: 'payOutCurrency', headerName: 'Receive CcyCode', flex: 1,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', minWidth: 90, maxWidth: 100, tooltipField: 'payOutCurrency' },\r\n { field: 'amountPaid', headerName: 'Amount Paid', flex: 1,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', minWidth: 90,width: 100, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'amountPaid' },\r\n { field: 'status', headerName: 'Transaction Status', minWidth: 90, flex: 1,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', tooltipField: 'status' }\r\n ];\r\n\r\n defaultColDef = {\r\n sortable: true,\r\n filter: true,\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 \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 // Currency Formatter\r\n\r\n formatAmount(params: any): string {\r\n if (params.value == null) return '0.000';\r\n const num = Number(params.value);\r\n return num.toFixed(3);\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 = \"Branch Activity Receive\";\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 ', this.reportDate]\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 'amountPaid'\r\n ],\r\n // specify all date fields expected\r\n dateFields: ['businessDateTime', 'transactionDateAndTime'],\r\n\r\n dateFieldFormats: {\r\n txnDateAndTime: 'dd/MM/yyyy hh:mm a', \r\n cancellationBranchDateTime: 'dd/MM/yyyy HH:mm', \r\n cancellationBusinessDate: 'dd/MM/yyyy' \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 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 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\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?.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\":modal.receiveCurrency,\r\n \"TransactionType\": modal.product,\r\n \"BranchCode\": modal.branch\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 <ng-container *ngIf=\"!noDataFound\">\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 class=\"panel-cls\">{{\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: 407px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"item.value\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\"[pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event,i)\"\r\n >\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 </ng-container>\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data found matching your search criteria.\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 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: 63, tooltipValueGetter: params => params.value || ''},\r\n { headerName: 'Cancellation Branch Date', field: 'cancellationBranchDateTime', flex: 1, minWidth: 65, valueFormatter: params => this.formatDateTime(params.value), tooltipValueGetter: params => this.formatDateTime(params.value) },\r\n { headerName: 'Cancellation Business Date', field: 'cancellationBusinessDate', flex: 1, minWidth: 75, valueFormatter: params => this.formatDateOnly(params.value), tooltipValueGetter: params => this.formatDateOnly(params.value) },\r\n { headerName: 'Transaction Number', field: 'transactionNumber', flex: 1, minWidth: 80, tooltipField: 'transactionNumber' },\r\n { headerName: 'Product', field: 'product', flex: 1, minWidth: 60, tooltipField: 'product' },\r\n { headerName: 'Send Client Branch Code', field: 'sendAgentBranchCode', flex: 1, minWidth: 90, tooltipField: 'sendAgentBranchCode' },\r\n { headerName: 'Send Principal Client Code (If Applicable)', field: 'sendPrincipalAgentCode', flex: 1, minWidth: 90, tooltipField: 'sendPrincipalAgentCode' },\r\n { headerName: 'Receive Client Code', field: 'recvAGTcode', flex: 1, minWidth: 80, tooltipField: 'recvAGTcode' },\r\n { headerName: 'Receive CcyCode', field: 'payoutCCcode', flex: 1, minWidth: 65, tooltipField: 'payoutCCcode' },\r\n { headerName: 'Receive Amount', field: 'payOutAmount', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatAmount ,tooltipValueGetter: this.formatAmount },\r\n { headerName: 'Send CcyCode', field: 'payinCCcode', flex: 1, minWidth: 69, tooltipField: 'payinCCcode' },\r\n { headerName: 'Send Amount', field: 'payInAmount', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatAmount, tooltipValueGetter: this.formatAmount},\r\n { headerName: 'Service Fee', field: 'txnCommission', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatAmount, tooltipValueGetter: this.formatAmount },\r\n { headerName: 'Tax', field: 'tax', flex: 1, minWidth: 70, cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatAmount, tooltipValueGetter: this.formatAmount },\r\n { headerName: 'Total Send Amount', field: 'totalPayinAmount', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatAmount, tooltipValueGetter: this.formatAmount },\r\n { headerName: 'Transaction Status', field: 'status', flex: 1, minWidth: 80, tooltipField: 'status' },\r\n { headerName: 'Cancellation Location Code', field: 'cancellationLocationCode', flex: 1, minWidth: 95, 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 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 autoHeight: true\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 // filteredData for data in ag grid table\r\n this.filteredData = data;\r\n //dataMap for data in filtered table\r\n this.dataMap = JSON.parse(JSON.stringify(data));\r\n\r\n if (\r\n Object.keys(this.filteredData).length === 0 ||\r\n Object.values(this.filteredData).every(arr => arr.length === 0)\r\n ) {\r\n this.noDataFromApi = true;\r\n this.dataMap = {};\r\n this.filteredData = {};\r\n return;\r\n }\r\n\r\n this.paginationArray = new Array(Object.keys(this.filteredData).length).fill(15);\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 (searchText.length === 0) {\r\n this.filteredData = structuredClone(this.dataMap);\r\n return;\r\n }\r\n const newFilteredData: Record<string, CancellationTransaction[]> = {};\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 return val != null && val.toString().toLowerCase().includes(searchText);\r\n })\r\n );\r\n if (filteredEntries.length > 0) {\r\n newFilteredData[key] = filteredEntries;\r\n }\r\n }\r\n this.filteredData = newFilteredData;\r\n }\r\n\r\n // Date only\r\n formatDateOnly(date: string | Date): string {\r\n if (!date) return '';\r\n const d = new Date(date);\r\n return `${this.pad(d.getDate())}/${this.pad(d.getMonth() + 1)}/${d.getFullYear()}`;\r\n }\r\n\r\n // Date + Time with AM/PM\r\n formatDateTime(date: string | Date): string {\r\n if (!date) return '';\r\n const d = new Date(date);\r\n\r\n let hours = d.getHours();\r\n const minutes = this.pad(d.getMinutes());\r\n const ampm = hours >= 12 ? 'PM' : 'AM';\r\n\r\n hours = hours % 12;\r\n hours = hours ? hours : 12; // 0 → 12\r\n\r\n return `${this.pad(d.getDate())}/${this.pad(d.getMonth() + 1)}/${d.getFullYear()} ${this.pad(hours)}:${minutes} ${ampm}`;\r\n }\r\n\r\n // helper\r\n private pad(num: number): string {\r\n return num < 10 ? '0' + num : num.toString();\r\n }\r\n\r\n formatAmount(params: any): string {\r\n const value = params?.value;\r\n if (value !== null && value !== undefined && value !== '') {\r\n const num = Number(value);\r\n return (Math.trunc(num * 1000) / 1000).toFixed(3);\r\n }\r\n return '';\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 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 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 class=\"panel-cls\">\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 [rowData]=\"item.value\"\r\n [columnDefs]=\"columnDefs\"\r\n [pagination]=\"true\"\r\n [defaultColDef]=\"defaultColDef\"\r\n [rowHeight]=\"22\"\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, inject, OnInit } from '@angular/core';\r\nimport { RevenuePerTransactionResponseModel } from '../../models/revenue-per-transaction-report/revenue-per-transaction.model';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { ExportService } from '../../shared/export.service';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { ColDef, ColumnApi, GridApi, GridReadyEvent } from 'ag-grid-community';\r\nimport { formatDate } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-revenue-per-transaction-report',\r\n templateUrl: './revenue-per-transaction-report.component.html',\r\n styleUrls: ['./revenue-per-transaction-report.component.scss']\r\n})\r\nexport class RevenuePerTransactionReportComponent implements OnInit {\r\n data: RevenuePerTransactionResponseModel[] = [];\r\n filteredData: RevenuePerTransactionResponseModel[] = [];\r\n user: string = \"\";\r\n sysUserId: string = \"\";\r\n ReportName = \"Revenue Per Transaction\"\r\n reportService: ReportService = inject(ReportService);\r\n exportService: ExportService = inject(ExportService);\r\n reportDate: string;\r\n metaDataOne: Record<string, string>;\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n selectedExportOption: string;\r\n searchText: string = '';\r\n pageSize: number = 15;\r\n\r\n gridApi: GridApi;\r\n gridColumnApi: ColumnApi;\r\n showReport: boolean = false;\r\n noDataFound: boolean = false;\r\n\r\n columnDefs: ColDef<RevenuePerTransactionResponseModel>[] = [\r\n { field: 'payInDate', headerName: 'SendDate', flex: 1, headerClass: 'ag-header-cell', minWidth: 100, tooltipField: 'payInDate' },\r\n { field: 'payOutDate', headerName: 'Receive Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 100, wrapText: true, autoHeight: true, tooltipField: 'payOutDate' },\r\n { field: 'transactionNumber', headerName: 'Transaction Number', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'transactionNumber' },\r\n { field: 'productCode', headerName: 'Product', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'productCode' },\r\n { field: 'sendCountry', headerName: 'Send Country', flex: 1, headerClass: 'ag-header-cell', minWidth: 90, wrapText: true, autoHeight: true, tooltipField: 'sendCountry' },\r\n { field: 'sendAgentName', headerName: 'SendClient Name', flex: 1, headerClass: 'ag-header-cell', minWidth: 120, wrapText: true, autoHeight: true, tooltipField: 'sendAgentName' },\r\n { field: 'sendAgentCode', headerName: 'SendClient Code', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'sendAgentCode' },\r\n { field: 'sendAgentBranchCode', headerName: 'SendClient BranchCode', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'sendAgentBranchCode' },\r\n { field: 'receiveCountry', headerName: 'Receive Country', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'receiveCountry' },\r\n { field: 'receiveAgentName', headerName: 'ReceiveClient Name', flex: 1, headerClass: 'ag-header-cell', minWidth: 150, wrapText: true, autoHeight: true, tooltipField: 'receiveAgentName' },\r\n { field: 'receiveAgentCode', headerName: 'ReceiveClient Code', flex: 1, headerClass: 'ag-header-cell', minWidth: 90, wrapText: true, autoHeight: true, tooltipField: 'receiveAgentCode' },\r\n { field: 'payInCurrency', headerName: 'Send CcyCode', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'payInCurrency' },\r\n { field: 'payInAmount', headerName: 'Send Amount', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payInAmount' },\r\n { field: 'transactionCommission', headerName: 'Service Fee', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'transactionCommission' },\r\n { field: 'usdRate', headerName: 'USD Rate', flex: 1, headerClass: 'ag-header-cell', wrapText: true, minWidth: 80, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'usdRate' },\r\n { field: 'ezRemitSellMargin', headerName: 'XM SellMargin', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'ezRemitSellMargin' },\r\n { field: 'ezRemitSellRate', headerName: 'XM SellRate', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'ezRemitSellRate' },\r\n { field: 'bankSellRate', headerName: 'Bank SellRate', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'bankSellRate' },\r\n { field: 'payOutCurrency', headerName: 'Receive CcyCode', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'payOutCurrency' },\r\n { field: 'payOutAmount', headerName: 'Receive Amount', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payOutAmount' },\r\n { field: 'beneDeductAmount', headerName: 'BeneDeduct Amount', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'beneDeductAmount' },\r\n { field: 'usdRateAppliedPayout', headerName: 'USDRate @Payout', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'usdRateAppliedPayout' },\r\n { field: 'xMsCommissionShare', headerName: \"XM's Service Fee Share\", flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'xmsCommissionShare' },\r\n { field: 'xmExchangeVariation', headerName: 'XM Exchange Variation (Gain/Loss)', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'xmExchangeVariation' },\r\n { field: 'xMsBeneDeductShare', headerName: \"XM's BeneDeduct Share\", flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'xmsBeneDeductShare' },\r\n { field: 'revenuePerTransaction', headerName: 'Revenue Per Transaction', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'revenuePerTransaction' },\r\n { field: 'totalSettleAmount', headerName: 'Total Settlement', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'totalSettleAmount' },\r\n { field: 'transactionStatus', headerName: 'Transaction Status', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'transactionStatus' },\r\n ]\r\n\r\n defaultColDef = {\r\n sortable: true,\r\n filter: true,\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 constructor() { }\r\n\r\n ngOnInit(): void {\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 }\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 // Currency Formatter\r\n formatAmount(params: any): string {\r\n if (params.value == null) return '0.000';\r\n const num = Number(params.value);\r\n return num.toFixed(3); \r\n }\r\n\r\n onSearch(text: string) {\r\n this.searchText = text;\r\n if (this.searchText === \"\") {\r\n this.filteredData = JSON.parse(JSON.stringify(this.data));\r\n return;\r\n }\r\n const data = JSON.parse(JSON.stringify(this.data));\r\n this.filteredData = data.filter((row) =>\r\n Object.values(row).some(val => String(val).toLowerCase().includes(this.searchText.toLowerCase()))\r\n )\r\n }\r\n\r\n handleExport(option: string) {\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 exportToExcel(): void {\r\n if (!this.data?.length) return;\r\n\r\n const title = this.ReportName;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User ', this.sysUserId],\r\n ['Report Time ', this.reportDate]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'payInAmount', 'payOutAmount',\r\n 'transactionCommission', 'beneDeductAmount', 'usdRateAppliedPayout', 'xMsCommissionShare', 'xmExchangeVariation',\r\n 'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'\r\n ]\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, headers, rows, 'Revenue_Per_Transaction.xlsx');\r\n }\r\n\r\n exportToCSV(): void {\r\n if (!this.data?.length) return;\r\n\r\n const title = this.ReportName;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.sysUserId],\r\n ['Report Time : ', this.reportDate]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'payInAmount', 'payOutAmount',\r\n 'transactionCommission', 'beneDeductAmount', 'usdRateAppliedPayout', 'xMsCommissionShare', 'xmExchangeVariation',\r\n 'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'\r\n ]\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, headers, rows, 'Revenue_Per_Transaction.csv');\r\n }\r\n\r\n exportToPDF(): void {\r\n if (!this.data?.length) return;\r\n\r\n const title = 'Transaction Enquiry';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.sysUserId],\r\n ['Report Time : ', this.reportDate]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'payInAmount', 'payOutAmount',\r\n 'transactionCommission', 'beneDeductAmount', 'usdRateAppliedPayout', 'xMsCommissionShare', 'xmExchangeVariation',\r\n 'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'\r\n ]\r\n });\r\n\r\n this.exportService.exportToPdfUniversal(title, metadata, headers, rows, 'Revenue_Per_Transaction.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 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 = this.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\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 \"sendBusinessPartnerId\": modal.sendBusinessPartner,\r\n \"RecvBusinessPartenrId\": modal.recvBusinessPartner,\r\n \"TransactionStatus\": modal.transactionStatus.join(\",\")\r\n }\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getRevenuePerTransactionReport(searchData)\r\n .subscribe({\r\n next: (data) => {\r\n this.data = data;\r\n this.filteredData = JSON.parse(JSON.stringify(this.data));\r\n console.log(this.data);\r\n this.noDataFound = data?.length === 0 ? true : false;\r\n },\r\n error: (err) => {\r\n console.log(err);\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n complete: () => {\r\n this.showReport = true;\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n }\r\n })\r\n }\r\n\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\">\r\n</lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n<section *ngIf=\"showReport\" class=\"my-2 mx-1\">\r\n\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"false\"\r\n [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"\" (exportEvent)=\"handleExport($event)\"\r\n (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n <div style=\"position: relative;\" *ngIf=\"filteredData?.length>0\">\r\n <lib-page-size-selector [totalEntries]=\"data?.length\" [defaultSize]=\"'15'\" [gridApi]=\"gridApi\">\r\n ></lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"width: 100%;height: 407px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"filteredData\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" [pagination]=\"true\" [paginationPageSize]=\"pageSize\"\r\n (gridReady)=\"onGridReady($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data found matching your search criteria.\r\n </div>\r\n\r\n</section>","import { Component, OnInit } from '@angular/core';\r\nimport { GridApi } from 'ag-grid-community';\r\nimport { Subject } from 'rxjs';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { formatDate } from '@angular/common';\r\nimport { StatementOfAccountItem } from '../../models/statement-of-account-report/statement-of-accounts.model';\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\n@Component({\r\n selector: 'lib-statement-of-accounts-report',\r\n templateUrl: './statement-of-accounts-report.component.html',\r\n styleUrls: ['./statement-of-accounts-report.component.scss']\r\n})\r\n\r\nexport class StatementOfAccountsReportComponent implements OnInit {\r\n\r\n ReportName = \"Statement of Accounts\";\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n errorMessage: string;\r\n hasSearched: boolean;\r\n private destroy$ = new Subject<void>();\r\n openingBalAndFunding : StatementOfAccountItem[] =[];\r\n sendDetails: StatementOfAccountItem[] =[];\r\n receiveDetails: StatementOfAccountItem[] =[];\r\n noDataFromApi: boolean;\r\n metaDataOne: Record<string, string>;\r\n user: any;\r\n currentDateTime: Date = new Date();\r\n sendPinnedBottomRow: any[] = [];\r\n receivePinnedBottomRow: any[] = [];\r\n private sendGridApi!: GridApi;\r\n private receiveGridApi!: GridApi;\r\n private openingGridApi!: GridApi;\r\n searchText: string;\r\n closingBalance: number = 0;\r\n\r\n closingBalanceCurrency = 'USD';\r\n closingBalanceUSDInWords: string = '';\r\n\r\n selectedClientType: string = '';\r\n showTables = false;\r\n private logoBase64?: string;\r\n selectedExportOption: string;\r\n\r\n closingBalanceInSettlment: number = 0;\r\n closingBalanceSettlmentCurrency: string = '';\r\n closingBalanceSettlmentInWords: string = '';\r\n closingBalanceSettlmentFormatted: string = '0.000';\r\n closingBalanceInUsdFormatted: string = '0.000';\r\n\r\n\r\n constructor(private reportService: ReportService) { }\r\n\r\n async ngOnInit(): Promise<void> {\r\n this.logoBase64 = await this.loadImageAsBase64('assets/reports-lib/assets/images/XMLogo.png');\r\n }\r\n \r\n columnDefs = [\r\n // { headerName: 'ID', field: 'id', width: 100 },\r\n { headerName: 'Description', field: 'description', flex: 4, tooltipField: 'description', cellClassRules: { 'pinned-total-cell': params => params.node.rowPinned === 'bottom' } },\r\n { headerName: 'Settlment Ccy', field: 'settlmentCcy', flex: 1, tooltipField: 'settlmentCcy', cellClassRules: { 'pinned-total-cell': params => params.node.rowPinned === 'bottom' } },\r\n { headerName: 'Amount In Settlment Ccy', field: 'amountInSettlmentCcy', flex: 2.1, cellClass: 'ag-right-aligned-cell', valueFormatter: this.currencyFormatter, tooltipValueGetter: (params: any) => this.currencyFormatter(params), cellClassRules: { 'pinned-total-cell': params => params.node.rowPinned === 'bottom' } },\r\n { headerName: 'Amount In USD', field: 'amountInUSD', flex: 2.1, cellClass: 'ag-right-aligned-cell', valueFormatter: this.currencyFormatter, tooltipValueGetter: (params: any) => this.currencyFormatter(params), cellClassRules: { 'pinned-total-cell': params => params.node.rowPinned === 'bottom' } }\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 autoHeight: true\r\n };\r\n \r\n currencyFormatter(params: any) {\r\n if (params.value == null) return '0.000';\r\n const num = Number(params.value);\r\n return num.toFixed(3); // rounds to 3 decimals\r\n }\r\n \r\n \r\n async handleSearch(criteria: any): Promise<void> {\r\n const modal = criteria.modal;\r\n const payload = {\r\n businessPartnerID: Number(modal.client),\r\n fromDate: new Date(modal.fromDate).toISOString(),\r\n toDate: new Date(modal.toDate).toISOString(),\r\n clientType: criteria.clientType\r\n };\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 'Client': criteria.clientName\r\n }\r\n console.log(criteria.clientName)\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.errorMessage = '';\r\n this.showTables = false;\r\n this.selectedClientType = criteria.clientType;\r\n \r\n this.reportService.getStatementOfAccount(payload)\r\n .pipe(\r\n finalize(() => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n this.hasSearched = true;\r\n this.showTables = true;\r\n }),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe({\r\n next: (data) => {\r\n console.log(data)\r\n this.openingBalAndFunding = data.openingBalAndFunding ?? [];\r\n this.sendDetails = data.sendDetails ?? [];\r\n this.receiveDetails = data.receiveDetails ?? [];\r\n \r\n // add pinned totals\r\n if (this.selectedClientType == \"SendClient\") {\r\n this.sendPinnedBottomRow = [this.buildTotalRow(this.sendDetails)];\r\n this.receivePinnedBottomRow = [];\r\n }\r\n else if (this.selectedClientType == \"ReceiveClient\") {\r\n this.receivePinnedBottomRow = [this.buildTotalRow(this.receiveDetails)];\r\n this.sendPinnedBottomRow = [];\r\n }\r\n else if (this.selectedClientType === \"Both\") {\r\n this.sendPinnedBottomRow = [this.buildTotalRow(this.sendDetails)];\r\n this.receivePinnedBottomRow = [this.buildTotalRow(this.receiveDetails)];\r\n }\r\n else {\r\n this.sendPinnedBottomRow = [];\r\n this.receivePinnedBottomRow = [];\r\n }\r\n this.calculateClosingBalance();\r\n \r\n this.noDataFromApi =\r\n this.openingBalAndFunding.length === 0 &&\r\n this.sendDetails.length === 0 &&\r\n (!this.receiveDetails || this.receiveDetails.length === 0);\r\n },\r\n error: (err) => {\r\n console.error('Error fetching Statement of Accounts:', err);\r\n this.errorMessage = 'Failed to load Statement of Accounts';\r\n this.openingBalAndFunding = [];\r\n this.sendDetails = [];\r\n this.receiveDetails = [];\r\n this.loadingState = ComponentLoadingStates.Error;\r\n this.showTables = false;\r\n }\r\n });\r\n }\r\n \r\n private buildTotalRow(rows: { amountInSettlmentCcy: number; amountInUSD: number }[]) {\r\n const totalSettle = (rows || []).reduce((sum, r) => sum + (Number(r.amountInSettlmentCcy) || 0), 0);\r\n const totalUsd = (rows || []).reduce((sum, r) => sum + (Number(r.amountInUSD) || 0), 0);\r\n \r\n return {\r\n id: null,\r\n description: 'Total',\r\n settlmentCcy: '',\r\n amountInSettlmentCcy: Number(totalSettle.toFixed(3)),\r\n amountInUSD: Number(totalUsd.toFixed(3))\r\n };\r\n }\r\n \r\n onOpeningGridReady(params: any) {\r\n this.openingGridApi = params.api;\r\n }\r\n onSendGridReady(params: any) {\r\n this.sendGridApi = params.api;\r\n }\r\n onReceiveGridReady(params: any) {\r\n this.receiveGridApi = params.api;\r\n }\r\n \r\n filter(text: string) {\r\n this.searchText = text;\r\n if (this.openingGridApi) {\r\n this.openingGridApi.setQuickFilter(this.searchText);\r\n }\r\n if (this.sendGridApi) {\r\n this.sendGridApi.setQuickFilter(this.searchText);\r\n }\r\n if (this.receiveGridApi) {\r\n this.receiveGridApi.setQuickFilter(this.searchText);\r\n }\r\n }\r\n \r\n private calculateClosingBalance(): void {\r\n // USD totals (existing logic)\r\n const openingBalTotalUsd = (this.openingBalAndFunding || []).reduce(\r\n (sum, r: any) => sum + (Number(r.amountInUSD) || 0), 0\r\n );\r\n const sendTotalUsd = (this.sendDetails || []).reduce(\r\n (sum, r: any) => sum + (Number(r.amountInUSD) || 0), 0\r\n );\r\n const receiveTotalUsd = (this.receiveDetails || []).reduce(\r\n (sum, r: any) => sum + (Number(r.amountInUSD) || 0), 0\r\n );\r\n const rawClosingUsd = openingBalTotalUsd + sendTotalUsd + receiveTotalUsd;\r\n this.closingBalance = Number(rawClosingUsd.toFixed(3)); // numeric USD\r\n \r\n // Settlement currency totals (new)\r\n const openingSettle = (this.openingBalAndFunding || []).reduce(\r\n (sum, r: any) => sum + (Number(r.amountInSettlmentCcy) || 0), 0\r\n );\r\n const sendSettle = (this.sendDetails || []).reduce(\r\n (sum, r: any) => sum + (Number(r.amountInSettlmentCcy) || 0), 0\r\n );\r\n const receiveSettle = (this.receiveDetails || []).reduce(\r\n (sum, r: any) => sum + (Number(r.amountInSettlmentCcy) || 0), 0\r\n );\r\n const rawClosingSettle = openingSettle + sendSettle + receiveSettle;\r\n this.closingBalanceInSettlment = Number(rawClosingSettle.toFixed(3));\r\n \r\n // pick a settlement currency to display (first non-empty)\r\n this.closingBalanceSettlmentCurrency = this.getFirstSettlementCurrency();\r\n\r\n // formatted strings (no-thousand-comma, 3 decimals)\r\n this.closingBalanceInUsdFormatted = this.formatNoComma(this.closingBalance);\r\n this.closingBalanceSettlmentFormatted = this.formatNoComma(this.closingBalanceInSettlment);\r\n \r\n this.closingBalanceUSDInWords = this.numberToWords(this.closingBalance);\r\n this.closingBalanceSettlmentInWords =\r\n this.closingBalanceInSettlment !== null &&\r\n this.closingBalanceInSettlment !== undefined &&\r\n !isNaN(Number(this.closingBalanceInSettlment))\r\n ? this.numberToWords(this.closingBalanceInSettlment)\r\n : '';\r\n }\r\n\r\n private formatNoComma(value: number | null | undefined): string {\r\n if (value === null || value === undefined || isNaN(Number(value))) return '0.000';\r\n const num = Number(value);\r\n const truncated = Math.trunc(num * 1000) / 1000;\r\n return truncated.toFixed(3);\r\n }\r\n \r\n \r\n private getFirstSettlementCurrency(): string {\r\n const tryGet = (arr: any[]) => {\r\n if (!arr || arr.length === 0) return '';\r\n for (const r of arr) {\r\n if (r && r.settlmentCcy) return r.settlmentCcy;\r\n }\r\n return '';\r\n };\r\n \r\n return tryGet(this.openingBalAndFunding) || tryGet(this.sendDetails) || tryGet(this.receiveDetails) || '';\r\n }\r\n \r\n numberToWords(num: number): string {\r\n if (num === 0) return \"Zero Point Zero Zero Zero Only\";\r\n \r\n let result = \"\";\r\n \r\n // Handle negative numbers\r\n if (num < 0) {\r\n result = \"Negative \";\r\n num = Math.abs(num);\r\n }\r\n \r\n // Split integer and decimal parts\r\n const integerPart = Math.floor(num);\r\n const decimalPart = Math.round((num - integerPart) * 1000); // up to 3 decimal places\r\n \r\n result += this.convertNumber(integerPart);\r\n \r\n if (decimalPart > 0) {\r\n result += \" Point\";\r\n const decimalStr = decimalPart.toString().padStart(3, \"0\"); // keep 3 digits\r\n for (const digit of decimalStr) {\r\n result += \" \" + this.ones[+digit];\r\n }\r\n }\r\n \r\n return result + \" Only\";\r\n }\r\n \r\n // Helper arrays\r\n private ones = [\"Zero\", \"One\", \"Two\", \"Three\", \"Four\", \"Five\", \"Six\", \"Seven\", \"Eight\", \"Nine\"];\r\n private teens = [\"Ten\", \"Eleven\", \"Twelve\", \"Thirteen\", \"Fourteen\", \"Fifteen\", \"Sixteen\", \"Seventeen\", \"Eighteen\", \"Nineteen\"];\r\n private tens = [\"\", \"\", \"Twenty\", \"Thirty\", \"Forty\", \"Fifty\", \"Sixty\", \"Seventy\", \"Eighty\", \"Ninety\"];\r\n \r\n // Convert whole numbers (Indian/International system)\r\n private convertNumber(num: number): string {\r\n if (num === 0) return \"\";\r\n if (num < 10) return this.ones[num];\r\n if (num < 20) return this.teens[num - 10];\r\n if (num < 100) return this.tens[Math.floor(num / 10)] + (num % 10 !== 0 ? \" \" + this.ones[num % 10] : \"\");\r\n if (num < 1000) return this.convertNumber(Math.floor(num / 100)) + \" Hundred\" + (num % 100 !== 0 ? \" \" + this.convertNumber(num % 100) : \"\");\r\n if (num < 1000000) return this.convertNumber(Math.floor(num / 1000)) + \" Thousand\" + (num % 1000 !== 0 ? \" \" + this.convertNumber(num % 1000) : \"\");\r\n if (num < 1000000000) return this.convertNumber(Math.floor(num / 1000000)) + \" Million\" + (num % 1000000 !== 0 ? \" \" + this.convertNumber(num % 1000000) : \"\");\r\n return this.convertNumber(Math.floor(num / 1000000000)) + \" Billion\" + (num % 1000000000 !== 0 ? \" \" + this.convertNumber(num % 1000000000) : \"\");\r\n }\r\n\r\n onExportChange(value: string): void {\r\n this.selectedExportOption = value;\r\n }\r\n\r\n handleExport(option: string) {\r\n this.selectedExportOption = option;\r\n switch ((this.selectedExportOption || '').toLowerCase()) {\r\n case 'pdf': this.exportToPDF(); break;\r\n case 'excel': this.exportToExcel(); break;\r\n case 'csv': this.exportToCSV(); break;\r\n default: console.warn('Unknown export type:', this.selectedExportOption);\r\n }\r\n }\r\n\r\n exportToPDF(): void {\r\n const sections = this.getVisibleGrids()\r\n .map(s => {\r\n const data = this.getDisplayedData(s.api);\r\n const headers = this.getHeaders();\r\n let rows = this.buildRows(data);\r\n\r\n if (s.title === 'Send Details' && this.sendPinnedBottomRow?.length) {\r\n rows = rows.concat(this.buildRows(this.sendPinnedBottomRow));\r\n }\r\n if (s.title === 'Receive Details' && this.receivePinnedBottomRow?.length) {\r\n rows = rows.concat(this.buildRows(this.receivePinnedBottomRow));\r\n }\r\n\r\n return rows.length ? { title: s.title, headers, rows } : null;\r\n })\r\n .filter(Boolean) as { title: string; headers: string[]; rows: any[][] }[];\r\n if (!sections.length) return;\r\n\r\n const doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: 'a4' });\r\n\r\n if (this.logoBase64) {\r\n doc.addImage(this.logoBase64, 'PNG', 15, 10, 38, 18);\r\n }\r\n\r\n const pageWidth = doc.internal.pageSize.getWidth();\r\n const pageHeight = doc.internal.pageSize.getHeight();\r\n doc.setFont('helvetica', 'bold');\r\n doc.setFontSize(15);\r\n doc.text(this.ReportName, pageWidth / 2, 18, { align: 'center' });\r\n\r\n let y = 34; \r\n doc.setFontSize(10);\r\n Object.entries(this.metaDataOne || {}).forEach(([k, v]) => {\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(`${k}: `, 15, y);\r\n const w = doc.getTextWidth(`${k}: `);\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(String(v ?? ''), 15 + w, y);\r\n y += 6;\r\n });\r\n\r\n const HEAD = this.getHeaders();\r\n\r\n const margin = { left: 15, right: 15 };\r\n const avail = pageWidth - margin.left - margin.right;\r\n const weights = [4, 1, 2, 2];\r\n const sum = weights.reduce((a, b) => a + b, 0);\r\n const widths = weights.map(w => (w / sum) * avail);\r\n\r\n const sharedColumnStyles = {\r\n 0: { cellWidth: widths[0] },\r\n 1: { cellWidth: widths[1] }, \r\n 2: { cellWidth: widths[2], halign: 'right' }, \r\n 3: { cellWidth: widths[3], halign: 'right' } \r\n };\r\n\r\n const titleGapAboveFirst = 0;\r\n const titleGapAboveDefault = 4;\r\n const titleGapAboveBig = 6;\r\n const titleToTableGap = 2;\r\n const topStartY = 20;\r\n const bottomReserve = 20;\r\n\r\n sections.forEach((s, idx) => {\r\n const isFirst = idx === 0;\r\n const isSendOrReceive = s.title === 'Send Details' || s.title === 'Receive Details';\r\n const preTitleGap = isFirst ? 0 : (isSendOrReceive ? titleGapAboveBig : titleGapAboveDefault);\r\n\r\n if (y + preTitleGap + titleToTableGap > pageHeight - bottomReserve) {\r\n doc.addPage();\r\n y = topStartY;\r\n } else {\r\n y += preTitleGap;\r\n }\r\n\r\n doc.setFont('helvetica', 'bold');\r\n doc.setFontSize(11);\r\n doc.text(s.title, margin.left, y);\r\n\r\n const startYForTable = y + (isFirst ? 0 : titleToTableGap);\r\n\r\n doc.autoTable({\r\n head: [HEAD],\r\n body: s.rows,\r\n startY: startYForTable,\r\n theme: 'grid',\r\n margin,\r\n tableWidth: avail,\r\n columnStyles: sharedColumnStyles,\r\n headStyles: { fillColor: [220, 220, 220], textColor: 0, fontStyle: 'bold', fontSize: 9, halign: 'center' },\r\n bodyStyles: { fontSize: 8 },\r\n styles: { cellPadding: 2, overflow: 'linebreak', minCellHeight: 6 }\r\n });\r\n\r\n y = (doc as any).lastAutoTable.finalY;\r\n });\r\n if (y + 30 > pageHeight - bottomReserve) {\r\n doc.addPage();\r\n y = topStartY;\r\n }\r\n\r\n const closingBody = [\r\n [\r\n { content: 'Closing Balance', colSpan: 2, styles: { halign: 'left', fontStyle: 'bold' } },\r\n { content: Number(this.closingBalanceInSettlment || 0).toFixed(3), styles: { halign: 'right' } },\r\n { content: Number(this.closingBalance || 0).toFixed(3), styles: { halign: 'right' } }\r\n ],\r\n [\r\n { content: `${this.closingBalanceSettlmentCurrency || ''} - ${this.closingBalanceSettlmentInWords || ''}`, colSpan: 4, styles: { halign: 'left' } }\r\n ],\r\n [\r\n { content: `${this.closingBalanceCurrency || ''} - ${this.closingBalanceUSDInWords || ''}`, colSpan: 4, styles: { halign: 'left' } }\r\n ]\r\n ];\r\n\r\n doc.autoTable({\r\n body: closingBody,\r\n startY: y,\r\n theme: 'grid',\r\n margin,\r\n tableWidth: avail,\r\n columnStyles: sharedColumnStyles,\r\n styles: { cellPadding: 2, fontSize: 9 }\r\n });\r\n\r\n doc.save('Statement_of_Accounts.pdf');\r\n}\r\n\r\n exportToExcel(): void {\r\n const sections = this.getVisibleGrids()\r\n .map(s => {\r\n const data = this.getDisplayedData(s.api);\r\n const headers = this.getHeaders();\r\n let rows = this.buildRows(data);\r\n \r\n if (s.title === 'Send Details' && this.sendPinnedBottomRow?.length) {\r\n rows = rows.concat(this.buildRows(this.sendPinnedBottomRow));\r\n }\r\n if (s.title === 'Receive Details' && this.receivePinnedBottomRow?.length) {\r\n rows = rows.concat(this.buildRows(this.receivePinnedBottomRow));\r\n }\r\n \r\n return rows.length ? { title: s.title, headers, rows } : null;\r\n })\r\n .filter(Boolean) as { title: string; headers: string[]; rows: any[][] }[];\r\n \r\n if (!sections.length) return;\r\n \r\n const wb = new ExcelJS.Workbook();\r\n const ws = wb.addWorksheet('Statement of Accounts');\r\n let r = 1;\r\n \r\n if (this.logoBase64) {\r\n const imgId = wb.addImage({ base64: this.logoBase64, extension: 'png' });\r\n ws.addImage(imgId, { tl: { col: 0, row: 0 }, ext: { width: 145, height: 66 }, editAs: 'oneCell' });\r\n }\r\n \r\n ws.getRow(r).getCell(2).value = this.ReportName;\r\n ws.getRow(r).getCell(2).font = { bold: true, size: 16 };\r\n r += 3;\r\n \r\n Object.entries(this.metaDataOne || {}).forEach(([k, v]) => {\r\n ws.getRow(r++).getCell(1).value = `${k}: ${v ?? ''}`;\r\n });\r\n \r\n const writeSection = (sec: { title: string; headers: string[]; rows: any[][] }) => {\r\n ws.getRow(r++).getCell(1).value = sec.title;\r\n \r\n const headerRow = ws.getRow(r++);\r\n sec.headers.forEach((h, i) => {\r\n const c = headerRow.getCell(i + 1);\r\n c.value = h;\r\n c.font = { bold: true };\r\n c.alignment = { vertical: 'middle', horizontal: 'center' };\r\n c.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'D9D9D9' } };\r\n c.border = { top: { style: 'thin' }, bottom: { style: 'thin' }, left: { style: 'thin' }, right: { style: 'thin' } };\r\n });\r\n \r\n const dataStart = r;\r\n \r\n sec.rows.forEach(rowData => {\r\n const row = ws.getRow(r++);\r\n rowData.forEach((v, i) => {\r\n const c = row.getCell(i + 1);\r\n if (sec.headers[i] === 'Amount In Settlment Ccy' || sec.headers[i] === 'Amount In USD') {\r\n const num = typeof v === 'string' ? Number(v.replace(/[, ]+/g, '')) : Number(v);\r\n c.value = isNaN(num) ? (v ?? '') : num;\r\n c.alignment = { horizontal: 'right' };\r\n if (!isNaN(num)) c.numFmt = '0.000';\r\n } else {\r\n c.value = v ?? '';\r\n }\r\n c.border = { top: { style: 'thin' }, bottom: { style: 'thin' }, left: { style: 'thin' }, right: { style: 'thin' } };\r\n });\r\n });\r\n \r\n for (let col = 1; col <= sec.headers.length; col++) {\r\n let max = (sec.headers[col - 1] || '').toString().length;\r\n for (let rr = dataStart - 1; rr < r; rr++) {\r\n const val = (ws.getRow(rr).getCell(col).value ?? '').toString();\r\n if (val) max = Math.max(max, val.length + 2);\r\n }\r\n ws.getColumn(col).width = Math.min(Math.max(max, 8), 60);\r\n }\r\n };\r\n \r\n sections.forEach((sec, idx) => {\r\n writeSection(sec);\r\n if (idx < sections.length - 1) {\r\n r++;\r\n }\r\n });\r\n \r\n const totalCols = sections.length\r\n ? Math.max(...sections.map(s => s.headers.length))\r\n : this.columnDefs.length;\r\n const cols = Math.max(totalCols, 4);\r\n const labelColsEnd = 2;\r\n const settleCol = 3; \r\n const usdCol = 4;\r\n \r\n const row1 = ws.getRow(r++);\r\n ws.mergeCells(row1.number, 1, row1.number, labelColsEnd);\r\n row1.getCell(1).value = 'Closing Balance';\r\n row1.getCell(1).font = { bold: true };\r\n row1.getCell(1).alignment = { horizontal: 'left', vertical: 'middle' };\r\n \r\n const settleValue = Number(this.closingBalanceInSettlment ?? 0);\r\n const usdValue = Number(this.closingBalance ?? 0);\r\n \r\n const settleCell = row1.getCell(settleCol);\r\n settleCell.value = isNaN(settleValue) ? '' : settleValue;\r\n settleCell.alignment = { horizontal: 'right' };\r\n if (!isNaN(settleValue)) settleCell.numFmt = '0.000';\r\n \r\n const usdCell = row1.getCell(usdCol);\r\n usdCell.value = isNaN(usdValue) ? '' : usdValue;\r\n usdCell.alignment = { horizontal: 'right' };\r\n if (!isNaN(usdValue)) usdCell.numFmt = '0.000';\r\n\r\n for (let c = 1; c <= cols; c++) {\r\n row1.getCell(c).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 row2 = ws.getRow(r++);\r\n ws.mergeCells(row2.number, 1, row2.number, cols);\r\n row2.getCell(1).value = `${this.closingBalanceSettlmentCurrency || ''} - ${this.closingBalanceSettlmentInWords || ''}`;\r\n row2.getCell(1).alignment = { horizontal: 'left', vertical: 'middle' };\r\n row2.getCell(1).font = { italic: false };\r\n \r\n for (let c = 1; c <= cols; c++) {\r\n const edge: any = { top: { style: 'thin' }, bottom: { style: 'thin' } };\r\n if (c === 1) edge.left = { style: 'thin' };\r\n if (c === cols) edge.right = { style: 'thin' };\r\n row2.getCell(c).border = edge;\r\n }\r\n \r\n const row3 = ws.getRow(r++);\r\n ws.mergeCells(row3.number, 1, row3.number, cols);\r\n row3.getCell(1).value = `${this.closingBalanceCurrency || ''} - ${this.closingBalanceUSDInWords || ''}`;\r\n row3.getCell(1).alignment = { horizontal: 'left', vertical: 'middle' };\r\n \r\n for (let c = 1; c <= cols; c++) {\r\n const edge: any = { top: { style: 'thin' }, bottom: { style: 'thin' } };\r\n if (c === 1) edge.left = { style: 'thin' };\r\n if (c === cols) edge.right = { style: 'thin' };\r\n row3.getCell(c).border = edge;\r\n }\r\n \r\n wb.xlsx.writeBuffer().then(buf => {\r\n FileSaver.saveAs(\r\n new Blob([buf], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }),\r\n 'Statement_of_Accounts.xlsx'\r\n );\r\n });\r\n }\r\n\r\n exportToCSV(): void {\r\n const sections = this.getVisibleGrids()\r\n .map(s => {\r\n const data = this.getDisplayedData(s.api);\r\n let rows = this.buildRows(data);\r\n \r\n if (s.title === 'Send Details' && this.sendPinnedBottomRow?.length) {\r\n rows = rows.concat(this.buildRows(this.sendPinnedBottomRow));\r\n }\r\n if (s.title === 'Receive Details' && this.receivePinnedBottomRow?.length) {\r\n rows = rows.concat(this.buildRows(this.receivePinnedBottomRow));\r\n }\r\n \r\n return rows.length ? { title: s.title, headers: this.getHeaders(), rows } : null;\r\n })\r\n .filter(Boolean) as { title: string; headers: string[]; rows: any[][] }[];\r\n \r\n if (!sections.length) return;\r\n \r\n const lines: string[] = [];\r\n lines.push(this.ReportName);\r\n \r\n Object.entries(this.metaDataOne || {}).forEach(([k, v]) => lines.push(`${k}: ${v ?? ''}`));\r\n \r\n sections.forEach((sec, idx) => {\r\n lines.push(sec.title);\r\n lines.push(sec.headers.join(','));\r\n sec.rows.forEach(r => lines.push(r.map(v => `\"${v ?? ''}\"`).join(',')));\r\n \r\n if (idx < sections.length - 1) {\r\n lines.push('');\r\n }\r\n });\r\n \r\n lines.push(\r\n `\"Closing Balance\",,\"${Number(this.closingBalanceInSettlment || 0).toFixed(3)}\",\"${Number(this.closingBalance || 0).toFixed(3)}\"`\r\n );\r\n \r\n lines.push(`\"${this.closingBalanceSettlmentCurrency || ''} - ${this.closingBalanceSettlmentInWords || ''}\"`);\r\n \r\n lines.push(`\"${this.closingBalanceCurrency || ''} - ${this.closingBalanceUSDInWords || ''}\"`);\r\n \r\n const csv = lines.join('\\n');\r\n FileSaver.saveAs(\r\n new Blob([csv], { type: 'text/csv;charset=utf-8' }),\r\n 'Statement_of_Accounts.csv'\r\n );\r\n }\r\n\r\n\r\n private loadImageAsBase64(src: 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 = src;\r\n img.onload = () => {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx) return reject('Canvas context failed');\r\n ctx.drawImage(img, 0, 0);\r\n resolve(canvas.toDataURL('image/png'));\r\n };\r\n img.onerror = () => reject('Failed to load image: ' + src);\r\n });\r\n }\r\n\r\n private getDisplayedData(api?: GridApi): any[] {\r\n if (!api) return [];\r\n const rows: any[] = [];\r\n const count = api.getDisplayedRowCount();\r\n for (let i = 0; i < count; i++) {\r\n const node = api.getDisplayedRowAtIndex(i);\r\n if (node && !node.group && !node.rowPinned) rows.push(node.data);\r\n }\r\n return rows;\r\n }\r\n\r\n private getHeaders(): string[] {\r\n return this.columnDefs.map(c => c.headerName || c.field);\r\n }\r\n private format3(n: any): string {\r\n if (n == null || n === '') return '';\r\n const num = Number(n);\r\n return num.toFixed(3);\r\n }\r\n private buildRows(data: any[]): any[][] {\r\n return data.map(row =>\r\n this.columnDefs.map(col => {\r\n const f = col.field;\r\n if (f === 'amountInSettlmentCcy' || f === 'amountInUSD') {\r\n return this.format3(row[f]);\r\n }\r\n return row[f] ?? '';\r\n })\r\n );\r\n }\r\n\r\n private getVisibleGrids(): { title: string; api?: GridApi }[] {\r\n const out: { title: string; api?: GridApi }[] = [];\r\n out.push({ title: '', api: this.openingGridApi });\r\n if (this.selectedClientType === 'SendClient' || this.selectedClientType === 'Both') {\r\n out.push({ title: 'Send Details', api: this.sendGridApi });\r\n }\r\n if (this.selectedClientType === 'ReceiveClient' || this.selectedClientType === 'Both') {\r\n out.push({ title: 'Receive Details', api: this.receiveGridApi });\r\n }\r\n return out;\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 *ngIf=\"loadingState === ComponentLoadingState.Loading\"></app-loader>\r\n<span *ngIf=\"loadingState === ComponentLoadingState.Error\">{{ errorMessage }}</span>\r\n<div *ngIf=\"showTables\">\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<ag-grid-angular\r\n class=\"ag-theme-alpine transaction-grid\"\r\n [rowData]=\"openingBalAndFunding\"\r\n [columnDefs]=\"columnDefs\"\r\n [pinnedBottomRowData]=\"[]\"\r\n [headerHeight]=\"32\" \r\n [defaultColDef]=\"defaultColDef\"\r\n [rowHeight]=\"28\"\r\n (gridReady)=\"onOpeningGridReady($event)\"\r\n style=\"width: 100%; height: 91px;\">\r\n</ag-grid-angular>\r\n\r\n<div *ngIf=\"(selectedClientType === 'SendClient' || selectedClientType === 'Both')\">\r\n<h3 class=\"details-table\"><span style=\"margin-left: 3px;\">Send Details</span></h3>\r\n<ag-grid-angular\r\n class=\"ag-theme-alpine transaction-grid\"\r\n [rowData]=\"sendDetails\"\r\n [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\"\r\n [rowHeight]=\"28\"\r\n [headerHeight]=\"32\" \r\n [pinnedBottomRowData]=\"sendPinnedBottomRow\"\r\n (gridReady)=\"onSendGridReady($event)\" \r\n style=\"width: 100%; height: 203px;\">\r\n</ag-grid-angular>\r\n</div>\r\n\r\n<div *ngIf=\"(selectedClientType === 'ReceiveClient' || selectedClientType === 'Both')\">\r\n<h3 class=\"details-table\"><span style=\"margin-left: 3px;\">Receive Details</span></h3>\r\n<ag-grid-angular\r\n class=\"ag-theme-alpine transaction-grid\"\r\n [rowData]=\"receiveDetails\"\r\n [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\"\r\n [rowHeight]=\"28\"\r\n [headerHeight]=\"32\" \r\n [pinnedBottomRowData]=\"receivePinnedBottomRow\"\r\n (gridReady)=\"onReceiveGridReady($event)\" \r\n style=\"width: 100%; height: 203px;\">\r\n</ag-grid-angular>\r\n</div>\r\n\r\n\r\n<!-- Closing balance row -->\r\n<div class=\"closing-balance-row\">\r\n <div class=\"label\" title=\"Closing Balance\">\r\n Closing Balance\r\n </div>\r\n\r\n <div class=\"settlement\" \r\n [title]=\"closingBalanceSettlmentFormatted\">\r\n {{ closingBalanceSettlmentFormatted }}\r\n </div>\r\n\r\n <div class=\"value\" [title]=\"closingBalanceInUsdFormatted\">\r\n {{ closingBalanceInUsdFormatted }}\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- settlement currency words row -->\r\n<div class=\"closing-balance-row closing-balance-words\"\r\n *ngIf=\"closingBalanceSettlmentInWords\">\r\n <div class=\"label\"\r\n [title]=\"closingBalanceSettlmentCurrency + ' - ' + closingBalanceSettlmentInWords\">\r\n {{ closingBalanceSettlmentCurrency }} - {{ closingBalanceSettlmentInWords }}\r\n </div>\r\n</div>\r\n\r\n<!-- existing USD words row (keep as-is) -->\r\n<div class=\"closing-balance-row closing-balance-words\">\r\n <div class=\"label\" [title]=\"closingBalanceCurrency + ' - ' + closingBalanceUSDInWords\">\r\n {{ closingBalanceCurrency }} - {{ closingBalanceUSDInWords }}\r\n </div>\r\n</div>\r\n","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 }\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 style=\"font-weight: bold; font-size: 13px; line-height: 1.2; margin: 0; padding: 2px 0;color: #0c63e4;\">\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: 375px;\"\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: 375px;\"\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 { RevenuePerTransactionReportComponent } from './components/revenue-per-transaction-report/revenue-per-transaction-report.component';\r\nimport { StatementOfAccountsReportComponent } from './components/statement-of-accounts-report/statement-of-accounts-report.component';\r\n\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 RevenuePerTransactionReportComponent,\r\n StatementOfAccountsReportComponent,\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 StatementOfAccountsReportComponent,\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}","export interface Country {\r\n number: string;\r\n countryCode: string;\r\n country: string;\r\n ezRemitCountry: string;\r\n}\r\n\r\nexport interface PayInAgent {\r\n correlationId: string;\r\n code: string;\r\n agent: string;\r\n number: string;\r\n}\r\n\r\nexport interface ProductType {\r\n name: string;\r\n productCode: string;\r\n}\r\n\r\n// export interface Currency {\r\n// currencyCode: string;\r\n// number: string;\r\n// currency: string;\r\n// od: number;\r\n// }\r\n\r\nexport interface CancellationTransactionPageLoadData {\r\n countries: Country[];\r\n payInAgents: PayInAgent[];\r\n productTypes: ProductType[];\r\n // currencies: Currency[];\r\n}\r\n\r\n// export interface Branch {\r\n// businessPartnerBranch: string;\r\n// businessPartnerBranch_CorrelationId: string;\r\n// branchCode: string;\r\n// bank: string;\r\n// number: string;\r\n// }\r\n\r\nexport class CancellationTransaction {\r\n sendAgentBranchNameAndCode: string;\r\n businessDateTime: string;\r\n txnDateAndTime: string;\r\n transactionNumber: string;\r\n product: string;\r\n sendAgentBranchCode: string;\r\n sendPrincipalAgentCode: string;\r\n recvAGTcode: string;\r\n payoutCCcode: string;\r\n payOutAmount: number;\r\n payinCCcode: string;\r\n payInAmount: number;\r\n txnCommission: number;\r\n tax: number;\r\n totalPayinAmount: number;\r\n status: string;\r\n cancellationBranchDateTime: string;\r\n cancellationBusinessDate: string;\r\n cancellationLocationCode: string;\r\n statusChangedBy: string;\r\n cancellationReason: string;\r\n}\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/revenue-per-transaction-report/revenue-per-transaction-report.component';\r\nexport * from './lib/components/statement-of-accounts-report/statement-of-accounts-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';\r\nexport * from './lib/models/revenue-per-transaction-report/revenue-per-transaction.model';\r\nexport * from './lib/models/statement-of-account-report/statement-of-accounts.model'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ConfigService","i1","i3","i1.ReportService","i3.ConfigService","i6","i8.LoaderComponent","i1.ExportService","i2.ReportService","i4","i5","i7.PageSizeSelectorComponent","i8.MetadataComponent","i9.SearchFilterComponent","i2.ExportService","i6.PageSizeSelectorComponent","i7.MetadataComponent","i2","i4.PageSizeSelectorComponent","i5.MetadataComponent","i7.LoaderComponent","i8.SearchFilterComponent","i3.PageSizeSelectorComponent","i4.MetadataComponent","i6.LoaderComponent","i7.SearchFilterComponent","i2.GenericExportService","i5.PageSizeSelectorComponent","i6.MetadataComponent","i7","i5.LoaderComponent","i6.SearchFilterComponent"],"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/revenue-per-transaction-report/revenue-per-transaction-report.component.ts","../../../projects/reports-lib/src/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.html","../../../projects/reports-lib/src/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.ts","../../../projects/reports-lib/src/lib/components/statement-of-accounts-report/statement-of-accounts-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/lib/models/cancellation-transaction-report/cancellation-transaction.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 { RevenuePerTransactionResponseModel } from '../models/revenue-per-transaction-report/revenue-per-transaction.model';\r\nimport { StatementOfAccountRequest, StatementOfAccountResponse } from '../models/statement-of-account-report/statement-of-accounts.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 getPayInAgents(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetAllPayInAgents`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getBranchByAgent(code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetBranchByAgent/${code}/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(): Observable<PageLoadDataResponse> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/pageLoadData`;\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): Observable<Branch[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/branches/${agentCode}`;\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/viewReport`;\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(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/BranchActivityReceive/GetAllPayoutAgents/`;\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(code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/BranchActivityReceive/GetBranchByPayoutAgent/${code}/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\r\n //Cancellation Transaction Report apis\r\n //Api 1\r\n loadDataforCancallation(): Observable<any> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/CancellationTransactionReport/pageLoadData`;\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): Observable<Branch[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/CancellationTransactionReport/branches/${agentCode}`;\r\n return this.http.get<Branch[]>(apiPath).pipe(\r\n map(response => response || [])\r\n );\r\n }\r\n\r\n //Api 3\r\n getCancellationReport(criteria: any): Observable<Record<string, CancellationTransaction[]>> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/CancellationTransactionReport/viewReport`;\r\n return this.http.post(url, criteria).pipe(map(response => {\r\n return <Record<string, CancellationTransaction[]>>response;\r\n }));\r\n }\r\n\r\n // Revenue Per Transaction Report API\r\n getAgentsForRevenuePerTransaction():Observable<any[]>{\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/RevenuePerTransaction/GetAgentsForRevenuePerTransaction`;\r\n return this.http.get(apiPath).pipe(map(response =>{\r\n return <any[]>response;\r\n }))\r\n }\r\n \r\n getRevenuePerTransactionReportParams():Observable<any>{\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/RevenuePerTransaction/GetRevenuePerTransactionParams`;\r\n return this.http.get(apiPath);\r\n }\r\n \r\n getRevenuePerTransactionReport(data:any):Observable<RevenuePerTransactionResponseModel[]>{\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/RevenuePerTransaction/GetRevenuePerTransactionReport`;\r\n return this.http.post(apiPath,data).pipe(\r\n map(response => {\r\n return <RevenuePerTransactionResponseModel[]>response;\r\n })\r\n )\r\n }\r\n\r\n //Statement of Accounts Report\r\n loadClientsForStatementOfAccounts(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/StatementofAccounts/Clients`;\r\n return this.http.get<any[]>(apiPath);\r\n }\r\n\r\n checkClientForStatementOfAccounts(clientId: string): Observable<{ result: string }> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/StatementofAccounts/checkClient/${clientId}`;\r\n return this.http.get<{ result: string }>(apiPath);\r\n }\r\n\r\n getStatementOfAccount(criteria: StatementOfAccountRequest): Observable<StatementOfAccountResponse> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/StatementofAccounts/statementOfAccount`;\r\n return this.http.post<StatementOfAccountResponse>(url, criteria).pipe(\r\n map(response => response || {\r\n openingBalAndFunding: [],\r\n sendDetails: [],\r\n receiveDetails: []\r\n })\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 if (value instanceof Date || !/^\\d{2}\\/\\d{2}\\/\\d{4}/.test(value)) {\r\n value = this.formatDate(value);\r\n }\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?.trim());\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@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 sendBusinessPartnerAgents: any[] = [];\r\n recvBusinessPartnerAgents: any[] = [];\r\n clientName: string;\r\n clientType: string;\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', 'receiveCurrency', 'transactionStatus', 'sendCountry', 'receiveCountry'],\r\n 'ACC GL Details Enquiry': ['dateType', 'date'],\r\n 'Branch Activity Receive': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'receiveCurrency', 'transactionStatus', 'sendCountry', 'receiveCountry'],\r\n 'Cancellation Transaction': ['client', 'fromDate', 'toDate', 'branch', 'sendCountry', 'receiveCountry', 'product', 'receiveCurrency'],\r\n 'Revenue Per Transaction': ['sendBusinessPartner', 'fromDate', 'toDate', 'recvBusinessPartner', 'sendCountry', 'receiveCountry', 'transactionStatus'],\r\n 'Statement of Accounts': ['client', 'fromDate', 'toDate'],\r\n 'Accounting': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'sendCurrency', '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 === \"Revenue Per Transaction\") {\r\n this.initializeForm()\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n }\r\n if (this.ReportName == \"Statement of Accounts\") {\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 === \"Revenue Per Transaction\") {\r\n this.loadDataForRevenuePerTransactionReport();\r\n }\r\n if (this.ReportName == \"Statement of Accounts\") {\r\n this.loadInitialDataForStatementOfAccounts();\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 receiveCurrency: ['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 receiveCurrency: ['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 === \"Revenue Per Transaction\") {\r\n this.searchForm = this.fb.group({\r\n sendBusinessPartner: [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 recvBusinessPartner: [null, Validators.required],\r\n transactionStatus: [['All'], Validators.required],\r\n sendCountry: ['All'],\r\n receiveCountry: ['All']\r\n })\r\n }\r\n\r\n if (this.ReportName == \"Statement of Accounts\") {\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 }\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().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.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 },\r\n error: err => {\r\n console.error('Unexpected forkJoin error', err);\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n this.onClientSelected();\r\n this.loadingState = ComponentLoadingState.Complete;\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()\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()\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.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 },\r\n error: err => {\r\n console.error('Unexpected forkJoin error', err);\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n this.onClientSelected();\r\n this.loadingState = ComponentLoadingState.Complete;\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()\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 loadDataForRevenuePerTransactionReport() {\r\n const $agents = this.reportService.getAgentsForRevenuePerTransaction();\r\n const $params = this.reportService.getRevenuePerTransactionReportParams();\r\n this.loadingState = ComponentLoadingState.Loading;\r\n forkJoin([$agents, $params]).subscribe({\r\n next: ([agents, params]) => {\r\n this.sendBusinessPartnerAgents = agents.filter(agent => agent.transactionLeg === \"PayIn\");\r\n this.recvBusinessPartnerAgents = agents.filter(agent => agent.transactionLeg === \"PayOut\");\r\n this.transactionStatuses = params.transactionStatusTypes\r\n this.countries = params.countries;\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n console.log(err);\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\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 private async loadInitialDataForStatementOfAccounts(): Promise<void> {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n\r\n try {\r\n const clients = await this.reportService\r\n .loadClientsForStatementOfAccounts()\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n\r\n if (clients && clients.length > 0) {\r\n this.clients1 = clients.map((c, index) => ({\r\n businessPartnerCode: c.agentID,\r\n businessPartnerName: c.agentName,\r\n displayOrder: index\r\n }));\r\n } else {\r\n this.clients1 = [];\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 this.loadingState = ComponentLoadingState.Complete;\r\n\r\n } catch (error) {\r\n console.error('Error loading Statement of Accounts clients', error);\r\n this.errorMessage = 'Failed to load clients for Statement of Accounts';\r\n this.loadingState = ComponentLoadingState.Error;\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(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(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)\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 if (this.ReportName == \"Statement of Accounts\") {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n const ClientId = this.searchForm.get('client')?.value;\r\n this.clientName = this.clients1.find(c => c.businessPartnerCode === ClientId)?.businessPartnerName;\r\n try {\r\n const response = await this.reportService\r\n .checkClientForStatementOfAccounts(ClientId)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n\r\n if (response && response.result) {\r\n this.clientType = response.result; // e.g. \"ReceiveClient\"\r\n console.log('Client type:', this.clientType);\r\n }\r\n this.loadingState = ComponentLoadingState.Complete;\r\n } catch (error) {\r\n console.error('Error checking client type', error);\r\n this.errorMessage = 'Failed to check client type';\r\n this.loadingState = ComponentLoadingState.Error;\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)\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 === \"Revenue Per 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 == \"Statement of Accounts\"){\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\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 formValue.fromDate = this.toIsoFormat(formValue.fromDate);\r\n formValue.toDate = this.toIsoFormat(formValue.toDate);\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 formValue.fromDate = this.toIsoFormat(formValue.fromDate);\r\n formValue.toDate = this.toIsoFormat(formValue.toDate);\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 === \"Revenue Per Transaction\") {\r\n const formValue = this.searchForm.value;\r\n formValue.fromDate = this.toIsoFormat(formValue.fromDate);\r\n formValue.toDate = this.toIsoFormat(formValue.toDate);\r\n return {\r\n modal:formValue,\r\n sysUserId: this.currentUser\r\n }\r\n }\r\n\r\n if(this.ReportName == \"Statement of Accounts\"){\r\n const formValue = this.searchForm.value;\r\n return{\r\n modal: formValue,\r\n clientType: this.clientType,\r\n sysUserID: this.currentUser,\r\n clientName: this.clientName\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(code).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n throw err;\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 if (this.ReportName === \"Branch Activity Receive\") {\r\n this.reportService.getBranchActivityReceivePayoutAgentBranch(code).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n },\r\n error: (err) => {\r\n throw err;\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\"\r\n [clearable]=\"false\" formControlName=\"currency\" (open)=\"onOpen()\" (close)=\"onClose()\"\r\n [searchable]=\"isOpen\">\r\n\r\n <!-- Template for dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div\r\n [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\r\n [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 <!--Send Currency -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'sendCurrency'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Send Currency</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"currencies\" bindValue=\"currencyCode\" placeholder=\"Select Currency\"\r\n [clearable]=\"false\" formControlName=\"currency\" (open)=\"onOpen()\" (close)=\"onClose()\"\r\n [searchable]=\"isOpen\">\r\n\r\n <!-- Template for dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div\r\n [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\r\n [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\"\r\n [clearable]=\"false\" formControlName=\"receiveCurrency\" required (change)=\"onBranchChange()\"\r\n (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n\r\n <!-- Dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div\r\n [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\r\n [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 <!-- Send BusinessPartner -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'sendBusinessPartner'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Sender Partner<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"sendBusinessPartnerAgents\" bindLabel=\"name\" bindValue=\"id\"\r\n placeholder=\"Select Send Partner\" [clearable]=\"false\" formControlName=\"sendBusinessPartner\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span [title]=\"item.name\">{{ item.name }}</span>\r\n </ng-template>\r\n\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Recv BusinessPartner -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'recvBusinessPartner'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Recv Partner<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"recvBusinessPartnerAgents\" bindLabel=\"name\" bindValue=\"id\"\r\n placeholder=\"Select Recv Partner\" [clearable]=\"false\" formControlName=\"recvBusinessPartner\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span [title]=\"item.name\">{{ item.name }}</span>\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</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 = [\r\n { formatName: 'Excel', code: 'excel' },\r\n { formatName: 'PDF', code: 'pdf' },\r\n { formatName: 'CSV', code: 'csv' },\r\n ];\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 minWidth: 40,\r\n suppressSizeToFit: false,\r\n cellStyle: {\r\n userSelect: 'text',\r\n 'line-height': '1.2',\r\n 'white-space': 'normal',\r\n 'word-break': 'normal',\r\n 'overflow-wrap': 'break-word',\r\n },\r\n wrapHeaderText: true,\r\n autoHeaderHeight: true,\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, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 69, tooltipField: 'postingDate' },\r\n { headerName: 'Value Date', field: 'valueDate', flex: 1.2, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 68, tooltipField: 'valueDate' },\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, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 69, tooltipField: 'rate' },\r\n { headerName: 'FxDebit', field: 'forexDebit', flex: 1, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 58, tooltipField: 'forexDebit' },\r\n { headerName: 'Local Debit', field: 'localDebit', flex: 1, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 62, tooltipField: 'localDebit' },\r\n { headerName: 'FxCredit', field: 'forexCredit', flex: 1, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 58, tooltipField: 'forexCredit' },\r\n { headerName: 'Local Credit', field: 'localCredit', flex: 1, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 62, tooltipField: 'localCredit' },\r\n ];\r\n\r\n constructor(\r\n private exportService: ExportService,\r\n private reportService: ReportService,\r\n private http: HttpClient,\r\n private sanitizer: DomSanitizer\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.http\r\n .get('assets/reports-lib/assets/svg-loaders/blue-tail-spin.svg', { responseType: 'text' })\r\n .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 this.dateType = this.dateTypeFilter === 1 ? 'VD' : 'PD';\r\n\r\n this.reportService.getAccGLDetailsReport(this.date.split('T')[0], this.dateType).subscribe(\r\n (data) => {\r\n if (data) {\r\n // Pre-format entries before storing\r\n const formattedEntries = data.journalVoucherEntries.map((entry) => ({\r\n ...entry,\r\n postingDate: this.formatDateValue(entry.postingDate),\r\n valueDate: this.formatDateValue(entry.valueDate),\r\n rate: this.formatNumberValue(entry.rate, 'rate'),\r\n forexDebit: this.formatNumberValue(entry.forexDebit, 'forexDebit'),\r\n localDebit: this.formatNumberValue(entry.localDebit, 'localDebit'),\r\n forexCredit: this.formatNumberValue(entry.forexCredit, 'forexCredit'),\r\n localCredit: this.formatNumberValue(entry.localCredit, 'localCredit'),\r\n }));\r\n\r\n this.accGlDetailsEnquiryReportModel = {\r\n ...data,\r\n journalVoucherEntries: formattedEntries,\r\n };\r\n\r\n this.rowData = formattedEntries;\r\n this.companyName = data.companyName;\r\n this.reportUser = data.reportUser.toLowerCase();\r\n this.reportTime = formatDate(new Date(), 'dd/MM/yyyy hh:mm a', 'en-US');\r\n this.currentReportValueOrPostDate = formatDate(data.date, 'dd/MM/yyyy', 'en-US');\r\n\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 === 'VD' ? 'Value Date' : 'Posting Date';\r\n this.metaDataTwo = {\r\n Company: this.companyName,\r\n [DateType]: this.currentReportValueOrPostDate,\r\n };\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 window.alert(error.message);\r\n }\r\n );\r\n }\r\n\r\n private formatDateValue(value: any): string {\r\n if (!value) return '';\r\n return formatDate(new Date(value), 'dd/MM/yyyy', 'en-US');\r\n }\r\n\r\n private formatNumberValue(value: any, field: string): string {\r\n if (value == null) return '';\r\n return field === 'rate' ? Number(value).toFixed(8) : Number(value).toFixed(3);\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 return description.length > 50 ? 40 : 20;\r\n }\r\n\r\n onSearch(text: string): void {\r\n const normalize = (str: any): string =>\r\n str\r\n ?.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) => normalize(value).includes(search))\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 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 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 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 <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\" [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, tooltipField: 'product', valueFormatter: params => this.productCodeMap[params.value] || params.value },\r\n { headerName: 'User Id', field: 'id', flex: 1, minWidth: 70, cellClass: '', 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'\r\n },\r\n { headerName: 'Transaction Ref Number', field: 'transactionReferenceNumber', flex: 1, minWidth: 100, tooltipField: 'transactionReferenceNumber' },\r\n { headerName: 'Trans. Date', field: 'businessDate', flex: 1, minWidth: 75, valueFormatter: this.dateFormatter.bind(this), tooltipValueGetter: (params) => this.dateFormatter(params), },\r\n { headerName: 'SendClient', field: 'sendAgent', flex: 1, minWidth: 120, tooltipField: 'sendAgent' },\r\n { headerName: 'SendClntBranch', field: 'sendAgtBranch', flex: 1, minWidth: 120, tooltipField: 'sendAgtBranch' },\r\n { headerName: 'RecvClient', field: 'recvAgent', flex: 1, minWidth: 120, tooltipField: 'recvAgent' },\r\n { headerName: 'RcvClntBranch', field: 'rcvAgtBranch', flex: 1, minWidth: 120, tooltipField: 'rcvAgtBranch' },\r\n { headerName: 'Sender Name', field: 'sendName', flex: 1, minWidth: 120, tooltipField: 'sendName' },\r\n { headerName: 'Sender ID Type', field: 'sendIdType', flex: 1, minWidth: 90, tooltipField: 'sendIdType' },\r\n { headerName: 'Sender ID Number', field: 'sendIdNumber', flex: 1, minWidth: 85, tooltipField: 'sendIdNumber' },\r\n { headerName: 'Benf. Name', field: 'benName', flex: 1, minWidth: 100, tooltipField: 'benName' },\r\n { headerName: 'Receive Curr.', field: 'payOutCurrency', flex: 1, minWidth: 80, tooltipField: 'payOutCurrency' },\r\n { headerName: 'Receive Amount', field: 'payOutAmount', flex: 1, minWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell ', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Send Curr.', field: 'payInCurrency', flex: 1, minWidth: 70, tooltipField: 'payInCurrency' },\r\n { headerName: 'Send Amount', field: 'payInAmount', flex: 1, minWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-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', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Transaction Status', field: 'transactionStatus', flex: 1, minWidth: 98, cellClass: 'status-cell', tooltipField: 'transactionStatus' }\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 autoHeight: true\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 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\r\n .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 })\r\n .replace(',', '') // remove the comma\r\n .replace(/\\bam\\b/, 'AM') // force uppercase\r\n .replace(/\\bpm\\b/, 'PM');\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 // Truncate to 3 decimals (no rounding)\r\n return (Math.trunc(number * 1000) / 1000).toFixed(3);\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 [defaultColDef]=\"defaultColDef\"\r\n [rowHeight]=\"22\" \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, inject } from '@angular/core';\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 { themeAlpine } from '@ag-grid-community/theming';\r\nimport 'jspdf-autotable';\r\nimport { formatDate, DatePipe } from '@angular/common';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { GenericExportService } from '../../shared/export-generic.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-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 showReport: boolean;\r\n paginationArray: any[];\r\n selectedExportOption = 'excel';\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 sysUserId: string;\r\n private logoBase64: string | undefined;\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 exportService: GenericExportService = inject(GenericExportService);\r\n\r\n // flags\r\n showMessage: boolean = false;\r\n noDataFound: boolean = false;\r\n\r\n columnDefs: ColDef<BranchActivityReport>[] = [\r\n { field: 'businessDateTime', headerName: 'Business Date', flex: 1,wrapText: true, autoHeight: true, headerClass: 'ag-left-aligned-header', minWidth: 70, width: 70, tooltipField: 'businessDateTime' },\r\n { field: 'transactionDateTime', headerName: 'Transaction Date', minWidth:100,flex: 2, wrapText: true, autoHeight: true },\r\n { field: 'transactionNumber', headerName: 'Transaction Number', flex: 1.8,wrapText: true, autoHeight: true, minWidth:90, width: 130, cellClass: 'ag-left-cols-cell compact-cell-transaction', tooltipField: 'transactionNumber' },\r\n { field: 'product', headerName: 'Product', flex: 0.5,wrapText: true, autoHeight: true, minWidth:80, width: 120, tooltipField: 'product' },\r\n { field: 'sendAgentBranchCode', headerName: 'SendClient BranchCode', flex: 1,wrapText: true, autoHeight: true, minWidth:90, width: 120, tooltipField: 'sendAgentBranchCode' },\r\n { field: 'receiveAgentCode', headerName: 'Receive ClientCode', flex: 1,wrapText: true, autoHeight: true, minWidth: 90, width: 70, tooltipField: 'receiveAgentCode' },\r\n { field: 'payoutCCcode', headerName: 'ReceiveCcy Code', flex: 1,wrapText: true, autoHeight: true,minWidth:90, width: 110, tooltipField: 'payoutCCcode' },\r\n { field: 'payoutAmount', headerName: 'Receive Amount', flex: 1,wrapText: true, autoHeight: true,minWidth:90, maxWidth: 120, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payoutAmount' },\r\n { field: 'payinCCcode', headerName: 'SendCcy Code', flex: 1,wrapText: true, autoHeight: true, minWidth:90,maxWidth: 90, tooltipField: 'payinCCcode' },\r\n { field: 'payinAmount', headerName: 'Send Amount', flex: 1,wrapText: true, autoHeight: true, minWidth:80, maxWidth: 120, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payinAmount' },\r\n { field: 'transactionCommissionAmount', headerName: 'Service Fee', flex: 1, wrapText: true, autoHeight: true, minWidth:90, maxWidth: 100, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'transactionCommissionAmount' },\r\n { field: 'tax', headerName: 'Tax', flex: 1,wrapText: true, autoHeight: true, minWidth: 80, maxWidth: 100, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'tax' },\r\n { field: 'totalPayinAmount', headerName: 'Total Send Amount',minWidth:100, flex: 1,wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'totalPayinAmount' },\r\n { field: 'status', headerName: 'Transaction Status',minWidth:100, flex: 1,wrapText: true, autoHeight: true, tooltipField: 'status' }\r\n ];\r\n\r\n\r\n defaultColDef = {\r\n sortable: true,\r\n filter: true,\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 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 }\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?.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.gridColumnApi = params.columnApi;\r\n this.gridApis[id] = params.api;\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 = \"Branch Activity Receive\";\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 ', this.reportDate]\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','transactionCommissionAmount','tax','totalPayinAmount'\r\n ],\r\n // specify all date fields expected\r\n dateFields: ['businessDateTime', 'transactionDateTime'],\r\n\r\n dateFieldFormats: {\r\n txnDateAndTime: 'dd/MM/yyyy hh:mm a', \r\n cancellationBranchDateTime: 'dd/MM/yyyy HH:mm', \r\n cancellationBusinessDate: 'dd/MM/yyyy' \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 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 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 formatAmount(params: any): string {\r\n const value = params?.value;\r\n if (value !== null && value !== undefined && value !== '') {\r\n const num = Number(value);\r\n return (Math.trunc(num * 1000) / 1000).toFixed(3);\r\n }\r\n return '';\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\": modal.receiveCurrency,\r\n \"TransactionType\": modal.product,\r\n \"BranchCode\": modal.branch\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<section *ngIf=\"showReport\" class=\"my-2\">\r\n <ng-container *ngIf=\"!noDataFound\">\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 class=\"panel-cls\">{{\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\"[pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event,i)\"\r\n >\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 </ng-container>\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data found matching your search criteria.\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, GridOptions, 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 'jspdf-autotable';\r\nimport { GenericExportService } from '../../shared/export-generic.service';\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 = \"\";\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 exportService: GenericExportService = inject(GenericExportService);\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,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', minWidth: 90, width: 70, tooltipField: 'businessDateTime' },\r\n { field: 'transactionDateAndTime', headerName: 'Receive Date', minWidth: 100, flex: 2, headerClass: 'ag-header-cell', wrapText: true, autoHeight: true, tooltipField: 'transactionDateAndTime' },\r\n { field: 'transactionNumber', headerName: 'Transaction Number', minWidth: 90, flex: 1.8,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', width: 130, cellClass: 'ag-left-cols-cell compact-cell-transaction', tooltipField: 'transactionNumber' },\r\n { field: 'product', headerName: 'Product', minWidth: 80, flex: 0.5,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', width: 120, tooltipField: 'product' },\r\n { field: 'senderName', headerName: 'Sender Name', flex: 1,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', minWidth: 90,width: 130, tooltipField: 'senderName' },\r\n { field: 'sendAgentCode', headerName: 'Send ClientCode', flex: 1,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', minWidth: 90, width: 70, tooltipField: 'sendAgentCode' },\r\n { field: 'receiverName', headerName: 'Receiver Name', flex: 1,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', minWidth: 90, width: 130, tooltipField: 'receiverName' },\r\n { field: 'receiveAgentBranchCode', headerName: 'ReceiveClient BranchCode', headerClass: 'ag-header-cell', flex: 1,wrapText: true, autoHeight: true, minWidth: 100, maxWidth: 120, tooltipField: 'receiveAgentBranchCode' },\r\n { field: 'payOutCurrency', headerName: 'Receive CcyCode', flex: 1,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', minWidth: 90, maxWidth: 100, tooltipField: 'payOutCurrency' },\r\n { field: 'amountPaid', headerName: 'Amount Paid', flex: 1,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', minWidth: 90,width: 100, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'amountPaid' },\r\n { field: 'status', headerName: 'Transaction Status', minWidth: 90, flex: 1,wrapText: true, autoHeight: true, headerClass: 'ag-header-cell', tooltipField: 'status' }\r\n ];\r\n\r\n defaultColDef = {\r\n sortable: true,\r\n filter: true,\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 \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 // Currency Formatter\r\n\r\n formatAmount(params: any): string {\r\n if (params.value == null) return '0.000';\r\n const num = Number(params.value);\r\n return num.toFixed(3);\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 = \"Branch Activity Receive\";\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 ', this.reportDate]\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 'amountPaid'\r\n ],\r\n // specify all date fields expected\r\n dateFields: ['businessDateTime', 'transactionDateAndTime'],\r\n\r\n dateFieldFormats: {\r\n txnDateAndTime: 'dd/MM/yyyy hh:mm a', \r\n cancellationBranchDateTime: 'dd/MM/yyyy HH:mm', \r\n cancellationBusinessDate: 'dd/MM/yyyy' \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 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 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\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?.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\":modal.receiveCurrency,\r\n \"TransactionType\": modal.product,\r\n \"BranchCode\": modal.branch\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 <ng-container *ngIf=\"!noDataFound\">\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 class=\"panel-cls\">{{\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: 407px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"item.value\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\"[pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event,i)\"\r\n >\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 </ng-container>\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data found matching your search criteria.\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 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: 63, tooltipValueGetter: params => params.value || ''},\r\n { headerName: 'Cancellation Branch Date', field: 'cancellationBranchDateTime', flex: 1, minWidth: 65, valueFormatter: params => this.formatDateTime(params.value), tooltipValueGetter: params => this.formatDateTime(params.value) },\r\n { headerName: 'Cancellation Business Date', field: 'cancellationBusinessDate', flex: 1, minWidth: 75, valueFormatter: params => this.formatDateOnly(params.value), tooltipValueGetter: params => this.formatDateOnly(params.value) },\r\n { headerName: 'Transaction Number', field: 'transactionNumber', flex: 1, minWidth: 80, tooltipField: 'transactionNumber' },\r\n { headerName: 'Product', field: 'product', flex: 1, minWidth: 60, tooltipField: 'product' },\r\n { headerName: 'Send Client Branch Code', field: 'sendAgentBranchCode', flex: 1, minWidth: 90, tooltipField: 'sendAgentBranchCode' },\r\n { headerName: 'Send Principal Client Code (If Applicable)', field: 'sendPrincipalAgentCode', flex: 1, minWidth: 90, tooltipField: 'sendPrincipalAgentCode' },\r\n { headerName: 'Receive Client Code', field: 'recvAGTcode', flex: 1, minWidth: 80, tooltipField: 'recvAGTcode' },\r\n { headerName: 'Receive CcyCode', field: 'payoutCCcode', flex: 1, minWidth: 65, tooltipField: 'payoutCCcode' },\r\n { headerName: 'Receive Amount', field: 'payOutAmount', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatAmount ,tooltipValueGetter: this.formatAmount },\r\n { headerName: 'Send CcyCode', field: 'payinCCcode', flex: 1, minWidth: 69, tooltipField: 'payinCCcode' },\r\n { headerName: 'Send Amount', field: 'payInAmount', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatAmount, tooltipValueGetter: this.formatAmount},\r\n { headerName: 'Service Fee', field: 'txnCommission', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatAmount, tooltipValueGetter: this.formatAmount },\r\n { headerName: 'Tax', field: 'tax', flex: 1, minWidth: 70, cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatAmount, tooltipValueGetter: this.formatAmount },\r\n { headerName: 'Total Send Amount', field: 'totalPayinAmount', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', valueFormatter: this.formatAmount, tooltipValueGetter: this.formatAmount },\r\n { headerName: 'Transaction Status', field: 'status', flex: 1, minWidth: 80, tooltipField: 'status' },\r\n { headerName: 'Cancellation Location Code', field: 'cancellationLocationCode', flex: 1, minWidth: 95, 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 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 autoHeight: true\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 // filteredData for data in ag grid table\r\n this.filteredData = data;\r\n //dataMap for data in filtered table\r\n this.dataMap = JSON.parse(JSON.stringify(data));\r\n\r\n if (\r\n Object.keys(this.filteredData).length === 0 ||\r\n Object.values(this.filteredData).every(arr => arr.length === 0)\r\n ) {\r\n this.noDataFromApi = true;\r\n this.dataMap = {};\r\n this.filteredData = {};\r\n return;\r\n }\r\n\r\n this.paginationArray = new Array(Object.keys(this.filteredData).length).fill(15);\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 (searchText.length === 0) {\r\n this.filteredData = structuredClone(this.dataMap);\r\n return;\r\n }\r\n const newFilteredData: Record<string, CancellationTransaction[]> = {};\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 return val != null && val.toString().toLowerCase().includes(searchText);\r\n })\r\n );\r\n if (filteredEntries.length > 0) {\r\n newFilteredData[key] = filteredEntries;\r\n }\r\n }\r\n this.filteredData = newFilteredData;\r\n }\r\n\r\n // Date only\r\n formatDateOnly(date: string | Date): string {\r\n if (!date) return '';\r\n const d = new Date(date);\r\n return `${this.pad(d.getDate())}/${this.pad(d.getMonth() + 1)}/${d.getFullYear()}`;\r\n }\r\n\r\n // Date + Time with AM/PM\r\n formatDateTime(date: string | Date): string {\r\n if (!date) return '';\r\n const d = new Date(date);\r\n\r\n let hours = d.getHours();\r\n const minutes = this.pad(d.getMinutes());\r\n const ampm = hours >= 12 ? 'PM' : 'AM';\r\n\r\n hours = hours % 12;\r\n hours = hours ? hours : 12; // 0 → 12\r\n\r\n return `${this.pad(d.getDate())}/${this.pad(d.getMonth() + 1)}/${d.getFullYear()} ${this.pad(hours)}:${minutes} ${ampm}`;\r\n }\r\n\r\n // helper\r\n private pad(num: number): string {\r\n return num < 10 ? '0' + num : num.toString();\r\n }\r\n\r\n formatAmount(params: any): string {\r\n const value = params?.value;\r\n if (value !== null && value !== undefined && value !== '') {\r\n const num = Number(value);\r\n return (Math.trunc(num * 1000) / 1000).toFixed(3);\r\n }\r\n return '';\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 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 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 class=\"panel-cls\">\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 [rowData]=\"item.value\"\r\n [columnDefs]=\"columnDefs\"\r\n [pagination]=\"true\"\r\n [defaultColDef]=\"defaultColDef\"\r\n [rowHeight]=\"22\"\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, inject, OnInit } from '@angular/core';\r\nimport { RevenuePerTransactionResponseModel } from '../../models/revenue-per-transaction-report/revenue-per-transaction.model';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { ExportService } from '../../shared/export.service';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { ColDef, ColumnApi, GridApi, GridReadyEvent } from 'ag-grid-community';\r\nimport { formatDate } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-revenue-per-transaction-report',\r\n templateUrl: './revenue-per-transaction-report.component.html',\r\n styleUrls: ['./revenue-per-transaction-report.component.scss']\r\n})\r\nexport class RevenuePerTransactionReportComponent implements OnInit {\r\n data: RevenuePerTransactionResponseModel[] = [];\r\n filteredData: RevenuePerTransactionResponseModel[] = [];\r\n user: string = \"\";\r\n sysUserId: string = \"\";\r\n ReportName = \"Revenue Per Transaction\"\r\n reportService: ReportService = inject(ReportService);\r\n exportService: ExportService = inject(ExportService);\r\n reportDate: string;\r\n metaDataOne: Record<string, string>;\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n selectedExportOption: string;\r\n searchText: string = '';\r\n pageSize: number = 15;\r\n\r\n gridApi: GridApi;\r\n gridColumnApi: ColumnApi;\r\n showReport: boolean = false;\r\n noDataFound: boolean = false;\r\n\r\n columnDefs: ColDef<RevenuePerTransactionResponseModel>[] = [\r\n { field: 'payInDate', headerName: 'SendDate', flex: 1, headerClass: 'ag-header-cell', minWidth: 100, tooltipField: 'payInDate' },\r\n { field: 'payOutDate', headerName: 'Receive Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 100, wrapText: true, autoHeight: true, tooltipField: 'payOutDate' },\r\n { field: 'transactionNumber', headerName: 'Transaction Number', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'transactionNumber' },\r\n { field: 'productCode', headerName: 'Product', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'productCode' },\r\n { field: 'sendCountry', headerName: 'Send Country', flex: 1, headerClass: 'ag-header-cell', minWidth: 90, wrapText: true, autoHeight: true, tooltipField: 'sendCountry' },\r\n { field: 'sendAgentName', headerName: 'SendClient Name', flex: 1, headerClass: 'ag-header-cell', minWidth: 120, wrapText: true, autoHeight: true, tooltipField: 'sendAgentName' },\r\n { field: 'sendAgentCode', headerName: 'SendClient Code', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'sendAgentCode' },\r\n { field: 'sendAgentBranchCode', headerName: 'SendClient BranchCode', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'sendAgentBranchCode' },\r\n { field: 'receiveCountry', headerName: 'Receive Country', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'receiveCountry' },\r\n { field: 'receiveAgentName', headerName: 'ReceiveClient Name', flex: 1, headerClass: 'ag-header-cell', minWidth: 150, wrapText: true, autoHeight: true, tooltipField: 'receiveAgentName' },\r\n { field: 'receiveAgentCode', headerName: 'ReceiveClient Code', flex: 1, headerClass: 'ag-header-cell', minWidth: 90, wrapText: true, autoHeight: true, tooltipField: 'receiveAgentCode' },\r\n { field: 'payInCurrency', headerName: 'Send CcyCode', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'payInCurrency' },\r\n { field: 'payInAmount', headerName: 'Send Amount', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payInAmount' },\r\n { field: 'transactionCommission', headerName: 'Service Fee', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'transactionCommission' },\r\n { field: 'usdRate', headerName: 'USD Rate', flex: 1, headerClass: 'ag-header-cell', wrapText: true, minWidth: 80, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'usdRate' },\r\n { field: 'ezRemitSellMargin', headerName: 'XM SellMargin', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'ezRemitSellMargin' },\r\n { field: 'ezRemitSellRate', headerName: 'XM SellRate', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'ezRemitSellRate' },\r\n { field: 'bankSellRate', headerName: 'Bank SellRate', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'bankSellRate' },\r\n { field: 'payOutCurrency', headerName: 'Receive CcyCode', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'payOutCurrency' },\r\n { field: 'payOutAmount', headerName: 'Receive Amount', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payOutAmount' },\r\n { field: 'beneDeductAmount', headerName: 'BeneDeduct Amount', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'beneDeductAmount' },\r\n { field: 'usdRateAppliedPayout', headerName: 'USDRate @Payout', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'usdRateAppliedPayout' },\r\n { field: 'xMsCommissionShare', headerName: \"XM's Service Fee Share\", flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'xmsCommissionShare' },\r\n { field: 'xmExchangeVariation', headerName: 'XM Exchange Variation (Gain/Loss)', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'xmExchangeVariation' },\r\n { field: 'xMsBeneDeductShare', headerName: \"XM's BeneDeduct Share\", flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'xmsBeneDeductShare' },\r\n { field: 'revenuePerTransaction', headerName: 'Revenue Per Transaction', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'revenuePerTransaction' },\r\n { field: 'totalSettleAmount', headerName: 'Total Settlement', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, valueFormatter: this.formatAmount.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'totalSettleAmount' },\r\n { field: 'transactionStatus', headerName: 'Transaction Status', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'transactionStatus' },\r\n ]\r\n\r\n defaultColDef = {\r\n sortable: true,\r\n filter: true,\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 constructor() { }\r\n\r\n ngOnInit(): void {\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 }\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 // Currency Formatter\r\n formatAmount(params: any): string {\r\n if (params.value == null) return '0.000';\r\n const num = Number(params.value);\r\n return num.toFixed(3); \r\n }\r\n\r\n onSearch(text: string) {\r\n this.searchText = text;\r\n if (this.searchText === \"\") {\r\n this.filteredData = JSON.parse(JSON.stringify(this.data));\r\n return;\r\n }\r\n const data = JSON.parse(JSON.stringify(this.data));\r\n this.filteredData = data.filter((row) =>\r\n Object.values(row).some(val => String(val).toLowerCase().includes(this.searchText.toLowerCase()))\r\n )\r\n }\r\n\r\n handleExport(option: string) {\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 exportToExcel(): void {\r\n if (!this.data?.length) return;\r\n\r\n const title = this.ReportName;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User ', this.sysUserId],\r\n ['Report Time ', this.reportDate]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'payInAmount', 'payOutAmount',\r\n 'transactionCommission', 'beneDeductAmount', 'usdRateAppliedPayout', 'xMsCommissionShare', 'xmExchangeVariation',\r\n 'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'\r\n ]\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, headers, rows, 'Revenue_Per_Transaction.xlsx');\r\n }\r\n\r\n exportToCSV(): void {\r\n if (!this.data?.length) return;\r\n\r\n const title = this.ReportName;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.sysUserId],\r\n ['Report Time : ', this.reportDate]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'payInAmount', 'payOutAmount',\r\n 'transactionCommission', 'beneDeductAmount', 'usdRateAppliedPayout', 'xMsCommissionShare', 'xmExchangeVariation',\r\n 'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'\r\n ]\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, headers, rows, 'Revenue_Per_Transaction.csv');\r\n }\r\n\r\n exportToPDF(): void {\r\n if (!this.data?.length) return;\r\n\r\n const title = 'Transaction Enquiry';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.sysUserId],\r\n ['Report Time : ', this.reportDate]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'payInAmount', 'payOutAmount',\r\n 'transactionCommission', 'beneDeductAmount', 'usdRateAppliedPayout', 'xMsCommissionShare', 'xmExchangeVariation',\r\n 'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'\r\n ]\r\n });\r\n\r\n this.exportService.exportToPdfUniversal(title, metadata, headers, rows, 'Revenue_Per_Transaction.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 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 = this.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\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 \"sendBusinessPartnerId\": modal.sendBusinessPartner,\r\n \"RecvBusinessPartenrId\": modal.recvBusinessPartner,\r\n \"TransactionStatus\": modal.transactionStatus.join(\",\")\r\n }\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getRevenuePerTransactionReport(searchData)\r\n .subscribe({\r\n next: (data) => {\r\n this.data = data;\r\n this.filteredData = JSON.parse(JSON.stringify(this.data));\r\n console.log(this.data);\r\n this.noDataFound = data?.length === 0 ? true : false;\r\n },\r\n error: (err) => {\r\n console.log(err);\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n complete: () => {\r\n this.showReport = true;\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n }\r\n })\r\n }\r\n\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\">\r\n</lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n<section *ngIf=\"showReport\" class=\"my-2 mx-1\">\r\n\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"false\"\r\n [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"\" (exportEvent)=\"handleExport($event)\"\r\n (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n <div style=\"position: relative;\" *ngIf=\"filteredData?.length>0\">\r\n <lib-page-size-selector [totalEntries]=\"data?.length\" [defaultSize]=\"'15'\" [gridApi]=\"gridApi\">\r\n ></lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"width: 100%;height: 407px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"filteredData\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" [pagination]=\"true\" [paginationPageSize]=\"pageSize\"\r\n (gridReady)=\"onGridReady($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data found matching your search criteria.\r\n </div>\r\n\r\n</section>","import { Component, OnInit } from '@angular/core';\r\nimport { GridApi } from 'ag-grid-community';\r\nimport { Subject } from 'rxjs';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { formatDate } from '@angular/common';\r\nimport { StatementOfAccountItem } from '../../models/statement-of-account-report/statement-of-accounts.model';\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\n@Component({\r\n selector: 'lib-statement-of-accounts-report',\r\n templateUrl: './statement-of-accounts-report.component.html',\r\n styleUrls: ['./statement-of-accounts-report.component.scss']\r\n})\r\n\r\nexport class StatementOfAccountsReportComponent implements OnInit {\r\n\r\n ReportName = \"Statement of Accounts\";\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n errorMessage: string;\r\n hasSearched: boolean;\r\n private destroy$ = new Subject<void>();\r\n openingBalAndFunding : StatementOfAccountItem[] =[];\r\n sendDetails: StatementOfAccountItem[] =[];\r\n receiveDetails: StatementOfAccountItem[] =[];\r\n noDataFromApi: boolean;\r\n metaDataOne: Record<string, string>;\r\n user: any;\r\n currentDateTime: Date = new Date();\r\n sendPinnedBottomRow: any[] = [];\r\n receivePinnedBottomRow: any[] = [];\r\n private sendGridApi!: GridApi;\r\n private receiveGridApi!: GridApi;\r\n private openingGridApi!: GridApi;\r\n searchText: string;\r\n closingBalance: number = 0;\r\n\r\n closingBalanceCurrency = 'USD';\r\n closingBalanceUSDInWords: string = '';\r\n\r\n selectedClientType: string = '';\r\n showTables = false;\r\n private logoBase64?: string;\r\n selectedExportOption: string;\r\n\r\n closingBalanceInSettlment: number = 0;\r\n closingBalanceSettlmentCurrency: string = '';\r\n closingBalanceSettlmentInWords: string = '';\r\n closingBalanceSettlmentFormatted: string = '0.000';\r\n closingBalanceInUsdFormatted: string = '0.000';\r\n\r\n\r\n constructor(private reportService: ReportService) { }\r\n\r\n async ngOnInit(): Promise<void> {\r\n this.logoBase64 = await this.loadImageAsBase64('assets/reports-lib/assets/images/XMLogo.png');\r\n }\r\n \r\n columnDefs = [\r\n // { headerName: 'ID', field: 'id', width: 100 },\r\n { headerName: 'Description', field: 'description', flex: 4, tooltipField: 'description', cellClassRules: { 'pinned-total-cell': params => params.node.rowPinned === 'bottom' } },\r\n { headerName: 'Settlment Ccy', field: 'settlmentCcy', flex: 1, tooltipField: 'settlmentCcy', cellClassRules: { 'pinned-total-cell': params => params.node.rowPinned === 'bottom' } },\r\n { headerName: 'Amount In Settlment Ccy', field: 'amountInSettlmentCcy', flex: 2.1, cellClass: 'ag-right-aligned-cell', valueFormatter: this.currencyFormatter, tooltipValueGetter: (params: any) => this.currencyFormatter(params), cellClassRules: { 'pinned-total-cell': params => params.node.rowPinned === 'bottom' } },\r\n { headerName: 'Amount In USD', field: 'amountInUSD', flex: 2.1, cellClass: 'ag-right-aligned-cell', valueFormatter: this.currencyFormatter, tooltipValueGetter: (params: any) => this.currencyFormatter(params), cellClassRules: { 'pinned-total-cell': params => params.node.rowPinned === 'bottom' } }\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 autoHeight: true\r\n };\r\n \r\n currencyFormatter(params: any) {\r\n if (params.value == null) return '0.000';\r\n const num = Number(params.value);\r\n return num.toFixed(3); // rounds to 3 decimals\r\n }\r\n \r\n \r\n async handleSearch(criteria: any): Promise<void> {\r\n const modal = criteria.modal;\r\n const payload = {\r\n businessPartnerID: Number(modal.client),\r\n fromDate: new Date(modal.fromDate).toISOString(),\r\n toDate: new Date(modal.toDate).toISOString(),\r\n clientType: criteria.clientType\r\n };\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 'Client': criteria.clientName\r\n }\r\n console.log(criteria.clientName)\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.errorMessage = '';\r\n this.showTables = false;\r\n this.selectedClientType = criteria.clientType;\r\n \r\n this.reportService.getStatementOfAccount(payload)\r\n .pipe(\r\n finalize(() => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n this.hasSearched = true;\r\n this.showTables = true;\r\n }),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe({\r\n next: (data) => {\r\n console.log(data)\r\n this.openingBalAndFunding = data.openingBalAndFunding ?? [];\r\n this.sendDetails = data.sendDetails ?? [];\r\n this.receiveDetails = data.receiveDetails ?? [];\r\n \r\n // add pinned totals\r\n if (this.selectedClientType == \"SendClient\") {\r\n this.sendPinnedBottomRow = [this.buildTotalRow(this.sendDetails)];\r\n this.receivePinnedBottomRow = [];\r\n }\r\n else if (this.selectedClientType == \"ReceiveClient\") {\r\n this.receivePinnedBottomRow = [this.buildTotalRow(this.receiveDetails)];\r\n this.sendPinnedBottomRow = [];\r\n }\r\n else if (this.selectedClientType === \"Both\") {\r\n this.sendPinnedBottomRow = [this.buildTotalRow(this.sendDetails)];\r\n this.receivePinnedBottomRow = [this.buildTotalRow(this.receiveDetails)];\r\n }\r\n else {\r\n this.sendPinnedBottomRow = [];\r\n this.receivePinnedBottomRow = [];\r\n }\r\n this.calculateClosingBalance();\r\n \r\n this.noDataFromApi =\r\n this.openingBalAndFunding.length === 0 &&\r\n this.sendDetails.length === 0 &&\r\n (!this.receiveDetails || this.receiveDetails.length === 0);\r\n },\r\n error: (err) => {\r\n console.error('Error fetching Statement of Accounts:', err);\r\n this.errorMessage = 'Failed to load Statement of Accounts';\r\n this.openingBalAndFunding = [];\r\n this.sendDetails = [];\r\n this.receiveDetails = [];\r\n this.loadingState = ComponentLoadingStates.Error;\r\n this.showTables = false;\r\n }\r\n });\r\n }\r\n \r\n private buildTotalRow(rows: { amountInSettlmentCcy: number; amountInUSD: number }[]) {\r\n const totalSettle = (rows || []).reduce((sum, r) => sum + (Number(r.amountInSettlmentCcy) || 0), 0);\r\n const totalUsd = (rows || []).reduce((sum, r) => sum + (Number(r.amountInUSD) || 0), 0);\r\n \r\n return {\r\n id: null,\r\n description: 'Total',\r\n settlmentCcy: '',\r\n amountInSettlmentCcy: Number(totalSettle.toFixed(3)),\r\n amountInUSD: Number(totalUsd.toFixed(3))\r\n };\r\n }\r\n \r\n onOpeningGridReady(params: any) {\r\n this.openingGridApi = params.api;\r\n }\r\n onSendGridReady(params: any) {\r\n this.sendGridApi = params.api;\r\n }\r\n onReceiveGridReady(params: any) {\r\n this.receiveGridApi = params.api;\r\n }\r\n \r\n filter(text: string) {\r\n this.searchText = text;\r\n if (this.openingGridApi) {\r\n this.openingGridApi.setQuickFilter(this.searchText);\r\n }\r\n if (this.sendGridApi) {\r\n this.sendGridApi.setQuickFilter(this.searchText);\r\n }\r\n if (this.receiveGridApi) {\r\n this.receiveGridApi.setQuickFilter(this.searchText);\r\n }\r\n }\r\n \r\n private calculateClosingBalance(): void {\r\n // USD totals (existing logic)\r\n const openingBalTotalUsd = (this.openingBalAndFunding || []).reduce(\r\n (sum, r: any) => sum + (Number(r.amountInUSD) || 0), 0\r\n );\r\n const sendTotalUsd = (this.sendDetails || []).reduce(\r\n (sum, r: any) => sum + (Number(r.amountInUSD) || 0), 0\r\n );\r\n const receiveTotalUsd = (this.receiveDetails || []).reduce(\r\n (sum, r: any) => sum + (Number(r.amountInUSD) || 0), 0\r\n );\r\n const rawClosingUsd = openingBalTotalUsd + sendTotalUsd + receiveTotalUsd;\r\n this.closingBalance = Number(rawClosingUsd.toFixed(3)); // numeric USD\r\n \r\n // Settlement currency totals (new)\r\n const openingSettle = (this.openingBalAndFunding || []).reduce(\r\n (sum, r: any) => sum + (Number(r.amountInSettlmentCcy) || 0), 0\r\n );\r\n const sendSettle = (this.sendDetails || []).reduce(\r\n (sum, r: any) => sum + (Number(r.amountInSettlmentCcy) || 0), 0\r\n );\r\n const receiveSettle = (this.receiveDetails || []).reduce(\r\n (sum, r: any) => sum + (Number(r.amountInSettlmentCcy) || 0), 0\r\n );\r\n const rawClosingSettle = openingSettle + sendSettle + receiveSettle;\r\n this.closingBalanceInSettlment = Number(rawClosingSettle.toFixed(3));\r\n \r\n // pick a settlement currency to display (first non-empty)\r\n this.closingBalanceSettlmentCurrency = this.getFirstSettlementCurrency();\r\n\r\n // formatted strings (no-thousand-comma, 3 decimals)\r\n this.closingBalanceInUsdFormatted = this.formatNoComma(this.closingBalance);\r\n this.closingBalanceSettlmentFormatted = this.formatNoComma(this.closingBalanceInSettlment);\r\n \r\n this.closingBalanceUSDInWords = this.numberToWords(this.closingBalance);\r\n this.closingBalanceSettlmentInWords =\r\n this.closingBalanceInSettlment !== null &&\r\n this.closingBalanceInSettlment !== undefined &&\r\n !isNaN(Number(this.closingBalanceInSettlment))\r\n ? this.numberToWords(this.closingBalanceInSettlment)\r\n : '';\r\n }\r\n\r\n private formatNoComma(value: number | null | undefined): string {\r\n if (value === null || value === undefined || isNaN(Number(value))) return '0.000';\r\n const num = Number(value);\r\n const truncated = Math.trunc(num * 1000) / 1000;\r\n return truncated.toFixed(3);\r\n }\r\n \r\n \r\n private getFirstSettlementCurrency(): string {\r\n const tryGet = (arr: any[]) => {\r\n if (!arr || arr.length === 0) return '';\r\n for (const r of arr) {\r\n if (r && r.settlmentCcy) return r.settlmentCcy;\r\n }\r\n return '';\r\n };\r\n \r\n return tryGet(this.openingBalAndFunding) || tryGet(this.sendDetails) || tryGet(this.receiveDetails) || '';\r\n }\r\n \r\n numberToWords(num: number): string {\r\n if (num === 0) return \"Zero Point Zero Zero Zero Only\";\r\n \r\n let result = \"\";\r\n \r\n // Handle negative numbers\r\n if (num < 0) {\r\n result = \"Negative \";\r\n num = Math.abs(num);\r\n }\r\n \r\n // Split integer and decimal parts\r\n const integerPart = Math.floor(num);\r\n const decimalPart = Math.round((num - integerPart) * 1000); // up to 3 decimal places\r\n \r\n result += this.convertNumber(integerPart);\r\n \r\n if (decimalPart > 0) {\r\n result += \" Point\";\r\n const decimalStr = decimalPart.toString().padStart(3, \"0\"); // keep 3 digits\r\n for (const digit of decimalStr) {\r\n result += \" \" + this.ones[+digit];\r\n }\r\n }\r\n \r\n return result + \" Only\";\r\n }\r\n \r\n // Helper arrays\r\n private ones = [\"Zero\", \"One\", \"Two\", \"Three\", \"Four\", \"Five\", \"Six\", \"Seven\", \"Eight\", \"Nine\"];\r\n private teens = [\"Ten\", \"Eleven\", \"Twelve\", \"Thirteen\", \"Fourteen\", \"Fifteen\", \"Sixteen\", \"Seventeen\", \"Eighteen\", \"Nineteen\"];\r\n private tens = [\"\", \"\", \"Twenty\", \"Thirty\", \"Forty\", \"Fifty\", \"Sixty\", \"Seventy\", \"Eighty\", \"Ninety\"];\r\n \r\n // Convert whole numbers (Indian/International system)\r\n private convertNumber(num: number): string {\r\n if (num === 0) return \"\";\r\n if (num < 10) return this.ones[num];\r\n if (num < 20) return this.teens[num - 10];\r\n if (num < 100) return this.tens[Math.floor(num / 10)] + (num % 10 !== 0 ? \" \" + this.ones[num % 10] : \"\");\r\n if (num < 1000) return this.convertNumber(Math.floor(num / 100)) + \" Hundred\" + (num % 100 !== 0 ? \" \" + this.convertNumber(num % 100) : \"\");\r\n if (num < 1000000) return this.convertNumber(Math.floor(num / 1000)) + \" Thousand\" + (num % 1000 !== 0 ? \" \" + this.convertNumber(num % 1000) : \"\");\r\n if (num < 1000000000) return this.convertNumber(Math.floor(num / 1000000)) + \" Million\" + (num % 1000000 !== 0 ? \" \" + this.convertNumber(num % 1000000) : \"\");\r\n return this.convertNumber(Math.floor(num / 1000000000)) + \" Billion\" + (num % 1000000000 !== 0 ? \" \" + this.convertNumber(num % 1000000000) : \"\");\r\n }\r\n\r\n onExportChange(value: string): void {\r\n this.selectedExportOption = value;\r\n }\r\n\r\n handleExport(option: string) {\r\n this.selectedExportOption = option;\r\n switch ((this.selectedExportOption || '').toLowerCase()) {\r\n case 'pdf': this.exportToPDF(); break;\r\n case 'excel': this.exportToExcel(); break;\r\n case 'csv': this.exportToCSV(); break;\r\n default: console.warn('Unknown export type:', this.selectedExportOption);\r\n }\r\n }\r\n\r\n exportToPDF(): void {\r\n const sections = this.getVisibleGrids()\r\n .map(s => {\r\n const data = this.getDisplayedData(s.api);\r\n const headers = this.getHeaders();\r\n let rows = this.buildRows(data);\r\n\r\n if (s.title === 'Send Details' && this.sendPinnedBottomRow?.length) {\r\n rows = rows.concat(this.buildRows(this.sendPinnedBottomRow));\r\n }\r\n if (s.title === 'Receive Details' && this.receivePinnedBottomRow?.length) {\r\n rows = rows.concat(this.buildRows(this.receivePinnedBottomRow));\r\n }\r\n\r\n return rows.length ? { title: s.title, headers, rows } : null;\r\n })\r\n .filter(Boolean) as { title: string; headers: string[]; rows: any[][] }[];\r\n if (!sections.length) return;\r\n\r\n const doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: 'a4' });\r\n\r\n if (this.logoBase64) {\r\n doc.addImage(this.logoBase64, 'PNG', 15, 10, 38, 18);\r\n }\r\n\r\n const pageWidth = doc.internal.pageSize.getWidth();\r\n const pageHeight = doc.internal.pageSize.getHeight();\r\n doc.setFont('helvetica', 'bold');\r\n doc.setFontSize(15);\r\n doc.text(this.ReportName, pageWidth / 2, 18, { align: 'center' });\r\n\r\n let y = 34; \r\n doc.setFontSize(10);\r\n Object.entries(this.metaDataOne || {}).forEach(([k, v]) => {\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(`${k}: `, 15, y);\r\n const w = doc.getTextWidth(`${k}: `);\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(String(v ?? ''), 15 + w, y);\r\n y += 6;\r\n });\r\n\r\n const HEAD = this.getHeaders();\r\n\r\n const margin = { left: 15, right: 15 };\r\n const avail = pageWidth - margin.left - margin.right;\r\n const weights = [4, 1, 2, 2];\r\n const sum = weights.reduce((a, b) => a + b, 0);\r\n const widths = weights.map(w => (w / sum) * avail);\r\n\r\n const sharedColumnStyles = {\r\n 0: { cellWidth: widths[0] },\r\n 1: { cellWidth: widths[1] }, \r\n 2: { cellWidth: widths[2], halign: 'right' }, \r\n 3: { cellWidth: widths[3], halign: 'right' } \r\n };\r\n\r\n const titleGapAboveFirst = 0;\r\n const titleGapAboveDefault = 4;\r\n const titleGapAboveBig = 6;\r\n const titleToTableGap = 2;\r\n const topStartY = 20;\r\n const bottomReserve = 20;\r\n\r\n sections.forEach((s, idx) => {\r\n const isFirst = idx === 0;\r\n const isSendOrReceive = s.title === 'Send Details' || s.title === 'Receive Details';\r\n const preTitleGap = isFirst ? 0 : (isSendOrReceive ? titleGapAboveBig : titleGapAboveDefault);\r\n\r\n if (y + preTitleGap + titleToTableGap > pageHeight - bottomReserve) {\r\n doc.addPage();\r\n y = topStartY;\r\n } else {\r\n y += preTitleGap;\r\n }\r\n\r\n doc.setFont('helvetica', 'bold');\r\n doc.setFontSize(11);\r\n doc.text(s.title, margin.left, y);\r\n\r\n const startYForTable = y + (isFirst ? 0 : titleToTableGap);\r\n\r\n doc.autoTable({\r\n head: [HEAD],\r\n body: s.rows,\r\n startY: startYForTable,\r\n theme: 'grid',\r\n margin,\r\n tableWidth: avail,\r\n columnStyles: sharedColumnStyles,\r\n headStyles: { fillColor: [220, 220, 220], textColor: 0, fontStyle: 'bold', fontSize: 9, halign: 'center' },\r\n bodyStyles: { fontSize: 8 },\r\n styles: { cellPadding: 2, overflow: 'linebreak', minCellHeight: 6 }\r\n });\r\n\r\n y = (doc as any).lastAutoTable.finalY;\r\n });\r\n if (y + 30 > pageHeight - bottomReserve) {\r\n doc.addPage();\r\n y = topStartY;\r\n }\r\n\r\n const closingBody = [\r\n [\r\n { content: 'Closing Balance', colSpan: 2, styles: { halign: 'left', fontStyle: 'bold' } },\r\n { content: Number(this.closingBalanceInSettlment || 0).toFixed(3), styles: { halign: 'right' } },\r\n { content: Number(this.closingBalance || 0).toFixed(3), styles: { halign: 'right' } }\r\n ],\r\n [\r\n { content: `${this.closingBalanceSettlmentCurrency || ''} - ${this.closingBalanceSettlmentInWords || ''}`, colSpan: 4, styles: { halign: 'left' } }\r\n ],\r\n [\r\n { content: `${this.closingBalanceCurrency || ''} - ${this.closingBalanceUSDInWords || ''}`, colSpan: 4, styles: { halign: 'left' } }\r\n ]\r\n ];\r\n\r\n doc.autoTable({\r\n body: closingBody,\r\n startY: y,\r\n theme: 'grid',\r\n margin,\r\n tableWidth: avail,\r\n columnStyles: sharedColumnStyles,\r\n styles: { cellPadding: 2, fontSize: 9 }\r\n });\r\n\r\n doc.save('Statement_of_Accounts.pdf');\r\n}\r\n\r\n exportToExcel(): void {\r\n const sections = this.getVisibleGrids()\r\n .map(s => {\r\n const data = this.getDisplayedData(s.api);\r\n const headers = this.getHeaders();\r\n let rows = this.buildRows(data);\r\n \r\n if (s.title === 'Send Details' && this.sendPinnedBottomRow?.length) {\r\n rows = rows.concat(this.buildRows(this.sendPinnedBottomRow));\r\n }\r\n if (s.title === 'Receive Details' && this.receivePinnedBottomRow?.length) {\r\n rows = rows.concat(this.buildRows(this.receivePinnedBottomRow));\r\n }\r\n \r\n return rows.length ? { title: s.title, headers, rows } : null;\r\n })\r\n .filter(Boolean) as { title: string; headers: string[]; rows: any[][] }[];\r\n \r\n if (!sections.length) return;\r\n \r\n const wb = new ExcelJS.Workbook();\r\n const ws = wb.addWorksheet('Statement of Accounts');\r\n let r = 1;\r\n \r\n if (this.logoBase64) {\r\n const imgId = wb.addImage({ base64: this.logoBase64, extension: 'png' });\r\n ws.addImage(imgId, { tl: { col: 0, row: 0 }, ext: { width: 145, height: 66 }, editAs: 'oneCell' });\r\n }\r\n \r\n ws.getRow(r).getCell(2).value = this.ReportName;\r\n ws.getRow(r).getCell(2).font = { bold: true, size: 16 };\r\n r += 3;\r\n \r\n Object.entries(this.metaDataOne || {}).forEach(([k, v]) => {\r\n ws.getRow(r++).getCell(1).value = `${k}: ${v ?? ''}`;\r\n });\r\n \r\n const writeSection = (sec: { title: string; headers: string[]; rows: any[][] }) => {\r\n ws.getRow(r++).getCell(1).value = sec.title;\r\n \r\n const headerRow = ws.getRow(r++);\r\n sec.headers.forEach((h, i) => {\r\n const c = headerRow.getCell(i + 1);\r\n c.value = h;\r\n c.font = { bold: true };\r\n c.alignment = { vertical: 'middle', horizontal: 'center' };\r\n c.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'D9D9D9' } };\r\n c.border = { top: { style: 'thin' }, bottom: { style: 'thin' }, left: { style: 'thin' }, right: { style: 'thin' } };\r\n });\r\n \r\n const dataStart = r;\r\n \r\n sec.rows.forEach(rowData => {\r\n const row = ws.getRow(r++);\r\n rowData.forEach((v, i) => {\r\n const c = row.getCell(i + 1);\r\n if (sec.headers[i] === 'Amount In Settlment Ccy' || sec.headers[i] === 'Amount In USD') {\r\n const num = typeof v === 'string' ? Number(v.replace(/[, ]+/g, '')) : Number(v);\r\n c.value = isNaN(num) ? (v ?? '') : num;\r\n c.alignment = { horizontal: 'right' };\r\n if (!isNaN(num)) c.numFmt = '0.000';\r\n } else {\r\n c.value = v ?? '';\r\n }\r\n c.border = { top: { style: 'thin' }, bottom: { style: 'thin' }, left: { style: 'thin' }, right: { style: 'thin' } };\r\n });\r\n });\r\n \r\n for (let col = 1; col <= sec.headers.length; col++) {\r\n let max = (sec.headers[col - 1] || '').toString().length;\r\n for (let rr = dataStart - 1; rr < r; rr++) {\r\n const val = (ws.getRow(rr).getCell(col).value ?? '').toString();\r\n if (val) max = Math.max(max, val.length + 2);\r\n }\r\n ws.getColumn(col).width = Math.min(Math.max(max, 8), 60);\r\n }\r\n };\r\n \r\n sections.forEach((sec, idx) => {\r\n writeSection(sec);\r\n if (idx < sections.length - 1) {\r\n r++;\r\n }\r\n });\r\n \r\n const totalCols = sections.length\r\n ? Math.max(...sections.map(s => s.headers.length))\r\n : this.columnDefs.length;\r\n const cols = Math.max(totalCols, 4);\r\n const labelColsEnd = 2;\r\n const settleCol = 3; \r\n const usdCol = 4;\r\n \r\n const row1 = ws.getRow(r++);\r\n ws.mergeCells(row1.number, 1, row1.number, labelColsEnd);\r\n row1.getCell(1).value = 'Closing Balance';\r\n row1.getCell(1).font = { bold: true };\r\n row1.getCell(1).alignment = { horizontal: 'left', vertical: 'middle' };\r\n \r\n const settleValue = Number(this.closingBalanceInSettlment ?? 0);\r\n const usdValue = Number(this.closingBalance ?? 0);\r\n \r\n const settleCell = row1.getCell(settleCol);\r\n settleCell.value = isNaN(settleValue) ? '' : settleValue;\r\n settleCell.alignment = { horizontal: 'right' };\r\n if (!isNaN(settleValue)) settleCell.numFmt = '0.000';\r\n \r\n const usdCell = row1.getCell(usdCol);\r\n usdCell.value = isNaN(usdValue) ? '' : usdValue;\r\n usdCell.alignment = { horizontal: 'right' };\r\n if (!isNaN(usdValue)) usdCell.numFmt = '0.000';\r\n\r\n for (let c = 1; c <= cols; c++) {\r\n row1.getCell(c).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 row2 = ws.getRow(r++);\r\n ws.mergeCells(row2.number, 1, row2.number, cols);\r\n row2.getCell(1).value = `${this.closingBalanceSettlmentCurrency || ''} - ${this.closingBalanceSettlmentInWords || ''}`;\r\n row2.getCell(1).alignment = { horizontal: 'left', vertical: 'middle' };\r\n row2.getCell(1).font = { italic: false };\r\n \r\n for (let c = 1; c <= cols; c++) {\r\n const edge: any = { top: { style: 'thin' }, bottom: { style: 'thin' } };\r\n if (c === 1) edge.left = { style: 'thin' };\r\n if (c === cols) edge.right = { style: 'thin' };\r\n row2.getCell(c).border = edge;\r\n }\r\n \r\n const row3 = ws.getRow(r++);\r\n ws.mergeCells(row3.number, 1, row3.number, cols);\r\n row3.getCell(1).value = `${this.closingBalanceCurrency || ''} - ${this.closingBalanceUSDInWords || ''}`;\r\n row3.getCell(1).alignment = { horizontal: 'left', vertical: 'middle' };\r\n \r\n for (let c = 1; c <= cols; c++) {\r\n const edge: any = { top: { style: 'thin' }, bottom: { style: 'thin' } };\r\n if (c === 1) edge.left = { style: 'thin' };\r\n if (c === cols) edge.right = { style: 'thin' };\r\n row3.getCell(c).border = edge;\r\n }\r\n \r\n wb.xlsx.writeBuffer().then(buf => {\r\n FileSaver.saveAs(\r\n new Blob([buf], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }),\r\n 'Statement_of_Accounts.xlsx'\r\n );\r\n });\r\n }\r\n\r\n exportToCSV(): void {\r\n const sections = this.getVisibleGrids()\r\n .map(s => {\r\n const data = this.getDisplayedData(s.api);\r\n let rows = this.buildRows(data);\r\n \r\n if (s.title === 'Send Details' && this.sendPinnedBottomRow?.length) {\r\n rows = rows.concat(this.buildRows(this.sendPinnedBottomRow));\r\n }\r\n if (s.title === 'Receive Details' && this.receivePinnedBottomRow?.length) {\r\n rows = rows.concat(this.buildRows(this.receivePinnedBottomRow));\r\n }\r\n \r\n return rows.length ? { title: s.title, headers: this.getHeaders(), rows } : null;\r\n })\r\n .filter(Boolean) as { title: string; headers: string[]; rows: any[][] }[];\r\n \r\n if (!sections.length) return;\r\n \r\n const lines: string[] = [];\r\n lines.push(this.ReportName);\r\n \r\n Object.entries(this.metaDataOne || {}).forEach(([k, v]) => lines.push(`${k}: ${v ?? ''}`));\r\n \r\n sections.forEach((sec, idx) => {\r\n lines.push(sec.title);\r\n lines.push(sec.headers.join(','));\r\n sec.rows.forEach(r => lines.push(r.map(v => `\"${v ?? ''}\"`).join(',')));\r\n \r\n if (idx < sections.length - 1) {\r\n lines.push('');\r\n }\r\n });\r\n \r\n lines.push(\r\n `\"Closing Balance\",,\"${Number(this.closingBalanceInSettlment || 0).toFixed(3)}\",\"${Number(this.closingBalance || 0).toFixed(3)}\"`\r\n );\r\n \r\n lines.push(`\"${this.closingBalanceSettlmentCurrency || ''} - ${this.closingBalanceSettlmentInWords || ''}\"`);\r\n \r\n lines.push(`\"${this.closingBalanceCurrency || ''} - ${this.closingBalanceUSDInWords || ''}\"`);\r\n \r\n const csv = lines.join('\\n');\r\n FileSaver.saveAs(\r\n new Blob([csv], { type: 'text/csv;charset=utf-8' }),\r\n 'Statement_of_Accounts.csv'\r\n );\r\n }\r\n\r\n\r\n private loadImageAsBase64(src: 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 = src;\r\n img.onload = () => {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx) return reject('Canvas context failed');\r\n ctx.drawImage(img, 0, 0);\r\n resolve(canvas.toDataURL('image/png'));\r\n };\r\n img.onerror = () => reject('Failed to load image: ' + src);\r\n });\r\n }\r\n\r\n private getDisplayedData(api?: GridApi): any[] {\r\n if (!api) return [];\r\n const rows: any[] = [];\r\n const count = api.getDisplayedRowCount();\r\n for (let i = 0; i < count; i++) {\r\n const node = api.getDisplayedRowAtIndex(i);\r\n if (node && !node.group && !node.rowPinned) rows.push(node.data);\r\n }\r\n return rows;\r\n }\r\n\r\n private getHeaders(): string[] {\r\n return this.columnDefs.map(c => c.headerName || c.field);\r\n }\r\n private format3(n: any): string {\r\n if (n == null || n === '') return '';\r\n const num = Number(n);\r\n return num.toFixed(3);\r\n }\r\n private buildRows(data: any[]): any[][] {\r\n return data.map(row =>\r\n this.columnDefs.map(col => {\r\n const f = col.field;\r\n if (f === 'amountInSettlmentCcy' || f === 'amountInUSD') {\r\n return this.format3(row[f]);\r\n }\r\n return row[f] ?? '';\r\n })\r\n );\r\n }\r\n\r\n private getVisibleGrids(): { title: string; api?: GridApi }[] {\r\n const out: { title: string; api?: GridApi }[] = [];\r\n out.push({ title: '', api: this.openingGridApi });\r\n if (this.selectedClientType === 'SendClient' || this.selectedClientType === 'Both') {\r\n out.push({ title: 'Send Details', api: this.sendGridApi });\r\n }\r\n if (this.selectedClientType === 'ReceiveClient' || this.selectedClientType === 'Both') {\r\n out.push({ title: 'Receive Details', api: this.receiveGridApi });\r\n }\r\n return out;\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 *ngIf=\"loadingState === ComponentLoadingState.Loading\"></app-loader>\r\n<span *ngIf=\"loadingState === ComponentLoadingState.Error\">{{ errorMessage }}</span>\r\n<div *ngIf=\"showTables\">\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<ag-grid-angular\r\n class=\"ag-theme-alpine transaction-grid\"\r\n [rowData]=\"openingBalAndFunding\"\r\n [columnDefs]=\"columnDefs\"\r\n [pinnedBottomRowData]=\"[]\"\r\n [headerHeight]=\"32\" \r\n [defaultColDef]=\"defaultColDef\"\r\n [rowHeight]=\"28\"\r\n (gridReady)=\"onOpeningGridReady($event)\"\r\n style=\"width: 100%; height: 91px;\">\r\n</ag-grid-angular>\r\n\r\n<div *ngIf=\"(selectedClientType === 'SendClient' || selectedClientType === 'Both')\">\r\n<h3 class=\"details-table\"><span style=\"margin-left: 3px;\">Send Details</span></h3>\r\n<ag-grid-angular\r\n class=\"ag-theme-alpine transaction-grid\"\r\n [rowData]=\"sendDetails\"\r\n [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\"\r\n [rowHeight]=\"28\"\r\n [headerHeight]=\"32\" \r\n [pinnedBottomRowData]=\"sendPinnedBottomRow\"\r\n (gridReady)=\"onSendGridReady($event)\" \r\n style=\"width: 100%; height: 203px;\">\r\n</ag-grid-angular>\r\n</div>\r\n\r\n<div *ngIf=\"(selectedClientType === 'ReceiveClient' || selectedClientType === 'Both')\">\r\n<h3 class=\"details-table\"><span style=\"margin-left: 3px;\">Receive Details</span></h3>\r\n<ag-grid-angular\r\n class=\"ag-theme-alpine transaction-grid\"\r\n [rowData]=\"receiveDetails\"\r\n [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\"\r\n [rowHeight]=\"28\"\r\n [headerHeight]=\"32\" \r\n [pinnedBottomRowData]=\"receivePinnedBottomRow\"\r\n (gridReady)=\"onReceiveGridReady($event)\" \r\n style=\"width: 100%; height: 203px;\">\r\n</ag-grid-angular>\r\n</div>\r\n\r\n\r\n<!-- Closing balance row -->\r\n<div class=\"closing-balance-row\">\r\n <div class=\"label\" title=\"Closing Balance\">\r\n Closing Balance\r\n </div>\r\n\r\n <div class=\"settlement\" \r\n [title]=\"closingBalanceSettlmentFormatted\">\r\n {{ closingBalanceSettlmentFormatted }}\r\n </div>\r\n\r\n <div class=\"value\" [title]=\"closingBalanceInUsdFormatted\">\r\n {{ closingBalanceInUsdFormatted }}\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- settlement currency words row -->\r\n<div class=\"closing-balance-row closing-balance-words\"\r\n *ngIf=\"closingBalanceSettlmentInWords\">\r\n <div class=\"label\"\r\n [title]=\"closingBalanceSettlmentCurrency + ' - ' + closingBalanceSettlmentInWords\">\r\n {{ closingBalanceSettlmentCurrency }} - {{ closingBalanceSettlmentInWords }}\r\n </div>\r\n</div>\r\n\r\n<!-- existing USD words row (keep as-is) -->\r\n<div class=\"closing-balance-row closing-balance-words\">\r\n <div class=\"label\" [title]=\"closingBalanceCurrency + ' - ' + closingBalanceUSDInWords\">\r\n {{ closingBalanceCurrency }} - {{ closingBalanceUSDInWords }}\r\n </div>\r\n</div>\r\n","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 }\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;\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=\"panel-cls\">\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: 375px;\"\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: 375px;\"\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 { RevenuePerTransactionReportComponent } from './components/revenue-per-transaction-report/revenue-per-transaction-report.component';\r\nimport { StatementOfAccountsReportComponent } from './components/statement-of-accounts-report/statement-of-accounts-report.component';\r\n\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 RevenuePerTransactionReportComponent,\r\n StatementOfAccountsReportComponent,\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 StatementOfAccountsReportComponent,\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}","export interface Country {\r\n number: string;\r\n countryCode: string;\r\n country: string;\r\n ezRemitCountry: string;\r\n}\r\n\r\nexport interface PayInAgent {\r\n correlationId: string;\r\n code: string;\r\n agent: string;\r\n number: string;\r\n}\r\n\r\nexport interface ProductType {\r\n name: string;\r\n productCode: string;\r\n}\r\n\r\n// export interface Currency {\r\n// currencyCode: string;\r\n// number: string;\r\n// currency: string;\r\n// od: number;\r\n// }\r\n\r\nexport interface CancellationTransactionPageLoadData {\r\n countries: Country[];\r\n payInAgents: PayInAgent[];\r\n productTypes: ProductType[];\r\n // currencies: Currency[];\r\n}\r\n\r\n// export interface Branch {\r\n// businessPartnerBranch: string;\r\n// businessPartnerBranch_CorrelationId: string;\r\n// branchCode: string;\r\n// bank: string;\r\n// number: string;\r\n// }\r\n\r\nexport class CancellationTransaction {\r\n sendAgentBranchNameAndCode: string;\r\n businessDateTime: string;\r\n txnDateAndTime: string;\r\n transactionNumber: string;\r\n product: string;\r\n sendAgentBranchCode: string;\r\n sendPrincipalAgentCode: string;\r\n recvAGTcode: string;\r\n payoutCCcode: string;\r\n payOutAmount: number;\r\n payinCCcode: string;\r\n payInAmount: number;\r\n txnCommission: number;\r\n tax: number;\r\n totalPayinAmount: number;\r\n status: string;\r\n cancellationBranchDateTime: string;\r\n cancellationBusinessDate: string;\r\n cancellationLocationCode: string;\r\n statusChangedBy: string;\r\n cancellationReason: string;\r\n}\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/revenue-per-transaction-report/revenue-per-transaction-report.component';\r\nexport * from './lib/components/statement-of-accounts-report/statement-of-accounts-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';\r\nexport * from './lib/models/revenue-per-transaction-report/revenue-per-transaction.model';\r\nexport * from './lib/models/statement-of-account-report/statement-of-accounts.model'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ConfigService","i1","i3","i1.ReportService","i3.ConfigService","i6","i8.LoaderComponent","i1.ExportService","i2.ReportService","i4","i5","i7.PageSizeSelectorComponent","i8.MetadataComponent","i9.SearchFilterComponent","i2.ExportService","i6.PageSizeSelectorComponent","i7.MetadataComponent","i2","i4.PageSizeSelectorComponent","i5.MetadataComponent","i7.LoaderComponent","i8.SearchFilterComponent","i3.PageSizeSelectorComponent","i4.MetadataComponent","i6.LoaderComponent","i7.SearchFilterComponent","i2.GenericExportService","i5.PageSizeSelectorComponent","i6.MetadataComponent","i7","i5.LoaderComponent","i6.SearchFilterComponent"],"mappings":"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"}
|