2014-03-02 12:09:27 +00:00
|
|
|
(function (module) {
|
2013-09-27 04:56:40 +00:00
|
|
|
mifosX.controllers = _.extend(module, {
|
2015-02-25 14:12:17 +00:00
|
|
|
EditLoanAccAppController: function (scope, routeParams, resourceFactory, location, dateFilter, uiConfigService) {
|
2013-09-27 04:56:40 +00:00
|
|
|
|
|
|
|
|
scope.previewRepayment = false;
|
|
|
|
|
scope.formData = {};
|
|
|
|
|
scope.chargeFormData = {}; //For charges
|
|
|
|
|
scope.collateralFormData = {}; //For collaterals
|
|
|
|
|
scope.collaterals = [];
|
2013-11-12 10:29:06 +00:00
|
|
|
scope.restrictDate = new Date();
|
2014-09-03 10:53:04 +00:00
|
|
|
scope.date = {};
|
2013-09-27 04:56:40 +00:00
|
|
|
|
2014-05-24 12:45:09 +00:00
|
|
|
resourceFactory.loanResource.get({loanId: routeParams.id, template: true, associations: 'charges,collateral,meeting,multiDisburseDetails',staffInSelectedOfficeOnly:true}, function (data) {
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.loanaccountinfo = data;
|
2013-09-27 04:56:40 +00:00
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
resourceFactory.loanResource.get({resourceType: 'template', templateType: 'collateral', productId: data.loanProductId, fields: 'id,loanCollateralOptions'}, function (data) {
|
2013-09-27 04:56:40 +00:00
|
|
|
scope.collateralOptions = data.loanCollateralOptions || [];
|
2014-03-02 12:09:27 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (data.clientId) {
|
2013-09-27 04:56:40 +00:00
|
|
|
scope.clientId = data.clientId;
|
|
|
|
|
scope.clientName = data.clientName;
|
|
|
|
|
scope.formData.clientId = scope.clientId;
|
2014-03-02 12:09:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (data.group) {
|
2013-09-27 04:56:40 +00:00
|
|
|
scope.groupId = data.group.id;
|
|
|
|
|
scope.groupName = data.group.name;
|
|
|
|
|
scope.formData.groupId = scope.groupId;
|
2014-03-02 12:09:27 +00:00
|
|
|
}
|
2013-09-27 04:56:40 +00:00
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
if (scope.clientId && scope.groupId) {
|
|
|
|
|
scope.templateType = 'jlg';
|
|
|
|
|
}
|
|
|
|
|
else if (scope.groupId) {
|
|
|
|
|
scope.templateType = 'group';
|
|
|
|
|
}
|
|
|
|
|
else if (scope.clientId) {
|
|
|
|
|
scope.templateType = 'individual';
|
|
|
|
|
}
|
2013-09-27 04:56:40 +00:00
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.formData.loanOfficerId = data.loanOfficerId;
|
|
|
|
|
scope.formData.loanPurposeId = data.loanPurposeId;
|
2014-05-31 15:39:38 +00:00
|
|
|
scope.formData.externalId = data.externalId;
|
2013-09-27 04:56:40 +00:00
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
//update collaterals
|
|
|
|
|
if (scope.loanaccountinfo.collateral) {
|
2013-09-27 04:56:40 +00:00
|
|
|
for (var i in scope.loanaccountinfo.collateral) {
|
2014-07-10 18:26:01 +00:00
|
|
|
scope.collaterals.push({type: scope.loanaccountinfo.collateral[i].type.id, name: scope.loanaccountinfo.collateral[i].type.name, value: scope.loanaccountinfo.collateral[i].value, description: scope.loanaccountinfo.collateral[i].description});
|
2013-09-27 04:56:40 +00:00
|
|
|
}
|
2014-03-02 12:09:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
scope.previewClientLoanAccInfo();
|
2013-09-27 04:56:40 +00:00
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.loanProductChange = function (loanProductId) {
|
2013-09-27 04:56:40 +00:00
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
var inparams = { resourceType: 'template', productId: loanProductId, templateType: scope.templateType };
|
|
|
|
|
if (scope.clientId) {
|
|
|
|
|
inparams.clientId = scope.clientId;
|
|
|
|
|
}
|
|
|
|
|
if (scope.groupId) {
|
|
|
|
|
inparams.groupId = scope.groupId;
|
|
|
|
|
}
|
2013-09-27 04:56:40 +00:00
|
|
|
|
2014-05-24 12:45:09 +00:00
|
|
|
inparams.staffInSelectedOfficeOnly = true;
|
|
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
resourceFactory.loanResource.get(inparams, function (data) {
|
|
|
|
|
scope.loanaccountinfo = data;
|
|
|
|
|
scope.collaterals = [];
|
|
|
|
|
scope.previewClientLoanAccInfo();
|
|
|
|
|
});
|
2013-09-27 04:56:40 +00:00
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
resourceFactory.loanResource.get({resourceType: 'template', templateType: 'collateral', productId: loanProductId, fields: 'id,loanCollateralOptions'}, function (data) {
|
|
|
|
|
scope.collateralOptions = data.loanCollateralOptions || [];
|
|
|
|
|
});
|
2013-09-27 04:56:40 +00:00
|
|
|
}
|
|
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.previewClientLoanAccInfo = function () {
|
|
|
|
|
scope.previewRepayment = false;
|
|
|
|
|
for (var i in scope.loanaccountinfo.charges) {
|
|
|
|
|
if (scope.loanaccountinfo.charges[i].dueDate) {
|
|
|
|
|
scope.loanaccountinfo.charges[i].dueDate = new Date(scope.loanaccountinfo.charges[i].dueDate);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
scope.charges = scope.loanaccountinfo.charges || [];
|
|
|
|
|
scope.formData.disbursementData = scope.loanaccountinfo.disbursementDetails || [];
|
|
|
|
|
if (scope.formData.disbursementData.length > 0) {
|
|
|
|
|
for (var i in scope.formData.disbursementData) {
|
|
|
|
|
scope.formData.disbursementData[i].expectedDisbursementDate = new Date(scope.formData.disbursementData[i].expectedDisbursementDate);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (scope.loanaccountinfo.timeline.submittedOnDate) {
|
|
|
|
|
scope.formData.submittedOnDate = new Date(scope.loanaccountinfo.timeline.submittedOnDate);
|
|
|
|
|
}
|
|
|
|
|
if (scope.loanaccountinfo.timeline.expectedDisbursementDate) {
|
|
|
|
|
scope.formData.expectedDisbursementDate = new Date(scope.loanaccountinfo.timeline.expectedDisbursementDate);
|
|
|
|
|
}
|
|
|
|
|
if (scope.loanaccountinfo.interestChargedFromDate) {
|
|
|
|
|
scope.formData.interestChargedFromDate = new Date(scope.loanaccountinfo.interestChargedFromDate);
|
|
|
|
|
}
|
|
|
|
|
if (scope.loanaccountinfo.expectedFirstRepaymentOnDate) {
|
|
|
|
|
scope.formData.repaymentsStartingFromDate = new Date(scope.loanaccountinfo.expectedFirstRepaymentOnDate);
|
|
|
|
|
}
|
|
|
|
|
scope.multiDisburseLoan = scope.loanaccountinfo.multiDisburseLoan
|
|
|
|
|
scope.formData.productId = scope.loanaccountinfo.loanProductId;
|
|
|
|
|
scope.formData.fundId = scope.loanaccountinfo.fundId;
|
|
|
|
|
scope.formData.principal = scope.loanaccountinfo.principal;
|
|
|
|
|
scope.formData.loanTermFrequency = scope.loanaccountinfo.termFrequency;
|
|
|
|
|
scope.formData.loanTermFrequencyType = scope.loanaccountinfo.termPeriodFrequencyType.id;
|
|
|
|
|
scope.formData.numberOfRepayments = scope.loanaccountinfo.numberOfRepayments;
|
|
|
|
|
scope.formData.repaymentEvery = scope.loanaccountinfo.repaymentEvery;
|
|
|
|
|
scope.formData.repaymentFrequencyType = scope.loanaccountinfo.repaymentFrequencyType.id;
|
|
|
|
|
scope.formData.interestRatePerPeriod = scope.loanaccountinfo.interestRatePerPeriod;
|
|
|
|
|
scope.formData.interestRateFrequencyType = scope.loanaccountinfo.interestRateFrequencyType.id;
|
|
|
|
|
scope.formData.amortizationType = scope.loanaccountinfo.amortizationType.id;
|
|
|
|
|
scope.formData.interestType = scope.loanaccountinfo.interestType.id;
|
|
|
|
|
scope.formData.interestCalculationPeriodType = scope.loanaccountinfo.interestCalculationPeriodType.id;
|
|
|
|
|
scope.formData.inArrearsTolerance = scope.loanaccountinfo.inArrearsTolerance;
|
|
|
|
|
scope.formData.graceOnPrincipalPayment = scope.loanaccountinfo.graceOnPrincipalPayment;
|
|
|
|
|
scope.formData.graceOnInterestPayment = scope.loanaccountinfo.graceOnInterestPayment;
|
2014-03-12 07:01:19 +00:00
|
|
|
scope.formData.graceOnArrearsAgeing = scope.loanaccountinfo.graceOnArrearsAgeing;
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.formData.transactionProcessingStrategyId = scope.loanaccountinfo.transactionProcessingStrategyId;
|
|
|
|
|
scope.formData.graceOnInterestCharged = scope.loanaccountinfo.graceOnInterestCharged;
|
|
|
|
|
scope.formData.syncDisbursementWithMeeting = scope.loanaccountinfo.syncDisbursementWithMeeting;
|
|
|
|
|
scope.formData.fixedEmiAmount = scope.loanaccountinfo.fixedEmiAmount;
|
|
|
|
|
scope.formData.maxOutstandingLoanBalance = scope.loanaccountinfo.maxOutstandingLoanBalance;
|
2014-11-20 20:30:09 +00:00
|
|
|
scope.formData.createStandingInstructionAtDisbursement = scope.loanaccountinfo.createStandingInstructionAtDisbursement;
|
2014-03-02 12:09:27 +00:00
|
|
|
|
|
|
|
|
if (scope.loanaccountinfo.meeting) {
|
|
|
|
|
scope.formData.syncRepaymentsWithMeeting = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (scope.loanaccountinfo.linkedAccount) {
|
|
|
|
|
scope.formData.linkAccountId = scope.loanaccountinfo.linkedAccount.id;
|
2013-10-18 11:17:08 +00:00
|
|
|
}
|
2014-09-03 10:53:04 +00:00
|
|
|
if (scope.loanaccountinfo.isInterestRecalculationEnabled && scope.loanaccountinfo.interestRecalculationData.recalculationRestFrequencyDate) {
|
|
|
|
|
scope.date.recalculationRestFrequencyDate = new Date(scope.loanaccountinfo.interestRecalculationData.recalculationRestFrequencyDate);
|
|
|
|
|
}
|
2013-09-27 04:56:40 +00:00
|
|
|
}
|
2014-03-02 12:09:27 +00:00
|
|
|
|
|
|
|
|
scope.addCharge = function () {
|
|
|
|
|
if (scope.chargeFormData.chargeId) {
|
|
|
|
|
resourceFactory.chargeResource.get({chargeId: this.chargeFormData.chargeId, template: 'true'}, function (data) {
|
|
|
|
|
data.chargeId = data.id;
|
|
|
|
|
data.id = null;
|
|
|
|
|
data.amountOrPercentage = data.amount;
|
|
|
|
|
scope.charges.push(data);
|
|
|
|
|
scope.chargeFormData.chargeId = undefined;
|
|
|
|
|
});
|
|
|
|
|
}
|
2013-09-27 04:56:40 +00:00
|
|
|
}
|
|
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.deleteCharge = function (index) {
|
|
|
|
|
scope.charges.splice(index, 1);
|
2013-09-27 04:56:40 +00:00
|
|
|
}
|
|
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.addTranches = function () {
|
|
|
|
|
scope.formData.disbursementData.push({
|
|
|
|
|
});
|
2014-01-28 05:25:55 +00:00
|
|
|
};
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.deleteTranches = function (index) {
|
|
|
|
|
scope.formData.disbursementData.splice(index, 1);
|
2014-01-28 05:25:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.syncRepaymentsWithMeetingchange = function () {
|
|
|
|
|
if (!scope.formData.syncRepaymentsWithMeeting) {
|
|
|
|
|
scope.formData.syncDisbursementWithMeeting = false;
|
|
|
|
|
}
|
2013-09-27 04:56:40 +00:00
|
|
|
};
|
|
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.syncDisbursementWithMeetingchange = function () {
|
|
|
|
|
if (scope.formData.syncDisbursementWithMeeting) {
|
|
|
|
|
scope.formData.syncRepaymentsWithMeeting = true;
|
|
|
|
|
}
|
2013-09-27 04:56:40 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
scope.addCollateral = function () {
|
2014-03-02 12:09:27 +00:00
|
|
|
if (scope.collateralFormData.collateralIdTemplate && scope.collateralFormData.collateralValueTemplate) {
|
|
|
|
|
scope.collaterals.push({type: scope.collateralFormData.collateralIdTemplate.id, name: scope.collateralFormData.collateralIdTemplate.name, value: scope.collateralFormData.collateralValueTemplate, description: scope.collateralFormData.collateralDescriptionTemplate});
|
|
|
|
|
scope.collateralFormData.collateralIdTemplate = undefined;
|
|
|
|
|
scope.collateralFormData.collateralValueTemplate = undefined;
|
|
|
|
|
scope.collateralFormData.collateralDescriptionTemplate = undefined;
|
|
|
|
|
}
|
2013-09-27 04:56:40 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
scope.deleteCollateral = function (index) {
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.collaterals.splice(index, 1);
|
2013-09-27 04:56:40 +00:00
|
|
|
};
|
|
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.previewRepayments = function () {
|
|
|
|
|
// Make sure charges and collaterals are empty before initializing.
|
2013-09-27 04:56:40 +00:00
|
|
|
delete scope.formData.charges;
|
|
|
|
|
delete scope.formData.collateral;
|
|
|
|
|
|
|
|
|
|
if (scope.charges.length > 0) {
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.formData.charges = [];
|
|
|
|
|
for (var i in scope.charges) {
|
|
|
|
|
scope.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amountOrPercentage, dueDate: dateFilter(scope.charges[i].dueDate, scope.df) });
|
|
|
|
|
}
|
2013-09-27 04:56:40 +00:00
|
|
|
}
|
|
|
|
|
|
2014-01-28 05:25:55 +00:00
|
|
|
if (scope.formData.disbursementData.length > 0) {
|
2014-03-02 12:09:27 +00:00
|
|
|
for (var i in scope.formData.disbursementData) {
|
2014-12-08 21:16:15 +00:00
|
|
|
scope.formData.disbursementData[i].expectedDisbursementDate = dateFilter(scope.formData.disbursementData[i].expectedDisbursementDate, scope.df);
|
2014-03-02 12:09:27 +00:00
|
|
|
}
|
2014-01-28 05:25:55 +00:00
|
|
|
}
|
|
|
|
|
|
2013-09-27 04:56:40 +00:00
|
|
|
if (scope.collaterals.length > 0) {
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.formData.collateral = [];
|
|
|
|
|
for (var i in scope.collaterals) {
|
|
|
|
|
scope.formData.collateral.push({type: scope.collaterals[i].type, value: scope.collaterals[i].value, description: scope.collaterals[i].description});
|
|
|
|
|
}
|
|
|
|
|
;
|
2013-09-27 04:56:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.formData.syncRepaymentsWithMeeting) {
|
2014-03-02 12:09:27 +00:00
|
|
|
this.formData.calendarId = scope.loanaccountinfo.calendarOptions[0].id;
|
|
|
|
|
scope.syncRepaymentsWithMeeting = this.formData.syncRepaymentsWithMeeting;
|
2013-09-27 04:56:40 +00:00
|
|
|
}
|
|
|
|
|
delete this.formData.syncRepaymentsWithMeeting;
|
|
|
|
|
|
2013-12-30 14:03:40 +00:00
|
|
|
this.formData.locale = scope.optlang.code;
|
|
|
|
|
this.formData.dateFormat = scope.df;
|
2013-09-27 04:56:40 +00:00
|
|
|
this.formData.loanType = scope.templateType;
|
2014-03-02 12:09:27 +00:00
|
|
|
this.formData.expectedDisbursementDate = dateFilter(this.formData.expectedDisbursementDate, scope.df);
|
|
|
|
|
this.formData.interestChargedFromDate = dateFilter(this.formData.interestChargedFromDate, scope.df);
|
|
|
|
|
this.formData.repaymentsStartingFromDate = dateFilter(this.formData.repaymentsStartingFromDate, scope.df);
|
|
|
|
|
|
|
|
|
|
resourceFactory.loanResource.save({command: 'calculateLoanSchedule'}, this.formData, function (data) {
|
|
|
|
|
scope.repaymentscheduleinfo = data;
|
|
|
|
|
scope.previewRepayment = true;
|
|
|
|
|
scope.formData.syncRepaymentsWithMeeting = scope.syncRepaymentsWithMeeting;
|
|
|
|
|
});
|
2013-09-27 04:56:40 +00:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-25 14:12:17 +00:00
|
|
|
|
|
|
|
|
uiConfigService.appendConfigToScope(scope);
|
|
|
|
|
|
|
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.submit = function () {
|
2013-09-27 04:56:40 +00:00
|
|
|
// Make sure charges and collaterals are empty before initializing.
|
|
|
|
|
delete scope.formData.charges;
|
|
|
|
|
delete scope.formData.collateral;
|
|
|
|
|
|
2014-01-28 05:25:55 +00:00
|
|
|
if (scope.formData.disbursementData.length > 0) {
|
2014-03-02 12:09:27 +00:00
|
|
|
for (var i in scope.formData.disbursementData) {
|
2014-12-08 23:21:39 +00:00
|
|
|
scope.formData.disbursementData[i].expectedDisbursementDate = dateFilter(scope.formData.disbursementData[i].expectedDisbursementDate, scope.df);
|
2014-03-02 12:09:27 +00:00
|
|
|
}
|
2014-01-28 05:25:55 +00:00
|
|
|
}
|
|
|
|
|
|
2014-02-26 07:31:08 +00:00
|
|
|
scope.formData.charges = [];
|
2013-09-27 04:56:40 +00:00
|
|
|
if (scope.charges.length > 0) {
|
2014-03-02 12:09:27 +00:00
|
|
|
for (var i in scope.charges) {
|
|
|
|
|
scope.formData.charges.push({id: scope.charges[i].id, chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amountOrPercentage, dueDate: dateFilter(scope.charges[i].dueDate, scope.df) });
|
|
|
|
|
}
|
2013-09-27 04:56:40 +00:00
|
|
|
}
|
|
|
|
|
|
2014-02-26 07:31:08 +00:00
|
|
|
scope.formData.collateral = [];
|
2013-09-27 04:56:40 +00:00
|
|
|
if (scope.collaterals.length > 0) {
|
2014-03-02 12:09:27 +00:00
|
|
|
for (var i in scope.collaterals) {
|
|
|
|
|
scope.formData.collateral.push({type: scope.collaterals[i].type, value: scope.collaterals[i].value, description: scope.collaterals[i].description});
|
|
|
|
|
}
|
|
|
|
|
;
|
2013-09-27 04:56:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.formData.syncRepaymentsWithMeeting) {
|
2014-03-02 12:09:27 +00:00
|
|
|
this.formData.calendarId = scope.loanaccountinfo.calendarOptions[0].id;
|
2013-09-27 04:56:40 +00:00
|
|
|
}
|
|
|
|
|
delete this.formData.syncRepaymentsWithMeeting;
|
|
|
|
|
delete this.formData.interestRateFrequencyType;
|
|
|
|
|
|
2013-12-30 14:03:40 +00:00
|
|
|
this.formData.locale = scope.optlang.code;
|
|
|
|
|
this.formData.dateFormat = scope.df;
|
2013-09-27 04:56:40 +00:00
|
|
|
this.formData.loanType = scope.templateType;
|
2014-03-02 12:09:27 +00:00
|
|
|
this.formData.expectedDisbursementDate = dateFilter(this.formData.expectedDisbursementDate, scope.df);
|
|
|
|
|
this.formData.submittedOnDate = dateFilter(this.formData.submittedOnDate, scope.df);
|
|
|
|
|
this.formData.interestChargedFromDate = dateFilter(this.formData.interestChargedFromDate, scope.df);
|
|
|
|
|
this.formData.repaymentsStartingFromDate = dateFilter(this.formData.repaymentsStartingFromDate, scope.df);
|
2014-11-20 20:30:09 +00:00
|
|
|
this.formData.createStandingInstructionAtDisbursement = scope.formData.createStandingInstructionAtDisbursement;
|
2014-09-03 10:53:04 +00:00
|
|
|
if (scope.date.recalculationRestFrequencyDate) {
|
|
|
|
|
var restFrequencyDate = dateFilter(scope.date.recalculationRestFrequencyDate, scope.df);
|
|
|
|
|
scope.formData.recalculationRestFrequencyDate = restFrequencyDate;
|
|
|
|
|
}
|
2014-03-02 12:09:27 +00:00
|
|
|
resourceFactory.loanResource.put({loanId: routeParams.id}, this.formData, function (data) {
|
|
|
|
|
location.path('/viewloanaccount/' + data.loanId);
|
2013-09-27 04:56:40 +00:00
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2014-03-02 12:09:27 +00:00
|
|
|
scope.cancel = function () {
|
|
|
|
|
location.path('/viewloanaccount/' + routeParams.id);
|
2013-09-27 04:56:40 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
2015-02-25 14:12:17 +00:00
|
|
|
mifosX.ng.application.controller('EditLoanAccAppController', ['$scope', '$routeParams', 'ResourceFactory', '$location', 'dateFilter', 'UIConfigService', mifosX.controllers.EditLoanAccAppController]).run(function ($log) {
|
2013-09-27 04:56:40 +00:00
|
|
|
$log.info("EditLoanAccAppController initialized");
|
|
|
|
|
});
|
|
|
|
|
}(mifosX.controllers || {}));
|