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
+417
-180
@@ -88,14 +88,18 @@
|
||||
}
|
||||
@if (client?.dateOfBirth) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">{{ client.legalFormId === LegalFormId.PERSON ? 'Date of Birth' : 'Incorporation Date' }}</span>
|
||||
<span class="preview-label">{{
|
||||
client.legalFormId === LegalFormId.PERSON ? 'Date of Birth' : 'Incorporation Date'
|
||||
}}</span>
|
||||
<span class="preview-value">{{ client.dateOfBirth | dateFormat }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.legalFormId === LegalFormId.PERSON && client?.genderId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Gender</span>
|
||||
<span class="preview-value">{{ client.genderId | find: clientTemplate.genderOptions : 'id' : 'name' }}</span>
|
||||
<span class="preview-value">{{
|
||||
client.genderId | find: clientTemplate.genderOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.legalFormId) {
|
||||
@@ -107,13 +111,17 @@
|
||||
@if (client?.officeId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Office</span>
|
||||
<span class="preview-value">{{ client.officeId | find: clientTemplate.officeOptions : 'id' : 'name' }}</span>
|
||||
<span class="preview-value">{{
|
||||
client.officeId | find: clientTemplate.officeOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.staffId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Staff</span>
|
||||
<span class="preview-value">{{ client.staffId | find: clientTemplate.staffOptions : 'id' : 'displayName' }}</span>
|
||||
<span class="preview-value">{{
|
||||
client.staffId | find: clientTemplate.staffOptions : 'id' : 'displayName'
|
||||
}}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.legalFormId === LegalFormId.PERSON) {
|
||||
@@ -134,10 +142,42 @@
|
||||
<span class="preview-value">{{ client.maritalStatusId | find: maritalStatusOptions : 'id' : 'name' }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.educationLevelId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Education Level</span>
|
||||
<span class="preview-value">{{
|
||||
client.educationLevelId | find: educationLevelOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.degreeQualificationId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Degree / Qualification</span>
|
||||
<span class="preview-value">{{
|
||||
client.degreeQualificationId | find: degreeQualificationOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.religionId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Religion</span>
|
||||
<span class="preview-value">{{ client.religionId | find: religionOptions : 'id' : 'name' }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.socialCategoryId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Social Category</span>
|
||||
<span class="preview-value">{{
|
||||
client.socialCategoryId | find: socialCategoryOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.salutationId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Salutation</span>
|
||||
<span class="preview-value">{{ client.salutationId | find: clientTemplate.salutationOptions : 'id' : 'name' }}</span>
|
||||
<span class="preview-value">{{
|
||||
client.salutationId | find: clientTemplate.salutationOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.ageYears != null) {
|
||||
@@ -150,7 +190,11 @@
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Minor</span>
|
||||
<span class="preview-value">
|
||||
<span [class]="client.isMinor ? 'preview-badge preview-badge--danger' : 'preview-badge preview-badge--verified'">
|
||||
<span
|
||||
[class]="
|
||||
client.isMinor ? 'preview-badge preview-badge--danger' : 'preview-badge preview-badge--verified'
|
||||
"
|
||||
>
|
||||
{{ client.isMinor ? 'Yes (Age < 10)' : 'No' }}
|
||||
</span>
|
||||
</span>
|
||||
@@ -172,13 +216,19 @@
|
||||
@if (client.clientNonPersonDetails.constitutionId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Constitution</span>
|
||||
<span class="preview-value">{{ client.clientNonPersonDetails.constitutionId | find: clientTemplate.clientNonPersonConstitutionOptions : 'id' : 'name' }}</span>
|
||||
<span class="preview-value">{{
|
||||
client.clientNonPersonDetails.constitutionId
|
||||
| find: clientTemplate.clientNonPersonConstitutionOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client.clientNonPersonDetails.mainBusinessLineId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Main Business Line</span>
|
||||
<span class="preview-value">{{ client.clientNonPersonDetails.mainBusinessLineId | find: clientTemplate.clientNonPersonMainBusinessLineOptions : 'id' : 'name' }}</span>
|
||||
<span class="preview-value">{{
|
||||
client.clientNonPersonDetails.mainBusinessLineId
|
||||
| find: clientTemplate.clientNonPersonMainBusinessLineOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client.clientNonPersonDetails.incorpNumber) {
|
||||
@@ -215,17 +265,15 @@
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">DIP Verification</span>
|
||||
<span class="preview-value">
|
||||
<span [class]="client?.dipVerified ? 'preview-badge preview-badge--verified' : 'preview-badge preview-badge--pending'">
|
||||
<span
|
||||
[class]="
|
||||
client?.dipVerified ? 'preview-badge preview-badge--verified' : 'preview-badge preview-badge--pending'
|
||||
"
|
||||
>
|
||||
{{ client?.dipVerified ? 'Verified' : 'Pending' }}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
@if (client?.dipLookupLogId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">DIP Lookup Log ID</span>
|
||||
<span class="preview-value mono">{{ client.dipLookupLogId }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.alternateMobileNo) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Alternate Mobile No</span>
|
||||
@@ -236,18 +284,18 @@
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Alternate DIP Verification</span>
|
||||
<span class="preview-value">
|
||||
<span [class]="client?.alternateDipVerified ? 'preview-badge preview-badge--verified' : 'preview-badge preview-badge--pending'">
|
||||
<span
|
||||
[class]="
|
||||
client?.alternateDipVerified
|
||||
? 'preview-badge preview-badge--verified'
|
||||
: 'preview-badge preview-badge--pending'
|
||||
"
|
||||
>
|
||||
{{ client?.alternateDipVerified ? 'Verified' : 'Pending' }}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.alternateDipLookupLogId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Alternate DIP Lookup Log ID</span>
|
||||
<span class="preview-value mono">{{ client.alternateDipLookupLogId }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.emailAddress) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Email Address</span>
|
||||
@@ -257,78 +305,103 @@
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Name Verification (Sanctions)</span>
|
||||
<span class="preview-value">
|
||||
<span [class]="client?.nameVerified ? 'preview-badge preview-badge--verified' : 'preview-badge preview-badge--danger'">
|
||||
{{ client?.nameVerified ? 'Verified — Clear' : (client?.nameVerified === false ? 'Sanctions Match' : 'Pending') }}
|
||||
<span
|
||||
[class]="
|
||||
client?.nameVerified ? 'preview-badge preview-badge--verified' : 'preview-badge preview-badge--danger'
|
||||
"
|
||||
>
|
||||
{{
|
||||
client?.nameVerified
|
||||
? 'Verified — Clear'
|
||||
: client?.nameVerified === false
|
||||
? 'Sanctions Match'
|
||||
: 'Pending'
|
||||
}}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
@if (client?.screeningLogId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Screening Log ID</span>
|
||||
<span class="preview-value mono">{{ client.screeningLogId }}</span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Financial & Classification (Individual only) -->
|
||||
@if (client?.legalFormId !== 2) {
|
||||
<div class="info-card">
|
||||
<div class="card-header">
|
||||
<fa-icon icon="chart-line" class="card-icon"></fa-icon>
|
||||
<span>Financial & Classification</span>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="preview-grid">
|
||||
@if (client?.occupationCategoryId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Occupation Category</span>
|
||||
<span class="preview-value">{{ client.occupationCategoryId | find: clientTemplate.occupationCategoryOptions : 'id' : 'name' }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.occupationId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Occupation</span>
|
||||
<span class="preview-value">{{ client.occupationId | find: clientTemplate.occupationOptions : 'id' : 'name' }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.clientTypeId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Client Type</span>
|
||||
<span class="preview-value">{{ client.clientTypeId | find: clientTemplate.clientTypeOptions : 'id' : 'name' }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.clientClassificationId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Client Classification</span>
|
||||
<span class="preview-value">{{ client.clientClassificationId | find: clientTemplate.clientClassificationOptions : 'id' : 'name' }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.monthlyIncome) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Monthly Income</span>
|
||||
<span class="preview-value">₹ {{ client.monthlyIncome | number }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.annualTurnover) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Annual Turnover</span>
|
||||
<span class="preview-value">₹ {{ client.annualTurnover | number }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (!client?.occupationCategoryId && !client?.occupationId && !client?.clientTypeId && !client?.clientClassificationId && !client?.monthlyIncome && !client?.annualTurnover) {
|
||||
<div class="preview-field full-width">
|
||||
<span class="preview-value no-data">No classification data provided</span>
|
||||
</div>
|
||||
}
|
||||
<div class="info-card">
|
||||
<div class="card-header">
|
||||
<fa-icon icon="chart-line" class="card-icon"></fa-icon>
|
||||
<span>Financial & Classification</span>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="preview-grid">
|
||||
@if (client?.occupationCategoryId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Occupation Category</span>
|
||||
<span class="preview-value">{{
|
||||
client.occupationCategoryId | find: clientTemplate.occupationCategoryOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.occupationId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Occupation</span>
|
||||
<span class="preview-value">{{
|
||||
client.occupationId | find: clientTemplate.occupationOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.clientTypeId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Client Type</span>
|
||||
<span class="preview-value">{{
|
||||
client.clientTypeId | find: clientTemplate.clientTypeOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.clientClassificationId) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Client Classification</span>
|
||||
<span class="preview-value">{{
|
||||
client.clientClassificationId | find: clientTemplate.clientClassificationOptions : 'id' : 'name'
|
||||
}}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.monthlyIncome) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Monthly Income</span>
|
||||
<span class="preview-value">₹ {{ client.monthlyIncome | number }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (client?.annualTurnover) {
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Annual Turnover</span>
|
||||
<span class="preview-value">₹ {{ client.annualTurnover | number }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (
|
||||
!client?.occupationCategoryId &&
|
||||
!client?.occupationId &&
|
||||
!client?.clientTypeId &&
|
||||
!client?.clientClassificationId &&
|
||||
!client?.monthlyIncome &&
|
||||
!client?.annualTurnover
|
||||
) {
|
||||
<div class="preview-field full-width">
|
||||
<span class="preview-value no-data">No classification data provided</span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
<!-- KYC Details -->
|
||||
@if (kycData?.panNumber || kycData?.aadhaarNumberMasked || kycData?.gstinNumber || kycData?.enterprisePan || kycData?.cinNumber) {
|
||||
@if (
|
||||
kycData?.panNumber ||
|
||||
kycData?.aadhaarNumberMasked ||
|
||||
kycData?.gstinNumber ||
|
||||
kycData?.enterprisePan ||
|
||||
kycData?.cinNumber
|
||||
) {
|
||||
<div class="info-card">
|
||||
<div class="card-header">
|
||||
<fa-icon icon="fingerprint" class="card-icon"></fa-icon>
|
||||
@@ -391,9 +464,13 @@
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Risk Category</span>
|
||||
<span class="preview-value">
|
||||
@if (kycData.riskCategory === 1) { Low Risk }
|
||||
@else if (kycData.riskCategory === 2) { Medium Risk }
|
||||
@else if (kycData.riskCategory === 3) { High Risk }
|
||||
@if (kycData.riskCategory === 1) {
|
||||
Low Risk
|
||||
} @else if (kycData.riskCategory === 2) {
|
||||
Medium Risk
|
||||
} @else if (kycData.riskCategory === 3) {
|
||||
High Risk
|
||||
}
|
||||
</span>
|
||||
</div>
|
||||
}
|
||||
@@ -414,7 +491,7 @@
|
||||
<div class="card-header">
|
||||
<fa-icon icon="user-shield" class="card-icon"></fa-icon>
|
||||
<span>Guardian Details</span>
|
||||
<span class="preview-badge preview-badge--info" style="margin-left:auto">Minor</span>
|
||||
<span class="preview-badge preview-badge--info" style="margin-left: auto">Minor</span>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="preview-grid">
|
||||
@@ -450,7 +527,13 @@
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Status</span>
|
||||
<span class="preview-value">
|
||||
<span [class]="guardian.status?.value === 'Active' ? 'preview-badge preview-badge--verified' : 'preview-badge preview-badge--pending'">
|
||||
<span
|
||||
[class]="
|
||||
guardian.status?.value === 'Active'
|
||||
? 'preview-badge preview-badge--verified'
|
||||
: 'preview-badge preview-badge--pending'
|
||||
"
|
||||
>
|
||||
{{ guardian.status.value }}
|
||||
</span>
|
||||
</span>
|
||||
@@ -524,7 +607,12 @@
|
||||
</div>
|
||||
}
|
||||
}
|
||||
@if (!addressData.permanent?.addressLine1 && !addressData.current?.addressLine1 && !addressData.office?.addressLine1 && !addressData.correspondence?.addressLine1) {
|
||||
@if (
|
||||
!addressData.permanent?.addressLine1 &&
|
||||
!addressData.current?.addressLine1 &&
|
||||
!addressData.office?.addressLine1 &&
|
||||
!addressData.correspondence?.addressLine1
|
||||
) {
|
||||
<div class="preview-field full-width">
|
||||
<span class="preview-value no-data">No address data provided</span>
|
||||
</div>
|
||||
@@ -563,40 +651,76 @@
|
||||
<div class="card-body">
|
||||
<div class="preview-grid">
|
||||
@if (entityClassificationData.msme.udyamRegistrationNumber) {
|
||||
<div class="preview-field"><span class="preview-label">Udyam Registration No.</span><span class="preview-value mono">{{ entityClassificationData.msme.udyamRegistrationNumber }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Udyam Registration No.</span
|
||||
><span class="preview-value mono">{{ entityClassificationData.msme.udyamRegistrationNumber }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.msme.msmeClassification) {
|
||||
<div class="preview-field"><span class="preview-label">MSME Classification</span><span class="preview-value">{{ entityClassificationData.msme.msmeClassification }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">MSME Classification</span
|
||||
><span class="preview-value">{{ entityClassificationData.msme.msmeClassification }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.msme.enterpriseType) {
|
||||
<div class="preview-field"><span class="preview-label">Enterprise Type</span><span class="preview-value">{{ entityClassificationData.msme.enterpriseType }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Enterprise Type</span
|
||||
><span class="preview-value">{{ entityClassificationData.msme.enterpriseType }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.msme.nicActivityCode) {
|
||||
<div class="preview-field"><span class="preview-label">NIC Activity Code</span><span class="preview-value mono">{{ entityClassificationData.msme.nicActivityCode }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">NIC Activity Code</span
|
||||
><span class="preview-value mono">{{ entityClassificationData.msme.nicActivityCode }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.msme.annualTurnover) {
|
||||
<div class="preview-field"><span class="preview-label">Annual Turnover</span><span class="preview-value">₹ {{ entityClassificationData.msme.annualTurnover }} Cr</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Annual Turnover</span
|
||||
><span class="preview-value">₹ {{ entityClassificationData.msme.annualTurnover }} Cr</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.msme.investmentPlantMachinery) {
|
||||
<div class="preview-field"><span class="preview-label">Investment (Plant & Machinery)</span><span class="preview-value">₹ {{ entityClassificationData.msme.investmentPlantMachinery }} Cr</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Investment (Plant & Machinery)</span
|
||||
><span class="preview-value">₹ {{ entityClassificationData.msme.investmentPlantMachinery }} Cr</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.msme.financialYearAssessment) {
|
||||
<div class="preview-field"><span class="preview-label">FY of Assessment</span><span class="preview-value">{{ entityClassificationData.msme.financialYearAssessment }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">FY of Assessment</span
|
||||
><span class="preview-value">{{ entityClassificationData.msme.financialYearAssessment }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.msme.socialCategoryOwner) {
|
||||
<div class="preview-field"><span class="preview-label">Social Category</span><span class="preview-value">{{ entityClassificationData.msme.socialCategoryOwner }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Social Category</span
|
||||
><span class="preview-value">{{ entityClassificationData.msme.socialCategoryOwner }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.msme.genderPrimaryOwner) {
|
||||
<div class="preview-field"><span class="preview-label">Gender of Owner</span><span class="preview-value">{{ entityClassificationData.msme.genderPrimaryOwner }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Gender of Owner</span
|
||||
><span class="preview-value">{{ entityClassificationData.msme.genderPrimaryOwner }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.msme.noOfEmployees) {
|
||||
<div class="preview-field"><span class="preview-label">No. of Employees</span><span class="preview-value">{{ entityClassificationData.msme.noOfEmployees }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">No. of Employees</span
|
||||
><span class="preview-value">{{ entityClassificationData.msme.noOfEmployees }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.msme.womenLedEnterprise) {
|
||||
<div class="preview-field"><span class="preview-label">Women-led Enterprise</span><span class="preview-value"><span class="preview-badge preview-badge--verified">Yes</span></span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Women-led Enterprise</span
|
||||
><span class="preview-value"><span class="preview-badge preview-badge--verified">Yes</span></span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.msme.divyangPwdOwned) {
|
||||
<div class="preview-field"><span class="preview-label">Divyang (PWD) Owned</span><span class="preview-value"><span class="preview-badge preview-badge--verified">Yes</span></span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Divyang (PWD) Owned</span
|
||||
><span class="preview-value"><span class="preview-badge preview-badge--verified">Yes</span></span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -613,19 +737,34 @@
|
||||
<div class="card-body">
|
||||
<div class="preview-grid">
|
||||
@if (entityClassificationData.startup.dpiitRecognitionNumber) {
|
||||
<div class="preview-field"><span class="preview-label">DPIIT Recognition No.</span><span class="preview-value mono">{{ entityClassificationData.startup.dpiitRecognitionNumber }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">DPIIT Recognition No.</span
|
||||
><span class="preview-value mono">{{ entityClassificationData.startup.dpiitRecognitionNumber }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.startup.entityStage) {
|
||||
<div class="preview-field"><span class="preview-label">Entity Stage</span><span class="preview-value">{{ entityClassificationData.startup.entityStage }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Entity Stage</span
|
||||
><span class="preview-value">{{ entityClassificationData.startup.entityStage }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.startup.sectorAsDpiit) {
|
||||
<div class="preview-field"><span class="preview-label">Sector (DPIIT)</span><span class="preview-value">{{ entityClassificationData.startup.sectorAsDpiit }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Sector (DPIIT)</span
|
||||
><span class="preview-value">{{ entityClassificationData.startup.sectorAsDpiit }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.startup.taxExemption80iac) {
|
||||
<div class="preview-field"><span class="preview-label">80IAC Tax Exemption</span><span class="preview-value"><span class="preview-badge preview-badge--verified">Yes</span></span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">80IAC Tax Exemption</span
|
||||
><span class="preview-value"><span class="preview-badge preview-badge--verified">Yes</span></span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.startup.pslLoanLimit) {
|
||||
<div class="preview-field"><span class="preview-label">PSL Loan Limit</span><span class="preview-value">₹ {{ entityClassificationData.startup.pslLoanLimit | number }} Cr</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">PSL Loan Limit</span
|
||||
><span class="preview-value">₹ {{ entityClassificationData.startup.pslLoanLimit | number }} Cr</span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -642,22 +781,40 @@
|
||||
<div class="card-body">
|
||||
<div class="preview-grid">
|
||||
@if (entityClassificationData.mudra.mudraCategory) {
|
||||
<div class="preview-field"><span class="preview-label">Mudra Category</span><span class="preview-value">{{ entityClassificationData.mudra.mudraCategory }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Mudra Category</span
|
||||
><span class="preview-value">{{ entityClassificationData.mudra.mudraCategory }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.mudra.mudraLoanAccountNo) {
|
||||
<div class="preview-field"><span class="preview-label">Loan Account No.</span><span class="preview-value mono">{{ entityClassificationData.mudra.mudraLoanAccountNo }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Loan Account No.</span
|
||||
><span class="preview-value mono">{{ entityClassificationData.mudra.mudraLoanAccountNo }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.mudra.sanctionedAmount) {
|
||||
<div class="preview-field"><span class="preview-label">Sanctioned Amount</span><span class="preview-value">₹ {{ entityClassificationData.mudra.sanctionedAmount | number }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Sanctioned Amount</span
|
||||
><span class="preview-value">₹ {{ entityClassificationData.mudra.sanctionedAmount | number }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.mudra.lendingInstitutionName) {
|
||||
<div class="preview-field"><span class="preview-label">Lending Institution</span><span class="preview-value">{{ entityClassificationData.mudra.lendingInstitutionName }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Lending Institution</span
|
||||
><span class="preview-value">{{ entityClassificationData.mudra.lendingInstitutionName }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.mudra.repaymentStatus) {
|
||||
<div class="preview-field"><span class="preview-label">Repayment Status</span><span class="preview-value">{{ entityClassificationData.mudra.repaymentStatus }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Repayment Status</span
|
||||
><span class="preview-value">{{ entityClassificationData.mudra.repaymentStatus }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.mudra.npaFlag) {
|
||||
<div class="preview-field"><span class="preview-label">NPA Flag</span><span class="preview-value"><span class="preview-badge preview-badge--danger">NPA</span></span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">NPA Flag</span
|
||||
><span class="preview-value"><span class="preview-badge preview-badge--danger">NPA</span></span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -674,19 +831,36 @@
|
||||
<div class="card-body">
|
||||
<div class="preview-grid">
|
||||
@if (entityClassificationData.eou.eouRegistrationNumber) {
|
||||
<div class="preview-field"><span class="preview-label">EOU Registration No.</span><span class="preview-value mono">{{ entityClassificationData.eou.eouRegistrationNumber }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">EOU Registration No.</span
|
||||
><span class="preview-value mono">{{ entityClassificationData.eou.eouRegistrationNumber }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.eou.registeredDcZone) {
|
||||
<div class="preview-field"><span class="preview-label">Registered DC Zone</span><span class="preview-value">{{ entityClassificationData.eou.registeredDcZone }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Registered DC Zone</span
|
||||
><span class="preview-value">{{ entityClassificationData.eou.registeredDcZone }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.eou.gstinEou) {
|
||||
<div class="preview-field"><span class="preview-label">GSTIN (EOU)</span><span class="preview-value mono">{{ entityClassificationData.eou.gstinEou }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">GSTIN (EOU)</span
|
||||
><span class="preview-value mono">{{ entityClassificationData.eou.gstinEou }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.eou.annualExportObligation) {
|
||||
<div class="preview-field"><span class="preview-label">Export Obligation</span><span class="preview-value">₹ {{ entityClassificationData.eou.annualExportObligation | number }} Cr</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Export Obligation</span
|
||||
><span class="preview-value"
|
||||
>₹ {{ entityClassificationData.eou.annualExportObligation | number }} Cr</span
|
||||
>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.eou.adCategoryBankCode) {
|
||||
<div class="preview-field"><span class="preview-label">AD Bank Code</span><span class="preview-value mono">{{ entityClassificationData.eou.adCategoryBankCode }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">AD Bank Code</span
|
||||
><span class="preview-value mono">{{ entityClassificationData.eou.adCategoryBankCode }}</span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -703,22 +877,40 @@
|
||||
<div class="card-body">
|
||||
<div class="preview-grid">
|
||||
@if (entityClassificationData.importexport.iecCode) {
|
||||
<div class="preview-field"><span class="preview-label">IEC Code</span><span class="preview-value mono">{{ entityClassificationData.importexport.iecCode }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">IEC Code</span
|
||||
><span class="preview-value mono">{{ entityClassificationData.importexport.iecCode }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.importexport.iecStatus) {
|
||||
<div class="preview-field"><span class="preview-label">IEC Status</span><span class="preview-value">{{ entityClassificationData.importexport.iecStatus }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">IEC Status</span
|
||||
><span class="preview-value">{{ entityClassificationData.importexport.iecStatus }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.importexport.tradeType) {
|
||||
<div class="preview-field"><span class="preview-label">Trade Type</span><span class="preview-value">{{ entityClassificationData.importexport.tradeType }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Trade Type</span
|
||||
><span class="preview-value">{{ entityClassificationData.importexport.tradeType }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.importexport.primaryHsCode) {
|
||||
<div class="preview-field"><span class="preview-label">Primary HS Code</span><span class="preview-value mono">{{ entityClassificationData.importexport.primaryHsCode }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Primary HS Code</span
|
||||
><span class="preview-value mono">{{ entityClassificationData.importexport.primaryHsCode }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.importexport.eefcAccountRequired) {
|
||||
<div class="preview-field"><span class="preview-label">EEFC Account</span><span class="preview-value"><span class="preview-badge preview-badge--verified">Required</span></span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">EEFC Account</span
|
||||
><span class="preview-value"><span class="preview-badge preview-badge--verified">Required</span></span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.importexport.femaDeclarationObtained) {
|
||||
<div class="preview-field"><span class="preview-label">FEMA Declaration</span><span class="preview-value"><span class="preview-badge preview-badge--verified">Obtained</span></span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">FEMA Declaration</span
|
||||
><span class="preview-value"><span class="preview-badge preview-badge--verified">Obtained</span></span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -735,22 +927,40 @@
|
||||
<div class="card-body">
|
||||
<div class="preview-grid">
|
||||
@if (entityClassificationData.psl.pslCategory) {
|
||||
<div class="preview-field"><span class="preview-label">PSL Category</span><span class="preview-value">{{ entityClassificationData.psl.pslCategory }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">PSL Category</span
|
||||
><span class="preview-value">{{ entityClassificationData.psl.pslCategory }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.psl.pslSubCategory) {
|
||||
<div class="preview-field"><span class="preview-label">PSL Sub-category</span><span class="preview-value">{{ entityClassificationData.psl.pslSubCategory }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">PSL Sub-category</span
|
||||
><span class="preview-value">{{ entityClassificationData.psl.pslSubCategory }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.psl.pslSanctionedLimit) {
|
||||
<div class="preview-field"><span class="preview-label">Sanctioned Limit</span><span class="preview-value">₹ {{ entityClassificationData.psl.pslSanctionedLimit | number }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Sanctioned Limit</span
|
||||
><span class="preview-value">₹ {{ entityClassificationData.psl.pslSanctionedLimit | number }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.psl.fiddReportingCode) {
|
||||
<div class="preview-field"><span class="preview-label">FIDD Reporting Code</span><span class="preview-value mono">{{ entityClassificationData.psl.fiddReportingCode }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">FIDD Reporting Code</span
|
||||
><span class="preview-value mono">{{ entityClassificationData.psl.fiddReportingCode }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.psl.weakerSectionFlag) {
|
||||
<div class="preview-field"><span class="preview-label">Weaker Section</span><span class="preview-value"><span class="preview-badge preview-badge--verified">Yes</span></span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Weaker Section</span
|
||||
><span class="preview-value"><span class="preview-badge preview-badge--verified">Yes</span></span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.psl.womenEntrepreneurFlag) {
|
||||
<div class="preview-field"><span class="preview-label">Women Entrepreneur</span><span class="preview-value"><span class="preview-badge preview-badge--verified">Yes</span></span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Women Entrepreneur</span
|
||||
><span class="preview-value"><span class="preview-badge preview-badge--verified">Yes</span></span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -767,25 +977,46 @@
|
||||
<div class="card-body">
|
||||
<div class="preview-grid">
|
||||
@if (entityClassificationData.nps.industrySector) {
|
||||
<div class="preview-field"><span class="preview-label">Industry Sector</span><span class="preview-value">{{ entityClassificationData.nps.industrySector }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Industry Sector</span
|
||||
><span class="preview-value">{{ entityClassificationData.nps.industrySector }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.nps.nicCode) {
|
||||
<div class="preview-field"><span class="preview-label">NIC Code</span><span class="preview-value mono">{{ entityClassificationData.nps.nicCode }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">NIC Code</span
|
||||
><span class="preview-value mono">{{ entityClassificationData.nps.nicCode }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.nps.annualRevenueBand) {
|
||||
<div class="preview-field"><span class="preview-label">Annual Revenue Band</span><span class="preview-value">{{ entityClassificationData.nps.annualRevenueBand }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Annual Revenue Band</span
|
||||
><span class="preview-value">{{ entityClassificationData.nps.annualRevenueBand }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.nps.riskCategory) {
|
||||
<div class="preview-field"><span class="preview-label">Risk Category</span><span class="preview-value">{{ entityClassificationData.nps.riskCategory }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">Risk Category</span
|
||||
><span class="preview-value">{{ entityClassificationData.nps.riskCategory }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.nps.amlRiskClassification) {
|
||||
<div class="preview-field"><span class="preview-label">AML Risk</span><span class="preview-value">{{ entityClassificationData.nps.amlRiskClassification }}</span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">AML Risk</span
|
||||
><span class="preview-value">{{ entityClassificationData.nps.amlRiskClassification }}</span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.nps.pepFlag) {
|
||||
<div class="preview-field"><span class="preview-label">PEP Flag</span><span class="preview-value"><span class="preview-badge preview-badge--danger">PEP</span></span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">PEP Flag</span
|
||||
><span class="preview-value"><span class="preview-badge preview-badge--danger">PEP</span></span>
|
||||
</div>
|
||||
}
|
||||
@if (entityClassificationData.nps.amlWatchlistMatch) {
|
||||
<div class="preview-field"><span class="preview-label">AML Watchlist</span><span class="preview-value"><span class="preview-badge preview-badge--danger">Match Found</span></span></div>
|
||||
<div class="preview-field">
|
||||
<span class="preview-label">AML Watchlist</span
|
||||
><span class="preview-value"><span class="preview-badge preview-badge--danger">Match Found</span></span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -793,58 +1024,64 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
<!-- Family Members (Individual only) -->
|
||||
@if (client?.legalFormId !== 2) {
|
||||
<div class="info-card">
|
||||
<div class="card-header">
|
||||
<fa-icon icon="users" class="card-icon"></fa-icon>
|
||||
<span>Family Members</span>
|
||||
@if (familyMembers.length > 0) {
|
||||
<span class="count-badge">{{ familyMembers.length }}</span>
|
||||
}
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (familyMembers.length === 0) {
|
||||
<div class="preview-empty preview-empty--warn">
|
||||
<mat-icon class="preview-empty__icon">warning</mat-icon>
|
||||
<span>No family members added. At least one is required.</span>
|
||||
</div>
|
||||
} @else {
|
||||
<div class="fm-preview-list">
|
||||
@for (member of familyMembers; track member; let i = $index) {
|
||||
<div class="fm-preview-row">
|
||||
<div class="fm-preview-row__sno">{{ i + 1 }}</div>
|
||||
<div class="fm-preview-row__avatar">
|
||||
<mat-icon>person</mat-icon>
|
||||
</div>
|
||||
<div class="fm-preview-row__info">
|
||||
<span class="fm-preview-row__name">{{ member.firstName || member.displayName }}</span>
|
||||
<span class="fm-preview-row__meta">
|
||||
@if (member.relationship) { {{ member.relationship }} }
|
||||
@if (member.dateOfBirth) { · DOB: {{ member.dateOfBirth }} }
|
||||
</span>
|
||||
</div>
|
||||
@if (member.aadhaarNumber || member.panNumber) {
|
||||
<div class="fm-preview-row__ids">
|
||||
@if (member.panNumber) { <span class="fm-preview-id">PAN: {{ member.panNumber }}</span> }
|
||||
@if (member.aadhaarNumber) { <span class="fm-preview-id">Aadhaar: {{ member.aadhaarNumber }}</span> }
|
||||
<div class="info-card">
|
||||
<div class="card-header">
|
||||
<fa-icon icon="users" class="card-icon"></fa-icon>
|
||||
<span>Family Members</span>
|
||||
@if (familyMembers.length > 0) {
|
||||
<span class="count-badge">{{ familyMembers.length }}</span>
|
||||
}
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (familyMembers.length === 0) {
|
||||
<div class="preview-empty preview-empty--warn">
|
||||
<mat-icon class="preview-empty__icon">warning</mat-icon>
|
||||
<span>No family members added. At least one is required.</span>
|
||||
</div>
|
||||
} @else {
|
||||
<div class="fm-preview-list">
|
||||
@for (member of familyMembers; track member; let i = $index) {
|
||||
<div class="fm-preview-row">
|
||||
<div class="fm-preview-row__sno">{{ i + 1 }}</div>
|
||||
<div class="fm-preview-row__avatar">
|
||||
<mat-icon>person</mat-icon>
|
||||
</div>
|
||||
}
|
||||
<div class="fm-preview-row__status">
|
||||
@if (member.isDependent) {
|
||||
<span class="preview-badge preview-badge--info">Dependent</span>
|
||||
}
|
||||
@if (member.linkedClientId) {
|
||||
<span class="preview-badge preview-badge--verified">Linked</span>
|
||||
<div class="fm-preview-row__info">
|
||||
<span class="fm-preview-row__name">{{ member.firstName || member.displayName }}</span>
|
||||
<span class="fm-preview-row__meta">
|
||||
@if (member.relationship) {
|
||||
{{ member.relationship }}
|
||||
}
|
||||
@if (member.dateOfBirth) {
|
||||
· DOB: {{ member.dateOfBirth }}
|
||||
}
|
||||
</span>
|
||||
</div>
|
||||
@if (member.aadhaarNumber || member.panNumber) {
|
||||
<div class="fm-preview-row__ids">
|
||||
@if (member.panNumber) {
|
||||
<span class="fm-preview-id">PAN: {{ member.panNumber }}</span>
|
||||
}
|
||||
@if (member.aadhaarNumber) {
|
||||
<span class="fm-preview-id">Aadhaar: {{ member.aadhaarNumber }}</span>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
<div class="fm-preview-row__status">
|
||||
@if (member.isDependent) {
|
||||
<span class="preview-badge preview-badge--info">Dependent</span>
|
||||
}
|
||||
@if (member.linkedClientId) {
|
||||
<span class="preview-badge preview-badge--verified">Linked</span>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user