General Ledger — {{ reportLabel }}

CBSNexora Bank Ltd · {{ branchLabel }} · Period {{ rangeLabel }} · {{ ledgerPeriod.label }}
@if (periodMode === 'day') {
} @if (periodMode === 'month') {
} @if (periodMode === 'range') {
}
@if (canSelectBranch) { } @else { {{ scopeName }} }
@if (scopeIsUnresolved) {
Your office {{ scopeName }} does not match any branch in the ledger, so no figures can be shown. Ask an administrator to align your office name with a branch.
}
@for (r of reports; track r.code) { }
@if (activeReport === 'trial-balance') {
Closing Dr ₹{{ tbClosingDebit | number: '1.2-2' }} · Closing Cr ₹{{ tbClosingCredit | number: '1.2-2' }} — {{ tbBalanced ? 'trial balance tallies' : 'OUT OF BALANCE — investigate before closing the period' }}
@for (r of data.trialBalance; track r.code) { } @empty { }
GL Code Account Group Opening Dr Opening Cr Period Dr Period Cr Closing Dr Closing Cr
{{ r.code }} {{ r.name }} {{ r.group }} {{ r.openingDebit ? (r.openingDebit | number: '1.2-2') : '' }} {{ r.openingCredit ? (r.openingCredit | number: '1.2-2') : '' }} {{ r.periodDebit ? (r.periodDebit | number: '1.2-2') : '' }} {{ r.periodCredit ? (r.periodCredit | number: '1.2-2') : '' }} {{ r.closingDebit ? (r.closingDebit | number: '1.2-2') : '' }} {{ r.closingCredit ? (r.closingCredit | number: '1.2-2') : '' }}
No ledger activity for this period and branch.
TOTAL ({{ data.trialBalance.length }} accounts) {{ tbOpeningDebit | number: '1.2-2' }} {{ tbOpeningCredit | number: '1.2-2' }} {{ tbPeriodDebit | number: '1.2-2' }} {{ tbPeriodCredit | number: '1.2-2' }} {{ tbClosingDebit | number: '1.2-2' }} {{ tbClosingCredit | number: '1.2-2' }}
} @if (activeReport === 'profit-and-loss') {
₹{{ totalIncome | number: '1.2-2' }}
Total Income
₹{{ totalExpense | number: '1.2-2' }}
Total Expenditure
₹{{ netProfit | number: '1.2-2' }}
{{ netProfit >= 0 ? 'Net Profit' : 'Net Loss' }}
{{ netProfitPct | number: '1.2-2' }}% of income
Expenditure
@for (r of pnlExpense; track r.code) { } @empty { } @if (netProfit >= 0) { }
GL Code Particulars Amount (₹)
{{ r.code }} {{ r.name }} · {{ r.group }} {{ r.amount | number: '1.2-2' }}
No expenditure posted in this period.
Total Expenditure {{ totalExpense | number: '1.2-2' }}
Net Profit carried to Balance Sheet {{ netProfit | number: '1.2-2' }}
Income
@for (r of pnlIncome; track r.code) { } @empty { } @if (netProfit < 0) { }
GL Code Particulars Amount (₹)
{{ r.code }} {{ r.name }} · {{ r.group }} {{ r.amount | number: '1.2-2' }}
No income posted in this period.
Total Income {{ totalIncome | number: '1.2-2' }}
Net Loss carried to Balance Sheet {{ -netProfit | number: '1.2-2' }}
} @if (activeReport === 'balance-sheet') {
Total Assets ₹{{ bsTotalAssets | number: '1.2-2' }} · Total Liabilities ₹{{ bsTotalLiabilities | number: '1.2-2' }} — {{ bsBalanced ? 'balance sheet tallies' : 'OUT OF BALANCE' }}
Capital & Liabilities — as at {{ range.to }}
@for (r of bsLiabilities; track r.code) { }
GL Code Particulars Amount (₹)
{{ r.code }} {{ r.name }} · {{ r.group }} {{ r.amount | number: '1.2-2' }}
— Surplus for the period · Profit & Loss {{ bsSurplus | number: '1.2-2' }}
Total Capital & Liabilities {{ bsTotalLiabilities | number: '1.2-2' }}
Assets — as at {{ range.to }}
@for (r of bsAssets; track r.code) { }
GL Code Particulars Amount (₹)
{{ r.code }} {{ r.name }} · {{ r.group }} {{ r.amount | number: '1.2-2' }}
Total Assets {{ bsTotalAssets | number: '1.2-2' }}
} @if (activeReport === 'comparative-balance-sheet') {

Compares the closing position as at {{ range.to }} against the position immediately before this period began. Change the filter above to compare a different span.

@for ( block of [ { title: 'Capital & Liabilities', rows: compLiabilities }, { title: 'Assets', rows: compAssets } ]; track block.title ) {
{{ block.title }}
@for (r of block.rows; track r.code) { } @empty { }
GL Code Particulars Current (₹) Previous (₹) Variance (₹) Variance %
{{ r.code }} {{ r.name }} · {{ r.group }} {{ r.current | number: '1.2-2' }} {{ r.previous | number: '1.2-2' }} {{ r.variance | number: '1.2-2' }} {{ r.variancePct === null ? '—' : (r.variancePct | number: '1.2-2') + '%' }}
Nothing to compare for this period and branch.
}
} @if (activeReport === 'contingent-liabilities') {

Off-balance-sheet commitments outstanding as at {{ range.to }}. These are memoranda accounts and are deliberately excluded from the Trial Balance and Balance Sheet totals.

@for (r of data.contingent; track r.code) { } @empty { }
GL Code Particulars Group Amount (₹)
{{ r.code }} {{ r.name }} {{ r.group }} {{ r.amount | number: '1.2-2' }}
No contingent exposures outstanding for this selection.
Total Contingent Liabilities {{ contingentTotal | number: '1.2-2' }}
} @if (activeReport === 'gl-wise-dr-cr') {

Debit and credit turnover posted between {{ rangeLabel }} for {{ branchLabel }}. Every voucher is double-entry, so the debit and credit totals below must match.

@for (r of data.glWise; track r.code) { } @empty { }
GL Code Account Type Group Debit (₹) Credit (₹) Net (Dr − Cr) Vouchers
{{ r.code }} {{ r.name }} {{ r.type }} {{ r.group }} {{ r.debit ? (r.debit | number: '1.2-2') : '' }} {{ r.credit ? (r.credit | number: '1.2-2') : '' }} {{ r.net | number: '1.2-2' }} {{ r.vouchers }}
No postings for this period and branch.
TOTAL ({{ data.glWise.length }} accounts) {{ glWiseDebit | number: '1.2-2' }} {{ glWiseCredit | number: '1.2-2' }} {{ glWiseDebit - glWiseCredit | number: '1.2-2' }}
} @if (activeReport === 'misc-expense-ledger') {

Every miscellaneous-expense voucher posted between {{ rangeLabel }} for {{ branchLabel }} — {{ miscRows.length | number }} entries.

@for (r of miscRows; track r.voucherNo + r.code) { } @empty { }
Date Voucher No Branch GL Code Account Narration Amount (₹)
{{ r.date }} {{ r.voucherNo }} {{ branchName(r.branchCode) }} {{ r.code }} {{ r.name }} {{ r.narration }} {{ r.amount | number: '1.2-2' }}
No miscellaneous expenses posted for this selection.
Total Miscellaneous Expenses {{ miscTotal | number: '1.2-2' }}
} @if (activeReport === 'gl-average-balance') {

Average of each account's closing balance across every day in {{ rangeLabel }} for {{ branchLabel }}. Banks work from average balances rather than a closing snapshot for interest, CRR/SLR and profitability, because a single day's figure can be dressed up.

@for (r of averageRows; track r.code) { } @empty { }
GL Code Account Group Opening Closing Average Daily Peak Lowest Active Days
{{ r.code }} {{ r.name }} {{ r.group }} {{ r.opening | number: '1.2-2' }} {{ r.closing | number: '1.2-2' }} {{ r.average | number: '1.2-2' }} {{ r.peak | number: '1.2-2' }} {{ r.lowest | number: '1.2-2' }} {{ r.activeDays }}
No ledger activity for this period and branch.
TOTAL ({{ averageRows.length }} accounts) {{ avgTotalAverage | number: '1.2-2' }}
} @if (activeReport === 'gl-mapping') {

Which General Ledger accounts feed each RBI return line. Mappings are created on the OSS 1, OSS 2 and OSS 3 screens using Add / Remove GLs; this is the consolidated view of them, with the value each mapping currently produces from the ledger.

Mapped return lines ({{ mappingRows.length }})
@for (r of mappingRows; track r.returnCode + r.lineKey) { } @empty { }
Return Return line Mapped GL accounts Ledger value (₹ thousands)
{{ r.returnLabel }} {{ r.lineKey }} @for (c of r.codes; track c) { {{ c }} } {{ r.value | number: '1.2-2' }}
No return lines mapped yet. Open OSS 1, 2 or 3 and use “Add / Remove GLs” to pin accounts to a line.
Unmapped GL accounts ({{ unmappedAccounts.length }}) — not feeding any return line
@for (a of unmappedAccounts; track a.code) { } @empty { }
GL Code Account Group
{{ a.code }} {{ a.name }} {{ a.group }}
Every GL account feeds at least one return line.
} @if (activeReport === 'account-wise-balance') {

Closing balance of every account as at {{ range.to }}, broken out by branch — which branch is actually carrying each balance.

@for (c of branchColumns; track c) { } @for (r of accountWiseRows; track r.code) { @for (c of branchColumns; track c) { } } @empty { } @for (c of branchColumns; track c) { }
GL Code Account Group{{ branchName(c) }}Total
{{ r.code }} {{ r.name }} {{ r.group }}{{ r.byBranch[c] ? (r.byBranch[c] | number: '1.2-2') : '' }} {{ r.total | number: '1.2-2' }}
No balances for this period and branch.
TOTAL ({{ accountWiseRows.length }} accounts){{ branchColumnTotal(c) | number: '1.2-2' }}{{ accountWiseGrandTotal | number: '1.2-2' }}
} @if (activeReport === 'distribution-of-balance') {

Composition of the book as at {{ range.to }} for {{ branchLabel }} — how concentrated each side of the balance sheet is by account group.

@for ( block of [ { title: 'Capital & Liabilities', rows: liabilityDistribution, total: liabilityDistTotal }, { title: 'Assets', rows: assetDistribution, total: assetDistTotal } ]; track block.title ) {
{{ block.title }}
@for (r of block.rows; track r.group) { } @empty { }
Group A/cs Amount (₹) Share Distribution
{{ r.group }} {{ r.accounts }} {{ r.amount | number: '1.2-2' }} {{ r.share | number: '1.2-2' }}%
No balances on this side.
Total {{ block.total | number: '1.2-2' }} 100.00%
}
} @if (activeReport === 'client-wise-balance') {
₹{{ clientDeposits | number: '1.2-2' }}
Customer Deposits
₹{{ clientAdvances | number: '1.2-2' }}
Customer Advances
{{ clientRows.length | number }}
Relationships
as at {{ range.to }} · {{ branchLabel }}

Customer balances are derived from the General Ledger — each relationship holds a share of its branch's balance in that head — so this report always reconciles to the GL rather than drifting as a second source.

@for (r of clientRows; track r.cif) { } @empty { }
CIF Customer Branch Account No Product Side Balance (₹)
{{ r.cif }} {{ r.name }} {{ branchName(r.branchCode) }} {{ r.accountNo }} {{ r.product }} {{ r.side }} {{ r.balance | number: '1.2-2' }}
No customer relationships for this period and branch.
} @if (activeReport === 'banker-head') {

Head-wise abstract for {{ rangeLabel }} — the trial balance rolled up to principal heads, with opening, turnover and closing for each. Debit and credit turnover must agree.

@for (r of bankerHeadRows; track r.head) { } @empty { }
Principal Head Accounts Opening Debit Credit Closing
{{ r.head }} {{ r.accounts }} {{ r.opening | number: '1.2-2' }} {{ r.debit ? (r.debit | number: '1.2-2') : '' }} {{ r.credit ? (r.credit | number: '1.2-2') : '' }} {{ r.closing | number: '1.2-2' }}
No activity for this period and branch.
TOTAL ({{ bankerHeadRows.length }} heads) {{ headDebitTotal | number: '1.2-2' }} {{ headCreditTotal | number: '1.2-2' }}
} @if (activeReport === 'sundry-register') {

Outstanding items in the sundry, suspense and bills-payable heads as at {{ range.to }}, aged from their posting date. These heads are where unreconciled entries collect, so ageing is the point of the register.

@if (sundryBuckets.length) {
@for (b of sundryBuckets; track b.bucket) {
₹{{ b.amount | number: '1.2-2' }}
{{ b.bucket }}
{{ b.count }} item(s)
}
}
@for (r of sundryRows; track r.voucherNo + r.code + r.date) { } @empty { }
Date Voucher No Branch GL Code Account Narration Amount (₹) Age
{{ r.date }} {{ r.voucherNo }} {{ branchName(r.branchCode) }} {{ r.code }} {{ r.name }} {{ r.narration }} {{ r.amount | number: '1.2-2' }} {{ r.ageDays }}d
No sundry or suspense items outstanding for this selection.
Total outstanding ({{ sundryRows.length }} items) {{ sundryTotal | number: '1.2-2' }}
} @if (activeReport === 'voucher-register') {
{{ voucherRows.length | number }} voucher(s) raised in {{ rangeLabel }} for {{ branchLabel }} — {{ unbalancedVouchers ? unbalancedVouchers + ' voucher(s) do NOT balance and must be investigated' : 'every voucher is double-entry and balances' }}
@for (r of voucherRows; track r.voucherNo) { } @empty { }
Date Voucher No Branch Narration Debit account(s) Credit account(s) Amount (₹) Legs
{{ r.date }} {{ r.voucherNo }} {{ branchName(r.branchCode) }} {{ r.narration }} {{ r.debitAccounts }} {{ r.creditAccounts }} {{ r.amount | number: '1.2-2' }} {{ r.legs }}
No vouchers raised in this period for this branch.
Total ({{ voucherRows.length }} vouchers) {{ voucherTotal | number: '1.2-2' }}
}
{{ toastMsg }}