diff --git a/src/app/tasks/checker-inbox-and-tasks-tabs/pending-account/pending-account.component.html b/src/app/tasks/checker-inbox-and-tasks-tabs/pending-account/pending-account.component.html
index f5fc70de0..a4ce2fedc 100644
--- a/src/app/tasks/checker-inbox-and-tasks-tabs/pending-account/pending-account.component.html
+++ b/src/app/tasks/checker-inbox-and-tasks-tabs/pending-account/pending-account.component.html
@@ -19,9 +19,22 @@
/>
-
@@ -103,8 +116,8 @@
diff --git a/src/app/tasks/checker-inbox-and-tasks-tabs/pending-account/pending-account.component.scss b/src/app/tasks/checker-inbox-and-tasks-tabs/pending-account/pending-account.component.scss
index 0ddbf0f4c..25eff1326 100644
--- a/src/app/tasks/checker-inbox-and-tasks-tabs/pending-account/pending-account.component.scss
+++ b/src/app/tasks/checker-inbox-and-tasks-tabs/pending-account/pending-account.component.scss
@@ -89,9 +89,34 @@ $text-muted: #64748b;
border-color: #16a34a;
color: #16a34a;
- &:hover {
+ &:hover:not([disabled]) {
background: #f0fdf4;
}
+
+ &[disabled] {
+ opacity: 0.45;
+ }
+}
+
+.cv-btn-reject {
+ border-color: #dc2626;
+ color: #dc2626;
+
+ &:hover:not([disabled]) {
+ background: #fef2f2;
+ }
+
+ &[disabled] {
+ opacity: 0.45;
+ }
+}
+
+.clickable-row {
+ cursor: pointer;
+
+ &:hover td {
+ background: #f8fafc;
+ }
}
.type-badge {
diff --git a/src/app/tasks/checker-inbox-and-tasks-tabs/pending-account/pending-account.component.ts b/src/app/tasks/checker-inbox-and-tasks-tabs/pending-account/pending-account.component.ts
index bc8336ae0..b607edd10 100644
--- a/src/app/tasks/checker-inbox-and-tasks-tabs/pending-account/pending-account.component.ts
+++ b/src/app/tasks/checker-inbox-and-tasks-tabs/pending-account/pending-account.component.ts
@@ -107,7 +107,25 @@ export class PendingAccountComponent {
this.dataSource.filter = filterValue.trim().toLowerCase();
}
+ navigateToAccount(account: any): void {
+ const clientId = account.clientId;
+ const accountId = account.id;
+ const depositTypeId = account.depositType?.id;
+ let path: string;
+ if (account.accountType === 'Current') {
+ path = `/clients/${clientId}/current-accounts/${accountId}`;
+ } else if (depositTypeId === 200) {
+ path = `/clients/${clientId}/fixed-deposits-accounts/${accountId}`;
+ } else if (depositTypeId === 300) {
+ path = `/clients/${clientId}/recurring-deposits-accounts/${accountId}`;
+ } else {
+ path = `/clients/${clientId}/savings-accounts/${accountId}`;
+ }
+ this.router.navigate([path]);
+ }
+
approveAccounts() {
+ if (!this.selection.hasValue()) return;
const formfields: FormfieldBase[] = [
new DatepickerBase({
controlName: 'approvedOnDate',
@@ -131,6 +149,60 @@ export class PendingAccountComponent {
});
}
+ rejectAccounts() {
+ if (!this.selection.hasValue()) return;
+ const formfields: FormfieldBase[] = [
+ new DatepickerBase({
+ controlName: 'rejectedOnDate',
+ label: 'Rejected On Date',
+ value: new Date(),
+ type: 'datetime-local',
+ required: true
+ })
+ ];
+ const dialogRef = this.dialog.open(FormDialogComponent, {
+ data: {
+ title: 'Enter Rejection Date',
+ layout: { addButtonText: 'Confirm' },
+ formfields
+ }
+ });
+ dialogRef.afterClosed().subscribe((response: any) => {
+ if (response?.data) {
+ this.bulkReject(response.data);
+ }
+ });
+ }
+
+ private bulkReject(submittedData: any) {
+ const dateFormat = this.settingsService.dateFormat;
+ const locale = this.settingsService.language.code;
+ const rejectedOnDate = this.dateUtils.formatDate(submittedData.value.rejectedOnDate, dateFormat);
+ const payload = { rejectedOnDate, dateFormat, locale };
+
+ const selected = this.selection.selected;
+ let done = 0;
+ selected.forEach((account: any) => {
+ const depositTypeId = account.depositType?.id;
+ let reject$;
+ if (account.accountType === 'Current') {
+ reject$ = this.tasksService.rejectCurrentAccount(account.id, payload);
+ } else if (depositTypeId === 200) {
+ reject$ = this.tasksService.rejectFDAccount(account.id, payload);
+ } else if (depositTypeId === 300) {
+ reject$ = this.tasksService.rejectRDAccount(account.id, payload);
+ } else {
+ reject$ = this.tasksService.rejectSavingsAccount(account.id, payload);
+ }
+ reject$.subscribe(() => {
+ done++;
+ if (done === selected.length) {
+ this.reload();
+ }
+ });
+ });
+ }
+
private bulkApprove(submittedData: any) {
const dateFormat = this.settingsService.dateFormat;
const locale = this.settingsService.language.code;
diff --git a/src/app/tasks/checker-inbox-and-tasks-tabs/rejected-account/rejected-account.component.html b/src/app/tasks/checker-inbox-and-tasks-tabs/rejected-account/rejected-account.component.html
index d35bc289b..5776bd2fe 100644
--- a/src/app/tasks/checker-inbox-and-tasks-tabs/rejected-account/rejected-account.component.html
+++ b/src/app/tasks/checker-inbox-and-tasks-tabs/rejected-account/rejected-account.component.html
@@ -83,7 +83,12 @@
-
+
}
diff --git a/src/app/tasks/checker-inbox-and-tasks-tabs/rejected-account/rejected-account.component.scss b/src/app/tasks/checker-inbox-and-tasks-tabs/rejected-account/rejected-account.component.scss
index 6bf43adb7..c11ebdb46 100644
--- a/src/app/tasks/checker-inbox-and-tasks-tabs/rejected-account/rejected-account.component.scss
+++ b/src/app/tasks/checker-inbox-and-tasks-tabs/rejected-account/rejected-account.component.scss
@@ -63,6 +63,14 @@ $text-muted: #64748b;
}
}
+.table-row {
+ cursor: pointer;
+
+ &:hover td {
+ background: #f8fafc;
+ }
+}
+
.type-badge {
display: inline-flex;
align-items: center;
diff --git a/src/app/tasks/checker-inbox-and-tasks-tabs/rejected-account/rejected-account.component.ts b/src/app/tasks/checker-inbox-and-tasks-tabs/rejected-account/rejected-account.component.ts
index 3494f9a67..36b86278b 100644
--- a/src/app/tasks/checker-inbox-and-tasks-tabs/rejected-account/rejected-account.component.ts
+++ b/src/app/tasks/checker-inbox-and-tasks-tabs/rejected-account/rejected-account.component.ts
@@ -7,7 +7,7 @@
*/
import { Component, inject } from '@angular/core';
-import { ActivatedRoute } from '@angular/router';
+import { ActivatedRoute, Router } from '@angular/router';
import {
MatTableDataSource,
MatTable,
@@ -47,6 +47,7 @@ import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
})
export class RejectedAccountComponent {
private route = inject(ActivatedRoute);
+ private router = inject(Router);
dataSource: MatTableDataSource;
showData = false;
@@ -72,6 +73,23 @@ export class RejectedAccountComponent {
});
}
+ navigateToAccount(account: any): void {
+ const clientId = account.clientId;
+ const accountId = account.id;
+ const depositTypeId = account.depositType?.id;
+ let path: string;
+ if (account.accountType === 'Current') {
+ path = `/clients/${clientId}/current-accounts/${accountId}`;
+ } else if (depositTypeId === 200) {
+ path = `/clients/${clientId}/fixed-deposits-accounts/${accountId}`;
+ } else if (depositTypeId === 300) {
+ path = `/clients/${clientId}/recurring-deposits-accounts/${accountId}`;
+ } else {
+ path = `/clients/${clientId}/savings-accounts/${accountId}`;
+ }
+ this.router.navigate([path]);
+ }
+
applyFilter(filterValue: string = '') {
this.dataSource.filter = filterValue.trim().toLowerCase();
}
diff --git a/src/app/tasks/tasks.service.ts b/src/app/tasks/tasks.service.ts
index 38f128e0c..23587339a 100644
--- a/src/app/tasks/tasks.service.ts
+++ b/src/app/tasks/tasks.service.ts
@@ -172,6 +172,38 @@ export class TasksService {
return this.http.post(`/currentaccounts/${accountId}`, data, { params: httpParams });
}
+ /**
+ * Reject a savings account
+ */
+ rejectSavingsAccount(accountId: any, data: any): Observable {
+ const httpParams = new HttpParams().set('command', 'reject');
+ return this.http.post(`/savingsaccounts/${accountId}`, data, { params: httpParams });
+ }
+
+ /**
+ * Reject a fixed deposit account
+ */
+ rejectFDAccount(accountId: any, data: any): Observable {
+ const httpParams = new HttpParams().set('command', 'reject');
+ return this.http.post(`/fixeddepositaccounts/${accountId}`, data, { params: httpParams });
+ }
+
+ /**
+ * Reject a recurring deposit account
+ */
+ rejectRDAccount(accountId: any, data: any): Observable {
+ const httpParams = new HttpParams().set('command', 'reject');
+ return this.http.post(`/recurringdepositaccounts/${accountId}`, data, { params: httpParams });
+ }
+
+ /**
+ * Reject a current account
+ */
+ rejectCurrentAccount(accountId: any, data: any): Observable {
+ const httpParams = new HttpParams().set('command', 'reject');
+ return this.http.post(`/currentaccounts/${accountId}`, data, { params: httpParams });
+ }
+
/**
* Submit data in batches.
* @param {data} Data to be submitted
diff --git a/src/environments/.env.ts b/src/environments/.env.ts
index d1e461b73..80af90d1e 100644
--- a/src/environments/.env.ts
+++ b/src/environments/.env.ts
@@ -9,8 +9,8 @@
/* tslint:disable */
export default {
'mifos_x': {
- 'version': '260522',
- 'hash': '64c76a98'
+ 'version': '260525',
+ 'hash': 'ad6f629c'
},
'allow_switching_backend_instance': true
};