diff --git a/src/app/clients/client-stepper/client-general-step/client-general-step.component.html b/src/app/clients/client-stepper/client-general-step/client-general-step.component.html index 7f60c80af..59666449d 100644 --- a/src/app/clients/client-stepper/client-general-step/client-general-step.component.html +++ b/src/app/clients/client-stepper/client-general-step/client-general-step.component.html @@ -220,6 +220,39 @@ } +
{{ 'labels.text.Navigate system selecting entity' | translate }}
-{{ 'labels.text.Organization available languages' | translate }}
-| {{ 'labels.inputs.Name' | translate }} | ++ {{ charge.name + ', ' + charge.currency.displaySymbol }} + | +{{ 'labels.inputs.Type' | translate }} | ++ {{ charge.chargeCalculationType.value }} + | +{{ 'labels.inputs.Amount' | translate }} | +
+ {{ charge.amount | formatNumber }}
+ |
+ {{ 'labels.inputs.Collected On' | translate }} | ++ {{ charge.chargeTimeType.value | translateKey: 'catalogs' }} + | +{{ 'labels.inputs.Date' | translate }} | +
+ @if (charge.chargeTimeType.value === 'Specified due date' || charge.chargeTimeType.value === 'Weekly Fee') {
+
+ {{ (charge.dueDate | dateFormat) || 'Unassigned' }}
+
+ }
+ @if (charge.chargeTimeType.value === 'Monthly Fee' || charge.chargeTimeType.value === 'Annual Fee') {
+
+ {{ (charge.feeOnMonthDay | dateFormat) || 'Unassigned' }}
+
+ }
+ @if (
+ !(
+ charge.chargeTimeType.value === 'Monthly Fee' ||
+ charge.chargeTimeType.value === 'Annual Fee' ||
+ charge.chargeTimeType.value === 'Specified due date' ||
+ charge.chargeTimeType.value === 'Weekly Fee'
+ )
+ ) {
+ N/A
+ }
+ @if (
+ charge.chargeTimeType.value === 'Weekly Fee' ||
+ charge.chargeTimeType.value === 'Monthly Fee' ||
+ charge.chargeTimeType.value === 'Annual Fee' ||
+ charge.chargeTimeType.value === 'Specified due date'
+ ) {
+ |
+ {{ 'labels.inputs.Repayments Every' | translate }} | +
+ @if (charge.feeInterval) {
+ {{ charge.feeInterval }}
+ }
+ @if (!charge.feeInterval) {
+ {{ 'labels.inputs.Not Provided' | translate }}
+ }
+ @if (charge.chargeTimeType.value === 'Weekly Fee' || charge.chargeTimeType.value === 'Monthly Fee') {
+ |
+ {{ 'labels.inputs.Actions' | translate }} | +
+ |
+
|---|
| {{ 'labels.inputs.Client ID' | translate }} | +{{ element.id }} | +{{ 'labels.inputs.Client Name' | translate }} | +{{ element.displayName }} | +
|---|
| {{ 'labels.inputs.Name' | translate }} | ++ {{ charge.name + ', ' + charge.currency.displaySymbol }} + | +{{ 'labels.inputs.Type' | translate }} | ++ {{ charge.chargeCalculationType.value | translateKey: 'catalogs' }} + | +{{ 'labels.inputs.Amount' | translate }} | ++ {{ charge.amount | formatNumber }} + | +{{ 'labels.inputs.Date' | translate }} | ++ @if (charge.chargeTimeType.value === 'Specified due date' || charge.chargeTimeType.value === 'Weekly Fee') { + + {{ (charge.dueDate | dateFormat) || 'Unassigned' }} + + } + @if (charge.chargeTimeType.value === 'Monthly Fee' || charge.chargeTimeType.value === 'Annual Fee') { + + {{ (charge.feeOnMonthDay | dateFormat) || 'Unassigned' }} + + } + @if ( + !( + charge.chargeTimeType.value === 'Monthly Fee' || + charge.chargeTimeType.value === 'Annual Fee' || + charge.chargeTimeType.value === 'Specified due date' || + charge.chargeTimeType.value === 'Weekly Fee' + ) + ) { + N/A + } + | +{{ 'labels.inputs.Repayments Every' | translate }} | ++ {{ charge.feeInterval || 'Not Provided' }} + | +{{ 'labels.inputs.Collected On' | translate }} | ++ {{ charge.chargeTimeType.value }} + | +
|---|
|
+ |
+
+ |
+ {{ 'labels.inputs.Client ID' | translate }} | +{{ element.id }} | +{{ 'labels.inputs.Client Name' | translate }} | +{{ element.displayName }} | +
|---|
| {{ 'labels.inputs.Name' | translate }} | +{{ charge.name }} | +{{ 'labels.inputs.Charge Type' | translate }} | +{{ charge.penalty ? 'Penalty' : ('Fee' | translateKey: 'catalogs') }} | +{{ 'labels.inputs.Payment Due At' | translate }} | +{{ charge.chargeTimeType.value | translateKey: 'catalogs' }} | +{{ 'labels.inputs.Due As Of' | translate }} | +{{ charge.dueDate | dateFormat }} | +{{ 'labels.inputs.Repeats On (M/d)' | translate }} | +{{ charge.feeOnMonthDay ? charge.feeOnMonthDay.join('/') : '' }} | +{{ 'labels.inputs.Calculation Type' | translate }} | +{{ charge.chargeCalculationType.value | translateKey: 'catalogs' }} | +{{ 'labels.inputs.Due' | translate }} | ++ {{ charge.amount | currency: charge.currency.code : 'symbol-narrow' : '1.2-2' }} + | +{{ 'labels.inputs.Paid' | translate }} | ++ {{ charge.amountPaid | currency: charge.currency.code : 'symbol-narrow' : '1.2-2' }} + | +{{ 'labels.inputs.Waived' | translate }} | ++ {{ charge.amountWaived | currency: charge.currency.code : 'symbol-narrow' : '1.2-2' }} + | +{{ 'labels.inputs.Outstanding' | translate }} | ++ {{ charge.amountOutstanding | currency: charge.currency.code : 'symbol-narrow' : '1.2-2' }} + | +{{ 'labels.inputs.Actions' | translate }} | +
+ @if (currentAccountData.status.value === 'Submitted and pending approval') {
+
+ |
+
|---|
| {{ 'labels.inputs.Current Balance' | translate }} | ++ {{ + currentAccountData.summary.accountBalance | currency: currency.code : 'symbol-narrow' : '1.2-2' + }} + | +
| {{ 'labels.inputs.Available Balance' | translate }} | ++ {{ + currentAccountData.summary.availableBalance + | currency: currency.code : 'symbol-narrow' : '1.2-2' + }} + | +
{{ 'labels.text.Are you sure you want to calculate interest' | translate }} ?
+{{ 'labels.text.Are you sure you want to inactivate charge with id' | translate }}: {{ data.id }} ?
+{{ 'labels.text.Are you sure you want to post interest' | translate }} ?
+{{ 'labels.text.Are you sure you want to release this amount' | translate }}
++ {{ 'labels.text.Are you sure you want to' | translate }} + {{ (data.isEnable ? 'labels.heading.Enable' : 'labels.heading.Disable') | translate }} + {{ 'labels.text.withhold tax for this account' | translate }} ? +
+{{ 'labels.text.Are you sure you want to undo this transaction' | translate }}
+{{ 'labels.text.Are you sure you want to waive charge with id' | translate }}: {{ data.id }} ?
+| {{ 'labels.inputs.External Id' | translate }} | + @if (currentAccountData.externalId) { +
+ |
+ }
+ @if (!currentAccountData.externalId) {
+ {{ 'labels.inputs.Not Provided' | translate }} | + } +
| {{ 'labels.inputs.Activated On' | translate }} | ++ {{ + currentAccountData.timeline.activatedOnDate + ? (currentAccountData.timeline.activatedOnDate | dateFormat) + : 'Not Activated' + }} + | +|
| {{ 'labels.inputs.Field Officer' | translate }} | +{{ currentAccountData.fieldOfficerName ? currentAccountData.fieldOfficerName : 'Unassigned' }} | +|
| {{ 'labels.inputs.Currency' | translate }} | +{{ currentAccountData.currency.name }} [{{ currentAccountData.currency.code }}] | +|
| {{ 'labels.inputs.Nominal Interest Rate' | translate }} | ++ @if (currentAccountData.nominalAnnualInterestRate) { + {{ currentAccountData.nominalAnnualInterestRate | formatNumber }} % + } + @if (!currentAccountData.nominalAnnualInterestRate) { + 0 % + } + | +
| {{ 'labels.inputs.Field Officer' | translate }} | +{{ currentAccountData.fieldOfficerName ? currentAccountData.fieldOfficerName : 'Unassigned' }} | +
| {{ 'labels.inputs.Balance' | translate }} | ++ {{ currentAccountData.summary.accountBalance | currency: currency.code : 'symbol-narrow' : '1.2-2' }} + | +
| {{ 'labels.inputs.Total Deposits' | translate }} | ++ {{ currentAccountData.summary.totalDeposits | currency: currency.code : 'symbol-narrow' : '1.2-2' }} + | +
| {{ 'labels.inputs.Total Interest Earned' | translate }} | ++ {{ + currentAccountData.summary.totalInterestEarned + | currency: currency.code : 'symbol-narrow' : '1.2-2' + }} + | +
| {{ 'labels.inputs.Total Withdrawls' | translate }} | ++ {{ + currentAccountData.summary.totalWithdrawals | currency: currency.code : 'symbol-narrow' : '1.2-2' + }} + | +
| {{ 'labels.inputs.Withdrawals Fees' | translate }} | ++ {{ + currentAccountData.summary.totalWithdrawalFees | currency: currency.code : 'symbol-narrow' : '1.2-2' + }} + | +
| {{ 'labels.inputs.Annual Fees' | translate }} | ++ {{ currentAccountData.summary.totalAnnualFees | currency: currency.code : 'symbol-narrow' : '1.2-2' }} + | +
| {{ 'labels.inputs.Interest Earned' | translate }} | ++ {{ + currentAccountData.summary.totalInterestEarned | currency: currency.code : 'symbol-narrow' : '1.2-2' + }} + | +
| {{ 'labels.inputs.Interest Posted' | translate }} | ++ {{ + currentAccountData.summary.totalInterestPosted | currency: currency.code : 'symbol-narrow' : '1.2-2' + }} + | +
| {{ 'labels.inputs.Interest Earned Not Posted' | translate }} | ++ {{ + currentAccountData.summary.interestNotPosted | currency: currency.code : 'symbol-narrow' : '1.2-2' + }} + | +
| {{ 'labels.inputs.Interest On Overdraft' | translate }} | ++ {{ + currentAccountData.summary.totalOverdraftInterestDerived + | currency: currency.code : 'symbol-narrow' : '1.2-2' + }} + | +
| {{ 'labels.inputs.Overdraft Interest Not Posted' | translate }} | ++ {{ + currentAccountData.summary.interestNotPosted | currency: currency.code : 'symbol-narrow' : '1.2-2' + }} + | +
| {{ 'labels.inputs.Nominal Interest Rate' | translate }} | +{{ currentAccountData.nominalAnnualInterestRate | formatNumber }} % | +
| {{ 'labels.inputs.Interest Compounding Period' | translate }} | +{{ currentAccountData.interestCompoundingPeriodType.value | translateKey: 'catalogs' }} | +
| {{ 'labels.inputs.Interest Posting Period' | translate }} | +{{ currentAccountData.interestPostingPeriodType.value | translateKey: 'catalogs' }} | +
| {{ 'labels.inputs.Interest Calculated Using' | translate }} | +{{ currentAccountData.interestCalculationType.value | translateKey: 'catalogs' }} | +
| {{ 'labels.inputs.Days in Year' | translate }} | +{{ currentAccountData.interestCalculationDaysInYearType.value | translateKey: 'catalogs' }} | +
| {{ 'labels.inputs.Withdrawal Fee' | translate }} | ++ {{ currentAccountData.withdrawalFee.amount | currency: currency.code : 'symbol-narrow' : '1.2-2' }} + | +
| {{ 'labels.inputs.Last Active Transaction Date' | translate }} | +{{ currentAccountData.lastActiveTransactionDate | dateFormat }} | +
| {{ 'labels.inputs.Substatus' | translate }} | +{{ currentAccountData.subStatus.value }} | +
| {{ 'labels.inputs.Days to Inactive' | translate }} | +{{ currentAccountData.daysToInactive }} | +
| {{ 'labels.inputs.Days to Dormancy' | translate }} | +{{ currentAccountData.daysToDormancy }} | +
| {{ 'labels.inputs.Days to Escheat' | translate }} | +{{ currentAccountData.daysToEscheat }} | +
| {{ 'labels.inputs.Annual Fee' | translate }} | ++ {{ currentAccountData.annualFee.amount | currency: currency.code : 'symbol-narrow' : '1.2-2' }} + | +
| {{ 'labels.inputs.Overdraft Limit' | translate }} | ++ {{ currentAccountData.overdraftLimit | currency: currency.code : 'symbol-narrow' : '1.2-2' }} + | +
| {{ 'labels.inputs.Minimum Overdraft Required for Interest Calculation' | translate }} | ++ {{ + currentAccountData.minOverdraftForInterestCalculation + | currency: currency.code : 'symbol-narrow' : '1.2-2' + }} + | +
| {{ 'labels.inputs.Min Balance Required for Interest Calculation' | translate }} | +{{ currentAccountData.minBalanceForInterestCalculation | formatNumber }} | +
| {{ 'labels.inputs.Minimum Required Balance' | translate }} | +{{ currentAccountData.minRequiredBalance | formatNumber }} | +
| {{ 'labels.inputs.Enforce Minimum Required Balance' | translate }} | +{{ currentAccountData.enforceMinRequiredBalance | yesNo }} | +
| {{ 'labels.inputs.Interest Recalculation Date' | translate }} | +{{ currentAccountData.summary.lastInterestCalculationDate | dateFormat }} | +
| {{ 'labels.inputs.On Hold Funds' | translate }} | ++ {{ + currentAccountData.onHoldFunds | currency: currency.code : 'symbol-narrow' : '1.2-2' + }} + | +
| {{ 'labels.inputs.Withhold Tax Group' | translate }} | +{{ currentAccountData.taxGroup.name }} | +
| {{ 'labels.inputs.External Id' | translate }} | + @if (currentAccountData.externalId) { +
+ |
+ }
+ @if (!currentAccountData.externalId) {
+ {{ 'labels.inputs.Not Provided' | translate }} | + } +
| {{ 'labels.inputs.Activated On' | translate }} | ++ {{ + currentAccountData.timeline.activatedOnDate + ? (currentAccountData.timeline.activatedOnDate | dateFormat) + : 'Not Activated' + }} + | +|
| {{ 'labels.inputs.Currency' | translate }} | +{{ currentAccountData.currency.name }} [{{ currentAccountData.currency.code }}] | +
| # | +{{ 'labels.inputs.Date' | translate }} | +{{ 'labels.inputs.Description' | translate }} | +{{ 'labels.inputs.Debit' | translate }} | +{{ 'labels.inputs.Credit' | translate }} | +{{ 'labels.inputs.Balance' | translate }} | +
|---|---|---|---|---|---|
| {{ i + 1 }} | +{{ txn.date | dateFormat }} | +{{ txn.transactionType.value }} | ++ @if (isDebit(txn.transactionType)) { + {{ txn.amount | currency: currency?.code : 'symbol-narrow' : '1.2-2' }} + } + | ++ @if (!isDebit(txn.transactionType)) { + {{ txn.amount | currency: currency?.code : 'symbol-narrow' : '1.2-2' }} + } + | ++ {{ txn.runningBalance | currency: currency?.code : 'symbol-narrow' : '1.2-2' }} + | +
| {{ 'labels.inputs.Client' | translate }} | ++ {{ instruction.fromClient.displayName }}-{{ instruction.fromClient.id }} + | +{{ 'labels.inputs.From Account' | translate }} | ++ {{ instruction.fromAccount.accountNo }} ({{ instruction.fromAccountType.value }}) + | +{{ 'labels.inputs.Beneficiary' | translate }} | +{{ instruction.toClient.displayName }} | +{{ 'labels.inputs.To Account' | translate }} | ++ {{ instruction.toAccount.accountNo }} ({{ instruction.toAccountType.value }}) + | +{{ 'labels.inputs.Amount' | translate }} | +{{ instruction.instructionType.value }}/{{ instruction.amount }} | +{{ 'labels.inputs.Validity' | translate }} | ++ {{ instruction.validFrom | dateFormat }} {{ 'labels.inputs.To' | translate }} + {{ instruction.validTill | dateFormat }} + | +{{ 'labels.inputs.Actions' | translate }} | +
+ @if (instruction.status.value !== 'Deleted') {
+
+ |
+
|---|
| # | ++ {{ idx + 1 }} + | +{{ 'labels.inputs.Id' | translate }} | ++ {{ transaction.id }} + | ++ {{ 'labels.inputs.Transaction Date' | translate }} + | ++ {{ transaction.date | dateFormat }} + | +{{ 'labels.inputs.External Id' | translate }} | +
+ |
+ {{ 'labels.inputs.Transaction Type' | translate }} | ++ {{ transaction.transactionType.value | translateKey: 'catalogs' }} + | +{{ 'labels.inputs.Debit' | translate }} | ++ {{ + isDebit(transaction.transactionType) + ? (transaction.amount | currency: currency?.code || 'USD' : 'symbol-narrow' : '1.2-2') + : 'N/A' + }} + | +{{ 'labels.inputs.Credit' | translate }} | ++ {{ + !isDebit(transaction.transactionType) + ? (transaction.amount | currency: currency?.code || 'USD' : 'symbol-narrow' : '1.2-2') + : 'N/A' + }} + | +{{ 'labels.inputs.Balance' | translate }} | ++ {{ transaction.runningBalance | currency: currency?.code || 'USD' : 'symbol-narrow' : '1.2-2' }} + | +{{ 'labels.inputs.Actions' | translate }} | +
+ |
+
|---|
{{ 'labels.heading.current-account-transaction-datatable-tab works' | translate }}!
diff --git a/src/app/current-accounts/current-account-view/transactions/view-transaction/current-accounts-transaction-datatable-tab/current-accounts-transaction-datatable-tab.component.scss b/src/app/current-accounts/current-account-view/transactions/view-transaction/current-accounts-transaction-datatable-tab/current-accounts-transaction-datatable-tab.component.scss new file mode 100644 index 000000000..af9f4c075 --- /dev/null +++ b/src/app/current-accounts/current-account-view/transactions/view-transaction/current-accounts-transaction-datatable-tab/current-accounts-transaction-datatable-tab.component.scss @@ -0,0 +1,7 @@ +/** + * Copyright since 2025 Mifos Initiative + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ diff --git a/src/app/current-accounts/current-account-view/transactions/view-transaction/current-accounts-transaction-datatable-tab/current-accounts-transaction-datatable-tab.component.ts b/src/app/current-accounts/current-account-view/transactions/view-transaction/current-accounts-transaction-datatable-tab/current-accounts-transaction-datatable-tab.component.ts new file mode 100644 index 000000000..59a129971 --- /dev/null +++ b/src/app/current-accounts/current-account-view/transactions/view-transaction/current-accounts-transaction-datatable-tab/current-accounts-transaction-datatable-tab.component.ts @@ -0,0 +1,22 @@ +/** + * Copyright since 2025 Mifos Initiative + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +import { Component } from '@angular/core'; +import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module'; + +@Component({ + selector: 'mifosx-current-account-transaction-datatable-tab', + templateUrl: './current-accounts-transaction-datatable-tab.component.html', + styleUrls: ['./current-accounts-transaction-datatable-tab.component.scss'], + imports: [ + ...STANDALONE_SHARED_IMPORTS + ] +}) +export class CurrentAccountTransactionDatatableTabComponent { + constructor() {} +} diff --git a/src/app/current-accounts/current-account-view/transactions/view-transaction/current-accounts-transaction-general-tab/current-accounts-transaction-general-tab.component.html b/src/app/current-accounts/current-account-view/transactions/view-transaction/current-accounts-transaction-general-tab/current-accounts-transaction-general-tab.component.html new file mode 100644 index 000000000..21db3b8d3 --- /dev/null +++ b/src/app/current-accounts/current-account-view/transactions/view-transaction/current-accounts-transaction-general-tab/current-accounts-transaction-general-tab.component.html @@ -0,0 +1,128 @@ + + + + +| {{ 'labels.inputs.Name' | translate }} | +{{ product.name }} | +{{ 'labels.inputs.Short Name' | translate }} | +{{ product.shortName }} | +
|---|
| {{ 'labels.inputs.Name' | translate }} | +{{ charge.name + ', ' + charge.currency.displaySymbol }} | +{{ 'labels.inputs.Type' | translate }} | ++ {{ charge.chargeCalculationType.value | translateKey: 'catalogs' }} + | +{{ 'labels.inputs.Amount' | translate }} | +{{ charge.amount | formatNumber }} | +{{ 'labels.inputs.Collected On' | translate }} | +{{ charge.chargeTimeType.value | translateKey: 'catalogs' }} | +
|---|
Fetch work items from your OpenProject instance to view and track project tasks.
+Loading OpenProject work items...
+{{ opError }}
+| Screened Name | +{{ log.screenedName }} | +Result | +
+
+ @if (log.screeningResult === 'CLEAR') {
+ |
+ Matches | +{{ log.matchCount || 0 }} | +Screened By | +{{ log.screenedBy }} | +Screened At | +{{ log.screenedAt | date: 'medium' }} | +
|---|
No screening logs found.
+