Merge pull request #2835 from alberto-art3ch/WEB-446/validation-of-re-age-amount-during-submission_02
WEB-446: Optional transaction amount on re-age submission
This commit is contained in:
+24
-10
@@ -3,16 +3,6 @@
|
|||||||
<form [formGroup]="reagingLoanForm" (ngSubmit)="submit()" *ngIf="loanTransactionData !== null">
|
<form [formGroup]="reagingLoanForm" (ngSubmit)="submit()" *ngIf="loanTransactionData !== null">
|
||||||
<mat-card-content>
|
<mat-card-content>
|
||||||
<div class="layout-column">
|
<div class="layout-column">
|
||||||
<mifosx-input-amount
|
|
||||||
[currency]="loanTransactionData.currency"
|
|
||||||
[isRequired]="false"
|
|
||||||
[inputFormControl]="reagingLoanForm.controls.transactionAmount"
|
|
||||||
[inputLabel]="'Transaction Amount'"
|
|
||||||
[minVal]="0.01"
|
|
||||||
[maxVal]="loanTransactionData.amount"
|
|
||||||
>
|
|
||||||
</mifosx-input-amount>
|
|
||||||
|
|
||||||
<mat-form-field>
|
<mat-form-field>
|
||||||
<mat-label>{{ 'labels.inputs.Number of Installments' | translate }}</mat-label>
|
<mat-label>{{ 'labels.inputs.Number of Installments' | translate }}</mat-label>
|
||||||
<input type="number" matInput required formControlName="numberOfInstallments" />
|
<input type="number" matInput required formControlName="numberOfInstallments" />
|
||||||
@@ -80,6 +70,30 @@
|
|||||||
<mat-label>{{ 'labels.inputs.Note' | translate }}</mat-label>
|
<mat-label>{{ 'labels.inputs.Note' | translate }}</mat-label>
|
||||||
<input matInput formControlName="note" />
|
<input matInput formControlName="note" />
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
|
|
||||||
|
<div class="flex-fill">
|
||||||
|
<span
|
||||||
|
class="expandcollapsebutton m-l-10 m-t-5 m-b-5 flex-75"
|
||||||
|
(click)="addTransactionAmount = !addTransactionAmount"
|
||||||
|
>
|
||||||
|
<mat-slide-toggle>
|
||||||
|
<div>
|
||||||
|
<span class="m-l-10">{{ 'labels.inputs.Transaction Amount' | translate }}</span>
|
||||||
|
</div>
|
||||||
|
</mat-slide-toggle>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<mifosx-input-amount
|
||||||
|
*ngIf="addTransactionAmount"
|
||||||
|
[currency]="loanTransactionData.currency"
|
||||||
|
[isRequired]="false"
|
||||||
|
[inputFormControl]="reagingLoanForm.controls.transactionAmount"
|
||||||
|
[inputLabel]="'Transaction Amount'"
|
||||||
|
[minVal]="0.01"
|
||||||
|
[maxVal]="loanTransactionData.amount"
|
||||||
|
>
|
||||||
|
</mifosx-input-amount>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
|
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
|
||||||
|
|||||||
+8
-5
@@ -11,6 +11,7 @@ import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
|
|||||||
import { ReAgePreviewDialogComponent } from './re-age-preview-dialog/re-age-preview-dialog.component';
|
import { ReAgePreviewDialogComponent } from './re-age-preview-dialog/re-age-preview-dialog.component';
|
||||||
import { InputAmountComponent } from 'app/shared/input-amount/input-amount.component';
|
import { InputAmountComponent } from 'app/shared/input-amount/input-amount.component';
|
||||||
import { LoanTransactionTemplate } from 'app/loans/models/loan-transaction-type.model';
|
import { LoanTransactionTemplate } from 'app/loans/models/loan-transaction-type.model';
|
||||||
|
import { MatSlideToggle } from '@angular/material/slide-toggle';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'mifosx-loan-reaging',
|
selector: 'mifosx-loan-reaging',
|
||||||
@@ -18,7 +19,8 @@ import { LoanTransactionTemplate } from 'app/loans/models/loan-transaction-type.
|
|||||||
styleUrls: ['./loan-reaging.component.scss'],
|
styleUrls: ['./loan-reaging.component.scss'],
|
||||||
imports: [
|
imports: [
|
||||||
...STANDALONE_SHARED_IMPORTS,
|
...STANDALONE_SHARED_IMPORTS,
|
||||||
InputAmountComponent
|
InputAmountComponent,
|
||||||
|
MatSlideToggle
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class LoanReagingComponent implements OnInit {
|
export class LoanReagingComponent implements OnInit {
|
||||||
@@ -38,6 +40,7 @@ export class LoanReagingComponent implements OnInit {
|
|||||||
maxDate = new Date();
|
maxDate = new Date();
|
||||||
|
|
||||||
loanTransactionData: LoanTransactionTemplate | null = null;
|
loanTransactionData: LoanTransactionTemplate | null = null;
|
||||||
|
addTransactionAmount = false;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private formBuilder: UntypedFormBuilder,
|
private formBuilder: UntypedFormBuilder,
|
||||||
@@ -84,7 +87,7 @@ export class LoanReagingComponent implements OnInit {
|
|||||||
this.reAgeInterestHandlingOptions[0]
|
this.reAgeInterestHandlingOptions[0]
|
||||||
],
|
],
|
||||||
transactionAmount: [
|
transactionAmount: [
|
||||||
this.loanTransactionData.amount,
|
,
|
||||||
[Validators.max(this.loanTransactionData.amount)]
|
[Validators.max(this.loanTransactionData.amount)]
|
||||||
],
|
],
|
||||||
note: '',
|
note: '',
|
||||||
@@ -143,10 +146,10 @@ export class LoanReagingComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
submit(): void {
|
submit(): void {
|
||||||
if (this.reagingLoanForm.invalid) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const data = this.prepareReagingData();
|
const data = this.prepareReagingData();
|
||||||
|
if (data['transactionAmount'] === null) {
|
||||||
|
delete data['transactionAmount'];
|
||||||
|
}
|
||||||
this.loanService.submitLoanActionButton(this.loanId, data, 'reAge').subscribe({
|
this.loanService.submitLoanActionButton(this.loanId, data, 'reAge').subscribe({
|
||||||
next: (response: any) => {
|
next: (response: any) => {
|
||||||
this.router.navigate(['../../transactions'], { relativeTo: this.route });
|
this.router.navigate(['../../transactions'], { relativeTo: this.route });
|
||||||
|
|||||||
+4
-4
@@ -1,4 +1,4 @@
|
|||||||
<h1 mat-dialog-title>{{ 'labels.heading.Repayment Schedule Preview' | translate }}</h1>
|
<h1 class="m-l-30">{{ 'labels.heading.Repayment Schedule Preview' | translate }}</h1>
|
||||||
|
|
||||||
<mat-dialog-content class="mat-typography">
|
<mat-dialog-content class="mat-typography">
|
||||||
<mifosx-repayment-schedule-tab
|
<mifosx-repayment-schedule-tab
|
||||||
@@ -9,8 +9,8 @@
|
|||||||
</mifosx-repayment-schedule-tab>
|
</mifosx-repayment-schedule-tab>
|
||||||
</mat-dialog-content>
|
</mat-dialog-content>
|
||||||
|
|
||||||
<mat-dialog-actions align="end">
|
<mat-dialog-actions align="center">
|
||||||
<button mat-raised-button type="button" (click)="close()">
|
<button mat-raised-button color="primary" type="button" (click)="close()">
|
||||||
{{ 'labels.buttons.Go back' | translate }}
|
{{ 'labels.buttons.Back' | translate }}
|
||||||
</button>
|
</button>
|
||||||
</mat-dialog-actions>
|
</mat-dialog-actions>
|
||||||
|
|||||||
+1
-8
@@ -1,11 +1,5 @@
|
|||||||
import { Component, Inject } from '@angular/core';
|
import { Component, Inject } from '@angular/core';
|
||||||
import {
|
import { MAT_DIALOG_DATA, MatDialogRef, MatDialogContent, MatDialogActions } from '@angular/material/dialog';
|
||||||
MAT_DIALOG_DATA,
|
|
||||||
MatDialogRef,
|
|
||||||
MatDialogTitle,
|
|
||||||
MatDialogContent,
|
|
||||||
MatDialogActions
|
|
||||||
} from '@angular/material/dialog';
|
|
||||||
import { MatButton } from '@angular/material/button';
|
import { MatButton } from '@angular/material/button';
|
||||||
import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
|
import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
|
||||||
import { RepaymentSchedule } from 'app/loans/models/loan-account.model';
|
import { RepaymentSchedule } from 'app/loans/models/loan-account.model';
|
||||||
@@ -22,7 +16,6 @@ export interface ReAgePreviewDialogData {
|
|||||||
styleUrls: ['./re-age-preview-dialog.component.scss'],
|
styleUrls: ['./re-age-preview-dialog.component.scss'],
|
||||||
imports: [
|
imports: [
|
||||||
...STANDALONE_SHARED_IMPORTS,
|
...STANDALONE_SHARED_IMPORTS,
|
||||||
MatDialogTitle,
|
|
||||||
MatDialogContent,
|
MatDialogContent,
|
||||||
MatDialogActions,
|
MatDialogActions,
|
||||||
MatButton,
|
MatButton,
|
||||||
|
|||||||
Reference in New Issue
Block a user