feat: client extra fields + KYC home-visit & video-KYC dialogs
- Add Education Level, Degree/Qualification, Religion, Social Category dropdowns (individual clients) with dependent filtering on the create/edit/preview/view flows - Add Agriculture Income & Non-Agriculture Income fields under Financial & Classification - Gate Save with a Verify Client alert dialog when sanctions screening is not yet performed - Trim Office Name and CKYC Number columns from clients list; widen table to fill container - Remove DIP/Screening log IDs from preview and personal-data tabs - Rename "Branch Visit" to "Home Visit" across KYC management - Wire Take Action: open dedicated dialogs for Schedule Home Visit (officer + datetime) and Send Video KYC link (channels + officer + 48h expiry + session preview) - Migrate Signatory and Guardian image dialogs to inject() for prefer-inject lint rule Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
d72e969dc3
commit
52e3395345
@@ -90,11 +90,9 @@ export class ClientsComponent implements OnInit {
|
||||
'displayName',
|
||||
'accountNumber',
|
||||
'cifNumber',
|
||||
'ckycNumber',
|
||||
'legalForm',
|
||||
'status',
|
||||
'profileCompletion',
|
||||
'officeName',
|
||||
'actions'
|
||||
];
|
||||
dataSource: MatTableDataSource<any> = new MatTableDataSource();
|
||||
@@ -167,34 +165,37 @@ export class ClientsComponent implements OnInit {
|
||||
|
||||
// Use individual subscriptions instead of forkJoin to avoid EMPTY observable issues
|
||||
clients.forEach((client, i) => {
|
||||
this.clientService.getClientData(client.id?.toString()).pipe(
|
||||
catchError(() => of(null))
|
||||
).subscribe((data: any) => {
|
||||
if (data?.legalForm) {
|
||||
clients[i].legalForm = data.legalForm;
|
||||
this.applyClientFilters();
|
||||
}
|
||||
});
|
||||
this.clientService
|
||||
.getClientData(client.id?.toString())
|
||||
.pipe(catchError(() => of(null)))
|
||||
.subscribe((data: any) => {
|
||||
if (data?.legalForm) {
|
||||
clients[i].legalForm = data.legalForm;
|
||||
this.applyClientFilters();
|
||||
}
|
||||
});
|
||||
|
||||
this.clientService.getClientKyc(client.id?.toString()).pipe(
|
||||
catchError(() => of(null))
|
||||
).subscribe((kyc: any) => {
|
||||
if (kyc) {
|
||||
clients[i]._kycDone = kyc.kycStatus === 300;
|
||||
clients[i]._ckycDone = !!kyc.ckycNumber;
|
||||
clients[i]._ckycNumber = kyc.ckycNumber || '';
|
||||
this.applyClientFilters();
|
||||
}
|
||||
});
|
||||
this.clientService
|
||||
.getClientKyc(client.id?.toString())
|
||||
.pipe(catchError(() => of(null)))
|
||||
.subscribe((kyc: any) => {
|
||||
if (kyc) {
|
||||
clients[i]._kycDone = kyc.kycStatus === 300;
|
||||
clients[i]._ckycDone = !!kyc.ckycNumber;
|
||||
clients[i]._ckycNumber = kyc.ckycNumber || '';
|
||||
this.applyClientFilters();
|
||||
}
|
||||
});
|
||||
|
||||
this.clientService.getClientAddressData(client.id?.toString()).pipe(
|
||||
catchError(() => of(null))
|
||||
).subscribe((addr: any) => {
|
||||
if (addr && Array.isArray(addr) && addr.length > 0) {
|
||||
clients[i]._addressDone = true;
|
||||
this.applyClientFilters();
|
||||
}
|
||||
});
|
||||
this.clientService
|
||||
.getClientAddressData(client.id?.toString())
|
||||
.pipe(catchError(() => of(null)))
|
||||
.subscribe((addr: any) => {
|
||||
if (addr && Array.isArray(addr) && addr.length > 0) {
|
||||
clients[i]._addressDone = true;
|
||||
this.applyClientFilters();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -255,7 +256,7 @@ export class ClientsComponent implements OnInit {
|
||||
}
|
||||
|
||||
getCompletedCount(row: any): number {
|
||||
return this.getProfileSteps(row).filter(s => s.done).length;
|
||||
return this.getProfileSteps(row).filter((s) => s.done).length;
|
||||
}
|
||||
|
||||
private resetPaginator() {
|
||||
|
||||
Reference in New Issue
Block a user