diff --git a/src/app/deposits/recurring-deposits/common-resolvers/recurring-deposit-account-transaction-template.resolver.ts b/src/app/deposits/recurring-deposits/common-resolvers/recurring-deposit-account-transaction-template.resolver.ts new file mode 100644 index 000000000..4edd8434e --- /dev/null +++ b/src/app/deposits/recurring-deposits/common-resolvers/recurring-deposit-account-transaction-template.resolver.ts @@ -0,0 +1,33 @@ +/** Angular Imports */ +import { Injectable } from '@angular/core'; +import { Resolve, ActivatedRouteSnapshot } from '@angular/router'; + +/** rxjs Imports */ +import { Observable } from 'rxjs'; + +/** Custom Services */ +import { RecurringDepositsService } from '../recurring-deposits.service'; + +/** + * Recurring Deposits Account Transaction Template data resolver. + */ +@Injectable() +export class RecurringDepositsAccountTransactionTemplateResolver implements Resolve { + + /** + * @param {RecurringDepositsService} recurringDepositsService Recurring Deposits service. + */ + constructor(private recurringDepositsService: RecurringDepositsService) { } + + /** + * Returns the Recurring Deposits Account Transaction data. + * @param {ActivatedRouteSnapshot} route Route Snapshot + * @returns {Observable} + */ + resolve(route: ActivatedRouteSnapshot): Observable { + const recurringDepositAccountId = route.parent.paramMap.get('recurringDepositAccountId'); + const transactionId = route.paramMap.get('id'); + return this.recurringDepositsService.getRecurringDepositsAccountTransactionTemplate(recurringDepositAccountId, transactionId); + } + +} diff --git a/src/app/deposits/recurring-deposits/common-resolvers/recurring-deposit-account-transaction.resolver.ts b/src/app/deposits/recurring-deposits/common-resolvers/recurring-deposit-account-transaction.resolver.ts new file mode 100644 index 000000000..d96337c8b --- /dev/null +++ b/src/app/deposits/recurring-deposits/common-resolvers/recurring-deposit-account-transaction.resolver.ts @@ -0,0 +1,33 @@ +/** Angular Imports */ +import { Injectable } from '@angular/core'; +import { Resolve, ActivatedRouteSnapshot } from '@angular/router'; + +/** rxjs Imports */ +import { Observable } from 'rxjs'; + +/** Custom Services */ +import { RecurringDepositsService } from '../recurring-deposits.service'; + +/** + * Recurring Deposits Account Transaction data resolver. + */ +@Injectable() +export class RecurringDepositsAccountTransactionResolver implements Resolve { + + /** + * @param {RecurringDepositsService} recurringDepositsService Recurring Deposits service. + */ + constructor(private recurringDepositsService: RecurringDepositsService) { } + + /** + * Returns the Recurring Deposits Account Transaction data. + * @param {ActivatedRouteSnapshot} route Route Snapshot + * @returns {Observable} + */ + resolve(route: ActivatedRouteSnapshot): Observable { + const recurringDepositAccountId = route.parent.paramMap.get('recurringDepositAccountId'); + const transactionId = route.paramMap.get('id'); + return this.recurringDepositsService.getRecurringDepositsAccountTransaction(recurringDepositAccountId, transactionId); + } + +} diff --git a/src/app/deposits/recurring-deposits/recurring-deposits-account-view/charges-tab/charges-tab.component.ts b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/charges-tab/charges-tab.component.ts index 7faf17f43..d9036ea5b 100644 --- a/src/app/deposits/recurring-deposits/recurring-deposits-account-view/charges-tab/charges-tab.component.ts +++ b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/charges-tab/charges-tab.component.ts @@ -123,7 +123,7 @@ export class ChargesTabComponent implements OnInit { * @param {any} chargeId Charge Id */ waiveCharge(chargeId: any) { - const waiveChargeDialogRef = this.dialog.open(RecurringDepositConfirmationDialogComponent, { data: { heading: 'Waive Charge', dialogContext: `Are you sure you want to waive charge with id: ${chargeId}` } }); + const waiveChargeDialogRef = this.dialog.open(RecurringDepositConfirmationDialogComponent, { data: { heading: 'Waive Charge', dialogContext: `Are you sure you want to waive charge with id: ${chargeId}?` } }); waiveChargeDialogRef.afterClosed().subscribe((response: any) => { if (response.confirm) { this.savingsService.executeSavingsAccountChargesCommand(this.recurringDepositsAccountData.id, 'waive', {}, chargeId) diff --git a/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/edit-transaction/edit-transaction.component.html b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/edit-transaction/edit-transaction.component.html new file mode 100644 index 000000000..c02f4933d --- /dev/null +++ b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/edit-transaction/edit-transaction.component.html @@ -0,0 +1,80 @@ +
+ + + +
+ + + + + Transaction Date + + + + + Transaction Date is required + + + + + Transaction Amount + + + Transaction Amount is required + + + + + Payment Type + + + {{ paymentType.name }} + + + + +
+ Show Payment Details + +
+ + + Account Number + + + + + Cheque + + + + + Routing Code + + + + + Receipt Number + + + + + Bank + + + + + + + + +
+ +
+ +
+ +
diff --git a/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/edit-transaction/edit-transaction.component.scss b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/edit-transaction/edit-transaction.component.scss new file mode 100644 index 000000000..aeead06e0 --- /dev/null +++ b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/edit-transaction/edit-transaction.component.scss @@ -0,0 +1,3 @@ +.container { + width: 37rem; +} diff --git a/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/edit-transaction/edit-transaction.component.spec.ts b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/edit-transaction/edit-transaction.component.spec.ts new file mode 100644 index 000000000..abea649f7 --- /dev/null +++ b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/edit-transaction/edit-transaction.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditTransactionComponent } from './edit-transaction.component'; + +describe('EditTransactionComponent', () => { + let component: EditTransactionComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditTransactionComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditTransactionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/edit-transaction/edit-transaction.component.ts b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/edit-transaction/edit-transaction.component.ts new file mode 100644 index 000000000..eab336c75 --- /dev/null +++ b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/edit-transaction/edit-transaction.component.ts @@ -0,0 +1,123 @@ +/** Angular Imports */ +import { Component, OnInit } from '@angular/core'; +import { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms'; +import { Router, ActivatedRoute } from '@angular/router'; +import { DatePipe } from '@angular/common'; + +/** Custom Services */ +import { RecurringDepositsService } from 'app/deposits/recurring-deposits/recurring-deposits.service'; + +/** + * Edit Transaction component. + */ +@Component({ + selector: 'mifosx-edit-transaction', + templateUrl: './edit-transaction.component.html', + styleUrls: ['./edit-transaction.component.scss'] +}) +export class EditTransactionComponent implements OnInit { + + /** Minimum Due Date allowed. */ + minDate = new Date(2000, 0, 1); + /** Maximum Due Date allowed. */ + maxDate = new Date(); + /** Recurring Deposits transaction form. */ + editTransactionForm: FormGroup; + /** Recurring Deposits transaction payment options. */ + paymentTypeOptions: { + id: number, + name: string, + description: string, + isCashPayment: boolean, + position: number + }[]; + /** Flag to enable payment details fields. */ + addPaymentDetailsFlag: Boolean = false; + /** Recurring deposit account's Id */ + recurringDepositAccountId: string; + /** Transaction Template */ + transactionTemplateData: any; + + /** + * Retrieves the Recurring Deposit Account transaction template data from `resolve`. + * @param {FormBuilder} formBuilder Form Builder. + * @param {RecurringDepositsService} recurringDepositsService Recurring Deposits Service. + * @param {ActivatedRoute} route Activated Route. + * @param {DatePipe} datePipe DatePipe. + * @param {Router} router Router for navigation. + */ + constructor(private formBuilder: FormBuilder, + private route: ActivatedRoute, + private router: Router, + private datePipe: DatePipe, + private recurringDepositsService: RecurringDepositsService) { + this.route.data.subscribe((data: { recurringDepositsAccountTransactionTemplate: any }) => { + this.transactionTemplateData = data.recurringDepositsAccountTransactionTemplate; + this.paymentTypeOptions = this.transactionTemplateData.paymentTypeOptions; + }); + this.recurringDepositAccountId = this.route.parent.parent.snapshot.params['recurringDepositAccountId']; + } + + /** + * Creates the Recurring Deposits account transaction form when component loads. + */ + ngOnInit() { + this.createEditTransactionForm(); + this.editTransactionForm.patchValue({ + 'transactionDate': this.transactionTemplateData.date && new Date(this.transactionTemplateData.date), + 'transactionAmount': this.transactionTemplateData.amount, + 'paymentTypeId': this.transactionTemplateData.paymentTypeId + }); + } + + /** + * Create Edit Recurring Deposit Account Transaction Form. + */ + createEditTransactionForm() { + this.editTransactionForm = this.formBuilder.group({ + 'transactionDate': ['', Validators.required], + 'transactionAmount': ['', Validators.required], + 'paymentTypeId': [''], + }); + } + + /** + * Add payment detail fields to the UI. + */ + addPaymentDetails() { + this.addPaymentDetailsFlag = !this.addPaymentDetailsFlag; + if (this.addPaymentDetailsFlag) { + this.editTransactionForm.addControl('accountNumber', new FormControl('')); + this.editTransactionForm.addControl('checkNumber', new FormControl('')); + this.editTransactionForm.addControl('routingCode', new FormControl('')); + this.editTransactionForm.addControl('receiptNumber', new FormControl('')); + this.editTransactionForm.addControl('bankNumber', new FormControl('')); + } else { + this.editTransactionForm.removeControl('accountNumber'); + this.editTransactionForm.removeControl('checkNumber'); + this.editTransactionForm.removeControl('routingCode'); + this.editTransactionForm.removeControl('receiptNumber'); + this.editTransactionForm.removeControl('bankNumber'); + } + } + + /** + * Submit the transaction details. + */ + submit() { + const prevTransactionDate: Date = this.editTransactionForm.value.transactionDate; + // TODO: Update once language and date settings are setup + const dateFormat = 'dd-MM-yyyy'; + this.editTransactionForm.patchValue({ + transactionDate: this.datePipe.transform(prevTransactionDate, dateFormat) + }); + const transactionData = this.editTransactionForm.value; + transactionData.locale = 'en'; + transactionData.dateFormat = dateFormat; + this.recurringDepositsService.executeRecurringDepositsAccountTransactionsCommand(this.recurringDepositAccountId, 'modify', transactionData, this.transactionTemplateData.id) + .subscribe(res => { + this.router.navigate(['../'], { relativeTo: this.route }); + }); + } + +} diff --git a/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/transactions-tab.component.html b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/transactions-tab.component.html index e921f7187..0df5b85dd 100644 --- a/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/transactions-tab.component.html +++ b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/transactions-tab.component.html @@ -37,10 +37,10 @@ - + - \ No newline at end of file + diff --git a/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/transactions-tab.component.scss b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/transactions-tab.component.scss index 587f08f74..bed2f36f2 100644 --- a/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/transactions-tab.component.scss +++ b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/transactions-tab.component.scss @@ -6,10 +6,13 @@ } table { width: 100%; + .select-row:hover { + cursor: pointer; + } } } .strike { text-decoration: line-through; color: red; -} \ No newline at end of file +} diff --git a/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/view-transaction/view-transaction.component.html b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/view-transaction/view-transaction.component.html new file mode 100644 index 000000000..ec70a30a0 --- /dev/null +++ b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/view-transaction/view-transaction.component.html @@ -0,0 +1,131 @@ +
+ + + + +
+ +
+ + + + + +
+ +
+ Transaction Id +
+ +
+ {{ transactionData.id }} +
+ +
+ Type +
+ +
+ {{ transactionData.transactionType.value }} +
+ +
+ Transaction Date +
+ +
+ {{ transactionData.date | date }} +
+ +
+ Currency +
+ +
+ {{ transactionData.currency.displayLabel }} +
+ +
+ Amount +
+ +
+ {{ transactionData.amount }} +
+ +
+ Note +
+ +
+ {{ transactionData.note }} +
+ + + +
+ Payment Type +
+ +
+ {{ transactionData.paymentDetailData.paymentType.name }} +
+ +
+ Account No. +
+ +
+ {{ transactionData.paymentDetailData.accountNumber }} +
+ +
+ Cheque Number +
+ +
+ {{ transactionData.paymentDetailData.checkNumber }} +
+ +
+ Routing Code +
+ +
+ {{ transactionData.paymentDetailData.routingCode }} +
+ +
+ Receipt No. +
+ +
+ {{ transactionData.paymentDetailData.receiptNumber }} +
+ +
+ Bank No. +
+ +
+ {{ transactionData.paymentDetailData.bankNumber }} +
+ +
+ +
+ +
+ +
+ +
diff --git a/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/view-transaction/view-transaction.component.scss b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/view-transaction/view-transaction.component.scss new file mode 100644 index 000000000..46cf44760 --- /dev/null +++ b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/view-transaction/view-transaction.component.scss @@ -0,0 +1,10 @@ +.container { + max-width: 37rem; + + .content { + div { + margin: 1rem 0; + word-wrap: break-word; + } + } +} diff --git a/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/view-transaction/view-transaction.component.spec.ts b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/view-transaction/view-transaction.component.spec.ts new file mode 100644 index 000000000..bbff0d11b --- /dev/null +++ b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/view-transaction/view-transaction.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ViewTransactionComponent } from './view-transaction.component'; + +describe('ViewTransactionComponent', () => { + let component: ViewTransactionComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ViewTransactionComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ViewTransactionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/view-transaction/view-transaction.component.ts b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/view-transaction/view-transaction.component.ts new file mode 100644 index 000000000..ff86782b1 --- /dev/null +++ b/src/app/deposits/recurring-deposits/recurring-deposits-account-view/transactions-tab/view-transaction/view-transaction.component.ts @@ -0,0 +1,68 @@ +/** Angular Imports */ +import { Component } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { MatDialog } from '@angular/material'; +import { DatePipe } from '@angular/common'; + +/** Custom Services */ +import { RecurringDepositsService } from 'app/deposits/recurring-deposits/recurring-deposits.service'; + +/** Custom Dialogs */ +import { RecurringDepositConfirmationDialogComponent } from '../../custom-dialogs/recurring-deposit-confirmation-dialog/recurring-deposit-confirmation-dialog.component'; + +/** + * View Transaction Component. + * TODO: Add support for account transfers. + */ +@Component({ + selector: 'mifosx-view-transaction', + templateUrl: './view-transaction.component.html', + styleUrls: ['./view-transaction.component.scss'] +}) +export class ViewTransactionComponent { + + /** Transaction data. */ + transactionData: any; + + /** + * Retrieves the Transaction data from `resolve`. + * @param {RecurringDepositsService} recurringDepositsService Savings Service + * @param {ActivatedRoute} route Activated Route. + * @param {Router} router Router for navigation. + * @param {MatDialog} dialog Dialog reference. + * @param {DatePipe} datePipe DatePipe. + */ + constructor(private recurringDepositsService: RecurringDepositsService, + private route: ActivatedRoute, + private datePipe: DatePipe, + private router: Router, + public dialog: MatDialog) { + this.route.data.subscribe((data: { recurringDepositsAccountTransaction: any }) => { + this.transactionData = data.recurringDepositsAccountTransaction; + }); + } + + /** + * Undo the recurring deposits transaction + */ + undoTransaction() { + const accountId = this.route.parent.snapshot.params['recurringDepositAccountId']; + const undoTransactionAccountDialogRef = this.dialog.open(RecurringDepositConfirmationDialogComponent, { data: { heading: 'Undo Transaction', dialogContext: 'Are you sure you want to undo this transaction ?' } }); + undoTransactionAccountDialogRef.afterClosed().subscribe((response: any) => { + if (response.confirm) { + const locale = 'en'; + const dateFormat = 'dd MMMM yyyy'; + const data = { + transactionDate: this.datePipe.transform(this.transactionData.date && new Date(this.transactionData.date), dateFormat), + transactionAmount: 0, + dateFormat, + locale + }; + this.recurringDepositsService.executeRecurringDepositsAccountTransactionsCommand(accountId, 'undo', data, this.transactionData.id).subscribe(() => { + this.router.navigate(['../'], { relativeTo: this.route }); + }); + } + }); + } + +} diff --git a/src/app/deposits/recurring-deposits/recurring-deposits-routing.module.ts b/src/app/deposits/recurring-deposits/recurring-deposits-routing.module.ts index 096b48fef..e7d06aefb 100644 --- a/src/app/deposits/recurring-deposits/recurring-deposits-routing.module.ts +++ b/src/app/deposits/recurring-deposits/recurring-deposits-routing.module.ts @@ -14,6 +14,8 @@ import { ChargesTabComponent } from './recurring-deposits-account-view/charges-t import { DatatableTabsComponent } from './recurring-deposits-account-view/datatable-tabs/datatable-tabs.component'; import { CreateRecurringDepositsAccountComponent } from './create-recurring-deposits-account/create-recurring-deposits-account.component'; import { RecurringDepositsAccountActionsComponent } from './recurring-deposits-account-actions/recurring-deposits-account-actions.component'; +import { ViewTransactionComponent } from './recurring-deposits-account-view/transactions-tab/view-transaction/view-transaction.component'; +import { EditTransactionComponent } from './recurring-deposits-account-view/transactions-tab/edit-transaction/edit-transaction.component'; /** Custom Resolvers */ import { RecurringDepositsAccountViewResolver } from './common-resolvers/recurring-deposits-account-view.resolver'; @@ -24,6 +26,8 @@ import { RecurringDepositsAccountTemplateResolver } from './common-resolvers/rec import { RecurringDepositsAccountActionsResolver } from './common-resolvers/recurring-deposit-account-actions.resolver'; import { EditRecurringDepositAccountComponent } from './edit-recurring-deposit-account/edit-recurring-deposit-account.component'; import { RecurringDepositsAccountAndTemplateResolver } from './common-resolvers/recurring-deposit-account-and-template.resolver'; +import { RecurringDepositsAccountTransactionResolver } from './common-resolvers/recurring-deposit-account-transaction.resolver'; +import { RecurringDepositsAccountTransactionTemplateResolver } from './common-resolvers/recurring-deposit-account-transaction-template.resolver'; const routes: Routes = [ { @@ -102,6 +106,36 @@ const routes: Routes = [ recurringDepositsAccountAndTemplate: RecurringDepositsAccountAndTemplateResolver } }, + { + path: 'transactions', + data: { title: extract('Recurring Deposits Account Transactions'), breadcrumb: 'Transactions', routeParamBreadcrumb: false }, + children: [ + { + path: '', + redirectTo: '../transactions', pathMatch: 'prefix' + }, + { + path: ':id', + data: { routeParamBreadcrumb: 'id' }, + children: [ + { + path: '', + component: ViewTransactionComponent, + resolve: { + recurringDepositsAccountTransaction: RecurringDepositsAccountTransactionResolver + } + }, + { + path: 'edit', + component: EditTransactionComponent, + resolve: { + recurringDepositsAccountTransactionTemplate: RecurringDepositsAccountTransactionTemplateResolver + } + } + ] + } + ] + }, { path: 'actions/:name', data: { title: extract('Recurring Deposits Account Actions'), routeParamBreadcrumb: 'name' }, @@ -126,7 +160,9 @@ const routes: Routes = [ SavingsDatatablesResolver, RecurringDepositsAccountTemplateResolver, RecurringDepositsAccountActionsResolver, - RecurringDepositsAccountAndTemplateResolver + RecurringDepositsAccountAndTemplateResolver, + RecurringDepositsAccountTransactionResolver, + RecurringDepositsAccountTransactionTemplateResolver ] }) export class RecurringDepositsRoutingModule {} diff --git a/src/app/deposits/recurring-deposits/recurring-deposits.module.ts b/src/app/deposits/recurring-deposits/recurring-deposits.module.ts index da97e45cd..7ecd5ec54 100644 --- a/src/app/deposits/recurring-deposits/recurring-deposits.module.ts +++ b/src/app/deposits/recurring-deposits/recurring-deposits.module.ts @@ -39,6 +39,8 @@ import { EditRecurringDepositAccountComponent } from './edit-recurring-deposit-a import { PrematureCloseRecurringDepositAccountComponent } from './recurring-deposits-account-actions/premature-close-recurring-deposit-account/premature-close-recurring-deposit-account.component'; import { CloseRecurringDepositsAccountComponent } from './recurring-deposits-account-actions/close-recurring-deposits-account/close-recurring-deposits-account.component'; import { DepositRecurringDepositsAccountComponent } from './recurring-deposits-account-actions/deposit-recurring-deposits-account/deposit-recurring-deposits-account.component'; +import { ViewTransactionComponent } from './recurring-deposits-account-view/transactions-tab/view-transaction/view-transaction.component'; +import { EditTransactionComponent } from './recurring-deposits-account-view/transactions-tab/edit-transaction/edit-transaction.component'; /** @@ -81,7 +83,9 @@ import { DepositRecurringDepositsAccountComponent } from './recurring-deposits-a EditRecurringDepositAccountComponent, PrematureCloseRecurringDepositAccountComponent, CloseRecurringDepositsAccountComponent, - DepositRecurringDepositsAccountComponent + DepositRecurringDepositsAccountComponent, + ViewTransactionComponent, + EditTransactionComponent ], entryComponents: [ RecurringDepositConfirmationDialogComponent diff --git a/src/app/deposits/recurring-deposits/recurring-deposits.service.ts b/src/app/deposits/recurring-deposits/recurring-deposits.service.ts index 29df416c2..d4dbe6db6 100644 --- a/src/app/deposits/recurring-deposits/recurring-deposits.service.ts +++ b/src/app/deposits/recurring-deposits/recurring-deposits.service.ts @@ -6,7 +6,7 @@ import { HttpClient, HttpParams } from '@angular/common/http'; import { Observable } from 'rxjs'; /** - * RecurringDeposits Service. + * Recurring Deposits Service. */ @Injectable({ providedIn: 'root' @@ -122,4 +122,35 @@ export class RecurringDepositsService { const httpParams = new HttpParams().set('command', command); return this.http.get(`/recurringdepositaccounts/${accountId}/transactions/template`, { params: httpParams }); } + /* + * @param {string} accountId Recurring Deposits Account Id + * @param {string} transactionId Transaction Id + * @returns {Observable} + */ + getRecurringDepositsAccountTransaction(accountId: string, transactionId: string): Observable { + return this.http.get(`/recurringdepositaccounts/${accountId}/transactions/${transactionId}`); + } + + /** + * @param {string} accountId Recuring Deposits Account Id + * @param {string} transactionId Transaction Id + * @returns {Observable} + */ + getRecurringDepositsAccountTransactionTemplate(accountId: string, transactionId: string): Observable { + const httpParams = new HttpParams().set('template', 'true'); + return this.http.get(`/recurringdepositaccounts/${accountId}/transactions/${transactionId}`, { params: httpParams }); + } + + /** + * @param {string} accountId Recurring Deposits Account Id + * @param {string} command Command + * @param {any} data Data + * @param {string} transactionId Transaction Id + * @returns {Observable} + */ + executeRecurringDepositsAccountTransactionsCommand(accountId: string, command: string, data: any, transactionId?: any): Observable { + const httpParams = new HttpParams().set('command', command); + return this.http.post(`/recurringdepositaccounts/${accountId}/transactions/${transactionId}`, data, { params: httpParams }); + } + }