@if (hasStatutoryForm) {
} @if (hasStatutoryForm) { } @else if (awaitingDate) {

{{ promptTitle }}

Choose the date the return is made up to. The base is read at an earlier date than the balances maintained, and the return states both on its face once it runs.

@if (hasBaseDate) { Base date (optional) } Reporting date
@if (chosenFortnight) {

Fortnight: {{ chosenFortnight }} @if (hasBaseDate && !baseDate) { · base will be derived from the 45-day lag }

}
Jump to: @if (hasBaseDate && baseDate) { }
@if (errorMsg) {
{{ errorMsg }}
}
} @else if (loading) {
Computing from the ledger…
} @else if (errorMsg) {
{{ errorMsg }}
} @else if (data) {

{{ data.formName }}

{{ data.frequency }} @if (data.fortnightLabel) { {{ data.fortnightLabel }} · {{ data.fortnightStart }} to {{ data.fortnightEnd }} } @else { Month ended {{ data.reportingDate }} }
@if (hasBaseDate) { Base date } Reporting date
@if (activeTab === 'report') { @if (data.unmetRequirements.length) {
{{ data.computable ? 'Check this before filing.' : 'This return cannot be computed yet.' }} Open RBI Reserve Configuration →
}
DTL base as at {{ data.basis.dtlAsOnDate }}
Balances maintained as at {{ data.basis.holdingsAsOnDate }}
@if (data.basis.rawLagDate) {
{{ data.basis.lagDays }}-day lag falls on {{ data.basis.rawLagDate }}
}

{{ data.basis.note }}

@if (data.computable) {
NDTL base {{ amount(data.ndtlAmount) }} DTL {{ amount(data.dtlAmount) }} less {{ amount(data.interBankAssets) }} · as at {{ data.basis.dtlAsOnDate }}
{{ data.rateType }} rate {{ data.ratePercentage }}% @if (data.rateIsSeedDefault) { Placeholder — not confirmed } @else { in force on {{ data.reportingDate }} }
Required {{ amount(data.requiredAmount) }} {{ data.ratePercentage }}% of NDTL
Maintained {{ amount(data.maintainedAmount) }} {{ percent(data.maintainedPercentage) }} of NDTL
{{ isShortfall ? 'Shortfall' : 'Surplus' }} {{ amount(shortfallAmount) }} {{ isShortfall ? 'Below requirement' : 'Above requirement' }}
}
@for (line of data.lines; track $index) { @for (account of line.accounts; track account.glAccountId) { } } @if (data.computable) { }
Particulars {{ data.baseDate || 'Base date' }} {{ data.currentDate || 'Reporting date' }} Movement
{{ line.label }} @if (!line.configured) { Not configured } @if (line.configured) { {{ amount( line.baseAmount !== undefined ? line.baseAmount : line.asOnDate === data.baseDate ? line.amount : null ) }} } @else { — } @if (line.configured) { {{ amount( line.currentAmount !== undefined ? line.currentAmount : line.asOnDate === data.currentDate ? line.amount : null ) }} } @else { — } @if (line.movement !== undefined && line.movement !== null) { {{ amount(line.movement) }} } @else { — }
{{ account.glCode }} {{ account.name }} @if (account.excluded) { excluded — {{ account.excluded }} } @if (isPartial(account)) { {{ account.weightPercentage }}% of {{ portionOf(account) }} } @if (account.liabilityClass) { {{ account.liabilityClass | titlecase }} } @if ( account.baseBalance !== undefined ? account.baseBalance !== null : line.asOnDate === data.baseDate ) { {{ amount(account.baseBalance !== undefined ? account.baseBalance : account.balance) }} } @else { — } @if ( account.currentBalance !== undefined ? account.currentBalance !== null : line.asOnDate === data.currentDate ) { {{ amount(account.currentBalance !== undefined ? account.currentBalance : account.balance) }} } @else { — } @if (account.movement !== undefined && account.movement !== null) { {{ amount(account.movement) }} }
{{ data.rateType }} required ({{ data.ratePercentage }}% of NDTL) {{ amount(data.requiredAmount) }}
{{ data.rateType }} maintained {{ amount(data.maintainedAmount) }}
{{ isShortfall ? 'Shortfall' : 'Surplus' }} {{ amount(shortfallAmount) }}
@if (data.maintenance; as m) {

Daily maintenance — {{ m.periodLabel || 'this month' }} @if (!m.fortnightComplete) { In progress — {{ m.dayCount }} days so far }

Every day of the month, against the requirement in force. CRR is reckoned over the period rather than on one day: the full requirement must be held on average, and at least {{ m.dailyMinimumPercent }}% of it on every single day.

Average maintained {{ amount(m.average) }} {{ m.averageMet ? 'Meets' : 'Below' }} required {{ amount(m.requiredAverage) }}
Lowest day {{ amount(m.lowest) }} on {{ m.lowestOn }} · floor {{ amount(m.dailyMinimumAmount) }}
Days counted {{ m.dayCount }} {{ m.fortnightComplete ? 'Full fortnight' : 'To reporting date' }}
@for (day of m.days; track day.date) { }
Date Required (INR) Actual (INR) Surplus / (Shortfall) Against floor
{{ day.date }} {{ amount(day.required) }} {{ amount(day.amount) }} {{ amount(day.surplus) }} @if (day.amount < m.dailyMinimumAmount) { Below floor } @else { OK }
} @for (section of namedSections; track section.title) { @if (section.rows.length) {

{{ section.title }}

{{ section.hint }}

@for (row of section.rows; track row.configKey) { }
Particulars Amount (INR)
{{ row.label }} @if (!row.configured) { Not configured } @if (row.configured) { {{ amount(row.amount) }} } @else { — }
} } } } @if (activeTab === 'statutory') { @if (statutoryAwaitingDate) {

{{ statutoryTitle }}

{{ statutorySubtitle }}

@if (statutoryTakesTwoColumns) {
First column Second column
@if (statutoryFirstColumn && statutorySecondColumn) {

Made up to {{ statutorySecondColumn }}. Both ratios are charged on the last Friday of the second preceding fortnight, stated on the form itself.

} @else {

Enter both fortnight closing dates to run the form.

}
Fill: @if (statutoryFirstColumn || statutorySecondColumn) { }
} @else {
Reporting date
@if (statutoryDate) {

The return reports the month ending on or before {{ statutoryDate }}, and charges the ratio on the last Friday of the second preceding fortnight.

} } @if (statutoryError) {
{{ statutoryError }}
}
} @else if (statutoryLoading) {
Computing from the ledger…
} @else if (statutoryError) {
{{ statutoryError }}
} @else if (statutory) {
Made up to {{ statutory.reportingDate }}
{{ statutory.formName }}
{{ statutory.statutoryReference }}
@if (statutory.unmetRequirements.length) {
Check before filing.
    @for (reason of statutory.unmetRequirements; track reason) {
  • {{ reason }}
  • }
} @for (col of statutory.columns; track col; let i = $index) { } @for (part of statutoryParts; track part.title) { @for (line of part.lines; track line.label) { @if (line.heading) { } @else { @for (v of line.values; track $index) { } @if (line.baseDates?.length) { @for (d of line.baseDates; track $index) { } } } } @if (part.surplus?.length) { @for (s of part.surplus; track $index) { } } }
Particulars {{ col }} {{ i === 2 ? 'base for ratios' : 'fortnight close' }}
{{ part.title }}
{{ line.label }}
{{ line.label }} @if (line.configKey && line.configured === false) { Not mapped } {{ amount(v) }}
Base dates — last Friday of the second preceding fortnight{{ d }}
Surplus / (Shortfall){{ amount(s) }}
AUTHORISED SIGNATORY
} } @if (activeTab === 'saved') {

Saved returns @if (savedReturns.length) { {{ savedReturns.length }} }

Returns kept for the record. Each opens exactly as it was saved — the stored statement, not a re-run of today's ledger, so a figure already reported cannot change underneath it.

@if (canSave) {
Note (optional)
} @if (savedLoading) {
Loading saved returns…
} @else if (!savedReturns.length) {
Nothing saved yet. Generate a return and press Save to keep it.
} @else { @for (row of savedReturns; track row.id) { }
Reporting date Period NDTL Required Maintained Status Saved
{{ row.reportingDate }} {{ row.periodStart }} → {{ row.periodEnd }} {{ amount(row.ndtlAmount) }} {{ amount(row.requiredAmount) }} {{ amount(row.maintainedAmount) }} @for (s of filingStatuses; track s) { {{ statusLabel(s) }} } {{ row.createdOn }}
{{ row.createdBy }}
}
@if (viewingSaved && savedData; as _) {

Saved return — {{ savedData.reportingDate }} {{ statusLabel(viewingSaved.status) }}

Saved {{ viewingSaved.createdOn }} by {{ viewingSaved.createdBy || 'unknown' }}. These are the figures as they stood when it was saved — not today's ledger, which may have moved since. @if (viewingSaved.remarks) { “{{ viewingSaved.remarks }}” }

@if (savedIsStatutory && savedStatutory; as saved) {
{{ saved.formName }}
{{ saved.statutoryReference }}
@for (col of saved.columns; track col; let i = $index) { } @for (part of savedStatutoryParts; track part.title) { @for (line of part.lines; track line.label) { @for (value of line.values || []; track $index) { } } }
Particulars {{ col }} {{ i === 2 ? 'base for ratios' : 'fortnight close' }}
{{ part.title }}
{{ line.label }} {{ amount(value) }}
} @else {
NDTL base {{ amount(savedData.ndtlAmount ?? savedData.dtlAmount) }} as at {{ savedData.basis.dtlAsOnDate }}
{{ savedData.rateType }} rate {{ savedData.ratePercentage }}% as filed
Required {{ amount(savedData.requiredAmount) }} {{ savedData.ratePercentage }}% of NDTL
Maintained {{ amount(savedData.maintainedAmount) }} on {{ savedData.basis.holdingsAsOnDate }}
{{ savedData.compliant ? 'Surplus' : 'Shortfall' }} {{ amount(savedSurplus) }} {{ savedData.compliant ? 'Above requirement' : 'Below requirement' }}
@for (line of savedData.lines; track line.configKey) { @for (account of line.accounts; track account.glAccountId) { } }
Particulars As at Amount (INR)
{{ line.label }} {{ line.asOnDate }} @if (line.configured) { {{ amount(line.amount) }} } @else { — }
{{ account.glCode }} {{ account.name }} @if (isPartial(account)) { {{ account.weightPercentage }}% of {{ amount(account.accountBalance) }} } @if (account.liabilityClass) { {{ account.liabilityClass | titlecase }} } {{ amount(account.balance) }}
@if (savedData.maintenance; as sm) {

Daily maintenance as filed — {{ sm.periodLabel || '' }}

@for (day of sm.days; track day.date) { }
Date Required Actual Surplus / (Shortfall)
{{ day.date }} {{ amount(day.required) }} {{ amount(day.amount) }} {{ amount(day.surplus) }}
} }
} } @if (toastVisible) {
{{ toastMsg }}
}