@sachin9822/reports-lib 0.0.210 → 0.0.211

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.
@@ -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/models/component-loading-states.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/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/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.ts","../../../projects/reports-lib/src/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.html","../../../projects/reports-lib/src/lib/components/funding-report/funding-report.component.ts","../../../projects/reports-lib/src/lib/components/funding-report/funding-report.component.html","../../../projects/reports-lib/src/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.ts","../../../projects/reports-lib/src/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.html","../../../projects/reports-lib/src/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.ts","../../../projects/reports-lib/src/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.html","../../../projects/reports-lib/src/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.ts","../../../projects/reports-lib/src/lib/components/transaction-monitoring-report/transaction-monitoring-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/lib/models/credit-limit-status-enquiry-report/credit-limit-status-enquiry.model.ts","../../../projects/reports-lib/src/lib/models/transaction-monitoring-report/transaction-monitoring-report-request-domain-model.ts","../../../projects/reports-lib/src/lib/models/transaction-monitoring-report/transaction-monitoring-report.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\nimport { TrialBalanceReport } from '../models/trial-balance-accounts-report/trial-balance-accounts.models';\r\nimport { TransactionMonitoringRequestDomainModel } from '../models/transaction-monitoring-report/transaction-monitoring-report-request-domain-model';\r\nimport { TransactionMonitoringReport } from '../models/transaction-monitoring-report/transaction-monitoring-report';\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 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(data: any): Observable<TransactionData[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/viewReport`;\r\n return this.http.post(url, data).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 // Trial Balance - Accounts Report\r\n\r\n // Api 1 - Get Trial Balance - Accounts report\r\n getTrialBalanceAccountsReport(object: any): Observable<TrialBalanceReport> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetTrialBalanceAccountsReport`;\r\n return this.http.post<TrialBalanceReport>(apiPath, object).pipe(\r\n map(response => response || undefined)\r\n );\r\n }\r\n\r\n // Api 2 - Get Business Unit\r\n GetBusinessUnitForTrialBalanceAccountsReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetBusinessUnit`;\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 Account Status\r\n GetAccountStatusForTrialBalanceAccountsReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetAccountStatus`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n\r\n // Api 4 - Get Date Type\r\n GetDateTypeForTrialBalanceAccountsReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetDateType`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n\r\n // Api 5 - Get Year\r\n GetYearForTrialBalanceAccountsReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetFinancialYear`;\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 From Months\r\n GetFromMonthsForTrialBalanceAccountsReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetFromMonths`;\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 To Months\r\n GetToMonthsForTrialBalanceAccountsReport(year: number, month: number): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetToMonths/${year}/${month}`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n\r\n // Api 8 - Get From Dates\r\n GetFromDatesForTrialBalanceAccountsReport(year: number, fromMonthLabel: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetFromDates/${year}/${fromMonthLabel}`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n\r\n // Api 9 - Get To Dates\r\n GetToDatesForTrialBalanceAccountsReport(object: any): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetToDates`;\r\n return this.http.post(apiPath, object).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n\r\n // Api 10 - Get Currencies\r\n GetCurrenciesForTrialBalanceAccountsReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetCurrencies`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n\r\n // Api 11 - Get default month,year\r\n GetParamDateDefaultForTrialBalanceAccountsReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetParamDateDefault`;\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 //Credit Limit Status Enquiry Report APIs\r\n getClientsForCreditLimitStatusEnquiryReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/CreditLimitStatusEnquiry/GetBusinessPartners`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n \r\n getTransactionTypesForCreditLimitStatusEnquiryReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/CreditLimitStatusEnquiry/GetTransactionStatus`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getCreditLimitStatusEnquiryReport(model: any): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/CreditLimitStatusEnquiry/GetCreditLimitStatusEnquiryReport`;\r\n return this.http.post(apiPath, model).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n //Funding Report\r\n getFundingReport(criteria: any): Observable<any> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/Funding/viewReport`;\r\n return this.http.post(url, criteria).pipe(\r\n map(response => response || {})\r\n );\r\n }\r\n\r\n //Branch Activity Send Summary Report\r\n getPayInAgentforSendSummaryReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/SendSummaryReport/GetAllPayInAgents`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n \r\n getBranchByAgentForSendSummaryReport(code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/SendSummaryReport/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 getParamsForSendSummaryReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/SendSummaryReport/GetBranchActivitySendSummaryReportParams`;\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 getBranchActivitySendSummaryReport(data: BranchActivitySendReportRequestDomainModel | any): Observable<Record<string, BranchActivityReport[]>> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/SendSummaryReport/GetBranchActivitySendSummaryReport`;\r\n return this.http.post(apiPath, data).pipe(map(response => {\r\n return <Record<string, BranchActivityReport[]>>response;\r\n }));\r\n }\r\n//Transaction monitoring Report.\r\n \r\n getParamsForTransactionMonitoringReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TransactionMonitoringReport/TransactionMonitoringReportParams`;\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 getBranchByAgentForTransactionMonitoringReport(code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TransactionMonitoringReport/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 getPayInAgentforTransactionMonitoringReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TransactionMonitoringReport/GetAllPayInAgents`;\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 getTransactionMonitoringReport(data: TransactionMonitoringRequestDomainModel | any): Observable<Record<string, TransactionMonitoringReport[]>> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TransactionMonitoringReport/GetTransactionMonitoringReport`;\r\n return this.http.post(apiPath, data).pipe(map(response => {\r\n return <Record<string, TransactionMonitoringReport[]>>response;\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 rateFields?: string[],\r\n } = {}): { headers: string[], rows: any[][] } {\r\n const { excludeFields = ['srno'], currencyFields = [], rateFields = [] } = 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\r\n if (rateFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(8);\r\n }\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][], searchCriteria: [string, string][], headers: string[], rows: any[][], fileName: string): Promise<void> {\r\n let doc;\r\n doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: [400, 210] });\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 const marginLeft = 15;\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 // --- draw search criteria heading ---\r\n doc.setFont('helvetica', 'bold');\r\n doc.text('Search Criteria:-', marginLeft, currentY);\r\n currentY += 8;\r\n\r\n const rowHeightPerLine = 6;\r\n const minGap = 2; // gap between key and value\r\n const betweenColumnsGap = 15; // gap between left and right columns (you can tune this)\r\n const pageContentWidth = doc.internal.pageSize.width - 2 * marginLeft;\r\n\r\n // --- helper function to measure total width of a key-value pair ---\r\n const measurePairWidth = (key: string, value: string): number => {\r\n doc.setFont('helvetica', 'bold');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n const valueWidth = doc.getTextWidth(value);\r\n return keyWidth + minGap + valueWidth;\r\n };\r\n\r\n // --- calculate max width of left column pairs dynamically ---\r\n let maxLeftPairWidth = 0;\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n const width = measurePairWidth(key, value);\r\n if (width > maxLeftPairWidth) maxLeftPairWidth = width;\r\n }\r\n }\r\n\r\n // --- compute where right column should start ---\r\n const leftColumnStart = marginLeft;\r\n const rightColumnStart = leftColumnStart + maxLeftPairWidth + betweenColumnsGap;\r\n\r\n // --- print search criteria dynamically ---\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n let maxLineCount = 1;\r\n\r\n // Left column\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, leftColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = leftColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n // Right column\r\n if (searchCriteria[i + 1]) {\r\n const [key, value] = searchCriteria[i + 1];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, rightColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = rightColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n currentY += rowHeightPerLine;\r\n }\r\n\r\n const columnCount = headers.length;\r\n const tableWidth = pageWidth - (this.pdfLeftMargin * 2);\r\n const equalWidth = tableWidth / columnCount;\r\n\r\n const columnStyles: { [key: number]: any } = {};\r\n headers.forEach((_, i) => {\r\n columnStyles[i] = { cellWidth: equalWidth };\r\n });\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 const pageCount = doc.internal.getNumberOfPages();\r\n for (let i = 1; i <= pageCount; i++) {\r\n doc.setFont(\"helvetica\", \"bold\");\r\n doc.setPage(i);\r\n doc.setFontSize(9);\r\n doc.setTextColor(100);\r\n\r\n const footerY = doc.internal.pageSize.height - 6;\r\n\r\n doc.text(\r\n `Page ${i} of ${pageCount}`,\r\n pageWidth - 15,\r\n footerY,\r\n { align: 'right' }\r\n );\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][], searchCriteria: [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 // --- search criteria heading ---\r\n worksheet.mergeCells(currentRow, 1, currentRow, 6);\r\n worksheet.getCell(currentRow, 1).value = 'Search Criteria:-';\r\n worksheet.getCell(currentRow, 1).font = { bold: true };\r\n currentRow += 2;\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1]; // may be undefined\r\n const row = worksheet.getRow(currentRow++);\r\n\r\n // Left cell\r\n worksheet.mergeCells(row.number, 1, row.number, 3);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: (left?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: left?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(1).alignment = { wrapText: true, vertical: 'middle' };\r\n\r\n // Right cell (only if present)\r\n if (right) {\r\n worksheet.mergeCells(row.number, 4, row.number, 6);\r\n row.getCell(4).value = {\r\n richText: [\r\n { text: (right?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: right?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(4).alignment = { wrapText: true, vertical: 'middle' };\r\n }\r\n }\r\n currentRow++;\r\n //============================================================\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][], searchCriteria: [string, string][], headers: string[], rows: any[][], fileName: string): void {\r\n const escapeCsv = (value: any) => {\r\n if (value === null || value === undefined) return '';\r\n const str = value.toString();\r\n return str.includes(',') || str.includes('\"') || str.includes('\\n')\r\n ? `\"${str.replace(/\"/g, '\"\"')}\"`\r\n : str;\r\n };\r\n\r\n const metaRows = metadata.map(([k, v]) => [`${k} ${v}`]);\r\n\r\n // --- Build search criteria section ---\r\n const searchLines: string[] = [];\r\n if (searchCriteria?.length) {\r\n searchLines.push('Search Criteria:-');\r\n\r\n const maxLeftLength = Math.max(...searchCriteria.map(([k, v]) => (k + ' ' + v).length));\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1];\r\n\r\n const leftText = left ? `${left[0]} ${left[1]}`.padEnd(maxLeftLength + 5, ' ') : '';\r\n const rightText = right ? `${right[0]} ${right[1]}` : '';\r\n\r\n searchLines.push(`\"${leftText}${rightText}\"`); // wrap in quotes for single CSV cell\r\n }\r\n searchLines.push(''); // blank line after criteria\r\n }\r\n\r\n // --- Combine all parts ---\r\n const csvContent = [\r\n [title].join(','),\r\n ...metaRows.map(e => e.join(',')),\r\n '',\r\n ...searchLines, // ✅ this block is column-independent\r\n headers.join(','),\r\n ...rows.map(row => row.map(value => escapeCsv(value)).join(','))\r\n ].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, searchCriteria, columns, data, options = {} }: {\r\n title: string;\r\n metadata: [string, string][];\r\n searchCriteria: [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 pageWidth = doc.internal.pageSize.width;\r\n const pageHeight = doc.internal.pageSize.height;\r\n const marginLeft = 15;\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 // --- draw search criteria heading ---\r\n doc.setFont('helvetica', 'bold');\r\n doc.text('Search Criteria:-', marginLeft, currentY);\r\n currentY += 8;\r\n\r\n const rowHeightPerLine = 6;\r\n const minGap = 2; // gap between key and value\r\n const betweenColumnsGap = 15; // gap between left and right columns (you can tune this)\r\n const pageContentWidth = doc.internal.pageSize.width - 2 * marginLeft;\r\n\r\n // --- helper function to measure total width of a key-value pair ---\r\n const measurePairWidth = (key: string, value: string): number => {\r\n doc.setFont('helvetica', 'bold');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n const valueWidth = doc.getTextWidth(value);\r\n return keyWidth + minGap + valueWidth;\r\n };\r\n\r\n // --- calculate max width of left column pairs dynamically ---\r\n let maxLeftPairWidth = 0;\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n const width = measurePairWidth(key, value);\r\n if (width > maxLeftPairWidth) maxLeftPairWidth = width;\r\n }\r\n }\r\n\r\n // --- compute where right column should start ---\r\n const leftColumnStart = marginLeft;\r\n const rightColumnStart = leftColumnStart + maxLeftPairWidth + betweenColumnsGap;\r\n\r\n // --- print search criteria dynamically ---\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n let maxLineCount = 1;\r\n\r\n // Left column\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, leftColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = leftColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n // Right column\r\n if (searchCriteria[i + 1]) {\r\n const [key, value] = searchCriteria[i + 1];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, rightColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = rightColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n currentY += rowHeightPerLine;\r\n }\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 didParseCell: function (data) {\r\n\r\n // Check if this row contains 'Total'\r\n const rowValues = data.row.cells;\r\n\r\n const isTotalRow = Object.values(rowValues).some(\r\n (cell: any) => cell.raw === 'Total'\r\n );\r\n\r\n if (isTotalRow) {\r\n data.cell.styles.fontStyle = 'bold';\r\n data.cell.styles.fontSize = 10; \r\n }\r\n },\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 const pageCount = (doc as any).internal.getNumberOfPages();\r\n for (let i = 1; i <= pageCount; i++) {\r\n doc.setFont(\"helvetica\", \"bold\");\r\n doc.setPage(i);\r\n doc.setFontSize(9);\r\n doc.setTextColor(100);\r\n\r\n const footerY = pageHeight - 6;\r\n\r\n doc.text(\r\n `Page ${i} of ${pageCount}`,\r\n pageWidth - 15,\r\n footerY,\r\n { align: 'right' }\r\n );\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 searchCriteria,\r\n columns,\r\n data,\r\n options = {}\r\n }: {\r\n title: string;\r\n metadata: [string, string][];\r\n searchCriteria: [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 worksheet.mergeCells(currentRow, 1, currentRow, 6);\r\n worksheet.getCell(currentRow, 1).value = 'Search Criteria:-';\r\n worksheet.getCell(currentRow, 1).font = { bold: true };\r\n currentRow += 2;\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1]; // may be undefined\r\n const row = worksheet.getRow(currentRow++);\r\n\r\n // Left cell\r\n worksheet.mergeCells(row.number, 1, row.number, 3);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: (left?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: left?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(1).alignment = { wrapText: true, vertical: 'middle' };\r\n\r\n // Right cell (only if present)\r\n if (right) {\r\n worksheet.mergeCells(row.number, 4, row.number, 6);\r\n row.getCell(4).value = {\r\n richText: [\r\n { text: (right?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: right?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(4).alignment = { wrapText: true, vertical: 'middle' };\r\n }\r\n }\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 searchCriteria,\r\n columns,\r\n data,\r\n options = {}\r\n }: {\r\n title: string;\r\n metadata: [string, string][];\r\n searchCriteria: [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, ''];\r\n\r\n //=======================================================\r\n csv.push('Search Criteria:-');\r\n\r\n const maxLeftLength = Math.max(...searchCriteria.map(([k, v]) => (k + ' ' + v).length));\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1];\r\n\r\n const leftText = left ? `${left[0]} ${left[1]}`.padEnd(maxLeftLength + 5, ' ') : '';\r\n const rightText = right ? `${right[0]} ${right[1]}` : '';\r\n\r\n csv.push(`\"${leftText}${rightText}\"`); // wrap in quotes for single CSV cell\r\n }\r\n\r\n csv.push(''); // blank line after criteria\r\n\r\n // --- Headers ---\r\n csv.push(headers.join(','));\r\n //========================================================\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","export enum ComponentLoadingStates {\r\n Error = -1,\r\n Loading = 0,\r\n Complete = 1,\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: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>\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 clientType: string;\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}\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 products: Product[];\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, ChangeDetectorRef } 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, finalize, map, switchMap } from 'rxjs/operators';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { ConfigService } from '../../services/config.service';\r\nimport { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\nimport * as angularCommon from '@angular/common';\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 @Output() formValid = new EventEmitter<boolean>();\r\n searchForm!: FormGroup;\r\n @Input() initialFilters: any;\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 summaryReportTypes: any[] = [];\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 disabledDate: NgbDateStruct;\r\n isSelectAllChecked = true;\r\n erroMessage: string = 'Error in Loading Data';\r\n\r\n // for Trial Balance - Accounts Report\r\n businessUnits: any[] = [];\r\n accountStatuses: any[] = [];\r\n currency: any[] = [];\r\n financialYears: any[] = [];\r\n fromMonths: any[] = [];\r\n toMonths: any[] = [];\r\n dateTypes: any[] = [];\r\n fromDays: any[] = [];\r\n toDays: any[] = [];\r\n paramDateDefault: any[] = [];\r\n\r\n // Field visibility map, 'fromDate', 'toDate','product','userId','currency','transactionStatus','transactionNo'\r\n visibleFieldsMap: { [report: string]: string[] } = {\r\n 'Transaction Enquiry': ['client', 'fromDate', 'toDate', 'branch', 'product', 'currency', 'transactionStatus', 'transactionNo'],\r\n 'FC Ledger': ['client', 'fromDate', 'toDate', 'currency', 'product'],\r\n 'Branch Activity Send': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', '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 'Credit Limit Status Enquiry': ['client', 'fromDate', 'toDate', 'transactionStatusSingleSelect'],\r\n 'Funding': ['fromDate', 'toDate'],\r\n 'Trial Balance - Accounts': ['businessUnit', 'accountStatus', 'currency', 'financialYear', 'fromMonth', 'toMonth', 'dateTypeForTrialBalanceAccounts', 'fromDay', 'toDay'],\r\n 'Branch Activity Send Summary': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'receiveCurrency', 'transactionStatus', 'sendCountry', 'receiveCountry', 'summaryReport'],\r\n\r\n 'Transaction Monitoring': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'receiveCurrency', 'transactionStatus', 'sendCountry', 'receiveCountry'],\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 private cd: ChangeDetectorRef\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 const today = new Date();\r\n this.disabledDate = {\r\n year: today.getFullYear(),\r\n month: today.getMonth() + 1,\r\n day: today.getDate()\r\n };\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 this.transactionStatusSubscribe();\r\n }\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n this.transactionStatusSubscribe();\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 this.transactionStatusSubscribe();\r\n }\r\n if (this.ReportName === \"Revenue Per Transaction\") {\r\n this.initializeForm()\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n this.transactionStatusSubscribe();\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 this.subscribeToDateChanges();\r\n this.transactionStatusSubscribe();\r\n }\r\n if (this.ReportName === \"Credit Limit Status Enquiry\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n }\r\n if (this.ReportName == \"Funding\") {\r\n this.initializeForm();\r\n this.subscribeToDateChanges();\r\n }\r\n if (this.ReportName == \"Trial Balance - Accounts\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n }\r\n if (this.ReportName == \"Branch Activity Send Summary\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n this.transactionStatusSubscribe();\r\n }\r\n if (this.ReportName == \"Transaction Monitoring\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n this.transactionStatusSubscribe();\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 if (this.ReportName == \"Trial Balance - Accounts\") {\r\n this.loadInitialDataForTrialBalanceAccounts();\r\n }\r\n\r\n if (this.ReportName === \"Credit Limit Status Enquiry\") {\r\n this.loadInitialDataForCreditLimitStatusEnquiry();\r\n }\r\n if (this.ReportName == \"Branch Activity Send Summary\") {\r\n this.loadInitialDataforBranchActivitySendSummary();\r\n }\r\n if (this.ReportName == \"Transaction Monitoring\") {\r\n this.loadInitialDataforTransactionMonitoring();\r\n }\r\n }\r\n\r\n loadInitialDataforBranchActivitySendSummary() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n forkJoin({\r\n params: this.reportService.getParamsForSendSummaryReport().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.getPayInAgentforSendSummaryReport().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 clientType: \"\"\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 this.summaryReportTypes = [\r\n { label: 'Date-Wise Summary', value: 'Date-Wise Summary' },\r\n { label: 'Total Summary', value: 'Total Summary' }\r\n ];\r\n\r\n this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode });\r\n this.onClientChange();\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.loadingState = ComponentLoadingState.Complete;\r\n }\r\n }\r\n );\r\n }\r\n \r\n loadInitialDataforTransactionMonitoring() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n forkJoin({\r\n params: this.reportService.getParamsForTransactionMonitoringReport().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.getPayInAgentforTransactionMonitoringReport().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 clientType: \"\"\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\r\n this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode });\r\n if (this.initialFilters) {\r\n //patch data\r\n this.applyInitialFilters();\r\n }\r\n\r\n\r\n this.onClientChange();\r\n // AUTO LOAD ONLY for routed case\r\n if (this.initialFilters) {\r\n this.onSearch();\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.loadingState = ComponentLoadingState.Complete;\r\n }\r\n }\r\n );\r\n }\r\n\r\n private applyInitialFilters() {\r\n if (!this.initialFilters) return;\r\n const patch: any = {};\r\n // Transaction Status (STRING → ARRAY)\r\n if (this.initialFilters.transactionStatus) {\r\n patch.transactionStatus = [this.initialFilters.transactionStatus];\r\n }\r\n\r\n // Receive Country\r\n if (this.initialFilters.receiveCountry) {\r\n patch.receiveCountry = this.initialFilters.receiveCountry;\r\n }\r\n\r\n // Realtime handling\r\n if (this.initialFilters.isRealtime) {\r\n\r\n patch.fromDate = '';\r\n patch.toDate = '';\r\n //clear\r\n this.searchForm.get('fromDate')?.clearValidators();\r\n this.searchForm.get('toDate')?.clearValidators();\r\n\r\n } else {\r\n\r\n // Only override if values exist (VERY IMPORTANT)\r\n if (this.initialFilters.toDate) {\r\n patch.toDate = this.initialFilters.toDate;\r\n }\r\n if (this.initialFilters.fromDate) {\r\n patch.fromDate = this.initialFilters.fromDate;\r\n }\r\n\r\n this.searchForm.get('fromDate')?.setValidators(Validators.required);\r\n this.searchForm.get('toDate')?.setValidators(Validators.required);\r\n\r\n }\r\n\r\n // Single patch call (avoids multiple triggers)\r\n this.searchForm.patchValue(patch, { emitEvent: false });\r\n this.searchForm.get('fromDate')?.updateValueAndValidity({ emitEvent: false });\r\n this.searchForm.get('toDate')?.updateValueAndValidity({ emitEvent: false });\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 product: [null, Validators.required],\r\n currency: ['All'],\r\n transactionStatus: [['All'], Validators.required],\r\n transactionNo: ['']\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 if (this.ReportName === \"Credit Limit Status 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 transactionStatus: ['All', Validators.required],\r\n }\r\n );\r\n }\r\n if (this.ReportName == \"Funding\") {\r\n this.searchForm = this.fb.group(\r\n {\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 if (this.ReportName == \"Trial Balance - Accounts\") {\r\n this.searchForm = this.fb.group(\r\n {\r\n // Added fields\r\n businessUnit: ['All'],\r\n accountStatus: [['Active']],\r\n financialYear: [new Date().getFullYear().toString()], // default to current year\r\n fromMonth: [''],\r\n toMonth: [''],\r\n dateType: ['VD'], // example default\r\n fromDay: [null, Validators.required],\r\n toDay: [{ value: null, disabled: true }, Validators.required],\r\n currency: ['All'],\r\n\r\n }\r\n );\r\n\r\n this.reportService.GetParamDateDefaultForTrialBalanceAccountsReport().subscribe({\r\n next: (response) => {\r\n let financialMonth: string = response[0].financialMonth;\r\n console.log(`financialMonth in init form of Trial Balance - Accounts: ${financialMonth}`);\r\n this.searchForm.patchValue({\r\n fromMonth: financialMonth,\r\n toMonth: financialMonth\r\n });\r\n }, error: (err) => { console.error('Error fetching data:', err); }\r\n });\r\n }\r\n if (this.ReportName == \"Branch Activity Send Summary\") {\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 summaryReport: ['Date-Wise Summary']\r\n });\r\n }\r\n if (this.ReportName == \"Transaction Monitoring\") {\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\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,\r\n clientType: \"\"\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\r\n this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode});\r\n this.onClientChange();\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.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.products = data.products || [];\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 this.searchForm.patchValue({ product: 'All' });\r\n\r\n this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode});\r\n await this.onClientChange();\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 clientType: \"\"\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\r\n this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode});\r\n this.onClientChange();\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.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) => ({\r\n businessPartnerName: agent.agent,\r\n businessPartnerCode: agent.code\r\n }));\r\n this.products = (data.productTypes ?? []).map((pt) => ({\r\n productCode: pt.productCode,\r\n productName: pt.name\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 this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode});\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 this.searchForm.patchValue({\r\n sendBusinessPartner: this.sendBusinessPartnerAgents[0].id,\r\n recvBusinessPartner: this.recvBusinessPartnerAgents[0].id\r\n });\r\n\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\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.correlationId,\r\n displayOrder: index,\r\n clientType: \"\"\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 this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode});\r\n this.onClientChange();\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 }\r\n });\r\n\r\n }\r\n\r\n loadInitialDataForCreditLimitStatusEnquiry() {\r\n const $agents = this.reportService.getClientsForCreditLimitStatusEnquiryReport();\r\n const $status = this.reportService.getTransactionTypesForCreditLimitStatusEnquiryReport();\r\n this.loadingState = ComponentLoadingState.Loading;\r\n forkJoin({\r\n agents: $agents.pipe(\r\n map((clients: any[]): Client[] =>\r\n clients.map((client, index) => ({\r\n businessPartnerName: client.name,\r\n businessPartnerCode: client.code,\r\n displayOrder: index,\r\n clientType: \"\"\r\n }))\r\n )\r\n ),\r\n status: $status\r\n }).subscribe({\r\n next: ({ agents, status }) => {\r\n this.clients1 = agents;\r\n this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode });\r\n this.transactionStatuses = status;\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n console.error('Unexpected forkJoin error', err);\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n\r\n })\r\n }\r\n loadInitialDataForTrialBalanceAccounts() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n\r\n forkJoin({\r\n businessUnits: this.reportService.GetBusinessUnitForTrialBalanceAccountsReport()\r\n .pipe(catchError(err => of([]))),\r\n accountStatuses: this.reportService.GetAccountStatusForTrialBalanceAccountsReport()\r\n .pipe(catchError(err => of([]))),\r\n dateTypes: this.reportService.GetDateTypeForTrialBalanceAccountsReport()\r\n .pipe(catchError(err => of([]))),\r\n financialYears: this.reportService.GetYearForTrialBalanceAccountsReport()\r\n .pipe(catchError(err => of([]))),\r\n fromMonths: this.reportService.GetFromMonthsForTrialBalanceAccountsReport()\r\n .pipe(catchError(err => of([]))),\r\n currency: this.reportService.GetCurrenciesForTrialBalanceAccountsReport()\r\n .pipe(catchError(err => of([]))),\r\n paramDateDefault: this.reportService.GetParamDateDefaultForTrialBalanceAccountsReport()\r\n .pipe(catchError(err => of([])))\r\n })\r\n .pipe(\r\n switchMap(results => {\r\n // assign base results\r\n this.businessUnits = results.businessUnits;\r\n this.accountStatuses = results.accountStatuses;\r\n this.dateTypes = results.dateTypes;\r\n this.financialYears = results.financialYears\r\n .sort((a, b) => Number(a.financialYear) - Number(b.financialYear));\r\n this.fromMonths = results.fromMonths;\r\n this.currencies = results.currency;\r\n this.paramDateDefault = results.paramDateDefault;\r\n\r\n // resolve year/month for fromDays & toMonths\r\n const year = +(new Date().getFullYear());\r\n const month = this.paramDateDefault[0].financialMonth;\r\n\r\n const selectedPMonth = this.searchForm.get('fromMonth')?.value;\r\n const fromMonthObj = this.fromMonths.find(m => m.pOrder === selectedPMonth);\r\n const fromMonthLabel = fromMonthObj?.period;\r\n\r\n // first call fromDays with year/month\r\n return this.reportService.GetFromDatesForTrialBalanceAccountsReport(\r\n year, fromMonthLabel\r\n ).pipe(\r\n catchError(err => of([])),\r\n switchMap(fromDays => {\r\n this.fromDays = fromDays;\r\n this.searchForm.patchValue({\r\n fromDay: this.paramDateDefault[0]?.tDate,\r\n });\r\n\r\n const financialYear = this.searchForm.get('financialYear')?.value;\r\n const fromMonth = this.searchForm.get('fromMonth')?.value;\r\n const toMonth = this.searchForm.get('toMonth')?.value;\r\n const fromDay = this.searchForm.get('fromDay')?.value;\r\n\r\n const requestPayload = {\r\n Year: financialYear,\r\n FromMonth: fromMonth,\r\n ToMonth: toMonth,\r\n FromDate: fromDay // assuming fromDay is already a Date or ISO string\r\n };\r\n\r\n // now chain to: toDays + toMonths\r\n return forkJoin({\r\n toDays: this.reportService.GetToDatesForTrialBalanceAccountsReport(requestPayload)\r\n .pipe(catchError(err => of([]))),\r\n toMonths: this.reportService.GetToMonthsForTrialBalanceAccountsReport(year, month)\r\n .pipe(catchError(err => of([])))\r\n }).pipe(\r\n map(extra => ({ ...results, fromDays, ...extra }))\r\n );\r\n })\r\n );\r\n })\r\n )\r\n .subscribe({\r\n next: (allResults) => {\r\n this.toDays = allResults.toDays;\r\n this.toMonths = allResults.toMonths;\r\n\r\n // patch form defaults\r\n this.searchForm.patchValue({\r\n businessUnit: this.businessUnits[0]?.companyCode ?? null,\r\n accountStatus: this.accountStatuses.length ? [this.accountStatuses[0].statusCode] : [],\r\n financialYear: this.paramDateDefault[0]?.financialYear ?? new Date().getFullYear().toString(),\r\n fromMonth: this.paramDateDefault[0]?.financialMonth,\r\n toMonth: this.paramDateDefault[0]?.financialMonth,\r\n dateType: this.dateTypes[0]?.dateTypeCode ?? 'VD',\r\n fromDay: this.fromDays[0]?.tDate,\r\n toDay: this.toDays.find(d => d.isToday)?.value ?? new Date().getDate(),\r\n currency: this.currency[0]?.currencyCode ?? 'All'\r\n });\r\n },\r\n error: (err) => {\r\n console.error('Failed to load Trial Balance dropdown data', err);\r\n this.loadingState = ComponentLoadingState.Error;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\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 const maxToDate = new Date(fromDate);\r\n maxToDate?.setDate(fromDate.getDate() + 30);\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 // setTimeout(() => toDateControl?.patchValue(maxToDate.toISOString().split(\"T\")[0]));\r\n this.cd.detectChanges();\r\n }\r\n this.disabledDate = this.toNgbDateStruct(fromDate);\r\n // setTimeout(() => this.disabledDate = this.toNgbDateStruct(fromDate));\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 this.disabledDate = this.toNgbDateStruct(fromDate);\r\n const minFromDate = new Date(toDate);\r\n minFromDate?.setDate(toDate.getDate() - 30);\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 this.cd.detectChanges();\r\n }\r\n\r\n if (fromDate.setHours(0, 0, 0, 0) > toDate.setHours(0, 0, 0, 0)) {\r\n fromDateControl?.patchValue(minFromDate.toISOString().split(\"T\")[0]);\r\n this.cd.detectChanges();\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 clientType: c.clientType\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 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 this.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\r\n try {\r\n await Promise.all([\r\n this.loadBranchesByAgent(selectedClient)\r\n ]);\r\n this.loadingState = ComponentLoadingState.Complete;\r\n } catch (err) {\r\n this.errorMessage = 'Failed to load branch';\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\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.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\r\n this.reportService.getBranchByAgent(selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\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.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\r\n this.reportService.getBranchActivityReceivePayoutAgentBranch(selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\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 this.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\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 }\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 const selectedClient = this.clients1.find(c => c.businessPartnerCode === ClientId);\r\n this.clientName = selectedClient?.businessPartnerName || '';\r\n this.clientType = selectedClient?.clientType || '';\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n\r\n // accounting report\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\r\n this.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\r\n this.reportService.getBranchByAgentForAccountingReport(this.currentUser, selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n this.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\r\n this.reportService.getBranchByAgent(selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n },\r\n error: (err) => {\r\n throw err;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n });\r\n }\r\n }\r\n if (this.ReportName == \"Transaction Monitoring\") {\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n if (!selectedClient) return;\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\r\n this.reportService.getBranchByAgentForTransactionMonitoringReport(selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n });\r\n }\r\n }\r\n if (this.ReportName == \"Branch Activity Send Summary\") {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n this.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\r\n this.reportService.getBranchByAgentForSendSummaryReport(selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n },\r\n error: (err) => {\r\n throw err;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\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 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 this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\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 this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n\r\n if (this.ReportName == \"ACC GL Details Enquiry\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\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.formValid.emit(true);\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 this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\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 this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\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 this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\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 this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\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 this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n\r\n if (this.ReportName === \"Credit Limit Status Enquiry\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n if (this.ReportName == \"Funding\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n if (this.ReportName == \"Trial Balance - Accounts\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n if (this.ReportName == \"Branch Activity Send Summary\")\r\n {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n if (this.ReportName == \"Transaction Monitoring\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n }\r\n\r\n private buildSearchCriteria(): any {\r\n\r\n const formValue = this.searchForm.value;\r\n const fromDate = new Date(formValue.fromDate);\r\n const toDate = new Date(formValue.toDate);\r\n\r\n const formatDate = (d: Date) => {\r\n const day = String(d.getDate()).padStart(2, \"0\");\r\n const month = String(d.getMonth() + 1).padStart(2, \"0\");\r\n const year = d.getFullYear();\r\n return `${day}/${month}/${year}`;\r\n };\r\n\r\n const searchCriteria = this.getSearchCriteriaArray();\r\n\r\n if (this.ReportName == \"Transaction Enquiry\") {\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 reportPeriod: `${formatDate(fromDate)} - ${formatDate(toDate)}`,\r\n searchCriteria: searchCriteria\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 const searchCriteria: [string, string][] = [\r\n ['Client:', this.clients1.find(c => c.businessPartnerCode === formValue.client)?.businessPartnerName || ''],\r\n ['Transaction Status:', formValue.transactionStatus.join(\",\")],\r\n ['Branch:', this.branches.find(b => b.branchCode === formValue.branch)?.businessPartnerBranch || ''],\r\n ['Product:', formValue.product],\r\n ['From Date:', angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Receive Currency:', this.currencies.find(c => c.currencyCode === formValue.receiveCurrency)?.currency || ''],\r\n ['To Date:', angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Send Country:', this.countries.find(c => c.countryCode === formValue.sendCountry)?.country || ''],\r\n ['Receive Country:', this.countries.find(c => c.countryCode === formValue.receiveCountry)?.country || ''],\r\n ];\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser,\r\n searchCriteria: searchCriteria\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 const searchCriteria: [string, string][] = [\r\n ['Client:', this.clients1.find(c => c.businessPartnerCode === formValue.client)?.businessPartnerName || ''],\r\n ['Transaction Status:', formValue.transactionStatus.join(\",\")],\r\n ['Branch:', this.branches.find(b => b.branchCode === formValue.branch)?.businessPartnerBranch || ''],\r\n ['Product:', formValue.product],\r\n ['From Date:', angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Receive Currency:', this.currencies.find(c => c.currencyCode === formValue.receiveCurrency)?.currency || ''],\r\n ['To Date:', angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Send Country:', this.countries.find(c => c.countryCode === formValue.sendCountry)?.country || ''],\r\n ['Receive Country:', this.countries.find(c => c.countryCode === formValue.receiveCountry)?.country || ''],\r\n ];\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser,\r\n searchCriteria: searchCriteria\r\n }\r\n }\r\n\r\n if (this.ReportName == \"Cancellation 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 const searchCriteria: [string, string][] = [\r\n ['Client:', this.clients1.find(c => c.businessPartnerCode === formValue.client)?.businessPartnerName || ''],\r\n ['Branch:', this.branches.find(b => b.branchCode === formValue.branch)?.businessPartnerBranch || ''],\r\n ['Product:', formValue.product],\r\n ['From Date:', angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Receive Currency:', this.currencies.find(c => c.currencyCode === formValue.receiveCurrency)?.currency || ''],\r\n ['To Date:', angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Send Country:', this.countries.find(c => c.countryCode === formValue.sendCountry)?.country || ''],\r\n ['Receive Country:', this.countries.find(c => c.countryCode === formValue.receiveCountry)?.country || ''],\r\n\r\n ];\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser,\r\n reportPeriod: `${formatDate(fromDate)} - ${formatDate(toDate)}`,\r\n searchCriteria: searchCriteria\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 const searchCriteria: [string, string][] = [\r\n ['Sender Partner:', this.sendBusinessPartnerAgents.find(c => c.id === formValue.sendBusinessPartner)?.name || ''],\r\n ['Receive Partner:', this.recvBusinessPartnerAgents.find(c => c.id === formValue.recvBusinessPartner)?.name || ''],\r\n ['Send Country:', this.countries.find(c => c.countryCode === formValue.sendCountry)?.country || ''],\r\n ['Receive Country:', this.countries.find(c => c.countryCode === formValue.receiveCountry)?.country || ''],\r\n ['From Date:', angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['To Date:', angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Transaction Status:', formValue.transactionStatus.join(\",\")],\r\n ];\r\n return {\r\n modal: formValue,\r\n sysUserId: this.currentUser,\r\n searchCriteria: searchCriteria\r\n }\r\n }\r\n\r\n if (this.ReportName == \"Statement of Accounts\") {\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 clientType: this.clientType,\r\n sysUserID: this.currentUser,\r\n clientName: this.clientName,\r\n reportPeriod: `${formatDate(fromDate)} - ${formatDate(toDate)}`,\r\n searchCriteria: searchCriteria\r\n }\r\n }\r\n\r\n if (this.ReportName == \"Accounting\") {\r\n const formValue = this.searchForm.value;\r\n const searchCriteria = [\r\n ['Client:', this.clients1.find(c => c.businessPartnerCode === formValue.client)?.businessPartnerName || ''],\r\n ['Transaction Status:', formValue.transactionStatus.join(\",\")],\r\n ['Branch:', this.branches.find(b => b.branchCode === formValue.branch)?.businessPartnerBranch || ''],\r\n ['Product:', this.transactionProducts.find(t => t.productCode === formValue.product)?.name || ''],\r\n ['From Date:', angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Send Currency:', this.currencies.find(c => c.currencyCode === formValue.currency)?.currency || ''],\r\n ['To Date:', angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Send Country:', this.countries.find(c => c.countryCode === formValue.sendCountry)?.country || ''],\r\n ['Receive Country:', this.countries.find(c => c.countryCode === formValue.receiveCountry)?.country || ''],\r\n ];\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 searchCriteria: searchCriteria\r\n };\r\n }\r\n\r\n if (this.ReportName === \"Credit Limit Status Enquiry\") {\r\n const clientCode = this.searchForm.controls['client'].value;\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 formValue.client = this.clients1.find(c => c.businessPartnerCode === clientCode)?.businessPartnerName || '';\r\n const searchCriteria: [string, string][] = [\r\n ['Client:', this.clients1.find(c => c.businessPartnerCode === clientCode)?.businessPartnerName || ''],\r\n ['Transaction status:', formValue.transactionStatus],\r\n ['From Date:', angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['To Date:', angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ];\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser,\r\n searchCriteria: searchCriteria\r\n }\r\n }\r\n if (this.ReportName == \"Funding\") {\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser,\r\n reportPeriod: `${formatDate(fromDate)} - ${formatDate(toDate)}`,\r\n searchCriteria: searchCriteria\r\n };\r\n }\r\n if (this.ReportName == \"Trial Balance - Accounts\") {\r\n const formValue = this.searchForm.value;\r\n const dateRange = this.prepareFromDateAndToDateForTrialBalanceAccountReport();\r\n return {\r\n modal: {\r\n ...formValue,\r\n fromDate: dateRange.fromDate,\r\n toDate: dateRange.toDate,\r\n },\r\n sysUserID: this.currentUser\r\n };\r\n\r\n }\r\n if (this.ReportName == \"Branch Activity Send Summary\")\r\n {\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 const searchCriteria: [string, string][] = [\r\n ['Client:', this.clients1.find(c => c.businessPartnerCode === formValue.client)?.businessPartnerName || ''],\r\n ['Transaction Status:', formValue.transactionStatus.join(\",\")],\r\n ['Branch:', this.branches.find(b => b.branchCode === formValue.branch)?.businessPartnerBranch || ''],\r\n ['Product:', formValue.product],\r\n ['From Date:', angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Receive Currency:', this.currencies.find(c => c.currencyCode === formValue.receiveCurrency)?.currency || ''],\r\n ['To Date:', angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Send Country:', this.countries.find(c => c.countryCode === formValue.sendCountry)?.country || ''],\r\n ['Receive Country:', this.countries.find(c => c.countryCode === formValue.receiveCountry)?.country || ''],\r\n ['Summary Report:', formValue.summaryReport], \r\n ];\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser,\r\n searchCriteria: searchCriteria\r\n }\r\n }\r\n if (this.ReportName == \"Transaction Monitoring\") {\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 if (this.initialFilters?.isRealtime && (formValue.fromDate == '' && formValue.toDate == '')) {\r\n formValue.fromDate = null;\r\n formValue.toDate = null;\r\n } else {\r\n formValue.fromDate = this.toIsoFormat(fromDate);\r\n formValue.toDate = this.toIsoFormat(toDate);\r\n if (this.initialFilters?.isRealtime) {\r\n this.initialFilters.isRealtime = false;\r\n }\r\n \r\n }\r\n const searchCriteria: [string, string][] = [\r\n ['Client:', this.clients1.find(c => c.businessPartnerCode === formValue.client)?.businessPartnerName || ''],\r\n ['Transaction Status:', formValue.transactionStatus.join(\",\")],\r\n ['Branch:', this.branches.find(b => b.branchCode === formValue.branch)?.businessPartnerBranch || ''],\r\n ['Product:', formValue.product],\r\n ['From Date:', this.initialFilters?.isRealtime ? '' : angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Receive Currency:', this.currencies.find(c => c.currencyCode === formValue.receiveCurrency)?.currency || ''],\r\n ['To Date:', this.initialFilters?.isRealtime ? '' : angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Send Country:', this.countries.find(c => c.countryCode === formValue.sendCountry)?.country || ''],\r\n ['Receive Country:', this.countries.find(c => c.countryCode === formValue.receiveCountry)?.country || ''],\r\n ];\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser,\r\n isRealtime: this.initialFilters?.isRealtime,\r\n searchCriteria: searchCriteria\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 currencySearch = (term: string, item: any) => {\r\n term = term.toLowerCase();\r\n return (\r\n item.currencyCode.toLowerCase().includes(term)\r\n );\r\n };\r\n\r\n toNgbDateStruct(fromDate: Date): NgbDateStruct {\r\n return {\r\n year: fromDate.getFullYear(),\r\n month: fromDate.getMonth() + 1,\r\n day: fromDate.getDate()\r\n };\r\n }\r\n\r\n transactionStatusSubscribe() {\r\n this.searchForm.get('transactionStatus').valueChanges.subscribe((val) => {\r\n const allStatus = this.transactionStatuses\r\n .map((status) => status.transactionStatus);\r\n\r\n if (val.includes('All')) {\r\n if (this.isSelectAllChecked) {\r\n const filteredStatus = val.filter(s => s !== 'All');\r\n this.searchForm.get('transactionStatus')\r\n .setValue(filteredStatus, { emitEvent: false });\r\n this.isSelectAllChecked = false;\r\n } else {\r\n this.searchForm.get('transactionStatus')\r\n .setValue(['All'], { emitEvent: false });\r\n this.isSelectAllChecked = true;\r\n }\r\n }\r\n\r\n })\r\n }\r\n\r\n handleDateChange() {\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 this.disabledDate = this.toNgbDateStruct(fromDate);\r\n });\r\n }\r\n\r\n\r\n // ** for trial balance accounting report - \r\n\r\n onSelectFromMonth() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n const year = +this.searchForm.get('financialYear')?.value;\r\n const fromMonth = +this.searchForm.get('fromMonth')?.value;\r\n\r\n if (!year || !fromMonth) {\r\n return;\r\n }\r\n\r\n this.reportService.GetToMonthsForTrialBalanceAccountsReport(year, fromMonth)\r\n .pipe(catchError(err => of([])))\r\n .subscribe((toMonths) => {\r\n this.toMonths = toMonths;\r\n\r\n // update \"toMonth\" form control with default (first option)\r\n this.searchForm.patchValue({\r\n toMonth: this.toMonths[0]?.pMonth ?? \"\"\r\n });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n });\r\n\r\n // on select fromMonth goes call to fromDay\r\n\r\n const financialYear = +this.searchForm.get('financialYear')?.value;\r\n const selectedPMonth = this.searchForm.get('fromMonth')?.value;\r\n const fromMonthObj = this.fromMonths.find(m => m.pOrder === selectedPMonth);\r\n const fromMonthLabel = fromMonthObj?.period;\r\n this.reportService.GetFromDatesForTrialBalanceAccountsReport(financialYear, fromMonthLabel)\r\n .subscribe(\r\n (fromDays) => {\r\n this.fromDays = fromDays;\r\n this.searchForm.patchValue({ fromDay: undefined })\r\n this.searchForm.patchValue({ toDay: \"\" })\r\n this.searchForm.get('toDay')?.disable();\r\n },\r\n (error) => {\r\n console.error('Error while fetching To Days:', error);\r\n }\r\n );\r\n\r\n }\r\n\r\n onSelectFromDay() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n const currentToDayValue = this.searchForm.get('toDay')?.value;\r\n const currentToDayObject = this.toDays.find(d => d.individualDate === currentToDayValue)\r\n\r\n const financialYear = this.searchForm.get('financialYear')?.value;\r\n const fromMonth = this.searchForm.get('fromMonth')?.value;\r\n const toMonth = this.searchForm.get('toMonth')?.value;\r\n const fromDay = this.searchForm.get('fromDay')?.value;\r\n\r\n const requestPayload = {\r\n Year: financialYear,\r\n FromMonth: fromMonth,\r\n ToMonth: toMonth,\r\n FromDate: fromDay\r\n };\r\n\r\n this.reportService.GetToDatesForTrialBalanceAccountsReport(requestPayload)\r\n .pipe(\r\n finalize(() => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n })\r\n )\r\n .subscribe(\r\n (toDays) => {\r\n this.toDays = toDays;\r\n\r\n if (this.searchForm.get('fromMonth')?.value != this.searchForm.get('toMonth')?.value && this.searchForm.get('toDay')?.value) {\r\n const matchedToDayObject = this.toDays.find(d => d.pDate === currentToDayObject.pDate);\r\n this.searchForm.patchValue({\r\n toDay: matchedToDayObject.individualDate ?? \"\"\r\n });\r\n } else {\r\n this.searchForm.patchValue({\r\n toDay: this.toDays[0]?.individualDate ?? \"\"\r\n });\r\n }\r\n this.searchForm.get('toDay')?.enable();\r\n\r\n },\r\n (error) => {\r\n console.error('Error fetching To Days:', error);\r\n window.alert('Error fetching To Days');\r\n this.toDays = [];\r\n this.searchForm.get('toDay')?.patchValue(\"\");\r\n },\r\n () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n );\r\n }\r\n\r\n\r\n onSelectToMonth() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n\r\n const currentToDayValue = this.searchForm.get('toDay')?.value;\r\n\r\n const financialYear = this.searchForm.get('financialYear')?.value;\r\n const fromMonth = this.searchForm.get('fromMonth')?.value;\r\n const toMonth = this.searchForm.get('toMonth')?.value;\r\n const fromDay = this.searchForm.get('fromDay')?.value;\r\n\r\n if (!financialYear || !fromMonth || !toMonth || !fromDay) {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n\r\n const requestPayload = {\r\n Year: financialYear,\r\n FromMonth: fromMonth,\r\n ToMonth: toMonth,\r\n FromDate: fromDay\r\n };\r\n\r\n this.reportService.GetToDatesForTrialBalanceAccountsReport(requestPayload)\r\n .subscribe(\r\n (toDays) => {\r\n this.toDays = toDays;\r\n\r\n if (this.searchForm.get('fromMonth')?.value === this.searchForm.get('toMonth')?.value) {\r\n const fromDay = this.searchForm.get('fromDay')?.value;\r\n const fromDayObject = this.fromDays.find(d => d.individualDate === fromDay);\r\n const toDayObject = this.toDays.find(d => d.pDate === fromDayObject?.individualDay);\r\n\r\n this.searchForm.patchValue({\r\n toDay: toDayObject?.individualDate ?? \"\"\r\n });\r\n } else {\r\n this.searchForm.patchValue({\r\n toDay: this.toDays[0].individualDate\r\n });\r\n }\r\n },\r\n\r\n (error) => {\r\n console.error('Error fetching To Days:', error);\r\n window.alert('Error fetching To Days:');\r\n this.toDays = [];\r\n this.searchForm.get('toDay')?.patchValue(\"\");\r\n },\r\n () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n );\r\n }\r\n\r\n onSelectFinancialYear() {\r\n // on financialYear change fromday and today should change to default values acocrding to year and frommonth,tomonth -\r\n\r\n this.loadingState = ComponentLoadingState.Loading;\r\n\r\n // call fromDays\r\n\r\n const financialYear = +this.searchForm.get('financialYear')?.value;\r\n\r\n const selectedPMonth = this.searchForm.get('fromMonth')?.value;\r\n const fromMonthObj = this.fromMonths.find(m => m.pOrder === selectedPMonth);\r\n const fromMonthLabel = fromMonthObj?.period;\r\n\r\n this.reportService.GetFromDatesForTrialBalanceAccountsReport(financialYear, fromMonthLabel)\r\n .subscribe(\r\n (fromDays) => {\r\n this.fromDays = fromDays;\r\n this.searchForm.patchValue({ fromDay: undefined })\r\n this.searchForm.patchValue({ toDay: \"\" })\r\n this.searchForm.get('toDay')?.disable();\r\n },\r\n (error) => {\r\n console.error('Error while fetching To Days:', error);\r\n }\r\n );\r\n\r\n const fromMonth = this.searchForm.get('fromMonth')?.value;\r\n const toMonth = this.searchForm.get('toMonth')?.value;\r\n const fromDay = this.searchForm.get('fromDay')?.value;\r\n\r\n const requestPayload = {\r\n Year: financialYear,\r\n FromMonth: fromMonth,\r\n ToMonth: toMonth,\r\n FromDate: fromDay\r\n };\r\n\r\n this.reportService.GetToDatesForTrialBalanceAccountsReport(requestPayload)\r\n .subscribe(\r\n (toDays) => {\r\n this.toDays = toDays;\r\n\r\n if (this.searchForm.get('fromMonth')?.value === this.searchForm.get('toMonth')?.value) {\r\n const fromDay = this.searchForm.get('fromDay')?.value;\r\n const fromDayObject = this.fromDays.find(d => d.individualDate === fromDay);\r\n const toDayObject = this.toDays.find(d => d.pDate === fromDayObject?.individualDay);\r\n\r\n this.searchForm.patchValue({\r\n toDay: toDayObject?.individualDate ?? \"\"\r\n });\r\n } else {\r\n this.searchForm.patchValue({\r\n toDay: \"\"\r\n });\r\n this.searchForm.get('toDay')?.disable();\r\n }\r\n },\r\n\r\n (error) => {\r\n console.error('Error fetching To Days:', error);\r\n window.alert('Error fetching To Days:');\r\n this.toDays = [];\r\n this.searchForm.get('toDay')?.patchValue(\"\");\r\n },\r\n () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n );\r\n }\r\n\r\n\r\n\r\n prepareFromDateAndToDateForTrialBalanceAccountReport() {\r\n const financialYear = +this.searchForm.get('financialYear')?.value;\r\n const fromMonth = this.searchForm.get('fromMonth')?.value;\r\n const toMonth = this.searchForm.get('toMonth')?.value;\r\n\r\n const selectedFromDay = this.searchForm.get('fromDay')?.value;\r\n const fromDayObj = this.fromDays.find(m => m.individualDate === selectedFromDay);\r\n const fromDay = fromDayObj?.individualDay;\r\n\r\n const selectedToDay = this.searchForm.get('toDay')?.value;\r\n const toDayObj = this.toDays.find(m => m.individualDate === selectedToDay);\r\n const toDay = toDayObj?.pDate;\r\n\r\n const fromDate = new Date(financialYear, +fromMonth - 1, +fromDay); // JS month is 0-based\r\n const toDate = new Date(financialYear, +toMonth - 1, +toDay);\r\n\r\n return {\r\n fromDate: fromDate,\r\n toDate: toDate\r\n };\r\n }\r\n\r\n // ----------------- Improved search criteria helpers (handles product) -----------------\r\n\r\n private fieldLabelMap: Record<string, string> = {\r\n client: 'Client:',\r\n branch: 'Branch:',\r\n fromDate: 'From Date:',\r\n toDate: 'To Date:',\r\n product: 'Product:',\r\n transactionProduct: 'Product:',\r\n userId: 'User:',\r\n currency: 'Currency:',\r\n sendCurrency: 'Send Currency:',\r\n receiveCurrency: 'Receive Currency:',\r\n transactionStatus: 'Txn. Status:',\r\n transactionStatusSingleSelect: 'Txn. Status:',\r\n transactionNo: 'Txn. Number:',\r\n date: 'Date:',\r\n dateType: 'Date Type:',\r\n valueDate: 'Value Date:',\r\n sendCountry: 'Send Country:',\r\n receiveCountry: 'Receive Country:',\r\n sendBusinessPartner: 'Sender Partner:',\r\n recvBusinessPartner: 'Receiver Partner:',\r\n businessUnit: 'Business Unit:',\r\n financialYear: 'Financial Year:',\r\n fromMonth: 'From Month:',\r\n toMonth: 'To Month:',\r\n fromDay: 'From Day:',\r\n toDay: 'To Day:',\r\n accountStatus: 'Account Status:',\r\n // add more mappings as needed\r\n };\r\n\r\n // map visible field name -> actual form control name (when they differ)\r\n private fieldToControlMap: Record<string, string> = {\r\n transactionStatusSingleSelect: 'transactionStatus',\r\n transactionProduct: 'product', // important: transactionProduct UI uses form control named 'product'\r\n // add other mappings if visibleField name differs from the form control name\r\n };\r\n\r\n // maps to use bindLabel / bindValue for lookups\r\n private fieldBindLabelMap: Record<string, string> = {\r\n client: 'businessPartnerName',\r\n branch: 'businessPartnerBranch',\r\n product: 'productCode',\r\n transactionProduct: 'productCode',\r\n transactionStatus: 'transactionStatus',\r\n transactionStatusSingleSelect: 'transactionStatus',\r\n userId: 'userName',\r\n currency: 'currency',\r\n sendCurrency: 'currency',\r\n receiveCurrency: 'currency',\r\n sendBusinessPartner: 'name',\r\n recvBusinessPartner: 'name',\r\n businessUnit: 'businessUnit',\r\n financialYear: 'financialYear',\r\n fromMonth: 'period',\r\n toMonth: 'pMonthName',\r\n fromDay: 'individualDay',\r\n toDay: 'pDate',\r\n accountStatus: 'statusName'\r\n };\r\n\r\n private fieldBindValueMap: Record<string, string> = {\r\n client: 'businessPartnerCode',\r\n branch: 'branchCode',\r\n product: 'productCode',\r\n transactionProduct: 'productCode',\r\n transactionStatus: 'transactionStatus',\r\n transactionStatusSingleSelect: 'transactionStatus',\r\n userId: 'userId',\r\n currency: 'currencyCode',\r\n sendCurrency: 'currencyCode',\r\n receiveCurrency: 'currencyCode',\r\n sendBusinessPartner: 'id',\r\n recvBusinessPartner: 'id',\r\n businessUnit: 'businessUnit',\r\n financialYear: 'financialYear',\r\n fromMonth: 'pOrder',\r\n toMonth: 'pMonth',\r\n fromDay: 'individualDate',\r\n toDay: 'individualDate',\r\n accountStatus: 'statusCode'\r\n };\r\n\r\n private formatDateToDDMMYYYY(d: string | Date | null | undefined): string {\r\n if (!d) return '';\r\n const date = (typeof d === 'string' && d.length) ? new Date(d) : (d instanceof Date ? d : new Date(d));\r\n if (isNaN(date.getTime())) return '';\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const year = date.getFullYear();\r\n return `${day}/${month}/${year}`;\r\n }\r\n\r\n /** helper to find item in the known lists by bindValue and return its bindLabel\r\n * improved: tries multiple fallback value keys so product lookup is robust */\r\n private lookupFromListByField(field: string, scalarValue: any): string {\r\n const bindLabel = this.fieldBindLabelMap[field];\r\n const bindValue = this.fieldBindValueMap[field];\r\n\r\n // choose candidate list based on field\r\n let list: any[] | undefined;\r\n switch (field) {\r\n case 'client': list = this.clients1; break;\r\n case 'branch': list = this.branches; break;\r\n case 'product': list = this.products; break;\r\n case 'transactionProduct': list = this.transactionProducts; break;\r\n case 'transactionStatus':\r\n case 'transactionStatusSingleSelect': list = this.transactionStatuses; break;\r\n case 'userId': list = this.users; break;\r\n case 'sendBusinessPartner': list = this.sendBusinessPartnerAgents; break;\r\n case 'recvBusinessPartner': list = this.recvBusinessPartnerAgents; break;\r\n case 'businessUnit': list = this.businessUnits; break;\r\n case 'financialYear': list = this.financialYears; break;\r\n case 'fromMonth': list = this.fromMonths; break;\r\n case 'toMonth': list = this.toMonths; break;\r\n case 'fromDay': list = this.fromDays; break;\r\n case 'toDay': list = this.toDays; break;\r\n case 'accountStatus': list = this.accountStatuses; break;\r\n case 'sendCountry':\r\n case 'receiveCountry': list = this.countries; break;\r\n case 'currency':\r\n case 'sendCurrency':\r\n case 'receiveCurrency': list = this.currencies; break;\r\n default: list = undefined;\r\n }\r\n\r\n // handle common 'All' sentinel\r\n if (scalarValue === 'All' || scalarValue === '' || scalarValue === null || scalarValue === undefined) return String(scalarValue || '');\r\n\r\n if (list && list.length) {\r\n // try the configured bindValue key first\r\n if (bindValue) {\r\n const found = list.find((x: any) => String(x[bindValue]) === String(scalarValue));\r\n if (found) {\r\n if (bindLabel && found[bindLabel]) return found[bindLabel];\r\n return found.transactionStatusLabel || found.transactionStatus || found.name || found.productName || found.businessPartnerName || String(scalarValue);\r\n }\r\n }\r\n\r\n // fallback: try matching on common keys in case shapes differ\r\n const commonKeys = ['productCode', 'code', 'id', 'value', 'currencyCode', 'statusCode'];\r\n for (const key of commonKeys) {\r\n const found2 = list.find((x: any) => x && x[key] !== undefined && String(x[key]) === String(scalarValue));\r\n if (found2) {\r\n const labelCandidate = bindLabel && found2[bindLabel] ? found2[bindLabel] : (found2.productName || found2.name || found2.transactionStatusLabel || found2.businessPartnerName);\r\n return labelCandidate || String(scalarValue);\r\n }\r\n }\r\n\r\n // last attempt: if scalarValue equals a label in the list, return it\r\n if (bindLabel) {\r\n const found3 = list.find((x: any) => String(x[bindLabel]) === String(scalarValue));\r\n if (found3) return String(found3[bindLabel]);\r\n }\r\n }\r\n\r\n // not found — return scalar as string\r\n return String(scalarValue);\r\n }\r\n\r\n // --- lookup that prefers bindLabel when possible ---\r\n private getLookupDisplayValue(field: string, value: any): string {\r\n if (value === null || value === undefined || value === '') return '';\r\n\r\n // Date handling\r\n if (field === 'fromDate' || field === 'toDate' || field === 'date' || field === 'valueDate') {\r\n return this.formatDateToDDMMYYYY(value);\r\n }\r\n\r\n // Currencies: show \"CODE - Name\"\r\n if (['currency', 'sendCurrency', 'receiveCurrency'].includes(field)) {\r\n if (value === 'All') return 'All';\r\n if (typeof value === 'object') {\r\n const code = value.currencyCode || value.currency || '';\r\n const name = value.currency || '';\r\n return code ? `${code} - ${name}` : String(value);\r\n }\r\n const cur = this.currencies?.find((x: any) => x.currencyCode === value);\r\n return cur ? `${cur.currencyCode} - ${cur.currency}` : String(value);\r\n }\r\n\r\n // If it's an array (multi-select), map each item\r\n if (Array.isArray(value)) {\r\n const mapped = value.map(v => {\r\n if (typeof v === 'object') {\r\n const bindLabel = this.fieldBindLabelMap[field];\r\n return bindLabel && v[bindLabel] ? v[bindLabel] : (v.transactionStatusLabel || v.statusName || v.productName || v.name || JSON.stringify(v));\r\n }\r\n return this.lookupFromListByField(field, v);\r\n });\r\n if (mapped.length === 1 && (mapped[0] === 'All' || mapped[0] === '')) return 'All';\r\n return mapped.join(', ');\r\n }\r\n\r\n // If value is an object (single select returned object)\r\n if (typeof value === 'object') {\r\n // product special-case: product object might have productName/productCode\r\n if (field === 'product' || field === 'transactionProduct') {\r\n const pn = value.productName || value.name || value.label || value.display || value.product || value.transactionProduct;\r\n if (pn) return pn;\r\n // try common keys\r\n return value.productCode || value.code || value.id ? String(value.productCode || value.code || value.id) : JSON.stringify(value);\r\n }\r\n\r\n const bindLabel = this.fieldBindLabelMap[field];\r\n if (bindLabel && value[bindLabel]) return value[bindLabel];\r\n return value.transactionStatus || value.name || value.businessPartnerName || JSON.stringify(value);\r\n }\r\n\r\n // Scalar -> lookup in lists using bindValue -> return bindLabel\r\n // product special-case: if value === 'All' then return 'All'\r\n if ((field === 'product' || field === 'transactionProduct') && String(value) === 'All') return 'All';\r\n\r\n return this.lookupFromListByField(field, value);\r\n }\r\n\r\n /**\r\n * Returns search criteria array for the currently visible fields.\r\n * Output: [ ['Label:', 'Value'], ... ]\r\n */\r\n public getSearchCriteriaArray(): [string, string][] {\r\n if (!this.searchForm) return [];\r\n\r\n const criteria: [string, string][] = [];\r\n const formValue = this.searchForm.value;\r\n const fields = this.visibleFields; // uses your getter\r\n\r\n fields.forEach(field => {\r\n const label = this.fieldLabelMap[field] || (field + ':');\r\n const controlName = this.fieldToControlMap[field] || field;\r\n const value = formValue[controlName];\r\n\r\n // dates\r\n if (controlName === 'fromDate' || controlName === 'toDate' || controlName === 'date' || controlName === 'valueDate') {\r\n criteria.push([label, this.formatDateToDDMMYYYY(value) || '']);\r\n return;\r\n }\r\n\r\n // Use getLookupDisplayValue to produce the human-friendly string (handles arrays/objects/scalars)\r\n const display = this.getLookupDisplayValue(field, value);\r\n\r\n criteria.push([label, display || '']);\r\n });\r\n\r\n return criteria;\r\n }\r\n\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 [ngClass]=\"{'invalid-select': searchForm.get('client')?.invalid && (searchForm.get('client')?.touched || formValidationError)}\"\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 </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 [ngClass]=\"{'invalid-select': searchForm.get('branch')?.invalid && (searchForm.get('branch')?.touched || formValidationError)}\"\r\n (change)=\"onBranchChange()\" (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\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 </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 [ngClass]=\"{'invalid-date':searchForm.get('fromDate')?.invalid && (searchForm.get('fromDate')?.touched || formValidationError)}\" />\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\" [minDate]=\"disabledDate\"\r\n autocomplete=\"off\"\r\n [ngClass]=\"{'invalid-date':searchForm.get('toDate')?.invalid && (searchForm.get('toDate')?.touched || formValidationError)}\" />\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 [ngClass]=\"{'invalid-select': searchForm.get('userId')?.invalid && (searchForm.get('userId')?.touched || formValidationError)}\">\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\" [searchable]=\"true\" [searchFn]=\"currencySearch\"\r\n (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n\r\n <!-- Template for dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div\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\" [searchable]=\"true\" [searchFn]=\"currencySearch\"\r\n (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n\r\n <!-- Template for dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div\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 [ngClass]=\"{'invalid-select': searchForm.get('transactionStatus')?.invalid && (searchForm.get('transactionStatus')?.touched || formValidationError)}\">\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 [ngClass]=\"{'invalid-date':searchForm.get('date')?.invalid && (searchForm.get('date')?.touched || formValidationError)}\" />\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 </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 </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 #dateInput=\"ngbDatepicker\" formControlName=\"date\" autocomplete=\"off\"\r\n [ngClass]=\"{'invalid-date': searchForm.get('date')?.invalid && (searchForm.get('date')?.touched || formValidationError)}\" />\r\n <button class=\"input-group-button cal\" type=\"button\" (click)=\"dateInput.toggle()\">\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 [searchable]=\"true\" [searchFn]=\"currencySearch\" (open)=\"onOpen()\" (close)=\"onClose()\"\r\n [searchable]=\"isOpen\">\r\n\r\n <!-- Dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div\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\">Send Client<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 [ngClass]=\"{'invalid-select': searchForm.get('sendBusinessPartner')?.invalid && (searchForm.get('sendBusinessPartner')?.touched || formValidationError)}\">\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 Client<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 [ngClass]=\"{'invalid-select': searchForm.get('recvBusinessPartner')?.invalid && (searchForm.get('recvBusinessPartner')?.touched || formValidationError)}\">\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 <!-- Transaction Status (Single-select) -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'transactionStatusSingleSelect'\">\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 [items]=\"transactionStatuses\" bindLabel=\"transactionStatus\" bindValue=\"transactionStatus\"\r\n placeholder=\"Select Status\" [clearable]=\"false\" formControlName=\"transactionStatus\" required\r\n [ngClass]=\"{'invalid-select': searchForm.get('transactionStatus')?.invalid && (searchForm.get('transactionStatus')?.touched || formValidationError)}\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- For Trial Balance - Accounts Report -->\r\n\r\n <!-- Business Unit -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'businessUnit'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Business Unit</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"businessUnits\" bindLabel=\"companyFullName\" bindValue=\"companyCode\"\r\n placeholder=\"Select Business Unit\" [clearable]=\"false\" formControlName=\"businessUnit\"\r\n [ngClass]=\"{'invalid-select': searchForm.get('businessUnit')?.invalid && (searchForm.get('businessUnit')?.touched || formValidationError)}\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Year -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'financialYear'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Financial Year</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"financialYears\" bindLabel=\"financialYear\" bindValue=\"financialYear\"\r\n placeholder=\"Select Year\" [clearable]=\"false\" formControlName=\"financialYear\"\r\n [ngClass]=\"{'invalid-select': searchForm.get('financialYear')?.invalid && (searchForm.get('financialYear')?.touched || formValidationError)}\"\r\n (change)=\"onSelectFinancialYear()\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- From Month -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'fromMonth'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">From Month</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"fromMonths\" bindLabel=\"period\" bindValue=\"pOrder\"\r\n placeholder=\"Select From Month\" [clearable]=\"false\" formControlName=\"fromMonth\"\r\n [ngClass]=\"{'invalid-select': searchForm.get('fromMonth')?.invalid && (searchForm.get('fromMonth')?.touched|| formValidationError)}\"\r\n (change)=\"onSelectFromMonth()\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- To Month -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'toMonth'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">To Month</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"toMonths\" bindLabel=\"pMonthName\" bindValue=\"pMonth\"\r\n placeholder=\"Select To Month\" [clearable]=\"false\" formControlName=\"toMonth\"\r\n [ngClass]=\"{'invalid-select': searchForm.get('toMonth')?.invalid && (searchForm.get('toMonth')?.touched|| formValidationError)}\"\r\n (change)=\"onSelectToMonth()\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- From Day -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'fromDay'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">From Day <span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"fromDays\" bindLabel=\"individualDay\" bindValue=\"individualDate\"\r\n placeholder=\"Select From Day\" [clearable]=\"false\" formControlName=\"fromDay\"\r\n [ngClass]=\"{'invalid-select': searchForm.get('fromDay')?.invalid && (searchForm.get('fromDay')?.touched|| formValidationError)}\"\r\n (change)=\"onSelectFromDay()\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- To Day -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'toDay'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">To Day<span style=\"margin-left: 1px;\"\r\n class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"toDays\" bindLabel=\"pDate\" bindValue=\"individualDate\" placeholder=\"Select To Day\"\r\n [clearable]=\"false\" formControlName=\"toDay\"\r\n [ngClass]=\"{'invalid-select': searchForm.get('toDay')?.invalid && (searchForm.get('toDay')?.touched|| formValidationError)}\">\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=\"'dateTypeForTrialBalanceAccounts'\">\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 [items]=\"dateTypes\" bindLabel=\"dateTypeLabel\" bindValue=\"dateTypeCode\"\r\n placeholder=\"Select Date Type\" formControlName=\"dateType\" [clearable]=\"false\" required\r\n [ngClass]=\"{'invalid-select': searchForm.get('dateType')?.invalid && (searchForm.get('dateType')?.touched|| formValidationError)}\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Account Status -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'accountStatus'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Account Status</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select class=\"transaction-status-select\" [items]=\"accountStatuses\" bindLabel=\"statusName\"\r\n bindValue=\"statusCode\" [multiple]=\"true\" placeholder=\"Select Account Status\"\r\n formControlName=\"accountStatus\" [closeOnSelect]=\"false\" [clearable]=\"false\" [searchable]=\"false\"\r\n required\r\n [ngClass]=\"{'invalid-select': searchForm.get('accountStatus')?.invalid && (searchForm.get('accountStatus')?.touched|| formValidationError)}\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input type=\"checkbox\" [checked]=\"item$.selected\" /> {{ item.statusName }}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Summary Report-->\r\n <div class=\"form-field\" *ngSwitchCase=\"'summaryReport'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Summary Report</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"summaryReportTypes\" bindLabel=\"label\" bindValue=\"value\"\r\n [clearable]=\"false\" formControlName=\"summaryReport\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span [title]=\"item.label\">{{ item.label }}</span>\r\n </ng-template>\r\n\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\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 mandatory fields\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\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\n\r\ndeclare module 'jspdf' {\r\n interface jsPDF {\r\n autoTable: (options: any) => jsPDF;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'lib-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 ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n searchCriteria: [string, string][];\r\n isFormValid: boolean = false;\r\n\r\n defaultColDef: ColDef = {\r\n resizable: true,\r\n sortable: true,\r\n filter: true,\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.1, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 60, tooltipField: 'transactionCode' },\r\n { headerName: 'Journal Type', field: 'journalType', flex: 1, 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.1, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 68, tooltipField: 'valueDate' },\r\n { headerName: 'Description', field: 'description', flex: 3, 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.1, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 73, tooltipField: 'accountCode' },\r\n { headerName: 'Ccy', field: 'currency', flex: 1, cellClass: 'ag-left-cols-cell', minWidth: 35, tooltipField: 'currency' },\r\n { headerName: 'Rate', field: 'rate', flex: 1.1, 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.4, 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.loadingState = ComponentLoadingStates.Loading;\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 const DateType = this.dateType === 'VD' ? 'Value Date' : 'Posting Date';\r\n\r\n this.metaDataOne = {\r\n [DateType]: this.currentReportValueOrPostDate,\r\n };\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time ': `${this.reportUser} @ ${this.reportTime}`\r\n };\r\n\r\n this.loadingState = ComponentLoadingStates.Complete;\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 Report`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\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, this.searchCriteria, 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 Report`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\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, this.searchCriteria, 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 Report`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\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, this.searchCriteria, 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.searchCriteria = [\r\n ['Date Type:', `${this.dateTypeFilter === 1 ? 'Value Date' : 'Posting Date'}`],\r\n ['Date:', formatDate(this.date, 'dd/MM/yyyy', 'en-US')],\r\n ];\r\n this.getAccGLDetailsReport();\r\n }\r\n\r\n handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\">\r\n</lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n<div class=\"main-container\">\r\n <div class=\"report-container\"\r\n *ngIf=\"accGlDetailsEnquiryReportModel != undefined && isFormValid && dataReady && accGlDetailsEnquiryReportModel?.journalVoucherEntries?.length!=0\">\r\n <div class=\"main-report\" *ngIf=\"accGlDetailsEnquiryReportModel != undefined && dataReady\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\"\r\n [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"metaDataTwo\" (exportEvent)=\"handleExport($event)\"\r\n (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n <div style=\"position: relative;\" *ngIf=\"rowData && rowData.length > 0\">\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 </ag-grid-angular>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"accGlDetailsEnquiryReportModel?.journalVoucherEntries?.length==0\">\r\n No Data found matching your search criteria.\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, ColumnApi } 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\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 gridColumnApi: ColumnApi;\r\n\r\n token = sessionStorage.getItem('access_token');\r\n applicationType = 'ezremit';\r\n companyCode = 'BH';\r\n serviceUrl: string;\r\n searchCriteria: [string, string][];\r\n\r\n transactionData: TransactionData[] = [];\r\n ReportName = \"Transaction Enquiry\";\r\n metaDataOne: Record<string, string>;\r\n metaDataTwo: Record<string, string>;\r\n filteredData: TransactionData[] = [];\r\n reportUserandTime: string = '';\r\n reportPeriod: string = '';\r\n user: any;\r\n isFormValid: boolean = false;\r\n\r\n // AG Grid Column Definitions\r\n columnDefs: ColDef[] = [\r\n { headerName: 'Product', field: 'product', flex: 1, minWidth: 70, tooltipField: 'product' },\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: 'Transaction Date', field: 'businessDate', flex: 1, minWidth: 75, tooltipField: 'businessDate' },\r\n { headerName: 'Send Client', field: 'sendAgent', flex: 1, minWidth: 120, tooltipField: 'sendAgent' },\r\n { headerName: 'Send Client Branch', field: 'sendAgtBranch', flex: 1, minWidth: 120, tooltipField: 'sendAgtBranch' },\r\n { headerName: 'Receive Client', field: 'recvAgent', flex: 1, minWidth: 120, tooltipField: 'recvAgent' },\r\n { headerName: 'Receive Client Branch', 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 Currency', field: 'payOutCurrency', flex: 1, minWidth: 80, tooltipField: 'payOutCurrency' },\r\n { headerName: 'Receive Amount', field: 'payOutAmount', flex: 1, minWidth: 100, cellClass: 'ag-right-aligned-cell ', tooltipField: 'payOutAmount' },\r\n { headerName: 'Send Currency', field: 'payInCurrency', flex: 1, minWidth: 70, tooltipField: 'payInCurrency' },\r\n { headerName: 'Send Amount', field: 'payInAmount', flex: 1, minWidth: 100, cellClass: 'ag-right-aligned-cell', tooltipField: 'payInAmount' },\r\n { headerName: 'Service Fee', field: 'commission', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', tooltipField: 'commission' },\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: 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 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.user;\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.searchCriteria = criteria.searchCriteria;\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 this.user = criteria.sysUserID;\r\n this.reportUserandTime = `${criteria.sysUserID} @ ${formatDate(this.currentDateTime, 'dd/MM/yyyy hh:mm a', 'en-US')}`;\r\n this.reportPeriod = criteria.reportPeriod;\r\n\r\n var modal = criteria.modal;\r\n const payload = {\r\n client: modal.client,\r\n fromDate: modal.fromDate,\r\n toDate: modal.toDate,\r\n branch: modal.branch,\r\n currency: modal.currency,\r\n product: modal.product,\r\n transactionStatus: modal.transactionStatus.join(\",\"),\r\n transactionNo: (modal.transactionNo || '').trim()\r\n }\r\n\r\n try {\r\n const sdate = new Date(payload?.fromDate);\r\n const edate = new Date(payload?.toDate);\r\n payload.fromDate = sdate.toISOString().split(\"T\")[0];\r\n payload.toDate = edate.toISOString().split(\"T\")[0];\r\n } catch (err) {\r\n throw new Error(\"Invalid Date\");\r\n }\r\n\r\n console.log(payload)\r\n this.metaDataOne = {\r\n 'Report Period': criteria.reportPeriod\r\n }\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.reportUserandTime\r\n }\r\n this.searchCriteria = criteria.searchCriteria;\r\n\r\n this.reportService.searchTransactions(payload)\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 this.filteredData = [...this.transactionData];\r\n if (this.gridApi) {\r\n this.gridApi.setRowData(this.filteredData);\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.trim();\r\n if (this.searchText.length === 0) {\r\n this.filteredData = [...this.transactionData];\r\n } else {\r\n this.filteredData = this.transactionData.filter(row =>\r\n Object.values(row).some(val =>\r\n String(val).toLowerCase().includes(this.searchText.toLowerCase())\r\n )\r\n );\r\n }\r\n }\r\n\r\n onGridReady(params: GridReadyEvent): void {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi.sizeColumnsToFit();\r\n }\r\n\r\n clearError(): void {\r\n this.errorMessage = '';\r\n this.loadingState = ComponentLoadingState.Complete;\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 Period :', this.reportPeriod],\r\n ['Report User & Time :', this.reportUserandTime]\r\n ]);\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: []\r\n });\r\n\r\n this.exportService.exportToPdfUniversal(title, metadata, this.searchCriteria, 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 Period ', this.reportPeriod],\r\n ['Report User & Time ', this.reportUserandTime]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: []\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, this.searchCriteria, 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 Period: ', this.reportPeriod],\r\n ['Report User & Time: ', this.reportUserandTime]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: []\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, this.searchCriteria, headers, rows, 'Transaction_Enquiry.csv');\r\n }\r\n\r\n handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n}","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\"\r\n >\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 && isFormValid\">\r\n\r\n <lib-metadata \r\n [reportName]=\"ReportName\" \r\n [showmetaDataOne]=\"true\" \r\n [showmetaDataTwo]=\"true\" \r\n [metaDataOne]=\"metaDataOne\"\r\n [metaDataTwo]=\"metaDataTwo\" \r\n (exportEvent)=\"handleExport($event)\" \r\n (searchEvent)=\"filter($event)\">\r\n </lib-metadata>\r\n\r\n <div style=\"position: relative;\" *ngIf=\"filteredData.length > 0\">\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]=\"filteredData\" \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","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 = \"\";\r\n reportDate: string;\r\n fromDate: string;\r\n toDate: 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 metaDataTwo: Record<string, string>;\r\n exportService: GenericExportService = inject(GenericExportService);\r\n searchCriteria: [string,string][] = [];\r\n\r\n // flags\r\n showMessage: boolean = false;\r\n noDataFound: boolean = false;\r\n isFormValid: 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, tooltipField: 'transactionDateTime' },\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, 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, 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, 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, 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, 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 Send\";\r\n const reportTimeFormatter = this.dateValueFormatter('dd/MM/yyyy hh:mm a');\r\n const metadata: [string, string][] = [\r\n ['Report Period ', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ];\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\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: [],\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, searchCriteria, columns, data, options });\r\n break;\r\n case 'pdf':\r\n this.exportService.exportToPdf({ title, metadata, searchCriteria, columns, data, options });\r\n break;\r\n case 'csv':\r\n this.exportService.exportToCsv({ title, metadata, searchCriteria, 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.searchCriteria = criteria.searchCriteria;\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 this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n console.log(modal);\r\n // Code For Meta Data\r\n this.leftData = {\r\n 'Report Period': this.fromDate + \" - \" + this.toDate,\r\n }\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.user+\" @ \"+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 \"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 handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\"\r\n >\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 && isFormValid\" class=\"my-2\">\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\" [metaDataTwo]=\"metaDataTwo\"(exportEvent)=\"handleExport($event)\" (searchEvent)=\"filter($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\">\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 fromDate: string;\r\n toDate: string;\r\n metaDataOne: Record<string, string>;\r\n metaDataTwo: 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 searchCriteria: [string, string][];\r\n\r\n showReport: boolean = false;\r\n noDataFound: boolean = false;\r\n isFormValid: boolean = false;\r\n \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, 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 Period ', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ];\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\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: [],\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, searchCriteria, columns, data, options });\r\n break;\r\n case 'pdf':\r\n this.exportService.exportToPdf({ title, metadata, searchCriteria, columns, data, options });\r\n break;\r\n case 'csv':\r\n this.exportService.exportToCsv({ title, metadata, searchCriteria, 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.searchCriteria = criteria.searchCriteria;\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 this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n console.log(modal);\r\n // Code For Meta Data\r\n this.metaDataOne = {\r\n 'Report Period': this.fromDate + \" - \" + this.toDate,\r\n }\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.user+\" @ \"+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 \"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 handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($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 && isFormValid\" class=\"my-2 mx-1\">\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"metaDataTwo\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"filter($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\">\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 { 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 metaDataTwo: 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 searchCriteria: [string, string][];\r\n\r\n paginationArray: (number | 'All')[] = [];\r\n gridApis: any[] = [];\r\n reportPeriod: any;\r\n reportUserandTime: string;\r\n isFormValid: boolean = false;\r\n\r\n // ag-Grid properties\r\n columnDefs = [\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: 110, tooltipField: 'cancellationBranchDateTime' },\r\n { headerName: 'Cancellation Business Date', field: 'cancellationBusinessDate', flex: 1, minWidth: 80, tooltipField: 'cancellationBusinessDate' },\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: 82, cellClass: 'ag-right-aligned-cell', tooltipField: 'payOutAmount' },\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', tooltipField: 'payInAmount' },\r\n { headerName: 'Service Fee', field: 'txnCommission', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', },\r\n { headerName: 'Tax', field: 'tax', flex: 1, minWidth: 70, cellClass: 'ag-right-aligned-cell', tooltipField: 'tax' },\r\n { headerName: 'Total Send Amount', field: 'totalPayinAmount', flex: 1, minWidth: 82, cellClass: 'ag-right-aligned-cell', tooltipField: 'totalPayinAmount' },\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 ];\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 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 this.searchCriteria = criteria.searchCriteria;\r\n const modal = criteria.modal;\r\n this.user = criteria.sysUserID;\r\n this.reportPeriod = criteria.reportPeriod;\r\n this.reportUserandTime = `${criteria.sysUserID} @ ${formatDate(this.currentDateTime, 'dd/MM/yyyy hh:mm a', 'en-US')}`;\r\n this.metaDataOne = {\r\n 'Report Period': criteria.reportPeriod\r\n }\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.reportUserandTime\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 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 this.searchCriteria = criteria.searchCriteria;\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 this.filteredData = data;\r\n this.dataMap = JSON.parse(JSON.stringify(data));\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 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 = {};\r\n this.filteredData = {};\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 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;\r\n }\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 (!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 Period ', this.reportPeriod],\r\n ['Report User & Time ', this.reportUserandTime]\r\n ];\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n const columns = this.columnDefs;\r\n const data = this.dataMap;\r\n const options = {\r\n currencyFields: [],\r\n dateFields: [],\r\n\r\n dateFieldFormats: {},\r\n\r\n specialDecimalFields: {\r\n rate: 8\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, searchCriteria, columns, data, options });\r\n break;\r\n case 'pdf':\r\n this.exportService.exportToPdf({ title, metadata, searchCriteria, columns, data, options });\r\n break;\r\n case 'csv':\r\n this.exportService.exportToCsv({ title, metadata, searchCriteria, 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 handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\"\r\n >\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 && isFormValid\">\r\n <lib-metadata \r\n [reportName]=\"ReportName\" \r\n [showmetaDataOne]=\"true\" \r\n [showmetaDataTwo]=\"true\" \r\n [metaDataOne]=\"metaDataOne\"\r\n [metaDataTwo]=\"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 && isFormValid\">\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\">\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 fromDate: string;\r\n toDate: string;\r\n metaDataOne: Record<string, string>;\r\n metaDataTwo: 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 searchCriteria: [string, string][];\r\n\r\n gridApi: GridApi;\r\n gridColumnApi: ColumnApi;\r\n showReport: boolean = false;\r\n noDataFound: boolean = false;\r\n isFormValid: boolean = false;\r\n\r\n columnDefs: ColDef<RevenuePerTransactionResponseModel>[] = [\r\n { field: 'businessDate', headerName: 'Business Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, tooltipField: 'businessDate' },\r\n { field: 'payInDate', headerName: 'Send Date', 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: 120, 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,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,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, 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, 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, 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, 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,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,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, 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,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,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,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,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,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 formatRate(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 * 100000000) / 100000000).toFixed(8);\r\n return parseFloat(value).toFixed(8);\r\n }\r\n return '';\r\n }\r\n\r\n onSearch(text: string) {\r\n this.searchText = text;\r\n if (this.searchText == null) {\r\n return;\r\n }\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 Period ', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ]);\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['payInAmount', 'payOutAmount',\r\n 'transactionCommission', 'beneDeductAmount', 'xMsCommissionShare', 'xmExchangeVariation',\r\n 'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'\r\n ],\r\n rateFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'usdRateAppliedPayout',]\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, searchCriteria, 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 Period ', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ]);\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['payInAmount', 'payOutAmount',\r\n 'transactionCommission', 'beneDeductAmount', 'xMsCommissionShare', 'xmExchangeVariation',\r\n 'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'\r\n ],\r\n rateFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'usdRateAppliedPayout',]\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, searchCriteria, 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 = this.ReportName;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report Period ', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ]);\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['payInAmount', 'payOutAmount',\r\n 'transactionCommission', 'beneDeductAmount', 'xMsCommissionShare', 'xmExchangeVariation',\r\n 'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'\r\n ],\r\n rateFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'usdRateAppliedPayout',]\r\n });\r\n\r\n this.exportService.exportToPdfUniversal(title, metadata, searchCriteria, 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.searchCriteria = criteria.searchCriteria;\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 this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n console.log(modal);\r\n // Code For Meta Data\r\n this.metaDataOne = {\r\n 'Report Period': this.fromDate + \" - \" + this.toDate,\r\n }\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.user+\" @ \"+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 handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\" (formValid)=\"handleFormValid($event)\">\r\n</lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n<section *ngIf=\"showReport && isFormValid\" class=\"my-2 mx-1\">\r\n\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\"\r\n [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"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 metaDataTwo: 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 reportUserandTime: string;\r\n searchCriteria: [string, string][];\r\n isFormValid: boolean = false;\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: 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 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 this.searchCriteria = criteria.searchCriteria;\r\n const modal = criteria.modal;\r\n this.reportUserandTime = `${criteria.sysUserID} @ ${formatDate(this.currentDateTime, 'dd/MM/yyyy hh:mm a', 'en-US')}`;\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 Period ': criteria.reportPeriod\r\n }\r\n this.metaDataTwo = {\r\n 'Report User & Time ': this.reportUserandTime\r\n }\r\n try {\r\n const sdate = new Date(payload?.fromDate);\r\n const edate = new Date(payload?.toDate);\r\n payload.fromDate = sdate.toISOString().split(\"T\")[0];\r\n payload.toDate = edate.toISOString().split(\"T\")[0];\r\n } catch (err) {\r\n throw new Error(\"Invalid Date\");\r\n }\r\n this.searchCriteria = criteria.searchCriteria;\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 == \"PayIn\") {\r\n this.sendPinnedBottomRow = [this.buildTotalRow(this.sendDetails)];\r\n this.receivePinnedBottomRow = [];\r\n }\r\n else if (this.selectedClientType == \"PayOut\") {\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 Object.entries(this.metaDataTwo || {}).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\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria || [];\r\n\r\n // ===================== Search Criteria Section =====================\r\n\r\n // Start just below metadata\r\n let marginLeft = 15;\r\n let currentY = y + 5; // continue below metadata\r\n\r\n // --- heading ---\r\n doc.setFont('helvetica', 'bold');\r\n doc.text('Search Criteria:-', marginLeft, currentY);\r\n currentY += 8;\r\n\r\n const rowHeightPerLine = 6;\r\n const minGap = 2; // gap between key and value\r\n const betweenColumnsGap = 15; // gap between left and right columns\r\n const pageContentWidth = doc.internal.pageSize.width - 2 * marginLeft;\r\n\r\n // --- helper to measure pair width ---\r\n const measurePairWidth = (key: string, value: string): number => {\r\n doc.setFont('helvetica', 'bold');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n const valueWidth = doc.getTextWidth(value);\r\n return keyWidth + minGap + valueWidth;\r\n };\r\n\r\n // --- compute max width of left column ---\r\n let maxLeftPairWidth = 0;\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n const width = measurePairWidth(key, value);\r\n if (width > maxLeftPairWidth) maxLeftPairWidth = width;\r\n }\r\n }\r\n\r\n // --- calculate where right column starts ---\r\n const leftColumnStart = marginLeft;\r\n const rightColumnStart = leftColumnStart + maxLeftPairWidth + betweenColumnsGap;\r\n\r\n // --- print pairs dynamically ---\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n // Left column\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, leftColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = leftColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n // Right column\r\n if (searchCriteria[i + 1]) {\r\n const [key, value] = searchCriteria[i + 1];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, rightColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = rightColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n currentY += rowHeightPerLine;\r\n }\r\n\r\n // Update Y position for next sections\r\n y = currentY + 4;\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 const row = ws.getRow(r++);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: k + ': ', font: { bold: true } }, // key bold\r\n { text: v ?? '' } // value normal\r\n ]\r\n };\r\n row.getCell(1).alignment = { wrapText: false, vertical: 'middle' };\r\n });\r\n\r\n Object.entries(this.metaDataTwo || {}).forEach(([k, v]) => {\r\n const row = ws.getRow(r++);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: k + ': ', font: { bold: true } }, // key bold\r\n { text: v ?? '' } // value normal\r\n ]\r\n };\r\n row.getCell(1).alignment = { wrapText: false, vertical: 'middle' };\r\n });\r\n\r\n r++;\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria || [];\r\n\r\n ws.mergeCells(r, 1, r, 4); // previously 1..6\r\n ws.getCell(r, 1).value = 'Search Criteria:-';\r\n ws.getCell(r, 1).font = { bold: true };\r\n r += 2;\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1];\r\n const row = ws.getRow(r++);\r\n\r\n // Left column (reduced merge)\r\n ws.mergeCells(row.number, 1, row.number, 1); // was 1..3\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: left[0] + ' ', font: { bold: true } },\r\n { text: left[1] }\r\n ]\r\n };\r\n row.getCell(1).alignment = { wrapText: true, vertical: 'middle' };\r\n\r\n // Right column (start closer to left)\r\n if (right) {\r\n ws.mergeCells(row.number, 2, row.number, 3); // was 4..6\r\n row.getCell(3).value = {\r\n richText: [\r\n { text: right[0] + ' ', font: { bold: true } },\r\n { text: right[1] }\r\n ]\r\n };\r\n row.getCell(3).alignment = { wrapText: true, vertical: 'middle' };\r\n }\r\n }\r\n\r\n r++;\r\n\r\n const writeSection = (sec: { title: string; headers: string[]; rows: any[][] }) => {\r\n const titleRow = ws.getRow(r++);\r\n const titleCell = titleRow.getCell(1);\r\n titleCell.value = sec.title;\r\n titleCell.font = { bold: true, size: 12 };\r\n titleCell.alignment = { horizontal: 'left', vertical: 'middle' };\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 Object.entries(this.metaDataTwo || {}).forEach(([k, v]) => lines.push(`${k}: ${v ?? ''}`));\r\n\r\n // --- SEARCH CRITERIA BLOCK ---\r\n const searchCriteria: [string, string][] = this.searchCriteria || [];\r\n\r\n if (searchCriteria?.length) {\r\n lines.push('');\r\n lines.push('Search Criteria:-');\r\n\r\n // Determine max length of left column for padding\r\n const maxLeftLength = Math.max(...searchCriteria.map(([k, v]) => (k + ' ' + v).length));\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1];\r\n\r\n const leftText = left ? `${left[0]} ${left[1]}`.padEnd(maxLeftLength + 5, ' ') : '';\r\n const rightText = right ? `${right[0]} ${right[1]}` : '';\r\n\r\n // Each pair stays in its own column\r\n lines.push(`\"${leftText}${rightText}\"`);\r\n }\r\n\r\n lines.push(''); // blank line after search criteria\r\n }\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 === 'PayIn' || this.selectedClientType === 'Both') {\r\n out.push({ title: 'Send Details', api: this.sendGridApi });\r\n }\r\n if (this.selectedClientType === 'PayOut' || 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 handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\"\r\n >\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 && isFormValid\">\r\n<lib-metadata \r\n [reportName]=\"ReportName\" \r\n [showmetaDataOne]=\"true\" \r\n [showmetaDataTwo]=\"true\" \r\n [metaDataOne]=\"metaDataOne\"\r\n [metaDataTwo]=\"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: 80%; height: 91px; margin: 0 auto; display: block;\">\r\n</ag-grid-angular>\r\n\r\n<div *ngIf=\"(selectedClientType === 'PayIn' || 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: 80%; height: 204px; margin: 0 auto; display: block;\">\r\n</ag-grid-angular>\r\n</div>\r\n\r\n<div *ngIf=\"(selectedClientType === 'PayOut' || 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: 80%; height: 204px; margin: 0 auto; display: block;\">\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 searchCriteria: [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 isFormValid: boolean = false;\r\n\r\n defaultColDef: ColDef = {\r\n resizable: true,\r\n sortable: true,\r\n filter: true,\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', width: 90, minWidth: 80, maxWidth: 110 },\r\n { headerName: 'ReceiveClient', field: 'receiveClient', tooltipField: 'receiveClient' },\r\n { headerName: 'Principle ReceiveClient (If Applicable)', field: 'principleReceiveClient', tooltipField: 'principleReceiveClient', width: 100, minWidth: 90, maxWidth: 120 },\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 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 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 Period': `${this.reportPeriod}`,\r\n }\r\n\r\n this.rightData = {\r\n 'Report User & Time': `${this.reportUser} @ ${this.reportTime}`,\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.originalGroupEntries?.length) return;\r\n\r\n // Build filtered branch groups\r\n const filteredGroups = this.originalGroupEntries.map(group => {\r\n const originalSendEntries = group.sendTransactions.entries || [];\r\n const originalReceiveEntries = group.receiveTransactions.entries || [];\r\n\r\n const filteredSend = search\r\n ? originalSendEntries.filter(entry =>\r\n Object.values(entry).some(value => normalize(value).includes(search))\r\n )\r\n : [...originalSendEntries];\r\n\r\n const filteredReceive = search\r\n ? originalReceiveEntries.filter(entry =>\r\n Object.values(entry).some(value => normalize(value).includes(search))\r\n )\r\n : [...originalReceiveEntries];\r\n\r\n return {\r\n ...group,\r\n sendTransactions: { ...group.sendTransactions, entries: filteredSend },\r\n receiveTransactions: { ...group.receiveTransactions, entries: filteredReceive }\r\n };\r\n });\r\n\r\n // 🔹 Keep only branches that have any matching entries\r\n this.accountingReportModel.accountingReportByBranchGroups =\r\n filteredGroups.filter(g =>\r\n g.sendTransactions.entries.length > 0 || g.receiveTransactions.entries.length > 0\r\n );\r\n\r\n // Reset grids for visible branches\r\n this.accountingReportModel.accountingReportByBranchGroups.forEach((group, index) => {\r\n [group.sendTransactions.entries, group.receiveTransactions.entries].forEach((entries, idx) => {\r\n const gridApi = this.gridApis[index * 2 + idx];\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 Period:', this.reportPeriod],\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\r\n ];\r\n // // --- search criteria ---\r\n const searchCriteria = this.searchCriteria;\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 marginLeft = 15;\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 //==================================\r\n // --- draw search criteria heading ---\r\n doc.setFont('helvetica', 'bold');\r\n doc.text('Search Criteria:-', marginLeft, currentY);\r\n currentY += 8;\r\n\r\n const rowHeightPerLine = 6;\r\n const minGap = 2; // gap between key and value\r\n const betweenColumnsGap = 15; // gap between left and right columns (you can tune this)\r\n const pageContentWidth = doc.internal.pageSize.width - 2 * marginLeft;\r\n\r\n // --- helper function to measure total width of a key-value pair ---\r\n const measurePairWidth = (key: string, value: string): number => {\r\n doc.setFont('helvetica', 'bold');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n const valueWidth = doc.getTextWidth(value);\r\n return keyWidth + minGap + valueWidth;\r\n };\r\n\r\n // --- calculate max width of left column pairs dynamically ---\r\n let maxLeftPairWidth = 0;\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n const width = measurePairWidth(key, value);\r\n if (width > maxLeftPairWidth) maxLeftPairWidth = width;\r\n }\r\n }\r\n\r\n // --- compute where right column should start ---\r\n const leftColumnStart = marginLeft;\r\n const rightColumnStart = leftColumnStart + maxLeftPairWidth + betweenColumnsGap;\r\n\r\n // --- print search criteria dynamically ---\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n let maxLineCount = 1;\r\n\r\n // Left column\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, leftColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = leftColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n // Right column\r\n if (searchCriteria[i + 1]) {\r\n const [key, value] = searchCriteria[i + 1];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, rightColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = rightColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n currentY += rowHeightPerLine;\r\n }\r\n currentY += 8;\r\n //==================================\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 const pageCount = (doc as any).internal.getNumberOfPages();\r\n for (let i = 1; i <= pageCount; i++) {\r\n doc.setFont(\"helvetica\", \"bold\");\r\n doc.setPage(i);\r\n doc.setFontSize(9);\r\n doc.setTextColor(100);\r\n\r\n const footerY = doc.internal.pageSize.height - 6;\r\n\r\n doc.text(\r\n `Page ${i} of ${pageCount}`,\r\n pageWidth - 15,\r\n footerY,\r\n { align: 'right' }\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 Period', this.reportPeriod],\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\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 // --- search criteria ---\r\n const searchCriteria = this.searchCriteria;\r\n // --- search criteria heading ---\r\n // --- Heading ---\r\n worksheet.mergeCells(currentRow, 1, currentRow, 8);\r\n const headingCell = worksheet.getCell(currentRow, 1);\r\n headingCell.value = 'Search Criteria:-';\r\n headingCell.font = { bold: true, size: 12 };\r\n headingCell.alignment = { vertical: 'middle', horizontal: 'left' };\r\n currentRow += 2;\r\n\r\n // --- Draw pairs dynamically (two per row) ---\r\n const leftColEnd = 4; // columns 1–4 for left pair\r\n const rightColStart = 5; // columns 5–8 for right pair\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const row = worksheet.getRow(currentRow++);\r\n\r\n // Left pair\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n worksheet.mergeCells(row.number, 1, row.number, leftColEnd);\r\n const leftCell = row.getCell(1);\r\n leftCell.value = { richText: [{ text: key + ' ', font: { bold: true } }, { text: value }] };\r\n leftCell.alignment = { vertical: 'middle', wrapText: true };\r\n }\r\n\r\n // Right pair\r\n if (searchCriteria[i + 1]) {\r\n const [key, value] = searchCriteria[i + 1];\r\n worksheet.mergeCells(row.number, rightColStart, row.number, rightColStart + 3);\r\n const rightCell = row.getCell(rightColStart);\r\n rightCell.value = { richText: [{ text: key + ' ', font: { bold: true } }, { text: value }] };\r\n rightCell.alignment = { vertical: 'middle', wrapText: true };\r\n }\r\n }\r\n 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 Period: ${this.reportPeriod}`);\r\n rows.push(`Report User & Time: ${this.reportUser}@${this.reportTime}`);\r\n rows.push('');\r\n\r\n // // --- search criteria ---\r\n const searchCriteria = this.searchCriteria;\r\n\r\n if (searchCriteria?.length) {\r\n rows.push('Search Criteria:-');\r\n\r\n // calculate max length of left key-value pairs for padding\r\n const maxLeftLength = Math.max(...searchCriteria.map(([k, v]) => (k + ' ' + v).length));\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1];\r\n\r\n const leftText = left ? `${left[0]} ${left[1]}`.padEnd(maxLeftLength + 5, ' ') : '';\r\n const rightText = right ? `${right[0]} ${right[1]}` : '';\r\n\r\n // Each row in single CSV row; first and second pair separated by a column\r\n rows.push(`\"${leftText}${rightText}\"`);\r\n }\r\n rows.push(''); // blank line after search criteria\r\n }\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.searchCriteria = payload.searchCriteria;\r\n\r\n this.getAccountingReport(req);\r\n }\r\n\r\n handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\" (formValid)=\"handleFormValid($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 && loadingState == ComponentLoadingState.Complete && !noDataFound && isFormValid\"\r\n style=\"margin-bottom: 30px;\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <div *ngIf=\"accountingReportModel.accountingReportByBranchGroups?.length\">\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\">\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 transaction-grid grid-size\" style=\"width: 100%;\"\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 transaction-grid grid-size\" style=\"width: 100%;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\"\r\n [rowData]=\"group.receiveTransactions.entries\" [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\"\r\n [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event, i * 2 + 1)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n </div>\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound && loadingState!=ComponentLoadingState.Loading\">\r\n No Data found matching your search criteria.\r\n</div>","import { Component, inject, OnInit } from '@angular/core';\r\nimport { CreditLimitStatusEnquiryReportModel } from '../../models/credit-limit-status-enquiry-report/credit-limit-status-enquiry.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-credit-limit-status-enquiry-report',\r\n templateUrl: './credit-limit-status-enquiry-report.component.html',\r\n styleUrls: ['./credit-limit-status-enquiry-report.component.scss']\r\n})\r\nexport class CreditLimitStatusEnquiryReportComponent implements OnInit {\r\n data: CreditLimitStatusEnquiryReportModel[] = [];\r\n filteredData: CreditLimitStatusEnquiryReportModel[] = [];\r\n user: string = \"\";\r\n ReportName = \"Credit Limit Status Enquiry\";\r\n reportService: ReportService = inject(ReportService);\r\n exportService: ExportService = inject(ExportService);\r\n reportDate: string;\r\n fromDate: string;\r\n toDate: string;\r\n metaDataOne: Record<string, string>;\r\n metaDataTwo: 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 searchCriteria: [string, string][];\r\n\r\n gridApi: GridApi;\r\n gridColumnApi: ColumnApi;\r\n showReport: boolean = false;\r\n noDataFound: boolean = false;\r\n isFormValid: boolean = false;\r\n\r\n\r\n columnDefs: ColDef<CreditLimitStatusEnquiryReportModel>[] = [\r\n { field: 'agentCode', headerName: 'Client Code', flex: 1, headerClass: 'ag-header-cell', minWidth: 100, tooltipField: 'agentCode', wrapText: true, autoHeight: true },\r\n { field: 'agentName', headerName: 'Client', flex: 1, headerClass: 'ag-header-cell', minWidth: 150, tooltipField: 'agentName', wrapText: true, autoHeight: true },\r\n { field: 'creditLimit', headerName: 'Credit Limit', flex: 1, headerClass: 'ag-header-cell', cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 100, tooltipField: 'creditLimit', wrapText: true, autoHeight: true },\r\n { field: 'currencyCode', headerName: 'Settlement Currency', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, tooltipField: 'currencyCode', wrapText: true, autoHeight: true },\r\n { field: 'requestTCLAmount', headerName: 'Requested TCL Amount', flex: 1, headerClass: 'ag-header-cell', cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 100, tooltipField: 'requestTCLAmount', wrapText: true, autoHeight: true },\r\n { field: 'requestStatus', headerName: 'Transaction Status', flex: 1, headerClass: 'ag-header-cell', minWidth: 120, tooltipField: 'requestStatus', wrapText: true, autoHeight: true },\r\n { field: 'requestDescription', headerName: 'Request Description', flex: 1, headerClass: 'ag-header-cell', minWidth: 150, tooltipField: 'requestDescription', wrapText: true, autoHeight: true },\r\n { field: 'requestingUserId', headerName: 'Requesting User ID', flex: 1, headerClass: 'ag-header-cell', minWidth: 170, tooltipField: 'requestingUserId', wrapText: true, autoHeight: true },\r\n { field: 'requestingUser', headerName: 'Requesting User', flex: 1, headerClass: 'ag-header-cell', minWidth: 130, tooltipField: 'requestingUser', wrapText: true, autoHeight: true },\r\n { field: 'authorisingUserId', headerName: 'Authorising User ID', flex: 1, headerClass: 'ag-header-cell', minWidth: 170, tooltipField: 'authorisingUserId', wrapText: true, autoHeight: true },\r\n { field: 'authorisingUser', headerName: 'Authorising User', flex: 1, headerClass: 'ag-header-cell', minWidth: 130, tooltipField: 'authorisingUser', wrapText: true, autoHeight: true },\r\n { field: 'requestCreatedDate', headerName: 'Request Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 130, tooltipField: 'requestCreatedDate', wrapText: true, autoHeight: true },\r\n { field: 'authorisedDate', headerName: 'Authorise Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 150, tooltipField: 'authorisationDate', wrapText: true, autoHeight: true },\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 onGridReady(params: GridReadyEvent) {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n }\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 onSearch(text: string) {\r\n this.searchText = text.trim();\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() {\r\n if (!this.data?.length) return;\r\n const title = this.ReportName;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report Period:', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time:', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ]);\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['creditLimit', 'requestTCLAmount'],\r\n rateFields: []\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, searchCriteria, headers, rows, 'Credit_Limit_Status_Enquiry.xlsx');\r\n }\r\n\r\n exportToPDF() {\r\n if (!this.data?.length) return;\r\n const title = this.ReportName;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report Period:', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time:', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ]);\r\n\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['creditLimit', 'requestTCLAmount'],\r\n rateFields: []\r\n });\r\n\r\n this.exportService.exportToPdfUniversal(title, metadata, searchCriteria, headers, rows, 'Credit_Limit_Status_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 exportToCSV() {\r\n if (!this.data?.length) return;\r\n const title = this.ReportName;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report Period:', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time:', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ]);\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['creditLimit', 'requestTCLAmount'],\r\n rateFields: []\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, searchCriteria, headers, rows, 'Credit_Limit_Status_Enquiry.csv');\r\n }\r\n\r\n handleSearch(criteria: any) {\r\n this.searchCriteria = criteria.searchCriteria;\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 this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n console.log(modal);\r\n // Code For Meta Data\r\n this.metaDataOne = {\r\n 'Report Period': this.fromDate + \" - \" + this.toDate,\r\n }\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.user+\" @ \"+this.reportDate,\r\n }\r\n\r\n const searchData = {\r\n \"FromDate\": modal.fromDate,\r\n \"ToDate\": modal.toDate,\r\n \"AgentName\": modal.client,\r\n \"Status\": modal.transactionStatus\r\n }\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getCreditLimitStatusEnquiryReport(searchData).subscribe({\r\n next: (response) => {\r\n this.data = response;\r\n this.filteredData = JSON.parse(JSON.stringify(this.data));\r\n this.noDataFound = this.data?.length === 0 ? true : false;\r\n },\r\n error: (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 handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\" (formValid)=\"handleFormValid($event)\">\r\n</lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n<section *ngIf=\"showReport && isFormValid\" class=\"my-2 mx-1\">\r\n <ng-container *ngIf=\"!noDataFound else noDataTemplate\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\"\r\n [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"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 <ng-template #noDataTemplate>\r\n <div class=\"alert alert-warning mt-3\">\r\n No Data found matching your search criteria.\r\n </div>\r\n </ng-template>\r\n</section>","import { Component, OnInit } from '@angular/core';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { ColDef, GridReadyEvent, GridApi, ColumnApi } from 'ag-grid-community';\r\nimport { formatDate } from '@angular/common';\r\nimport { ExportService } from '../../shared/export.service';\r\n\r\n@Component({\r\n selector: 'lib-funding-report',\r\n templateUrl: './funding-report.component.html',\r\n styleUrls: ['./funding-report.component.scss']\r\n})\r\nexport class FundingReportComponent implements OnInit {\r\n ReportName = \"Funding\";\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n showReport: boolean = false;\r\n metaDataOne: Record<string, string>;\r\n metaDataTwo: Record<string, string>;\r\n currentDateTime: Date = new Date();\r\n searchText: string = '';\r\n gridColumnApi: ColumnApi;\r\n paginationPageSize: number = 15;\r\n gridApi!: GridApi;\r\n errorMessage: string;\r\n hasSearched: boolean = false;\r\n selectedExportOption: string;\r\n reportUserandTime: string = '';\r\n reportPeriod: string = '';\r\n filteredData: any[] = [];\r\n transactionData: any[] = [];\r\n searchCriteria: [string, string][];\r\n isFormValid: boolean = false;\r\n\r\n\r\n columnDefs: ColDef[] = [\r\n { headerName: 'Requested Date', field: 'requestedDate', flex: 1, minWidth: 73, tooltipField: 'requestedDate' },\r\n { headerName: 'Requested By Username', field: 'requestedByUsername', flex: 1, minWidth: 100, tooltipField: 'requestedByUsername' },\r\n { headerName: 'Requested By UserID', field: 'requestedByUserID', flex: 1, minWidth: 120, tooltipField: 'requestedByUserID' },\r\n { headerName: 'Client Code', field: 'clientCode', flex: 1, minWidth: 65, tooltipField: 'clientCode' },\r\n { headerName: 'Client', field: 'companyName', flex: 1, minWidth: 120, tooltipField: 'companyName' },\r\n { headerName: 'Country', field: 'country', flex: 1, minWidth: 60, tooltipField: 'country' },\r\n { headerName: 'Movement', field: 'movement', flex: 1, minWidth: 75, tooltipField: 'Movement' },\r\n { headerName: 'Funding Amount', field: 'fundingAmount', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', tooltipField: 'fundingAmount' },\r\n { headerName: 'Funding Currency', field: 'fCcyCode', flex: 1, minWidth: 65, tooltipField: 'fCcyCode' },\r\n { headerName: 'Exchange Rate', field: 'exchangeRate', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', tooltipField: 'exchangeRate' },\r\n { headerName: 'Amount in LC', field: 'amountInLC', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', tooltipField: 'amountInLC' },\r\n { headerName: 'Local Currency', field: 'lCcyCode', flex: 1, minWidth: 65, tooltipField: 'lCcyCode' },\r\n { headerName: 'Authorized By UserID', field: 'authorizedByUserID', flex: 1, minWidth: 120, tooltipField: 'authorizedByUserID' },\r\n { headerName: 'Authorized By Username', field: 'authorizedByUsername', flex: 1, minWidth: 100, tooltipField: 'authorizedByUsername' },\r\n { headerName: 'Authorized Date', field: 'authorizedDate', flex: 1, minWidth: 75, tooltipField: 'authorizedDate' },\r\n { headerName: 'Transaction Status', field: 'transactionStatus', flex: 1, minWidth: 80, tooltipField: 'transactionStatus' },\r\n { headerName: 'Requester Comments', field: 'requesterComments', flex: 1, minWidth: 100, tooltipField: 'requesterComments' },\r\n { headerName: 'Authorizer Comments', field: 'authorizerComments', flex: 1, minWidth: 100, tooltipField: 'authorizerComments' }\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 autoHeight: true\r\n };\r\n\r\n\r\n constructor(private reportService: ReportService,\r\n private exportService: ExportService,) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n handleSearch(criteria: any): void {\r\n this.searchCriteria = criteria.searchCriteria;\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.showReport = false;\r\n this.errorMessage = '';\r\n this.selectedExportOption = 'excel';\r\n const payload = criteria.modal;\r\n this.reportUserandTime = `${criteria.sysUserID} @ ${formatDate(this.currentDateTime, 'dd/MM/yyyy hh:mm a', 'en-US')}`;\r\n this.reportPeriod = criteria.reportPeriod;\r\n this.metaDataOne = {\r\n 'Report Period': this.reportPeriod\r\n }\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.reportUserandTime\r\n }\r\n this.searchCriteria = criteria.searchCriteria;\r\n\r\n try {\r\n const sdate = new Date(payload?.fromDate);\r\n const edate = new Date(payload?.toDate);\r\n payload.fromDate = sdate.toISOString().split(\"T\")[0];\r\n payload.toDate = edate.toISOString().split(\"T\")[0];\r\n } catch (err) {\r\n throw new Error(\"Invalid Date\");\r\n }\r\n\r\n this.reportService.getFundingReport(payload)\r\n .pipe(\r\n finalize(() => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n })\r\n )\r\n .subscribe({\r\n next: (data) => {\r\n this.transactionData = Array.isArray(data) ? data : [];\r\n this.filteredData = JSON.parse(JSON.stringify(data));\r\n this.showReport = true;\r\n this.hasSearched = true;\r\n },\r\n error: (error) => {\r\n console.error('Error fetching Funding Report:', error);\r\n this.errorMessage = 'An error occurred while fetching the report. Please try again later.';\r\n this.showReport = false;\r\n }\r\n });\r\n }\r\n\r\n filter(text: string): void {\r\n this.searchText = text.trim();\r\n if (this.searchText?.length === 0) {\r\n this.filteredData = [...this.transactionData];\r\n } else {\r\n this.filteredData = this.transactionData.filter(row =>\r\n Object.values(row).some(val =>\r\n String(val).toLowerCase().includes(this.searchText.toLowerCase())\r\n )\r\n );\r\n }\r\n }\r\n\r\n onGridReady(params: GridReadyEvent): void {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi.sizeColumnsToFit();\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 onExportChange(value: string): void {\r\n this.selectedExportOption = value;\r\n }\r\n\r\n exportToPDF(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Funding';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report Period :', this.reportPeriod],\r\n ['Report User and Time :', this.reportUserandTime]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: [],\r\n rateFields: []\r\n });\r\n\r\n this.exportService.exportToPdfUniversal(title, metadata, this.searchCriteria, headers, rows, 'Funding.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 = 'Funding';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report Period ', this.reportPeriod],\r\n ['Report User and Time ', this.reportUserandTime]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: [],\r\n rateFields: []\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, this.searchCriteria, headers, rows, 'Funding.xlsx');\r\n }\r\n\r\n exportToCSV(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Funding';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report Period: ', this.reportPeriod],\r\n ['Report User and Time: ', this.reportUserandTime]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: ['fundingAmount', 'amountInLC'],\r\n rateFields: ['exchangeRate']\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, this.searchCriteria, headers, rows, 'Funding.csv');\r\n }\r\n\r\n handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\"\r\n >\r\n</lib-search-filter>\r\n\r\n<app-loader *ngIf=\"loadingState === ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"errorMessage\" class=\"error alert alert-danger mt-3\">{{ errorMessage }}</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"hasSearched && transactionData.length === 0 && !errorMessage\">\r\n No Data found matching your search criteria.\r\n</div>\r\n\r\n<section *ngIf=\"showReport && isFormValid && transactionData.length > 0\">\r\n\r\n <lib-metadata \r\n [reportName]=\"ReportName\" \r\n [showmetaDataOne]=\"true\" \r\n [showmetaDataTwo]=\"true\" \r\n [metaDataOne]=\"metaDataOne\"\r\n [metaDataTwo]=\"metaDataTwo\" \r\n (exportEvent)=\"handleExport($event)\" \r\n (searchEvent)=\"filter($event)\">\r\n </lib-metadata>\r\n\r\n <div style=\"position: relative;\" *ngIf=\"filteredData.length > 0\">\r\n\r\n <lib-page-size-selector \r\n [totalEntries]=\"filteredData.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]=\"filteredData\" \r\n [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\"\r\n [rowHeight]=\"22\"\r\n [pagination]=\"true\" \r\n [headerHeight]=\"35\" \r\n [paginationPageSize]=\"paginationPageSize\"\r\n (gridReady)=\"onGridReady($event)\" \r\n style=\"width: 100%; height: 375px;\">\r\n </ag-grid-angular>\r\n </div>\r\n \r\n</section>","import { formatDate } from '@angular/common';\r\nimport { Component, HostListener, OnInit } from '@angular/core';\r\nimport { ColDef, ColumnApi, GridApi, GridReadyEvent } from 'ag-grid-community';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { AccountDetail, TrialBalanceReport } from '../../models/trial-balance-accounts-report/trial-balance-accounts.models';\r\nimport { ReportService } from '../../services/report.service';\r\nimport jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\nimport { ExportService } from '../../shared/export.service';\r\n\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 TrialBalanceAccountsReportRequestDTO {\r\n year: number;\r\n dateType: string;\r\n fromDate: string;\r\n toDate: string;\r\n accountStatus: string;\r\n businessUnit: string;\r\n currency: string;\r\n companyCode: string;\r\n reportPeriod: string;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-trial-balance-accounts-report',\r\n templateUrl: './trial-balance-accounts-report.component.html',\r\n styleUrls: ['./trial-balance-accounts-report.component.scss']\r\n})\r\nexport class TrialBalanceAccountsReportComponent implements OnInit {\r\n\r\n\r\n ReportName: string = \"Trial Balance - Accounts\"\r\n gridApi: GridApi;\r\n metaDataOne: Record<string, string>;\r\n metaDataTwo: Record<string, string>;\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n trialBalanceReport: TrialBalanceReport;\r\n selectedExportOption: string = 'excel';\r\n pageSize: number = 15;\r\n dataReady: boolean = false;\r\n searchCriteria: [string, string][];\r\n\r\n accountStatus: string = '';\r\n currency: string = '';\r\n dateType: string = '';\r\n fromDate: string = '';\r\n toDate: string = '';\r\n businessLine: string = '';\r\n\r\n reportUser: string = '';\r\n reportTime: string = '';\r\n reportPeriod: string = '';\r\n isFormValid: boolean = false;\r\n\r\n\r\n defaultColDef: ColDef = {\r\n resizable: true,\r\n sortable: true,\r\n filter: true,\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\r\n wrapHeaderText: true,\r\n autoHeaderHeight: true,\r\n wrapText: true,\r\n autoHeight: true,\r\n\r\n cellClassRules: {\r\n 'total-positive': params => params.data?.isTotalRow && params.value >= 0,\r\n 'total-negative': params => params.data?.isTotalRow && params.value < 0,\r\n 'positive-value': params => !params.data?.isTotalRow && params.value >= 0,\r\n 'negative-value': params => !params.data?.isTotalRow && params.value < 0,\r\n }\r\n };\r\n\r\n rowClassRules = {\r\n 'total-row': params => params.data?.isTotalRow\r\n };\r\n\r\n columnDefs: ColDef[] =\r\n [\r\n { headerName: 'COA Code', field: 'coaCode', tooltipField: 'coaCode', minWidth: 60, maxWidth: 100 },\r\n { headerName: 'Account Code', field: 'accountCode', tooltipField: 'accountCode', minWidth: 80, maxWidth: 100 },\r\n { headerName: 'Account Description', field: 'accountDescription', tooltipField: 'accountDescription', minWidth: 180, maxWidth: 230 },\r\n { headerName: 'Opening Balance Local Amount', field: 'openingBalance', type: 'numericColumn', tooltipField: 'openingBalance' },\r\n { headerName: 'Debits Local Amount', field: 'debit', type: 'numericColumn', tooltipField: 'debit' },\r\n { headerName: 'Credits Local Amount', field: 'credit', type: 'numericColumn', tooltipField: 'credit' },\r\n { headerName: 'Net Movement Local Amount', field: 'netMovement', type: 'numericColumn', tooltipField: 'netMovement' },\r\n { headerName: 'Closing Balance Local Amount', field: 'closingBalance', type: 'numericColumn', tooltipField: 'closingBalance' }\r\n ];\r\n\r\n rowData: AccountDetail[] = [];\r\n gridColumnApi: ColumnApi;\r\n\r\n constructor(private reportService: ReportService, private exportService: ExportService) { }\r\n\r\n ngOnInit(): void { }\r\n\r\n getTrialBalanceAccountsReport(req: any) {\r\n\r\n this.dataReady = false;\r\n this.trialBalanceReport = null;\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n\r\n this.reportService.getTrialBalanceAccountsReport(req).subscribe({\r\n next: (report: TrialBalanceReport) => {\r\n this.trialBalanceReport = report;\r\n this.dataReady = true;\r\n this.reportUser = this.trialBalanceReport.reportUser;\r\n this.reportTime = formatDate(new Date(), 'dd/MM/yyyy hh:mm a', 'en-US');\r\n this.reportPeriod = req.reportPeriod;\r\n\r\n this.accountStatus = req.accountStatus;\r\n this.currency = req.currency;\r\n this.dateType = req.dateType == \"VD\" ? \"Value Date\" : \"Posting Date\";\r\n this.businessLine = req.businessLine;\r\n\r\n this.rowData = this.flattenReport(report).map(acc => ({\r\n ...acc,\r\n openingBalance: Number(acc.openingBalance).toFixed(3),\r\n debit: Number(acc.debit).toFixed(3),\r\n credit: Number(acc.credit).toFixed(3),\r\n netMovement: Number(acc.netMovement).toFixed(3),\r\n closingBalance: Number(acc.closingBalance).toFixed(3)\r\n }));\r\n\r\n this.metaDataOne = {\r\n 'Report Period': this.reportPeriod,\r\n };\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time': `${this.reportUser} @ ${this.reportTime}`,\r\n };\r\n\r\n const searchCriteria: [string, string][] = [\r\n ['Account Status:', this.accountStatus],\r\n ['Currency:', this.currency],\r\n ['Date Type:', this.dateType],\r\n ['From Date:', this.fromDate],\r\n ['Business Line:', this.businessLine],\r\n ['To Date:', this.toDate],\r\n ];\r\n\r\n this.searchCriteria = searchCriteria;\r\n\r\n\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n error: (err) => {\r\n console.error('Error fetching trial balance report:', err);\r\n }\r\n });\r\n }\r\n\r\n flattenReport(report: TrialBalanceReport): AccountDetail[] {\r\n const rows: AccountDetail[] = [];\r\n\r\n report.mainCOAGroups.forEach(main => {\r\n main.subCOAGroups.forEach(sub => {\r\n sub.coaGroups.forEach(coa => {\r\n coa.accounts.forEach(account => rows.push(account));\r\n\r\n rows.push({\r\n coaCode: '',\r\n accountCode: 'Total:',\r\n accountDescription: `${coa.coaDescription}`,\r\n openingBalance: Number(coa.totals.openingBalance).toFixed(3),\r\n debit: Number(coa.totals.debit).toFixed(3),\r\n credit: Number(coa.totals.credit).toFixed(3),\r\n netMovement: Number(coa.totals.netMovement).toFixed(3),\r\n closingBalance: Number(coa.totals.closingBalance).toFixed(3),\r\n isTotalRow: true\r\n });\r\n });\r\n\r\n rows.push({\r\n coaCode: '',\r\n accountCode: 'Total:',\r\n accountDescription: `${sub.subCOADescription}`,\r\n openingBalance: Number(sub.totals.openingBalance).toFixed(3),\r\n debit: Number(sub.totals.debit).toFixed(3),\r\n credit: Number(sub.totals.credit).toFixed(3),\r\n netMovement: Number(sub.totals.netMovement).toFixed(3),\r\n closingBalance: Number(sub.totals.closingBalance).toFixed(3),\r\n isTotalRow: true\r\n });\r\n });\r\n\r\n rows.push({\r\n coaCode: '',\r\n accountCode: 'Total:',\r\n accountDescription: `${main.mainCOADescription}`,\r\n openingBalance: Number(main.totals.openingBalance).toFixed(3),\r\n debit: Number(main.totals.debit).toFixed(3),\r\n credit: Number(main.totals.credit).toFixed(3),\r\n netMovement: Number(main.totals.netMovement).toFixed(3),\r\n closingBalance: Number(main.totals.closingBalance).toFixed(3),\r\n isTotalRow: true\r\n });\r\n });\r\n\r\n rows.push({\r\n coaCode: 'TOTAL:',\r\n accountCode: '',\r\n accountDescription: '',\r\n openingBalance: Number(report.grandTotal.openingBalance).toFixed(3),\r\n debit: Number(report.grandTotal.debit).toFixed(3),\r\n credit: Number(report.grandTotal.credit).toFixed(3),\r\n netMovement: Number(report.grandTotal.netMovement).toFixed(3),\r\n closingBalance: Number(report.grandTotal.closingBalance).toFixed(3),\r\n isTotalRow: true\r\n });\r\n\r\n return rows;\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 const allColumnIds: string[] = [];\r\n params.columnApi.getColumns().forEach((column: any) => {\r\n allColumnIds.push(column.getColId());\r\n });\r\n params.columnApi.autoSizeColumns(allColumnIds);\r\n this.onResize();\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize() {\r\n if (this.gridApi && this.gridApi.sizeColumnsToFit) {\r\n this.gridApi.sizeColumnsToFit();\r\n }\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 const search = normalize(text);\r\n\r\n if (search) {\r\n // filter from already formatted rowData\r\n this.rowData = this.flattenReport(this.trialBalanceReport)\r\n .map(acc => ({\r\n ...acc,\r\n openingBalance: Number(acc.openingBalance).toFixed(3),\r\n debit: Number(acc.debit).toFixed(3),\r\n credit: Number(acc.credit).toFixed(3),\r\n netMovement: Number(acc.netMovement).toFixed(3),\r\n closingBalance: Number(acc.closingBalance).toFixed(3)\r\n }))\r\n .filter(item =>\r\n Object.values(item).some(value => normalize(value).includes(search))\r\n );\r\n } else {\r\n this.rowData = this.flattenReport(this.trialBalanceReport)\r\n .map(acc => ({\r\n ...acc,\r\n openingBalance: Number(acc.openingBalance).toFixed(3),\r\n debit: Number(acc.debit).toFixed(3),\r\n credit: Number(acc.credit).toFixed(3),\r\n netMovement: Number(acc.netMovement).toFixed(3),\r\n closingBalance: Number(acc.closingBalance).toFixed(3)\r\n }));\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 exportToPdf(): void {\r\n if (!this.trialBalanceReport?.mainCOAGroups?.length) return;\r\n\r\n const title = 'Xpress Money - MI Accounts';\r\n const fileName = 'Trial-Balance-Accounts-Raw.pdf';\r\n\r\n // --- page & layout ---\r\n const doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: [312, 210] });\r\n const pageWidth = doc.internal.pageSize.getWidth();\r\n const marginLeft = 15;\r\n const logoWidth = 38.4, logoHeight = 17.5, logoX = marginLeft, logoY = 8;\r\n const titleY = 18;\r\n let currentY = titleY + 14;\r\n\r\n const labelValueGap = 2;\r\n const pairGap = 15;\r\n\r\n // --- metadata ---\r\n const metadata: [string, string][] = [\r\n ['Report Period:', this.reportPeriod],\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\r\n ];\r\n\r\n // --- search criteria ---\r\n const searchCriteria = this.searchCriteria;\r\n\r\n // --- draw logo + title ---\r\n if (this.exportService?.logoBase64) {\r\n try {\r\n doc.addImage(this.exportService.logoBase64, 'PNG', logoX, logoY, logoWidth, logoHeight);\r\n } catch { }\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 // --- draw metadata ---\r\n doc.setFontSize(10);\r\n metadata.forEach(([label, value], i) => {\r\n const y = currentY + i * 6;\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(label, marginLeft, y);\r\n doc.setFont('helvetica', 'normal');\r\n const labelWidth = doc.getTextWidth(label + ' ');\r\n doc.text(value, marginLeft + labelWidth + labelValueGap, y);\r\n });\r\n currentY += metadata.length * 6 + 6;\r\n\r\n // --- draw search criteria heading ---\r\n doc.setFont('helvetica', 'bold');\r\n doc.text('Search Criteria:-', marginLeft, currentY);\r\n currentY += 8;\r\n\r\n // --- draw search criteria pairs ---\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1]; // may be undefined\r\n\r\n // --- Left side ---\r\n if (left) {\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(left[0], marginLeft, currentY);\r\n doc.setFont('helvetica', 'normal');\r\n const leftLabelWidth = doc.getTextWidth(left[0] + ' ');\r\n doc.text(left[1] ?? '', marginLeft + leftLabelWidth + labelValueGap, currentY);\r\n }\r\n\r\n // --- Right side (if available) ---\r\n if (right) {\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(right[0], pageWidth / 2, currentY);\r\n doc.setFont('helvetica', 'normal');\r\n const rightLabelWidth = doc.getTextWidth(right[0] + ' ');\r\n doc.text(right[1] ?? '', pageWidth / 2 + rightLabelWidth + labelValueGap, currentY);\r\n }\r\n\r\n currentY += 6; // move down for next line\r\n }\r\n\r\n currentY += 4;\r\n\r\n // --- headers ---\r\n const headers = [\r\n 'Sr No',\r\n 'COA Code', 'Account Code', 'Account Description',\r\n 'Opening Balance Local Amt', 'Debits Local Amt', 'Credits Local Amt',\r\n 'Net Movement Local Amt', 'Closing Balance Local Amt'\r\n ];\r\n\r\n const flatReport = this.flattenReport(this.trialBalanceReport);\r\n\r\n // --- rows ---\r\n const rows: any[][] = flatReport.map((acc, i) => [\r\n i + 1,\r\n acc.coaCode,\r\n acc.accountCode,\r\n acc.accountDescription,\r\n acc.openingBalance != null ? Number(acc.openingBalance).toFixed(3) : \"\",\r\n acc.debit != null ? Number(acc.debit).toFixed(3) : \"\",\r\n acc.credit != null ? Number(acc.credit).toFixed(3) : \"\",\r\n acc.netMovement != null ? Number(acc.netMovement).toFixed(3) : \"\",\r\n acc.closingBalance != null ? Number(acc.closingBalance).toFixed(3) : \"\"\r\n ]);\r\n\r\n // --- column widths ---\r\n const columnStyles: { [key: number]: any } = {\r\n 0: { cellWidth: 15 },\r\n 1: { cellWidth: 25 },\r\n 2: { cellWidth: 25 },\r\n 3: { cellWidth: 70 },\r\n 4: { cellWidth: 30 },\r\n 5: { cellWidth: 30 },\r\n 6: { cellWidth: 30 },\r\n 7: { cellWidth: 30 },\r\n 8: { cellWidth: 30 },\r\n };\r\n\r\n // --- draw table ---\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],\r\n textColor: 0,\r\n fontStyle: 'bold',\r\n fontSize: 9,\r\n halign: 'center',\r\n cellWidth: 'wrap',\r\n minCellHeight: 10\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: { cellPadding: 2, overflow: 'linebreak', minCellHeight: 6 },\r\n columnStyles,\r\n didParseCell: (data: any) => {\r\n const rowIndex = data.row.index;\r\n const rowData = flatReport[rowIndex];\r\n const isTotalRow = rowData.isTotalRow;\r\n\r\n if (isTotalRow) data.cell.styles.fontStyle = 'bold';\r\n\r\n // highlight negatives in red\r\n if (data.column.index > 3) {\r\n const keyMap = [\"openingBalance\", \"debit\", \"credit\", \"netMovement\", \"closingBalance\"];\r\n const key = keyMap[data.column.index - 4];\r\n const raw = rowData[key];\r\n const num = Number(raw);\r\n if (!isNaN(num) && num < 0) {\r\n data.cell.styles.textColor = [255, 0, 0];\r\n }\r\n }\r\n }\r\n });\r\n\r\n // --- page numbers ---\r\n const totalPages = (doc as any).internal.getNumberOfPages();\r\n for (let i = 1; i <= totalPages; i++) {\r\n doc.setPage(i);\r\n doc.setFontSize(9);\r\n const footerY = doc.internal.pageSize.height - 6;\r\n doc.text(`Page ${i} of ${totalPages}`, pageWidth - 15, footerY, { align: 'right' });\r\n }\r\n\r\n // --- save PDF ---\r\n doc.save(fileName);\r\n }\r\n\r\n exportToExcel(): void {\r\n if (!this.trialBalanceReport?.mainCOAGroups?.length) return;\r\n\r\n const fileName = 'Trial-Balance-Accounts-Raw.xlsx';\r\n const workbook = new ExcelJS.Workbook();\r\n const sheet = workbook.addWorksheet('Trial Balance');\r\n\r\n let currentRow = 1;\r\n\r\n // --- add logo if available ---\r\n if (this.exportService?.logoBase64) {\r\n const base64Data = this.exportService.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({ base64: base64Data, extension: 'png' });\r\n sheet.addImage(imageId, { tl: { col: 0, row: 0 }, ext: { width: 120, height: 60 }, editAs: 'oneCell' });\r\n }\r\n\r\n // --- title ---\r\n const title = 'Xpress Money - MI Accounts';\r\n sheet.mergeCells(1, 3, 1, 9);\r\n const titleCell = sheet.getCell('C1');\r\n titleCell.value = title;\r\n titleCell.font = { size: 15, bold: true };\r\n titleCell.alignment = { horizontal: 'center', vertical: 'middle' };\r\n currentRow = 4;\r\n\r\n // --- metadata ---\r\n const metadata: [string, string][] = [\r\n ['Report Period:', this.reportPeriod],\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\r\n ];\r\n metadata.forEach(([label, value]) => {\r\n sheet.mergeCells(currentRow, 1, currentRow, 6);\r\n const row = sheet.getRow(currentRow++);\r\n row.getCell(1).value = { richText: [{ text: label + ' ', font: { bold: true } }, { text: value }] };\r\n row.getCell(1).alignment = { vertical: 'middle', wrapText: true };\r\n });\r\n currentRow++;\r\n\r\n // --- search criteria heading ---\r\n sheet.mergeCells(currentRow, 1, currentRow, 6);\r\n sheet.getCell(currentRow, 1).value = 'Search Criteria:-';\r\n sheet.getCell(currentRow, 1).font = { bold: true };\r\n currentRow += 2;\r\n\r\n // --- search criteria ---\r\n const searchCriteria = this.searchCriteria;\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1]; // may be undefined\r\n const row = sheet.getRow(currentRow++);\r\n\r\n // Left cell\r\n sheet.mergeCells(row.number, 1, row.number, 3);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: (left?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: left?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(1).alignment = { wrapText: true, vertical: 'middle' };\r\n\r\n // Right cell (only if present)\r\n if (right) {\r\n sheet.mergeCells(row.number, 4, row.number, 6);\r\n row.getCell(4).value = {\r\n richText: [\r\n { text: (right?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: right?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(4).alignment = { wrapText: true, vertical: 'middle' };\r\n }\r\n }\r\n currentRow++;\r\n\r\n // --- headers ---\r\n const headers = [\r\n 'Sr No',\r\n 'COA Code', 'Account Code', 'Account Description',\r\n 'Opening Balance Local Amt', 'Debits Local Amt', 'Credits Local Amt',\r\n 'Net Movement Local Amt', 'Closing Balance Local Amt'\r\n ];\r\n const headerRow = sheet.getRow(currentRow++);\r\n headers.forEach((h, i) => {\r\n const cell = headerRow.getCell(i + 1);\r\n cell.value = h;\r\n cell.font = { bold: true };\r\n cell.alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'DCDCDC' } };\r\n cell.border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } };\r\n });\r\n\r\n // --- rows with 3 decimals for numeric columns ---\r\n const rows = this.flattenReport(this.trialBalanceReport).map((acc, idx) => {\r\n const numericColumns = ['openingBalance', 'debit', 'credit', 'netMovement', 'closingBalance'];\r\n const rowData = numericColumns.map(col => {\r\n const val = Number(acc[col]);\r\n return !isNaN(val) ? val.toFixed(3) : '';\r\n });\r\n return [\r\n idx + 1,\r\n acc.coaCode,\r\n acc.accountCode,\r\n acc.accountDescription,\r\n ...rowData,\r\n acc.isTotalRow || false\r\n ];\r\n });\r\n\r\n rows.forEach(r => {\r\n const row = sheet.getRow(currentRow++);\r\n r.slice(0, 9).forEach((val, i) => {\r\n const cell = row.getCell(i + 1);\r\n // convert back to number for Excel math but show 3 decimals\r\n if (i > 3 && val !== '') cell.value = parseFloat(val.toString());\r\n else cell.value = val;\r\n\r\n cell.border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } };\r\n\r\n // bold total rows\r\n if (r[9]) cell.font = { bold: true };\r\n\r\n // negative numbers red\r\n if (i > 3 && typeof cell.value === 'number' && cell.value < 0) {\r\n cell.font = { color: { argb: 'FF0000' }, bold: r[9] ? true : undefined };\r\n }\r\n\r\n // set number format to show 3 decimals\r\n if (i > 3) cell.numFmt = '0.000';\r\n });\r\n });\r\n\r\n // --- column widths ---\r\n const widths = [8, 15, 15, 40, 20, 20, 20, 20, 20];\r\n widths.forEach((w, i) => sheet.getColumn(i + 1).width = w);\r\n\r\n // --- save file ---\r\n workbook.xlsx.writeBuffer().then(buffer => {\r\n const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\r\n FileSaver.saveAs(blob, fileName);\r\n });\r\n }\r\n\r\n exportToCsv(): void {\r\n if (!this.trialBalanceReport?.mainCOAGroups?.length) return;\r\n\r\n const fileName = 'Trial-Balance-Accounts-Raw.csv';\r\n\r\n // --- metadata ---\r\n const metadata: [string, string][] = [\r\n ['Report Title:', 'Xpress Money - MI Accounts'],\r\n ['Report Period:', this.reportPeriod],\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\r\n ];\r\n\r\n // --- search criteria ---\r\n const searchCriteria = this.searchCriteria;\r\n\r\n // --- table headers (add Sr No at start) ---\r\n const headers = [\r\n 'Sr No',\r\n 'COA Code', 'Account Code', 'Account Description',\r\n 'Opening Balance Local Amt', 'Debits Local Amt', 'Credits Local Amt',\r\n 'Net Movement Local Amt', 'Closing Balance Local Amt'\r\n ];\r\n\r\n // --- table rows (prepend Sr No) ---\r\n const rows: any[][] = this.flattenReport(this.trialBalanceReport).map((acc, index) => [\r\n index + 1, // Sr No\r\n acc.coaCode,\r\n acc.accountCode,\r\n acc.accountDescription,\r\n Number(acc.openingBalance).toFixed(3),\r\n Number(acc.debit).toFixed(3),\r\n Number(acc.credit).toFixed(3),\r\n Number(acc.netMovement).toFixed(3),\r\n Number(acc.closingBalance).toFixed(3)\r\n ]);\r\n\r\n // --- helper to escape CSV values ---\r\n const escapeCsv = (value: any) => {\r\n if (value === null || value === undefined) return '';\r\n const str = value.toString();\r\n return str.includes(',') || str.includes('\"') || str.includes('\\n')\r\n ? `\"${str.replace(/\"/g, '\"\"')}\"`\r\n : str;\r\n };\r\n\r\n // --- build CSV content ---\r\n let csvContent = '';\r\n\r\n // metadata\r\n metadata.forEach(([label, value]) => {\r\n csvContent += `${escapeCsv(label)}${escapeCsv(value)},\\n`;\r\n });\r\n csvContent += '\\n'; // gap\r\n\r\n // --- search criteria heading ---\r\n csvContent += 'Search Criteria:-\\n';\r\n\r\n // --- search criteria (2 per row, dynamic) ---\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1];\r\n\r\n // Left side\r\n if (left) csvContent += `${escapeCsv(left[0])} ${escapeCsv(left[1])},`;\r\n\r\n // Right side\r\n if (right) csvContent += ` ${escapeCsv(right[0])} ${escapeCsv(right[1])},`;\r\n\r\n csvContent += '\\n';\r\n }\r\n csvContent += '\\n'; // blank line after criteria\r\n\r\n // table headers\r\n csvContent += headers.map(h => escapeCsv(h)).join(',') + '\\n';\r\n\r\n // table rows\r\n rows.forEach(row => {\r\n csvContent += row.map(cell => escapeCsv(cell)).join(',') + '\\n';\r\n });\r\n\r\n // --- trigger download ---\r\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\r\n const link = document.createElement('a');\r\n const url = URL.createObjectURL(blob);\r\n link.setAttribute('href', url);\r\n link.setAttribute('download', fileName);\r\n link.style.visibility = 'hidden';\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n\r\n getReport(payload: any) {\r\n const modal = payload?.modal || payload;\r\n\r\n this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy', 'en-US');\r\n this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy', 'en-US');\r\n\r\n const req: TrialBalanceAccountsReportRequestDTO = {\r\n year: Number(modal.financialYear),\r\n dateType: modal.dateType,\r\n fromDate: modal.fromDay,\r\n toDate: modal.toDay,\r\n accountStatus: modal.accountStatus.join(','),\r\n businessUnit: modal.businessUnit,\r\n currency: modal.currency,\r\n companyCode: \"BH\",\r\n reportPeriod: `${formatDate(modal.fromDate, 'dd/MM/yyyy', 'en-US')} - ${formatDate(modal.toDate, 'dd/MM/yyyy', 'en-US')}`,\r\n };\r\n\r\n this.getTrialBalanceAccountsReport(req);\r\n }\r\n\r\n handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"\r\n (formValid)=\"handleFormValid($event)\"></lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"dataReady && trialBalanceReport?.mainCOAGroups?.length > 0 &&isFormValid\">\r\n <lib-metadata [reportName]=\"'Xpress Money - MI Accounts'\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\"\r\n [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"metaDataTwo\" (exportEvent)=\"handleExport($event)\"\r\n (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <div style=\"position: relative;\" *ngIf=\"rowData && rowData.length > 0\">\r\n <lib-page-size-selector [totalEntries]=\"rowData?.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApi\"></lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"height: 380px;\" [domLayout]=\"'normal'\"\r\n [rowData]=\"rowData\" [defaultColDef]=\"defaultColDef\" [columnDefs]=\"columnDefs\" [rowClassRules]=\"rowClassRules\"\r\n [pagination]=\"true\" (gridReady)=\"onGridReady($event)\" [paginationPageSize]=\"pageSize\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" (paginationChanged)=\"onResize()\"></ag-grid-angular>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"trialBalanceReport?.mainCOAGroups?.length==0\">\r\n No Data found matching your search criteria.\r\n</div>"," import { Component, NgZone, OnInit, inject } from '@angular/core';\r\n // import { Component, ElementRef, HostListener, ViewChild } from '@angular/core';\r\n import { ColDef, GridApi, GridReadyEvent } from 'ag-grid-community';\r\n import { themeAlpine } from '@ag-grid-community/theming';\r\nimport { BranchActivityReport } from '../../models/branch-activity-report/branch-activity-send-report';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { ExportOptions, GenericExportService } from '../../shared/export-generic.service';\r\nimport { ReportService } from '../../services/report.service';\r\n// import { formatDate } from '@angular/common';\r\n// import { ComponentLoadingStates } from 'src/app/models/component-loading-states';\r\n// import { GenericExportService } from 'src/app/shared/export-generic.service';\r\n// import { ExportOptions } from 'projects/reports-lib/src/lib/shared/export-generic.service';\r\n// import { Injectable } from '@angular/core';\r\n// import jsPDF from 'jspdf';\r\n// import 'jspdf-autotable';\r\n import * as ExcelJS from 'exceljs';\r\n import * as FileSaver from 'file-saver';\r\nimport { formatDate } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-branch-activity-send-summary-report',\r\n templateUrl: './branch-activity-send-summary-report.component.html',\r\n styleUrls: ['./branch-activity-send-summary-report.component.scss']\r\n})\r\nexport class BranchActivitySendSummaryReportComponent 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 = \"\";\r\n reportDate: string;\r\n fromDate: string;\r\n toDate: 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 Summary\";\r\n leftData: Record<string, string>;\r\n metaDataTwo: Record<string, string>;\r\n exportService: GenericExportService = inject(GenericExportService);\r\n searchCriteria: [string, string][] = [];\r\n\r\n // flags\r\n showMessage: boolean = false;\r\n noDataFound: boolean = false;\r\n isFormValid: boolean = false;\r\n clearSearch: boolean = false;\r\n isTotalSummary: boolean = false;\r\n columnDefs: ColDef<BranchActivityReport>[] = [\r\n\r\n {\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 valueFormatter: (params) => {\r\n const row = params.data as BranchActivityReport | null;\r\n\r\n if (row && row.payinCCcode === 'Total') {\r\n return ''; // hide date for total row\r\n }\r\n\r\n return params.value;\r\n }\r\n },\r\n { field: 'product', headerName: 'Product', flex: 1, wrapText: true, autoHeight: true, minWidth: 80, width: 120, tooltipField: 'product' },\r\n { field: 'payoutCCcode', headerName: 'Receive Currency', 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, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payoutAmount' },\r\n { field: 'payinCCcode', headerName: 'Send Currency', 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, 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, 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, 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, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'totalPayinAmount' },\r\n { field: 'transactionCount', headerName: 'Transaction Count', flex: 1, wrapText: true, autoHeight: true, minWidth: 80, maxWidth: 100, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'txnCount' },\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\r\n // rowClassRules = {\r\n // debugger\r\n // 'total-row': params => params.data?.isTotalRow\r\n // };\r\n\r\n rowClassRules = {\r\n 'total-row': (params) => {\r\n console.log('Row Data:', params.data.isTotalRow);\r\n if (params.data.isTotalRow) {\r\n return params.data?.isTotalRow;\r\n }\r\n\r\n }\r\n };\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 if(a == null){\r\n return false;\r\n }\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 params.columnApi.setColumnVisible('businessDateTime', !this.isTotalSummary);\r\n params.api.sizeColumnsToFit();\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 Send Summary\";\r\n const reportTimeFormatter = this.dateValueFormatter('dd/MM/yyyy hh:mm a');\r\n const metadata: [string, string][] = [\r\n ['Report Period ', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time', this.user ? this.user + \" @ \" + this.reportDate : '' + \" @ \" + this.reportDate],\r\n ];\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n //const columns = this.columnDefs;\r\n\r\n //exclude Business Date col for Total Summary Report.\r\n let columns = [...this.columnDefs];\r\n const summaryReport = this.searchCriteria.find(x => x[0] === 'Summary Report:')?.[1];\r\n \r\n if (summaryReport === 'Total Summary') {\r\n columns = columns.filter(col => col.field !== 'businessDateTime');\r\n }\r\n\r\n // const data = this.dataMap;\r\n const cleanedData = {};\r\n\r\n Object.keys(this.dataMap).forEach(key => {\r\n cleanedData[key] = this.dataMap[key].map(row => {\r\n if (row.isTotalRow) {\r\n return {\r\n ...row,\r\n businessDateTime: '',\r\n product: '',\r\n receiveCurrency: '',\r\n receiveAmount: ''\r\n };\r\n }\r\n return row;\r\n });\r\n });\r\n\r\n const data = cleanedData;\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: [],\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.exportToExcel({ title, metadata, searchCriteria, columns, data, options });\r\n break;\r\n case 'pdf':\r\n this.exportService.exportToPdf({ title, metadata, searchCriteria, columns, data, options });\r\n break;\r\n case 'csv':\r\n this.exportService.exportToCsv({ title, metadata, searchCriteria, 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 async exportToExcel({\r\n title,\r\n metadata,\r\n searchCriteria,\r\n columns,\r\n data,\r\n options = {}\r\n }: {\r\n title: string;\r\n metadata: [string, string][];\r\n searchCriteria: [string, string][];\r\n columns: any[];\r\n data: any[] | Record<string, any[]>;\r\n options?: ExportOptions;\r\n }): Promise<void> {\r\n\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\r\n const titleStartCol = 4;\r\n const titleColLetter = String.fromCharCode(64 + titleStartCol);\r\n const titleMergeEnd = String.fromCharCode(64 + totalCols);\r\n\r\n // ===================== LOGO =====================\r\n if (this.logoBase64) {\r\n const base64Data = this.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\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\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 =====================\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 // ===================== METADATA =====================\r\n let metaRowStart = 4;\r\n\r\n metadata.forEach(([label, value], idx) => {\r\n const row = worksheet.getRow(metaRowStart + idx);\r\n\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 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;\r\n currentRow++;\r\n\r\n // ===================== SEARCH CRITERIA =====================\r\n worksheet.mergeCells(currentRow, 1, currentRow, 6);\r\n worksheet.getCell(currentRow, 1).value = 'Search Criteria:-';\r\n worksheet.getCell(currentRow, 1).font = { bold: true };\r\n currentRow += 2;\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1];\r\n\r\n const row = worksheet.getRow(currentRow++);\r\n\r\n worksheet.mergeCells(row.number, 1, row.number, 3);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: (left?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: left?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(1).alignment = { wrapText: true, vertical: 'middle' };\r\n\r\n if (right) {\r\n worksheet.mergeCells(row.number, 4, row.number, 6);\r\n row.getCell(4).value = {\r\n richText: [\r\n { text: (right?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: right?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(4).alignment = { wrapText: true, vertical: 'middle' };\r\n }\r\n }\r\n\r\n currentRow++;\r\n\r\n // ===================== HEADER ROW =====================\r\n const headerRow = worksheet.getRow(currentRow++);\r\n\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 = {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: { argb: 'D9D9D9' }\r\n };\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 headerRow.eachCell((cell) => {\r\n if (cell.value === 'Transaction Count') {\r\n cell.value = 'Transaction\\nCount';\r\n cell.alignment = {\r\n horizontal: 'center',\r\n vertical: 'middle',\r\n wrapText: true\r\n };\r\n }\r\n });\r\n // ===================== DATA SECTION =====================\r\n let rowIdx = currentRow;\r\n let serialNumber = 1;\r\n\r\n if (options.groupByKey && !Array.isArray(data)) {\r\n\r\n for (const [group, items] of Object.entries(data)) {\r\n\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 items.forEach((item) => {\r\n\r\n const rowData = this.prepareTableRows([item], columns, options)[0];\r\n const dataRow = worksheet.getRow(rowIdx++);\r\n\r\n const fullRow = [\r\n !item?.isTotalRow ? serialNumber++ : '',\r\n ...rowData\r\n ];\r\n\r\n fullRow.forEach((val, cIdx) => {\r\n const cell = dataRow.getCell(cIdx + 1);\r\n // cell.value = val;\r\n //added by bharati for \r\n const field = columns[cIdx - 1]?.field;\r\n\r\n // ✅ Amount fields (Receive Amount, Send Amount, Total Send Amount etc.)\r\n /*\r\n if (\r\n field=='totalPayinAmount'||\r\n field=='payinAmount'||\r\n field === 'transactionCommissionAmount' ||\r\n field === 'tax'\r\n ) {\r\n if (val !== '' && val !== null && val !== undefined) {\r\n cell.value = Number(val);\r\n cell.numFmt = '#,##0.000';\r\n cell.alignment = { horizontal: 'right', vertical: 'middle' };\r\n } else {\r\n cell.value = '';\r\n }\r\n }\r\n else {\r\n cell.value = val;\r\n } */\r\n\r\n if (item?.isTotalRow && field === 'receiveAmount') {\r\n cell.value = '';\r\n }\r\n else if (\r\n field?.toLowerCase().includes('amount') ||\r\n field === 'serviceFee' ||\r\n field === 'tax'\r\n ) {\r\n if (val !== '' && val !== null && val !== undefined) {\r\n cell.value = val; // already number\r\n cell.numFmt = '#,##0.000'; // Excel formatting\r\n cell.alignment = { horizontal: 'right', vertical: 'middle' };\r\n } else {\r\n cell.value = '';\r\n }\r\n }\r\n else {\r\n cell.value = val;\r\n }\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 if (item?.isTotalRow) {\r\n dataRow.eachCell(cell => {\r\n cell.font = {\r\n ...cell.font,\r\n bold: true,\r\n size: 12\r\n };\r\n });\r\n }\r\n });\r\n }\r\n\r\n } else {\r\n\r\n this.prepareTableRows(data as any[], columns, options)\r\n .forEach((rowData, index) => {\r\n\r\n const dataRow = worksheet.getRow(rowIdx++);\r\n const originalItem = (data as any[])[index];\r\n\r\n const fullRow = [\r\n !originalItem?.isTotalRow ? serialNumber++ : '',\r\n ...rowData\r\n ];\r\n\r\n fullRow.forEach((val, cIdx) => {\r\n const cell = dataRow.getCell(cIdx + 1);\r\n //cell.value = val;\r\n /* if (cIdx === 0) {\r\n cell.value = val;\r\n} else {\r\n\r\n const field = columns[cIdx - 1]?.field;\r\n\r\n if (\r\n field=='totalPayinAmount'||\r\n field=='payinAmount'||\r\n field === 'transactionCommissionAmount' ||\r\n field === 'tax'\r\n ) {\r\n cell.value = Number(val);\r\n cell.numFmt = '#,##0.000';\r\n cell.alignment = { horizontal: 'right', vertical: 'middle' };\r\n }\r\n else {\r\n cell.value = val;\r\n }\r\n} */\r\n\r\n const field = columns[cIdx - 1]?.field;\r\n\r\n if (cIdx === 0) {\r\n cell.value = val;\r\n }\r\n else if (originalItem?.isTotalRow && field === 'receiveAmount') {\r\n cell.value = '';\r\n }\r\n else if (\r\n field?.toLowerCase().includes('amount') ||\r\n field === 'serviceFee' ||\r\n field === 'tax'\r\n ) {\r\n if (val !== '' && val !== null && val !== undefined) {\r\n cell.value = val; // already number\r\n cell.numFmt = '#,##0.000'; // Excel formatting\r\n cell.alignment = { horizontal: 'right', vertical: 'middle' };\r\n } else {\r\n cell.value = '';\r\n }\r\n }\r\n else {\r\n cell.value = val;\r\n }\r\n\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 if (originalItem?.isTotalRow) {\r\n dataRow.eachCell(cell => {\r\n cell.font = {\r\n ...cell.font,\r\n bold: true,\r\n size: 12\r\n };\r\n });\r\n }\r\n });\r\n }\r\n\r\n // ===================== AUTO WIDTH =====================\r\n for (let i = 1; i <= totalCols; i++) {\r\n let maxLength = 10;\r\n\r\n worksheet.eachRow({ includeEmpty: true }, (row) => {\r\n const cell = row.getCell(i);\r\n if (cell.isMerged) return;\r\n\r\n let cellValue = '';\r\n\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\r\n maxLength = Math.max(maxLength, cellValue.length);\r\n });\r\n\r\n worksheet.getColumn(i).width = Math.min(maxLength, 50);\r\n }\r\n //new code:bharati\r\n\r\n worksheet.columns.forEach((column, index) => {\r\n\r\n if (index === 0) return; // skip Sr No\r\n\r\n const field = columns[index - 1]?.field;\r\n\r\n if (field === 'payinAmount') {\r\n column.width = 14;\r\n }\r\n if (field === 'payoutAmount') {\r\n column.width = 15;\r\n }\r\n if (field === 'transactionCount') {\r\n column.width = 14;\r\n }\r\n });\r\n\r\n // worksheet.columns.forEach((column) => {\r\n // if (column.header === 'Send Amount') {\r\n // column.width = 25;\r\n // }\r\n // });\r\n\r\n\r\n // ===================== SAVE FILE =====================\r\n const buffer = await workbook.xlsx.writeBuffer();\r\n\r\n FileSaver.saveAs(\r\n new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n }),\r\n title.replace(/\\s/g, '-') + '.xlsx'\r\n );\r\n }\r\n\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) => ([\r\n // ...filtered.map(col => {\r\n // let value = row[col.field];\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 private prepareTableRows(\r\n data: any[],\r\n columns: any[],\r\n options: ExportOptions = {}\r\n ): any[][] {\r\n\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) => ([\r\n ...filtered.map(col => {\r\n\r\n let value = row[col.field];\r\n\r\n // ✅ Date formatting (keep as string)\r\n if (\r\n col.field &&\r\n (dateFields.includes(col.field) || col.field in dateFieldFormats)\r\n ) {\r\n const format = dateFieldFormats[col.field] || 'dd/MM/yyyy';\r\n value = this.formatDateByFormat(value, format);\r\n }\r\n\r\n // ✅ Special decimal fields → return NUMBER (no toFixed)\r\n else if (\r\n col.field &&\r\n col.field in specialDecimalFields &&\r\n value != null\r\n ) {\r\n value = Number(value);\r\n }\r\n\r\n // ✅ Currency fields → return NUMBER (no toFixed)\r\n else if (\r\n col.field &&\r\n currencyFields.includes(col.field) &&\r\n value != null\r\n ) {\r\n value = Number(value);\r\n }\r\n\r\n return value ?? '';\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\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 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.searchCriteria = criteria.searchCriteria;\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 this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10);\r\n this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10);\r\n console.log(modal);\r\n // Code For Meta Data\r\n this.leftData = {\r\n 'Report Period': this.fromDate + \" - \" + this.toDate,\r\n }\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.user + \" @ \" + this.reportDate,\r\n }\r\n const isTotalSummary = modal.summaryReport === 'Total Summary';\r\n this.isTotalSummary = isTotalSummary;\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 \"SummaryReport\": modal.summaryReport\r\n\r\n };\r\n this.showMessage = true;\r\n this.clearSearch = true;\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getBranchActivitySendSummaryReport(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 this.clearSearch = false;\r\n },\r\n\r\n complete: () => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n this.showReport = true;\r\n this.clearSearch = false;\r\n }\r\n })\r\n }\r\n\r\n handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\">\r\n</lib-search-filter >\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<section *ngIf=\"showReport && isFormValid && !clearSearch\" class=\"my-2\">\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\" [metaDataTwo]=\"metaDataTwo\"(exportEvent)=\"handleExport($event)\" (searchEvent)=\"filter($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\">\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\" \r\n [defaultColDef]=\"defaultColDef\" \r\n [rowData]=\"item.value\" \r\n [rowHeight]=\"20\"\r\n [headerHeight]=\"22\"\r\n [pagination]=\"true\" \r\n [paginationPageSize]=\"paginationArray[i]\" \r\n [rowClassRules]=\"rowClassRules\"\r\n (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 { Component, NgZone, OnInit, inject } from '@angular/core';\r\n// import { ReportService } from 'src/app/services/report.service';\r\n// import { BranchActivityReport } from 'src/app/models/branch-activity-report/branch-activity-send-report';\r\n// import { ColDef, GridApi, GridReadyEvent } from 'ag-grid-community';\r\nimport { themeAlpine } from '@ag-grid-community/theming';\r\n// import { formatDate } from '@angular/common';\r\n// import { ComponentLoadingStates } from 'src/app/models/component-loading-states';\r\n// import { GenericExportService } from 'src/app/shared/export-generic.service';\r\n// import { TransactionMonitoringReport } from 'src/app/models/transaction-monitoring-report/transaction-monitoring-report';\r\n\r\nimport { Component, inject, NgZone, OnInit } from \"@angular/core\";\r\nimport { TransactionMonitoringReport } from \"../../models/transaction-monitoring-report/transaction-monitoring-report\";\r\nimport { ColDef, GridApi, GridReadyEvent } from \"ag-grid-community\";\r\nimport { ComponentLoadingStates } from \"../../models/component-loading-states\";\r\nimport { GenericExportService } from \"../../shared/export-generic.service\";\r\nimport { ReportService } from \"../../services/report.service\";\r\nimport { formatDate } from '@angular/common';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'lib-transaction-monitoring-report',\r\n templateUrl: './transaction-monitoring-report.component.html',\r\n styleUrls: ['./transaction-monitoring-report.component.scss']\r\n})\r\nexport class TransactionMonitoringReportComponent implements OnInit {\r\n dataMap: Record<string, TransactionMonitoringReport[]> = {}\r\n filteredData: Record<string, TransactionMonitoringReport[]> = {}\r\n proxyData: Record<string, TransactionMonitoringReport[]> = {}\r\n showReport: boolean;\r\n paginationArray: any[];\r\n selectedExportOption = 'excel';\r\n gridApis: GridApi[] = [];\r\n gridColumnApi;\r\n user: string = \"\";\r\n reportDate: string;\r\n fromDate: string;\r\n toDate: 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 = \"Transaction Monitoring\";\r\n leftData: Record<string, string>;\r\n metaDataTwo: Record<string, string>;\r\n exportService: GenericExportService = inject(GenericExportService);\r\n searchCriteria: [string, string][] = [];\r\n initialFilters: any;\r\n\r\n // flags\r\n showMessage: boolean = false;\r\n noDataFound: boolean = false;\r\n isFormValid: boolean = false;\r\n\r\n columnDefs: ColDef<TransactionMonitoringReport>[] = [\r\n { field: 'businessDateTime', headerName: 'Business Date', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 70, wrapText: true, autoHeight: true, tooltipField: 'businessDateTime' },\r\n { field: 'transactionDateTime', headerName: 'Transaction Date', flex: 2, headerClass: 'ag-left-aligned-header', minWidth: 100, wrapText: true, autoHeight: true, tooltipField: 'transactionDateTime' },\r\n { field: 'transactionNumber', headerName: 'Transaction Number', flex: 1.8, headerClass: 'ag-left-aligned-header', minWidth: 90, wrapText: true, autoHeight: true, cellClass: 'ag-left-cols-cell compact-cell-transaction', tooltipField: 'transactionNumber' },\r\n { field: 'product', headerName: 'Product', flex: 0.5, headerClass: 'ag-left-aligned-header', minWidth: 60, wrapText: true, autoHeight: true, tooltipField: 'product' },\r\n { field: 'sendAgentCode', headerName: 'SendClient Code', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 90, wrapText: true, autoHeight: true, tooltipField: 'sendAgentCode' },\r\n { field: 'sendAgentBranchCode', headerName: 'SendClient BranchCode', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 90, wrapText: true, autoHeight: true, tooltipField: 'sendAgentBranchCode' },\r\n { field: 'sendAgentBranchName', headerName: 'SendClient BranchName', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 120, wrapText: true, autoHeight: true, tooltipField: 'sendAgentBranchName' },\r\n \r\n { field: 'senderName', headerName: 'Sender Name', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 120, wrapText: true, autoHeight: true, tooltipField: 'senderName' },\r\n { field: 'receiverName', headerName: 'Receiver Name', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 100, wrapText: true, autoHeight: true, tooltipField: 'receiverName' },\r\n { field: 'receiveAgentCode', headerName: 'Receive ClientCode', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 90, wrapText: true, autoHeight: true, tooltipField: 'receiveAgentCode' },\r\n { field: 'payoutCCcode', headerName: 'ReceiveCcy Code', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'payoutCCcode' },\r\n { field: 'payoutAmount', headerName: 'Receive Amount', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 90, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payoutAmount' },\r\n { field: 'payinCCcode', headerName: 'SendCcy Code', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 60, wrapText: true, autoHeight: true, tooltipField: 'payinCCcode' },\r\n { field: 'payinAmount', headerName: 'Send Amount', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payinAmount' },\r\n { field: 'transactionCommissionAmount', headerName: 'Service Fee', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 70, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'transactionCommissionAmount' },\r\n { field: 'tax', headerName: 'Tax', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 60, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'tax' },\r\n { field: 'totalPayinAmount', headerName: 'Total Send Amount', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 100, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'totalPayinAmount' },\r\n { field: 'txnStatusDateAndTime', headerName: 'Txn Status Date & Time', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 100, wrapText: true, autoHeight: true, tooltipField: 'txnStatusDateAndTime' }\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: TransactionMonitoringReport[] = [];\r\n\r\n constructor(private reportService: ReportService, private ngZone: NgZone,private route: ActivatedRoute) { }\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 const params = this.route.snapshot.queryParams;\r\n console.log(\"params length:\" + Object.keys(params).length)\r\n \r\n if (Object.keys(params).length > 0) {\r\n this.initialFilters = {\r\n transactionStatus: params['transactionStatus'],\r\n receiveCountry: params['receiveCountry'],\r\n toDate: params['toDate'],\r\n fromDate: params['fromDate'],\r\n isRealtime: params['isRealtime'] === 'true' || params['isRealtime'] === true\r\n };\r\n } else {\r\n this.initialFilters = null;\r\n }\r\n }\r\n\r\n filter(text: string) {\r\n this.searchText = text;\r\n if (this.searchText == null) {\r\n return;\r\n }\r\n if (this.searchText?.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 if (a == null) {\r\n return false;\r\n }\r\n\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 = \"Transaction Monitoring\";\r\n const reportTimeFormatter = this.dateValueFormatter('dd/MM/yyyy hh:mm a');\r\n const metadata: [string, string][] = [\r\n ['Report Period ', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time', this.user ? this.user + \" @ \" + this.reportDate : '' + \" @ \" + this.reportDate],\r\n ];\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n const columns = this.columnDefs;\r\n // const data = this.dataMap; \r\n const data: Record<string, any[]> = {};\r\n\r\n Object.entries(this.dataMap).forEach(([status, rows]) => {\r\n const count = rows.length;\r\n const newKey = `${status} - ${count}`;\r\n data[newKey] = rows;\r\n });\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: [],\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, searchCriteria, columns, data, options });\r\n break;\r\n case 'pdf':\r\n this.exportService.exportToPdf({ title, metadata, searchCriteria, columns, data, options });\r\n break;\r\n case 'csv':\r\n this.exportService.exportToCsv({ title, metadata, searchCriteria, 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 statusOrderMap: any = {\r\n PendingAuthorisation: 1,\r\n Confirmed: 2,\r\n InAMLReview: 3,\r\n InProcess: 3,\r\n AMLRejected: 4,\r\n Decline: 4,\r\n Submitted: 5,\r\n Dispatched: 6,\r\n Paid: 7,\r\n BankRejected: 8,\r\n StopApproved: 9,\r\n ReadytoCancel: 10,\r\n Cancelled: 11,\r\n PaidCancelled: 12,\r\n Void: 13,\r\n Rejected: 14\r\n };\r\n\r\n statusOrderComparator = (a: any, b: any): number => {\r\n const orderA = this.statusOrderMap[a.key] ?? 20;\r\n const orderB = this.statusOrderMap[b.key] ?? 20;\r\n return orderA - orderB;\r\n };\r\n handleSearch(criteria: any): void {\r\n this.searchCriteria = criteria.searchCriteria;\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 // this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10);\r\n //this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10);\r\n this.fromDate = modal.fromDate\r\n ? formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10)\r\n : null;\r\n\r\n this.toDate = modal.toDate\r\n ? formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10)\r\n : null;\r\n \r\n console.log(modal);\r\n // Code For Meta Data\r\n this.leftData = {\r\n // 'Report Period': this.fromDate + \" - \" + this.toDate,\r\n 'Report Period': this.fromDate && this.toDate\r\n ? `${this.fromDate} - ${this.toDate}`\r\n : ''\r\n }\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.user + \" @ \" + 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 \"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 \"IsrealTime\": criteria.isRealtime\r\n };\r\n this.showMessage = true;\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getTransactionMonitoringReport(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 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 handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n [initialFilters]=\"initialFilters\"\r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\">\r\n</lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<section *ngIf=\"showReport && isFormValid\" class=\"my-2\">\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\" [metaDataTwo]=\"metaDataTwo\"(exportEvent)=\"handleExport($event)\" (searchEvent)=\"filter($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\">\r\n <!-- <ng-container *ngFor=\"let item of filteredData | keyvalue; let i = index\"> -->\r\n <ng-container *ngFor=\"let item of filteredData | keyvalue: statusOrderComparator; 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 }} - {{item.value.length\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 { 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\nimport { AccountingReportComponent } from './components/accounting-report/accounting-report.component';\r\nimport { CreditLimitStatusEnquiryReportComponent } from './components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component';\r\nimport { FundingReportComponent } from './components/funding-report/funding-report.component';\r\n\r\nimport { TrialBalanceAccountsReportComponent } from './components/trial-balance-accounts-report/trial-balance-accounts-report.component';\r\nimport { BranchActivitySendSummaryReportComponent } from './components/branch-activity-send-summary-report/branch-activity-send-summary-report.component';\r\nimport { TransactionMonitoringReportComponent } from './components/transaction-monitoring-report/transaction-monitoring-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 CreditLimitStatusEnquiryReportComponent,\r\n FundingReportComponent,\r\n TrialBalanceAccountsReportComponent,\r\n BranchActivitySendSummaryReportComponent,\r\n TransactionMonitoringReportComponent\r\n\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 FundingReportComponent,\r\n CreditLimitStatusEnquiryReportComponent,\r\n TrialBalanceAccountsReportComponent,\r\n BranchActivitySendSummaryReportComponent ,\r\n TransactionMonitoringReportComponent\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 TransactionCount: number;\r\n payinCCcode: string;\r\n IsTotalRow:boolean\r\n isTotalRow: boolean;\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","export class CreditLimitStatusEnquiryReportModel {\r\n agentName: string;\r\n createdDate: string;\r\n authorisationDate: string;\r\n requestCreatedDate: string;\r\n authorisedDate: string;\r\n requestNumber: number;\r\n currencyCode: string;\r\n agentCode: string;\r\n creditLimit: number;\r\n requestTCLAmount: number;\r\n requestStatus: string;\r\n authorisingUserId: string;\r\n creditTransferNo: number;\r\n requestingUserId: string;\r\n authorisingUser: string;\r\n requestingUser: string;\r\n requestDescription: string;\r\n}\r\n\r\nexport class CreditLimitEnquiryBusinessPartnerAgentModel {\r\n name: string;\r\n businessPartnerType: string;\r\n code: string;\r\n id: number;\r\n sortOrder: number;\r\n}\r\n\r\n","export class TransactionMonitoringRequestDomainModel {\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 BranchActivityReportDictionay{\r\n \r\n// }\r\n\r\nexport class TransactionMonitoringReport {\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 TxnStatusDateAndTime:string;\r\n SendAgentCode:string;\r\n SendAgentBranchName:string;\r\n SenderName:string;\r\n ReceiverName:string;\r\n\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\nexport * from './lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component';\r\nexport * from './lib/components/funding-report/funding-report.component';\r\nexport * from './lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component';\r\nexport * from './lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component';\r\nexport * from './lib/components/transaction-monitoring-report/transaction-monitoring-report.component';\r\n\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'\r\nexport * from './lib/models/credit-limit-status-enquiry-report/credit-limit-status-enquiry.model';\r\nexport * from './lib/models/statement-of-account-report/statement-of-accounts.model';\r\nexport * from './lib/models/trial-balance-accounts-report/trial-balance-accounts.models'\r\nexport * from './lib/models/transaction-monitoring-report/transaction-monitoring-report-request-domain-model'\r\nexport * from './lib/models/transaction-monitoring-report/transaction-monitoring-report'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ConfigService","i1","i3","i1.ReportService","i3.ConfigService","i4","i5","i6","i8.LoaderComponent","i1.ExportService","i2.ReportService","i7.PageSizeSelectorComponent","i8.MetadataComponent","i9.LoaderComponent","i10.SearchFilterComponent","i2.ExportService","i6.PageSizeSelectorComponent","i7.MetadataComponent","i9.SearchFilterComponent","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/models/component-loading-states.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/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/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.ts","../../../projects/reports-lib/src/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.html","../../../projects/reports-lib/src/lib/components/funding-report/funding-report.component.ts","../../../projects/reports-lib/src/lib/components/funding-report/funding-report.component.html","../../../projects/reports-lib/src/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.ts","../../../projects/reports-lib/src/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.html","../../../projects/reports-lib/src/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.ts","../../../projects/reports-lib/src/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.html","../../../projects/reports-lib/src/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.ts","../../../projects/reports-lib/src/lib/components/transaction-monitoring-report/transaction-monitoring-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/lib/models/credit-limit-status-enquiry-report/credit-limit-status-enquiry.model.ts","../../../projects/reports-lib/src/lib/models/transaction-monitoring-report/transaction-monitoring-report-request-domain-model.ts","../../../projects/reports-lib/src/lib/models/transaction-monitoring-report/transaction-monitoring-report.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\nimport { TrialBalanceReport } from '../models/trial-balance-accounts-report/trial-balance-accounts.models';\r\nimport { TransactionMonitoringRequestDomainModel } from '../models/transaction-monitoring-report/transaction-monitoring-report-request-domain-model';\r\nimport { TransactionMonitoringReport } from '../models/transaction-monitoring-report/transaction-monitoring-report';\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 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(data: any): Observable<TransactionData[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/viewReport`;\r\n return this.http.post(url, data).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 // Trial Balance - Accounts Report\r\n\r\n // Api 1 - Get Trial Balance - Accounts report\r\n getTrialBalanceAccountsReport(object: any): Observable<TrialBalanceReport> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetTrialBalanceAccountsReport`;\r\n return this.http.post<TrialBalanceReport>(apiPath, object).pipe(\r\n map(response => response || undefined)\r\n );\r\n }\r\n\r\n // Api 2 - Get Business Unit\r\n GetBusinessUnitForTrialBalanceAccountsReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetBusinessUnit`;\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 Account Status\r\n GetAccountStatusForTrialBalanceAccountsReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetAccountStatus`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n\r\n // Api 4 - Get Date Type\r\n GetDateTypeForTrialBalanceAccountsReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetDateType`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n\r\n // Api 5 - Get Year\r\n GetYearForTrialBalanceAccountsReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetFinancialYear`;\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 From Months\r\n GetFromMonthsForTrialBalanceAccountsReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetFromMonths`;\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 To Months\r\n GetToMonthsForTrialBalanceAccountsReport(year: number, month: number): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetToMonths/${year}/${month}`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n\r\n // Api 8 - Get From Dates\r\n GetFromDatesForTrialBalanceAccountsReport(year: number, fromMonthLabel: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetFromDates/${year}/${fromMonthLabel}`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n\r\n // Api 9 - Get To Dates\r\n GetToDatesForTrialBalanceAccountsReport(object: any): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetToDates`;\r\n return this.http.post(apiPath, object).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n\r\n // Api 10 - Get Currencies\r\n GetCurrenciesForTrialBalanceAccountsReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetCurrencies`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n\r\n // Api 11 - Get default month,year\r\n GetParamDateDefaultForTrialBalanceAccountsReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetParamDateDefault`;\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 //Credit Limit Status Enquiry Report APIs\r\n getClientsForCreditLimitStatusEnquiryReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/CreditLimitStatusEnquiry/GetBusinessPartners`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n \r\n getTransactionTypesForCreditLimitStatusEnquiryReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/CreditLimitStatusEnquiry/GetTransactionStatus`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getCreditLimitStatusEnquiryReport(model: any): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/CreditLimitStatusEnquiry/GetCreditLimitStatusEnquiryReport`;\r\n return this.http.post(apiPath, model).pipe(map(response => {\r\n return <any[]>response;\r\n }))\r\n }\r\n //Funding Report\r\n getFundingReport(criteria: any): Observable<any> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/Funding/viewReport`;\r\n return this.http.post(url, criteria).pipe(\r\n map(response => response || {})\r\n );\r\n }\r\n\r\n //Branch Activity Send Summary Report\r\n getPayInAgentforSendSummaryReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/SendSummaryReport/GetAllPayInAgents`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n \r\n getBranchByAgentForSendSummaryReport(code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/SendSummaryReport/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 getParamsForSendSummaryReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/SendSummaryReport/GetBranchActivitySendSummaryReportParams`;\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 getBranchActivitySendSummaryReport(data: BranchActivitySendReportRequestDomainModel | any): Observable<Record<string, BranchActivityReport[]>> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/SendSummaryReport/GetBranchActivitySendSummaryReport`;\r\n return this.http.post(apiPath, data).pipe(map(response => {\r\n return <Record<string, BranchActivityReport[]>>response;\r\n }));\r\n }\r\n//Transaction monitoring Report.\r\n \r\n getParamsForTransactionMonitoringReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TransactionMonitoringReport/TransactionMonitoringReportParams`;\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 getBranchByAgentForTransactionMonitoringReport(code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TransactionMonitoringReport/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 getPayInAgentforTransactionMonitoringReport(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TransactionMonitoringReport/GetAllPayInAgents`;\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 getTransactionMonitoringReport(data: TransactionMonitoringRequestDomainModel | any): Observable<Record<string, TransactionMonitoringReport[]>> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/TransactionMonitoringReport/GetTransactionMonitoringReport`;\r\n return this.http.post(apiPath, data).pipe(map(response => {\r\n return <Record<string, TransactionMonitoringReport[]>>response;\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 rateFields?: string[],\r\n } = {}): { headers: string[], rows: any[][] } {\r\n const { excludeFields = ['srno'], currencyFields = [], rateFields = [] } = 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\r\n if (rateFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(8);\r\n }\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][], searchCriteria: [string, string][], headers: string[], rows: any[][], fileName: string): Promise<void> {\r\n let doc;\r\n doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: [400, 210] });\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 const marginLeft = 15;\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 // --- draw search criteria heading ---\r\n doc.setFont('helvetica', 'bold');\r\n doc.text('Search Criteria:-', marginLeft, currentY);\r\n currentY += 8;\r\n\r\n const rowHeightPerLine = 6;\r\n const minGap = 2; // gap between key and value\r\n const betweenColumnsGap = 15; // gap between left and right columns (you can tune this)\r\n const pageContentWidth = doc.internal.pageSize.width - 2 * marginLeft;\r\n\r\n // --- helper function to measure total width of a key-value pair ---\r\n const measurePairWidth = (key: string, value: string): number => {\r\n doc.setFont('helvetica', 'bold');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n const valueWidth = doc.getTextWidth(value);\r\n return keyWidth + minGap + valueWidth;\r\n };\r\n\r\n // --- calculate max width of left column pairs dynamically ---\r\n let maxLeftPairWidth = 0;\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n const width = measurePairWidth(key, value);\r\n if (width > maxLeftPairWidth) maxLeftPairWidth = width;\r\n }\r\n }\r\n\r\n // --- compute where right column should start ---\r\n const leftColumnStart = marginLeft;\r\n const rightColumnStart = leftColumnStart + maxLeftPairWidth + betweenColumnsGap;\r\n\r\n // --- print search criteria dynamically ---\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n let maxLineCount = 1;\r\n\r\n // Left column\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, leftColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = leftColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n // Right column\r\n if (searchCriteria[i + 1]) {\r\n const [key, value] = searchCriteria[i + 1];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, rightColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = rightColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n currentY += rowHeightPerLine;\r\n }\r\n\r\n const columnCount = headers.length;\r\n const tableWidth = pageWidth - (this.pdfLeftMargin * 2);\r\n const equalWidth = tableWidth / columnCount;\r\n\r\n const columnStyles: { [key: number]: any } = {};\r\n headers.forEach((_, i) => {\r\n columnStyles[i] = { cellWidth: equalWidth };\r\n });\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 const pageCount = doc.internal.getNumberOfPages();\r\n for (let i = 1; i <= pageCount; i++) {\r\n doc.setFont(\"helvetica\", \"bold\");\r\n doc.setPage(i);\r\n doc.setFontSize(9);\r\n doc.setTextColor(100);\r\n\r\n const footerY = doc.internal.pageSize.height - 6;\r\n\r\n doc.text(\r\n `Page ${i} of ${pageCount}`,\r\n pageWidth - 15,\r\n footerY,\r\n { align: 'right' }\r\n );\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][], searchCriteria: [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 // --- search criteria heading ---\r\n worksheet.mergeCells(currentRow, 1, currentRow, 6);\r\n worksheet.getCell(currentRow, 1).value = 'Search Criteria:-';\r\n worksheet.getCell(currentRow, 1).font = { bold: true };\r\n currentRow += 2;\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1]; // may be undefined\r\n const row = worksheet.getRow(currentRow++);\r\n\r\n // Left cell\r\n worksheet.mergeCells(row.number, 1, row.number, 3);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: (left?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: left?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(1).alignment = { wrapText: true, vertical: 'middle' };\r\n\r\n // Right cell (only if present)\r\n if (right) {\r\n worksheet.mergeCells(row.number, 4, row.number, 6);\r\n row.getCell(4).value = {\r\n richText: [\r\n { text: (right?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: right?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(4).alignment = { wrapText: true, vertical: 'middle' };\r\n }\r\n }\r\n currentRow++;\r\n //============================================================\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][], searchCriteria: [string, string][], headers: string[], rows: any[][], fileName: string): void {\r\n const escapeCsv = (value: any) => {\r\n if (value === null || value === undefined) return '';\r\n const str = value.toString();\r\n return str.includes(',') || str.includes('\"') || str.includes('\\n')\r\n ? `\"${str.replace(/\"/g, '\"\"')}\"`\r\n : str;\r\n };\r\n\r\n const metaRows = metadata.map(([k, v]) => [`${k} ${v}`]);\r\n\r\n // --- Build search criteria section ---\r\n const searchLines: string[] = [];\r\n if (searchCriteria?.length) {\r\n searchLines.push('Search Criteria:-');\r\n\r\n const maxLeftLength = Math.max(...searchCriteria.map(([k, v]) => (k + ' ' + v).length));\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1];\r\n\r\n const leftText = left ? `${left[0]} ${left[1]}`.padEnd(maxLeftLength + 5, ' ') : '';\r\n const rightText = right ? `${right[0]} ${right[1]}` : '';\r\n\r\n searchLines.push(`\"${leftText}${rightText}\"`); // wrap in quotes for single CSV cell\r\n }\r\n searchLines.push(''); // blank line after criteria\r\n }\r\n\r\n // --- Combine all parts ---\r\n const csvContent = [\r\n [title].join(','),\r\n ...metaRows.map(e => e.join(',')),\r\n '',\r\n ...searchLines, // ✅ this block is column-independent\r\n headers.join(','),\r\n ...rows.map(row => row.map(value => escapeCsv(value)).join(','))\r\n ].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, searchCriteria, columns, data, options = {} }: {\r\n title: string;\r\n metadata: [string, string][];\r\n searchCriteria: [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 pageWidth = doc.internal.pageSize.width;\r\n const pageHeight = doc.internal.pageSize.height;\r\n const marginLeft = 15;\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 // --- draw search criteria heading ---\r\n doc.setFont('helvetica', 'bold');\r\n doc.text('Search Criteria:-', marginLeft, currentY);\r\n currentY += 8;\r\n\r\n const rowHeightPerLine = 6;\r\n const minGap = 2; // gap between key and value\r\n const betweenColumnsGap = 15; // gap between left and right columns (you can tune this)\r\n const pageContentWidth = doc.internal.pageSize.width - 2 * marginLeft;\r\n\r\n // --- helper function to measure total width of a key-value pair ---\r\n const measurePairWidth = (key: string, value: string): number => {\r\n doc.setFont('helvetica', 'bold');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n const valueWidth = doc.getTextWidth(value);\r\n return keyWidth + minGap + valueWidth;\r\n };\r\n\r\n // --- calculate max width of left column pairs dynamically ---\r\n let maxLeftPairWidth = 0;\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n const width = measurePairWidth(key, value);\r\n if (width > maxLeftPairWidth) maxLeftPairWidth = width;\r\n }\r\n }\r\n\r\n // --- compute where right column should start ---\r\n const leftColumnStart = marginLeft;\r\n const rightColumnStart = leftColumnStart + maxLeftPairWidth + betweenColumnsGap;\r\n\r\n // --- print search criteria dynamically ---\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n let maxLineCount = 1;\r\n\r\n // Left column\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, leftColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = leftColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n // Right column\r\n if (searchCriteria[i + 1]) {\r\n const [key, value] = searchCriteria[i + 1];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, rightColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = rightColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n currentY += rowHeightPerLine;\r\n }\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 didParseCell: function (data) {\r\n\r\n // Check if this row contains 'Total'\r\n const rowValues = data.row.cells;\r\n\r\n const isTotalRow = Object.values(rowValues).some(\r\n (cell: any) => cell.raw === 'Total'\r\n );\r\n\r\n if (isTotalRow) {\r\n data.cell.styles.fontStyle = 'bold';\r\n data.cell.styles.fontSize = 10; \r\n }\r\n },\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 const pageCount = (doc as any).internal.getNumberOfPages();\r\n for (let i = 1; i <= pageCount; i++) {\r\n doc.setFont(\"helvetica\", \"bold\");\r\n doc.setPage(i);\r\n doc.setFontSize(9);\r\n doc.setTextColor(100);\r\n\r\n const footerY = pageHeight - 6;\r\n\r\n doc.text(\r\n `Page ${i} of ${pageCount}`,\r\n pageWidth - 15,\r\n footerY,\r\n { align: 'right' }\r\n );\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 searchCriteria,\r\n columns,\r\n data,\r\n options = {}\r\n }: {\r\n title: string;\r\n metadata: [string, string][];\r\n searchCriteria: [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 worksheet.mergeCells(currentRow, 1, currentRow, 6);\r\n worksheet.getCell(currentRow, 1).value = 'Search Criteria:-';\r\n worksheet.getCell(currentRow, 1).font = { bold: true };\r\n currentRow += 2;\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1]; // may be undefined\r\n const row = worksheet.getRow(currentRow++);\r\n\r\n // Left cell\r\n worksheet.mergeCells(row.number, 1, row.number, 3);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: (left?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: left?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(1).alignment = { wrapText: true, vertical: 'middle' };\r\n\r\n // Right cell (only if present)\r\n if (right) {\r\n worksheet.mergeCells(row.number, 4, row.number, 6);\r\n row.getCell(4).value = {\r\n richText: [\r\n { text: (right?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: right?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(4).alignment = { wrapText: true, vertical: 'middle' };\r\n }\r\n }\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 searchCriteria,\r\n columns,\r\n data,\r\n options = {}\r\n }: {\r\n title: string;\r\n metadata: [string, string][];\r\n searchCriteria: [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, ''];\r\n\r\n //=======================================================\r\n csv.push('Search Criteria:-');\r\n\r\n const maxLeftLength = Math.max(...searchCriteria.map(([k, v]) => (k + ' ' + v).length));\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1];\r\n\r\n const leftText = left ? `${left[0]} ${left[1]}`.padEnd(maxLeftLength + 5, ' ') : '';\r\n const rightText = right ? `${right[0]} ${right[1]}` : '';\r\n\r\n csv.push(`\"${leftText}${rightText}\"`); // wrap in quotes for single CSV cell\r\n }\r\n\r\n csv.push(''); // blank line after criteria\r\n\r\n // --- Headers ---\r\n csv.push(headers.join(','));\r\n //========================================================\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","export enum ComponentLoadingStates {\r\n Error = -1,\r\n Loading = 0,\r\n Complete = 1,\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: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>\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 clientType: string;\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}\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 products: Product[];\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, ChangeDetectorRef } 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, finalize, map, switchMap } from 'rxjs/operators';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { ConfigService } from '../../services/config.service';\r\nimport { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\nimport * as angularCommon from '@angular/common';\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 @Output() formValid = new EventEmitter<boolean>();\r\n searchForm!: FormGroup;\r\n @Input() initialFilters: any;\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 summaryReportTypes: any[] = [];\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 disabledDate: NgbDateStruct;\r\n isSelectAllChecked = true;\r\n erroMessage: string = 'Error in Loading Data';\r\n\r\n // for Trial Balance - Accounts Report\r\n businessUnits: any[] = [];\r\n accountStatuses: any[] = [];\r\n currency: any[] = [];\r\n financialYears: any[] = [];\r\n fromMonths: any[] = [];\r\n toMonths: any[] = [];\r\n dateTypes: any[] = [];\r\n fromDays: any[] = [];\r\n toDays: any[] = [];\r\n paramDateDefault: any[] = [];\r\n\r\n // Field visibility map, 'fromDate', 'toDate','product','userId','currency','transactionStatus','transactionNo'\r\n visibleFieldsMap: { [report: string]: string[] } = {\r\n 'Transaction Enquiry': ['client', 'fromDate', 'toDate', 'branch', 'product', 'currency', 'transactionStatus', 'transactionNo'],\r\n 'FC Ledger': ['client', 'fromDate', 'toDate', 'currency', 'product'],\r\n 'Branch Activity Send': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', '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 'Credit Limit Status Enquiry': ['client', 'fromDate', 'toDate', 'transactionStatusSingleSelect'],\r\n 'Funding': ['fromDate', 'toDate'],\r\n 'Trial Balance - Accounts': ['businessUnit', 'accountStatus', 'currency', 'financialYear', 'fromMonth', 'toMonth', 'dateTypeForTrialBalanceAccounts', 'fromDay', 'toDay'],\r\n 'Branch Activity Send Summary': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'receiveCurrency', 'transactionStatus', 'sendCountry', 'receiveCountry', 'summaryReport'],\r\n\r\n 'Transaction Monitoring': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'receiveCurrency', 'transactionStatus', 'sendCountry', 'receiveCountry'],\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 private cd: ChangeDetectorRef\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 const today = new Date();\r\n this.disabledDate = {\r\n year: today.getFullYear(),\r\n month: today.getMonth() + 1,\r\n day: today.getDate()\r\n };\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 this.transactionStatusSubscribe();\r\n }\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n this.transactionStatusSubscribe();\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 this.transactionStatusSubscribe();\r\n }\r\n if (this.ReportName === \"Revenue Per Transaction\") {\r\n this.initializeForm()\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n this.transactionStatusSubscribe();\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 this.subscribeToDateChanges();\r\n this.transactionStatusSubscribe();\r\n }\r\n if (this.ReportName === \"Credit Limit Status Enquiry\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n }\r\n if (this.ReportName == \"Funding\") {\r\n this.initializeForm();\r\n this.subscribeToDateChanges();\r\n }\r\n if (this.ReportName == \"Trial Balance - Accounts\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n }\r\n if (this.ReportName == \"Branch Activity Send Summary\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n this.transactionStatusSubscribe();\r\n }\r\n if (this.ReportName == \"Transaction Monitoring\") {\r\n this.initializeForm();\r\n this.loadInitialData();\r\n this.subscribeToDateChanges();\r\n this.transactionStatusSubscribe();\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 if (this.ReportName == \"Trial Balance - Accounts\") {\r\n this.loadInitialDataForTrialBalanceAccounts();\r\n }\r\n\r\n if (this.ReportName === \"Credit Limit Status Enquiry\") {\r\n this.loadInitialDataForCreditLimitStatusEnquiry();\r\n }\r\n if (this.ReportName == \"Branch Activity Send Summary\") {\r\n this.loadInitialDataforBranchActivitySendSummary();\r\n }\r\n if (this.ReportName == \"Transaction Monitoring\") {\r\n this.loadInitialDataforTransactionMonitoring();\r\n }\r\n }\r\n\r\n loadInitialDataforBranchActivitySendSummary() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n forkJoin({\r\n params: this.reportService.getParamsForSendSummaryReport().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.getPayInAgentforSendSummaryReport().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 clientType: \"\"\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 this.summaryReportTypes = [\r\n { label: 'Date-Wise Summary', value: 'Date-Wise Summary' },\r\n { label: 'Total Summary', value: 'Total Summary' }\r\n ];\r\n\r\n this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode });\r\n this.onClientChange();\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.loadingState = ComponentLoadingState.Complete;\r\n }\r\n }\r\n );\r\n }\r\n \r\n loadInitialDataforTransactionMonitoring() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n forkJoin({\r\n params: this.reportService.getParamsForTransactionMonitoringReport().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.getPayInAgentforTransactionMonitoringReport().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 clientType: \"\"\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\r\n this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode });\r\n if (this.initialFilters) {\r\n //patch data\r\n this.applyInitialFilters();\r\n }\r\n\r\n\r\n this.onClientChange();\r\n // AUTO LOAD ONLY for routed case\r\n if (this.initialFilters) {\r\n this.onSearch();\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.loadingState = ComponentLoadingState.Complete;\r\n }\r\n }\r\n );\r\n }\r\n\r\n private applyInitialFilters() {\r\n if (!this.initialFilters) return;\r\n const patch: any = {};\r\n // Transaction Status (STRING → ARRAY)\r\n if (this.initialFilters.transactionStatus) {\r\n patch.transactionStatus = [this.initialFilters.transactionStatus];\r\n }\r\n\r\n // Receive Country\r\n if (this.initialFilters.receiveCountry) {\r\n patch.receiveCountry = this.initialFilters.receiveCountry;\r\n }\r\n\r\n // Realtime handling\r\n if (this.initialFilters.isRealtime) {\r\n\r\n patch.fromDate = '';\r\n patch.toDate = '';\r\n //clear\r\n this.searchForm.get('fromDate')?.clearValidators();\r\n this.searchForm.get('toDate')?.clearValidators();\r\n\r\n } else {\r\n\r\n // Only override if values exist (VERY IMPORTANT)\r\n if (this.initialFilters.toDate) {\r\n patch.toDate = this.initialFilters.toDate;\r\n }\r\n if (this.initialFilters.fromDate) {\r\n patch.fromDate = this.initialFilters.fromDate;\r\n }\r\n\r\n this.searchForm.get('fromDate')?.setValidators(Validators.required);\r\n this.searchForm.get('toDate')?.setValidators(Validators.required);\r\n\r\n }\r\n\r\n // Single patch call (avoids multiple triggers)\r\n this.searchForm.patchValue(patch, { emitEvent: false });\r\n this.searchForm.get('fromDate')?.updateValueAndValidity({ emitEvent: false });\r\n this.searchForm.get('toDate')?.updateValueAndValidity({ emitEvent: false });\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 product: [null, Validators.required],\r\n currency: ['All'],\r\n transactionStatus: [['All'], Validators.required],\r\n transactionNo: ['']\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 if (this.ReportName === \"Credit Limit Status 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 transactionStatus: ['All', Validators.required],\r\n }\r\n );\r\n }\r\n if (this.ReportName == \"Funding\") {\r\n this.searchForm = this.fb.group(\r\n {\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 if (this.ReportName == \"Trial Balance - Accounts\") {\r\n this.searchForm = this.fb.group(\r\n {\r\n // Added fields\r\n businessUnit: ['All'],\r\n accountStatus: [['Active']],\r\n financialYear: [new Date().getFullYear().toString()], // default to current year\r\n fromMonth: [''],\r\n toMonth: [''],\r\n dateType: ['VD'], // example default\r\n fromDay: [null, Validators.required],\r\n toDay: [{ value: null, disabled: true }, Validators.required],\r\n currency: ['All'],\r\n\r\n }\r\n );\r\n\r\n this.reportService.GetParamDateDefaultForTrialBalanceAccountsReport().subscribe({\r\n next: (response) => {\r\n let financialMonth: string = response[0].financialMonth;\r\n console.log(`financialMonth in init form of Trial Balance - Accounts: ${financialMonth}`);\r\n this.searchForm.patchValue({\r\n fromMonth: financialMonth,\r\n toMonth: financialMonth\r\n });\r\n }, error: (err) => { console.error('Error fetching data:', err); }\r\n });\r\n }\r\n if (this.ReportName == \"Branch Activity Send Summary\") {\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 summaryReport: ['Date-Wise Summary']\r\n });\r\n }\r\n if (this.ReportName == \"Transaction Monitoring\") {\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\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,\r\n clientType: \"\"\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\r\n this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode});\r\n this.onClientChange();\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.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.products = data.products || [];\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 this.searchForm.patchValue({ product: 'All' });\r\n\r\n this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode});\r\n await this.onClientChange();\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 clientType: \"\"\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\r\n this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode});\r\n this.onClientChange();\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.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) => ({\r\n businessPartnerName: agent.agent,\r\n businessPartnerCode: agent.code\r\n }));\r\n this.products = (data.productTypes ?? []).map((pt) => ({\r\n productCode: pt.productCode,\r\n productName: pt.name\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 this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode});\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 this.searchForm.patchValue({\r\n sendBusinessPartner: this.sendBusinessPartnerAgents[0].id,\r\n recvBusinessPartner: this.recvBusinessPartnerAgents[0].id\r\n });\r\n\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\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.correlationId,\r\n displayOrder: index,\r\n clientType: \"\"\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 this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode});\r\n this.onClientChange();\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 }\r\n });\r\n\r\n }\r\n\r\n loadInitialDataForCreditLimitStatusEnquiry() {\r\n const $agents = this.reportService.getClientsForCreditLimitStatusEnquiryReport();\r\n const $status = this.reportService.getTransactionTypesForCreditLimitStatusEnquiryReport();\r\n this.loadingState = ComponentLoadingState.Loading;\r\n forkJoin({\r\n agents: $agents.pipe(\r\n map((clients: any[]): Client[] =>\r\n clients.map((client, index) => ({\r\n businessPartnerName: client.name,\r\n businessPartnerCode: client.code,\r\n displayOrder: index,\r\n clientType: \"\"\r\n }))\r\n )\r\n ),\r\n status: $status\r\n }).subscribe({\r\n next: ({ agents, status }) => {\r\n this.clients1 = agents;\r\n this.searchForm.patchValue({ client: this.clients1[0].businessPartnerCode });\r\n this.transactionStatuses = status;\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n console.error('Unexpected forkJoin error', err);\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n\r\n })\r\n }\r\n loadInitialDataForTrialBalanceAccounts() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n\r\n forkJoin({\r\n businessUnits: this.reportService.GetBusinessUnitForTrialBalanceAccountsReport()\r\n .pipe(catchError(err => of([]))),\r\n accountStatuses: this.reportService.GetAccountStatusForTrialBalanceAccountsReport()\r\n .pipe(catchError(err => of([]))),\r\n dateTypes: this.reportService.GetDateTypeForTrialBalanceAccountsReport()\r\n .pipe(catchError(err => of([]))),\r\n financialYears: this.reportService.GetYearForTrialBalanceAccountsReport()\r\n .pipe(catchError(err => of([]))),\r\n fromMonths: this.reportService.GetFromMonthsForTrialBalanceAccountsReport()\r\n .pipe(catchError(err => of([]))),\r\n currency: this.reportService.GetCurrenciesForTrialBalanceAccountsReport()\r\n .pipe(catchError(err => of([]))),\r\n paramDateDefault: this.reportService.GetParamDateDefaultForTrialBalanceAccountsReport()\r\n .pipe(catchError(err => of([])))\r\n })\r\n .pipe(\r\n switchMap(results => {\r\n // assign base results\r\n this.businessUnits = results.businessUnits;\r\n this.accountStatuses = results.accountStatuses;\r\n this.dateTypes = results.dateTypes;\r\n this.financialYears = results.financialYears\r\n .sort((a, b) => Number(a.financialYear) - Number(b.financialYear));\r\n this.fromMonths = results.fromMonths;\r\n this.currencies = results.currency;\r\n this.paramDateDefault = results.paramDateDefault;\r\n\r\n // resolve year/month for fromDays & toMonths\r\n const year = +(new Date().getFullYear());\r\n const month = this.paramDateDefault[0].financialMonth;\r\n\r\n const selectedPMonth = this.searchForm.get('fromMonth')?.value;\r\n const fromMonthObj = this.fromMonths.find(m => m.pOrder === selectedPMonth);\r\n const fromMonthLabel = fromMonthObj?.period;\r\n\r\n // first call fromDays with year/month\r\n return this.reportService.GetFromDatesForTrialBalanceAccountsReport(\r\n year, fromMonthLabel\r\n ).pipe(\r\n catchError(err => of([])),\r\n switchMap(fromDays => {\r\n this.fromDays = fromDays;\r\n this.searchForm.patchValue({\r\n fromDay: this.paramDateDefault[0]?.tDate,\r\n });\r\n\r\n const financialYear = this.searchForm.get('financialYear')?.value;\r\n const fromMonth = this.searchForm.get('fromMonth')?.value;\r\n const toMonth = this.searchForm.get('toMonth')?.value;\r\n const fromDay = this.searchForm.get('fromDay')?.value;\r\n\r\n const requestPayload = {\r\n Year: financialYear,\r\n FromMonth: fromMonth,\r\n ToMonth: toMonth,\r\n FromDate: fromDay // assuming fromDay is already a Date or ISO string\r\n };\r\n\r\n // now chain to: toDays + toMonths\r\n return forkJoin({\r\n toDays: this.reportService.GetToDatesForTrialBalanceAccountsReport(requestPayload)\r\n .pipe(catchError(err => of([]))),\r\n toMonths: this.reportService.GetToMonthsForTrialBalanceAccountsReport(year, month)\r\n .pipe(catchError(err => of([])))\r\n }).pipe(\r\n map(extra => ({ ...results, fromDays, ...extra }))\r\n );\r\n })\r\n );\r\n })\r\n )\r\n .subscribe({\r\n next: (allResults) => {\r\n this.toDays = allResults.toDays;\r\n this.toMonths = allResults.toMonths;\r\n\r\n // patch form defaults\r\n this.searchForm.patchValue({\r\n businessUnit: this.businessUnits[0]?.companyCode ?? null,\r\n accountStatus: this.accountStatuses.length ? [this.accountStatuses[0].statusCode] : [],\r\n financialYear: this.paramDateDefault[0]?.financialYear ?? new Date().getFullYear().toString(),\r\n fromMonth: this.paramDateDefault[0]?.financialMonth,\r\n toMonth: this.paramDateDefault[0]?.financialMonth,\r\n dateType: this.dateTypes[0]?.dateTypeCode ?? 'VD',\r\n fromDay: this.fromDays[0]?.tDate,\r\n toDay: this.toDays.find(d => d.isToday)?.value ?? new Date().getDate(),\r\n currency: this.currency[0]?.currencyCode ?? 'All'\r\n });\r\n },\r\n error: (err) => {\r\n console.error('Failed to load Trial Balance dropdown data', err);\r\n this.loadingState = ComponentLoadingState.Error;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\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 const maxToDate = new Date(fromDate);\r\n maxToDate?.setDate(fromDate.getDate() + 30);\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 // setTimeout(() => toDateControl?.patchValue(maxToDate.toISOString().split(\"T\")[0]));\r\n this.cd.detectChanges();\r\n }\r\n this.disabledDate = this.toNgbDateStruct(fromDate);\r\n // setTimeout(() => this.disabledDate = this.toNgbDateStruct(fromDate));\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 this.disabledDate = this.toNgbDateStruct(fromDate);\r\n const minFromDate = new Date(toDate);\r\n minFromDate?.setDate(toDate.getDate() - 30);\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 this.cd.detectChanges();\r\n }\r\n\r\n if (fromDate.setHours(0, 0, 0, 0) > toDate.setHours(0, 0, 0, 0)) {\r\n fromDateControl?.patchValue(minFromDate.toISOString().split(\"T\")[0]);\r\n this.cd.detectChanges();\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 clientType: c.clientType\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 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 this.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\r\n try {\r\n await Promise.all([\r\n this.loadBranchesByAgent(selectedClient)\r\n ]);\r\n this.loadingState = ComponentLoadingState.Complete;\r\n } catch (err) {\r\n this.errorMessage = 'Failed to load branch';\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\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.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\r\n this.reportService.getBranchByAgent(selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\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.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\r\n this.reportService.getBranchActivityReceivePayoutAgentBranch(selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\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 this.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\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 }\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 const selectedClient = this.clients1.find(c => c.businessPartnerCode === ClientId);\r\n this.clientName = selectedClient?.businessPartnerName || '';\r\n this.clientType = selectedClient?.clientType || '';\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n\r\n // accounting report\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\r\n this.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\r\n this.reportService.getBranchByAgentForAccountingReport(this.currentUser, selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (this.ReportName == \"Branch Activity Send\") {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n this.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\r\n this.reportService.getBranchByAgent(selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n },\r\n error: (err) => {\r\n throw err;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n });\r\n }\r\n }\r\n if (this.ReportName == \"Transaction Monitoring\") {\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n if (!selectedClient) return;\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\r\n this.reportService.getBranchByAgentForTransactionMonitoringReport(selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n });\r\n }\r\n }\r\n if (this.ReportName == \"Branch Activity Send Summary\") {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n this.branches = [];\r\n if (selectedClient === 'All') {\r\n this.branches = [{\r\n businessPartnerBranch: 'All',\r\n businessPartnerBranch_CorrelationId: 'All',\r\n branchCode: 'All',\r\n bank: 'All',\r\n number: 1\r\n }];\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n else {\r\n this.reportService.getBranchByAgentForSendSummaryReport(selectedClient).subscribe({\r\n next: (data) => {\r\n this.branches = data;\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n },\r\n error: (err) => {\r\n throw err;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\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 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 this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\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 this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n\r\n if (this.ReportName == \"ACC GL Details Enquiry\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\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.formValid.emit(true);\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 this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\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 this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\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 this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\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 this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\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 this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n\r\n if (this.ReportName === \"Credit Limit Status Enquiry\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n if (this.ReportName == \"Funding\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n if (this.ReportName == \"Trial Balance - Accounts\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n if (this.ReportName == \"Branch Activity Send Summary\")\r\n {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n if (this.ReportName == \"Transaction Monitoring\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n this.formValid.emit(false);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.formValid.emit(true);\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n }\r\n\r\n private buildSearchCriteria(): any {\r\n\r\n const formValue = this.searchForm.value;\r\n const fromDate = new Date(formValue.fromDate);\r\n const toDate = new Date(formValue.toDate);\r\n\r\n const formatDate = (d: Date) => {\r\n const day = String(d.getDate()).padStart(2, \"0\");\r\n const month = String(d.getMonth() + 1).padStart(2, \"0\");\r\n const year = d.getFullYear();\r\n return `${day}/${month}/${year}`;\r\n };\r\n\r\n const searchCriteria = this.getSearchCriteriaArray();\r\n\r\n if (this.ReportName == \"Transaction Enquiry\") {\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 reportPeriod: `${formatDate(fromDate)} - ${formatDate(toDate)}`,\r\n searchCriteria: searchCriteria\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 const searchCriteria: [string, string][] = [\r\n ['Client:', this.clients1.find(c => c.businessPartnerCode === formValue.client)?.businessPartnerName || ''],\r\n ['Transaction Status:', formValue.transactionStatus.join(\",\")],\r\n ['Branch:', this.branches.find(b => b.branchCode === formValue.branch)?.businessPartnerBranch || ''],\r\n ['Product:', formValue.product],\r\n ['From Date:', angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Receive Currency:', this.currencies.find(c => c.currencyCode === formValue.receiveCurrency)?.currency || ''],\r\n ['To Date:', angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Send Country:', this.countries.find(c => c.countryCode === formValue.sendCountry)?.country || ''],\r\n ['Receive Country:', this.countries.find(c => c.countryCode === formValue.receiveCountry)?.country || ''],\r\n ];\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser,\r\n searchCriteria: searchCriteria\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 const searchCriteria: [string, string][] = [\r\n ['Client:', this.clients1.find(c => c.businessPartnerCode === formValue.client)?.businessPartnerName || ''],\r\n ['Transaction Status:', formValue.transactionStatus.join(\",\")],\r\n ['Branch:', this.branches.find(b => b.branchCode === formValue.branch)?.businessPartnerBranch || ''],\r\n ['Product:', formValue.product],\r\n ['From Date:', angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Receive Currency:', this.currencies.find(c => c.currencyCode === formValue.receiveCurrency)?.currency || ''],\r\n ['To Date:', angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Send Country:', this.countries.find(c => c.countryCode === formValue.sendCountry)?.country || ''],\r\n ['Receive Country:', this.countries.find(c => c.countryCode === formValue.receiveCountry)?.country || ''],\r\n ];\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser,\r\n searchCriteria: searchCriteria\r\n }\r\n }\r\n\r\n if (this.ReportName == \"Cancellation 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 const searchCriteria: [string, string][] = [\r\n ['Client:', this.clients1.find(c => c.businessPartnerCode === formValue.client)?.businessPartnerName || ''],\r\n ['Branch:', this.branches.find(b => b.branchCode === formValue.branch)?.businessPartnerBranch || ''],\r\n ['Product:', formValue.product],\r\n ['From Date:', angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Receive Currency:', this.currencies.find(c => c.currencyCode === formValue.receiveCurrency)?.currency || ''],\r\n ['To Date:', angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Send Country:', this.countries.find(c => c.countryCode === formValue.sendCountry)?.country || ''],\r\n ['Receive Country:', this.countries.find(c => c.countryCode === formValue.receiveCountry)?.country || ''],\r\n\r\n ];\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser,\r\n reportPeriod: `${formatDate(fromDate)} - ${formatDate(toDate)}`,\r\n searchCriteria: searchCriteria\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 const searchCriteria: [string, string][] = [\r\n ['Sender Partner:', this.sendBusinessPartnerAgents.find(c => c.id === formValue.sendBusinessPartner)?.name || ''],\r\n ['Receive Partner:', this.recvBusinessPartnerAgents.find(c => c.id === formValue.recvBusinessPartner)?.name || ''],\r\n ['Send Country:', this.countries.find(c => c.countryCode === formValue.sendCountry)?.country || ''],\r\n ['Receive Country:', this.countries.find(c => c.countryCode === formValue.receiveCountry)?.country || ''],\r\n ['From Date:', angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['To Date:', angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Transaction Status:', formValue.transactionStatus.join(\",\")],\r\n ];\r\n return {\r\n modal: formValue,\r\n sysUserId: this.currentUser,\r\n searchCriteria: searchCriteria\r\n }\r\n }\r\n\r\n if (this.ReportName == \"Statement of Accounts\") {\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 clientType: this.clientType,\r\n sysUserID: this.currentUser,\r\n clientName: this.clientName,\r\n reportPeriod: `${formatDate(fromDate)} - ${formatDate(toDate)}`,\r\n searchCriteria: searchCriteria\r\n }\r\n }\r\n\r\n if (this.ReportName == \"Accounting\") {\r\n const formValue = this.searchForm.value;\r\n const searchCriteria = [\r\n ['Client:', this.clients1.find(c => c.businessPartnerCode === formValue.client)?.businessPartnerName || ''],\r\n ['Transaction Status:', formValue.transactionStatus.join(\",\")],\r\n ['Branch:', this.branches.find(b => b.branchCode === formValue.branch)?.businessPartnerBranch || ''],\r\n ['Product:', this.transactionProducts.find(t => t.productCode === formValue.product)?.name || ''],\r\n ['From Date:', angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Send Currency:', this.currencies.find(c => c.currencyCode === formValue.currency)?.currency || ''],\r\n ['To Date:', angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Send Country:', this.countries.find(c => c.countryCode === formValue.sendCountry)?.country || ''],\r\n ['Receive Country:', this.countries.find(c => c.countryCode === formValue.receiveCountry)?.country || ''],\r\n ];\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 searchCriteria: searchCriteria\r\n };\r\n }\r\n\r\n if (this.ReportName === \"Credit Limit Status Enquiry\") {\r\n const clientCode = this.searchForm.controls['client'].value;\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 formValue.client = this.clients1.find(c => c.businessPartnerCode === clientCode)?.businessPartnerName || '';\r\n const searchCriteria: [string, string][] = [\r\n ['Client:', this.clients1.find(c => c.businessPartnerCode === clientCode)?.businessPartnerName || ''],\r\n ['Transaction status:', formValue.transactionStatus],\r\n ['From Date:', angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['To Date:', angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ];\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser,\r\n searchCriteria: searchCriteria\r\n }\r\n }\r\n if (this.ReportName == \"Funding\") {\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser,\r\n reportPeriod: `${formatDate(fromDate)} - ${formatDate(toDate)}`,\r\n searchCriteria: searchCriteria\r\n };\r\n }\r\n if (this.ReportName == \"Trial Balance - Accounts\") {\r\n const formValue = this.searchForm.value;\r\n const dateRange = this.prepareFromDateAndToDateForTrialBalanceAccountReport();\r\n return {\r\n modal: {\r\n ...formValue,\r\n fromDate: dateRange.fromDate,\r\n toDate: dateRange.toDate,\r\n },\r\n sysUserID: this.currentUser\r\n };\r\n\r\n }\r\n if (this.ReportName == \"Branch Activity Send Summary\")\r\n {\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 const searchCriteria: [string, string][] = [\r\n ['Client:', this.clients1.find(c => c.businessPartnerCode === formValue.client)?.businessPartnerName || ''],\r\n ['Transaction Status:', formValue.transactionStatus.join(\",\")],\r\n ['Branch:', this.branches.find(b => b.branchCode === formValue.branch)?.businessPartnerBranch || ''],\r\n ['Product:', formValue.product],\r\n ['From Date:', angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Receive Currency:', this.currencies.find(c => c.currencyCode === formValue.receiveCurrency)?.currency || ''],\r\n ['To Date:', angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Send Country:', this.countries.find(c => c.countryCode === formValue.sendCountry)?.country || ''],\r\n ['Receive Country:', this.countries.find(c => c.countryCode === formValue.receiveCountry)?.country || ''],\r\n ['Summary Report:', formValue.summaryReport], \r\n ];\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser,\r\n searchCriteria: searchCriteria\r\n }\r\n }\r\n if (this.ReportName == \"Transaction Monitoring\") {\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 if (this.initialFilters?.isRealtime && (formValue.fromDate == '' && formValue.toDate == '')) {\r\n formValue.fromDate = null;\r\n formValue.toDate = null;\r\n } else {\r\n formValue.fromDate = this.toIsoFormat(fromDate);\r\n formValue.toDate = this.toIsoFormat(toDate);\r\n if (this.initialFilters?.isRealtime) {\r\n this.initialFilters.isRealtime = false;\r\n }\r\n \r\n }\r\n const searchCriteria: [string, string][] = [\r\n ['Client:', this.clients1.find(c => c.businessPartnerCode === formValue.client)?.businessPartnerName || ''],\r\n ['Transaction Status:', formValue.transactionStatus.join(\",\")],\r\n ['Branch:', this.branches.find(b => b.branchCode === formValue.branch)?.businessPartnerBranch || ''],\r\n ['Product:', formValue.product],\r\n ['From Date:', this.initialFilters?.isRealtime ? '' : angularCommon.formatDate(this.toIsoFormat(formValue.fromDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Receive Currency:', this.currencies.find(c => c.currencyCode === formValue.receiveCurrency)?.currency || ''],\r\n ['To Date:', this.initialFilters?.isRealtime ? '' : angularCommon.formatDate(this.toIsoFormat(formValue.toDate), 'dd/MM/yyyy', 'en-US')],\r\n ['Send Country:', this.countries.find(c => c.countryCode === formValue.sendCountry)?.country || ''],\r\n ['Receive Country:', this.countries.find(c => c.countryCode === formValue.receiveCountry)?.country || ''],\r\n ];\r\n return {\r\n modal: formValue,\r\n sysUserID: this.currentUser,\r\n isRealtime: this.initialFilters?.isRealtime,\r\n searchCriteria: searchCriteria\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 currencySearch = (term: string, item: any) => {\r\n term = term.toLowerCase();\r\n return (\r\n item.currencyCode.toLowerCase().includes(term)\r\n );\r\n };\r\n\r\n toNgbDateStruct(fromDate: Date): NgbDateStruct {\r\n return {\r\n year: fromDate.getFullYear(),\r\n month: fromDate.getMonth() + 1,\r\n day: fromDate.getDate()\r\n };\r\n }\r\n\r\n transactionStatusSubscribe() {\r\n this.searchForm.get('transactionStatus').valueChanges.subscribe((val) => {\r\n const allStatus = this.transactionStatuses\r\n .map((status) => status.transactionStatus);\r\n\r\n if (val.includes('All')) {\r\n if (this.isSelectAllChecked) {\r\n const filteredStatus = val.filter(s => s !== 'All');\r\n this.searchForm.get('transactionStatus')\r\n .setValue(filteredStatus, { emitEvent: false });\r\n this.isSelectAllChecked = false;\r\n } else {\r\n this.searchForm.get('transactionStatus')\r\n .setValue(['All'], { emitEvent: false });\r\n this.isSelectAllChecked = true;\r\n }\r\n }\r\n\r\n })\r\n }\r\n\r\n handleDateChange() {\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 this.disabledDate = this.toNgbDateStruct(fromDate);\r\n });\r\n }\r\n\r\n\r\n // ** for trial balance accounting report - \r\n\r\n onSelectFromMonth() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n const year = +this.searchForm.get('financialYear')?.value;\r\n const fromMonth = +this.searchForm.get('fromMonth')?.value;\r\n\r\n if (!year || !fromMonth) {\r\n return;\r\n }\r\n\r\n this.reportService.GetToMonthsForTrialBalanceAccountsReport(year, fromMonth)\r\n .pipe(catchError(err => of([])))\r\n .subscribe((toMonths) => {\r\n this.toMonths = toMonths;\r\n\r\n // update \"toMonth\" form control with default (first option)\r\n this.searchForm.patchValue({\r\n toMonth: this.toMonths[0]?.pMonth ?? \"\"\r\n });\r\n this.loadingState = ComponentLoadingState.Complete;\r\n });\r\n\r\n // on select fromMonth goes call to fromDay\r\n\r\n const financialYear = +this.searchForm.get('financialYear')?.value;\r\n const selectedPMonth = this.searchForm.get('fromMonth')?.value;\r\n const fromMonthObj = this.fromMonths.find(m => m.pOrder === selectedPMonth);\r\n const fromMonthLabel = fromMonthObj?.period;\r\n this.reportService.GetFromDatesForTrialBalanceAccountsReport(financialYear, fromMonthLabel)\r\n .subscribe(\r\n (fromDays) => {\r\n this.fromDays = fromDays;\r\n this.searchForm.patchValue({ fromDay: undefined })\r\n this.searchForm.patchValue({ toDay: \"\" })\r\n this.searchForm.get('toDay')?.disable();\r\n },\r\n (error) => {\r\n console.error('Error while fetching To Days:', error);\r\n }\r\n );\r\n\r\n }\r\n\r\n onSelectFromDay() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n const currentToDayValue = this.searchForm.get('toDay')?.value;\r\n const currentToDayObject = this.toDays.find(d => d.individualDate === currentToDayValue)\r\n\r\n const financialYear = this.searchForm.get('financialYear')?.value;\r\n const fromMonth = this.searchForm.get('fromMonth')?.value;\r\n const toMonth = this.searchForm.get('toMonth')?.value;\r\n const fromDay = this.searchForm.get('fromDay')?.value;\r\n\r\n const requestPayload = {\r\n Year: financialYear,\r\n FromMonth: fromMonth,\r\n ToMonth: toMonth,\r\n FromDate: fromDay\r\n };\r\n\r\n this.reportService.GetToDatesForTrialBalanceAccountsReport(requestPayload)\r\n .pipe(\r\n finalize(() => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n })\r\n )\r\n .subscribe(\r\n (toDays) => {\r\n this.toDays = toDays;\r\n\r\n if (this.searchForm.get('fromMonth')?.value != this.searchForm.get('toMonth')?.value && this.searchForm.get('toDay')?.value) {\r\n const matchedToDayObject = this.toDays.find(d => d.pDate === currentToDayObject.pDate);\r\n this.searchForm.patchValue({\r\n toDay: matchedToDayObject.individualDate ?? \"\"\r\n });\r\n } else {\r\n this.searchForm.patchValue({\r\n toDay: this.toDays[0]?.individualDate ?? \"\"\r\n });\r\n }\r\n this.searchForm.get('toDay')?.enable();\r\n\r\n },\r\n (error) => {\r\n console.error('Error fetching To Days:', error);\r\n window.alert('Error fetching To Days');\r\n this.toDays = [];\r\n this.searchForm.get('toDay')?.patchValue(\"\");\r\n },\r\n () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n );\r\n }\r\n\r\n\r\n onSelectToMonth() {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n\r\n const currentToDayValue = this.searchForm.get('toDay')?.value;\r\n\r\n const financialYear = this.searchForm.get('financialYear')?.value;\r\n const fromMonth = this.searchForm.get('fromMonth')?.value;\r\n const toMonth = this.searchForm.get('toMonth')?.value;\r\n const fromDay = this.searchForm.get('fromDay')?.value;\r\n\r\n if (!financialYear || !fromMonth || !toMonth || !fromDay) {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n return;\r\n }\r\n\r\n const requestPayload = {\r\n Year: financialYear,\r\n FromMonth: fromMonth,\r\n ToMonth: toMonth,\r\n FromDate: fromDay\r\n };\r\n\r\n this.reportService.GetToDatesForTrialBalanceAccountsReport(requestPayload)\r\n .subscribe(\r\n (toDays) => {\r\n this.toDays = toDays;\r\n\r\n if (this.searchForm.get('fromMonth')?.value === this.searchForm.get('toMonth')?.value) {\r\n const fromDay = this.searchForm.get('fromDay')?.value;\r\n const fromDayObject = this.fromDays.find(d => d.individualDate === fromDay);\r\n const toDayObject = this.toDays.find(d => d.pDate === fromDayObject?.individualDay);\r\n\r\n this.searchForm.patchValue({\r\n toDay: toDayObject?.individualDate ?? \"\"\r\n });\r\n } else {\r\n this.searchForm.patchValue({\r\n toDay: this.toDays[0].individualDate\r\n });\r\n }\r\n },\r\n\r\n (error) => {\r\n console.error('Error fetching To Days:', error);\r\n window.alert('Error fetching To Days:');\r\n this.toDays = [];\r\n this.searchForm.get('toDay')?.patchValue(\"\");\r\n },\r\n () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n );\r\n }\r\n\r\n onSelectFinancialYear() {\r\n // on financialYear change fromday and today should change to default values acocrding to year and frommonth,tomonth -\r\n\r\n this.loadingState = ComponentLoadingState.Loading;\r\n\r\n // call fromDays\r\n\r\n const financialYear = +this.searchForm.get('financialYear')?.value;\r\n\r\n const selectedPMonth = this.searchForm.get('fromMonth')?.value;\r\n const fromMonthObj = this.fromMonths.find(m => m.pOrder === selectedPMonth);\r\n const fromMonthLabel = fromMonthObj?.period;\r\n\r\n this.reportService.GetFromDatesForTrialBalanceAccountsReport(financialYear, fromMonthLabel)\r\n .subscribe(\r\n (fromDays) => {\r\n this.fromDays = fromDays;\r\n this.searchForm.patchValue({ fromDay: undefined })\r\n this.searchForm.patchValue({ toDay: \"\" })\r\n this.searchForm.get('toDay')?.disable();\r\n },\r\n (error) => {\r\n console.error('Error while fetching To Days:', error);\r\n }\r\n );\r\n\r\n const fromMonth = this.searchForm.get('fromMonth')?.value;\r\n const toMonth = this.searchForm.get('toMonth')?.value;\r\n const fromDay = this.searchForm.get('fromDay')?.value;\r\n\r\n const requestPayload = {\r\n Year: financialYear,\r\n FromMonth: fromMonth,\r\n ToMonth: toMonth,\r\n FromDate: fromDay\r\n };\r\n\r\n this.reportService.GetToDatesForTrialBalanceAccountsReport(requestPayload)\r\n .subscribe(\r\n (toDays) => {\r\n this.toDays = toDays;\r\n\r\n if (this.searchForm.get('fromMonth')?.value === this.searchForm.get('toMonth')?.value) {\r\n const fromDay = this.searchForm.get('fromDay')?.value;\r\n const fromDayObject = this.fromDays.find(d => d.individualDate === fromDay);\r\n const toDayObject = this.toDays.find(d => d.pDate === fromDayObject?.individualDay);\r\n\r\n this.searchForm.patchValue({\r\n toDay: toDayObject?.individualDate ?? \"\"\r\n });\r\n } else {\r\n this.searchForm.patchValue({\r\n toDay: \"\"\r\n });\r\n this.searchForm.get('toDay')?.disable();\r\n }\r\n },\r\n\r\n (error) => {\r\n console.error('Error fetching To Days:', error);\r\n window.alert('Error fetching To Days:');\r\n this.toDays = [];\r\n this.searchForm.get('toDay')?.patchValue(\"\");\r\n },\r\n () => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n );\r\n }\r\n\r\n\r\n\r\n prepareFromDateAndToDateForTrialBalanceAccountReport() {\r\n const financialYear = +this.searchForm.get('financialYear')?.value;\r\n const fromMonth = this.searchForm.get('fromMonth')?.value;\r\n const toMonth = this.searchForm.get('toMonth')?.value;\r\n\r\n const selectedFromDay = this.searchForm.get('fromDay')?.value;\r\n const fromDayObj = this.fromDays.find(m => m.individualDate === selectedFromDay);\r\n const fromDay = fromDayObj?.individualDay;\r\n\r\n const selectedToDay = this.searchForm.get('toDay')?.value;\r\n const toDayObj = this.toDays.find(m => m.individualDate === selectedToDay);\r\n const toDay = toDayObj?.pDate;\r\n\r\n const fromDate = new Date(financialYear, +fromMonth - 1, +fromDay); // JS month is 0-based\r\n const toDate = new Date(financialYear, +toMonth - 1, +toDay);\r\n\r\n return {\r\n fromDate: fromDate,\r\n toDate: toDate\r\n };\r\n }\r\n\r\n // ----------------- Improved search criteria helpers (handles product) -----------------\r\n\r\n private fieldLabelMap: Record<string, string> = {\r\n client: 'Client:',\r\n branch: 'Branch:',\r\n fromDate: 'From Date:',\r\n toDate: 'To Date:',\r\n product: 'Product:',\r\n transactionProduct: 'Product:',\r\n userId: 'User:',\r\n currency: 'Currency:',\r\n sendCurrency: 'Send Currency:',\r\n receiveCurrency: 'Receive Currency:',\r\n transactionStatus: 'Txn. Status:',\r\n transactionStatusSingleSelect: 'Txn. Status:',\r\n transactionNo: 'Txn. Number:',\r\n date: 'Date:',\r\n dateType: 'Date Type:',\r\n valueDate: 'Value Date:',\r\n sendCountry: 'Send Country:',\r\n receiveCountry: 'Receive Country:',\r\n sendBusinessPartner: 'Sender Partner:',\r\n recvBusinessPartner: 'Receiver Partner:',\r\n businessUnit: 'Business Unit:',\r\n financialYear: 'Financial Year:',\r\n fromMonth: 'From Month:',\r\n toMonth: 'To Month:',\r\n fromDay: 'From Day:',\r\n toDay: 'To Day:',\r\n accountStatus: 'Account Status:',\r\n // add more mappings as needed\r\n };\r\n\r\n // map visible field name -> actual form control name (when they differ)\r\n private fieldToControlMap: Record<string, string> = {\r\n transactionStatusSingleSelect: 'transactionStatus',\r\n transactionProduct: 'product', // important: transactionProduct UI uses form control named 'product'\r\n // add other mappings if visibleField name differs from the form control name\r\n };\r\n\r\n // maps to use bindLabel / bindValue for lookups\r\n private fieldBindLabelMap: Record<string, string> = {\r\n client: 'businessPartnerName',\r\n branch: 'businessPartnerBranch',\r\n product: 'productCode',\r\n transactionProduct: 'productCode',\r\n transactionStatus: 'transactionStatus',\r\n transactionStatusSingleSelect: 'transactionStatus',\r\n userId: 'userName',\r\n currency: 'currency',\r\n sendCurrency: 'currency',\r\n receiveCurrency: 'currency',\r\n sendBusinessPartner: 'name',\r\n recvBusinessPartner: 'name',\r\n businessUnit: 'businessUnit',\r\n financialYear: 'financialYear',\r\n fromMonth: 'period',\r\n toMonth: 'pMonthName',\r\n fromDay: 'individualDay',\r\n toDay: 'pDate',\r\n accountStatus: 'statusName'\r\n };\r\n\r\n private fieldBindValueMap: Record<string, string> = {\r\n client: 'businessPartnerCode',\r\n branch: 'branchCode',\r\n product: 'productCode',\r\n transactionProduct: 'productCode',\r\n transactionStatus: 'transactionStatus',\r\n transactionStatusSingleSelect: 'transactionStatus',\r\n userId: 'userId',\r\n currency: 'currencyCode',\r\n sendCurrency: 'currencyCode',\r\n receiveCurrency: 'currencyCode',\r\n sendBusinessPartner: 'id',\r\n recvBusinessPartner: 'id',\r\n businessUnit: 'businessUnit',\r\n financialYear: 'financialYear',\r\n fromMonth: 'pOrder',\r\n toMonth: 'pMonth',\r\n fromDay: 'individualDate',\r\n toDay: 'individualDate',\r\n accountStatus: 'statusCode'\r\n };\r\n\r\n private formatDateToDDMMYYYY(d: string | Date | null | undefined): string {\r\n if (!d) return '';\r\n const date = (typeof d === 'string' && d.length) ? new Date(d) : (d instanceof Date ? d : new Date(d));\r\n if (isNaN(date.getTime())) return '';\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const year = date.getFullYear();\r\n return `${day}/${month}/${year}`;\r\n }\r\n\r\n /** helper to find item in the known lists by bindValue and return its bindLabel\r\n * improved: tries multiple fallback value keys so product lookup is robust */\r\n private lookupFromListByField(field: string, scalarValue: any): string {\r\n const bindLabel = this.fieldBindLabelMap[field];\r\n const bindValue = this.fieldBindValueMap[field];\r\n\r\n // choose candidate list based on field\r\n let list: any[] | undefined;\r\n switch (field) {\r\n case 'client': list = this.clients1; break;\r\n case 'branch': list = this.branches; break;\r\n case 'product': list = this.products; break;\r\n case 'transactionProduct': list = this.transactionProducts; break;\r\n case 'transactionStatus':\r\n case 'transactionStatusSingleSelect': list = this.transactionStatuses; break;\r\n case 'userId': list = this.users; break;\r\n case 'sendBusinessPartner': list = this.sendBusinessPartnerAgents; break;\r\n case 'recvBusinessPartner': list = this.recvBusinessPartnerAgents; break;\r\n case 'businessUnit': list = this.businessUnits; break;\r\n case 'financialYear': list = this.financialYears; break;\r\n case 'fromMonth': list = this.fromMonths; break;\r\n case 'toMonth': list = this.toMonths; break;\r\n case 'fromDay': list = this.fromDays; break;\r\n case 'toDay': list = this.toDays; break;\r\n case 'accountStatus': list = this.accountStatuses; break;\r\n case 'sendCountry':\r\n case 'receiveCountry': list = this.countries; break;\r\n case 'currency':\r\n case 'sendCurrency':\r\n case 'receiveCurrency': list = this.currencies; break;\r\n default: list = undefined;\r\n }\r\n\r\n // handle common 'All' sentinel\r\n if (scalarValue === 'All' || scalarValue === '' || scalarValue === null || scalarValue === undefined) return String(scalarValue || '');\r\n\r\n if (list && list.length) {\r\n // try the configured bindValue key first\r\n if (bindValue) {\r\n const found = list.find((x: any) => String(x[bindValue]) === String(scalarValue));\r\n if (found) {\r\n if (bindLabel && found[bindLabel]) return found[bindLabel];\r\n return found.transactionStatusLabel || found.transactionStatus || found.name || found.productName || found.businessPartnerName || String(scalarValue);\r\n }\r\n }\r\n\r\n // fallback: try matching on common keys in case shapes differ\r\n const commonKeys = ['productCode', 'code', 'id', 'value', 'currencyCode', 'statusCode'];\r\n for (const key of commonKeys) {\r\n const found2 = list.find((x: any) => x && x[key] !== undefined && String(x[key]) === String(scalarValue));\r\n if (found2) {\r\n const labelCandidate = bindLabel && found2[bindLabel] ? found2[bindLabel] : (found2.productName || found2.name || found2.transactionStatusLabel || found2.businessPartnerName);\r\n return labelCandidate || String(scalarValue);\r\n }\r\n }\r\n\r\n // last attempt: if scalarValue equals a label in the list, return it\r\n if (bindLabel) {\r\n const found3 = list.find((x: any) => String(x[bindLabel]) === String(scalarValue));\r\n if (found3) return String(found3[bindLabel]);\r\n }\r\n }\r\n\r\n // not found — return scalar as string\r\n return String(scalarValue);\r\n }\r\n\r\n // --- lookup that prefers bindLabel when possible ---\r\n private getLookupDisplayValue(field: string, value: any): string {\r\n if (value === null || value === undefined || value === '') return '';\r\n\r\n // Date handling\r\n if (field === 'fromDate' || field === 'toDate' || field === 'date' || field === 'valueDate') {\r\n return this.formatDateToDDMMYYYY(value);\r\n }\r\n\r\n // Currencies: show \"CODE - Name\"\r\n if (['currency', 'sendCurrency', 'receiveCurrency'].includes(field)) {\r\n if (value === 'All') return 'All';\r\n if (typeof value === 'object') {\r\n const code = value.currencyCode || value.currency || '';\r\n const name = value.currency || '';\r\n return code ? `${code} - ${name}` : String(value);\r\n }\r\n const cur = this.currencies?.find((x: any) => x.currencyCode === value);\r\n return cur ? `${cur.currencyCode} - ${cur.currency}` : String(value);\r\n }\r\n\r\n // If it's an array (multi-select), map each item\r\n if (Array.isArray(value)) {\r\n const mapped = value.map(v => {\r\n if (typeof v === 'object') {\r\n const bindLabel = this.fieldBindLabelMap[field];\r\n return bindLabel && v[bindLabel] ? v[bindLabel] : (v.transactionStatusLabel || v.statusName || v.productName || v.name || JSON.stringify(v));\r\n }\r\n return this.lookupFromListByField(field, v);\r\n });\r\n if (mapped.length === 1 && (mapped[0] === 'All' || mapped[0] === '')) return 'All';\r\n return mapped.join(', ');\r\n }\r\n\r\n // If value is an object (single select returned object)\r\n if (typeof value === 'object') {\r\n // product special-case: product object might have productName/productCode\r\n if (field === 'product' || field === 'transactionProduct') {\r\n const pn = value.productName || value.name || value.label || value.display || value.product || value.transactionProduct;\r\n if (pn) return pn;\r\n // try common keys\r\n return value.productCode || value.code || value.id ? String(value.productCode || value.code || value.id) : JSON.stringify(value);\r\n }\r\n\r\n const bindLabel = this.fieldBindLabelMap[field];\r\n if (bindLabel && value[bindLabel]) return value[bindLabel];\r\n return value.transactionStatus || value.name || value.businessPartnerName || JSON.stringify(value);\r\n }\r\n\r\n // Scalar -> lookup in lists using bindValue -> return bindLabel\r\n // product special-case: if value === 'All' then return 'All'\r\n if ((field === 'product' || field === 'transactionProduct') && String(value) === 'All') return 'All';\r\n\r\n return this.lookupFromListByField(field, value);\r\n }\r\n\r\n /**\r\n * Returns search criteria array for the currently visible fields.\r\n * Output: [ ['Label:', 'Value'], ... ]\r\n */\r\n public getSearchCriteriaArray(): [string, string][] {\r\n if (!this.searchForm) return [];\r\n\r\n const criteria: [string, string][] = [];\r\n const formValue = this.searchForm.value;\r\n const fields = this.visibleFields; // uses your getter\r\n\r\n fields.forEach(field => {\r\n const label = this.fieldLabelMap[field] || (field + ':');\r\n const controlName = this.fieldToControlMap[field] || field;\r\n const value = formValue[controlName];\r\n\r\n // dates\r\n if (controlName === 'fromDate' || controlName === 'toDate' || controlName === 'date' || controlName === 'valueDate') {\r\n criteria.push([label, this.formatDateToDDMMYYYY(value) || '']);\r\n return;\r\n }\r\n\r\n // Use getLookupDisplayValue to produce the human-friendly string (handles arrays/objects/scalars)\r\n const display = this.getLookupDisplayValue(field, value);\r\n\r\n criteria.push([label, display || '']);\r\n });\r\n\r\n return criteria;\r\n }\r\n\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 [ngClass]=\"{'invalid-select': searchForm.get('client')?.invalid && (searchForm.get('client')?.touched || formValidationError)}\"\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 </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 [ngClass]=\"{'invalid-select': searchForm.get('branch')?.invalid && (searchForm.get('branch')?.touched || formValidationError)}\"\r\n (change)=\"onBranchChange()\" (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\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 </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 [ngClass]=\"{'invalid-date':searchForm.get('fromDate')?.invalid && (searchForm.get('fromDate')?.touched || formValidationError)}\" />\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\" [minDate]=\"disabledDate\"\r\n autocomplete=\"off\"\r\n [ngClass]=\"{'invalid-date':searchForm.get('toDate')?.invalid && (searchForm.get('toDate')?.touched || formValidationError)}\" />\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 [ngClass]=\"{'invalid-select': searchForm.get('userId')?.invalid && (searchForm.get('userId')?.touched || formValidationError)}\">\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\" [searchable]=\"true\" [searchFn]=\"currencySearch\"\r\n (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n\r\n <!-- Template for dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div\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\" [searchable]=\"true\" [searchFn]=\"currencySearch\"\r\n (open)=\"onOpen()\" (close)=\"onClose()\" [searchable]=\"isOpen\">\r\n\r\n <!-- Template for dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div\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 [ngClass]=\"{'invalid-select': searchForm.get('transactionStatus')?.invalid && (searchForm.get('transactionStatus')?.touched || formValidationError)}\">\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 [ngClass]=\"{'invalid-date':searchForm.get('date')?.invalid && (searchForm.get('date')?.touched || formValidationError)}\" />\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 </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 </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 #dateInput=\"ngbDatepicker\" formControlName=\"date\" autocomplete=\"off\"\r\n [ngClass]=\"{'invalid-date': searchForm.get('date')?.invalid && (searchForm.get('date')?.touched || formValidationError)}\" />\r\n <button class=\"input-group-button cal\" type=\"button\" (click)=\"dateInput.toggle()\">\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 [searchable]=\"true\" [searchFn]=\"currencySearch\" (open)=\"onOpen()\" (close)=\"onClose()\"\r\n [searchable]=\"isOpen\">\r\n\r\n <!-- Dropdown options -->\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div\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\">Send Client<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 [ngClass]=\"{'invalid-select': searchForm.get('sendBusinessPartner')?.invalid && (searchForm.get('sendBusinessPartner')?.touched || formValidationError)}\">\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 Client<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 [ngClass]=\"{'invalid-select': searchForm.get('recvBusinessPartner')?.invalid && (searchForm.get('recvBusinessPartner')?.touched || formValidationError)}\">\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 <!-- Transaction Status (Single-select) -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'transactionStatusSingleSelect'\">\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 [items]=\"transactionStatuses\" bindLabel=\"transactionStatus\" bindValue=\"transactionStatus\"\r\n placeholder=\"Select Status\" [clearable]=\"false\" formControlName=\"transactionStatus\" required\r\n [ngClass]=\"{'invalid-select': searchForm.get('transactionStatus')?.invalid && (searchForm.get('transactionStatus')?.touched || formValidationError)}\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- For Trial Balance - Accounts Report -->\r\n\r\n <!-- Business Unit -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'businessUnit'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Business Unit</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"businessUnits\" bindLabel=\"companyFullName\" bindValue=\"companyCode\"\r\n placeholder=\"Select Business Unit\" [clearable]=\"false\" formControlName=\"businessUnit\"\r\n [ngClass]=\"{'invalid-select': searchForm.get('businessUnit')?.invalid && (searchForm.get('businessUnit')?.touched || formValidationError)}\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Year -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'financialYear'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Financial Year</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"financialYears\" bindLabel=\"financialYear\" bindValue=\"financialYear\"\r\n placeholder=\"Select Year\" [clearable]=\"false\" formControlName=\"financialYear\"\r\n [ngClass]=\"{'invalid-select': searchForm.get('financialYear')?.invalid && (searchForm.get('financialYear')?.touched || formValidationError)}\"\r\n (change)=\"onSelectFinancialYear()\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- From Month -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'fromMonth'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">From Month</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"fromMonths\" bindLabel=\"period\" bindValue=\"pOrder\"\r\n placeholder=\"Select From Month\" [clearable]=\"false\" formControlName=\"fromMonth\"\r\n [ngClass]=\"{'invalid-select': searchForm.get('fromMonth')?.invalid && (searchForm.get('fromMonth')?.touched|| formValidationError)}\"\r\n (change)=\"onSelectFromMonth()\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- To Month -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'toMonth'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">To Month</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"toMonths\" bindLabel=\"pMonthName\" bindValue=\"pMonth\"\r\n placeholder=\"Select To Month\" [clearable]=\"false\" formControlName=\"toMonth\"\r\n [ngClass]=\"{'invalid-select': searchForm.get('toMonth')?.invalid && (searchForm.get('toMonth')?.touched|| formValidationError)}\"\r\n (change)=\"onSelectToMonth()\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- From Day -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'fromDay'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">From Day <span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"fromDays\" bindLabel=\"individualDay\" bindValue=\"individualDate\"\r\n placeholder=\"Select From Day\" [clearable]=\"false\" formControlName=\"fromDay\"\r\n [ngClass]=\"{'invalid-select': searchForm.get('fromDay')?.invalid && (searchForm.get('fromDay')?.touched|| formValidationError)}\"\r\n (change)=\"onSelectFromDay()\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- To Day -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'toDay'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">To Day<span style=\"margin-left: 1px;\"\r\n class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"toDays\" bindLabel=\"pDate\" bindValue=\"individualDate\" placeholder=\"Select To Day\"\r\n [clearable]=\"false\" formControlName=\"toDay\"\r\n [ngClass]=\"{'invalid-select': searchForm.get('toDay')?.invalid && (searchForm.get('toDay')?.touched|| formValidationError)}\">\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=\"'dateTypeForTrialBalanceAccounts'\">\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 [items]=\"dateTypes\" bindLabel=\"dateTypeLabel\" bindValue=\"dateTypeCode\"\r\n placeholder=\"Select Date Type\" formControlName=\"dateType\" [clearable]=\"false\" required\r\n [ngClass]=\"{'invalid-select': searchForm.get('dateType')?.invalid && (searchForm.get('dateType')?.touched|| formValidationError)}\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Account Status -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'accountStatus'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Account Status</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select class=\"transaction-status-select\" [items]=\"accountStatuses\" bindLabel=\"statusName\"\r\n bindValue=\"statusCode\" [multiple]=\"true\" placeholder=\"Select Account Status\"\r\n formControlName=\"accountStatus\" [closeOnSelect]=\"false\" [clearable]=\"false\" [searchable]=\"false\"\r\n required\r\n [ngClass]=\"{'invalid-select': searchForm.get('accountStatus')?.invalid && (searchForm.get('accountStatus')?.touched|| formValidationError)}\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input type=\"checkbox\" [checked]=\"item$.selected\" /> {{ item.statusName }}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Summary Report-->\r\n <div class=\"form-field\" *ngSwitchCase=\"'summaryReport'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Summary Report</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"summaryReportTypes\" bindLabel=\"label\" bindValue=\"value\"\r\n [clearable]=\"false\" formControlName=\"summaryReport\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span [title]=\"item.label\">{{ item.label }}</span>\r\n </ng-template>\r\n\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\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 mandatory fields\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\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\n\r\ndeclare module 'jspdf' {\r\n interface jsPDF {\r\n autoTable: (options: any) => jsPDF;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'lib-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 ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n searchCriteria: [string, string][];\r\n isFormValid: boolean = false;\r\n\r\n defaultColDef: ColDef = {\r\n resizable: true,\r\n sortable: true,\r\n filter: true,\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.1, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 60, tooltipField: 'transactionCode' },\r\n { headerName: 'Journal Type', field: 'journalType', flex: 1, 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.1, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 68, tooltipField: 'valueDate' },\r\n { headerName: 'Description', field: 'description', flex: 3, 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.1, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 73, tooltipField: 'accountCode' },\r\n { headerName: 'Ccy', field: 'currency', flex: 1, cellClass: 'ag-left-cols-cell', minWidth: 35, tooltipField: 'currency' },\r\n { headerName: 'Rate', field: 'rate', flex: 1.1, 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.4, 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.loadingState = ComponentLoadingStates.Loading;\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 const DateType = this.dateType === 'VD' ? 'Value Date' : 'Posting Date';\r\n\r\n this.metaDataOne = {\r\n [DateType]: this.currentReportValueOrPostDate,\r\n };\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time ': `${this.reportUser} @ ${this.reportTime}`\r\n };\r\n\r\n this.loadingState = ComponentLoadingStates.Complete;\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 Report`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\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, this.searchCriteria, 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 Report`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\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, this.searchCriteria, 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 Report`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\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, this.searchCriteria, 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.searchCriteria = [\r\n ['Date Type:', `${this.dateTypeFilter === 1 ? 'Value Date' : 'Posting Date'}`],\r\n ['Date:', formatDate(this.date, 'dd/MM/yyyy', 'en-US')],\r\n ];\r\n this.getAccGLDetailsReport();\r\n }\r\n\r\n handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\">\r\n</lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n<div class=\"main-container\">\r\n <div class=\"report-container\"\r\n *ngIf=\"accGlDetailsEnquiryReportModel != undefined && isFormValid && dataReady && accGlDetailsEnquiryReportModel?.journalVoucherEntries?.length!=0\">\r\n <div class=\"main-report\" *ngIf=\"accGlDetailsEnquiryReportModel != undefined && dataReady\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\"\r\n [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"metaDataTwo\" (exportEvent)=\"handleExport($event)\"\r\n (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n <div style=\"position: relative;\" *ngIf=\"rowData && rowData.length > 0\">\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 </ag-grid-angular>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"accGlDetailsEnquiryReportModel?.journalVoucherEntries?.length==0\">\r\n No Data found matching your search criteria.\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, ColumnApi } 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\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 gridColumnApi: ColumnApi;\r\n\r\n token = sessionStorage.getItem('access_token');\r\n applicationType = 'ezremit';\r\n companyCode = 'BH';\r\n serviceUrl: string;\r\n searchCriteria: [string, string][];\r\n\r\n transactionData: TransactionData[] = [];\r\n ReportName = \"Transaction Enquiry\";\r\n metaDataOne: Record<string, string>;\r\n metaDataTwo: Record<string, string>;\r\n filteredData: TransactionData[] = [];\r\n reportUserandTime: string = '';\r\n reportPeriod: string = '';\r\n user: any;\r\n isFormValid: boolean = false;\r\n\r\n // AG Grid Column Definitions\r\n columnDefs: ColDef[] = [\r\n { headerName: 'Product', field: 'product', flex: 1, minWidth: 70, tooltipField: 'product' },\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: 'Transaction Date', field: 'businessDate', flex: 1, minWidth: 75, tooltipField: 'businessDate' },\r\n { headerName: 'Send Client', field: 'sendAgent', flex: 1, minWidth: 120, tooltipField: 'sendAgent' },\r\n { headerName: 'Send Client Branch', field: 'sendAgtBranch', flex: 1, minWidth: 120, tooltipField: 'sendAgtBranch' },\r\n { headerName: 'Receive Client', field: 'recvAgent', flex: 1, minWidth: 120, tooltipField: 'recvAgent' },\r\n { headerName: 'Receive Client Branch', 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 Currency', field: 'payOutCurrency', flex: 1, minWidth: 80, tooltipField: 'payOutCurrency' },\r\n { headerName: 'Receive Amount', field: 'payOutAmount', flex: 1, minWidth: 100, cellClass: 'ag-right-aligned-cell ', tooltipField: 'payOutAmount' },\r\n { headerName: 'Send Currency', field: 'payInCurrency', flex: 1, minWidth: 70, tooltipField: 'payInCurrency' },\r\n { headerName: 'Send Amount', field: 'payInAmount', flex: 1, minWidth: 100, cellClass: 'ag-right-aligned-cell', tooltipField: 'payInAmount' },\r\n { headerName: 'Service Fee', field: 'commission', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', tooltipField: 'commission' },\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: 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 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.user;\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.searchCriteria = criteria.searchCriteria;\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 this.user = criteria.sysUserID;\r\n this.reportUserandTime = `${criteria.sysUserID} @ ${formatDate(this.currentDateTime, 'dd/MM/yyyy hh:mm a', 'en-US')}`;\r\n this.reportPeriod = criteria.reportPeriod;\r\n\r\n var modal = criteria.modal;\r\n const payload = {\r\n client: modal.client,\r\n fromDate: modal.fromDate,\r\n toDate: modal.toDate,\r\n branch: modal.branch,\r\n currency: modal.currency,\r\n product: modal.product,\r\n transactionStatus: modal.transactionStatus.join(\",\"),\r\n transactionNo: (modal.transactionNo || '').trim()\r\n }\r\n\r\n try {\r\n const sdate = new Date(payload?.fromDate);\r\n const edate = new Date(payload?.toDate);\r\n payload.fromDate = sdate.toISOString().split(\"T\")[0];\r\n payload.toDate = edate.toISOString().split(\"T\")[0];\r\n } catch (err) {\r\n throw new Error(\"Invalid Date\");\r\n }\r\n\r\n console.log(payload)\r\n this.metaDataOne = {\r\n 'Report Period': criteria.reportPeriod\r\n }\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.reportUserandTime\r\n }\r\n this.searchCriteria = criteria.searchCriteria;\r\n\r\n this.reportService.searchTransactions(payload)\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 this.filteredData = [...this.transactionData];\r\n if (this.gridApi) {\r\n this.gridApi.setRowData(this.filteredData);\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.trim();\r\n if (this.searchText.length === 0) {\r\n this.filteredData = [...this.transactionData];\r\n } else {\r\n this.filteredData = this.transactionData.filter(row =>\r\n Object.values(row).some(val =>\r\n String(val).toLowerCase().includes(this.searchText.toLowerCase())\r\n )\r\n );\r\n }\r\n }\r\n\r\n onGridReady(params: GridReadyEvent): void {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi.sizeColumnsToFit();\r\n }\r\n\r\n clearError(): void {\r\n this.errorMessage = '';\r\n this.loadingState = ComponentLoadingState.Complete;\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 Period :', this.reportPeriod],\r\n ['Report User & Time :', this.reportUserandTime]\r\n ]);\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: []\r\n });\r\n\r\n this.exportService.exportToPdfUniversal(title, metadata, this.searchCriteria, 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 Period ', this.reportPeriod],\r\n ['Report User & Time ', this.reportUserandTime]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: []\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, this.searchCriteria, 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 Period: ', this.reportPeriod],\r\n ['Report User & Time: ', this.reportUserandTime]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: []\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, this.searchCriteria, headers, rows, 'Transaction_Enquiry.csv');\r\n }\r\n\r\n handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n}","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\"\r\n >\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 && isFormValid\">\r\n\r\n <lib-metadata \r\n [reportName]=\"ReportName\" \r\n [showmetaDataOne]=\"true\" \r\n [showmetaDataTwo]=\"true\" \r\n [metaDataOne]=\"metaDataOne\"\r\n [metaDataTwo]=\"metaDataTwo\" \r\n (exportEvent)=\"handleExport($event)\" \r\n (searchEvent)=\"filter($event)\">\r\n </lib-metadata>\r\n\r\n <div style=\"position: relative;\" *ngIf=\"filteredData.length > 0\">\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]=\"filteredData\" \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","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 = \"\";\r\n reportDate: string;\r\n fromDate: string;\r\n toDate: 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 metaDataTwo: Record<string, string>;\r\n exportService: GenericExportService = inject(GenericExportService);\r\n searchCriteria: [string,string][] = [];\r\n\r\n // flags\r\n showMessage: boolean = false;\r\n noDataFound: boolean = false;\r\n isFormValid: 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, tooltipField: 'transactionDateTime' },\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, 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, 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, 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, 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, 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 Send\";\r\n const reportTimeFormatter = this.dateValueFormatter('dd/MM/yyyy hh:mm a');\r\n const metadata: [string, string][] = [\r\n ['Report Period ', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ];\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\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: [],\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, searchCriteria, columns, data, options });\r\n break;\r\n case 'pdf':\r\n this.exportService.exportToPdf({ title, metadata, searchCriteria, columns, data, options });\r\n break;\r\n case 'csv':\r\n this.exportService.exportToCsv({ title, metadata, searchCriteria, 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.searchCriteria = criteria.searchCriteria;\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 this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n console.log(modal);\r\n // Code For Meta Data\r\n this.leftData = {\r\n 'Report Period': this.fromDate + \" - \" + this.toDate,\r\n }\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.user+\" @ \"+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 \"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 handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\"\r\n >\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 && isFormValid\" class=\"my-2\">\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\" [metaDataTwo]=\"metaDataTwo\"(exportEvent)=\"handleExport($event)\" (searchEvent)=\"filter($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\">\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 fromDate: string;\r\n toDate: string;\r\n metaDataOne: Record<string, string>;\r\n metaDataTwo: 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 searchCriteria: [string, string][];\r\n\r\n showReport: boolean = false;\r\n noDataFound: boolean = false;\r\n isFormValid: boolean = false;\r\n \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, 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 Period ', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ];\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\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: [],\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, searchCriteria, columns, data, options });\r\n break;\r\n case 'pdf':\r\n this.exportService.exportToPdf({ title, metadata, searchCriteria, columns, data, options });\r\n break;\r\n case 'csv':\r\n this.exportService.exportToCsv({ title, metadata, searchCriteria, 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.searchCriteria = criteria.searchCriteria;\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 this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n console.log(modal);\r\n // Code For Meta Data\r\n this.metaDataOne = {\r\n 'Report Period': this.fromDate + \" - \" + this.toDate,\r\n }\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.user+\" @ \"+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 \"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 handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($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 && isFormValid\" class=\"my-2 mx-1\">\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"metaDataTwo\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"filter($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\">\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 { 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 metaDataTwo: 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 searchCriteria: [string, string][];\r\n\r\n paginationArray: (number | 'All')[] = [];\r\n gridApis: any[] = [];\r\n reportPeriod: any;\r\n reportUserandTime: string;\r\n isFormValid: boolean = false;\r\n\r\n // ag-Grid properties\r\n columnDefs = [\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: 110, tooltipField: 'cancellationBranchDateTime' },\r\n { headerName: 'Cancellation Business Date', field: 'cancellationBusinessDate', flex: 1, minWidth: 80, tooltipField: 'cancellationBusinessDate' },\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: 82, cellClass: 'ag-right-aligned-cell', tooltipField: 'payOutAmount' },\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', tooltipField: 'payInAmount' },\r\n { headerName: 'Service Fee', field: 'txnCommission', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', },\r\n { headerName: 'Tax', field: 'tax', flex: 1, minWidth: 70, cellClass: 'ag-right-aligned-cell', tooltipField: 'tax' },\r\n { headerName: 'Total Send Amount', field: 'totalPayinAmount', flex: 1, minWidth: 82, cellClass: 'ag-right-aligned-cell', tooltipField: 'totalPayinAmount' },\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 ];\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 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 this.searchCriteria = criteria.searchCriteria;\r\n const modal = criteria.modal;\r\n this.user = criteria.sysUserID;\r\n this.reportPeriod = criteria.reportPeriod;\r\n this.reportUserandTime = `${criteria.sysUserID} @ ${formatDate(this.currentDateTime, 'dd/MM/yyyy hh:mm a', 'en-US')}`;\r\n this.metaDataOne = {\r\n 'Report Period': criteria.reportPeriod\r\n }\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.reportUserandTime\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 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 this.searchCriteria = criteria.searchCriteria;\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 this.filteredData = data;\r\n this.dataMap = JSON.parse(JSON.stringify(data));\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 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 = {};\r\n this.filteredData = {};\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 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;\r\n }\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 (!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 Period ', this.reportPeriod],\r\n ['Report User & Time ', this.reportUserandTime]\r\n ];\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n const columns = this.columnDefs;\r\n const data = this.dataMap;\r\n const options = {\r\n currencyFields: [],\r\n dateFields: [],\r\n\r\n dateFieldFormats: {},\r\n\r\n specialDecimalFields: {\r\n rate: 8\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, searchCriteria, columns, data, options });\r\n break;\r\n case 'pdf':\r\n this.exportService.exportToPdf({ title, metadata, searchCriteria, columns, data, options });\r\n break;\r\n case 'csv':\r\n this.exportService.exportToCsv({ title, metadata, searchCriteria, 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 handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\"\r\n >\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 && isFormValid\">\r\n <lib-metadata \r\n [reportName]=\"ReportName\" \r\n [showmetaDataOne]=\"true\" \r\n [showmetaDataTwo]=\"true\" \r\n [metaDataOne]=\"metaDataOne\"\r\n [metaDataTwo]=\"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 && isFormValid\">\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\">\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 fromDate: string;\r\n toDate: string;\r\n metaDataOne: Record<string, string>;\r\n metaDataTwo: 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 searchCriteria: [string, string][];\r\n\r\n gridApi: GridApi;\r\n gridColumnApi: ColumnApi;\r\n showReport: boolean = false;\r\n noDataFound: boolean = false;\r\n isFormValid: boolean = false;\r\n\r\n columnDefs: ColDef<RevenuePerTransactionResponseModel>[] = [\r\n { field: 'businessDate', headerName: 'Business Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, tooltipField: 'businessDate' },\r\n { field: 'payInDate', headerName: 'Send Date', 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: 120, 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,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,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, 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, 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, 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, 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,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,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, 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,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,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,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,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,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 formatRate(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 * 100000000) / 100000000).toFixed(8);\r\n return parseFloat(value).toFixed(8);\r\n }\r\n return '';\r\n }\r\n\r\n onSearch(text: string) {\r\n this.searchText = text;\r\n if (this.searchText == null) {\r\n return;\r\n }\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 Period ', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ]);\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['payInAmount', 'payOutAmount',\r\n 'transactionCommission', 'beneDeductAmount', 'xMsCommissionShare', 'xmExchangeVariation',\r\n 'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'\r\n ],\r\n rateFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'usdRateAppliedPayout',]\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, searchCriteria, 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 Period ', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ]);\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['payInAmount', 'payOutAmount',\r\n 'transactionCommission', 'beneDeductAmount', 'xMsCommissionShare', 'xmExchangeVariation',\r\n 'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'\r\n ],\r\n rateFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'usdRateAppliedPayout',]\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, searchCriteria, 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 = this.ReportName;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report Period ', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ]);\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['payInAmount', 'payOutAmount',\r\n 'transactionCommission', 'beneDeductAmount', 'xMsCommissionShare', 'xmExchangeVariation',\r\n 'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'\r\n ],\r\n rateFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'usdRateAppliedPayout',]\r\n });\r\n\r\n this.exportService.exportToPdfUniversal(title, metadata, searchCriteria, 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.searchCriteria = criteria.searchCriteria;\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 this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n console.log(modal);\r\n // Code For Meta Data\r\n this.metaDataOne = {\r\n 'Report Period': this.fromDate + \" - \" + this.toDate,\r\n }\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.user+\" @ \"+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 handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\" (formValid)=\"handleFormValid($event)\">\r\n</lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n<section *ngIf=\"showReport && isFormValid\" class=\"my-2 mx-1\">\r\n\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\"\r\n [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"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 metaDataTwo: 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 reportUserandTime: string;\r\n searchCriteria: [string, string][];\r\n isFormValid: boolean = false;\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: 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 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 this.searchCriteria = criteria.searchCriteria;\r\n const modal = criteria.modal;\r\n this.reportUserandTime = `${criteria.sysUserID} @ ${formatDate(this.currentDateTime, 'dd/MM/yyyy hh:mm a', 'en-US')}`;\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 Period ': criteria.reportPeriod\r\n }\r\n this.metaDataTwo = {\r\n 'Report User & Time ': this.reportUserandTime\r\n }\r\n try {\r\n const sdate = new Date(payload?.fromDate);\r\n const edate = new Date(payload?.toDate);\r\n payload.fromDate = sdate.toISOString().split(\"T\")[0];\r\n payload.toDate = edate.toISOString().split(\"T\")[0];\r\n } catch (err) {\r\n throw new Error(\"Invalid Date\");\r\n }\r\n this.searchCriteria = criteria.searchCriteria;\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 == \"PayIn\") {\r\n this.sendPinnedBottomRow = [this.buildTotalRow(this.sendDetails)];\r\n this.receivePinnedBottomRow = [];\r\n }\r\n else if (this.selectedClientType == \"PayOut\") {\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 Object.entries(this.metaDataTwo || {}).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\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria || [];\r\n\r\n // ===================== Search Criteria Section =====================\r\n\r\n // Start just below metadata\r\n let marginLeft = 15;\r\n let currentY = y + 5; // continue below metadata\r\n\r\n // --- heading ---\r\n doc.setFont('helvetica', 'bold');\r\n doc.text('Search Criteria:-', marginLeft, currentY);\r\n currentY += 8;\r\n\r\n const rowHeightPerLine = 6;\r\n const minGap = 2; // gap between key and value\r\n const betweenColumnsGap = 15; // gap between left and right columns\r\n const pageContentWidth = doc.internal.pageSize.width - 2 * marginLeft;\r\n\r\n // --- helper to measure pair width ---\r\n const measurePairWidth = (key: string, value: string): number => {\r\n doc.setFont('helvetica', 'bold');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n const valueWidth = doc.getTextWidth(value);\r\n return keyWidth + minGap + valueWidth;\r\n };\r\n\r\n // --- compute max width of left column ---\r\n let maxLeftPairWidth = 0;\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n const width = measurePairWidth(key, value);\r\n if (width > maxLeftPairWidth) maxLeftPairWidth = width;\r\n }\r\n }\r\n\r\n // --- calculate where right column starts ---\r\n const leftColumnStart = marginLeft;\r\n const rightColumnStart = leftColumnStart + maxLeftPairWidth + betweenColumnsGap;\r\n\r\n // --- print pairs dynamically ---\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n // Left column\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, leftColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = leftColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n // Right column\r\n if (searchCriteria[i + 1]) {\r\n const [key, value] = searchCriteria[i + 1];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, rightColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = rightColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n currentY += rowHeightPerLine;\r\n }\r\n\r\n // Update Y position for next sections\r\n y = currentY + 4;\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 const row = ws.getRow(r++);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: k + ': ', font: { bold: true } }, // key bold\r\n { text: v ?? '' } // value normal\r\n ]\r\n };\r\n row.getCell(1).alignment = { wrapText: false, vertical: 'middle' };\r\n });\r\n\r\n Object.entries(this.metaDataTwo || {}).forEach(([k, v]) => {\r\n const row = ws.getRow(r++);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: k + ': ', font: { bold: true } }, // key bold\r\n { text: v ?? '' } // value normal\r\n ]\r\n };\r\n row.getCell(1).alignment = { wrapText: false, vertical: 'middle' };\r\n });\r\n\r\n r++;\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria || [];\r\n\r\n ws.mergeCells(r, 1, r, 4); // previously 1..6\r\n ws.getCell(r, 1).value = 'Search Criteria:-';\r\n ws.getCell(r, 1).font = { bold: true };\r\n r += 2;\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1];\r\n const row = ws.getRow(r++);\r\n\r\n // Left column (reduced merge)\r\n ws.mergeCells(row.number, 1, row.number, 1); // was 1..3\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: left[0] + ' ', font: { bold: true } },\r\n { text: left[1] }\r\n ]\r\n };\r\n row.getCell(1).alignment = { wrapText: true, vertical: 'middle' };\r\n\r\n // Right column (start closer to left)\r\n if (right) {\r\n ws.mergeCells(row.number, 2, row.number, 3); // was 4..6\r\n row.getCell(3).value = {\r\n richText: [\r\n { text: right[0] + ' ', font: { bold: true } },\r\n { text: right[1] }\r\n ]\r\n };\r\n row.getCell(3).alignment = { wrapText: true, vertical: 'middle' };\r\n }\r\n }\r\n\r\n r++;\r\n\r\n const writeSection = (sec: { title: string; headers: string[]; rows: any[][] }) => {\r\n const titleRow = ws.getRow(r++);\r\n const titleCell = titleRow.getCell(1);\r\n titleCell.value = sec.title;\r\n titleCell.font = { bold: true, size: 12 };\r\n titleCell.alignment = { horizontal: 'left', vertical: 'middle' };\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 Object.entries(this.metaDataTwo || {}).forEach(([k, v]) => lines.push(`${k}: ${v ?? ''}`));\r\n\r\n // --- SEARCH CRITERIA BLOCK ---\r\n const searchCriteria: [string, string][] = this.searchCriteria || [];\r\n\r\n if (searchCriteria?.length) {\r\n lines.push('');\r\n lines.push('Search Criteria:-');\r\n\r\n // Determine max length of left column for padding\r\n const maxLeftLength = Math.max(...searchCriteria.map(([k, v]) => (k + ' ' + v).length));\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1];\r\n\r\n const leftText = left ? `${left[0]} ${left[1]}`.padEnd(maxLeftLength + 5, ' ') : '';\r\n const rightText = right ? `${right[0]} ${right[1]}` : '';\r\n\r\n // Each pair stays in its own column\r\n lines.push(`\"${leftText}${rightText}\"`);\r\n }\r\n\r\n lines.push(''); // blank line after search criteria\r\n }\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 === 'PayIn' || this.selectedClientType === 'Both') {\r\n out.push({ title: 'Send Details', api: this.sendGridApi });\r\n }\r\n if (this.selectedClientType === 'PayOut' || 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 handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\"\r\n >\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 && isFormValid\">\r\n<lib-metadata \r\n [reportName]=\"ReportName\" \r\n [showmetaDataOne]=\"true\" \r\n [showmetaDataTwo]=\"true\" \r\n [metaDataOne]=\"metaDataOne\"\r\n [metaDataTwo]=\"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: 80%; height: 91px; margin: 0 auto; display: block;\">\r\n</ag-grid-angular>\r\n\r\n<div *ngIf=\"(selectedClientType === 'PayIn' || 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: 80%; height: 204px; margin: 0 auto; display: block;\">\r\n</ag-grid-angular>\r\n</div>\r\n\r\n<div *ngIf=\"(selectedClientType === 'PayOut' || 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: 80%; height: 204px; margin: 0 auto; display: block;\">\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 searchCriteria: [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 isFormValid: boolean = false;\r\n\r\n defaultColDef: ColDef = {\r\n resizable: true,\r\n sortable: true,\r\n filter: true,\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', width: 90, minWidth: 80, maxWidth: 110 },\r\n { headerName: 'ReceiveClient', field: 'receiveClient', tooltipField: 'receiveClient' },\r\n { headerName: 'Principle ReceiveClient (If Applicable)', field: 'principleReceiveClient', tooltipField: 'principleReceiveClient', width: 100, minWidth: 90, maxWidth: 120 },\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 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 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 Period': `${this.reportPeriod}`,\r\n }\r\n\r\n this.rightData = {\r\n 'Report User & Time': `${this.reportUser} @ ${this.reportTime}`,\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.originalGroupEntries?.length) return;\r\n\r\n // Build filtered branch groups\r\n const filteredGroups = this.originalGroupEntries.map(group => {\r\n const originalSendEntries = group.sendTransactions.entries || [];\r\n const originalReceiveEntries = group.receiveTransactions.entries || [];\r\n\r\n const filteredSend = search\r\n ? originalSendEntries.filter(entry =>\r\n Object.values(entry).some(value => normalize(value).includes(search))\r\n )\r\n : [...originalSendEntries];\r\n\r\n const filteredReceive = search\r\n ? originalReceiveEntries.filter(entry =>\r\n Object.values(entry).some(value => normalize(value).includes(search))\r\n )\r\n : [...originalReceiveEntries];\r\n\r\n return {\r\n ...group,\r\n sendTransactions: { ...group.sendTransactions, entries: filteredSend },\r\n receiveTransactions: { ...group.receiveTransactions, entries: filteredReceive }\r\n };\r\n });\r\n\r\n // 🔹 Keep only branches that have any matching entries\r\n this.accountingReportModel.accountingReportByBranchGroups =\r\n filteredGroups.filter(g =>\r\n g.sendTransactions.entries.length > 0 || g.receiveTransactions.entries.length > 0\r\n );\r\n\r\n // Reset grids for visible branches\r\n this.accountingReportModel.accountingReportByBranchGroups.forEach((group, index) => {\r\n [group.sendTransactions.entries, group.receiveTransactions.entries].forEach((entries, idx) => {\r\n const gridApi = this.gridApis[index * 2 + idx];\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 Period:', this.reportPeriod],\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\r\n ];\r\n // // --- search criteria ---\r\n const searchCriteria = this.searchCriteria;\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 marginLeft = 15;\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 //==================================\r\n // --- draw search criteria heading ---\r\n doc.setFont('helvetica', 'bold');\r\n doc.text('Search Criteria:-', marginLeft, currentY);\r\n currentY += 8;\r\n\r\n const rowHeightPerLine = 6;\r\n const minGap = 2; // gap between key and value\r\n const betweenColumnsGap = 15; // gap between left and right columns (you can tune this)\r\n const pageContentWidth = doc.internal.pageSize.width - 2 * marginLeft;\r\n\r\n // --- helper function to measure total width of a key-value pair ---\r\n const measurePairWidth = (key: string, value: string): number => {\r\n doc.setFont('helvetica', 'bold');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n const valueWidth = doc.getTextWidth(value);\r\n return keyWidth + minGap + valueWidth;\r\n };\r\n\r\n // --- calculate max width of left column pairs dynamically ---\r\n let maxLeftPairWidth = 0;\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n const width = measurePairWidth(key, value);\r\n if (width > maxLeftPairWidth) maxLeftPairWidth = width;\r\n }\r\n }\r\n\r\n // --- compute where right column should start ---\r\n const leftColumnStart = marginLeft;\r\n const rightColumnStart = leftColumnStart + maxLeftPairWidth + betweenColumnsGap;\r\n\r\n // --- print search criteria dynamically ---\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n let maxLineCount = 1;\r\n\r\n // Left column\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, leftColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = leftColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n // Right column\r\n if (searchCriteria[i + 1]) {\r\n const [key, value] = searchCriteria[i + 1];\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(key, rightColumnStart, currentY);\r\n\r\n doc.setFont('helvetica', 'normal');\r\n const keyWidth = doc.getTextWidth(key + ' ');\r\n const valueX = rightColumnStart + keyWidth + minGap;\r\n doc.text(value, valueX, currentY);\r\n }\r\n\r\n currentY += rowHeightPerLine;\r\n }\r\n currentY += 8;\r\n //==================================\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 const pageCount = (doc as any).internal.getNumberOfPages();\r\n for (let i = 1; i <= pageCount; i++) {\r\n doc.setFont(\"helvetica\", \"bold\");\r\n doc.setPage(i);\r\n doc.setFontSize(9);\r\n doc.setTextColor(100);\r\n\r\n const footerY = doc.internal.pageSize.height - 6;\r\n\r\n doc.text(\r\n `Page ${i} of ${pageCount}`,\r\n pageWidth - 15,\r\n footerY,\r\n { align: 'right' }\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 Period', this.reportPeriod],\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\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 // --- search criteria ---\r\n const searchCriteria = this.searchCriteria;\r\n // --- search criteria heading ---\r\n // --- Heading ---\r\n worksheet.mergeCells(currentRow, 1, currentRow, 8);\r\n const headingCell = worksheet.getCell(currentRow, 1);\r\n headingCell.value = 'Search Criteria:-';\r\n headingCell.font = { bold: true, size: 12 };\r\n headingCell.alignment = { vertical: 'middle', horizontal: 'left' };\r\n currentRow += 2;\r\n\r\n // --- Draw pairs dynamically (two per row) ---\r\n const leftColEnd = 4; // columns 1–4 for left pair\r\n const rightColStart = 5; // columns 5–8 for right pair\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const row = worksheet.getRow(currentRow++);\r\n\r\n // Left pair\r\n if (searchCriteria[i]) {\r\n const [key, value] = searchCriteria[i];\r\n worksheet.mergeCells(row.number, 1, row.number, leftColEnd);\r\n const leftCell = row.getCell(1);\r\n leftCell.value = { richText: [{ text: key + ' ', font: { bold: true } }, { text: value }] };\r\n leftCell.alignment = { vertical: 'middle', wrapText: true };\r\n }\r\n\r\n // Right pair\r\n if (searchCriteria[i + 1]) {\r\n const [key, value] = searchCriteria[i + 1];\r\n worksheet.mergeCells(row.number, rightColStart, row.number, rightColStart + 3);\r\n const rightCell = row.getCell(rightColStart);\r\n rightCell.value = { richText: [{ text: key + ' ', font: { bold: true } }, { text: value }] };\r\n rightCell.alignment = { vertical: 'middle', wrapText: true };\r\n }\r\n }\r\n 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 Period: ${this.reportPeriod}`);\r\n rows.push(`Report User & Time: ${this.reportUser}@${this.reportTime}`);\r\n rows.push('');\r\n\r\n // // --- search criteria ---\r\n const searchCriteria = this.searchCriteria;\r\n\r\n if (searchCriteria?.length) {\r\n rows.push('Search Criteria:-');\r\n\r\n // calculate max length of left key-value pairs for padding\r\n const maxLeftLength = Math.max(...searchCriteria.map(([k, v]) => (k + ' ' + v).length));\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1];\r\n\r\n const leftText = left ? `${left[0]} ${left[1]}`.padEnd(maxLeftLength + 5, ' ') : '';\r\n const rightText = right ? `${right[0]} ${right[1]}` : '';\r\n\r\n // Each row in single CSV row; first and second pair separated by a column\r\n rows.push(`\"${leftText}${rightText}\"`);\r\n }\r\n rows.push(''); // blank line after search criteria\r\n }\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.searchCriteria = payload.searchCriteria;\r\n\r\n this.getAccountingReport(req);\r\n }\r\n\r\n handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\" (formValid)=\"handleFormValid($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 && loadingState == ComponentLoadingState.Complete && !noDataFound && isFormValid\"\r\n style=\"margin-bottom: 30px;\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <div *ngIf=\"accountingReportModel.accountingReportByBranchGroups?.length\">\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\">\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 transaction-grid grid-size\" style=\"width: 100%;\"\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 transaction-grid grid-size\" style=\"width: 100%;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\"\r\n [rowData]=\"group.receiveTransactions.entries\" [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\"\r\n [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event, i * 2 + 1)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n </div>\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound && loadingState!=ComponentLoadingState.Loading\">\r\n No Data found matching your search criteria.\r\n</div>","import { Component, inject, OnInit } from '@angular/core';\r\nimport { CreditLimitStatusEnquiryReportModel } from '../../models/credit-limit-status-enquiry-report/credit-limit-status-enquiry.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-credit-limit-status-enquiry-report',\r\n templateUrl: './credit-limit-status-enquiry-report.component.html',\r\n styleUrls: ['./credit-limit-status-enquiry-report.component.scss']\r\n})\r\nexport class CreditLimitStatusEnquiryReportComponent implements OnInit {\r\n data: CreditLimitStatusEnquiryReportModel[] = [];\r\n filteredData: CreditLimitStatusEnquiryReportModel[] = [];\r\n user: string = \"\";\r\n ReportName = \"Credit Limit Status Enquiry\";\r\n reportService: ReportService = inject(ReportService);\r\n exportService: ExportService = inject(ExportService);\r\n reportDate: string;\r\n fromDate: string;\r\n toDate: string;\r\n metaDataOne: Record<string, string>;\r\n metaDataTwo: 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 searchCriteria: [string, string][];\r\n\r\n gridApi: GridApi;\r\n gridColumnApi: ColumnApi;\r\n showReport: boolean = false;\r\n noDataFound: boolean = false;\r\n isFormValid: boolean = false;\r\n\r\n\r\n columnDefs: ColDef<CreditLimitStatusEnquiryReportModel>[] = [\r\n { field: 'agentCode', headerName: 'Client Code', flex: 1, headerClass: 'ag-header-cell', minWidth: 100, tooltipField: 'agentCode', wrapText: true, autoHeight: true },\r\n { field: 'agentName', headerName: 'Client', flex: 1, headerClass: 'ag-header-cell', minWidth: 150, tooltipField: 'agentName', wrapText: true, autoHeight: true },\r\n { field: 'creditLimit', headerName: 'Credit Limit', flex: 1, headerClass: 'ag-header-cell', cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 100, tooltipField: 'creditLimit', wrapText: true, autoHeight: true },\r\n { field: 'currencyCode', headerName: 'Settlement Currency', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, tooltipField: 'currencyCode', wrapText: true, autoHeight: true },\r\n { field: 'requestTCLAmount', headerName: 'Requested TCL Amount', flex: 1, headerClass: 'ag-header-cell', cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 100, tooltipField: 'requestTCLAmount', wrapText: true, autoHeight: true },\r\n { field: 'requestStatus', headerName: 'Transaction Status', flex: 1, headerClass: 'ag-header-cell', minWidth: 120, tooltipField: 'requestStatus', wrapText: true, autoHeight: true },\r\n { field: 'requestDescription', headerName: 'Request Description', flex: 1, headerClass: 'ag-header-cell', minWidth: 150, tooltipField: 'requestDescription', wrapText: true, autoHeight: true },\r\n { field: 'requestingUserId', headerName: 'Requesting User ID', flex: 1, headerClass: 'ag-header-cell', minWidth: 170, tooltipField: 'requestingUserId', wrapText: true, autoHeight: true },\r\n { field: 'requestingUser', headerName: 'Requesting User', flex: 1, headerClass: 'ag-header-cell', minWidth: 130, tooltipField: 'requestingUser', wrapText: true, autoHeight: true },\r\n { field: 'authorisingUserId', headerName: 'Authorising User ID', flex: 1, headerClass: 'ag-header-cell', minWidth: 170, tooltipField: 'authorisingUserId', wrapText: true, autoHeight: true },\r\n { field: 'authorisingUser', headerName: 'Authorising User', flex: 1, headerClass: 'ag-header-cell', minWidth: 130, tooltipField: 'authorisingUser', wrapText: true, autoHeight: true },\r\n { field: 'requestCreatedDate', headerName: 'Request Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 130, tooltipField: 'requestCreatedDate', wrapText: true, autoHeight: true },\r\n { field: 'authorisedDate', headerName: 'Authorise Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 150, tooltipField: 'authorisationDate', wrapText: true, autoHeight: true },\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 onGridReady(params: GridReadyEvent) {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n }\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 onSearch(text: string) {\r\n this.searchText = text.trim();\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() {\r\n if (!this.data?.length) return;\r\n const title = this.ReportName;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report Period:', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time:', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ]);\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['creditLimit', 'requestTCLAmount'],\r\n rateFields: []\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, searchCriteria, headers, rows, 'Credit_Limit_Status_Enquiry.xlsx');\r\n }\r\n\r\n exportToPDF() {\r\n if (!this.data?.length) return;\r\n const title = this.ReportName;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report Period:', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time:', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ]);\r\n\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['creditLimit', 'requestTCLAmount'],\r\n rateFields: []\r\n });\r\n\r\n this.exportService.exportToPdfUniversal(title, metadata, searchCriteria, headers, rows, 'Credit_Limit_Status_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 exportToCSV() {\r\n if (!this.data?.length) return;\r\n const title = this.ReportName;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report Period:', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time:', this.user?this.user+\" @ \"+this.reportDate:''+\" @ \"+this.reportDate],\r\n ]);\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {\r\n currencyFields: ['creditLimit', 'requestTCLAmount'],\r\n rateFields: []\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, searchCriteria, headers, rows, 'Credit_Limit_Status_Enquiry.csv');\r\n }\r\n\r\n handleSearch(criteria: any) {\r\n this.searchCriteria = criteria.searchCriteria;\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 this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0,10);\r\n console.log(modal);\r\n // Code For Meta Data\r\n this.metaDataOne = {\r\n 'Report Period': this.fromDate + \" - \" + this.toDate,\r\n }\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.user+\" @ \"+this.reportDate,\r\n }\r\n\r\n const searchData = {\r\n \"FromDate\": modal.fromDate,\r\n \"ToDate\": modal.toDate,\r\n \"AgentName\": modal.client,\r\n \"Status\": modal.transactionStatus\r\n }\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getCreditLimitStatusEnquiryReport(searchData).subscribe({\r\n next: (response) => {\r\n this.data = response;\r\n this.filteredData = JSON.parse(JSON.stringify(this.data));\r\n this.noDataFound = this.data?.length === 0 ? true : false;\r\n },\r\n error: (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 handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\" (formValid)=\"handleFormValid($event)\">\r\n</lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n<section *ngIf=\"showReport && isFormValid\" class=\"my-2 mx-1\">\r\n <ng-container *ngIf=\"!noDataFound else noDataTemplate\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\"\r\n [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"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 <ng-template #noDataTemplate>\r\n <div class=\"alert alert-warning mt-3\">\r\n No Data found matching your search criteria.\r\n </div>\r\n </ng-template>\r\n</section>","import { Component, OnInit } from '@angular/core';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { ColDef, GridReadyEvent, GridApi, ColumnApi } from 'ag-grid-community';\r\nimport { formatDate } from '@angular/common';\r\nimport { ExportService } from '../../shared/export.service';\r\n\r\n@Component({\r\n selector: 'lib-funding-report',\r\n templateUrl: './funding-report.component.html',\r\n styleUrls: ['./funding-report.component.scss']\r\n})\r\nexport class FundingReportComponent implements OnInit {\r\n ReportName = \"Funding\";\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n showReport: boolean = false;\r\n metaDataOne: Record<string, string>;\r\n metaDataTwo: Record<string, string>;\r\n currentDateTime: Date = new Date();\r\n searchText: string = '';\r\n gridColumnApi: ColumnApi;\r\n paginationPageSize: number = 15;\r\n gridApi!: GridApi;\r\n errorMessage: string;\r\n hasSearched: boolean = false;\r\n selectedExportOption: string;\r\n reportUserandTime: string = '';\r\n reportPeriod: string = '';\r\n filteredData: any[] = [];\r\n transactionData: any[] = [];\r\n searchCriteria: [string, string][];\r\n isFormValid: boolean = false;\r\n\r\n\r\n columnDefs: ColDef[] = [\r\n { headerName: 'Requested Date', field: 'requestedDate', flex: 1, minWidth: 73, tooltipField: 'requestedDate' },\r\n { headerName: 'Requested By Username', field: 'requestedByUsername', flex: 1, minWidth: 100, tooltipField: 'requestedByUsername' },\r\n { headerName: 'Requested By UserID', field: 'requestedByUserID', flex: 1, minWidth: 120, tooltipField: 'requestedByUserID' },\r\n { headerName: 'Client Code', field: 'clientCode', flex: 1, minWidth: 65, tooltipField: 'clientCode' },\r\n { headerName: 'Client', field: 'companyName', flex: 1, minWidth: 120, tooltipField: 'companyName' },\r\n { headerName: 'Country', field: 'country', flex: 1, minWidth: 60, tooltipField: 'country' },\r\n { headerName: 'Movement', field: 'movement', flex: 1, minWidth: 75, tooltipField: 'Movement' },\r\n { headerName: 'Funding Amount', field: 'fundingAmount', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', tooltipField: 'fundingAmount' },\r\n { headerName: 'Funding Currency', field: 'fCcyCode', flex: 1, minWidth: 65, tooltipField: 'fCcyCode' },\r\n { headerName: 'Exchange Rate', field: 'exchangeRate', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', tooltipField: 'exchangeRate' },\r\n { headerName: 'Amount in LC', field: 'amountInLC', flex: 1, minWidth: 80, cellClass: 'ag-right-aligned-cell', tooltipField: 'amountInLC' },\r\n { headerName: 'Local Currency', field: 'lCcyCode', flex: 1, minWidth: 65, tooltipField: 'lCcyCode' },\r\n { headerName: 'Authorized By UserID', field: 'authorizedByUserID', flex: 1, minWidth: 120, tooltipField: 'authorizedByUserID' },\r\n { headerName: 'Authorized By Username', field: 'authorizedByUsername', flex: 1, minWidth: 100, tooltipField: 'authorizedByUsername' },\r\n { headerName: 'Authorized Date', field: 'authorizedDate', flex: 1, minWidth: 75, tooltipField: 'authorizedDate' },\r\n { headerName: 'Transaction Status', field: 'transactionStatus', flex: 1, minWidth: 80, tooltipField: 'transactionStatus' },\r\n { headerName: 'Requester Comments', field: 'requesterComments', flex: 1, minWidth: 100, tooltipField: 'requesterComments' },\r\n { headerName: 'Authorizer Comments', field: 'authorizerComments', flex: 1, minWidth: 100, tooltipField: 'authorizerComments' }\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 autoHeight: true\r\n };\r\n\r\n\r\n constructor(private reportService: ReportService,\r\n private exportService: ExportService,) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n handleSearch(criteria: any): void {\r\n this.searchCriteria = criteria.searchCriteria;\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.showReport = false;\r\n this.errorMessage = '';\r\n this.selectedExportOption = 'excel';\r\n const payload = criteria.modal;\r\n this.reportUserandTime = `${criteria.sysUserID} @ ${formatDate(this.currentDateTime, 'dd/MM/yyyy hh:mm a', 'en-US')}`;\r\n this.reportPeriod = criteria.reportPeriod;\r\n this.metaDataOne = {\r\n 'Report Period': this.reportPeriod\r\n }\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.reportUserandTime\r\n }\r\n this.searchCriteria = criteria.searchCriteria;\r\n\r\n try {\r\n const sdate = new Date(payload?.fromDate);\r\n const edate = new Date(payload?.toDate);\r\n payload.fromDate = sdate.toISOString().split(\"T\")[0];\r\n payload.toDate = edate.toISOString().split(\"T\")[0];\r\n } catch (err) {\r\n throw new Error(\"Invalid Date\");\r\n }\r\n\r\n this.reportService.getFundingReport(payload)\r\n .pipe(\r\n finalize(() => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n })\r\n )\r\n .subscribe({\r\n next: (data) => {\r\n this.transactionData = Array.isArray(data) ? data : [];\r\n this.filteredData = JSON.parse(JSON.stringify(data));\r\n this.showReport = true;\r\n this.hasSearched = true;\r\n },\r\n error: (error) => {\r\n console.error('Error fetching Funding Report:', error);\r\n this.errorMessage = 'An error occurred while fetching the report. Please try again later.';\r\n this.showReport = false;\r\n }\r\n });\r\n }\r\n\r\n filter(text: string): void {\r\n this.searchText = text.trim();\r\n if (this.searchText?.length === 0) {\r\n this.filteredData = [...this.transactionData];\r\n } else {\r\n this.filteredData = this.transactionData.filter(row =>\r\n Object.values(row).some(val =>\r\n String(val).toLowerCase().includes(this.searchText.toLowerCase())\r\n )\r\n );\r\n }\r\n }\r\n\r\n onGridReady(params: GridReadyEvent): void {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi.sizeColumnsToFit();\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 onExportChange(value: string): void {\r\n this.selectedExportOption = value;\r\n }\r\n\r\n exportToPDF(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Funding';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report Period :', this.reportPeriod],\r\n ['Report User and Time :', this.reportUserandTime]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: [],\r\n rateFields: []\r\n });\r\n\r\n this.exportService.exportToPdfUniversal(title, metadata, this.searchCriteria, headers, rows, 'Funding.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 = 'Funding';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report Period ', this.reportPeriod],\r\n ['Report User and Time ', this.reportUserandTime]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: [],\r\n rateFields: []\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, this.searchCriteria, headers, rows, 'Funding.xlsx');\r\n }\r\n\r\n exportToCSV(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Funding';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report Period: ', this.reportPeriod],\r\n ['Report User and Time: ', this.reportUserandTime]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: ['fundingAmount', 'amountInLC'],\r\n rateFields: ['exchangeRate']\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, this.searchCriteria, headers, rows, 'Funding.csv');\r\n }\r\n\r\n handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\"\r\n >\r\n</lib-search-filter>\r\n\r\n<app-loader *ngIf=\"loadingState === ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"errorMessage\" class=\"error alert alert-danger mt-3\">{{ errorMessage }}</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"hasSearched && transactionData.length === 0 && !errorMessage\">\r\n No Data found matching your search criteria.\r\n</div>\r\n\r\n<section *ngIf=\"showReport && isFormValid && transactionData.length > 0\">\r\n\r\n <lib-metadata \r\n [reportName]=\"ReportName\" \r\n [showmetaDataOne]=\"true\" \r\n [showmetaDataTwo]=\"true\" \r\n [metaDataOne]=\"metaDataOne\"\r\n [metaDataTwo]=\"metaDataTwo\" \r\n (exportEvent)=\"handleExport($event)\" \r\n (searchEvent)=\"filter($event)\">\r\n </lib-metadata>\r\n\r\n <div style=\"position: relative;\" *ngIf=\"filteredData.length > 0\">\r\n\r\n <lib-page-size-selector \r\n [totalEntries]=\"filteredData.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]=\"filteredData\" \r\n [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\"\r\n [rowHeight]=\"22\"\r\n [pagination]=\"true\" \r\n [headerHeight]=\"35\" \r\n [paginationPageSize]=\"paginationPageSize\"\r\n (gridReady)=\"onGridReady($event)\" \r\n style=\"width: 100%; height: 375px;\">\r\n </ag-grid-angular>\r\n </div>\r\n \r\n</section>","import { formatDate } from '@angular/common';\r\nimport { Component, HostListener, OnInit } from '@angular/core';\r\nimport { ColDef, ColumnApi, GridApi, GridReadyEvent } from 'ag-grid-community';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { AccountDetail, TrialBalanceReport } from '../../models/trial-balance-accounts-report/trial-balance-accounts.models';\r\nimport { ReportService } from '../../services/report.service';\r\nimport jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\nimport { ExportService } from '../../shared/export.service';\r\n\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 TrialBalanceAccountsReportRequestDTO {\r\n year: number;\r\n dateType: string;\r\n fromDate: string;\r\n toDate: string;\r\n accountStatus: string;\r\n businessUnit: string;\r\n currency: string;\r\n companyCode: string;\r\n reportPeriod: string;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-trial-balance-accounts-report',\r\n templateUrl: './trial-balance-accounts-report.component.html',\r\n styleUrls: ['./trial-balance-accounts-report.component.scss']\r\n})\r\nexport class TrialBalanceAccountsReportComponent implements OnInit {\r\n\r\n\r\n ReportName: string = \"Trial Balance - Accounts\"\r\n gridApi: GridApi;\r\n metaDataOne: Record<string, string>;\r\n metaDataTwo: Record<string, string>;\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Complete;\r\n trialBalanceReport: TrialBalanceReport;\r\n selectedExportOption: string = 'excel';\r\n pageSize: number = 15;\r\n dataReady: boolean = false;\r\n searchCriteria: [string, string][];\r\n\r\n accountStatus: string = '';\r\n currency: string = '';\r\n dateType: string = '';\r\n fromDate: string = '';\r\n toDate: string = '';\r\n businessLine: string = '';\r\n\r\n reportUser: string = '';\r\n reportTime: string = '';\r\n reportPeriod: string = '';\r\n isFormValid: boolean = false;\r\n\r\n\r\n defaultColDef: ColDef = {\r\n resizable: true,\r\n sortable: true,\r\n filter: true,\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\r\n wrapHeaderText: true,\r\n autoHeaderHeight: true,\r\n wrapText: true,\r\n autoHeight: true,\r\n\r\n cellClassRules: {\r\n 'total-positive': params => params.data?.isTotalRow && params.value >= 0,\r\n 'total-negative': params => params.data?.isTotalRow && params.value < 0,\r\n 'positive-value': params => !params.data?.isTotalRow && params.value >= 0,\r\n 'negative-value': params => !params.data?.isTotalRow && params.value < 0,\r\n }\r\n };\r\n\r\n rowClassRules = {\r\n 'total-row': params => params.data?.isTotalRow\r\n };\r\n\r\n columnDefs: ColDef[] =\r\n [\r\n { headerName: 'COA Code', field: 'coaCode', tooltipField: 'coaCode', minWidth: 60, maxWidth: 100 },\r\n { headerName: 'Account Code', field: 'accountCode', tooltipField: 'accountCode', minWidth: 80, maxWidth: 100 },\r\n { headerName: 'Account Description', field: 'accountDescription', tooltipField: 'accountDescription', minWidth: 180, maxWidth: 230 },\r\n { headerName: 'Opening Balance Local Amount', field: 'openingBalance', type: 'numericColumn', tooltipField: 'openingBalance' },\r\n { headerName: 'Debits Local Amount', field: 'debit', type: 'numericColumn', tooltipField: 'debit' },\r\n { headerName: 'Credits Local Amount', field: 'credit', type: 'numericColumn', tooltipField: 'credit' },\r\n { headerName: 'Net Movement Local Amount', field: 'netMovement', type: 'numericColumn', tooltipField: 'netMovement' },\r\n { headerName: 'Closing Balance Local Amount', field: 'closingBalance', type: 'numericColumn', tooltipField: 'closingBalance' }\r\n ];\r\n\r\n rowData: AccountDetail[] = [];\r\n gridColumnApi: ColumnApi;\r\n\r\n constructor(private reportService: ReportService, private exportService: ExportService) { }\r\n\r\n ngOnInit(): void { }\r\n\r\n getTrialBalanceAccountsReport(req: any) {\r\n\r\n this.dataReady = false;\r\n this.trialBalanceReport = null;\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n\r\n this.reportService.getTrialBalanceAccountsReport(req).subscribe({\r\n next: (report: TrialBalanceReport) => {\r\n this.trialBalanceReport = report;\r\n this.dataReady = true;\r\n this.reportUser = this.trialBalanceReport.reportUser;\r\n this.reportTime = formatDate(new Date(), 'dd/MM/yyyy hh:mm a', 'en-US');\r\n this.reportPeriod = req.reportPeriod;\r\n\r\n this.accountStatus = req.accountStatus;\r\n this.currency = req.currency;\r\n this.dateType = req.dateType == \"VD\" ? \"Value Date\" : \"Posting Date\";\r\n this.businessLine = req.businessLine;\r\n\r\n this.rowData = this.flattenReport(report).map(acc => ({\r\n ...acc,\r\n openingBalance: Number(acc.openingBalance).toFixed(3),\r\n debit: Number(acc.debit).toFixed(3),\r\n credit: Number(acc.credit).toFixed(3),\r\n netMovement: Number(acc.netMovement).toFixed(3),\r\n closingBalance: Number(acc.closingBalance).toFixed(3)\r\n }));\r\n\r\n this.metaDataOne = {\r\n 'Report Period': this.reportPeriod,\r\n };\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time': `${this.reportUser} @ ${this.reportTime}`,\r\n };\r\n\r\n const searchCriteria: [string, string][] = [\r\n ['Account Status:', this.accountStatus],\r\n ['Currency:', this.currency],\r\n ['Date Type:', this.dateType],\r\n ['From Date:', this.fromDate],\r\n ['Business Line:', this.businessLine],\r\n ['To Date:', this.toDate],\r\n ];\r\n\r\n this.searchCriteria = searchCriteria;\r\n\r\n\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n error: (err) => {\r\n console.error('Error fetching trial balance report:', err);\r\n }\r\n });\r\n }\r\n\r\n flattenReport(report: TrialBalanceReport): AccountDetail[] {\r\n const rows: AccountDetail[] = [];\r\n\r\n report.mainCOAGroups.forEach(main => {\r\n main.subCOAGroups.forEach(sub => {\r\n sub.coaGroups.forEach(coa => {\r\n coa.accounts.forEach(account => rows.push(account));\r\n\r\n rows.push({\r\n coaCode: '',\r\n accountCode: 'Total:',\r\n accountDescription: `${coa.coaDescription}`,\r\n openingBalance: Number(coa.totals.openingBalance).toFixed(3),\r\n debit: Number(coa.totals.debit).toFixed(3),\r\n credit: Number(coa.totals.credit).toFixed(3),\r\n netMovement: Number(coa.totals.netMovement).toFixed(3),\r\n closingBalance: Number(coa.totals.closingBalance).toFixed(3),\r\n isTotalRow: true\r\n });\r\n });\r\n\r\n rows.push({\r\n coaCode: '',\r\n accountCode: 'Total:',\r\n accountDescription: `${sub.subCOADescription}`,\r\n openingBalance: Number(sub.totals.openingBalance).toFixed(3),\r\n debit: Number(sub.totals.debit).toFixed(3),\r\n credit: Number(sub.totals.credit).toFixed(3),\r\n netMovement: Number(sub.totals.netMovement).toFixed(3),\r\n closingBalance: Number(sub.totals.closingBalance).toFixed(3),\r\n isTotalRow: true\r\n });\r\n });\r\n\r\n rows.push({\r\n coaCode: '',\r\n accountCode: 'Total:',\r\n accountDescription: `${main.mainCOADescription}`,\r\n openingBalance: Number(main.totals.openingBalance).toFixed(3),\r\n debit: Number(main.totals.debit).toFixed(3),\r\n credit: Number(main.totals.credit).toFixed(3),\r\n netMovement: Number(main.totals.netMovement).toFixed(3),\r\n closingBalance: Number(main.totals.closingBalance).toFixed(3),\r\n isTotalRow: true\r\n });\r\n });\r\n\r\n rows.push({\r\n coaCode: 'TOTAL:',\r\n accountCode: '',\r\n accountDescription: '',\r\n openingBalance: Number(report.grandTotal.openingBalance).toFixed(3),\r\n debit: Number(report.grandTotal.debit).toFixed(3),\r\n credit: Number(report.grandTotal.credit).toFixed(3),\r\n netMovement: Number(report.grandTotal.netMovement).toFixed(3),\r\n closingBalance: Number(report.grandTotal.closingBalance).toFixed(3),\r\n isTotalRow: true\r\n });\r\n\r\n return rows;\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 const allColumnIds: string[] = [];\r\n params.columnApi.getColumns().forEach((column: any) => {\r\n allColumnIds.push(column.getColId());\r\n });\r\n params.columnApi.autoSizeColumns(allColumnIds);\r\n this.onResize();\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize() {\r\n if (this.gridApi && this.gridApi.sizeColumnsToFit) {\r\n this.gridApi.sizeColumnsToFit();\r\n }\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 const search = normalize(text);\r\n\r\n if (search) {\r\n // filter from already formatted rowData\r\n this.rowData = this.flattenReport(this.trialBalanceReport)\r\n .map(acc => ({\r\n ...acc,\r\n openingBalance: Number(acc.openingBalance).toFixed(3),\r\n debit: Number(acc.debit).toFixed(3),\r\n credit: Number(acc.credit).toFixed(3),\r\n netMovement: Number(acc.netMovement).toFixed(3),\r\n closingBalance: Number(acc.closingBalance).toFixed(3)\r\n }))\r\n .filter(item =>\r\n Object.values(item).some(value => normalize(value).includes(search))\r\n );\r\n } else {\r\n this.rowData = this.flattenReport(this.trialBalanceReport)\r\n .map(acc => ({\r\n ...acc,\r\n openingBalance: Number(acc.openingBalance).toFixed(3),\r\n debit: Number(acc.debit).toFixed(3),\r\n credit: Number(acc.credit).toFixed(3),\r\n netMovement: Number(acc.netMovement).toFixed(3),\r\n closingBalance: Number(acc.closingBalance).toFixed(3)\r\n }));\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 exportToPdf(): void {\r\n if (!this.trialBalanceReport?.mainCOAGroups?.length) return;\r\n\r\n const title = 'Xpress Money - MI Accounts';\r\n const fileName = 'Trial-Balance-Accounts-Raw.pdf';\r\n\r\n // --- page & layout ---\r\n const doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: [312, 210] });\r\n const pageWidth = doc.internal.pageSize.getWidth();\r\n const marginLeft = 15;\r\n const logoWidth = 38.4, logoHeight = 17.5, logoX = marginLeft, logoY = 8;\r\n const titleY = 18;\r\n let currentY = titleY + 14;\r\n\r\n const labelValueGap = 2;\r\n const pairGap = 15;\r\n\r\n // --- metadata ---\r\n const metadata: [string, string][] = [\r\n ['Report Period:', this.reportPeriod],\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\r\n ];\r\n\r\n // --- search criteria ---\r\n const searchCriteria = this.searchCriteria;\r\n\r\n // --- draw logo + title ---\r\n if (this.exportService?.logoBase64) {\r\n try {\r\n doc.addImage(this.exportService.logoBase64, 'PNG', logoX, logoY, logoWidth, logoHeight);\r\n } catch { }\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 // --- draw metadata ---\r\n doc.setFontSize(10);\r\n metadata.forEach(([label, value], i) => {\r\n const y = currentY + i * 6;\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(label, marginLeft, y);\r\n doc.setFont('helvetica', 'normal');\r\n const labelWidth = doc.getTextWidth(label + ' ');\r\n doc.text(value, marginLeft + labelWidth + labelValueGap, y);\r\n });\r\n currentY += metadata.length * 6 + 6;\r\n\r\n // --- draw search criteria heading ---\r\n doc.setFont('helvetica', 'bold');\r\n doc.text('Search Criteria:-', marginLeft, currentY);\r\n currentY += 8;\r\n\r\n // --- draw search criteria pairs ---\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1]; // may be undefined\r\n\r\n // --- Left side ---\r\n if (left) {\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(left[0], marginLeft, currentY);\r\n doc.setFont('helvetica', 'normal');\r\n const leftLabelWidth = doc.getTextWidth(left[0] + ' ');\r\n doc.text(left[1] ?? '', marginLeft + leftLabelWidth + labelValueGap, currentY);\r\n }\r\n\r\n // --- Right side (if available) ---\r\n if (right) {\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(right[0], pageWidth / 2, currentY);\r\n doc.setFont('helvetica', 'normal');\r\n const rightLabelWidth = doc.getTextWidth(right[0] + ' ');\r\n doc.text(right[1] ?? '', pageWidth / 2 + rightLabelWidth + labelValueGap, currentY);\r\n }\r\n\r\n currentY += 6; // move down for next line\r\n }\r\n\r\n currentY += 4;\r\n\r\n // --- headers ---\r\n const headers = [\r\n 'Sr No',\r\n 'COA Code', 'Account Code', 'Account Description',\r\n 'Opening Balance Local Amt', 'Debits Local Amt', 'Credits Local Amt',\r\n 'Net Movement Local Amt', 'Closing Balance Local Amt'\r\n ];\r\n\r\n const flatReport = this.flattenReport(this.trialBalanceReport);\r\n\r\n // --- rows ---\r\n const rows: any[][] = flatReport.map((acc, i) => [\r\n i + 1,\r\n acc.coaCode,\r\n acc.accountCode,\r\n acc.accountDescription,\r\n acc.openingBalance != null ? Number(acc.openingBalance).toFixed(3) : \"\",\r\n acc.debit != null ? Number(acc.debit).toFixed(3) : \"\",\r\n acc.credit != null ? Number(acc.credit).toFixed(3) : \"\",\r\n acc.netMovement != null ? Number(acc.netMovement).toFixed(3) : \"\",\r\n acc.closingBalance != null ? Number(acc.closingBalance).toFixed(3) : \"\"\r\n ]);\r\n\r\n // --- column widths ---\r\n const columnStyles: { [key: number]: any } = {\r\n 0: { cellWidth: 15 },\r\n 1: { cellWidth: 25 },\r\n 2: { cellWidth: 25 },\r\n 3: { cellWidth: 70 },\r\n 4: { cellWidth: 30 },\r\n 5: { cellWidth: 30 },\r\n 6: { cellWidth: 30 },\r\n 7: { cellWidth: 30 },\r\n 8: { cellWidth: 30 },\r\n };\r\n\r\n // --- draw table ---\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],\r\n textColor: 0,\r\n fontStyle: 'bold',\r\n fontSize: 9,\r\n halign: 'center',\r\n cellWidth: 'wrap',\r\n minCellHeight: 10\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: { cellPadding: 2, overflow: 'linebreak', minCellHeight: 6 },\r\n columnStyles,\r\n didParseCell: (data: any) => {\r\n const rowIndex = data.row.index;\r\n const rowData = flatReport[rowIndex];\r\n const isTotalRow = rowData.isTotalRow;\r\n\r\n if (isTotalRow) data.cell.styles.fontStyle = 'bold';\r\n\r\n // highlight negatives in red\r\n if (data.column.index > 3) {\r\n const keyMap = [\"openingBalance\", \"debit\", \"credit\", \"netMovement\", \"closingBalance\"];\r\n const key = keyMap[data.column.index - 4];\r\n const raw = rowData[key];\r\n const num = Number(raw);\r\n if (!isNaN(num) && num < 0) {\r\n data.cell.styles.textColor = [255, 0, 0];\r\n }\r\n }\r\n }\r\n });\r\n\r\n // --- page numbers ---\r\n const totalPages = (doc as any).internal.getNumberOfPages();\r\n for (let i = 1; i <= totalPages; i++) {\r\n doc.setPage(i);\r\n doc.setFontSize(9);\r\n const footerY = doc.internal.pageSize.height - 6;\r\n doc.text(`Page ${i} of ${totalPages}`, pageWidth - 15, footerY, { align: 'right' });\r\n }\r\n\r\n // --- save PDF ---\r\n doc.save(fileName);\r\n }\r\n\r\n exportToExcel(): void {\r\n if (!this.trialBalanceReport?.mainCOAGroups?.length) return;\r\n\r\n const fileName = 'Trial-Balance-Accounts-Raw.xlsx';\r\n const workbook = new ExcelJS.Workbook();\r\n const sheet = workbook.addWorksheet('Trial Balance');\r\n\r\n let currentRow = 1;\r\n\r\n // --- add logo if available ---\r\n if (this.exportService?.logoBase64) {\r\n const base64Data = this.exportService.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({ base64: base64Data, extension: 'png' });\r\n sheet.addImage(imageId, { tl: { col: 0, row: 0 }, ext: { width: 120, height: 60 }, editAs: 'oneCell' });\r\n }\r\n\r\n // --- title ---\r\n const title = 'Xpress Money - MI Accounts';\r\n sheet.mergeCells(1, 3, 1, 9);\r\n const titleCell = sheet.getCell('C1');\r\n titleCell.value = title;\r\n titleCell.font = { size: 15, bold: true };\r\n titleCell.alignment = { horizontal: 'center', vertical: 'middle' };\r\n currentRow = 4;\r\n\r\n // --- metadata ---\r\n const metadata: [string, string][] = [\r\n ['Report Period:', this.reportPeriod],\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\r\n ];\r\n metadata.forEach(([label, value]) => {\r\n sheet.mergeCells(currentRow, 1, currentRow, 6);\r\n const row = sheet.getRow(currentRow++);\r\n row.getCell(1).value = { richText: [{ text: label + ' ', font: { bold: true } }, { text: value }] };\r\n row.getCell(1).alignment = { vertical: 'middle', wrapText: true };\r\n });\r\n currentRow++;\r\n\r\n // --- search criteria heading ---\r\n sheet.mergeCells(currentRow, 1, currentRow, 6);\r\n sheet.getCell(currentRow, 1).value = 'Search Criteria:-';\r\n sheet.getCell(currentRow, 1).font = { bold: true };\r\n currentRow += 2;\r\n\r\n // --- search criteria ---\r\n const searchCriteria = this.searchCriteria;\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1]; // may be undefined\r\n const row = sheet.getRow(currentRow++);\r\n\r\n // Left cell\r\n sheet.mergeCells(row.number, 1, row.number, 3);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: (left?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: left?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(1).alignment = { wrapText: true, vertical: 'middle' };\r\n\r\n // Right cell (only if present)\r\n if (right) {\r\n sheet.mergeCells(row.number, 4, row.number, 6);\r\n row.getCell(4).value = {\r\n richText: [\r\n { text: (right?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: right?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(4).alignment = { wrapText: true, vertical: 'middle' };\r\n }\r\n }\r\n currentRow++;\r\n\r\n // --- headers ---\r\n const headers = [\r\n 'Sr No',\r\n 'COA Code', 'Account Code', 'Account Description',\r\n 'Opening Balance Local Amt', 'Debits Local Amt', 'Credits Local Amt',\r\n 'Net Movement Local Amt', 'Closing Balance Local Amt'\r\n ];\r\n const headerRow = sheet.getRow(currentRow++);\r\n headers.forEach((h, i) => {\r\n const cell = headerRow.getCell(i + 1);\r\n cell.value = h;\r\n cell.font = { bold: true };\r\n cell.alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'DCDCDC' } };\r\n cell.border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } };\r\n });\r\n\r\n // --- rows with 3 decimals for numeric columns ---\r\n const rows = this.flattenReport(this.trialBalanceReport).map((acc, idx) => {\r\n const numericColumns = ['openingBalance', 'debit', 'credit', 'netMovement', 'closingBalance'];\r\n const rowData = numericColumns.map(col => {\r\n const val = Number(acc[col]);\r\n return !isNaN(val) ? val.toFixed(3) : '';\r\n });\r\n return [\r\n idx + 1,\r\n acc.coaCode,\r\n acc.accountCode,\r\n acc.accountDescription,\r\n ...rowData,\r\n acc.isTotalRow || false\r\n ];\r\n });\r\n\r\n rows.forEach(r => {\r\n const row = sheet.getRow(currentRow++);\r\n r.slice(0, 9).forEach((val, i) => {\r\n const cell = row.getCell(i + 1);\r\n // convert back to number for Excel math but show 3 decimals\r\n if (i > 3 && val !== '') cell.value = parseFloat(val.toString());\r\n else cell.value = val;\r\n\r\n cell.border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } };\r\n\r\n // bold total rows\r\n if (r[9]) cell.font = { bold: true };\r\n\r\n // negative numbers red\r\n if (i > 3 && typeof cell.value === 'number' && cell.value < 0) {\r\n cell.font = { color: { argb: 'FF0000' }, bold: r[9] ? true : undefined };\r\n }\r\n\r\n // set number format to show 3 decimals\r\n if (i > 3) cell.numFmt = '0.000';\r\n });\r\n });\r\n\r\n // --- column widths ---\r\n const widths = [8, 15, 15, 40, 20, 20, 20, 20, 20];\r\n widths.forEach((w, i) => sheet.getColumn(i + 1).width = w);\r\n\r\n // --- save file ---\r\n workbook.xlsx.writeBuffer().then(buffer => {\r\n const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\r\n FileSaver.saveAs(blob, fileName);\r\n });\r\n }\r\n\r\n exportToCsv(): void {\r\n if (!this.trialBalanceReport?.mainCOAGroups?.length) return;\r\n\r\n const fileName = 'Trial-Balance-Accounts-Raw.csv';\r\n\r\n // --- metadata ---\r\n const metadata: [string, string][] = [\r\n ['Report Title:', 'Xpress Money - MI Accounts'],\r\n ['Report Period:', this.reportPeriod],\r\n ['Report User & Time : ', `${this.reportUser}@${this.reportTime}`],\r\n ];\r\n\r\n // --- search criteria ---\r\n const searchCriteria = this.searchCriteria;\r\n\r\n // --- table headers (add Sr No at start) ---\r\n const headers = [\r\n 'Sr No',\r\n 'COA Code', 'Account Code', 'Account Description',\r\n 'Opening Balance Local Amt', 'Debits Local Amt', 'Credits Local Amt',\r\n 'Net Movement Local Amt', 'Closing Balance Local Amt'\r\n ];\r\n\r\n // --- table rows (prepend Sr No) ---\r\n const rows: any[][] = this.flattenReport(this.trialBalanceReport).map((acc, index) => [\r\n index + 1, // Sr No\r\n acc.coaCode,\r\n acc.accountCode,\r\n acc.accountDescription,\r\n Number(acc.openingBalance).toFixed(3),\r\n Number(acc.debit).toFixed(3),\r\n Number(acc.credit).toFixed(3),\r\n Number(acc.netMovement).toFixed(3),\r\n Number(acc.closingBalance).toFixed(3)\r\n ]);\r\n\r\n // --- helper to escape CSV values ---\r\n const escapeCsv = (value: any) => {\r\n if (value === null || value === undefined) return '';\r\n const str = value.toString();\r\n return str.includes(',') || str.includes('\"') || str.includes('\\n')\r\n ? `\"${str.replace(/\"/g, '\"\"')}\"`\r\n : str;\r\n };\r\n\r\n // --- build CSV content ---\r\n let csvContent = '';\r\n\r\n // metadata\r\n metadata.forEach(([label, value]) => {\r\n csvContent += `${escapeCsv(label)}${escapeCsv(value)},\\n`;\r\n });\r\n csvContent += '\\n'; // gap\r\n\r\n // --- search criteria heading ---\r\n csvContent += 'Search Criteria:-\\n';\r\n\r\n // --- search criteria (2 per row, dynamic) ---\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1];\r\n\r\n // Left side\r\n if (left) csvContent += `${escapeCsv(left[0])} ${escapeCsv(left[1])},`;\r\n\r\n // Right side\r\n if (right) csvContent += ` ${escapeCsv(right[0])} ${escapeCsv(right[1])},`;\r\n\r\n csvContent += '\\n';\r\n }\r\n csvContent += '\\n'; // blank line after criteria\r\n\r\n // table headers\r\n csvContent += headers.map(h => escapeCsv(h)).join(',') + '\\n';\r\n\r\n // table rows\r\n rows.forEach(row => {\r\n csvContent += row.map(cell => escapeCsv(cell)).join(',') + '\\n';\r\n });\r\n\r\n // --- trigger download ---\r\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\r\n const link = document.createElement('a');\r\n const url = URL.createObjectURL(blob);\r\n link.setAttribute('href', url);\r\n link.setAttribute('download', fileName);\r\n link.style.visibility = 'hidden';\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n\r\n getReport(payload: any) {\r\n const modal = payload?.modal || payload;\r\n\r\n this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy', 'en-US');\r\n this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy', 'en-US');\r\n\r\n const req: TrialBalanceAccountsReportRequestDTO = {\r\n year: Number(modal.financialYear),\r\n dateType: modal.dateType,\r\n fromDate: modal.fromDay,\r\n toDate: modal.toDay,\r\n accountStatus: modal.accountStatus.join(','),\r\n businessUnit: modal.businessUnit,\r\n currency: modal.currency,\r\n companyCode: modal.businessUnit,\r\n reportPeriod: `${formatDate(modal.fromDate, 'dd/MM/yyyy', 'en-US')} - ${formatDate(modal.toDate, 'dd/MM/yyyy', 'en-US')}`,\r\n };\r\n\r\n this.getTrialBalanceAccountsReport(req);\r\n }\r\n\r\n handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n","<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"\r\n (formValid)=\"handleFormValid($event)\"></lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"dataReady && trialBalanceReport?.mainCOAGroups?.length > 0 &&isFormValid\">\r\n <lib-metadata [reportName]=\"'Xpress Money - MI Accounts'\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\"\r\n [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"metaDataTwo\" (exportEvent)=\"handleExport($event)\"\r\n (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <div style=\"position: relative;\" *ngIf=\"rowData && rowData.length > 0\">\r\n <lib-page-size-selector [totalEntries]=\"rowData?.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApi\"></lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"height: 380px;\" [domLayout]=\"'normal'\"\r\n [rowData]=\"rowData\" [defaultColDef]=\"defaultColDef\" [columnDefs]=\"columnDefs\" [rowClassRules]=\"rowClassRules\"\r\n [pagination]=\"true\" (gridReady)=\"onGridReady($event)\" [paginationPageSize]=\"pageSize\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" (paginationChanged)=\"onResize()\"></ag-grid-angular>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"trialBalanceReport?.mainCOAGroups?.length==0\">\r\n No Data found matching your search criteria.\r\n</div>"," import { Component, NgZone, OnInit, inject } from '@angular/core';\r\n // import { Component, ElementRef, HostListener, ViewChild } from '@angular/core';\r\n import { ColDef, GridApi, GridReadyEvent } from 'ag-grid-community';\r\n import { themeAlpine } from '@ag-grid-community/theming';\r\nimport { BranchActivityReport } from '../../models/branch-activity-report/branch-activity-send-report';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\nimport { ExportOptions, GenericExportService } from '../../shared/export-generic.service';\r\nimport { ReportService } from '../../services/report.service';\r\n// import { formatDate } from '@angular/common';\r\n// import { ComponentLoadingStates } from 'src/app/models/component-loading-states';\r\n// import { GenericExportService } from 'src/app/shared/export-generic.service';\r\n// import { ExportOptions } from 'projects/reports-lib/src/lib/shared/export-generic.service';\r\n// import { Injectable } from '@angular/core';\r\n// import jsPDF from 'jspdf';\r\n// import 'jspdf-autotable';\r\n import * as ExcelJS from 'exceljs';\r\n import * as FileSaver from 'file-saver';\r\nimport { formatDate } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-branch-activity-send-summary-report',\r\n templateUrl: './branch-activity-send-summary-report.component.html',\r\n styleUrls: ['./branch-activity-send-summary-report.component.scss']\r\n})\r\nexport class BranchActivitySendSummaryReportComponent 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 = \"\";\r\n reportDate: string;\r\n fromDate: string;\r\n toDate: 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 Summary\";\r\n leftData: Record<string, string>;\r\n metaDataTwo: Record<string, string>;\r\n exportService: GenericExportService = inject(GenericExportService);\r\n searchCriteria: [string, string][] = [];\r\n\r\n // flags\r\n showMessage: boolean = false;\r\n noDataFound: boolean = false;\r\n isFormValid: boolean = false;\r\n clearSearch: boolean = false;\r\n isTotalSummary: boolean = false;\r\n columnDefs: ColDef<BranchActivityReport>[] = [\r\n\r\n {\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 valueFormatter: (params) => {\r\n const row = params.data as BranchActivityReport | null;\r\n\r\n if (row && row.payinCCcode === 'Total') {\r\n return ''; // hide date for total row\r\n }\r\n\r\n return params.value;\r\n }\r\n },\r\n { field: 'product', headerName: 'Product', flex: 1, wrapText: true, autoHeight: true, minWidth: 80, width: 120, tooltipField: 'product' },\r\n { field: 'payoutCCcode', headerName: 'Receive Currency', 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, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payoutAmount' },\r\n { field: 'payinCCcode', headerName: 'Send Currency', 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, 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, 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, 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, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'totalPayinAmount' },\r\n { field: 'transactionCount', headerName: 'Transaction Count', flex: 1, wrapText: true, autoHeight: true, minWidth: 80, maxWidth: 100, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'txnCount' },\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\r\n // rowClassRules = {\r\n // debugger\r\n // 'total-row': params => params.data?.isTotalRow\r\n // };\r\n\r\n rowClassRules = {\r\n 'total-row': (params) => {\r\n console.log('Row Data:', params.data.isTotalRow);\r\n if (params.data.isTotalRow) {\r\n return params.data?.isTotalRow;\r\n }\r\n\r\n }\r\n };\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 if(a == null){\r\n return false;\r\n }\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 params.columnApi.setColumnVisible('businessDateTime', !this.isTotalSummary);\r\n params.api.sizeColumnsToFit();\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 Send Summary\";\r\n const reportTimeFormatter = this.dateValueFormatter('dd/MM/yyyy hh:mm a');\r\n const metadata: [string, string][] = [\r\n ['Report Period ', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time', this.user ? this.user + \" @ \" + this.reportDate : '' + \" @ \" + this.reportDate],\r\n ];\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n //const columns = this.columnDefs;\r\n\r\n //exclude Business Date col for Total Summary Report.\r\n let columns = [...this.columnDefs];\r\n const summaryReport = this.searchCriteria.find(x => x[0] === 'Summary Report:')?.[1];\r\n \r\n if (summaryReport === 'Total Summary') {\r\n columns = columns.filter(col => col.field !== 'businessDateTime');\r\n }\r\n\r\n // const data = this.dataMap;\r\n const cleanedData = {};\r\n\r\n Object.keys(this.dataMap).forEach(key => {\r\n cleanedData[key] = this.dataMap[key].map(row => {\r\n if (row.isTotalRow) {\r\n return {\r\n ...row,\r\n businessDateTime: '',\r\n product: '',\r\n receiveCurrency: '',\r\n receiveAmount: ''\r\n };\r\n }\r\n return row;\r\n });\r\n });\r\n\r\n const data = cleanedData;\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: [],\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.exportToExcel({ title, metadata, searchCriteria, columns, data, options });\r\n break;\r\n case 'pdf':\r\n this.exportService.exportToPdf({ title, metadata, searchCriteria, columns, data, options });\r\n break;\r\n case 'csv':\r\n this.exportService.exportToCsv({ title, metadata, searchCriteria, 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 async exportToExcel({\r\n title,\r\n metadata,\r\n searchCriteria,\r\n columns,\r\n data,\r\n options = {}\r\n }: {\r\n title: string;\r\n metadata: [string, string][];\r\n searchCriteria: [string, string][];\r\n columns: any[];\r\n data: any[] | Record<string, any[]>;\r\n options?: ExportOptions;\r\n }): Promise<void> {\r\n\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\r\n const titleStartCol = 4;\r\n const titleColLetter = String.fromCharCode(64 + titleStartCol);\r\n const titleMergeEnd = String.fromCharCode(64 + totalCols);\r\n\r\n // ===================== LOGO =====================\r\n if (this.logoBase64) {\r\n const base64Data = this.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\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\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 =====================\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 // ===================== METADATA =====================\r\n let metaRowStart = 4;\r\n\r\n metadata.forEach(([label, value], idx) => {\r\n const row = worksheet.getRow(metaRowStart + idx);\r\n\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 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;\r\n currentRow++;\r\n\r\n // ===================== SEARCH CRITERIA =====================\r\n worksheet.mergeCells(currentRow, 1, currentRow, 6);\r\n worksheet.getCell(currentRow, 1).value = 'Search Criteria:-';\r\n worksheet.getCell(currentRow, 1).font = { bold: true };\r\n currentRow += 2;\r\n\r\n for (let i = 0; i < searchCriteria.length; i += 2) {\r\n const left = searchCriteria[i];\r\n const right = searchCriteria[i + 1];\r\n\r\n const row = worksheet.getRow(currentRow++);\r\n\r\n worksheet.mergeCells(row.number, 1, row.number, 3);\r\n row.getCell(1).value = {\r\n richText: [\r\n { text: (left?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: left?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(1).alignment = { wrapText: true, vertical: 'middle' };\r\n\r\n if (right) {\r\n worksheet.mergeCells(row.number, 4, row.number, 6);\r\n row.getCell(4).value = {\r\n richText: [\r\n { text: (right?.[0] ?? '') + ' ', font: { bold: true } },\r\n { text: right?.[1] ?? '' }\r\n ]\r\n };\r\n row.getCell(4).alignment = { wrapText: true, vertical: 'middle' };\r\n }\r\n }\r\n\r\n currentRow++;\r\n\r\n // ===================== HEADER ROW =====================\r\n const headerRow = worksheet.getRow(currentRow++);\r\n\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 = {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: { argb: 'D9D9D9' }\r\n };\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 headerRow.eachCell((cell) => {\r\n if (cell.value === 'Transaction Count') {\r\n cell.value = 'Transaction\\nCount';\r\n cell.alignment = {\r\n horizontal: 'center',\r\n vertical: 'middle',\r\n wrapText: true\r\n };\r\n }\r\n });\r\n // ===================== DATA SECTION =====================\r\n let rowIdx = currentRow;\r\n let serialNumber = 1;\r\n\r\n if (options.groupByKey && !Array.isArray(data)) {\r\n\r\n for (const [group, items] of Object.entries(data)) {\r\n\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 items.forEach((item) => {\r\n\r\n const rowData = this.prepareTableRows([item], columns, options)[0];\r\n const dataRow = worksheet.getRow(rowIdx++);\r\n\r\n const fullRow = [\r\n !item?.isTotalRow ? serialNumber++ : '',\r\n ...rowData\r\n ];\r\n\r\n fullRow.forEach((val, cIdx) => {\r\n const cell = dataRow.getCell(cIdx + 1);\r\n // cell.value = val;\r\n //added by bharati for \r\n const field = columns[cIdx - 1]?.field;\r\n\r\n // ✅ Amount fields (Receive Amount, Send Amount, Total Send Amount etc.)\r\n /*\r\n if (\r\n field=='totalPayinAmount'||\r\n field=='payinAmount'||\r\n field === 'transactionCommissionAmount' ||\r\n field === 'tax'\r\n ) {\r\n if (val !== '' && val !== null && val !== undefined) {\r\n cell.value = Number(val);\r\n cell.numFmt = '#,##0.000';\r\n cell.alignment = { horizontal: 'right', vertical: 'middle' };\r\n } else {\r\n cell.value = '';\r\n }\r\n }\r\n else {\r\n cell.value = val;\r\n } */\r\n\r\n if (item?.isTotalRow && field === 'receiveAmount') {\r\n cell.value = '';\r\n }\r\n else if (\r\n field?.toLowerCase().includes('amount') ||\r\n field === 'serviceFee' ||\r\n field === 'tax'\r\n ) {\r\n if (val !== '' && val !== null && val !== undefined) {\r\n cell.value = val; // already number\r\n cell.numFmt = '#,##0.000'; // Excel formatting\r\n cell.alignment = { horizontal: 'right', vertical: 'middle' };\r\n } else {\r\n cell.value = '';\r\n }\r\n }\r\n else {\r\n cell.value = val;\r\n }\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 if (item?.isTotalRow) {\r\n dataRow.eachCell(cell => {\r\n cell.font = {\r\n ...cell.font,\r\n bold: true,\r\n size: 12\r\n };\r\n });\r\n }\r\n });\r\n }\r\n\r\n } else {\r\n\r\n this.prepareTableRows(data as any[], columns, options)\r\n .forEach((rowData, index) => {\r\n\r\n const dataRow = worksheet.getRow(rowIdx++);\r\n const originalItem = (data as any[])[index];\r\n\r\n const fullRow = [\r\n !originalItem?.isTotalRow ? serialNumber++ : '',\r\n ...rowData\r\n ];\r\n\r\n fullRow.forEach((val, cIdx) => {\r\n const cell = dataRow.getCell(cIdx + 1);\r\n //cell.value = val;\r\n /* if (cIdx === 0) {\r\n cell.value = val;\r\n} else {\r\n\r\n const field = columns[cIdx - 1]?.field;\r\n\r\n if (\r\n field=='totalPayinAmount'||\r\n field=='payinAmount'||\r\n field === 'transactionCommissionAmount' ||\r\n field === 'tax'\r\n ) {\r\n cell.value = Number(val);\r\n cell.numFmt = '#,##0.000';\r\n cell.alignment = { horizontal: 'right', vertical: 'middle' };\r\n }\r\n else {\r\n cell.value = val;\r\n }\r\n} */\r\n\r\n const field = columns[cIdx - 1]?.field;\r\n\r\n if (cIdx === 0) {\r\n cell.value = val;\r\n }\r\n else if (originalItem?.isTotalRow && field === 'receiveAmount') {\r\n cell.value = '';\r\n }\r\n else if (\r\n field?.toLowerCase().includes('amount') ||\r\n field === 'serviceFee' ||\r\n field === 'tax'\r\n ) {\r\n if (val !== '' && val !== null && val !== undefined) {\r\n cell.value = val; // already number\r\n cell.numFmt = '#,##0.000'; // Excel formatting\r\n cell.alignment = { horizontal: 'right', vertical: 'middle' };\r\n } else {\r\n cell.value = '';\r\n }\r\n }\r\n else {\r\n cell.value = val;\r\n }\r\n\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 if (originalItem?.isTotalRow) {\r\n dataRow.eachCell(cell => {\r\n cell.font = {\r\n ...cell.font,\r\n bold: true,\r\n size: 12\r\n };\r\n });\r\n }\r\n });\r\n }\r\n\r\n // ===================== AUTO WIDTH =====================\r\n for (let i = 1; i <= totalCols; i++) {\r\n let maxLength = 10;\r\n\r\n worksheet.eachRow({ includeEmpty: true }, (row) => {\r\n const cell = row.getCell(i);\r\n if (cell.isMerged) return;\r\n\r\n let cellValue = '';\r\n\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\r\n maxLength = Math.max(maxLength, cellValue.length);\r\n });\r\n\r\n worksheet.getColumn(i).width = Math.min(maxLength, 50);\r\n }\r\n //new code:bharati\r\n\r\n worksheet.columns.forEach((column, index) => {\r\n\r\n if (index === 0) return; // skip Sr No\r\n\r\n const field = columns[index - 1]?.field;\r\n\r\n if (field === 'payinAmount') {\r\n column.width = 14;\r\n }\r\n if (field === 'payoutAmount') {\r\n column.width = 15;\r\n }\r\n if (field === 'transactionCount') {\r\n column.width = 14;\r\n }\r\n });\r\n\r\n // worksheet.columns.forEach((column) => {\r\n // if (column.header === 'Send Amount') {\r\n // column.width = 25;\r\n // }\r\n // });\r\n\r\n\r\n // ===================== SAVE FILE =====================\r\n const buffer = await workbook.xlsx.writeBuffer();\r\n\r\n FileSaver.saveAs(\r\n new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n }),\r\n title.replace(/\\s/g, '-') + '.xlsx'\r\n );\r\n }\r\n\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) => ([\r\n // ...filtered.map(col => {\r\n // let value = row[col.field];\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 private prepareTableRows(\r\n data: any[],\r\n columns: any[],\r\n options: ExportOptions = {}\r\n ): any[][] {\r\n\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) => ([\r\n ...filtered.map(col => {\r\n\r\n let value = row[col.field];\r\n\r\n // ✅ Date formatting (keep as string)\r\n if (\r\n col.field &&\r\n (dateFields.includes(col.field) || col.field in dateFieldFormats)\r\n ) {\r\n const format = dateFieldFormats[col.field] || 'dd/MM/yyyy';\r\n value = this.formatDateByFormat(value, format);\r\n }\r\n\r\n // ✅ Special decimal fields → return NUMBER (no toFixed)\r\n else if (\r\n col.field &&\r\n col.field in specialDecimalFields &&\r\n value != null\r\n ) {\r\n value = Number(value);\r\n }\r\n\r\n // ✅ Currency fields → return NUMBER (no toFixed)\r\n else if (\r\n col.field &&\r\n currencyFields.includes(col.field) &&\r\n value != null\r\n ) {\r\n value = Number(value);\r\n }\r\n\r\n return value ?? '';\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\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 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.searchCriteria = criteria.searchCriteria;\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 this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10);\r\n this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10);\r\n console.log(modal);\r\n // Code For Meta Data\r\n this.leftData = {\r\n 'Report Period': this.fromDate + \" - \" + this.toDate,\r\n }\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.user + \" @ \" + this.reportDate,\r\n }\r\n const isTotalSummary = modal.summaryReport === 'Total Summary';\r\n this.isTotalSummary = isTotalSummary;\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 \"SummaryReport\": modal.summaryReport\r\n\r\n };\r\n this.showMessage = true;\r\n this.clearSearch = true;\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getBranchActivitySendSummaryReport(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 this.clearSearch = false;\r\n },\r\n\r\n complete: () => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n this.showReport = true;\r\n this.clearSearch = false;\r\n }\r\n })\r\n }\r\n\r\n handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\">\r\n</lib-search-filter >\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<section *ngIf=\"showReport && isFormValid && !clearSearch\" class=\"my-2\">\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\" [metaDataTwo]=\"metaDataTwo\"(exportEvent)=\"handleExport($event)\" (searchEvent)=\"filter($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\">\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\" \r\n [defaultColDef]=\"defaultColDef\" \r\n [rowData]=\"item.value\" \r\n [rowHeight]=\"20\"\r\n [headerHeight]=\"22\"\r\n [pagination]=\"true\" \r\n [paginationPageSize]=\"paginationArray[i]\" \r\n [rowClassRules]=\"rowClassRules\"\r\n (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 { Component, NgZone, OnInit, inject } from '@angular/core';\r\n// import { ReportService } from 'src/app/services/report.service';\r\n// import { BranchActivityReport } from 'src/app/models/branch-activity-report/branch-activity-send-report';\r\n// import { ColDef, GridApi, GridReadyEvent } from 'ag-grid-community';\r\nimport { themeAlpine } from '@ag-grid-community/theming';\r\n// import { formatDate } from '@angular/common';\r\n// import { ComponentLoadingStates } from 'src/app/models/component-loading-states';\r\n// import { GenericExportService } from 'src/app/shared/export-generic.service';\r\n// import { TransactionMonitoringReport } from 'src/app/models/transaction-monitoring-report/transaction-monitoring-report';\r\n\r\nimport { Component, inject, NgZone, OnInit } from \"@angular/core\";\r\nimport { TransactionMonitoringReport } from \"../../models/transaction-monitoring-report/transaction-monitoring-report\";\r\nimport { ColDef, GridApi, GridReadyEvent } from \"ag-grid-community\";\r\nimport { ComponentLoadingStates } from \"../../models/component-loading-states\";\r\nimport { GenericExportService } from \"../../shared/export-generic.service\";\r\nimport { ReportService } from \"../../services/report.service\";\r\nimport { formatDate } from '@angular/common';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'lib-transaction-monitoring-report',\r\n templateUrl: './transaction-monitoring-report.component.html',\r\n styleUrls: ['./transaction-monitoring-report.component.scss']\r\n})\r\nexport class TransactionMonitoringReportComponent implements OnInit {\r\n dataMap: Record<string, TransactionMonitoringReport[]> = {}\r\n filteredData: Record<string, TransactionMonitoringReport[]> = {}\r\n proxyData: Record<string, TransactionMonitoringReport[]> = {}\r\n showReport: boolean;\r\n paginationArray: any[];\r\n selectedExportOption = 'excel';\r\n gridApis: GridApi[] = [];\r\n gridColumnApi;\r\n user: string = \"\";\r\n reportDate: string;\r\n fromDate: string;\r\n toDate: 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 = \"Transaction Monitoring\";\r\n leftData: Record<string, string>;\r\n metaDataTwo: Record<string, string>;\r\n exportService: GenericExportService = inject(GenericExportService);\r\n searchCriteria: [string, string][] = [];\r\n initialFilters: any;\r\n\r\n // flags\r\n showMessage: boolean = false;\r\n noDataFound: boolean = false;\r\n isFormValid: boolean = false;\r\n\r\n columnDefs: ColDef<TransactionMonitoringReport>[] = [\r\n { field: 'businessDateTime', headerName: 'Business Date', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 70, wrapText: true, autoHeight: true, tooltipField: 'businessDateTime' },\r\n { field: 'transactionDateTime', headerName: 'Transaction Date', flex: 2, headerClass: 'ag-left-aligned-header', minWidth: 100, wrapText: true, autoHeight: true, tooltipField: 'transactionDateTime' },\r\n { field: 'transactionNumber', headerName: 'Transaction Number', flex: 1.8, headerClass: 'ag-left-aligned-header', minWidth: 90, wrapText: true, autoHeight: true, cellClass: 'ag-left-cols-cell compact-cell-transaction', tooltipField: 'transactionNumber' },\r\n { field: 'product', headerName: 'Product', flex: 0.5, headerClass: 'ag-left-aligned-header', minWidth: 60, wrapText: true, autoHeight: true, tooltipField: 'product' },\r\n { field: 'sendAgentCode', headerName: 'SendClient Code', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 90, wrapText: true, autoHeight: true, tooltipField: 'sendAgentCode' },\r\n { field: 'sendAgentBranchCode', headerName: 'SendClient BranchCode', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 90, wrapText: true, autoHeight: true, tooltipField: 'sendAgentBranchCode' },\r\n { field: 'sendAgentBranchName', headerName: 'SendClient BranchName', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 120, wrapText: true, autoHeight: true, tooltipField: 'sendAgentBranchName' },\r\n \r\n { field: 'senderName', headerName: 'Sender Name', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 120, wrapText: true, autoHeight: true, tooltipField: 'senderName' },\r\n { field: 'receiverName', headerName: 'Receiver Name', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 100, wrapText: true, autoHeight: true, tooltipField: 'receiverName' },\r\n { field: 'receiveAgentCode', headerName: 'Receive ClientCode', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 90, wrapText: true, autoHeight: true, tooltipField: 'receiveAgentCode' },\r\n { field: 'payoutCCcode', headerName: 'ReceiveCcy Code', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'payoutCCcode' },\r\n { field: 'payoutAmount', headerName: 'Receive Amount', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 90, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payoutAmount' },\r\n { field: 'payinCCcode', headerName: 'SendCcy Code', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 60, wrapText: true, autoHeight: true, tooltipField: 'payinCCcode' },\r\n { field: 'payinAmount', headerName: 'Send Amount', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payinAmount' },\r\n { field: 'transactionCommissionAmount', headerName: 'Service Fee', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 70, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'transactionCommissionAmount' },\r\n { field: 'tax', headerName: 'Tax', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 60, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'tax' },\r\n { field: 'totalPayinAmount', headerName: 'Total Send Amount', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 100, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'totalPayinAmount' },\r\n { field: 'txnStatusDateAndTime', headerName: 'Txn Status Date & Time', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 100, wrapText: true, autoHeight: true, tooltipField: 'txnStatusDateAndTime' }\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: TransactionMonitoringReport[] = [];\r\n\r\n constructor(private reportService: ReportService, private ngZone: NgZone,private route: ActivatedRoute) { }\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 const params = this.route.snapshot.queryParams;\r\n console.log(\"params length:\" + Object.keys(params).length)\r\n \r\n if (Object.keys(params).length > 0) {\r\n this.initialFilters = {\r\n transactionStatus: params['transactionStatus'],\r\n receiveCountry: params['receiveCountry'],\r\n toDate: params['toDate'],\r\n fromDate: params['fromDate'],\r\n isRealtime: params['isRealtime'] === 'true' || params['isRealtime'] === true\r\n };\r\n } else {\r\n this.initialFilters = null;\r\n }\r\n }\r\n\r\n filter(text: string) {\r\n this.searchText = text;\r\n if (this.searchText == null) {\r\n return;\r\n }\r\n if (this.searchText?.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 if (a == null) {\r\n return false;\r\n }\r\n\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 = \"Transaction Monitoring\";\r\n const reportTimeFormatter = this.dateValueFormatter('dd/MM/yyyy hh:mm a');\r\n const metadata: [string, string][] = [\r\n ['Report Period ', this.fromDate + \" - \" + this.toDate],\r\n ['Report User & Time', this.user ? this.user + \" @ \" + this.reportDate : '' + \" @ \" + this.reportDate],\r\n ];\r\n // --- search criteria ---\r\n const searchCriteria: [string, string][] = this.searchCriteria;\r\n const columns = this.columnDefs;\r\n // const data = this.dataMap; \r\n const data: Record<string, any[]> = {};\r\n\r\n Object.entries(this.dataMap).forEach(([status, rows]) => {\r\n const count = rows.length;\r\n const newKey = `${status} - ${count}`;\r\n data[newKey] = rows;\r\n });\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: [],\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, searchCriteria, columns, data, options });\r\n break;\r\n case 'pdf':\r\n this.exportService.exportToPdf({ title, metadata, searchCriteria, columns, data, options });\r\n break;\r\n case 'csv':\r\n this.exportService.exportToCsv({ title, metadata, searchCriteria, 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 statusOrderMap: any = {\r\n PendingAuthorisation: 1,\r\n Confirmed: 2,\r\n InAMLReview: 3,\r\n InProcess: 3,\r\n AMLRejected: 4,\r\n Decline: 4,\r\n Submitted: 5,\r\n Dispatched: 6,\r\n Paid: 7,\r\n BankRejected: 8,\r\n StopApproved: 9,\r\n ReadytoCancel: 10,\r\n Cancelled: 11,\r\n PaidCancelled: 12,\r\n Void: 13,\r\n Rejected: 14\r\n };\r\n\r\n statusOrderComparator = (a: any, b: any): number => {\r\n const orderA = this.statusOrderMap[a.key] ?? 20;\r\n const orderB = this.statusOrderMap[b.key] ?? 20;\r\n return orderA - orderB;\r\n };\r\n handleSearch(criteria: any): void {\r\n this.searchCriteria = criteria.searchCriteria;\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 // this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10);\r\n //this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10);\r\n this.fromDate = modal.fromDate\r\n ? formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10)\r\n : null;\r\n\r\n this.toDate = modal.toDate\r\n ? formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10)\r\n : null;\r\n \r\n console.log(modal);\r\n // Code For Meta Data\r\n this.leftData = {\r\n // 'Report Period': this.fromDate + \" - \" + this.toDate,\r\n 'Report Period': this.fromDate && this.toDate\r\n ? `${this.fromDate} - ${this.toDate}`\r\n : ''\r\n }\r\n\r\n this.metaDataTwo = {\r\n 'Report User & Time': this.user + \" @ \" + 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 \"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 \"IsrealTime\": criteria.isRealtime\r\n };\r\n this.showMessage = true;\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getTransactionMonitoringReport(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 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 handleFormValid(isValid: boolean): void {\r\n this.isFormValid = isValid;\r\n }\r\n\r\n}\r\n","<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n [initialFilters]=\"initialFilters\"\r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\">\r\n</lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<section *ngIf=\"showReport && isFormValid\" class=\"my-2\">\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\" [metaDataTwo]=\"metaDataTwo\"(exportEvent)=\"handleExport($event)\" (searchEvent)=\"filter($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\">\r\n <!-- <ng-container *ngFor=\"let item of filteredData | keyvalue; let i = index\"> -->\r\n <ng-container *ngFor=\"let item of filteredData | keyvalue: statusOrderComparator; 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 }} - {{item.value.length\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 { 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\nimport { AccountingReportComponent } from './components/accounting-report/accounting-report.component';\r\nimport { CreditLimitStatusEnquiryReportComponent } from './components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component';\r\nimport { FundingReportComponent } from './components/funding-report/funding-report.component';\r\n\r\nimport { TrialBalanceAccountsReportComponent } from './components/trial-balance-accounts-report/trial-balance-accounts-report.component';\r\nimport { BranchActivitySendSummaryReportComponent } from './components/branch-activity-send-summary-report/branch-activity-send-summary-report.component';\r\nimport { TransactionMonitoringReportComponent } from './components/transaction-monitoring-report/transaction-monitoring-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 CreditLimitStatusEnquiryReportComponent,\r\n FundingReportComponent,\r\n TrialBalanceAccountsReportComponent,\r\n BranchActivitySendSummaryReportComponent,\r\n TransactionMonitoringReportComponent\r\n\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 FundingReportComponent,\r\n CreditLimitStatusEnquiryReportComponent,\r\n TrialBalanceAccountsReportComponent,\r\n BranchActivitySendSummaryReportComponent ,\r\n TransactionMonitoringReportComponent\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 TransactionCount: number;\r\n payinCCcode: string;\r\n IsTotalRow:boolean\r\n isTotalRow: boolean;\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","export class CreditLimitStatusEnquiryReportModel {\r\n agentName: string;\r\n createdDate: string;\r\n authorisationDate: string;\r\n requestCreatedDate: string;\r\n authorisedDate: string;\r\n requestNumber: number;\r\n currencyCode: string;\r\n agentCode: string;\r\n creditLimit: number;\r\n requestTCLAmount: number;\r\n requestStatus: string;\r\n authorisingUserId: string;\r\n creditTransferNo: number;\r\n requestingUserId: string;\r\n authorisingUser: string;\r\n requestingUser: string;\r\n requestDescription: string;\r\n}\r\n\r\nexport class CreditLimitEnquiryBusinessPartnerAgentModel {\r\n name: string;\r\n businessPartnerType: string;\r\n code: string;\r\n id: number;\r\n sortOrder: number;\r\n}\r\n\r\n","export class TransactionMonitoringRequestDomainModel {\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 BranchActivityReportDictionay{\r\n \r\n// }\r\n\r\nexport class TransactionMonitoringReport {\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 TxnStatusDateAndTime:string;\r\n SendAgentCode:string;\r\n SendAgentBranchName:string;\r\n SenderName:string;\r\n ReceiverName:string;\r\n\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\nexport * from './lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component';\r\nexport * from './lib/components/funding-report/funding-report.component';\r\nexport * from './lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component';\r\nexport * from './lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component';\r\nexport * from './lib/components/transaction-monitoring-report/transaction-monitoring-report.component';\r\n\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'\r\nexport * from './lib/models/credit-limit-status-enquiry-report/credit-limit-status-enquiry.model';\r\nexport * from './lib/models/statement-of-account-report/statement-of-accounts.model';\r\nexport * from './lib/models/trial-balance-accounts-report/trial-balance-accounts.models'\r\nexport * from './lib/models/transaction-monitoring-report/transaction-monitoring-report-request-domain-model'\r\nexport * from './lib/models/transaction-monitoring-report/transaction-monitoring-report'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ConfigService","i1","i3","i1.ReportService","i3.ConfigService","i4","i5","i6","i8.LoaderComponent","i1.ExportService","i2.ReportService","i7.PageSizeSelectorComponent","i8.MetadataComponent","i9.LoaderComponent","i10.SearchFilterComponent","i2.ExportService","i6.PageSizeSelectorComponent","i7.MetadataComponent","i9.SearchFilterComponent","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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"}