{{ partyId ? 'Edit Party' : 'Party Master Entry' }}

{{ partyId ? 'Update this daily deposit party.' : 'Open a daily deposit party: who it is for, the scheme it runs under and the agent who collects.' }}

@if (isClosed) { Closed — view only }
Customer & Scheme @if (tabHasError('customer')) { }

Customer & Scheme

Who this account is for, which scheme it runs under, and which agent collects for it
@if (clientNeedsSearch) { Press search to find this client by name or mobile number } @else if (loadedClientName) { {{ loadedClientName }} } @else if (clientLookupFailed) { No client with this ID }
@for (type of subTypeOptions; track type.id) {
{{ type.accountTypeCode }} {{ type.accountTypeDescription }} {{ type.accountTypeGroup }}
} @if (subTypeOptions.length === 0) { No scheme matches that. }
@if (subTypes.length === 0) { No active account type — create one first }
@for (agent of agentOptions; track agent.id) {
{{ agent.agentCode }} {{ agent.agentNameId }} {{ agent.active ? agent.homeBranch : 'not collecting' }}
} @if (agentOptions.length === 0) { No agent matches that. }
@if (loadedAgentName && !agentLookupFailed) { {{ loadedAgentName }} } @else if (loadedAgentName && agentLookupFailed) { {{ loadedAgentName }} is deactivated } @else if (agentLookupFailed) { No agent with this ID }
@for (office of offices; track office.id) { {{ office.name }} } @if (officesError) { {{ officesError }} } @else { The branch this account belongs to }
@if (accountNo) {
} @else if (savingsAccountNo) {
} @else if (partyId) {
} @else {
}
{{ (partyId ? partyForm.get('partyCode')?.value : expectedPartyCode) || '—' }} {{ partyId ? 'Assigned when this party was opened' : 'Expected - assigned when saved' }}
{{ lastAccountNo || '—' }} Latest DDS account opened
Yes No
Personal & Contact @if (tabHasError('personal')) { }

Personal & Contact

Name, address, contact and identity - filled from the client
Male Female Other
@for (op of operations; track op) { {{ op }} }
@for (occ of occupations; track occ) { {{ occ }} }
@for (r of riskLevels; track r) { {{ r }} }
Minor / Guardian @if (tabHasError('minor')) { }

Minor / Guardian

Only for a minor's account — the guardian who operates it until they come of age
@for (opt of adultMinorOptions; track opt) { {{ opt }} }
@if (isMinorAccount) {
Turns 18 on
@for (client of guardianOptions; track client.id) {
{{ client.id }} {{ client.displayName }} {{ client.officeName }}
}
@if (loadedGuardianName) { {{ loadedGuardianName }} }
To the minor
}
@if (!isMinorAccount) {

An adult's account needs no guardian details.

}
Scheme Terms @if (tabHasError('scheme')) { }

Scheme Terms

How much is collected daily, for how long, and what it matures to
Calculated
@if (partyForm.get('days')?.hasError('exceedsTerm')) { Only {{ termDays }} days in this term } @else if (termDays) { Term is {{ termDays }} days }
Collection book no.
Calculated
Balances & Status @if (tabHasError('balances')) { }

Balances & Status

Kept by collections and the nightly batch — shown here, never typed
OD1 Flag
OD2 Flag
Yes No @if (lienHeld) { Nothing can leave this account until it is released }
@if (lienHeld) {
@for (reason of lienReasons; track reason) { {{ reason }} } What this money is being held for
@if (lienReasonIsOther) {
Write the reason in your own words
} }
Is SMS Active
Is Email Active
@for (code of freezeCodes; track code) { {{ code }} }
@if (creditToRequired) { Maturity Payout @if (tabHasError('payout')) { }

Maturity Payout Routing

Transfer To Saving — say where the maturity proceeds should land.

@for (office of offices; track office.id) { {{ office.name }} } @if (officesError) { {{ officesError }} }
@for (account of creditToAccounts; track account.id) { {{ account.accountNo }} · {{ account.productName }} } @if (creditToAccounts.length === 0) { {{ loadedClientName || 'This customer' }} has no other savings account to credit }
} Nominee's Detail @if (tabHasError('nominee')) { }

Nominee's Detail

Who the deposit is paid to if the account holder is not there to claim it
Yes No
@if (nomineesRequired) {
Percentage Sequence
@if (splitByPercentage && nominees.length > 0) {
{{ nomineeShareTotal }}% of 100% allocated @if (nomineeShareError) { — {{ nomineeShareError }} }
} @else if (splitBySequence && nominees.length > 0) {
@if (nomineeOrderError) { {{ nomineeOrderError }} } @else { Paid in the order numbered, 1 first }
} }
@if (!nomineesRequired) {

Set Nominee to Yes to nominate someone for this account.

} @else if (nominees.length === 0) {

No nominee added yet.

Use Add Nominee to name who the deposit is paid to.
} @for (nominee of nominees.controls; track nominee; let i = $index) {
{{ i + 1 }} Nominee {{ i + 1 }} @if (isNomineeMinor(nominee)) { Minor }
@for (relation of relationChoices(nominee); track relation) { {{ relation }} }
Male Female Other
From date of birth
@if (splitByPercentage) {
} @else {
} @if (isNomineeMinor(nominee)) {
Required for a minor
}
}
@if (isClosed) {
This account is closed. No further collections or edits are possible.
} @if (minorTurnedMajor) {
This account was opened for a minor who came of age on {{ majorOn | dateFormat }}. The guardian can no longer operate it — take fresh KYC, a signature and a new mandate from the account holder.
}
@if (partyId && !isClosed && canCloseEarly) { } @if (partyId && !isClosed) { } @if (selectedTabIndex > 0) { } @if (selectedTabIndex < tabCount - 1) { }