- Hide Family Members tab/section for non-individual entities in client view, create flow, and preview - Hide Financial & Classification section for non-individual entities in personal data and preview - Fix legal form column in clients list — fetch legalForm from client API for correct display - Add person/business icon before client name in list rows - Remove unsupportedNpd filter — send authorizedSignatory, additionalInfo, dateOfRegistration to API - Add registration number format hint (mat-hint) based on constitution type - Add spacing between verification row and constitution type dropdowns - Reduce table cell padding and prevent action buttons from being clipped - Add missing MPL-2.0 license headers Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
679 lines
43 KiB
HTML
679 lines
43 KiB
HTML
<!--
|
||
Copyright since 2025 Mifos Initiative
|
||
-->
|
||
|
||
<div class="ec-page">
|
||
<!-- Header -->
|
||
<div class="step-header">
|
||
<div class="step-header__left">
|
||
<fa-icon icon="building" class="step-header__icon"></fa-icon>
|
||
<div>
|
||
<h3 class="step-header__title">Scheme & Sector Classification</h3>
|
||
<p class="step-header__sub">Regulatory scheme flags, sector classification & compliance identifiers</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Active Chips -->
|
||
<div class="ec-chips-label">Active Classifications</div>
|
||
<div class="ec-chips">
|
||
@if (enabledCount === 0) {
|
||
<span class="ec-no-chip">No classifications enabled — toggle categories below</span>
|
||
}
|
||
@for (cat of enabledCategories; track cat.id) {
|
||
<span class="ec-chip" [style.background]="cat.tagBg" [style.color]="cat.tagColor">
|
||
{{ cat.label }}
|
||
<mat-icon class="ec-chip-close" (click)="removeCategory(cat.id)">close</mat-icon>
|
||
</span>
|
||
}
|
||
</div>
|
||
|
||
<!-- ═══ CATEGORY: MSME ═══ -->
|
||
<div class="ec-card" [class.ec-card--open]="enabled['msme']">
|
||
<div class="ec-card-head" (click)="toggleExpand('msme')">
|
||
<div class="ec-card-head-left">
|
||
<span class="ec-tag" style="background:#E6F4F6;color:#0A5C6B;">Udyam / MSME</span>
|
||
<div>
|
||
<div class="ec-card-title">MSME</div>
|
||
<div class="ec-card-desc">Micro, Small & Medium Enterprise — Ministry of MSME / Udyam Registration</div>
|
||
</div>
|
||
</div>
|
||
<div class="ec-card-toggle">
|
||
<mat-slide-toggle [checked]="!!enabled['msme']" (change)="toggleCategory('msme')" (click)="$event.stopPropagation()"></mat-slide-toggle>
|
||
<mat-icon class="ec-chevron" [class.open]="expanded['msme']">expand_more</mat-icon>
|
||
</div>
|
||
</div>
|
||
@if (expanded['msme']) {
|
||
<div class="ec-card-body" [formGroup]="msmeForm">
|
||
<div class="ec-sub-title">Udyam Registration</div>
|
||
<div class="ec-grid-3">
|
||
<mat-form-field appearance="outline"><mat-label>Udyam Registration Number</mat-label>
|
||
<input matInput formControlName="udyamRegistrationNumber" placeholder="UDYAM-MP-00-0000000"
|
||
maxlength="19" style="text-transform:uppercase"
|
||
(input)="msmeForm.get('udyamRegistrationNumber')?.setValue($any($event.target).value.toUpperCase(), {emitEvent:false})" /></mat-form-field>
|
||
<mat-form-field appearance="outline" (click)="msmeRegDatePicker.open()"><mat-label>Registration Date</mat-label>
|
||
<input matInput [matDatepicker]="msmeRegDatePicker" formControlName="registrationDate" />
|
||
<mat-datepicker-toggle matSuffix [for]="msmeRegDatePicker"></mat-datepicker-toggle><mat-datepicker #msmeRegDatePicker></mat-datepicker></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Registration Status</mat-label>
|
||
<mat-select formControlName="registrationStatus">
|
||
<mat-option value="ACTIVE">Active</mat-option>
|
||
<mat-option value="SUSPENDED">Suspended</mat-option>
|
||
<mat-option value="CANCELLED">Cancelled</mat-option>
|
||
<mat-option value="PENDING">Pending Verification</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>MSME Classification</mat-label>
|
||
<mat-select formControlName="msmeClassification">
|
||
<mat-option value="MICRO">Micro (T/O ≤ ₹5 Cr, Inv ≤ ₹1 Cr)</mat-option>
|
||
<mat-option value="SMALL">Small (T/O ≤ ₹50 Cr, Inv ≤ ₹10 Cr)</mat-option>
|
||
<mat-option value="MEDIUM">Medium (T/O ≤ ₹250 Cr, Inv ≤ ₹50 Cr)</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Enterprise Type</mat-label>
|
||
<mat-select formControlName="enterpriseType">
|
||
<mat-option value="MANUFACTURING">Manufacturing</mat-option>
|
||
<mat-option value="SERVICES">Services</mat-option>
|
||
<mat-option value="TRADING">Trading</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>NIC Activity Code</mat-label>
|
||
<input matInput formControlName="nicActivityCode" placeholder="e.g. 13111" maxlength="10" /></mat-form-field>
|
||
</div>
|
||
|
||
<div class="ec-sub-title">Financial Thresholds (as per Udyam Portal)</div>
|
||
<div class="ec-grid-3">
|
||
<mat-form-field appearance="outline"><mat-label>Annual Turnover — Last FY (₹ Cr)</mat-label>
|
||
<input matInput type="number" formControlName="annualTurnover" placeholder="0.00" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Investment — Plant & Machinery / Equipment (₹ Cr)</mat-label>
|
||
<input matInput type="number" formControlName="investmentPlantMachinery" placeholder="0.00" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Financial Year of Last Assessment</mat-label>
|
||
<mat-select formControlName="financialYearAssessment">
|
||
<mat-option value="2025-26">2025-26</mat-option>
|
||
<mat-option value="2024-25">2024-25</mat-option>
|
||
<mat-option value="2023-24">2023-24</mat-option>
|
||
<mat-option value="2022-23">2022-23</mat-option>
|
||
<mat-option value="2021-22">2021-22</mat-option>
|
||
<mat-option value="2020-21">2020-21</mat-option>
|
||
</mat-select></mat-form-field>
|
||
</div>
|
||
|
||
<div class="ec-sub-title">Owner / Promoter Details</div>
|
||
<div class="ec-grid-3">
|
||
<mat-form-field appearance="outline"><mat-label>Social Category of Owner</mat-label>
|
||
<mat-select formControlName="socialCategoryOwner">
|
||
<mat-option value="GENERAL">General</mat-option>
|
||
<mat-option value="SC">Scheduled Caste (SC)</mat-option>
|
||
<mat-option value="ST">Scheduled Tribe (ST)</mat-option>
|
||
<mat-option value="OBC">Other Backward Class (OBC)</mat-option>
|
||
<mat-option value="MINORITY">Minority</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Gender of Primary Owner</mat-label>
|
||
<mat-select formControlName="genderPrimaryOwner">
|
||
<mat-option value="MALE">Male</mat-option>
|
||
<mat-option value="FEMALE">Female</mat-option>
|
||
<mat-option value="OTHER">Other</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>No. of Employees (approx.)</mat-label>
|
||
<input matInput type="number" formControlName="noOfEmployees" placeholder="0" /></mat-form-field>
|
||
</div>
|
||
<div class="ec-flags">
|
||
<div class="ec-flag-row">
|
||
<div><span class="ec-flag-label">Women-led Enterprise</span><span class="ec-flag-sub">Majority ownership / management by women entrepreneur</span></div>
|
||
<mat-slide-toggle formControlName="womenLedEnterprise"></mat-slide-toggle>
|
||
</div>
|
||
<div class="ec-flag-row">
|
||
<div><span class="ec-flag-label">Divyang (PWD) Owned</span><span class="ec-flag-sub">Persons with Disability — eligible for special scheme benefits</span></div>
|
||
<mat-slide-toggle formControlName="divyangPwdOwned"></mat-slide-toggle>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="ec-reg-note">
|
||
<strong>MSMED Act 2006 (Revised):</strong> Classification based on composite criteria of investment in plant & machinery AND annual turnover. Udyam Registration is mandatory for availing PSL benefits, government procurement preference, and CGSS coverage.
|
||
</div>
|
||
|
||
<div class="ec-card-actions">
|
||
<button mat-raised-button color="primary" [disabled]="!clientId || saving['msme']" (click)="saveCategory('msme')">
|
||
@if (saving['msme']) { <mat-progress-spinner diameter="16" mode="indeterminate"></mat-progress-spinner> Saving... }
|
||
@else if (saved['msme']) { <mat-icon>check</mat-icon> Saved }
|
||
@else { Save MSME }
|
||
</button>
|
||
</div>
|
||
</div>
|
||
}
|
||
</div>
|
||
|
||
<!-- ═══ CATEGORY 1: STARTUP INDIA ═══ -->
|
||
<div class="ec-card" [class.ec-card--open]="enabled['startup']">
|
||
<div class="ec-card-head" (click)="toggleExpand('startup')">
|
||
<div class="ec-card-head-left">
|
||
<span class="ec-tag" style="background:#EAF2FB;color:#1A5FAB;">DPIIT</span>
|
||
<div>
|
||
<div class="ec-card-title">Startup India Registered</div>
|
||
<div class="ec-card-desc">DPIIT recognition under Startup India initiative</div>
|
||
</div>
|
||
</div>
|
||
<div class="ec-card-toggle">
|
||
<mat-slide-toggle [checked]="!!enabled['startup']" (change)="toggleCategory('startup')" (click)="$event.stopPropagation()"></mat-slide-toggle>
|
||
<mat-icon class="ec-chevron" [class.open]="expanded['startup']">expand_more</mat-icon>
|
||
</div>
|
||
</div>
|
||
@if (expanded['startup']) {
|
||
<div class="ec-card-body" [formGroup]="startupForm">
|
||
<div class="ec-sub-title">Registration Details</div>
|
||
<div class="ec-grid-3">
|
||
<mat-form-field appearance="outline"><mat-label>DPIIT Recognition Number</mat-label>
|
||
<input matInput formControlName="dpiitRecognitionNumber" placeholder="DIPP12345" style="text-transform:uppercase" /></mat-form-field>
|
||
<mat-form-field appearance="outline" (click)="recDatePicker.open()"><mat-label>Recognition Date</mat-label>
|
||
<input matInput [matDatepicker]="recDatePicker" formControlName="recognitionDate" />
|
||
<mat-datepicker-toggle matSuffix [for]="recDatePicker"></mat-datepicker-toggle><mat-datepicker #recDatePicker></mat-datepicker></mat-form-field>
|
||
<mat-form-field appearance="outline" (click)="certExpPicker.open()"><mat-label>Certificate Expiry Date</mat-label>
|
||
<input matInput [matDatepicker]="certExpPicker" formControlName="certificateExpiryDate" />
|
||
<mat-datepicker-toggle matSuffix [for]="certExpPicker"></mat-datepicker-toggle><mat-datepicker #certExpPicker></mat-datepicker></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Entity Stage</mat-label>
|
||
<mat-select formControlName="entityStage">
|
||
<mat-option value="EARLY">Early (0–2 years)</mat-option>
|
||
<mat-option value="GROWTH">Growth (2–5 years)</mat-option>
|
||
<mat-option value="SCALE">Scale (5+ years)</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Sector as per DPIIT</mat-label>
|
||
<mat-select formControlName="sectorAsDpiit">
|
||
<mat-option value="Fintech">Fintech</mat-option>
|
||
<mat-option value="Agritech">Agritech</mat-option>
|
||
<mat-option value="Edtech">Edtech</mat-option>
|
||
<mat-option value="Healthtech">Healthtech</mat-option>
|
||
<mat-option value="Logistics">Logistics</mat-option>
|
||
<mat-option value="Manufacturing">Manufacturing</mat-option>
|
||
<mat-option value="SaaS / B2B Tech">SaaS / B2B Tech</mat-option>
|
||
<mat-option value="Information Technology">Information Technology</mat-option>
|
||
<mat-option value="Other">Other</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>NIC Industry Code</mat-label>
|
||
<input matInput formControlName="nicIndustryCode" placeholder="e.g. 62013" maxlength="10" /></mat-form-field>
|
||
</div>
|
||
|
||
<div class="ec-sub-title">Government Scheme Benefits Availed</div>
|
||
<div class="ec-check-grid">
|
||
<mat-checkbox formControlName="taxExemption80iac">80IAC Tax Exemption</mat-checkbox>
|
||
<mat-checkbox formControlName="sidbiFund">SIDBI Startup Fund</mat-checkbox>
|
||
<mat-checkbox formControlName="selfCertification">Self-Certification (Labour / Env.)</mat-checkbox>
|
||
<mat-checkbox formControlName="fastTrackPatent">Fast-track Patent / IPR</mat-checkbox>
|
||
<mat-checkbox formControlName="govtTenderExemption">Government Tender Exemption</mat-checkbox>
|
||
<mat-checkbox formControlName="creditGuaranteeCgss">Credit Guarantee Scheme (CGSS)</mat-checkbox>
|
||
</div>
|
||
|
||
<div class="ec-sub-title">PSL Linkage</div>
|
||
<div class="ec-grid-2">
|
||
<mat-form-field appearance="outline"><mat-label>Loan Limit for PSL Eligibility (Cr)</mat-label>
|
||
<input matInput type="number" formControlName="pslLoanLimit" placeholder="Max 50 Cr" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>PSL Sub-category</mat-label>
|
||
<mat-select formControlName="pslSubCategory">
|
||
<mat-option value="Others (Startup India)">Others (Startup India)</mat-option>
|
||
<mat-option value="MSME - Micro">MSME — Micro</mat-option>
|
||
<mat-option value="MSME - Small">MSME — Small</mat-option>
|
||
</mat-select></mat-form-field>
|
||
</div>
|
||
|
||
<div class="ec-reg-note">
|
||
<strong>RBI Circular RBI/2023-24/62:</strong> DPIIT-recognized startups eligible for PSL classification up to ₹50 Cr. Recognition certificate to be retained in document management system.
|
||
</div>
|
||
|
||
<div class="ec-card-actions">
|
||
<button mat-raised-button color="primary" [disabled]="!clientId || saving['startup']" (click)="saveCategory('startup')">
|
||
@if (saving['startup']) { <mat-progress-spinner diameter="16" mode="indeterminate"></mat-progress-spinner> Saving... }
|
||
@else if (saved['startup']) { <mat-icon>check</mat-icon> Saved }
|
||
@else { Save Startup India }
|
||
</button>
|
||
</div>
|
||
</div>
|
||
}
|
||
</div>
|
||
|
||
<!-- ═══ CATEGORY 2: MUDRA BORROWER ═══ -->
|
||
<div class="ec-card" [class.ec-card--open]="enabled['mudra']">
|
||
<div class="ec-card-head" (click)="toggleExpand('mudra')">
|
||
<div class="ec-card-head-left">
|
||
<span class="ec-tag" style="background:#FEF3DC;color:#8A5A00;">PMMY</span>
|
||
<div>
|
||
<div class="ec-card-title">Mudra Borrower</div>
|
||
<div class="ec-card-desc">Pradhan Mantri Mudra Yojana — SIDBI / Mudra scheme borrower</div>
|
||
</div>
|
||
</div>
|
||
<div class="ec-card-toggle">
|
||
<mat-slide-toggle [checked]="!!enabled['mudra']" (change)="toggleCategory('mudra')" (click)="$event.stopPropagation()"></mat-slide-toggle>
|
||
<mat-icon class="ec-chevron" [class.open]="expanded['mudra']">expand_more</mat-icon>
|
||
</div>
|
||
</div>
|
||
@if (expanded['mudra']) {
|
||
<div class="ec-card-body" [formGroup]="mudraForm">
|
||
<div class="ec-sub-title">Loan Classification</div>
|
||
<div class="ec-grid-3">
|
||
<mat-form-field appearance="outline"><mat-label>Mudra Category</mat-label>
|
||
<mat-select formControlName="mudraCategory">
|
||
<mat-option value="SHISHU">Shishu (up to ₹50,000)</mat-option>
|
||
<mat-option value="KISHORE">Kishore (₹50,001 – ₹5,00,000)</mat-option>
|
||
<mat-option value="TARUN">Tarun (₹5,00,001 – ₹10,00,000)</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Mudra Loan Account No.</mat-label>
|
||
<input matInput formControlName="mudraLoanAccountNo" placeholder="Lender's loan account number" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Lending Institution Name</mat-label>
|
||
<input matInput formControlName="lendingInstitutionName" placeholder="Bank / NBFC / MFI name" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Sanctioned Amount (₹)</mat-label>
|
||
<input matInput type="number" formControlName="sanctionedAmount" placeholder="0.00" /></mat-form-field>
|
||
<mat-form-field appearance="outline" (click)="mudraDispPicker.open()"><mat-label>Disbursement Date</mat-label>
|
||
<input matInput [matDatepicker]="mudraDispPicker" formControlName="disbursementDate" />
|
||
<mat-datepicker-toggle matSuffix [for]="mudraDispPicker"></mat-datepicker-toggle><mat-datepicker #mudraDispPicker></mat-datepicker></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Loan Purpose</mat-label>
|
||
<mat-select formControlName="loanPurpose">
|
||
<mat-option value="Manufacturing">Manufacturing</mat-option>
|
||
<mat-option value="Trading">Trading</mat-option>
|
||
<mat-option value="Services">Services</mat-option>
|
||
<mat-option value="Agriculture Allied Activity">Agriculture Allied Activity</mat-option>
|
||
<mat-option value="Transport">Transport</mat-option>
|
||
<mat-option value="Working Capital">Working Capital</mat-option>
|
||
</mat-select></mat-form-field>
|
||
</div>
|
||
|
||
<div class="ec-sub-title">Scheme Details</div>
|
||
<div class="ec-grid-3">
|
||
<mat-form-field appearance="outline"><mat-label>MUDRA Card Number</mat-label>
|
||
<input matInput formControlName="mudraCardNumber" placeholder="16-digit card number" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Current Outstanding (₹)</mat-label>
|
||
<input matInput type="number" formControlName="currentOutstanding" placeholder="0.00" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Repayment Status</mat-label>
|
||
<mat-select formControlName="repaymentStatus">
|
||
<mat-option value="REGULAR">Regular</mat-option>
|
||
<mat-option value="OVERDUE_1_30">Overdue (1–30 days)</mat-option>
|
||
<mat-option value="OVERDUE_31_90">Overdue (31–90 days)</mat-option>
|
||
<mat-option value="NPA">NPA</mat-option>
|
||
</mat-select></mat-form-field>
|
||
</div>
|
||
<div class="ec-flag-row">
|
||
<div><span class="ec-flag-label">NPA Flag</span><span class="ec-flag-sub">Mark if account classified as Non-Performing Asset</span></div>
|
||
<mat-slide-toggle formControlName="npaFlag"></mat-slide-toggle>
|
||
</div>
|
||
|
||
<div class="ec-reg-note">
|
||
<strong>PSL Tagging:</strong> Mudra loans must be tagged at both entity and account level for FIDD PSL returns. NPA flag mandatory for RBI quarterly reporting.
|
||
</div>
|
||
|
||
<div class="ec-card-actions">
|
||
<button mat-raised-button color="primary" [disabled]="!clientId || saving['mudra']" (click)="saveCategory('mudra')">
|
||
@if (saving['mudra']) { <mat-progress-spinner diameter="16" mode="indeterminate"></mat-progress-spinner> Saving... }
|
||
@else if (saved['mudra']) { <mat-icon>check</mat-icon> Saved }
|
||
@else { Save Mudra Borrower }
|
||
</button>
|
||
</div>
|
||
</div>
|
||
}
|
||
</div>
|
||
|
||
<!-- ═══ CATEGORY 3: EXPORT ORIENTED UNIT ═══ -->
|
||
<div class="ec-card" [class.ec-card--open]="enabled['eou']">
|
||
<div class="ec-card-head" (click)="toggleExpand('eou')">
|
||
<div class="ec-card-head-left">
|
||
<span class="ec-tag" style="background:#E8F5EE;color:#1B7A4A;">EOU</span>
|
||
<div>
|
||
<div class="ec-card-title">Export Oriented Unit</div>
|
||
<div class="ec-card-desc">Customs-registered EOU under DGFT / Ministry of Commerce</div>
|
||
</div>
|
||
</div>
|
||
<div class="ec-card-toggle">
|
||
<mat-slide-toggle [checked]="!!enabled['eou']" (change)="toggleCategory('eou')" (click)="$event.stopPropagation()"></mat-slide-toggle>
|
||
<mat-icon class="ec-chevron" [class.open]="expanded['eou']">expand_more</mat-icon>
|
||
</div>
|
||
</div>
|
||
@if (expanded['eou']) {
|
||
<div class="ec-card-body" [formGroup]="eouForm">
|
||
<div class="ec-sub-title">EOU Registration</div>
|
||
<div class="ec-grid-3">
|
||
<mat-form-field appearance="outline"><mat-label>EOU Registration Number</mat-label>
|
||
<input matInput formControlName="eouRegistrationNumber" placeholder="EOU/MUM/2023/0001" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Registered DC Zone</mat-label>
|
||
<mat-select formControlName="registeredDcZone">
|
||
<mat-option value="Mumbai (SEEPZ)">Mumbai (SEEPZ)</mat-option>
|
||
<mat-option value="Delhi (NSEZ)">Delhi (NSEZ)</mat-option>
|
||
<mat-option value="Chennai (MEPZ)">Chennai (MEPZ)</mat-option>
|
||
<mat-option value="Bangalore (BEPZ)">Bangalore (BEPZ)</mat-option>
|
||
<mat-option value="Kolkata (FALTA)">Kolkata (FALTA)</mat-option>
|
||
<mat-option value="Hyderabad (VSEZ)">Hyderabad (VSEZ)</mat-option>
|
||
<mat-option value="Cochin (CSEZ)">Cochin (CSEZ)</mat-option>
|
||
<mat-option value="Other">Other</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Bond / LUT Number</mat-label>
|
||
<input matInput formControlName="bondLutNumber" placeholder="Bond reference number" /></mat-form-field>
|
||
<mat-form-field appearance="outline" (click)="eouFromPicker.open()"><mat-label>Validity From</mat-label>
|
||
<input matInput [matDatepicker]="eouFromPicker" formControlName="validityFrom" />
|
||
<mat-datepicker-toggle matSuffix [for]="eouFromPicker"></mat-datepicker-toggle><mat-datepicker #eouFromPicker></mat-datepicker></mat-form-field>
|
||
<mat-form-field appearance="outline" (click)="eouToPicker.open()"><mat-label>Validity To</mat-label>
|
||
<input matInput [matDatepicker]="eouToPicker" formControlName="validityTo" />
|
||
<mat-datepicker-toggle matSuffix [for]="eouToPicker"></mat-datepicker-toggle><mat-datepicker #eouToPicker></mat-datepicker></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>GSTIN under EOU Scheme</mat-label>
|
||
<input matInput formControlName="gstinEou" placeholder="15-character GSTIN" maxlength="15" style="text-transform:uppercase" /></mat-form-field>
|
||
</div>
|
||
|
||
<div class="ec-sub-title">Export Obligation & Compliance</div>
|
||
<div class="ec-grid-3">
|
||
<mat-form-field appearance="outline"><mat-label>Annual Export Obligation (₹ Cr)</mat-label>
|
||
<input matInput type="number" formControlName="annualExportObligation" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>NFE Target (₹ Cr)</mat-label>
|
||
<input matInput type="number" formControlName="nfeTarget" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>SoftEx Filing Status</mat-label>
|
||
<mat-select formControlName="softexFilingStatus">
|
||
<mat-option value="FILED">Current</mat-option><mat-option value="PENDING">Pending</mat-option><mat-option value="NA">Not Applicable</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>BRC Submission Status</mat-label>
|
||
<mat-select formControlName="brcSubmissionStatus">
|
||
<mat-option value="SUBMITTED">Current</mat-option><mat-option value="PENDING">Pending</mat-option><mat-option value="NA">Not Applicable</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>AD Category Bank Code</mat-label>
|
||
<input matInput formControlName="adCategoryBankCode" placeholder="AD Bank IFSC / Code" /></mat-form-field>
|
||
<mat-form-field appearance="outline" (click)="femaPicker.open()"><mat-label>FEMA Declaration Date</mat-label>
|
||
<input matInput [matDatepicker]="femaPicker" formControlName="femaDeclarationDate" />
|
||
<mat-datepicker-toggle matSuffix [for]="femaPicker"></mat-datepicker-toggle><mat-datepicker #femaPicker></mat-datepicker></mat-form-field>
|
||
</div>
|
||
|
||
<div class="ec-reg-note">
|
||
<strong>FEMA / RBI:</strong> EOU accounts must be tagged for FEMA compliance on forex receipts. AD Category-I bank declaration mandatory. EDPMS reporting required for all export proceeds.
|
||
</div>
|
||
|
||
<div class="ec-card-actions">
|
||
<button mat-raised-button color="primary" [disabled]="!clientId || saving['eou']" (click)="saveCategory('eou')">
|
||
@if (saving['eou']) { <mat-progress-spinner diameter="16" mode="indeterminate"></mat-progress-spinner> Saving... }
|
||
@else if (saved['eou']) { <mat-icon>check</mat-icon> Saved }
|
||
@else { Save EOU }
|
||
</button>
|
||
</div>
|
||
</div>
|
||
}
|
||
</div>
|
||
|
||
<!-- ═══ CATEGORY 4: IMPORT EXPORT ═══ -->
|
||
<div class="ec-card" [class.ec-card--open]="enabled['importexport']">
|
||
<div class="ec-card-head" (click)="toggleExpand('importexport')">
|
||
<div class="ec-card-head-left">
|
||
<span class="ec-tag" style="background:#F0EBF8;color:#5B3A8A;">DGFT / IEC</span>
|
||
<div>
|
||
<div class="ec-card-title">Import Export Business</div>
|
||
<div class="ec-card-desc">Entity with valid DGFT Importer Exporter Code</div>
|
||
</div>
|
||
</div>
|
||
<div class="ec-card-toggle">
|
||
<mat-slide-toggle [checked]="!!enabled['importexport']" (change)="toggleCategory('importexport')" (click)="$event.stopPropagation()"></mat-slide-toggle>
|
||
<mat-icon class="ec-chevron" [class.open]="expanded['importexport']">expand_more</mat-icon>
|
||
</div>
|
||
</div>
|
||
@if (expanded['importexport']) {
|
||
<div class="ec-card-body" [formGroup]="importexportForm">
|
||
<div class="ec-sub-title">IEC Registration</div>
|
||
<div class="ec-grid-3">
|
||
<mat-form-field appearance="outline"><mat-label>IEC Code (10-digit)</mat-label>
|
||
<input matInput formControlName="iecCode" placeholder="AABCA1234F" maxlength="10" style="text-transform:uppercase" /></mat-form-field>
|
||
<mat-form-field appearance="outline" (click)="iecDatePicker.open()"><mat-label>IEC Issue Date</mat-label>
|
||
<input matInput [matDatepicker]="iecDatePicker" formControlName="iecIssueDate" />
|
||
<mat-datepicker-toggle matSuffix [for]="iecDatePicker"></mat-datepicker-toggle><mat-datepicker #iecDatePicker></mat-datepicker></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>IEC Status</mat-label>
|
||
<mat-select formControlName="iecStatus">
|
||
<mat-option value="ACTIVE">Active</mat-option><mat-option value="SUSPENDED">Suspended</mat-option>
|
||
<mat-option value="CANCELLED">Cancelled</mat-option><mat-option value="DEACTIVATED">Deactivated</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Trade Type</mat-label>
|
||
<mat-select formControlName="tradeType">
|
||
<mat-option value="EXPORT">Export Only</mat-option><mat-option value="IMPORT">Import Only</mat-option>
|
||
<mat-option value="BOTH">Both Import & Export</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Primary HS Code (Commodity)</mat-label>
|
||
<input matInput formControlName="primaryHsCode" placeholder="e.g. 5208 — Cotton fabrics" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Key Trading Countries</mat-label>
|
||
<input matInput formControlName="keyTradingCountries" placeholder="e.g. UAE, USA, Singapore" /></mat-form-field>
|
||
</div>
|
||
|
||
<div class="ec-sub-title">Banking & Compliance</div>
|
||
<div class="ec-grid-3">
|
||
<mat-form-field appearance="outline"><mat-label>AD Category Bank Code</mat-label>
|
||
<input matInput formControlName="adCategoryBankCode" placeholder="AD Bank IFSC / RBI code" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>ECGC Policy Number</mat-label>
|
||
<input matInput formControlName="ecgcPolicyNumber" placeholder="ECGC policy reference" /></mat-form-field>
|
||
<mat-form-field appearance="outline" (click)="ecgcExpPicker.open()"><mat-label>ECGC Policy Expiry</mat-label>
|
||
<input matInput [matDatepicker]="ecgcExpPicker" formControlName="ecgcPolicyExpiry" />
|
||
<mat-datepicker-toggle matSuffix [for]="ecgcExpPicker"></mat-datepicker-toggle><mat-datepicker #ecgcExpPicker></mat-datepicker></mat-form-field>
|
||
</div>
|
||
<div class="ec-flags">
|
||
<div class="ec-flag-row">
|
||
<div><span class="ec-flag-label">EEFC Account Required</span><span class="ec-flag-sub">Exchange Earners Foreign Currency account</span></div>
|
||
<mat-slide-toggle formControlName="eefcAccountRequired"></mat-slide-toggle>
|
||
</div>
|
||
<div class="ec-flag-row">
|
||
<div><span class="ec-flag-label">PCFC Facility Required</span><span class="ec-flag-sub">Pre-shipment Credit in Foreign Currency</span></div>
|
||
<mat-slide-toggle formControlName="pcfcFacilityRequired"></mat-slide-toggle>
|
||
</div>
|
||
<div class="ec-flag-row">
|
||
<div><span class="ec-flag-label">FEMA Declaration Obtained</span><span class="ec-flag-sub">Form A2 / LRS declaration on file</span></div>
|
||
<mat-slide-toggle formControlName="femaDeclarationObtained"></mat-slide-toggle>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="ec-reg-note">
|
||
<strong>RBI / FEMA:</strong> IEC mandatory before any import/export transaction. AD bank must report all export proceeds via EDPMS and import payments via IDPMS. ECGC cover recommended for high-risk countries.
|
||
</div>
|
||
|
||
<div class="ec-card-actions">
|
||
<button mat-raised-button color="primary" [disabled]="!clientId || saving['importexport']" (click)="saveCategory('importexport')">
|
||
@if (saving['importexport']) { <mat-progress-spinner diameter="16" mode="indeterminate"></mat-progress-spinner> Saving... }
|
||
@else if (saved['importexport']) { <mat-icon>check</mat-icon> Saved }
|
||
@else { Save Import/Export }
|
||
</button>
|
||
</div>
|
||
</div>
|
||
}
|
||
</div>
|
||
|
||
<!-- ═══ CATEGORY 5: PRIORITY SECTOR ═══ -->
|
||
<div class="ec-card" [class.ec-card--open]="enabled['psl']">
|
||
<div class="ec-card-head" (click)="toggleExpand('psl')">
|
||
<div class="ec-card-head-left">
|
||
<span class="ec-tag" style="background:#FCEAEA;color:#7B1F1F;">RBI PSL</span>
|
||
<div>
|
||
<div class="ec-card-title">Priority Sector Borrower</div>
|
||
<div class="ec-card-desc">Eligible under RBI Priority Sector Lending guidelines</div>
|
||
</div>
|
||
</div>
|
||
<div class="ec-card-toggle">
|
||
<mat-slide-toggle [checked]="!!enabled['psl']" (change)="toggleCategory('psl')" (click)="$event.stopPropagation()"></mat-slide-toggle>
|
||
<mat-icon class="ec-chevron" [class.open]="expanded['psl']">expand_more</mat-icon>
|
||
</div>
|
||
</div>
|
||
@if (expanded['psl']) {
|
||
<div class="ec-card-body" [formGroup]="pslForm">
|
||
<div class="ec-sub-title">PSL Classification</div>
|
||
<div class="ec-grid-3">
|
||
<mat-form-field appearance="outline"><mat-label>PSL Category</mat-label>
|
||
<mat-select formControlName="pslCategory">
|
||
<mat-option value="AGRICULTURE">Agriculture</mat-option>
|
||
<mat-option value="MICRO_ENTERPRISE">MSME</mat-option>
|
||
<mat-option value="HOUSING">Housing</mat-option>
|
||
<mat-option value="EDUCATION">Education</mat-option>
|
||
<mat-option value="SOCIAL_INFRA">Social Infrastructure</mat-option>
|
||
<mat-option value="RENEWABLE">Renewable Energy</mat-option>
|
||
<mat-option value="EXPORT_CREDIT">Export Credit</mat-option>
|
||
<mat-option value="WEAKER_SECTION">Weaker Section</mat-option>
|
||
<mat-option value="OTHERS">Others</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>PSL Sub-category</mat-label>
|
||
<mat-select formControlName="pslSubCategory">
|
||
<mat-option value="Direct Agriculture - Crop Loan">Direct Agriculture — Crop Loan</mat-option>
|
||
<mat-option value="Direct Agriculture - Investment">Direct Agriculture — Investment</mat-option>
|
||
<mat-option value="Allied Agriculture">Allied Agriculture</mat-option>
|
||
<mat-option value="Micro Enterprise">Micro Enterprise</mat-option>
|
||
<mat-option value="Small Enterprise">Small Enterprise</mat-option>
|
||
<mat-option value="Medium Enterprise">Medium Enterprise</mat-option>
|
||
<mat-option value="Housing">Housing (up to ₹35L)</mat-option>
|
||
<mat-option value="Education Loan">Education Loan</mat-option>
|
||
<mat-option value="Weaker Section - SC/ST">Weaker Section — SC/ST</mat-option>
|
||
<mat-option value="Weaker Section - Minorities">Weaker Section — Minorities</mat-option>
|
||
<mat-option value="Export Credit">Export Credit</mat-option>
|
||
<mat-option value="Others - Startup India">Others — Startup India</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>PSL Loan Purpose Code</mat-label>
|
||
<input matInput formControlName="pslLoanPurposeCode" placeholder="RBI purpose code e.g. 111" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>PSL Eligibility Basis</mat-label>
|
||
<input matInput formControlName="pslEligibilityBasis" placeholder="e.g. Udyam Reg / Kisan Credit Card" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>FIDD Reporting Code</mat-label>
|
||
<input matInput formControlName="fiddReportingCode" placeholder="FIDD sector code" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>PSL Sanctioned Limit (₹)</mat-label>
|
||
<input matInput type="number" formControlName="pslSanctionedLimit" /></mat-form-field>
|
||
</div>
|
||
|
||
<!-- MSME Sub-section -->
|
||
@if (pslForm.get('pslCategory')?.value === 'MICRO_ENTERPRISE') {
|
||
<div class="ec-sub-title">MSME Sub-classification</div>
|
||
<div class="ec-grid-3">
|
||
<mat-form-field appearance="outline"><mat-label>MSME Classification</mat-label>
|
||
<mat-select formControlName="msmeClassification">
|
||
<mat-option value="MICRO">Micro (T/O ≤ ₹5 Cr, Inv ≤ ₹1 Cr)</mat-option>
|
||
<mat-option value="SMALL">Small (T/O ≤ ₹50 Cr, Inv ≤ ₹10 Cr)</mat-option>
|
||
<mat-option value="MEDIUM">Medium (T/O ≤ ₹250 Cr, Inv ≤ ₹50 Cr)</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Udyam Registration Number</mat-label>
|
||
<input matInput formControlName="udyamRegistrationNumber" placeholder="UDYAM-MP-00-0000000" style="text-transform:uppercase" /></mat-form-field>
|
||
<mat-form-field appearance="outline" (click)="udyamDatePicker.open()"><mat-label>Udyam Registration Date</mat-label>
|
||
<input matInput [matDatepicker]="udyamDatePicker" formControlName="udyamRegistrationDate" />
|
||
<mat-datepicker-toggle matSuffix [for]="udyamDatePicker"></mat-datepicker-toggle><mat-datepicker #udyamDatePicker></mat-datepicker></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Annual Turnover (₹ Cr)</mat-label>
|
||
<input matInput type="number" formControlName="annualTurnover" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Investment — Plant & Machinery (₹ Cr)</mat-label>
|
||
<input matInput type="number" formControlName="investmentPlantMachinery" /></mat-form-field>
|
||
</div>
|
||
}
|
||
|
||
<div class="ec-sub-title">Special Category Flags</div>
|
||
<div class="ec-flags">
|
||
<div class="ec-flag-row">
|
||
<div><span class="ec-flag-label">Weaker Section Flag</span><span class="ec-flag-sub">SHG, JLG, SC/ST, OBC, Minorities, PWD borrowers</span></div>
|
||
<mat-slide-toggle formControlName="weakerSectionFlag"></mat-slide-toggle>
|
||
</div>
|
||
<div class="ec-flag-row">
|
||
<div><span class="ec-flag-label">SC / ST Borrower Flag</span><span class="ec-flag-sub">Scheduled Caste or Scheduled Tribe classification</span></div>
|
||
<mat-slide-toggle formControlName="scStBorrowerFlag"></mat-slide-toggle>
|
||
</div>
|
||
<div class="ec-flag-row">
|
||
<div><span class="ec-flag-label">Women Entrepreneur Flag</span><span class="ec-flag-sub">Majority-owned / managed by women</span></div>
|
||
<mat-slide-toggle formControlName="womenEntrepreneurFlag"></mat-slide-toggle>
|
||
</div>
|
||
<div class="ec-flag-row">
|
||
<div><span class="ec-flag-label">Minority Community Flag</span><span class="ec-flag-sub">As defined by Ministry of Minority Affairs</span></div>
|
||
<mat-slide-toggle formControlName="minorityCommunityFlag"></mat-slide-toggle>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="ec-reg-note">
|
||
<strong>RBI FIDD Circular:</strong> PSL tagging mandatory at entity AND loan account level. MSME classification must be verified from Udyam portal — self-declaration not acceptable. Weaker section loans reported separately in FIDD quarterly returns.
|
||
</div>
|
||
|
||
<div class="ec-card-actions">
|
||
<button mat-raised-button color="primary" [disabled]="!clientId || saving['psl']" (click)="saveCategory('psl')">
|
||
@if (saving['psl']) { <mat-progress-spinner diameter="16" mode="indeterminate"></mat-progress-spinner> Saving... }
|
||
@else if (saved['psl']) { <mat-icon>check</mat-icon> Saved }
|
||
@else { Save Priority Sector }
|
||
</button>
|
||
</div>
|
||
</div>
|
||
}
|
||
</div>
|
||
|
||
<!-- ═══ CATEGORY 6: NON-PRIORITY SECTOR ═══ -->
|
||
<div class="ec-card" [class.ec-card--open]="enabled['nps']">
|
||
<div class="ec-card-head" (click)="toggleExpand('nps')">
|
||
<div class="ec-card-head-left">
|
||
<span class="ec-tag" style="background:#F1EFE8;color:#444441;">General</span>
|
||
<div>
|
||
<div class="ec-card-title">Non-Priority Sector</div>
|
||
<div class="ec-card-desc">Standard corporate / retail borrower — no special priority sector classification</div>
|
||
</div>
|
||
</div>
|
||
<div class="ec-card-toggle">
|
||
<mat-slide-toggle [checked]="!!enabled['nps']" (change)="toggleCategory('nps')" (click)="$event.stopPropagation()"></mat-slide-toggle>
|
||
<mat-icon class="ec-chevron" [class.open]="expanded['nps']">expand_more</mat-icon>
|
||
</div>
|
||
</div>
|
||
@if (expanded['nps']) {
|
||
<div class="ec-card-body" [formGroup]="npsForm">
|
||
<div class="ec-sub-title">Sector Classification</div>
|
||
<div class="ec-grid-3">
|
||
<mat-form-field appearance="outline"><mat-label>Industry Sector</mat-label>
|
||
<mat-select formControlName="industrySector">
|
||
<mat-option value="Large Corporate">Large Corporate</mat-option>
|
||
<mat-option value="Mid-Market Corporate">Mid-Market Corporate</mat-option>
|
||
<mat-option value="HNI">High Net Worth Individual (HNI)</mat-option>
|
||
<mat-option value="Retail - Salaried">Retail — Salaried</mat-option>
|
||
<mat-option value="Retail - Self Employed">Retail — Self Employed</mat-option>
|
||
<mat-option value="Government / PSU">Government / PSU</mat-option>
|
||
<mat-option value="Trust / NGO / Society">Trust / NGO / Society</mat-option>
|
||
<mat-option value="Real Estate">Real Estate</mat-option>
|
||
<mat-option value="Other">Other</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>NIC Code (5-digit)</mat-label>
|
||
<input matInput formControlName="nicCode" placeholder="e.g. 13111" maxlength="5" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Industry Description</mat-label>
|
||
<input matInput formControlName="industryDescription" placeholder="Brief sector description" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Annual Revenue Band</mat-label>
|
||
<mat-select formControlName="annualRevenueBand">
|
||
<mat-option value="BELOW_1CR">Below ₹1 Cr</mat-option>
|
||
<mat-option value="1CR_TO_10CR">₹1 Cr – ₹10 Cr</mat-option>
|
||
<mat-option value="10CR_TO_100CR">₹10 Cr – ₹100 Cr</mat-option>
|
||
<mat-option value="100CR_TO_500CR">₹100 Cr – ₹500 Cr</mat-option>
|
||
<mat-option value="ABOVE_500CR">Above ₹500 Cr</mat-option>
|
||
</mat-select></mat-form-field>
|
||
</div>
|
||
|
||
<div class="ec-sub-title">Risk Classification</div>
|
||
<div class="ec-grid-3">
|
||
<mat-form-field appearance="outline"><mat-label>Risk Category</mat-label>
|
||
<mat-select formControlName="riskCategory">
|
||
<mat-option value="LOW">Low Risk</mat-option>
|
||
<mat-option value="MEDIUM">Medium Risk</mat-option>
|
||
<mat-option value="HIGH">High Risk</mat-option>
|
||
</mat-select></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>Customer Risk Score</mat-label>
|
||
<input matInput type="number" formControlName="customerRiskScore" placeholder="0–100" min="0" max="100" /></mat-form-field>
|
||
<mat-form-field appearance="outline"><mat-label>AML Risk Classification</mat-label>
|
||
<mat-select formControlName="amlRiskClassification">
|
||
<mat-option value="SDD">Standard Due Diligence (SDD)</mat-option>
|
||
<mat-option value="CDD">Customer Due Diligence (CDD)</mat-option>
|
||
<mat-option value="EDD">Enhanced Due Diligence (EDD)</mat-option>
|
||
</mat-select></mat-form-field>
|
||
</div>
|
||
<div class="ec-flags">
|
||
<div class="ec-flag-row">
|
||
<div><span class="ec-flag-label">PEP Flag — Politically Exposed Person</span><span class="ec-flag-sub">Requires mandatory EDD as per RBI KYC Master Circular</span></div>
|
||
<mat-slide-toggle formControlName="pepFlag"></mat-slide-toggle>
|
||
</div>
|
||
<div class="ec-flag-row">
|
||
<div><span class="ec-flag-label">AML Watchlist Match</span><span class="ec-flag-sub">UN Sanctions / OFAC / EU / MHA match detected</span></div>
|
||
<mat-slide-toggle formControlName="amlWatchlistMatch"></mat-slide-toggle>
|
||
</div>
|
||
<div class="ec-flag-row">
|
||
<div><span class="ec-flag-label">Adverse Media Flag</span><span class="ec-flag-sub">Negative news screening result — requires review</span></div>
|
||
<mat-slide-toggle formControlName="adverseMediaFlag"></mat-slide-toggle>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="ec-reg-note">
|
||
<strong>RBI KYC Master Circular 2023:</strong> PEP flag triggers mandatory EDD regardless of transaction size. AML watchlist match must be escalated to MLRO within 24 hours. Risk score reviewed annually for High Risk customers.
|
||
</div>
|
||
|
||
<div class="ec-card-actions">
|
||
<button mat-raised-button color="primary" [disabled]="!clientId || saving['nps']" (click)="saveCategory('nps')">
|
||
@if (saving['nps']) { <mat-progress-spinner diameter="16" mode="indeterminate"></mat-progress-spinner> Saving... }
|
||
@else if (saved['nps']) { <mat-icon>check</mat-icon> Saved }
|
||
@else { Save Non-Priority Sector }
|
||
</button>
|
||
</div>
|
||
</div>
|
||
}
|
||
</div>
|
||
|
||
@if (!clientId) {
|
||
<div class="ec-info-banner">
|
||
<fa-icon icon="info-circle"></fa-icon>
|
||
<span>Saving classifications requires client to be created first. Complete General tab and click Next.</span>
|
||
</div>
|
||
}
|
||
</div>
|