From e02dd0509ab30eadae6967f369a3c34652f442d7 Mon Sep 17 00:00:00 2001 From: Jose Alberto Hernandez Date: Wed, 13 Nov 2024 23:48:17 -0500 Subject: [PATCH] Loan account with Term variations details tab --- src/app/loans/loans-routing.module.ts | 9 ++++++ .../loan-term-variations-tab.component.html | 29 +++++++++++++++++++ .../loan-term-variations-tab.component.scss | 12 ++++++++ ...loan-term-variations-tab.component.spec.ts | 23 +++++++++++++++ .../loan-term-variations-tab.component.ts | 28 ++++++++++++++++++ .../loans-view/loans-view.component.html | 6 ++++ src/app/loans/loans.module.ts | 4 ++- src/assets/translations/cs-CS.json | 3 ++ src/assets/translations/de-DE.json | 3 ++ src/assets/translations/en-US.json | 3 ++ src/assets/translations/es-MX.json | 3 ++ src/assets/translations/fr-FR.json | 3 ++ src/assets/translations/it-IT.json | 3 ++ src/assets/translations/ko-KO.json | 3 ++ src/assets/translations/lt-LT.json | 3 ++ src/assets/translations/lv-LV.json | 3 ++ src/assets/translations/ne-NE.json | 3 ++ src/assets/translations/pt-PT.json | 3 ++ src/assets/translations/sw-SW.json | 3 ++ 19 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.html create mode 100644 src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.scss create mode 100644 src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.spec.ts create mode 100644 src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.ts diff --git a/src/app/loans/loans-routing.module.ts b/src/app/loans/loans-routing.module.ts index d21e3dd94d..1fe82ff305 100644 --- a/src/app/loans/loans-routing.module.ts +++ b/src/app/loans/loans-routing.module.ts @@ -60,6 +60,7 @@ import { ExternalAssetOwnerActiveTransferResolver } from './common-resolvers/ext import { LoanCollateralsResolver } from './common-resolvers/loan-collaterals.resolver'; import { LoanDelinquencyDataResolver } from './common-resolvers/loan-delinquency-data.resolver'; import { LoanDelinquencyActionsResolver } from './common-resolvers/loan-delinquency-actions.resolver'; +import { LoanTermVariationsTabComponent } from './loans-view/loan-term-variations-tab/loan-term-variations-tab.component'; /** Loans Route. */ const routes: Routes = [ @@ -165,6 +166,14 @@ const routes: Routes = [ loanCollaterals: LoanCollateralsResolver } }, + { + path: 'term-variations', + component: LoanTermVariationsTabComponent, + data: { title: 'Loan Term Variations', breadcrumb: 'Loan Term Variations', routeParamBreadcrumb: false }, + resolve: { + loanDetailsData: LoanDetailsResolver + }, + }, { path: 'loan-tranche-details', component: LoanTrancheDetailsComponent, diff --git a/src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.html b/src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.html new file mode 100644 index 0000000000..eadfbffa26 --- /dev/null +++ b/src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.html @@ -0,0 +1,29 @@ +
+ +

{{"labels.heading.Term Variations" | translate}}

+ + + + + + + + + + + + + + + + + + + + + + + + +
{{"labels.inputs.Type" | translate}} {{ item.termType.value | translate }} {{"labels.inputs.Added On" | translate}} {{ item.termVariationApplicableFrom | dateFormat }} {{"labels.inputs.Value" | translate}} {{ item.decimalValue | formatNumber }} {{"labels.inputs.Specific to Installment" | translate}} {{ item.isSpecificToInstallment | yesNo }}
+
\ No newline at end of file diff --git a/src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.scss b/src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.scss new file mode 100644 index 0000000000..81dfcf7e23 --- /dev/null +++ b/src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.scss @@ -0,0 +1,12 @@ +table { + width: 100%; +} + +.container { + padding-top: 1%; + padding-bottom: 2%; + + .delete-button { + margin-left: 1%; + } +} \ No newline at end of file diff --git a/src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.spec.ts b/src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.spec.ts new file mode 100644 index 0000000000..8a0f0050b8 --- /dev/null +++ b/src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoanTermVariationsTabComponent } from './loan-term-variations-tab.component'; + +describe('LoanTermVariationsTabComponent', () => { + let component: LoanTermVariationsTabComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ LoanTermVariationsTabComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(LoanTermVariationsTabComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.ts b/src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.ts new file mode 100644 index 0000000000..0e36cfd3b8 --- /dev/null +++ b/src/app/loans/loans-view/loan-term-variations-tab/loan-term-variations-tab.component.ts @@ -0,0 +1,28 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; + +@Component({ + selector: 'mifosx-loan-term-variations-tab', + templateUrl: './loan-term-variations-tab.component.html', + styleUrls: ['./loan-term-variations-tab.component.scss'] +}) +export class LoanTermVariationsTabComponent implements OnInit { + + /** Loan Details Data */ + loanTermVariationsData: any[] = []; + + loanId: number; + + loanDTermVariationsColumns: string[] = ['termType', 'applicableFrom', 'value', 'specificToInstallment']; + + constructor(private route: ActivatedRoute) { + this.route.parent.data.subscribe((data: { loanDetailsData: any, }) => { + this.loanTermVariationsData = data.loanDetailsData.loanTermVariations; + }); + this.loanId = this.route.parent.parent.snapshot.params['loanId']; + } + + ngOnInit(): void { + } + +} diff --git a/src/app/loans/loans-view/loans-view.component.html b/src/app/loans/loans-view/loans-view.component.html index f633328fa4..5f9bfb9e2a 100644 --- a/src/app/loans/loans-view/loans-view.component.html +++ b/src/app/loans/loans-view/loans-view.component.html @@ -173,6 +173,12 @@

{{"labels.heading.Account Overview" | translate}}

{{"labels.inputs.Loan Tranche Details" | translate}} + + + {{"labels.inputs.Term Variations" | translate}} + + diff --git a/src/app/loans/loans.module.ts b/src/app/loans/loans.module.ts index 314b41ba17..ac3a9a381c 100644 --- a/src/app/loans/loans.module.ts +++ b/src/app/loans/loans.module.ts @@ -82,6 +82,7 @@ import { TranslateModule } from '@ngx-translate/core'; import { LoanDelinquencyActionDialogComponent } from './custom-dialog/loan-delinquency-action-dialog/loan-delinquency-action-dialog.component'; import { LoanReagingComponent } from './loans-view/loan-account-actions/loan-reaging/loan-reaging.component'; import { LoanReamortizeComponent } from './loans-view/loan-account-actions/loan-reamortize/loan-reamortize.component'; +import { LoanTermVariationsTabComponent } from './loans-view/loan-term-variations-tab/loan-term-variations-tab.component'; /** * Loans Module @@ -167,7 +168,8 @@ import { LoanReamortizeComponent } from './loans-view/loan-account-actions/loan- ExternalAssetTransferComponent, LoanDelinquencyActionDialogComponent, LoanReagingComponent, - LoanReamortizeComponent + LoanReamortizeComponent, + LoanTermVariationsTabComponent ], providers: [ ], }) diff --git a/src/assets/translations/cs-CS.json b/src/assets/translations/cs-CS.json index 879d592dde..324dd62add 100644 --- a/src/assets/translations/cs-CS.json +++ b/src/assets/translations/cs-CS.json @@ -1103,6 +1103,7 @@ "Template Parameters": "Parametry šablony", "Term Options": "Možnosti období", "Terms": "Podmínky", + "Term Variations": "Termínové variace", "Total Withdrawals": "Celkové výběry", "Transaction Details": "Detaily transakce", "Transaction Reverted": "Transakce vrácena", @@ -2224,6 +2225,7 @@ "Show Closed Centers": "Zobrazit uzavřená centra", "Show Closed Groups": "Zobrazit uzavřené skupiny", "Show Payment Details": "Zobrazit podrobnosti o platbě", + "Specific to Installment": "Specifické pro splátky", "Staff": "Personál", "Standing Instruction": "Stálý pokyn", "Standing Instruction Type": "Typ trvalého pokynu", @@ -2268,6 +2270,7 @@ "Tenant": "Nájemce", "Tenant App Key": "Klíč aplikace nájemce", "Tenant Id": "Id nájemce", + "Term Variations": "Termínové variace", "Terms vary based on loan cycle": "Podmínky se liší v závislosti na cyklu půjčky", "Text": "Text", "Theme": "Téma", diff --git a/src/assets/translations/de-DE.json b/src/assets/translations/de-DE.json index 187dcb01d4..14e501a7cd 100644 --- a/src/assets/translations/de-DE.json +++ b/src/assets/translations/de-DE.json @@ -1104,6 +1104,7 @@ "Template Parameters": "Vorlagenparameter", "Term Options": "Laufzeitoptionen", "Terms": "Bedingungen", + "Term Variations": "Begriffsvariationen", "Total Withdrawals": "Gesamtabhebungen", "Transaction Details": "Transaktionsdetails", "Transaction Reverted": "Transaktion rückgängig gemacht", @@ -2224,6 +2225,7 @@ "Show Closed Centers": "Geschlossene Zentren anzeigen", "Show Closed Groups": "Geschlossene Gruppen anzeigen", "Show Payment Details": "Zahlungsdetails anzeigen", + "Specific to Installment": "Speziell für Ratenzahlung", "Staff": "Personal", "Standing Instruction": "Ständiger Unterricht", "Standing Instruction Type": "Ständiger Instruktionstyp", @@ -2268,6 +2270,7 @@ "Tenant": "Mieter", "Tenant App Key": "Mieter-App-Schlüssel", "Tenant Id": "Mieter-ID", + "Term Variations": "Begriffsvariationen", "Terms vary based on loan cycle": "Die Laufzeiten variieren je nach Kreditzyklus", "Text": "Text", "Theme": "Thema", diff --git a/src/assets/translations/en-US.json b/src/assets/translations/en-US.json index 9909c1b187..3f24bd0e4d 100644 --- a/src/assets/translations/en-US.json +++ b/src/assets/translations/en-US.json @@ -1105,6 +1105,7 @@ "Template Parameters": "Template Parameters", "Term Options": "Term Options", "Terms": "Terms", + "Term Variations": "Term Variations", "Total Withdrawals": "Total Withdrawals", "Transaction Details": "Transaction Details", "Transaction Reverted": "Transaction Reverted", @@ -2225,6 +2226,7 @@ "Show Closed Centers": "Show Closed Centers", "Show Closed Groups": "Show Closed Groups", "Show Payment Details": "Show Payment Details", + "Specific to Installment": "Specific to Installment", "Staff": "Staff", "Standing Instruction": "Standing Instruction", "Standing Instruction Type": "Standing Instruction Type", @@ -2269,6 +2271,7 @@ "Tenant": "Tenant", "Tenant App Key": "Tenant App Key", "Tenant Id": "Tenant Id", + "Term Variations": "Term Variations", "Terms vary based on loan cycle": "Terms vary based on loan cycle", "Text": "Text", "Theme": "Theme", diff --git a/src/assets/translations/es-MX.json b/src/assets/translations/es-MX.json index a901ca95b1..7c8b92bf63 100644 --- a/src/assets/translations/es-MX.json +++ b/src/assets/translations/es-MX.json @@ -1102,6 +1102,7 @@ "Template Parameters": "Parámetros de plantilla", "Term Options": "Opciones de plazo", "Terms": "Términos", + "Term Variations": "Variaciones de términos", "Total Withdrawals": "Retiros totales", "Transaction Details": "Detalles de la transacción", "Transaction Reverted": "Transacción revertida", @@ -2223,6 +2224,7 @@ "Show Closed Centers": "Mostrar Centros Cerrados", "Show Closed Groups": "Mostrar grupos cerrados", "Show Payment Details": "Mostrar detalles de pago", + "Specific to Installment": "Específico para la cuota", "Staff": "Asesor", "Standing Instruction": "Instrucción permanente", "Standing Instruction Type": "Tipo de instrucción permanente", @@ -2267,6 +2269,7 @@ "Tenant": "Entidad", "Tenant App Key": "Clave de aplicación para la entidad", "Tenant Id": "Id de la entidad", + "Term Variations": "Variaciones de Condiciones", "Terms vary based on loan cycle": "Los términos varían según el ciclo del Crédito.", "Text": "Texto", "Theme": "Tema", diff --git a/src/assets/translations/fr-FR.json b/src/assets/translations/fr-FR.json index 062e58389b..641e9cd340 100644 --- a/src/assets/translations/fr-FR.json +++ b/src/assets/translations/fr-FR.json @@ -1104,6 +1104,7 @@ "Template Parameters": "Paramètres du modèle", "Term Options": "Options de durée", "Terms": "Termes", + "Term Variations": "Variations de durée", "Total Withdrawals": "Retraits totaux", "Transaction Details": "détails de la transaction", "Transaction Reverted": "Transaction annulée", @@ -2224,6 +2225,7 @@ "Show Closed Centers": "Afficher les centres fermés", "Show Closed Groups": "Afficher les groupes fermés", "Show Payment Details": "Afficher les détails du paiement", + "Specific to Installment": "Spécifique au versement", "Staff": "Personnel", "Standing Instruction": "Instruction permanente", "Standing Instruction Type": "Type d'instruction permanente", @@ -2268,6 +2270,7 @@ "Tenant": "Locataire", "Tenant App Key": "Clé d'application du locataire", "Tenant Id": "Identifiant du locataire", + "Term Variations": "Variations de durée", "Terms vary based on loan cycle": "Les conditions varient en fonction du cycle de prêt", "Text": "Texte", "Theme": "Thème", diff --git a/src/assets/translations/it-IT.json b/src/assets/translations/it-IT.json index f9a2dddc81..97b3baf78f 100644 --- a/src/assets/translations/it-IT.json +++ b/src/assets/translations/it-IT.json @@ -1104,6 +1104,7 @@ "Template Parameters": "Parametri del modello", "Term Options": "Opzioni dei termini", "Terms": "Termini", + "Term Variations": "Variazioni dei termini", "Total Withdrawals": "Prelievi totali", "Transaction Details": "Dettagli di Transazione", "Transaction Reverted": "Transazione annullata", @@ -2224,6 +2225,7 @@ "Show Closed Centers": "Mostra centri chiusi", "Show Closed Groups": "Mostra gruppi chiusi", "Show Payment Details": "Mostra i dettagli del pagamento", + "Specific to Installment": "Specifico per la rata", "Staff": "Personale", "Standing Instruction": "Istruzioni permanenti", "Standing Instruction Type": "Tipo di istruzione permanente", @@ -2268,6 +2270,7 @@ "Tenant": "Inquilino", "Tenant App Key": "Chiave dell'app del tenant", "Tenant Id": "ID inquilino", + "Term Variations": "Variazioni dei termini", "Terms vary based on loan cycle": "I termini variano in base al ciclo di prestito", "Text": "Testo", "Theme": "Tema", diff --git a/src/assets/translations/ko-KO.json b/src/assets/translations/ko-KO.json index 0085330232..cc974aaace 100644 --- a/src/assets/translations/ko-KO.json +++ b/src/assets/translations/ko-KO.json @@ -1105,6 +1105,7 @@ "Template Parameters": "템플릿 매개변수", "Term Options": "기간 옵션", "Terms": "자귀", + "Term Variations": "용어 변형", "Total Withdrawals": "총 출금", "Transaction Details": "상세 거래 내역", "Transaction Reverted": "거래가 되돌려졌습니다.", @@ -2225,6 +2226,7 @@ "Show Closed Centers": "닫힌 센터 표시", "Show Closed Groups": "닫힌 그룹 표시", "Show Payment Details": "결제 세부정보 표시", + "Specific to Installment": "할부에만 해당", "Staff": "직원", "Standing Instruction": "상임지도", "Standing Instruction Type": "상임 지시 유형", @@ -2269,6 +2271,7 @@ "Tenant": "거주자", "Tenant App Key": "테넌트 앱 키", "Tenant Id": "테넌트 ID", + "Term Variations": "용어 변형", "Terms vary based on loan cycle": "대출 주기에 따라 조건이 달라집니다.", "Text": "텍스트", "Theme": "주제", diff --git a/src/assets/translations/lt-LT.json b/src/assets/translations/lt-LT.json index f78d24b418..03b4ce04cd 100644 --- a/src/assets/translations/lt-LT.json +++ b/src/assets/translations/lt-LT.json @@ -1104,6 +1104,7 @@ "Template Parameters": "Šablono parametrai", "Term Options": "Termino parinktys", "Terms": "Sąlygos", + "Term Variations": "Terminų variacijos", "Total Withdrawals": "Bendras išėmimas", "Transaction Details": "Pervedimo duomenys", "Transaction Reverted": "Sandoris grąžintas", @@ -2224,6 +2225,7 @@ "Show Closed Centers": "Rodyti uždarus centrus", "Show Closed Groups": "Rodyti uždaras grupes", "Show Payment Details": "Rodyti išsamią mokėjimo informaciją", + "Specific to Installment": "Specifinis išsimokėtinai", "Staff": "Personalas", "Standing Instruction": "Stovėjimo instrukcija", "Standing Instruction Type": "Stovimos instrukcijos tipas", @@ -2268,6 +2270,7 @@ "Tenant": "Nuomininkas", "Tenant App Key": "Nuomininko programos raktas", "Tenant Id": "Nuomininko ID", + "Term Variations": "Terminų variacijos", "Terms vary based on loan cycle": "Sąlygos skiriasi priklausomai nuo paskolos ciklo", "Text": "Tekstas", "Theme": "tema", diff --git a/src/assets/translations/lv-LV.json b/src/assets/translations/lv-LV.json index ab0e6c195a..cdf0e67783 100644 --- a/src/assets/translations/lv-LV.json +++ b/src/assets/translations/lv-LV.json @@ -1104,6 +1104,7 @@ "Template Parameters": "Veidnes parametri", "Term Options": "Termiņa opcijas", "Terms": "Noteikumi", + "Term Variations": "Terminu variācijas", "Total Withdrawals": "Kopējā izņemšana", "Transaction Details": "Darījuma informācija", "Transaction Reverted": "Darījums ir atsaukts", @@ -2224,6 +2225,7 @@ "Show Closed Centers": "Rādīt slēgtos centrus", "Show Closed Groups": "Rādīt slēgtās grupas", "Show Payment Details": "Rādīt maksājuma informāciju", + "Specific to Installment": "Īpaši uz nomaksu", "Staff": "Personāls", "Standing Instruction": "Pastāvīga instrukcija", "Standing Instruction Type": "Pastāvīgās instrukcijas veids", @@ -2268,6 +2270,7 @@ "Tenant": "Īrnieks", "Tenant App Key": "Īrnieka lietotnes atslēga", "Tenant Id": "Īrnieka ID", + "Term Variations": "Terminu variācijas", "Terms vary based on loan cycle": "Noteikumi atšķiras atkarībā no aizdevuma cikla", "Text": "Teksts", "Theme": "Tēma", diff --git a/src/assets/translations/ne-NE.json b/src/assets/translations/ne-NE.json index 96439074b0..ab9ee46388 100644 --- a/src/assets/translations/ne-NE.json +++ b/src/assets/translations/ne-NE.json @@ -1104,6 +1104,7 @@ "Template Parameters": "टेम्प्लेट प्यारामिटरहरू", "Term Options": "टर्म विकल्प", "Terms": "सर्तहरू", + "Term Variations": "अवधि भिन्नताहरू", "Total Withdrawals": "कुल निकासी", "Transaction Details": "लेनदेन विवरण", "Transaction Reverted": "कारोबार फिर्ता गरियो", @@ -2224,6 +2225,7 @@ "Show Closed Centers": "बन्द केन्द्रहरू देखाउनुहोस्", "Show Closed Groups": "बन्द समूहहरू देखाउनुहोस्", "Show Payment Details": "भुक्तानी विवरणहरू देखाउनुहोस्", + "Specific to Installment": "किस्ताको लागि विशिष्ट", "Staff": "कर्मचारी", "Standing Instruction": "स्थायी निर्देशन", "Standing Instruction Type": "स्थायी निर्देशन प्रकार", @@ -2268,6 +2270,7 @@ "Tenant": "भाँडादार", "Tenant App Key": "टेनेन्ट एप कुञ्जी", "Tenant Id": "टेनेन्ट आईडी", + "Term Variations": "अवधि भिन्नताहरू", "Terms vary based on loan cycle": "ऋण चक्रको आधारमा सर्तहरू भिन्न हुन्छन्", "Text": "पाठ", "Theme": "विषयवस्तु", diff --git a/src/assets/translations/pt-PT.json b/src/assets/translations/pt-PT.json index abca77ddae..b02485f4e6 100644 --- a/src/assets/translations/pt-PT.json +++ b/src/assets/translations/pt-PT.json @@ -1104,6 +1104,7 @@ "Template Parameters": "Parâmetros do modelo", "Term Options": "Opções de prazo", "Terms": "Termos", + "Term Variations": "Variações de prazo", "Total Withdrawals": "Retiradas totais", "Transaction Details": "Detalhes da transação", "Transaction Reverted": "Transação revertida", @@ -2224,6 +2225,7 @@ "Show Closed Centers": "Mostrar Centros Fechados", "Show Closed Groups": "Mostrar grupos fechados", "Show Payment Details": "Mostrar detalhes de pagamento", + "Specific to Installment": "Específico para parcelamento", "Staff": "Funcionários", "Standing Instruction": "Instrução Permanente", "Standing Instruction Type": "Tipo de instrução permanente", @@ -2268,6 +2270,7 @@ "Tenant": "Inquilino", "Tenant App Key": "Chave do aplicativo do locatário", "Tenant Id": "ID do locatário", + "Term Variations": "Variações de prazo", "Terms vary based on loan cycle": "Os termos variam de acordo com o ciclo do empréstimo", "Text": "Texto", "Theme": "Tema", diff --git a/src/assets/translations/sw-SW.json b/src/assets/translations/sw-SW.json index 2e0248f1c5..e9c607ff17 100644 --- a/src/assets/translations/sw-SW.json +++ b/src/assets/translations/sw-SW.json @@ -1104,6 +1104,7 @@ "Template Parameters": "Vigezo vya Kigezo", "Term Options": "Chaguzi za Muda", "Terms": "Masharti", + "Term Variations": "Tofauti za Muda", "Total Withdrawals": "Jumla ya Pesa", "Transaction Details": "Maelezo ya Muamala", "Transaction Reverted": "Muamala Umerejeshwa", @@ -2224,6 +2225,7 @@ "Show Closed Centers": "Onyesha Vituo Vilivyofungwa", "Show Closed Groups": "Onyesha Vikundi Vilivyofungwa", "Show Payment Details": "Onyesha Maelezo ya Malipo", + "Specific to Installment": "Maalum kwa Installment", "Staff": "Wafanyakazi", "Standing Instruction": "Maagizo ya Kudumu", "Standing Instruction Type": "Aina ya Maagizo ya Kudumu", @@ -2268,6 +2270,7 @@ "Tenant": "Mpangaji", "Tenant App Key": "Ufunguo wa Programu ya Mpangaji", "Tenant Id": "Kitambulisho cha Mpangaji", + "Term Variations": "Tofauti za Muda", "Terms vary based on loan cycle": "Masharti yanatofautiana kulingana na mzunguko wa mkopo", "Text": "Maandishi", "Theme": "Mandhari",