-
Notifications
You must be signed in to change notification settings - Fork 509
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: Recurring Deposit accounts issues
- Loading branch information
1 parent
9b51ec4
commit b23efd3
Showing
23 changed files
with
402 additions
and
121 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
88 changes: 88 additions & 0 deletions
88
...nt-actions/fixed-deposits-cash-transaction/fixed-deposits-cash-transaction.component.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
<div class="container mat-elevation-z8"> | ||
|
||
<mat-card> | ||
|
||
<h2 mat-title *ngIf="transactionType.withdrawal">{{'labels.menus.' + actionName | translate }} {{'labels.heading.Fixed Deposit Transactions' | translate}}</h2> | ||
|
||
<form [formGroup]="accountTransactionForm" (ngSubmit)="submit()"> | ||
|
||
<mat-card-content fxLayout="column"> | ||
|
||
<mat-form-field (click)="dueDatePicker.open()"> | ||
<mat-label>{{'labels.inputs.Transaction Date' | translate}}</mat-label> | ||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="dueDatePicker" | ||
formControlName="transactionDate" required> | ||
<mat-datepicker-toggle matSuffix [for]="dueDatePicker"></mat-datepicker-toggle> | ||
<mat-datepicker #dueDatePicker></mat-datepicker> | ||
<mat-error *ngIf="accountTransactionForm.controls.transactionDate.hasError('required')"> | ||
{{'labels.inputs.Transaction Date' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong> | ||
</mat-error> | ||
</mat-form-field> | ||
|
||
<mifosx-input-amount [currency]="currency" [isRequired]="true" | ||
[inputFormControl]="accountTransactionForm.controls.transactionAmount" | ||
[inputLabel]="'Transaction Amount'"> | ||
</mifosx-input-amount> | ||
|
||
<mat-form-field> | ||
<mat-label>{{'labels.inputs.Payment Type' | translate}}</mat-label> | ||
<mat-select required formControlName="paymentTypeId"> | ||
<mat-option *ngFor="let paymentType of paymentTypeOptions" [value]="paymentType.id"> | ||
{{ paymentType.name }} | ||
</mat-option> | ||
</mat-select> | ||
</mat-form-field> | ||
|
||
<div fxFlexFill> | ||
<span fxFlex="75%" class="expandcollapsebutton m-l-10 m-t-40" (click)="addPaymentDetails()"> | ||
<mat-slide-toggle> | ||
<div [className]="addPaymentDetailsFlag ? 'enabled' : 'disabled'"> | ||
<span class="m-l-10">{{'labels.inputs.Show Payment Details' | translate}}</span> | ||
</div> | ||
</mat-slide-toggle> | ||
</span> | ||
</div> | ||
|
||
<mat-form-field *ngIf="addPaymentDetailsFlag"> | ||
<mat-label>{{'labels.inputs.Account Number' | translate}}</mat-label> | ||
<input type="number" formControlName="accountNumber" matInput /> | ||
</mat-form-field> | ||
|
||
<mat-form-field *ngIf="addPaymentDetailsFlag"> | ||
<mat-label>{{'labels.inputs.Cheque' | translate}}</mat-label> | ||
<input type="number" formControlName="checkNumber" matInput /> | ||
</mat-form-field> | ||
|
||
<mat-form-field *ngIf="addPaymentDetailsFlag"> | ||
<mat-label>{{'labels.inputs.Routing Code' | translate}}</mat-label> | ||
<input formControlName="routingCode" matInput /> | ||
</mat-form-field> | ||
|
||
<mat-form-field *ngIf="addPaymentDetailsFlag"> | ||
<mat-label>{{'labels.inputs.Receipt Number' | translate}}</mat-label> | ||
<input formControlName="receiptNumber" matInput /> | ||
</mat-form-field> | ||
|
||
<mat-form-field *ngIf="addPaymentDetailsFlag"> | ||
<mat-label>{{'labels.inputs.Bank' | translate}}</mat-label> | ||
<input formControlName="bankNumber" matInput /> | ||
</mat-form-field> | ||
|
||
<mat-form-field> | ||
<mat-label>{{'labels.inputs.Notes' | translate}}</mat-label> | ||
<textarea formControlName="note" matInput cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea> | ||
</mat-form-field> | ||
|
||
<mat-card-actions fxLayoutGap="5px" fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center"> | ||
<button type="button" mat-raised-button [routerLink]="['../../transactions']">{{'labels.buttons.Cancel' | translate}}</button> | ||
<button mat-raised-button color="primary" [disabled]="!accountTransactionForm.valid">{{'labels.buttons.Submit' | translate}}</button> | ||
</mat-card-actions> | ||
|
||
</mat-card-content> | ||
|
||
</form> | ||
|
||
</mat-card> | ||
|
||
</div> | ||
|
15 changes: 15 additions & 0 deletions
15
...nt-actions/fixed-deposits-cash-transaction/fixed-deposits-cash-transaction.component.scss
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
.expandcollapsebutton { | ||
margin-top: -7px; | ||
} | ||
|
||
.container { | ||
max-width: 37rem; | ||
} | ||
|
||
.right-input { | ||
text-align: right; | ||
} | ||
|
||
.right-label { | ||
padding-right: 25px !important; | ||
} |
23 changes: 23 additions & 0 deletions
23
...actions/fixed-deposits-cash-transaction/fixed-deposits-cash-transaction.component.spec.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
import { ComponentFixture, TestBed } from '@angular/core/testing'; | ||
|
||
import { FixedDepositsCashTransactionComponent } from './fixed-deposits-cash-transaction.component'; | ||
|
||
describe('FixedDepositsCashTransactionComponent', () => { | ||
let component: FixedDepositsCashTransactionComponent; | ||
let fixture: ComponentFixture<FixedDepositsCashTransactionComponent>; | ||
|
||
beforeEach(async () => { | ||
await TestBed.configureTestingModule({ | ||
declarations: [ FixedDepositsCashTransactionComponent ] | ||
}) | ||
.compileComponents(); | ||
|
||
fixture = TestBed.createComponent(FixedDepositsCashTransactionComponent); | ||
component = fixture.componentInstance; | ||
fixture.detectChanges(); | ||
}); | ||
|
||
it('should create', () => { | ||
expect(component).toBeTruthy(); | ||
}); | ||
}); |
123 changes: 123 additions & 0 deletions
123
...ount-actions/fixed-deposits-cash-transaction/fixed-deposits-cash-transaction.component.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
import { Component, OnInit } from '@angular/core'; | ||
import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms'; | ||
import { FixedDepositsService } from '../../fixed-deposits.service'; | ||
import { SettingsService } from 'app/settings/settings.service'; | ||
import { Dates } from 'app/core/utils/dates'; | ||
import { ActivatedRoute, Router } from '@angular/router'; | ||
import { Currency, PaymentType } from 'app/shared/models/general.model'; | ||
|
||
@Component({ | ||
selector: 'mifosx-fixed-deposits-cash-transaction', | ||
templateUrl: './fixed-deposits-cash-transaction.component.html', | ||
styleUrls: ['./fixed-deposits-cash-transaction.component.scss'] | ||
}) | ||
export class FixedDepositsCashTransactionComponent implements OnInit { | ||
|
||
/** Minimum Due Date allowed. */ | ||
minDate = new Date(2000, 0, 1); | ||
/** Maximum Due Date allowed. */ | ||
maxDate = new Date(); | ||
/** Savings account transaction form. */ | ||
accountTransactionForm: UntypedFormGroup; | ||
/** savings account transaction payment options. */ | ||
paymentTypeOptions: PaymentType[] = []; | ||
/** Flag to enable payment details fields. */ | ||
addPaymentDetailsFlag: Boolean = false; | ||
/** transaction type flag to render required UI */ | ||
transactionType: { deposit: boolean, withdrawal: boolean } = { deposit: false, withdrawal: false }; | ||
/** transaction command for submit request */ | ||
transactionCommand: string; | ||
actionName: string; | ||
/** saving account's Id */ | ||
accountId: string; | ||
currency: Currency; | ||
|
||
/** | ||
* Retrieves the Saving Account transaction template data from `resolve`. | ||
* @param {FormBuilder} formBuilder Form Builder. | ||
* @param {FixedDepositsService} fixedDepositsService Fixed Deposit Service. | ||
* @param {ActivatedRoute} route Activated Route. | ||
* @param {Dates} dateUtils Date Utils. | ||
* @param {Router} router Router for navigation. | ||
* @param {SettingsService} settingsService Settings Service | ||
*/ | ||
constructor(private formBuilder: UntypedFormBuilder, | ||
private route: ActivatedRoute, | ||
private router: Router, | ||
private dateUtils: Dates, | ||
private fixedDepositsService: FixedDepositsService, | ||
private settingsService: SettingsService) { | ||
this.route.data.subscribe((data: { fixedDepositsAccountActionData: any }) => { | ||
this.currency = data.fixedDepositsAccountActionData.currency; | ||
this.paymentTypeOptions = data.fixedDepositsAccountActionData.paymentTypeOptions; | ||
}); | ||
this.actionName = this.route.snapshot.params['name']; | ||
this.transactionCommand = this.actionName.toLowerCase(); | ||
this.transactionType[this.transactionCommand] = true; | ||
this.accountId = this.route.parent.snapshot.params['fixedDepositAccountId']; | ||
} | ||
|
||
/** | ||
* Creates the Saving account transaction form when component loads. | ||
*/ | ||
ngOnInit() { | ||
this.maxDate = this.settingsService.businessDate; | ||
this.createSavingAccountTransactionForm(); | ||
} | ||
|
||
/** | ||
* Method to create the Saving Account Transaction Form. | ||
*/ | ||
createSavingAccountTransactionForm() { | ||
this.accountTransactionForm = this.formBuilder.group({ | ||
'transactionDate': [this.settingsService.businessDate, Validators.required], | ||
'transactionAmount': [0, Validators.required], | ||
'paymentTypeId': [''], | ||
'note': [''] | ||
}); | ||
} | ||
|
||
/** | ||
* Method to add payment detail fields to the UI. | ||
*/ | ||
addPaymentDetails() { | ||
this.addPaymentDetailsFlag = !this.addPaymentDetailsFlag; | ||
if (this.addPaymentDetailsFlag) { | ||
this.accountTransactionForm.addControl('accountNumber', new UntypedFormControl('')); | ||
this.accountTransactionForm.addControl('checkNumber', new UntypedFormControl('')); | ||
this.accountTransactionForm.addControl('routingCode', new UntypedFormControl('')); | ||
this.accountTransactionForm.addControl('receiptNumber', new UntypedFormControl('')); | ||
this.accountTransactionForm.addControl('bankNumber', new UntypedFormControl('')); | ||
} else { | ||
this.accountTransactionForm.removeControl('accountNumber'); | ||
this.accountTransactionForm.removeControl('checkNumber'); | ||
this.accountTransactionForm.removeControl('routingCode'); | ||
this.accountTransactionForm.removeControl('receiptNumber'); | ||
this.accountTransactionForm.removeControl('bankNumber'); | ||
} | ||
} | ||
|
||
/** | ||
* Method to submit the transaction details. | ||
*/ | ||
submit() { | ||
const savingAccountTransactionFormData = this.accountTransactionForm.value; | ||
const locale = this.settingsService.language.code; | ||
const dateFormat = this.settingsService.dateFormat; | ||
const prevTransactionDate: Date = this.accountTransactionForm.value.transactionDate; | ||
if (savingAccountTransactionFormData.transactionDate instanceof Date) { | ||
savingAccountTransactionFormData.transactionDate = this.dateUtils.formatDate(prevTransactionDate, dateFormat); | ||
} | ||
const data = { | ||
...savingAccountTransactionFormData, | ||
dateFormat, | ||
locale | ||
}; | ||
delete data.note; | ||
data['transactionAmount'] = data['transactionAmount'] * 1; | ||
this.fixedDepositsService.executeFixedDepositsAccountTransactionsCommand(this.accountId, this.transactionCommand, data).subscribe(res => { | ||
this.router.navigate(['../../transactions'], { relativeTo: this.route }); | ||
}); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.