@sachin9822/reports-lib 0.0.214 → 0.0.215
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/accounting-report/accounting-report.component.mjs +19 -1
- package/esm2020/lib/components/branch-activity-send-report/branch-activity-send-report.component.mjs +21 -1
- package/esm2020/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.mjs +19 -1
- package/esm2020/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.mjs +21 -1
- package/esm2020/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.mjs +19 -3
- package/esm2020/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.mjs +26 -5
- package/esm2020/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.mjs +23 -50
- package/esm2020/lib/models/trial-balance-accounts-report/trial-balance-accounts.models.mjs +1 -1
- package/esm2020/lib/services/report.service.mjs +4 -4
- package/esm2020/lib/shared/search-filter/search-filter.component.mjs +31 -18
- package/fesm2015/sachin9822-reports-lib.mjs +296 -76
- package/fesm2015/sachin9822-reports-lib.mjs.map +1 -1
- package/fesm2020/sachin9822-reports-lib.mjs +174 -75
- package/fesm2020/sachin9822-reports-lib.mjs.map +1 -1
- package/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.d.ts +13 -0
- package/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.d.ts +1 -0
- package/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.d.ts +2 -3
- package/lib/models/trial-balance-accounts-report/trial-balance-accounts.models.d.ts +0 -1
- package/lib/services/report.service.d.ts +1 -1
- package/lib/shared/search-filter/search-filter.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -276,9 +276,9 @@ class ReportService {
|
|
|
276
276
|
const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetTrialBalanceAccountsReport`;
|
|
277
277
|
return this.http.post(apiPath, object).pipe(map(response => response || undefined));
|
|
278
278
|
}
|
|
279
|
-
// Api 2 - Get Business
|
|
280
|
-
|
|
281
|
-
const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/
|
|
279
|
+
// Api 2 - Get Business Line
|
|
280
|
+
GetBusinessLineForTrialBalanceAccountsReport() {
|
|
281
|
+
const apiPath = `${this.reportServiceUrl}/api/v1/Report/TrialBalanceAccountsReport/GetBusinessLine`;
|
|
282
282
|
return this.http.get(apiPath).pipe(map(response => {
|
|
283
283
|
return response;
|
|
284
284
|
}));
|
|
@@ -1415,7 +1415,7 @@ class SearchFilterComponent {
|
|
|
1415
1415
|
this.isSelectAllChecked = true;
|
|
1416
1416
|
this.erroMessage = 'Error in Loading Data';
|
|
1417
1417
|
// for Trial Balance - Accounts Report
|
|
1418
|
-
this.
|
|
1418
|
+
this.businessLines = [];
|
|
1419
1419
|
this.accountStatuses = [];
|
|
1420
1420
|
this.currency = [];
|
|
1421
1421
|
this.financialYears = [];
|
|
@@ -1438,7 +1438,7 @@ class SearchFilterComponent {
|
|
|
1438
1438
|
'Accounting': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'sendCurrency', 'transactionStatus', 'sendCountry', 'receiveCountry'],
|
|
1439
1439
|
'Credit Limit Status Enquiry': ['client', 'fromDate', 'toDate', 'transactionStatusSingleSelect'],
|
|
1440
1440
|
'Funding': ['fromDate', 'toDate'],
|
|
1441
|
-
'Trial Balance - Accounts': ['
|
|
1441
|
+
'Trial Balance - Accounts': ['businessLine', 'accountStatus', 'currency', 'financialYear', 'fromMonth', 'toMonth', 'dateTypeForTrialBalanceAccounts', 'fromDay', 'toDay'],
|
|
1442
1442
|
'Branch Activity Send Summary': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'receiveCurrency', 'transactionStatus', 'sendCountry', 'receiveCountry', 'summaryReport'],
|
|
1443
1443
|
'Transaction Monitoring': ['client', 'fromDate', 'toDate', 'branch', 'transactionProduct', 'receiveCurrency', 'transactionStatus', 'sendCountry', 'receiveCountry'],
|
|
1444
1444
|
// Add more report types here
|
|
@@ -1469,7 +1469,7 @@ class SearchFilterComponent {
|
|
|
1469
1469
|
receiveCountry: 'Receive Country:',
|
|
1470
1470
|
sendBusinessPartner: 'Sender Partner:',
|
|
1471
1471
|
recvBusinessPartner: 'Receiver Partner:',
|
|
1472
|
-
|
|
1472
|
+
businessLine: 'Business Line:',
|
|
1473
1473
|
financialYear: 'Financial Year:',
|
|
1474
1474
|
fromMonth: 'From Month:',
|
|
1475
1475
|
toMonth: 'To Month:',
|
|
@@ -1498,7 +1498,7 @@ class SearchFilterComponent {
|
|
|
1498
1498
|
receiveCurrency: 'currency',
|
|
1499
1499
|
sendBusinessPartner: 'name',
|
|
1500
1500
|
recvBusinessPartner: 'name',
|
|
1501
|
-
|
|
1501
|
+
businessLine: 'businessLine',
|
|
1502
1502
|
financialYear: 'financialYear',
|
|
1503
1503
|
fromMonth: 'period',
|
|
1504
1504
|
toMonth: 'pMonthName',
|
|
@@ -1519,7 +1519,7 @@ class SearchFilterComponent {
|
|
|
1519
1519
|
receiveCurrency: 'currencyCode',
|
|
1520
1520
|
sendBusinessPartner: 'id',
|
|
1521
1521
|
recvBusinessPartner: 'id',
|
|
1522
|
-
|
|
1522
|
+
businessLine: 'businessLine',
|
|
1523
1523
|
financialYear: 'financialYear',
|
|
1524
1524
|
fromMonth: 'pOrder',
|
|
1525
1525
|
toMonth: 'pMonth',
|
|
@@ -1888,7 +1888,7 @@ class SearchFilterComponent {
|
|
|
1888
1888
|
if (this.ReportName == "Trial Balance - Accounts") {
|
|
1889
1889
|
this.searchForm = this.fb.group({
|
|
1890
1890
|
// Added fields
|
|
1891
|
-
|
|
1891
|
+
businessLine: ['All'],
|
|
1892
1892
|
accountStatus: [['Active']],
|
|
1893
1893
|
financialYear: [new Date().getFullYear().toString()],
|
|
1894
1894
|
fromMonth: [''],
|
|
@@ -2182,7 +2182,7 @@ class SearchFilterComponent {
|
|
|
2182
2182
|
loadInitialDataForTrialBalanceAccounts() {
|
|
2183
2183
|
this.loadingState = ComponentLoadingState.Loading;
|
|
2184
2184
|
forkJoin({
|
|
2185
|
-
|
|
2185
|
+
businessLines: this.reportService.GetBusinessLineForTrialBalanceAccountsReport()
|
|
2186
2186
|
.pipe(catchError(err => of([]))),
|
|
2187
2187
|
accountStatuses: this.reportService.GetAccountStatusForTrialBalanceAccountsReport()
|
|
2188
2188
|
.pipe(catchError(err => of([]))),
|
|
@@ -2199,7 +2199,7 @@ class SearchFilterComponent {
|
|
|
2199
2199
|
})
|
|
2200
2200
|
.pipe(switchMap(results => {
|
|
2201
2201
|
// assign base results
|
|
2202
|
-
this.
|
|
2202
|
+
this.businessLines = results.businessLines.filter(b => b.businessLine?.trim() !== '');
|
|
2203
2203
|
this.accountStatuses = results.accountStatuses;
|
|
2204
2204
|
this.dateTypes = results.dateTypes;
|
|
2205
2205
|
this.financialYears = results.financialYears
|
|
@@ -2244,7 +2244,7 @@ class SearchFilterComponent {
|
|
|
2244
2244
|
this.toMonths = allResults.toMonths;
|
|
2245
2245
|
// patch form defaults
|
|
2246
2246
|
this.searchForm.patchValue({
|
|
2247
|
-
|
|
2247
|
+
businessLine: this.businessLines[0]?.businessLine ?? null,
|
|
2248
2248
|
accountStatus: this.accountStatuses.length ? [this.accountStatuses[0].statusCode] : [],
|
|
2249
2249
|
financialYear: this.paramDateDefault[0]?.financialYear ?? new Date().getFullYear().toString(),
|
|
2250
2250
|
fromMonth: this.paramDateDefault[0]?.financialMonth,
|
|
@@ -2268,9 +2268,16 @@ class SearchFilterComponent {
|
|
|
2268
2268
|
this.searchForm.get('fromDate')?.valueChanges.subscribe(fromDateStr => {
|
|
2269
2269
|
const toDateControl = this.searchForm.get('toDate');
|
|
2270
2270
|
const toDateStr = toDateControl?.value;
|
|
2271
|
-
if (!fromDateStr
|
|
2271
|
+
if (!fromDateStr)
|
|
2272
2272
|
return;
|
|
2273
2273
|
const fromDate = new Date(fromDateStr);
|
|
2274
|
+
// If ToDate is empty → set default
|
|
2275
|
+
if (!toDateControl?.value) {
|
|
2276
|
+
const maxToDate = new Date(fromDate);
|
|
2277
|
+
maxToDate.setDate(fromDate.getDate() + 30);
|
|
2278
|
+
toDateControl.patchValue(maxToDate.toISOString().split("T")[0]);
|
|
2279
|
+
return;
|
|
2280
|
+
}
|
|
2274
2281
|
const toDate = new Date(toDateStr);
|
|
2275
2282
|
const maxToDate = new Date(fromDate);
|
|
2276
2283
|
maxToDate?.setDate(fromDate.getDate() + 30);
|
|
@@ -2286,9 +2293,16 @@ class SearchFilterComponent {
|
|
|
2286
2293
|
this.searchForm.get('toDate')?.valueChanges.subscribe(toDateStr => {
|
|
2287
2294
|
const fromDateControl = this.searchForm.get('fromDate');
|
|
2288
2295
|
const fromDateStr = fromDateControl?.value;
|
|
2289
|
-
if (!toDateStr
|
|
2296
|
+
if (!toDateStr)
|
|
2290
2297
|
return;
|
|
2291
2298
|
const toDate = new Date(toDateStr);
|
|
2299
|
+
// If FromDate is empty → set default
|
|
2300
|
+
if (!fromDateControl?.value) {
|
|
2301
|
+
const minFromDate = new Date(toDate);
|
|
2302
|
+
minFromDate.setDate(toDate.getDate() - 30);
|
|
2303
|
+
fromDateControl.patchValue(minFromDate.toISOString().split("T")[0]);
|
|
2304
|
+
return;
|
|
2305
|
+
}
|
|
2292
2306
|
const fromDate = new Date(fromDateStr);
|
|
2293
2307
|
this.disabledDate = this.toNgbDateStruct(fromDate);
|
|
2294
2308
|
const minFromDate = new Date(toDate);
|
|
@@ -2985,7 +2999,7 @@ class SearchFilterComponent {
|
|
|
2985
2999
|
const formValue = this.searchForm.value;
|
|
2986
3000
|
// formValue.fromDate = this.toIsoFormat(formValue.fromDate);
|
|
2987
3001
|
// formValue.toDate = this.toIsoFormat(formValue.toDate);
|
|
2988
|
-
if (this.initialFilters?.isRealtime && (formValue.fromDate
|
|
3002
|
+
if (this.initialFilters?.isRealtime && (!formValue.fromDate && !formValue.toDate)) {
|
|
2989
3003
|
formValue.fromDate = null;
|
|
2990
3004
|
formValue.toDate = null;
|
|
2991
3005
|
}
|
|
@@ -3010,7 +3024,6 @@ class SearchFilterComponent {
|
|
|
3010
3024
|
return {
|
|
3011
3025
|
modal: formValue,
|
|
3012
3026
|
sysUserID: this.currentUser,
|
|
3013
|
-
isRealtime: this.initialFilters?.isRealtime,
|
|
3014
3027
|
searchCriteria: searchCriteria
|
|
3015
3028
|
};
|
|
3016
3029
|
}
|
|
@@ -3335,8 +3348,8 @@ class SearchFilterComponent {
|
|
|
3335
3348
|
case 'recvBusinessPartner':
|
|
3336
3349
|
list = this.recvBusinessPartnerAgents;
|
|
3337
3350
|
break;
|
|
3338
|
-
case '
|
|
3339
|
-
list = this.
|
|
3351
|
+
case 'businessLine':
|
|
3352
|
+
list = this.businessLines;
|
|
3340
3353
|
break;
|
|
3341
3354
|
case 'financialYear':
|
|
3342
3355
|
list = this.financialYears;
|
|
@@ -3480,10 +3493,10 @@ class SearchFilterComponent {
|
|
|
3480
3493
|
}
|
|
3481
3494
|
}
|
|
3482
3495
|
SearchFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SearchFilterComponent, deps: [{ token: ReportService }, { token: i2.FormBuilder }, { token: ConfigService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
3483
|
-
SearchFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SearchFilterComponent, selector: "lib-search-filter", inputs: { ReportName: "ReportName", initialFilters: "initialFilters" }, outputs: { searchClicked: "searchClicked", formValid: "formValid" }, ngImport: i0, template: "<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>", styles: ["@charset \"UTF-8\";.filter-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;grid-column:span 3}.form-field{display:flex;flex-direction:column;padding:0 4px 0 0!important;min-width:0}.col-custom-10-5{flex:0 0 87.5%!important;max-width:87.5%!important}.col-custom-1-5{flex:0 0 12.5%!important;max-width:12.5%!important;padding:0!important}::ng-deep .ng-select .ng-select-container .ng-value-container{overflow:hidden;flex-wrap:nowrap}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}::ng-deep .ng-select .ng-select-container{height:32px!important;min-height:32px!important;font-size:12px!important;align-items:center}.form-label{margin-bottom:0!important}.date-group{height:32px!important}::ng-deep .transaction-status-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{padding:4px 0!important}::ng-deep .ng-select .ng-select-container .ng-value-container{padding-top:0}::ng-deep .ng-dropdown-panel .ng-option{font-size:12px}.btn-report{border-radius:4px;background-color:#8091a5;color:#fff!important;font-size:14px!important;height:32px;padding:4px 15px!important;margin-left:15px!important;width:auto!important;margin-right:7px!important}::ng-deep .ng-select .ng-select-container:focus-within{box-shadow:0 0 5px 3px #1877f2!important}::ng-deep .ng-select .ng-select-container:focus{box-shadow:0 0 5px 3px #1877f2!important}.fa-calendar{--fa: \"\\f073\" !important}.dpicker{border:1px solid #ccc!important;font-size:12px!important;font-weight:400!important;height:32px!important}.dpicker:focus{box-shadow:0 0 5px 3px #1877f2!important}.cal{height:32px!important;background-color:#1877f2;margin-left:0!important}.cal:focus{box-shadow:none!important}.label-data{font-weight:600!important;font-size:.7rem!important;line-height:1rem}@media (max-width: 768px){.filter-grid{grid-template-columns:1fr;gap:12px}}.input-group-button{background:none!important;border:1px solid #1877F2!important;background-color:#1877f2!important;border-radius:0 3px 3px 0!important;min-width:35px;margin-left:1px;height:32px!important;cursor:pointer}.input-group-button .fa{color:#fff}.input-group-button:focus{box-shadow:0 0 5px 3px #009ee054}.input-group-button:focus{outline:none!important;box-shadow:none!important}.Breadcrumb h1,.Breadcrumb h2{font-weight:700}.row{display:flex;flex-wrap:wrap;margin-right:0;margin-left:0}.col-2{padding-left:0}.col-10{padding-right:0}.col-custom-10-5{padding-right:0!important;padding-left:0}::ng-deep .invalid-select.ng-select>.ng-select-container{background-color:#d521211a;border:2px solid red!important}.invalid-date{background-color:#d521211a;border:2px solid red!important}\n"], dependencies: [{ kind: "directive", type: i2$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: angularCommon.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: angularCommon.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: angularCommon.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: angularCommon.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: angularCommon.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i7$1.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i7.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i7.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i7.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "component", type: LoaderComponent, selector: "app-loader" }] });
|
|
3496
|
+
SearchFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SearchFilterComponent, selector: "lib-search-filter", inputs: { ReportName: "ReportName", initialFilters: "initialFilters" }, outputs: { searchClicked: "searchClicked", formValid: "formValid" }, ngImport: i0, template: "<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 Line -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'businessLine'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Business Line</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"businessLines\" bindLabel=\"businessLine\" bindValue=\"businessLine\"\r\n placeholder=\"Select Business Line\" [clearable]=\"false\" formControlName=\"businessLine\"\r\n [ngClass]=\"{'invalid-select': searchForm.get('businessLine')?.invalid && (searchForm.get('businessLine')?.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>", styles: ["@charset \"UTF-8\";.filter-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;grid-column:span 3}.form-field{display:flex;flex-direction:column;padding:0 4px 0 0!important;min-width:0}.col-custom-10-5{flex:0 0 87.5%!important;max-width:87.5%!important}.col-custom-1-5{flex:0 0 12.5%!important;max-width:12.5%!important;padding:0!important}::ng-deep .ng-select .ng-select-container .ng-value-container{overflow:hidden;flex-wrap:nowrap}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}::ng-deep .ng-select .ng-select-container{height:32px!important;min-height:32px!important;font-size:12px!important;align-items:center}.form-label{margin-bottom:0!important}.date-group{height:32px!important}::ng-deep .transaction-status-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{padding:4px 0!important}::ng-deep .ng-select .ng-select-container .ng-value-container{padding-top:0}::ng-deep .ng-dropdown-panel .ng-option{font-size:12px}.btn-report{border-radius:4px;background-color:#8091a5;color:#fff!important;font-size:14px!important;height:32px;padding:4px 15px!important;margin-left:15px!important;width:auto!important;margin-right:7px!important}::ng-deep .ng-select .ng-select-container:focus-within{box-shadow:0 0 5px 3px #1877f2!important}::ng-deep .ng-select .ng-select-container:focus{box-shadow:0 0 5px 3px #1877f2!important}.fa-calendar{--fa: \"\\f073\" !important}.dpicker{border:1px solid #ccc!important;font-size:12px!important;font-weight:400!important;height:32px!important}.dpicker:focus{box-shadow:0 0 5px 3px #1877f2!important}.cal{height:32px!important;background-color:#1877f2;margin-left:0!important}.cal:focus{box-shadow:none!important}.label-data{font-weight:600!important;font-size:.7rem!important;line-height:1rem}@media (max-width: 768px){.filter-grid{grid-template-columns:1fr;gap:12px}}.input-group-button{background:none!important;border:1px solid #1877F2!important;background-color:#1877f2!important;border-radius:0 3px 3px 0!important;min-width:35px;margin-left:1px;height:32px!important;cursor:pointer}.input-group-button .fa{color:#fff}.input-group-button:focus{box-shadow:0 0 5px 3px #009ee054}.input-group-button:focus{outline:none!important;box-shadow:none!important}.Breadcrumb h1,.Breadcrumb h2{font-weight:700}.row{display:flex;flex-wrap:wrap;margin-right:0;margin-left:0}.col-2{padding-left:0}.col-10{padding-right:0}.col-custom-10-5{padding-right:0!important;padding-left:0}::ng-deep .invalid-select.ng-select>.ng-select-container{background-color:#d521211a;border:2px solid red!important}.invalid-date{background-color:#d521211a;border:2px solid red!important}\n"], dependencies: [{ kind: "directive", type: i2$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: angularCommon.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: angularCommon.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: angularCommon.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: angularCommon.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: angularCommon.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i7$1.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i7.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i7.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i7.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "component", type: LoaderComponent, selector: "app-loader" }] });
|
|
3484
3497
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SearchFilterComponent, decorators: [{
|
|
3485
3498
|
type: Component,
|
|
3486
|
-
args: [{ selector: 'lib-search-filter', template: "<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>", styles: ["@charset \"UTF-8\";.filter-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;grid-column:span 3}.form-field{display:flex;flex-direction:column;padding:0 4px 0 0!important;min-width:0}.col-custom-10-5{flex:0 0 87.5%!important;max-width:87.5%!important}.col-custom-1-5{flex:0 0 12.5%!important;max-width:12.5%!important;padding:0!important}::ng-deep .ng-select .ng-select-container .ng-value-container{overflow:hidden;flex-wrap:nowrap}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}::ng-deep .ng-select .ng-select-container{height:32px!important;min-height:32px!important;font-size:12px!important;align-items:center}.form-label{margin-bottom:0!important}.date-group{height:32px!important}::ng-deep .transaction-status-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{padding:4px 0!important}::ng-deep .ng-select .ng-select-container .ng-value-container{padding-top:0}::ng-deep .ng-dropdown-panel .ng-option{font-size:12px}.btn-report{border-radius:4px;background-color:#8091a5;color:#fff!important;font-size:14px!important;height:32px;padding:4px 15px!important;margin-left:15px!important;width:auto!important;margin-right:7px!important}::ng-deep .ng-select .ng-select-container:focus-within{box-shadow:0 0 5px 3px #1877f2!important}::ng-deep .ng-select .ng-select-container:focus{box-shadow:0 0 5px 3px #1877f2!important}.fa-calendar{--fa: \"\\f073\" !important}.dpicker{border:1px solid #ccc!important;font-size:12px!important;font-weight:400!important;height:32px!important}.dpicker:focus{box-shadow:0 0 5px 3px #1877f2!important}.cal{height:32px!important;background-color:#1877f2;margin-left:0!important}.cal:focus{box-shadow:none!important}.label-data{font-weight:600!important;font-size:.7rem!important;line-height:1rem}@media (max-width: 768px){.filter-grid{grid-template-columns:1fr;gap:12px}}.input-group-button{background:none!important;border:1px solid #1877F2!important;background-color:#1877f2!important;border-radius:0 3px 3px 0!important;min-width:35px;margin-left:1px;height:32px!important;cursor:pointer}.input-group-button .fa{color:#fff}.input-group-button:focus{box-shadow:0 0 5px 3px #009ee054}.input-group-button:focus{outline:none!important;box-shadow:none!important}.Breadcrumb h1,.Breadcrumb h2{font-weight:700}.row{display:flex;flex-wrap:wrap;margin-right:0;margin-left:0}.col-2{padding-left:0}.col-10{padding-right:0}.col-custom-10-5{padding-right:0!important;padding-left:0}::ng-deep .invalid-select.ng-select>.ng-select-container{background-color:#d521211a;border:2px solid red!important}.invalid-date{background-color:#d521211a;border:2px solid red!important}\n"] }]
|
|
3499
|
+
args: [{ selector: 'lib-search-filter', template: "<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 Line -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'businessLine'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Business Line</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"businessLines\" bindLabel=\"businessLine\" bindValue=\"businessLine\"\r\n placeholder=\"Select Business Line\" [clearable]=\"false\" formControlName=\"businessLine\"\r\n [ngClass]=\"{'invalid-select': searchForm.get('businessLine')?.invalid && (searchForm.get('businessLine')?.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>", styles: ["@charset \"UTF-8\";.filter-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;grid-column:span 3}.form-field{display:flex;flex-direction:column;padding:0 4px 0 0!important;min-width:0}.col-custom-10-5{flex:0 0 87.5%!important;max-width:87.5%!important}.col-custom-1-5{flex:0 0 12.5%!important;max-width:12.5%!important;padding:0!important}::ng-deep .ng-select .ng-select-container .ng-value-container{overflow:hidden;flex-wrap:nowrap}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}::ng-deep .ng-select .ng-select-container{height:32px!important;min-height:32px!important;font-size:12px!important;align-items:center}.form-label{margin-bottom:0!important}.date-group{height:32px!important}::ng-deep .transaction-status-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{padding:4px 0!important}::ng-deep .ng-select .ng-select-container .ng-value-container{padding-top:0}::ng-deep .ng-dropdown-panel .ng-option{font-size:12px}.btn-report{border-radius:4px;background-color:#8091a5;color:#fff!important;font-size:14px!important;height:32px;padding:4px 15px!important;margin-left:15px!important;width:auto!important;margin-right:7px!important}::ng-deep .ng-select .ng-select-container:focus-within{box-shadow:0 0 5px 3px #1877f2!important}::ng-deep .ng-select .ng-select-container:focus{box-shadow:0 0 5px 3px #1877f2!important}.fa-calendar{--fa: \"\\f073\" !important}.dpicker{border:1px solid #ccc!important;font-size:12px!important;font-weight:400!important;height:32px!important}.dpicker:focus{box-shadow:0 0 5px 3px #1877f2!important}.cal{height:32px!important;background-color:#1877f2;margin-left:0!important}.cal:focus{box-shadow:none!important}.label-data{font-weight:600!important;font-size:.7rem!important;line-height:1rem}@media (max-width: 768px){.filter-grid{grid-template-columns:1fr;gap:12px}}.input-group-button{background:none!important;border:1px solid #1877F2!important;background-color:#1877f2!important;border-radius:0 3px 3px 0!important;min-width:35px;margin-left:1px;height:32px!important;cursor:pointer}.input-group-button .fa{color:#fff}.input-group-button:focus{box-shadow:0 0 5px 3px #009ee054}.input-group-button:focus{outline:none!important;box-shadow:none!important}.Breadcrumb h1,.Breadcrumb h2{font-weight:700}.row{display:flex;flex-wrap:wrap;margin-right:0;margin-left:0}.col-2{padding-left:0}.col-10{padding-right:0}.col-custom-10-5{padding-right:0!important;padding-left:0}::ng-deep .invalid-select.ng-select>.ng-select-container{background-color:#d521211a;border:2px solid red!important}.invalid-date{background-color:#d521211a;border:2px solid red!important}\n"] }]
|
|
3487
3500
|
}], ctorParameters: function () { return [{ type: ReportService }, { type: i2.FormBuilder }, { type: ConfigService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { ReportName: [{
|
|
3488
3501
|
type: Input
|
|
3489
3502
|
}], searchClicked: [{
|
|
@@ -3761,11 +3774,27 @@ class TransactionEnquiryComponent {
|
|
|
3761
3774
|
{ headerName: 'Send Client', field: 'sendAgent', flex: 1, minWidth: 120, tooltipField: 'sendAgent' },
|
|
3762
3775
|
{ headerName: 'Send Client Branch', field: 'sendAgtBranch', flex: 1, minWidth: 120, tooltipField: 'sendAgtBranch' },
|
|
3763
3776
|
{ headerName: 'Receive Client', field: 'recvAgent', flex: 1, minWidth: 120, tooltipField: 'recvAgent' },
|
|
3777
|
+
{ headerName: 'Sender Name', field: 'sendName', flex: 1, minWidth: 120, tooltipField: 'sendName',
|
|
3778
|
+
valueFormatter: (params) => { if (!params.value)
|
|
3779
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
3780
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
3781
|
+
return 'NO'; return ''; },
|
|
3782
|
+
tooltipValueGetter: (params) => { if (!params.value)
|
|
3783
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
3784
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
3785
|
+
return 'NO'; return ''; } },
|
|
3764
3786
|
{ headerName: 'Receive Client Branch', field: 'rcvAgtBranch', flex: 1, minWidth: 120, tooltipField: 'rcvAgtBranch' },
|
|
3765
|
-
{ headerName: 'Sender Name', field: 'sendName', flex: 1, minWidth: 120, tooltipField: 'sendName' },
|
|
3766
3787
|
{ headerName: 'Sender ID Type', field: 'sendIdType', flex: 1, minWidth: 90, tooltipField: 'sendIdType' },
|
|
3788
|
+
{ headerName: 'Benf. Name', field: 'benName', flex: 1, minWidth: 100, tooltipField: 'benName',
|
|
3789
|
+
valueFormatter: (params) => { if (!params.value)
|
|
3790
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
3791
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
3792
|
+
return 'NO'; return ''; },
|
|
3793
|
+
tooltipValueGetter: (params) => { if (!params.value)
|
|
3794
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
3795
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
3796
|
+
return 'NO'; return ''; } },
|
|
3767
3797
|
{ headerName: 'Sender ID Number', field: 'sendIdNumber', flex: 1, minWidth: 85, tooltipField: 'sendIdNumber' },
|
|
3768
|
-
{ headerName: 'Benf. Name', field: 'benName', flex: 1, minWidth: 100, tooltipField: 'benName' },
|
|
3769
3798
|
{ headerName: 'Receive Currency', field: 'payOutCurrency', flex: 1, minWidth: 80, tooltipField: 'payOutCurrency' },
|
|
3770
3799
|
{ headerName: 'Receive Amount', field: 'payOutAmount', flex: 1, minWidth: 100, cellClass: 'ag-right-aligned-cell ', tooltipField: 'payOutAmount' },
|
|
3771
3800
|
{ headerName: 'Send Currency', field: 'payInCurrency', flex: 1, minWidth: 70, tooltipField: 'payInCurrency' },
|
|
@@ -4015,6 +4044,26 @@ class BranchActivitySendReportComponent {
|
|
|
4015
4044
|
{ field: 'product', headerName: 'Product', flex: 0.5, wrapText: true, autoHeight: true, minWidth: 80, width: 120, tooltipField: 'product' },
|
|
4016
4045
|
{ field: 'sendAgentBranchCode', headerName: 'SendClient BranchCode', flex: 1, wrapText: true, autoHeight: true, minWidth: 90, width: 120, tooltipField: 'sendAgentBranchCode' },
|
|
4017
4046
|
{ field: 'receiveAgentCode', headerName: 'Receive ClientCode', flex: 1, wrapText: true, autoHeight: true, minWidth: 90, width: 70, tooltipField: 'receiveAgentCode' },
|
|
4047
|
+
{ headerName: 'Is Sender Corporate', field: 'senderType', flex: 1, minWidth: 80,
|
|
4048
|
+
valueFormatter: (params) => { if (!params.value)
|
|
4049
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
4050
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
4051
|
+
return 'NO'; return ''; },
|
|
4052
|
+
tooltipValueGetter: (params) => { if (!params.value)
|
|
4053
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
4054
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
4055
|
+
return 'NO'; return ''; } },
|
|
4056
|
+
{ headerName: 'Sender Name', field: 'senderName', flex: 1, minWidth: 120, tooltipField: 'senderName' },
|
|
4057
|
+
{ headerName: 'Is Beneficiary Corporate', field: 'beneficiaryType', flex: 1, minWidth: 80,
|
|
4058
|
+
valueFormatter: (params) => { if (!params.value)
|
|
4059
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
4060
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
4061
|
+
return 'NO'; return ''; },
|
|
4062
|
+
tooltipValueGetter: (params) => { if (!params.value)
|
|
4063
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
4064
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
4065
|
+
return 'NO'; return ''; } },
|
|
4066
|
+
{ headerName: 'Beneficiary Name', field: 'beneficiaryName', flex: 1, minWidth: 100, tooltipField: 'beneficiaryName' },
|
|
4018
4067
|
{ field: 'payoutCCcode', headerName: 'ReceiveCcy Code', flex: 1, wrapText: true, autoHeight: true, minWidth: 90, width: 110, tooltipField: 'payoutCCcode' },
|
|
4019
4068
|
{ field: 'payoutAmount', headerName: 'Receive Amount', flex: 1, wrapText: true, autoHeight: true, minWidth: 90, maxWidth: 120, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payoutAmount' },
|
|
4020
4069
|
{ field: 'payinCCcode', headerName: 'SendCcy Code', flex: 1, wrapText: true, autoHeight: true, minWidth: 90, maxWidth: 90, tooltipField: 'payinCCcode' },
|
|
@@ -4463,6 +4512,26 @@ class CancellationTransactionReportComponent {
|
|
|
4463
4512
|
{ headerName: 'Send Client Branch Code', field: 'sendAgentBranchCode', flex: 1, minWidth: 90, tooltipField: 'sendAgentBranchCode' },
|
|
4464
4513
|
{ headerName: 'Send Principal Client Code (If Applicable)', field: 'sendPrincipalAgentCode', flex: 1, minWidth: 90, tooltipField: 'sendPrincipalAgentCode' },
|
|
4465
4514
|
{ headerName: 'Receive Client Code', field: 'recvAGTcode', flex: 1, minWidth: 80, tooltipField: 'recvAGTcode' },
|
|
4515
|
+
{ headerName: 'Is Sender Corporate', field: 'senderType', flex: 1, minWidth: 80,
|
|
4516
|
+
valueFormatter: (params) => { if (!params.value)
|
|
4517
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
4518
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
4519
|
+
return 'NO'; return ''; },
|
|
4520
|
+
tooltipValueGetter: (params) => { if (!params.value)
|
|
4521
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
4522
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
4523
|
+
return 'NO'; return ''; } },
|
|
4524
|
+
{ headerName: 'Sender Name', field: 'senderName', flex: 1, minWidth: 120, tooltipField: 'senderName' },
|
|
4525
|
+
{ headerName: 'Is Beneficiary Corporate', field: 'beneficiaryType', flex: 1, minWidth: 80,
|
|
4526
|
+
valueFormatter: (params) => { if (!params.value)
|
|
4527
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
4528
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
4529
|
+
return 'NO'; return ''; },
|
|
4530
|
+
tooltipValueGetter: (params) => { if (!params.value)
|
|
4531
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
4532
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
4533
|
+
return 'NO'; return ''; } },
|
|
4534
|
+
{ headerName: 'Beneficiary Name', field: 'beneficiaryName', flex: 1, minWidth: 100, tooltipField: 'beneficiaryName' },
|
|
4466
4535
|
{ headerName: 'Receive CcyCode', field: 'payoutCCcode', flex: 1, minWidth: 65, tooltipField: 'payoutCCcode' },
|
|
4467
4536
|
{ headerName: 'Receive Amount', field: 'payOutAmount', flex: 1, minWidth: 82, cellClass: 'ag-right-aligned-cell', tooltipField: 'payOutAmount' },
|
|
4468
4537
|
{ headerName: 'Send CcyCode', field: 'payinCCcode', flex: 1, minWidth: 69, tooltipField: 'payinCCcode' },
|
|
@@ -5703,6 +5772,24 @@ class AccountingReportComponent {
|
|
|
5703
5772
|
{ headerName: 'Principle SendClient (If Applicable)', field: 'principleSendClient', tooltipField: 'principleSendClient', width: 90, minWidth: 80, maxWidth: 110 },
|
|
5704
5773
|
{ headerName: 'ReceiveClient', field: 'receiveClient', tooltipField: 'receiveClient' },
|
|
5705
5774
|
{ headerName: 'Principle ReceiveClient (If Applicable)', field: 'principleReceiveClient', tooltipField: 'principleReceiveClient', width: 100, minWidth: 90, maxWidth: 120 },
|
|
5775
|
+
{ headerName: 'Is Sender Corporate', field: 'senderType', flex: 1, minWidth: 80,
|
|
5776
|
+
valueFormatter: (params) => { if (!params.value)
|
|
5777
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
5778
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
5779
|
+
return 'NO'; return ''; },
|
|
5780
|
+
tooltipValueGetter: (params) => { if (!params.value)
|
|
5781
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
5782
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
5783
|
+
return 'NO'; return ''; } },
|
|
5784
|
+
{ headerName: 'Is Beneficiary Corporate', field: 'beneficiaryType', flex: 1, minWidth: 80,
|
|
5785
|
+
valueFormatter: (params) => { if (!params.value)
|
|
5786
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
5787
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
5788
|
+
return 'NO'; return ''; },
|
|
5789
|
+
tooltipValueGetter: (params) => { if (!params.value)
|
|
5790
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
5791
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
5792
|
+
return 'NO'; return ''; } },
|
|
5706
5793
|
{ headerName: 'ReceiveCcy', field: 'receiveCurrency', tooltipField: 'receiveCurrency' },
|
|
5707
5794
|
{ headerName: 'AmountPaid', field: 'amountPaid', tooltipField: 'amountPaid', cellClass: 'ag-right-aligned-cell' },
|
|
5708
5795
|
{ headerName: 'SendCcy', field: 'sendCurrency', tooltipField: 'sendCurrency', },
|
|
@@ -6626,7 +6713,7 @@ class TrialBalanceAccountsReportComponent {
|
|
|
6626
6713
|
this.dateType = '';
|
|
6627
6714
|
this.fromDate = '';
|
|
6628
6715
|
this.toDate = '';
|
|
6629
|
-
this.
|
|
6716
|
+
this.businessLine = '';
|
|
6630
6717
|
this.reportUser = '';
|
|
6631
6718
|
this.reportTime = '';
|
|
6632
6719
|
this.reportPeriod = '';
|
|
@@ -6658,7 +6745,6 @@ class TrialBalanceAccountsReportComponent {
|
|
|
6658
6745
|
'total-row': params => params.data?.isTotalRow
|
|
6659
6746
|
};
|
|
6660
6747
|
this.columnDefs = [
|
|
6661
|
-
{ headerName: 'Business Unit', field: 'companyFullName', tooltipField: 'companyFullName', minWidth: 70, maxWidth: 100 },
|
|
6662
6748
|
{ headerName: 'COA Code', field: 'coaCode', tooltipField: 'coaCode', minWidth: 60, maxWidth: 100 },
|
|
6663
6749
|
{ headerName: 'Account Code', field: 'accountCode', tooltipField: 'accountCode', minWidth: 80, maxWidth: 100 },
|
|
6664
6750
|
{ headerName: 'Account Description', field: 'accountDescription', tooltipField: 'accountDescription', minWidth: 180, maxWidth: 230 },
|
|
@@ -6669,23 +6755,8 @@ class TrialBalanceAccountsReportComponent {
|
|
|
6669
6755
|
{ headerName: 'Closing Balance Local Amount', field: 'closingBalance', type: 'numericColumn', tooltipField: 'closingBalance' }
|
|
6670
6756
|
];
|
|
6671
6757
|
this.rowData = [];
|
|
6672
|
-
this.businessUnits = [];
|
|
6673
|
-
}
|
|
6674
|
-
ngOnInit() {
|
|
6675
|
-
this.loadingState = ComponentLoadingStates.Loading;
|
|
6676
|
-
this.reportService.GetBusinessUnitForTrialBalanceAccountsReport().subscribe({
|
|
6677
|
-
next: (res) => {
|
|
6678
|
-
this.businessUnits = res;
|
|
6679
|
-
this.loadingState = ComponentLoadingStates.Complete;
|
|
6680
|
-
}, error: (err) => {
|
|
6681
|
-
console.error('Error fetching business units:', err);
|
|
6682
|
-
this.loadingState = ComponentLoadingStates.Error;
|
|
6683
|
-
}, complete: () => {
|
|
6684
|
-
console.log("getting business units api completed");
|
|
6685
|
-
this.loadingState = ComponentLoadingStates.Complete;
|
|
6686
|
-
}
|
|
6687
|
-
});
|
|
6688
6758
|
}
|
|
6759
|
+
ngOnInit() { }
|
|
6689
6760
|
getTrialBalanceAccountsReport(req) {
|
|
6690
6761
|
this.dataReady = false;
|
|
6691
6762
|
this.trialBalanceReport = null;
|
|
@@ -6700,7 +6771,7 @@ class TrialBalanceAccountsReportComponent {
|
|
|
6700
6771
|
this.accountStatus = req.accountStatus;
|
|
6701
6772
|
this.currency = req.currency;
|
|
6702
6773
|
this.dateType = req.dateType == "VD" ? "Value Date" : "Posting Date";
|
|
6703
|
-
this.
|
|
6774
|
+
this.businessLine = req.businessLine;
|
|
6704
6775
|
this.rowData = this.flattenReport(report).map(acc => ({
|
|
6705
6776
|
...acc,
|
|
6706
6777
|
openingBalance: Number(acc.openingBalance).toFixed(3),
|
|
@@ -6720,7 +6791,7 @@ class TrialBalanceAccountsReportComponent {
|
|
|
6720
6791
|
['Currency:', this.currency],
|
|
6721
6792
|
['Date Type:', this.dateType],
|
|
6722
6793
|
['From Date:', this.fromDate],
|
|
6723
|
-
['Business
|
|
6794
|
+
['Business Line:', this.businessLine],
|
|
6724
6795
|
['To Date:', this.toDate],
|
|
6725
6796
|
];
|
|
6726
6797
|
this.searchCriteria = searchCriteria;
|
|
@@ -6738,7 +6809,6 @@ class TrialBalanceAccountsReportComponent {
|
|
|
6738
6809
|
sub.coaGroups.forEach(coa => {
|
|
6739
6810
|
coa.accounts.forEach(account => rows.push(account));
|
|
6740
6811
|
rows.push({
|
|
6741
|
-
companyFullName: '',
|
|
6742
6812
|
coaCode: '',
|
|
6743
6813
|
accountCode: 'Total:',
|
|
6744
6814
|
accountDescription: `${coa.coaDescription}`,
|
|
@@ -6751,7 +6821,6 @@ class TrialBalanceAccountsReportComponent {
|
|
|
6751
6821
|
});
|
|
6752
6822
|
});
|
|
6753
6823
|
rows.push({
|
|
6754
|
-
companyFullName: '',
|
|
6755
6824
|
coaCode: '',
|
|
6756
6825
|
accountCode: 'Total:',
|
|
6757
6826
|
accountDescription: `${sub.subCOADescription}`,
|
|
@@ -6764,7 +6833,6 @@ class TrialBalanceAccountsReportComponent {
|
|
|
6764
6833
|
});
|
|
6765
6834
|
});
|
|
6766
6835
|
rows.push({
|
|
6767
|
-
companyFullName: '',
|
|
6768
6836
|
coaCode: '',
|
|
6769
6837
|
accountCode: 'Total:',
|
|
6770
6838
|
accountDescription: `${main.mainCOADescription}`,
|
|
@@ -6777,7 +6845,6 @@ class TrialBalanceAccountsReportComponent {
|
|
|
6777
6845
|
});
|
|
6778
6846
|
});
|
|
6779
6847
|
rows.push({
|
|
6780
|
-
companyFullName: '',
|
|
6781
6848
|
coaCode: 'TOTAL:',
|
|
6782
6849
|
accountCode: '',
|
|
6783
6850
|
accountDescription: '',
|
|
@@ -6927,7 +6994,6 @@ class TrialBalanceAccountsReportComponent {
|
|
|
6927
6994
|
// --- headers ---
|
|
6928
6995
|
const headers = [
|
|
6929
6996
|
'Sr No',
|
|
6930
|
-
'Business Unit',
|
|
6931
6997
|
'COA Code', 'Account Code', 'Account Description',
|
|
6932
6998
|
'Opening Balance Local Amt', 'Debits Local Amt', 'Credits Local Amt',
|
|
6933
6999
|
'Net Movement Local Amt', 'Closing Balance Local Amt'
|
|
@@ -6936,7 +7002,6 @@ class TrialBalanceAccountsReportComponent {
|
|
|
6936
7002
|
// --- rows ---
|
|
6937
7003
|
const rows = flatReport.map((acc, i) => [
|
|
6938
7004
|
i + 1,
|
|
6939
|
-
acc.companyFullName,
|
|
6940
7005
|
acc.coaCode,
|
|
6941
7006
|
acc.accountCode,
|
|
6942
7007
|
acc.accountDescription,
|
|
@@ -6948,16 +7013,15 @@ class TrialBalanceAccountsReportComponent {
|
|
|
6948
7013
|
]);
|
|
6949
7014
|
// --- column widths ---
|
|
6950
7015
|
const columnStyles = {
|
|
6951
|
-
0: { cellWidth:
|
|
7016
|
+
0: { cellWidth: 15 },
|
|
6952
7017
|
1: { cellWidth: 25 },
|
|
6953
7018
|
2: { cellWidth: 25 },
|
|
6954
|
-
3: { cellWidth:
|
|
6955
|
-
4: { cellWidth:
|
|
7019
|
+
3: { cellWidth: 70 },
|
|
7020
|
+
4: { cellWidth: 30 },
|
|
6956
7021
|
5: { cellWidth: 30 },
|
|
6957
|
-
6: { cellWidth:
|
|
6958
|
-
7: { cellWidth:
|
|
6959
|
-
8: { cellWidth:
|
|
6960
|
-
9: { cellWidth: 30 },
|
|
7022
|
+
6: { cellWidth: 30 },
|
|
7023
|
+
7: { cellWidth: 30 },
|
|
7024
|
+
8: { cellWidth: 30 },
|
|
6961
7025
|
};
|
|
6962
7026
|
// --- draw table ---
|
|
6963
7027
|
doc.autoTable({
|
|
@@ -6988,9 +7052,9 @@ class TrialBalanceAccountsReportComponent {
|
|
|
6988
7052
|
if (isTotalRow)
|
|
6989
7053
|
data.cell.styles.fontStyle = 'bold';
|
|
6990
7054
|
// highlight negatives in red
|
|
6991
|
-
if (data.column.index >
|
|
7055
|
+
if (data.column.index > 3) {
|
|
6992
7056
|
const keyMap = ["openingBalance", "debit", "credit", "netMovement", "closingBalance"];
|
|
6993
|
-
const key = keyMap[data.column.index -
|
|
7057
|
+
const key = keyMap[data.column.index - 4];
|
|
6994
7058
|
const raw = rowData[key];
|
|
6995
7059
|
const num = Number(raw);
|
|
6996
7060
|
if (!isNaN(num) && num < 0) {
|
|
@@ -7025,7 +7089,7 @@ class TrialBalanceAccountsReportComponent {
|
|
|
7025
7089
|
}
|
|
7026
7090
|
// --- title ---
|
|
7027
7091
|
const title = 'Xpress Money - MI Accounts';
|
|
7028
|
-
sheet.mergeCells(1, 3, 1,
|
|
7092
|
+
sheet.mergeCells(1, 3, 1, 9);
|
|
7029
7093
|
const titleCell = sheet.getCell('C1');
|
|
7030
7094
|
titleCell.value = title;
|
|
7031
7095
|
titleCell.font = { size: 15, bold: true };
|
|
@@ -7079,7 +7143,6 @@ class TrialBalanceAccountsReportComponent {
|
|
|
7079
7143
|
// --- headers ---
|
|
7080
7144
|
const headers = [
|
|
7081
7145
|
'Sr No',
|
|
7082
|
-
'Business Unit',
|
|
7083
7146
|
'COA Code', 'Account Code', 'Account Description',
|
|
7084
7147
|
'Opening Balance Local Amt', 'Debits Local Amt', 'Credits Local Amt',
|
|
7085
7148
|
'Net Movement Local Amt', 'Closing Balance Local Amt'
|
|
@@ -7102,7 +7165,6 @@ class TrialBalanceAccountsReportComponent {
|
|
|
7102
7165
|
});
|
|
7103
7166
|
return [
|
|
7104
7167
|
idx + 1,
|
|
7105
|
-
acc.companyFullName,
|
|
7106
7168
|
acc.coaCode,
|
|
7107
7169
|
acc.accountCode,
|
|
7108
7170
|
acc.accountDescription,
|
|
@@ -7112,28 +7174,28 @@ class TrialBalanceAccountsReportComponent {
|
|
|
7112
7174
|
});
|
|
7113
7175
|
rows.forEach(r => {
|
|
7114
7176
|
const row = sheet.getRow(currentRow++);
|
|
7115
|
-
r.slice(0,
|
|
7177
|
+
r.slice(0, 9).forEach((val, i) => {
|
|
7116
7178
|
const cell = row.getCell(i + 1);
|
|
7117
7179
|
// convert back to number for Excel math but show 3 decimals
|
|
7118
|
-
if (i >
|
|
7180
|
+
if (i > 3 && val !== '')
|
|
7119
7181
|
cell.value = parseFloat(val.toString());
|
|
7120
7182
|
else
|
|
7121
7183
|
cell.value = val;
|
|
7122
7184
|
cell.border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } };
|
|
7123
7185
|
// bold total rows
|
|
7124
|
-
if (r[
|
|
7186
|
+
if (r[9])
|
|
7125
7187
|
cell.font = { bold: true };
|
|
7126
7188
|
// negative numbers red
|
|
7127
|
-
if (i >
|
|
7128
|
-
cell.font = { color: { argb: 'FF0000' }, bold: r[
|
|
7189
|
+
if (i > 3 && typeof cell.value === 'number' && cell.value < 0) {
|
|
7190
|
+
cell.font = { color: { argb: 'FF0000' }, bold: r[9] ? true : undefined };
|
|
7129
7191
|
}
|
|
7130
7192
|
// set number format to show 3 decimals
|
|
7131
|
-
if (i >
|
|
7193
|
+
if (i > 3)
|
|
7132
7194
|
cell.numFmt = '0.000';
|
|
7133
7195
|
});
|
|
7134
7196
|
});
|
|
7135
7197
|
// --- column widths ---
|
|
7136
|
-
const widths = [8,
|
|
7198
|
+
const widths = [8, 15, 15, 40, 20, 20, 20, 20, 20];
|
|
7137
7199
|
widths.forEach((w, i) => sheet.getColumn(i + 1).width = w);
|
|
7138
7200
|
// --- save file ---
|
|
7139
7201
|
workbook.xlsx.writeBuffer().then(buffer => {
|
|
@@ -7156,7 +7218,6 @@ class TrialBalanceAccountsReportComponent {
|
|
|
7156
7218
|
// --- table headers (add Sr No at start) ---
|
|
7157
7219
|
const headers = [
|
|
7158
7220
|
'Sr No',
|
|
7159
|
-
'Business Unit',
|
|
7160
7221
|
'COA Code', 'Account Code', 'Account Description',
|
|
7161
7222
|
'Opening Balance Local Amt', 'Debits Local Amt', 'Credits Local Amt',
|
|
7162
7223
|
'Net Movement Local Amt', 'Closing Balance Local Amt'
|
|
@@ -7164,7 +7225,6 @@ class TrialBalanceAccountsReportComponent {
|
|
|
7164
7225
|
// --- table rows (prepend Sr No) ---
|
|
7165
7226
|
const rows = this.flattenReport(this.trialBalanceReport).map((acc, index) => [
|
|
7166
7227
|
index + 1,
|
|
7167
|
-
acc.companyFullName,
|
|
7168
7228
|
acc.coaCode,
|
|
7169
7229
|
acc.accountCode,
|
|
7170
7230
|
acc.accountDescription,
|
|
@@ -7232,9 +7292,9 @@ class TrialBalanceAccountsReportComponent {
|
|
|
7232
7292
|
fromDate: modal.fromDay,
|
|
7233
7293
|
toDate: modal.toDay,
|
|
7234
7294
|
accountStatus: modal.accountStatus.join(','),
|
|
7235
|
-
|
|
7295
|
+
businessLine: modal.businessLine,
|
|
7236
7296
|
currency: modal.currency,
|
|
7237
|
-
companyCode:
|
|
7297
|
+
companyCode: "BH",
|
|
7238
7298
|
reportPeriod: `${formatDate(modal.fromDate, 'dd/MM/yyyy', 'en-US')} - ${formatDate(modal.toDate, 'dd/MM/yyyy', 'en-US')}`,
|
|
7239
7299
|
};
|
|
7240
7300
|
this.getTrialBalanceAccountsReport(req);
|
|
@@ -7286,6 +7346,24 @@ class BranchActivitySendSummaryReportComponent {
|
|
|
7286
7346
|
}
|
|
7287
7347
|
},
|
|
7288
7348
|
{ field: 'product', headerName: 'Product', flex: 1, wrapText: true, autoHeight: true, minWidth: 80, width: 120, tooltipField: 'product' },
|
|
7349
|
+
{ headerName: 'Is Sender Corporate', field: 'senderType', flex: 1, minWidth: 80,
|
|
7350
|
+
valueFormatter: (params) => { if (!params.value)
|
|
7351
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
7352
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
7353
|
+
return 'NO'; return ''; },
|
|
7354
|
+
tooltipValueGetter: (params) => { if (!params.value)
|
|
7355
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
7356
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
7357
|
+
return 'NO'; return ''; } },
|
|
7358
|
+
{ headerName: 'Is Beneficiary Corporate', field: 'beneficiaryType', flex: 1, minWidth: 80,
|
|
7359
|
+
valueFormatter: (params) => { if (!params.value)
|
|
7360
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
7361
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
7362
|
+
return 'NO'; return ''; },
|
|
7363
|
+
tooltipValueGetter: (params) => { if (!params.value)
|
|
7364
|
+
return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
|
|
7365
|
+
return 'YES'; if (value === 'INDIVIDUAL')
|
|
7366
|
+
return 'NO'; return ''; } },
|
|
7289
7367
|
{ field: 'payoutCCcode', headerName: 'Receive Currency', flex: 1, wrapText: true, autoHeight: true, minWidth: 90, width: 110, tooltipField: 'payoutCCcode' },
|
|
7290
7368
|
{ field: 'payoutAmount', headerName: 'Receive Amount', flex: 1, wrapText: true, autoHeight: true, minWidth: 90, maxWidth: 120, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payoutAmount' },
|
|
7291
7369
|
{ field: 'payinCCcode', headerName: 'Send Currency', flex: 1, wrapText: true, autoHeight: true, minWidth: 90, maxWidth: 90, tooltipField: 'payinCCcode' },
|
|
@@ -7951,6 +8029,7 @@ class TransactionMonitoringReportComponent {
|
|
|
7951
8029
|
this.showMessage = false;
|
|
7952
8030
|
this.noDataFound = false;
|
|
7953
8031
|
this.isFormValid = false;
|
|
8032
|
+
this.clearSearch = false;
|
|
7954
8033
|
this.columnDefs = [
|
|
7955
8034
|
{ field: 'businessDateTime', headerName: 'Business Date', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 70, wrapText: true, autoHeight: true, tooltipField: 'businessDateTime' },
|
|
7956
8035
|
{ field: 'transactionDateTime', headerName: 'Transaction Date', flex: 2, headerClass: 'ag-left-aligned-header', minWidth: 100, wrapText: true, autoHeight: true, tooltipField: 'transactionDateTime' },
|
|
@@ -8031,7 +8110,9 @@ class TransactionMonitoringReportComponent {
|
|
|
8031
8110
|
receiveCountry: params['receiveCountry'],
|
|
8032
8111
|
toDate: params['toDate'],
|
|
8033
8112
|
fromDate: params['fromDate'],
|
|
8034
|
-
isRealtime: params['isRealtime'] === 'true' || params['isRealtime'] === true
|
|
8113
|
+
isRealtime: params['isRealtime'] === 'true' || params['isRealtime'] === true,
|
|
8114
|
+
loggedInTime: params['loggedInTime'],
|
|
8115
|
+
count: Number(params['count'])
|
|
8035
8116
|
};
|
|
8036
8117
|
}
|
|
8037
8118
|
else {
|
|
@@ -8150,13 +8231,27 @@ class TransactionMonitoringReportComponent {
|
|
|
8150
8231
|
return '';
|
|
8151
8232
|
}
|
|
8152
8233
|
handleSearch(criteria) {
|
|
8234
|
+
if (this.initialFilters != null) {
|
|
8235
|
+
const realtimeStatuses = ['Paid', 'PaidCancelled', 'Cancelled', 'Void', 'Rejected'];
|
|
8236
|
+
const isTerminatingStatus = realtimeStatuses.includes(this.initialFilters?.transactionStatus);
|
|
8237
|
+
const isZeroCount = this.initialFilters?.count === 0;
|
|
8238
|
+
// block api call
|
|
8239
|
+
if (isTerminatingStatus && isZeroCount && (!criteria.modal.fromDate && !criteria.modal.toDate)) {
|
|
8240
|
+
this.noDataFound = true;
|
|
8241
|
+
this.showReport = true;
|
|
8242
|
+
this.loadingState = ComponentLoadingStates.Complete;
|
|
8243
|
+
this.clearSearch = false;
|
|
8244
|
+
this.showMessage = true;
|
|
8245
|
+
return;
|
|
8246
|
+
}
|
|
8247
|
+
}
|
|
8153
8248
|
this.searchCriteria = criteria.searchCriteria;
|
|
8154
8249
|
this.reportDate = new Date().toISOString();
|
|
8155
8250
|
this.reportDate = formatDate(this.reportDate, 'dd/MM/yyyy hh:mm a', 'en-US');
|
|
8156
8251
|
const modal = criteria.modal;
|
|
8157
8252
|
this.user = criteria.sysUserID;
|
|
8158
8253
|
// this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10);
|
|
8159
|
-
//this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10);
|
|
8254
|
+
// this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10);
|
|
8160
8255
|
this.fromDate = modal.fromDate
|
|
8161
8256
|
? formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10)
|
|
8162
8257
|
: null;
|
|
@@ -8166,7 +8261,7 @@ class TransactionMonitoringReportComponent {
|
|
|
8166
8261
|
console.log(modal);
|
|
8167
8262
|
// Code For Meta Data
|
|
8168
8263
|
this.leftData = {
|
|
8169
|
-
//
|
|
8264
|
+
// 'Report Period': this.fromDate + " - " + this.toDate,
|
|
8170
8265
|
'Report Period': this.fromDate && this.toDate
|
|
8171
8266
|
? `${this.fromDate} - ${this.toDate}`
|
|
8172
8267
|
: ''
|
|
@@ -8184,9 +8279,11 @@ class TransactionMonitoringReportComponent {
|
|
|
8184
8279
|
"PayoutCurrency": modal.receiveCurrency,
|
|
8185
8280
|
"TransactionType": modal.product,
|
|
8186
8281
|
"BranchCode": modal.branch,
|
|
8187
|
-
"IsrealTime":
|
|
8282
|
+
"IsrealTime": this.initialFilters?.isRealtime ?? false,
|
|
8283
|
+
"LoggedInTime": this.initialFilters?.loggedInTime ?? null
|
|
8188
8284
|
};
|
|
8189
8285
|
this.showMessage = true;
|
|
8286
|
+
this.clearSearch = true;
|
|
8190
8287
|
this.loadingState = ComponentLoadingStates.Loading;
|
|
8191
8288
|
this.reportService.getTransactionMonitoringReport(searchData).subscribe({
|
|
8192
8289
|
next: (data) => {
|
|
@@ -8201,10 +8298,12 @@ class TransactionMonitoringReportComponent {
|
|
|
8201
8298
|
},
|
|
8202
8299
|
error: (err) => {
|
|
8203
8300
|
this.loadingState = ComponentLoadingStates.Complete;
|
|
8301
|
+
this.clearSearch = false;
|
|
8204
8302
|
},
|
|
8205
8303
|
complete: () => {
|
|
8206
8304
|
this.loadingState = ComponentLoadingStates.Complete;
|
|
8207
8305
|
this.showReport = true;
|
|
8306
|
+
this.clearSearch = false;
|
|
8208
8307
|
}
|
|
8209
8308
|
});
|
|
8210
8309
|
}
|