mirror of
https://github.com/openMF/community-app.git
synced 2026-02-06 14:26:51 +00:00
Advanced deposit products and accounts (FD & RD) with interest rate slabs
This commit is contained in:
parent
72bbe33794
commit
0175498d05
@ -127,6 +127,8 @@
|
||||
"label.input.dateformat":"Date format",
|
||||
"label.input.savingsaccount":"Default Savings Account",
|
||||
"label.input.no.decimalplaces":"No decimalplaces",
|
||||
"label.input.gender":"Gender",
|
||||
"label.input.dateofbirth":"Date of Birth",
|
||||
|
||||
"#Buttons": "..",
|
||||
"label.button.previous": "Previous",
|
||||
@ -165,6 +167,7 @@
|
||||
"label.button.summary": "Summary",
|
||||
"label.button.updatedefaultsavings":"Update Default Savings",
|
||||
|
||||
|
||||
"#Misc Labels": "..",
|
||||
"label.uniquelyidentifiedwithid": "Uniquely identified with Id",
|
||||
"label.belongsto": "Belongs To",
|
||||
@ -1305,7 +1308,7 @@
|
||||
|
||||
"-------": "------------",
|
||||
|
||||
"#Savings": "....",
|
||||
"#Savings and Deposit accounts": "....",
|
||||
|
||||
"#Headings": "..",
|
||||
"label.heading.approvesavingaccount": "Approve Saving Account",
|
||||
@ -1343,12 +1346,42 @@
|
||||
"label.heading.calculationtype": "Calculation Type",
|
||||
"label.heading.assets": "Assets",
|
||||
"label.heading.activatedon":"Activated On",
|
||||
"label.heading.editfixeddepositapplication":"Edit Fixed Deposit application",
|
||||
"label.heading.fixeddepositapplication":"Fixed Deposit application",
|
||||
"label.heading.rejectfixeddepositaccount":"Reject Fixed Deposit application",
|
||||
"label.heading.approvefixeddepositaccount":"Approve Fixed Deposit application",
|
||||
"label.heading.withdrawnfixeddepositaccount":"Withdraw Fixed Deposit application",
|
||||
"label.heading.undoapprovefixeddepositaccount":"Undo approval of Fixed Deposit application",
|
||||
"label.heading.activatefixeddepositaccount":"Activate Fixed Deposit account",
|
||||
"label.heading.recurringdepositapplication":"Recurring Deposit Application",
|
||||
"label.heading.editrecurringdepositapplication":"Edit Recurring Deposit Application",
|
||||
"label.heading.rejectrecurringdepositaccount":"Reject Recurring Deposit application",
|
||||
"label.heading.approverecurringdepositaccount":"Approve Recurring Deposit application",
|
||||
"label.heading.withdrawnrecurringdepositaccount":"Withdraw Recurring Deposit application",
|
||||
"label.heading.undoapproverecurringdepositaccount":"Undo approval of Recurring Deposit application",
|
||||
"label.heading.activaterecurringdepositaccount":"Activate Recurring Deposit account",
|
||||
"label.heading.depositmoneytorecurringaccount":"Deposit Money to Recurring Deposit Account",
|
||||
"label.heading.prematureclosefixeddepositaccount":"Premature Closure of Fixed Deposit Account",
|
||||
"label.heading.closefixeddepositaccount":"Fixed Deposit Closure on Maturity",
|
||||
"label.heading.closerecurringdepositaccount":"Recurring Deposit Closure on Maturity",
|
||||
"label.heading.editrecurringdepositaccounttransaction":"Edit Recurring Account Transaction",
|
||||
"label.heading.editfixeddepositaccounttransaction":"Edit Fixed Deposit Account Transaction",
|
||||
|
||||
|
||||
"#Anchors": "..",
|
||||
"label.anchor.addsavingcharges": "Add Saving Charges",
|
||||
"label.anchor.viewsavingaccount": "View Saving Account",
|
||||
"label.anchor.editsavingapplication": "Edit Saving Application",
|
||||
"label.anchor.savingapplication": "Saving Application",
|
||||
"label.anchor.editfixeddepositapplication":"Edit Fixed Deposit Application",
|
||||
"label.anchor.viewfixeddepositaccount":"View Fixed Deposit Account",
|
||||
"label.anchor.fixeddepositapplication":"Fixed Deposit Application",
|
||||
"label.anchor.recurringdepositapplication":"Recurring Deposit Application",
|
||||
"label.anchor.viewrecurringdepositaccount":"View Recurring Deposit Account",
|
||||
"label.anchor.editrecurringdepositapplication":"Edit Recurring Deposit Application",
|
||||
"label.anchor.add.fixed.deposit.charges":"Add Fixed Deposit Charge",
|
||||
"label.anchor.add.recurring.deposit.charges":"Add Recurring Deposit Charge",
|
||||
|
||||
|
||||
"#Inputs": "..",
|
||||
"label.input.charges": "Charges",
|
||||
@ -1391,8 +1424,15 @@
|
||||
"label.input.duedate": "Due date",
|
||||
"label.input.loanpurpose": "Loan purpose",
|
||||
"label.input.months":"months",
|
||||
"label.input.depositamount":"Deposit Amount",
|
||||
"label.input.depositperiod":"Deposit Period",
|
||||
"label.input.recurring.deposit.amount":"Recurring Deposit Amount",
|
||||
"label.input.onAccountClosure":"Action",
|
||||
"label.input.preMatureCloseOnDate":"Pre Mature Close Date",
|
||||
"label.input.transfer.to.savings":"Transfer to Savings",
|
||||
"label.input.transfer.description":"Transfer Description",
|
||||
|
||||
"#Buttons": "..",
|
||||
"#Buttons": "..",
|
||||
"label.button.undo": "Undo",
|
||||
"label.button.modifyapplication": "Modify Application",
|
||||
"label.button.withdrawnbyclient": "Withdrawn by client",
|
||||
@ -1406,10 +1446,13 @@
|
||||
"label.button.loanscreenreport": "Loan Screen Reports",
|
||||
"label.button.paycharge":"Pay Charge",
|
||||
"label.button.waivecharge":"Waive Charge",
|
||||
"label.button.prematureClose":"Premature Close",
|
||||
|
||||
"#Misc Labels": "..",
|
||||
"label.selectcharge": "Select charge",
|
||||
"label.selectsavingproduct": "Select saving product",
|
||||
"label.selectfixeddepositproduct": "Select Fixed Deposit Product",
|
||||
"label.selectrecurringdepositproduct":"Select Recurring Deposit Product",
|
||||
"label.selectloanofficer": "Select loan officer",
|
||||
"label.totaldeposits": "Total Deposits",
|
||||
"label.totalwithdarawals": "Total withdrawals",
|
||||
@ -1427,6 +1470,20 @@
|
||||
"label.on": "on",
|
||||
"label.annaulfeedueon": "Annual fee (due on)",
|
||||
"label.selectfieldofficer":"Select field officer",
|
||||
"label.minimumdepositterm.and.inmultiplesof":"Minimum Deposit Term",
|
||||
"label.maximumdepositterm":"Maximum Deposit Term",
|
||||
"label.interestfreetoperiod":"Period when interest will not be paid",
|
||||
"label.preclosurepenal":"Apply penal interest (less) for Preclosure",
|
||||
"label.newfixeddepositaccount":"New Fixed Deposit",
|
||||
"label.newrecurringdepositaccount":"New Recurring Deposit",
|
||||
"label.recurringdeposittype":"Recurring Deposit Type",
|
||||
"label.recurring.deposit.amount":"Recurring Deposit Amount",
|
||||
"label.recurring.deposit.every":"Recurring Deposit Frequency",
|
||||
"label.depositAmount":"Deposit Amount",
|
||||
"label.maturityAmount":"Maturity amount",
|
||||
"label.depositPeriod":"Deposit Period",
|
||||
"label.maturityDate":"Maturity Date",
|
||||
"label.actual.totalDeposits":"Actula total Deposits",
|
||||
|
||||
"#Enumeration & Error Messages": "..",
|
||||
"savings.interest.rate.savingsPeriodFrequencyType.days": "Per day",
|
||||
@ -1998,6 +2055,28 @@
|
||||
"label.heading.numerOfRepaymentCycleVariations":"# of Repayments for Borrower Cycle ",
|
||||
"label.heading.errorlog":"Error Log",
|
||||
"label.heading.product":"Product",
|
||||
"label.heading.interestchart":"Interest Rate Chart",
|
||||
"label.heading.interestratechart.valid.from":"Valid From Date",
|
||||
"label.heading.interestratechart.valid.to":"End Date",
|
||||
"label.heading.interestratecharts":"Interest Rate Chart details",
|
||||
"label.heading.editinterestratechart":"Edit Interest Rate Chart",
|
||||
"label.heading.interestratedetails.period.type":"Period Type",
|
||||
"label.heading.interestratedetails.period.from.to":"Period From / To",
|
||||
"label.heading.interestratedetails.amount.range":"Amount Range",
|
||||
"label.heading.interestratedetails.interest":"Interest",
|
||||
"label.heading.interestratedetails.description":"Description",
|
||||
"label.heading.interestratecharts":"Interest Rate Charts",
|
||||
"label.heading.interestfreeperiodapplicable":"Period when interest will not be paid",
|
||||
"label.heading.preclosurepenalapplicable":"Apply penal interest (less)",
|
||||
"label.heading.recurringdeposittype":"Recurring Deposit Type",
|
||||
"label.heading.recurringdepositfrequency":"Recurring Deposit Frequency",
|
||||
"label.heading.minimumdepositterm":"Minimum Deposit Term",
|
||||
"label.heading.maximumdepositterm":"Maximum Deposit Term",
|
||||
"label.heading.deposittermtype":"Deposit Term Frequency",
|
||||
"label.heading.inmultiplesofdeposit":"Deposit Term In multiple of",
|
||||
"label.heading.createinterestratechart":"Create Interest Rate Chart",
|
||||
"label.heading.prematurecloserecurringdepositaccount":"Premature Closure of Recurring Deposit",
|
||||
|
||||
|
||||
"#Anchors": "..",
|
||||
"label.anchor.products": "Products",
|
||||
@ -2011,6 +2090,18 @@
|
||||
"label.anchor.editloanproduct": "Edit Loan Product",
|
||||
"label.anchor.editsavingproduct": "Edit Saving Product",
|
||||
"label.anchor.productsmix": "Products Mix",
|
||||
"label.anchor.fixeddepositproducts": "Fixed Deposit Products",
|
||||
"label.anchor.interestratechartviewedit":"View / Edit Interest Rate Charts",
|
||||
"label.anchor.interestratecharts":"Interest Rate Charts",
|
||||
"label.add.row":"Add",
|
||||
"label.remove.row":"Remove",
|
||||
"label.anchor.createfixeddepositproduct":"Create Fixed Deposit Product",
|
||||
"label.anchor.editfixeddepositproduct":"Edit Fixed Deposit",
|
||||
"label.anchor.createinterestratechart":"Create Interest Rate Chart",
|
||||
"label.anchor.recurringdepositproducts":"Recurring Deposit Products",
|
||||
"label.anchor.editrecurringdepositproduct":"Edit Recurring Deposit Product",
|
||||
"label.anchor.createrecurringdepositproduct":"Create Recurring Deposit Product",
|
||||
|
||||
|
||||
"#Inputs": "..",
|
||||
"label.input.selectproduct": "Select product",
|
||||
@ -2070,12 +2161,27 @@
|
||||
"label.input.decimalplaces":"Decimal places",
|
||||
"label.input.applywithdrawalfeefortransfers":"Apply withdrawal fee for transfers",
|
||||
"label.input.savingstransfersinsuspenpense":"Savings transfers in suspense",
|
||||
"label.input.interestratechart.name":"Name",
|
||||
"label.input.interestratechart.description":"Description",
|
||||
"label.input.interestratechart.valid.from":"Valid From Date",
|
||||
"label.input.interestratechart.valid.to":"End Date",
|
||||
"label.checkbox.interestfreeperiodapplicable":"Period when interest will not be paid",
|
||||
"label.checkbox.applypreclosurepenalinterest":"Apply penal interest (less)",
|
||||
"label.input.recurringdepositamount":"Deposit Amount",
|
||||
"label.input.recurringdepositfrequency":"Deposit Every",
|
||||
"label.select.recurringdeposittype":"Recurring Deposit Type",
|
||||
"label.input.minimumdepositterm":"Minimum Deposit Term",
|
||||
"label.input.maximumdepositterm":"Maximum Deposit Term",
|
||||
"label.input.inmultiplesof":"And thereafter, In Multiples of",
|
||||
|
||||
"#Buttons": "..",
|
||||
"label.button.createcharge": "Create Charge",
|
||||
"label.button.createloanproduct": "Create Loan Product",
|
||||
"label.button.createsavingproduct": "Create Saving Product",
|
||||
"label.button.top": "Top",
|
||||
"label.button.createinterestratechart":"Create Interest rate chart",
|
||||
"label.button.createfixeddepositproduct":"Create Fixed Deposit Product",
|
||||
"label.button.createrecurringdepositproduct":"Create Recurring Deposit Product",
|
||||
|
||||
"#Misc Labels": "..",
|
||||
"label.selectproduct": "Select Product",
|
||||
@ -2085,6 +2191,10 @@
|
||||
"label.addnewsavingproductor": "Add new saving product or modify or inactivate saving product",
|
||||
"label.definesrulesfortakingmul": "Defines rules for taking multiple rules",
|
||||
"label.notprovided":"Not provided",
|
||||
"label.fixeddepositproduct.def":"Add, modify or inactivate a Fixed deposit product",
|
||||
"label.prematureclosure":"For Pre-mature Closure:",
|
||||
"label.recurringdepositproduct.def":"Add, modify or inactivate a Recurring Deposit product",
|
||||
|
||||
|
||||
"#Enumeration & Error Messages": "..",
|
||||
"chargeAppliesTo.loan": "Loan",
|
||||
@ -2318,6 +2428,7 @@
|
||||
"error.msg.product.loan.duplicate.short.name":"Loan product with short name {{params[0].value}} already exists.",
|
||||
"error.msg.product.savings.duplicate.short.name":"Savings product with short name {{params[0].value}} already exists.",
|
||||
|
||||
|
||||
"------------------": "------------",
|
||||
|
||||
"#Admin-Products": "....",
|
||||
|
||||
@ -15,6 +15,7 @@
|
||||
scope.staffs = data.staffOptions;
|
||||
scope.formData.officeId = scope.offices[0].id;
|
||||
scope.savingproducts = data.savingProductOptions;
|
||||
scope.genderOptions = data.genderOptions;
|
||||
if (data.savingProductOptions.length > 0) {
|
||||
scope.showSavingOptions = true;
|
||||
}
|
||||
@ -45,11 +46,16 @@
|
||||
this.formData.dateFormat = scope.df;
|
||||
this.formData.activationDate = reqDate;
|
||||
|
||||
|
||||
if (scope.first.submitondate) {
|
||||
reqDate = dateFilter(scope.first.submitondate, scope.df);
|
||||
this.formData.submittedOnDate = reqDate;
|
||||
}
|
||||
|
||||
if (scope.first.dateOfBirth) {
|
||||
this.formData.dateOfBirth = dateFilter(scope.first.dateOfBirth, scope.df);
|
||||
}
|
||||
|
||||
if (!scope.opensavingsproduct) {
|
||||
this.formData.savingsProductId = null;
|
||||
}
|
||||
|
||||
@ -12,8 +12,14 @@
|
||||
scope.routeToLoan = function (id) {
|
||||
location.path('/viewloanaccount/' + id);
|
||||
};
|
||||
scope.routeToSaving = function (id) {
|
||||
location.path('/viewsavingaccount/' + id);
|
||||
scope.routeToSaving = function (id, depositTypeCode) {
|
||||
if (depositTypeCode === "depositAccountType.savingsDeposit"){
|
||||
location.path('/viewsavingaccount/' + id);
|
||||
}else if (depositTypeCode === "depositAccountType.fixedDeposit"){
|
||||
location.path('/viewfixeddepositaccount/' + id);
|
||||
}else if (depositTypeCode === "depositAccountType.recurringDeposit"){
|
||||
location.path('/viewrecurringdepositaccount/' + id);
|
||||
}
|
||||
};
|
||||
scope.haveFile = [];
|
||||
resourceFactory.clientResource.get({clientId: routeParams.id}, function (data) {
|
||||
@ -140,6 +146,7 @@
|
||||
scope.isSavingClosed = function (savingaccount) {
|
||||
if (savingaccount.status.code === "savingsAccountStatusType.withdrawn.by.applicant" ||
|
||||
savingaccount.status.code === "savingsAccountStatusType.closed" ||
|
||||
savingaccount.status.code === "savingsAccountStatusType.pre.mature.closure" ||
|
||||
savingaccount.status.code === "savingsAccountStatusType.rejected") {
|
||||
return true;
|
||||
} else {
|
||||
@ -286,6 +293,7 @@
|
||||
scope.isSavingNotClosed = function (savingaccount) {
|
||||
if (savingaccount.status.code === "savingsAccountStatusType.withdrawn.by.applicant" ||
|
||||
savingaccount.status.code === "savingsAccountStatusType.closed" ||
|
||||
savingaccount.status.code === "savingsAccountStatusType.pre.mature.closure" ||
|
||||
savingaccount.status.code === "savingsAccountStatusType.rejected") {
|
||||
return false;
|
||||
} else {
|
||||
@ -412,4 +420,4 @@
|
||||
mifosX.ng.application.controller('ViewClientController', ['$scope', '$routeParams', '$route', '$location', 'ResourceFactory', '$http', '$modal', 'API_VERSION', '$rootScope', '$upload', mifosX.controllers.ViewClientController]).run(function ($log) {
|
||||
$log.info("ViewClientController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
}(mifosX.controllers || {}));
|
||||
|
||||
@ -0,0 +1,54 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
AddNewFixedDepositChargeController: function (scope, resourceFactory, location, routeParams, dateFilter) {
|
||||
scope.offices = [];
|
||||
scope.cancelRoute = routeParams.id;
|
||||
scope.date = {};
|
||||
|
||||
resourceFactory.savingsChargeResource.get({accountId: routeParams.id, resourceType: 'template'}, function (data) {
|
||||
scope.chargeOptions = data.chargeOptions;
|
||||
});
|
||||
|
||||
scope.chargeSelected = function (id) {
|
||||
resourceFactory.chargeResource.get({chargeId: id, template: 'true'}, function (data) {
|
||||
scope.chargeCalculationType = data.chargeCalculationType.id;
|
||||
scope.chargeTimeType = data.chargeTimeType.id;
|
||||
scope.chargeDetails = data;
|
||||
scope.formData.amount = data.amount;
|
||||
scope.withDrawCharge = data.chargeTimeType.value === "Withdrawal Fee" ? true : false;
|
||||
scope.formData.feeInterval = data.feeInterval;
|
||||
if (data.chargeTimeType.value === "Annual Fee" || data.chargeTimeType.value === "Monthly Fee") {
|
||||
scope.chargeTimeTypeAnnualOrMonth = true;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
scope.submit = function () {
|
||||
this.formData.locale = "en";
|
||||
if (scope.withDrawCharge !== true) {
|
||||
if (scope.chargeTimeTypeAnnualOrMonth === true) {
|
||||
this.formData.monthDayFormat = "dd MMMM";
|
||||
if (scope.date.due) {
|
||||
this.formData.feeOnMonthDay = dateFilter(scope.date.due, 'dd MMMM');
|
||||
} else {
|
||||
this.formData.feeOnMonthDay = "";
|
||||
}
|
||||
} else {
|
||||
this.formData.dateFormat = "dd MMMM yyyy";
|
||||
if (scope.date.specificduedate) {
|
||||
this.formData.dueDate = dateFilter(scope.date.specificduedate, scope.df);
|
||||
} else {
|
||||
this.formData.dueDate = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
resourceFactory.savingsChargeResource.save({accountId: routeParams.id}, this.formData, function (data) {
|
||||
location.path('/viewfixeddepositaccount/' + routeParams.id);
|
||||
});
|
||||
};
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('AddNewFixedDepositChargeController', ['$scope', 'ResourceFactory', '$location', '$routeParams', 'dateFilter', mifosX.controllers.AddNewFixedDepositChargeController]).run(function ($log) {
|
||||
$log.info("AddNewFixedDepositChargeController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,305 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
CreateFixedDepositAccountController: function (scope, resourceFactory, location, routeParams, dateFilter) {
|
||||
scope.products = [];
|
||||
scope.fieldOfficers = [];
|
||||
scope.formData = {};
|
||||
scope.restrictDate = new Date();
|
||||
scope.clientId = routeParams.clientId;
|
||||
scope.groupId = routeParams.groupId;
|
||||
if (routeParams.centerEntity) {
|
||||
scope.centerEntity = true;
|
||||
}
|
||||
|
||||
//interest rate chart details
|
||||
scope.chart = {};
|
||||
scope.fromDate = {}; //required for date formatting
|
||||
scope.endDate = {};//required for date formatting
|
||||
|
||||
scope.charges = [];
|
||||
scope.inparams = {};
|
||||
if (scope.clientId) {
|
||||
scope.inparams.clientId = scope.clientId
|
||||
}
|
||||
;
|
||||
if (scope.groupId) {
|
||||
scope.inparams.groupId = scope.groupId
|
||||
}
|
||||
;
|
||||
if (scope.centerId) {
|
||||
scope.inparams.centerId = scope.centerId
|
||||
}
|
||||
;
|
||||
|
||||
resourceFactory.fixedDepositAccountTemplateResource.get(scope.inparams, function (data) {
|
||||
scope.products = data.productOptions;
|
||||
scope.chargeOptions = data.chargeOptions;
|
||||
scope.clientName = data.clientName;
|
||||
scope.groupName = data.groupName;
|
||||
});
|
||||
|
||||
scope.changeProduct = function () {
|
||||
scope.inparams.productId = scope.formData.productId;
|
||||
resourceFactory.fixedDepositAccountTemplateResource.get(scope.inparams, function (data) {
|
||||
|
||||
scope.data = data;
|
||||
scope.charges = data.charges;
|
||||
|
||||
for (var i in scope.charges) {
|
||||
if (scope.charges[i].chargeTimeType.value === "Annual Fee" && scope.charges[i].feeOnMonthDay) {
|
||||
scope.charges[i].feeOnMonthDay.push('2013');
|
||||
scope.charges[i].feeOnMonthDay = new Date(dateFilter(scope.charges[i].feeOnMonthDay, scope.df));
|
||||
}
|
||||
}
|
||||
scope.fieldOfficers = data.fieldOfficerOptions;
|
||||
scope.formData.nominalAnnualInterestRate = data.nominalAnnualInterestRate;
|
||||
scope.formData.minRequiredOpeningBalance = data.minRequiredOpeningBalance;
|
||||
scope.formData.lockinPeriodFrequency = data.lockinPeriodFrequency;
|
||||
|
||||
if (data.interestCompoundingPeriodType) scope.formData.interestCompoundingPeriodType = data.interestCompoundingPeriodType.id;
|
||||
if (data.interestPostingPeriodType) scope.formData.interestPostingPeriodType = data.interestPostingPeriodType.id;
|
||||
if (data.interestCalculationType) scope.formData.interestCalculationType = data.interestCalculationType.id;
|
||||
if (data.interestCalculationDaysInYearType) scope.formData.interestCalculationDaysInYearType = data.interestCalculationDaysInYearType.id;
|
||||
if (data.lockinPeriodFrequencyType) scope.formData.lockinPeriodFrequencyType = data.lockinPeriodFrequencyType.id;
|
||||
if (data.withdrawalFeeType) scope.formData.withdrawalFeeType = data.withdrawalFeeType.id;
|
||||
if (data.interestFreePeriodApplicable) scope.formData.interestFreePeriodApplicable = data.interestFreePeriodApplicable;
|
||||
if (data.preClosurePenalApplicable) scope.formData.preClosurePenalApplicable = data.preClosurePenalApplicable;
|
||||
|
||||
scope.chart = data.accountChart;
|
||||
//format chart date values
|
||||
if (scope.chart.fromDate) {
|
||||
var fromDate = dateFilter(scope.chart.fromDate, scope.df);
|
||||
scope.fromDate.date = new Date(fromDate);
|
||||
}
|
||||
if (scope.chart.endDate) {
|
||||
var endDate = dateFilter(scope.chart.endDate, scope.df);
|
||||
scope.endDate.date = new Date(endDate);
|
||||
}
|
||||
|
||||
var interestFreePeriodFrequencyTypeId = (_.isNull(data.interestFreePeriodFrequencyType) || _.isUndefined(data.interestFreePeriodFrequencyType)) ? '' : data.interestFreePeriodFrequencyType.id;
|
||||
var preClosurePenalInterestOnTypeId = (_.isNull(data.preClosurePenalInterestOnType) || _.isUndefined(data.preClosurePenalInterestOnType)) ? '' : data.preClosurePenalInterestOnType.id;
|
||||
var minDepositTermTypeId = (_.isNull(data.minDepositTermType) || _.isUndefined(data.minDepositTermType)) ? '' : data.minDepositTermType.id;
|
||||
var maxDepositTermTypeId = (_.isNull(data.maxDepositTermType) || _.isUndefined(data.maxDepositTermType)) ? '' : data.maxDepositTermType.id;
|
||||
var inMultiplesOfDepositTermTypeId = (_.isNull(data.inMultiplesOfDepositTermType) || _.isUndefined(data.inMultiplesOfDepositTermType)) ? '' : data.inMultiplesOfDepositTermType.id;
|
||||
|
||||
scope.formData.interestFreePeriodApplicable = data.interestFreePeriodApplicable;
|
||||
scope.formData.interestFreeFromPeriod = data.interestFreeFromPeriod;
|
||||
scope.formData.interestFreeToPeriod = data.interestFreeToPeriod;
|
||||
scope.formData.interestFreePeriodFrequencyTypeId = interestFreePeriodFrequencyTypeId;
|
||||
scope.formData.preClosurePenalApplicable = data.preClosurePenalApplicable;
|
||||
scope.formData.preClosurePenalInterest = data.preClosurePenalInterest;
|
||||
scope.formData.preClosurePenalInterestOnTypeId = preClosurePenalInterestOnTypeId;
|
||||
scope.formData.minDepositTerm = data.minDepositTerm;
|
||||
scope.formData.maxDepositTerm = data.maxDepositTerm;
|
||||
scope.formData.minDepositTermTypeId = minDepositTermTypeId;
|
||||
scope.formData.maxDepositTermTypeId = maxDepositTermTypeId;
|
||||
scope.formData.inMultiplesOfDepositTerm = data.inMultiplesOfDepositTerm;
|
||||
scope.formData.inMultiplesOfDepositTermTypeId = inMultiplesOfDepositTermTypeId;
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
scope.addCharge = function (chargeId) {
|
||||
scope.errorchargeevent = false;
|
||||
if (chargeId) {
|
||||
resourceFactory.chargeResource.get({chargeId: chargeId, template: 'true'}, function (data) {
|
||||
data.chargeId = data.id;
|
||||
if (data.chargeTimeType.value == "Annual Fee") {
|
||||
if (data.feeOnMonthDay) {
|
||||
data.feeOnMonthDay.push(2013);
|
||||
data.feeOnMonthDay = new Date(dateFilter(data.feeOnMonthDay, scope.df));
|
||||
}
|
||||
} else if (data.chargeTimeType.value == "Monthly Fee") {
|
||||
if (data.feeOnMonthDay) {
|
||||
data.feeOnMonthDay.push(2013);
|
||||
data.feeOnMonthDay = new Date(dateFilter(data.feeOnMonthDay, scope.df));
|
||||
}
|
||||
}
|
||||
scope.charges.push(data);
|
||||
scope.chargeId = undefined;
|
||||
});
|
||||
} else {
|
||||
scope.errorchargeevent = true;
|
||||
scope.labelchargeerror = "selectcharge";
|
||||
}
|
||||
}
|
||||
|
||||
scope.deleteCharge = function (index) {
|
||||
scope.charges.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.submit = function () {
|
||||
if (scope.date) {
|
||||
this.formData.submittedOnDate = dateFilter(scope.date.submittedOnDate, scope.df);
|
||||
}
|
||||
this.formData.locale = scope.optlang.code;
|
||||
this.formData.dateFormat = scope.df;
|
||||
this.formData.monthDayFormat = "dd MMM";
|
||||
this.formData.charges = [];
|
||||
|
||||
if (scope.clientId) this.formData.clientId = scope.clientId;
|
||||
if (scope.groupId) this.formData.groupId = scope.groupId;
|
||||
if (scope.centerId) this.formData.centerId = scope.centerId;
|
||||
|
||||
if (scope.charges.length > 0) {
|
||||
for (var i in scope.charges) {
|
||||
if (scope.charges[i].chargeTimeType.value == 'Annual Fee') {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount,
|
||||
feeOnMonthDay: dateFilter(scope.charges[i].feeOnMonthDay, 'dd MMMM')});
|
||||
} else if (scope.charges[i].chargeTimeType.value == 'Specified due date') {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount,
|
||||
dueDate: dateFilter(scope.charges[i].dueDate, scope.df)});
|
||||
} else if (scope.charges[i].chargeTimeType.value == 'Monthly Fee') {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount,
|
||||
feeOnMonthDay: dateFilter(scope.charges[i].feeOnMonthDay, 'dd MMMM'), feeInterval: scope.charges[i].feeInterval});
|
||||
} else {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.formData.charts = [];//declare charts array
|
||||
this.formData.charts.push(copyChartData(scope.chart));//add chart details
|
||||
this.formData = removeEmptyValues(this.formData);
|
||||
|
||||
resourceFactory.fixedDepositAccountResource.save(this.formData, function (data) {
|
||||
location.path('/viewfixeddepositaccount/' + data.savingsId);
|
||||
});
|
||||
};
|
||||
|
||||
scope.cancel = function () {
|
||||
if (scope.clientId) {
|
||||
location.path('/viewclient/' + scope.clientId);
|
||||
} else if (scope.centerEntity) {
|
||||
location.path('/viewcenter/' + scope.groupId);
|
||||
} else {
|
||||
location.path('/viewgroup/' + scope.groupId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new row with default values for entering chart details
|
||||
*/
|
||||
scope.addNewRow = function () {
|
||||
var fromPeriod = '';
|
||||
var amountRangeFrom = '';
|
||||
var periodType = '';
|
||||
if (_.isNull(scope.chart.chartSlabs) || _.isUndefined(scope.chart.chartSlabs)) {
|
||||
scope.chart.chartSlabs = [];
|
||||
} else {
|
||||
var lastChartSlab = {};
|
||||
if (scope.chart.chartSlabs.length > 0) {
|
||||
lastChartSlab = angular.copy(scope.chart.chartSlabs[scope.chart.chartSlabs.length - 1]);
|
||||
}
|
||||
if (!(_.isNull(lastChartSlab) || _.isUndefined(lastChartSlab))) {
|
||||
fromPeriod = _.isNull(lastChartSlab) ? '' : parseInt(lastChartSlab.toPeriod) + 1;
|
||||
amountRangeFrom = _.isNull(lastChartSlab) ? '' : parseFloat(lastChartSlab.amountRangeTo) + 1;
|
||||
periodType = angular.copy(lastChartSlab.periodType);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var chartSlab = {
|
||||
"periodType": periodType,
|
||||
"fromPeriod": fromPeriod,
|
||||
"amountRangeFrom": amountRangeFrom
|
||||
};
|
||||
|
||||
scope.chart.chartSlabs.push(chartSlab);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* create new chart data object
|
||||
*/
|
||||
|
||||
copyChartData = function () {
|
||||
var newChartData = {
|
||||
id: scope.chart.id,
|
||||
name: scope.chart.name,
|
||||
description: scope.chart.description,
|
||||
fromDate: dateFilter(scope.fromDate.date, scope.df),
|
||||
endDate: dateFilter(scope.endDate.date, scope.df),
|
||||
//savingsProductId: scope.productId,
|
||||
dateFormat: scope.df,
|
||||
locale: scope.optlang.code,
|
||||
chartSlabs: angular.copy(copyChartSlabs(scope.chart.chartSlabs)),
|
||||
isActiveChart: 'true'
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartData, function (v, k) {
|
||||
if (!v)
|
||||
delete newChartData[k];
|
||||
});
|
||||
|
||||
return newChartData;
|
||||
}
|
||||
|
||||
/**
|
||||
* copy all chart details to a new Array
|
||||
* @param chartSlabs
|
||||
* @returns {Array}
|
||||
*/
|
||||
copyChartSlabs = function (chartSlabs) {
|
||||
var detailsArray = [];
|
||||
_.each(chartSlabs, function (chartSlab) {
|
||||
var chartSlabData = copyChartSlab(chartSlab);
|
||||
detailsArray.push(chartSlabData);
|
||||
});
|
||||
return detailsArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* create new chart detail object data from chartSlab
|
||||
* @param chartSlab
|
||||
*
|
||||
*/
|
||||
|
||||
copyChartSlab = function (chartSlab) {
|
||||
var newChartSlabData = {
|
||||
id: chartSlab.id,
|
||||
description: chartSlab.description,
|
||||
periodType: chartSlab.periodType.id,
|
||||
fromPeriod: chartSlab.fromPeriod,
|
||||
toPeriod: chartSlab.toPeriod,
|
||||
amountRangeFrom: chartSlab.amountRangeFrom,
|
||||
amountRangeTo: chartSlab.amountRangeTo,
|
||||
annualInterestRate: chartSlab.annualInterestRate,
|
||||
locale: scope.optlang.code
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartSlabData, function (v, k) {
|
||||
if (!v && v != 0)
|
||||
delete newChartSlabData[k];
|
||||
});
|
||||
|
||||
return newChartSlabData;
|
||||
}
|
||||
|
||||
removeEmptyValues = function (objArray) {
|
||||
_.each(objArray, function (v, k) {
|
||||
//alert(k + ':' + v);
|
||||
if (_.isNull(v) || _.isUndefined(v) || v === '') {
|
||||
//alert('remove' + k + ':' + v);
|
||||
delete objArray[k];
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return objArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove chart details row
|
||||
*/
|
||||
scope.removeRow = function (index) {
|
||||
scope.chart.chartSlabs.splice(index, 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('CreateFixedDepositAccountController', ['$scope', 'ResourceFactory', '$location', '$routeParams', 'dateFilter', mifosX.controllers.CreateFixedDepositAccountController]).run(function ($log) {
|
||||
$log.info("CreateFixedDepositAccountController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,349 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
EditDepositAccountController: function (scope, resourceFactory, location, routeParams, dateFilter) {
|
||||
scope.products = [];
|
||||
scope.fieldOfficers = [];
|
||||
scope.formData = {};
|
||||
scope.accountId = routeParams.id;
|
||||
scope.charges = [];
|
||||
scope.restrictDate = new Date();
|
||||
//interest rate chart details
|
||||
scope.chart = {};
|
||||
scope.fromDate = {}; //required for date formatting
|
||||
scope.endDate = {};//required for date formatting
|
||||
|
||||
resourceFactory.fixedDepositAccountResource.get({accountId: scope.accountId, template: 'true', associations: 'charges'}, function (data) {
|
||||
scope.data = data;
|
||||
scope.charges = data.charges || [];
|
||||
if (scope.charges) {
|
||||
for (var i in scope.charges) {
|
||||
if (scope.charges[i].chargeTimeType.value == 'Annual Fee') {
|
||||
scope.charges[i].feeOnMonthDay.push(2013);
|
||||
scope.charges[i].feeOnMonthDay = new Date(dateFilter(scope.charges[i].feeOnMonthDay, scope.df));
|
||||
} else if (scope.charges[i].chargeTimeType.value == "Monthly Fee") {
|
||||
scope.charges[i].feeOnMonthDay.push(2013);
|
||||
scope.charges[i].feeOnMonthDay = new Date(dateFilter(scope.charges[i].feeOnMonthDay, scope.df));
|
||||
} else if (scope.charges[i].chargeTimeType.value == 'Specified due date') {
|
||||
scope.charges[i].dueDate = new Date(dateFilter(scope.charges[i].dueDate, scope.df));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (data.clientId) {
|
||||
scope.formData.clientId = data.clientId;
|
||||
scope.clientName = data.clientName;
|
||||
}
|
||||
if (data.groupId) {
|
||||
scope.formData.groupId = data.groupId;
|
||||
scope.groupName = data.groupName;
|
||||
}
|
||||
scope.formData.productId = data.savingsProductId;
|
||||
scope.products = data.productOptions;
|
||||
if (data.fieldOfficerId != 0)scope.formData.fieldOfficerId = data.fieldOfficerId;
|
||||
if (data.timeline) {
|
||||
var submittedOnDate = dateFilter(data.timeline.submittedOnDate, scope.df);
|
||||
scope.formData.submittedOnDate = new Date(submittedOnDate);
|
||||
}
|
||||
scope.fieldOfficers = data.fieldOfficerOptions;
|
||||
scope.formData.nominalAnnualInterestRate = data.nominalAnnualInterestRate;
|
||||
scope.formData.depositAmount = data.depositAmount;
|
||||
scope.formData.depositPeriod = data.depositPeriod;
|
||||
scope.formData.lockinPeriodFrequency = data.lockinPeriodFrequency;
|
||||
/* FIX-ME: uncomment annualFeeAmount when datepicker avialable, because it depends on the date field 'annualFeeOnMonthDay'*/
|
||||
//scope.formData.annualFeeAmount = data.annualFeeAmount;
|
||||
//scope.formData.withdrawalFeeAmount = data.withdrawalFeeAmount;
|
||||
//scope.formData.withdrawalFeeForTransfers = data.withdrawalFeeForTransfers;
|
||||
|
||||
if (data.interestCompoundingPeriodType) scope.formData.interestCompoundingPeriodType = data.interestCompoundingPeriodType.id;
|
||||
if (data.interestPostingPeriodType) scope.formData.interestPostingPeriodType = data.interestPostingPeriodType.id;
|
||||
if (data.interestCalculationType) scope.formData.interestCalculationType = data.interestCalculationType.id;
|
||||
if (data.interestCalculationDaysInYearType) scope.formData.interestCalculationDaysInYearType = data.interestCalculationDaysInYearType.id;
|
||||
if (data.lockinPeriodFrequencyType) scope.formData.lockinPeriodFrequencyType = data.lockinPeriodFrequencyType.id;
|
||||
//if (data.withdrawalFeeType) scope.formData.withdrawalFeeType = data.withdrawalFeeType.id;
|
||||
|
||||
scope.chart = data.accountChart;
|
||||
//format chart date values
|
||||
if (scope.chart.fromDate) {
|
||||
var fromDate = dateFilter(scope.chart.fromDate, scope.df);
|
||||
scope.fromDate.date = new Date(fromDate);
|
||||
}
|
||||
if (scope.chart.endDate) {
|
||||
var endDate = dateFilter(scope.chart.endDate, scope.df);
|
||||
scope.endDate.date = new Date(endDate);
|
||||
}
|
||||
|
||||
var depositPeriodFrequencyId = (_.isNull(data.depositPeriodFrequency) || _.isUndefined(data.depositPeriodFrequency)) ? '' : data.depositPeriodFrequency.id;
|
||||
var interestFreePeriodFrequencyTypeId = (_.isNull(data.interestFreePeriodFrequencyType) || _.isUndefined(data.interestFreePeriodFrequencyType)) ? '' : data.interestFreePeriodFrequencyType.id;
|
||||
var preClosurePenalInterestOnTypeId = (_.isNull(data.preClosurePenalInterestOnType) || _.isUndefined(data.preClosurePenalInterestOnType)) ? '' : data.preClosurePenalInterestOnType.id;
|
||||
var minDepositTermTypeId = (_.isNull(data.minDepositTermType) || _.isUndefined(data.minDepositTermType)) ? '' : data.minDepositTermType.id;
|
||||
var maxDepositTermTypeId = (_.isNull(data.maxDepositTermType) || _.isUndefined(data.maxDepositTermType)) ? '' : data.maxDepositTermType.id;
|
||||
var inMultiplesOfDepositTermTypeId = (_.isNull(data.inMultiplesOfDepositTermType) || _.isUndefined(data.inMultiplesOfDepositTermType)) ? '' : data.inMultiplesOfDepositTermType.id;
|
||||
|
||||
scope.formData.depositPeriodFrequencyId = depositPeriodFrequencyId;
|
||||
scope.formData.interestFreePeriodApplicable = data.interestFreePeriodApplicable;
|
||||
scope.formData.interestFreeFromPeriod = data.interestFreeFromPeriod;
|
||||
scope.formData.interestFreeToPeriod = data.interestFreeToPeriod;
|
||||
scope.formData.interestFreePeriodFrequencyTypeId = interestFreePeriodFrequencyTypeId;
|
||||
scope.formData.preClosurePenalApplicable = data.preClosurePenalApplicable;
|
||||
scope.formData.preClosurePenalInterest = data.preClosurePenalInterest;
|
||||
scope.formData.preClosurePenalInterestOnTypeId = preClosurePenalInterestOnTypeId;
|
||||
scope.formData.minDepositTerm = data.minDepositTerm;
|
||||
scope.formData.maxDepositTerm = data.maxDepositTerm;
|
||||
scope.formData.minDepositTermTypeId = minDepositTermTypeId;
|
||||
scope.formData.maxDepositTermTypeId = maxDepositTermTypeId;
|
||||
scope.formData.inMultiplesOfDepositTerm = data.inMultiplesOfDepositTerm;
|
||||
scope.formData.inMultiplesOfDepositTermTypeId = inMultiplesOfDepositTermTypeId;
|
||||
|
||||
});
|
||||
|
||||
scope.changeProduct = function () {
|
||||
var inparams = {productId: scope.formData.productId};
|
||||
if (scope.formData.clientId) inparams.clientId = scope.formData.clientId;
|
||||
if (scope.formData.groupId) inparams.groupId = scope.formData.groupId;
|
||||
resourceFactory.savingsTemplateResource.get(inparams, function (data) {
|
||||
|
||||
scope.data = data;
|
||||
|
||||
scope.fieldOfficers = data.fieldOfficerOptions;
|
||||
scope.formData.nominalAnnualInterestRate = data.nominalAnnualInterestRate;
|
||||
scope.formData.depositAmount = data.depositAmount;
|
||||
scope.formData.depositPeriod = data.depositPeriod;
|
||||
scope.formData.lockinPeriodFrequency = data.lockinPeriodFrequency;
|
||||
|
||||
|
||||
if (data.interestCompoundingPeriodType) scope.formData.interestCompoundingPeriodType = data.interestCompoundingPeriodType.id;
|
||||
if (data.interestPostingPeriodType) scope.formData.interestPostingPeriodType = data.interestPostingPeriodType.id;
|
||||
if (data.interestCalculationType) scope.formData.interestCalculationType = data.interestCalculationType.id;
|
||||
if (data.interestCalculationDaysInYearType) scope.formData.interestCalculationDaysInYearType = data.interestCalculationDaysInYearType.id;
|
||||
if (data.lockinPeriodFrequencyType) scope.formData.lockinPeriodFrequencyType = data.lockinPeriodFrequencyType.id;
|
||||
//if (data.withdrawalFeeType) scope.formData.withdrawalFeeType = data.withdrawalFeeType.id;
|
||||
|
||||
scope.chart = data.accountChart;
|
||||
//format chart date values
|
||||
if (scope.chart.fromDate) {
|
||||
var fromDate = dateFilter(scope.chart.fromDate, scope.df);
|
||||
scope.fromDate.date = new Date(fromDate);
|
||||
}
|
||||
if (scope.chart.endDate) {
|
||||
var endDate = dateFilter(scope.chart.endDate, scope.df);
|
||||
scope.endDate.date = new Date(endDate);
|
||||
}
|
||||
|
||||
var depositPeriodFrequencyId = (_.isNull(data.depositPeriodFrequency) || _.isUndefined(data.depositPeriodFrequency)) ? '' : data.depositPeriodFrequency.id;
|
||||
var interestFreePeriodFrequencyTypeId = (_.isNull(data.interestFreePeriodFrequencyType) || _.isUndefined(data.interestFreePeriodFrequencyType)) ? '' : data.interestFreePeriodFrequencyType.id;
|
||||
var preClosurePenalInterestOnTypeId = (_.isNull(data.preClosurePenalInterestOnType) || _.isUndefined(data.preClosurePenalInterestOnType)) ? '' : data.preClosurePenalInterestOnType.id;
|
||||
var minDepositTermTypeId = (_.isNull(data.minDepositTermType) || _.isUndefined(data.minDepositTermType)) ? '' : data.minDepositTermType.id;
|
||||
var maxDepositTermTypeId = (_.isNull(data.maxDepositTermType) || _.isUndefined(data.maxDepositTermType)) ? '' : data.maxDepositTermType.id;
|
||||
var inMultiplesOfDepositTermTypeId = (_.isNull(data.inMultiplesOfDepositTermType) || _.isUndefined(data.inMultiplesOfDepositTermType)) ? '' : data.inMultiplesOfDepositTermType.id;
|
||||
|
||||
scope.formData.depositPeriodFrequencyId = depositPeriodFrequencyId;
|
||||
scope.formData.interestFreePeriodApplicable = data.interestFreePeriodApplicable;
|
||||
scope.formData.interestFreeFromPeriod = data.interestFreeFromPeriod;
|
||||
scope.formData.interestFreeToPeriod = data.interestFreeToPeriod;
|
||||
scope.formData.interestFreePeriodFrequencyTypeId = interestFreePeriodFrequencyTypeId;
|
||||
scope.formData.preClosurePenalApplicable = data.preClosurePenalApplicable;
|
||||
scope.formData.preClosurePenalInterest = data.preClosurePenalInterest;
|
||||
scope.formData.preClosurePenalInterestOnTypeId = preClosurePenalInterestOnTypeId;
|
||||
scope.formData.minDepositTerm = data.minDepositTerm;
|
||||
scope.formData.maxDepositTerm = data.maxDepositTerm;
|
||||
scope.formData.minDepositTermTypeId = minDepositTermTypeId;
|
||||
scope.formData.maxDepositTermTypeId = maxDepositTermTypeId;
|
||||
scope.formData.inMultiplesOfDepositTerm = data.inMultiplesOfDepositTerm;
|
||||
scope.formData.inMultiplesOfDepositTermTypeId = inMultiplesOfDepositTermTypeId;
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
scope.addCharge = function (chargeId) {
|
||||
scope.errorchargeevent = false;
|
||||
if (chargeId) {
|
||||
resourceFactory.chargeResource.get({chargeId: chargeId, template: 'true'}, function (data) {
|
||||
data.chargeId = data.id;
|
||||
if (data.chargeTimeType.value == "Annual Fee") {
|
||||
if (data.feeOnMonthDay) {
|
||||
data.feeOnMonthDay.push(2013);
|
||||
data.feeOnMonthDay = new Date(dateFilter(data.feeOnMonthDay, scope.df));
|
||||
}
|
||||
} else if (data.chargeTimeType.value == "Monthly Fee") {
|
||||
if (data.feeOnMonthDay) {
|
||||
data.feeOnMonthDay.push(2013);
|
||||
data.feeOnMonthDay = new Date(dateFilter(data.feeOnMonthDay, scope.df));
|
||||
}
|
||||
}
|
||||
|
||||
delete data.id;
|
||||
scope.charges.push(data);
|
||||
scope.chargeId = undefined;
|
||||
});
|
||||
} else {
|
||||
scope.errorchargeevent = true;
|
||||
scope.labelchargeerror = "selectcharge";
|
||||
}
|
||||
}
|
||||
|
||||
scope.deleteCharge = function (index) {
|
||||
scope.charges.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.cancel = function () {
|
||||
location.path('/viewsavingaccount/' + scope.accountId);
|
||||
}
|
||||
|
||||
scope.submit = function () {
|
||||
if (this.formData.submittedOnDate) this.formData.submittedOnDate = dateFilter(this.formData.submittedOnDate, scope.df);
|
||||
this.formData.locale = scope.optlang.code;
|
||||
this.formData.dateFormat = scope.df;
|
||||
this.formData.monthDayFormat = "dd MMM";
|
||||
scope.formData.charges = [];
|
||||
if (scope.charges.length > 0) {
|
||||
for (var i in scope.charges) {
|
||||
if (scope.charges[i].chargeTimeType.value == 'Annual Fee') {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount,
|
||||
feeOnMonthDay: dateFilter(scope.charges[i].feeOnMonthDay, 'dd MMMM')});
|
||||
} else if (scope.charges[i].chargeTimeType.value == 'Specified due date') {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount,
|
||||
dueDate: dateFilter(scope.charges[i].dueDate, scope.df)});
|
||||
} else if (scope.charges[i].chargeTimeType.value == 'Monthly Fee') {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount,
|
||||
feeOnMonthDay: dateFilter(scope.charges[i].feeOnMonthDay, 'dd MMMM'), feeInterval: scope.charges[i].feeInterval});
|
||||
} else {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.formData.charts = [];//declare charts array
|
||||
this.formData.charts.push(copyChartData(scope.chart));//add chart details
|
||||
this.formData = removeEmptyValues(this.formData);
|
||||
|
||||
resourceFactory.fixedDepositAccountResource.update({'accountId': scope.accountId}, this.formData, function (data) {
|
||||
location.path('/viewfixeddepositaccount/' + data.savingsId);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Add a new row with default values for entering chart details
|
||||
*/
|
||||
scope.addNewRow = function () {
|
||||
var fromPeriod = '';
|
||||
var amountRangeFrom = '';
|
||||
var periodType = '';
|
||||
if (_.isNull(scope.chart.chartSlabs) || _.isUndefined(scope.chart.chartSlabs)) {
|
||||
scope.chart.chartSlabs = [];
|
||||
} else {
|
||||
var lastChartSlab = {};
|
||||
if (scope.chart.chartSlabs.length > 0) {
|
||||
lastChartSlab = angular.copy(scope.chart.chartSlabs[scope.chart.chartSlabs.length - 1]);
|
||||
}
|
||||
if (!(_.isNull(lastChartSlab) || _.isUndefined(lastChartSlab))) {
|
||||
fromPeriod = _.isNull(lastChartSlab) ? '' : parseInt(lastChartSlab.toPeriod) + 1;
|
||||
amountRangeFrom = _.isNull(lastChartSlab) ? '' : parseFloat(lastChartSlab.amountRangeTo) + 1;
|
||||
periodType = angular.copy(lastChartSlab.periodType);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var chartSlab = {
|
||||
"periodType": periodType,
|
||||
"fromPeriod": fromPeriod,
|
||||
"amountRangeFrom": amountRangeFrom
|
||||
};
|
||||
|
||||
scope.chart.chartSlabs.push(chartSlab);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* create new chart data object
|
||||
*/
|
||||
|
||||
copyChartData = function () {
|
||||
var newChartData = {
|
||||
id: scope.chart.id,
|
||||
name: scope.chart.name,
|
||||
description: scope.chart.description,
|
||||
fromDate: dateFilter(scope.fromDate.date, scope.df),
|
||||
endDate: dateFilter(scope.endDate.date, scope.df),
|
||||
//savingsProductId: scope.productId,
|
||||
dateFormat: scope.df,
|
||||
locale: scope.optlang.code,
|
||||
chartSlabs: angular.copy(copyChartSlabs(scope.chart.chartSlabs)),
|
||||
isActiveChart: 'true'
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartData, function (v, k) {
|
||||
if (!v)
|
||||
delete newChartData[k];
|
||||
});
|
||||
|
||||
return newChartData;
|
||||
}
|
||||
|
||||
/**
|
||||
* copy all chart details to a new Array
|
||||
* @param chartSlabs
|
||||
* @returns {Array}
|
||||
*/
|
||||
copyChartSlabs = function (chartSlabs) {
|
||||
var detailsArray = [];
|
||||
_.each(chartSlabs, function (chartSlab) {
|
||||
var chartSlabData = copyChartSlab(chartSlab);
|
||||
detailsArray.push(chartSlabData);
|
||||
});
|
||||
return detailsArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* create new chart detail object data from chartSlab
|
||||
* @param chartSlab
|
||||
*
|
||||
*/
|
||||
|
||||
copyChartSlab = function (chartSlab) {
|
||||
var newChartSlabData = {
|
||||
id: chartSlab.id,
|
||||
description: chartSlab.description,
|
||||
periodType: chartSlab.periodType.id,
|
||||
fromPeriod: chartSlab.fromPeriod,
|
||||
toPeriod: chartSlab.toPeriod,
|
||||
amountRangeFrom: chartSlab.amountRangeFrom,
|
||||
amountRangeTo: chartSlab.amountRangeTo,
|
||||
annualInterestRate: chartSlab.annualInterestRate,
|
||||
locale: scope.optlang.code
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartSlabData, function (v, k) {
|
||||
if (!v && v != 0)
|
||||
delete newChartSlabData[k];
|
||||
});
|
||||
|
||||
return newChartSlabData;
|
||||
}
|
||||
|
||||
removeEmptyValues = function (objArray) {
|
||||
_.each(objArray, function (v, k) {
|
||||
//alert(k + ':' + v);
|
||||
if (_.isNull(v) || _.isUndefined(v) || v === '') {
|
||||
//alert('remove' + k + ':' + v);
|
||||
delete objArray[k];
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return objArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove chart details row
|
||||
*/
|
||||
scope.removeRow = function (index) {
|
||||
scope.chart.chartSlabs.splice(index, 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('EditDepositAccountController', ['$scope', 'ResourceFactory', '$location', '$routeParams', 'dateFilter', mifosX.controllers.EditDepositAccountController]).run(function ($log) {
|
||||
$log.info("EditDepositAccountController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,304 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
FixedDepositAccountActionsController: function (scope, resourceFactory, location, routeParams, dateFilter) {
|
||||
|
||||
scope.action = routeParams.action || "";
|
||||
scope.accountId = routeParams.id;
|
||||
scope.savingAccountId = routeParams.id;
|
||||
scope.formData = {};
|
||||
scope.restrictDate = new Date();
|
||||
// Transaction UI Related
|
||||
scope.isAccountClose = false;
|
||||
scope.showPaymentDetails = false;
|
||||
scope.paymentTypes = [];
|
||||
|
||||
switch (scope.action) {
|
||||
case "approve":
|
||||
scope.title = 'label.heading.approvefixeddepositaccount';
|
||||
scope.labelName = 'label.input.savingaccountapprovedOnDate';
|
||||
scope.modelName = 'approvedOnDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = true;
|
||||
scope.actionName = 'Approve application';
|
||||
break;
|
||||
case "reject":
|
||||
scope.title = 'label.heading.rejectfixeddepositaccount';
|
||||
scope.labelName = 'label.input.rejectedon';
|
||||
scope.modelName = 'rejectedOnDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = true;
|
||||
scope.actionName = 'Reject application';
|
||||
break;
|
||||
case "withdrawnByApplicant":
|
||||
scope.title = 'label.heading.withdrawnfixeddepositaccount';
|
||||
scope.labelName = 'label.input.withdrawnon';
|
||||
scope.modelName = 'withdrawnOnDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = true;
|
||||
scope.actionName = 'Withdrawn by applicant';
|
||||
break;
|
||||
case "undoapproval":
|
||||
scope.title = 'label.heading.undoapprovefixeddepositaccount';
|
||||
scope.showDateField = false;
|
||||
scope.showNoteField = true;
|
||||
scope.actionName = 'Undo Approve application';
|
||||
break;
|
||||
case "activate":
|
||||
scope.title = 'label.heading.activatefixeddepositaccount';
|
||||
scope.labelName = 'label.input.activatedon';
|
||||
scope.modelName = 'activatedOnDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = false;
|
||||
scope.actionName = 'Approve application';
|
||||
break;
|
||||
/*case "deposit":
|
||||
resourceFactory.savingsTrxnsTemplateResource.get({savingsId:scope.accountId, command:'deposit'}, function (data) {
|
||||
scope.paymentTypes=data.paymentTypeOptions;
|
||||
});
|
||||
scope.title = 'label.heading.depositmoneytosavingaccount';
|
||||
scope.labelName = 'label.input.transactiondate';
|
||||
scope.modelName = 'transactionDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = false;
|
||||
scope.isTransaction = true;
|
||||
scope.showPaymentDetails = false;
|
||||
break;
|
||||
case "withdrawal":
|
||||
resourceFactory.savingsTrxnsTemplateResource.get({savingsId:scope.accountId, command:'withdrawal'}, function (data) {
|
||||
scope.paymentTypes=data.paymentTypeOptions;
|
||||
});
|
||||
scope.title = 'label.heading.withdrawmoneyfromsavingaccount';
|
||||
scope.labelName = 'label.input.transactiondate';
|
||||
scope.modelName = 'transactionDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = false;
|
||||
scope.isTransaction = true;
|
||||
scope.showPaymentDetails = false;
|
||||
break;
|
||||
case "applyAnnualFees":
|
||||
resourceFactory.savingsResource.get({accountId : routeParams.id, resourceType : 'charges', chargeId : routeParams.chargeId},
|
||||
function (data) {
|
||||
scope.formData.amount = data.amount;
|
||||
if (data.dueDate) {
|
||||
var dueDate = dateFilter(data.dueDate, scope.df);
|
||||
scope.formData.dueDate = new Date(dueDate);
|
||||
}
|
||||
});
|
||||
scope.title = 'label.heading.savingaccountapplyannualFee';
|
||||
scope.labelName = 'label.input.annualfeetransactiondate';
|
||||
scope.modelName = 'dueDate';
|
||||
scope.showDateField = true;
|
||||
scope.showAnnualAmountField = true;
|
||||
scope.showAmountField = false;
|
||||
scope.showNoteField = false;
|
||||
break;*/
|
||||
case "close":
|
||||
resourceFactory.fixedDepositAccountResource.get({accountId: routeParams.id, resourceType: 'template', command: 'close'},
|
||||
function (data) {
|
||||
scope.maturityAmount = data.maturityAmount;
|
||||
scope.onAccountClosureOptions = data.onAccountClosureOptions;
|
||||
scope.savingsAccounts = data.savingsAccounts;
|
||||
scope.paymentTypes = data.paymentTypeOptions;
|
||||
scope.currency = data.currency;
|
||||
});
|
||||
scope.title = 'label.heading.closefixeddepositaccount';
|
||||
scope.labelName = 'label.input.closedon';
|
||||
scope.modelName = 'closedOnDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = true;
|
||||
scope.isAccountClose = true;
|
||||
break;
|
||||
case "prematureClose":
|
||||
scope.title = 'label.heading.prematureclosefixeddepositaccount';
|
||||
scope.labelName = 'label.input.preMatureCloseOnDate';
|
||||
scope.modelName = 'closedOnDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = false;
|
||||
scope.retrievePreMatureAmount = true;
|
||||
break;
|
||||
case "modifytransaction":
|
||||
resourceFactory.fixedDepositTrxnsResource.get({savingsId: scope.accountId, transactionId: routeParams.transactionId, template: 'true'},
|
||||
function (data) {
|
||||
scope.title = 'label.heading.editfixeddepositaccounttransaction';
|
||||
scope.labelName = 'label.input.transactiondate';
|
||||
scope.modelName = 'transactionDate';
|
||||
scope.formData[scope.modelName] = new Date(data.date) || new Date();
|
||||
scope.paymentTypes = data.paymentTypeOptions;
|
||||
scope.formData.transactionAmount = data.amount;
|
||||
if (data.paymentDetailData) {
|
||||
if (data.paymentDetailData.paymentType) {
|
||||
scope.formData.paymentTypeId = data.paymentDetailData.paymentType.id;
|
||||
}
|
||||
scope.formData.accountNumber = data.paymentDetailData.accountNumber;
|
||||
scope.formData.checkNumber = data.paymentDetailData.checkNumber;
|
||||
scope.formData.routingCode = data.paymentDetailData.routingCode;
|
||||
scope.formData.receiptNumber = data.paymentDetailData.receiptNumber;
|
||||
scope.formData.bankNumber = data.paymentDetailData.bankNumber;
|
||||
}
|
||||
});
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = false;
|
||||
scope.isTransaction = true;
|
||||
scope.showPaymentDetails = false;
|
||||
scope.showPaymentType = true;
|
||||
scope.showAmount = true;
|
||||
break;
|
||||
case "editsavingcharge":
|
||||
resourceFactory.savingsResource.get({accountId: routeParams.id, resourceType: 'charges', chargeId: routeParams.chargeId},
|
||||
function (data) {
|
||||
scope.formData.amount = data.amount;
|
||||
if (data.feeOnMonthDay) {
|
||||
scope.dateArray = [];
|
||||
scope.dateArray.push(2013)
|
||||
for (var i in data.feeOnMonthDay) {
|
||||
scope.dateArray.push(data.feeOnMonthDay[i]);
|
||||
}
|
||||
var feeOnMonthDay = dateFilter(scope.dateArray, scope.df);
|
||||
scope.formData.feeOnMonthDayFullDate = new Date(feeOnMonthDay);
|
||||
scope.labelName = 'label.heading.savingaccounttransactionDate';
|
||||
scope.modelName = 'feeOnMonthDayFullDate';
|
||||
scope.showDateField = true;
|
||||
scope.showAnnualAmountField = true;
|
||||
scope.showAmountField = false;
|
||||
} else {
|
||||
scope.labelName = 'label.amount';
|
||||
scope.modelName = 'amount';
|
||||
scope.showDateField = false;
|
||||
scope.showAnnualAmountField = false;
|
||||
scope.showAmountField = true;
|
||||
}
|
||||
});
|
||||
break;
|
||||
case "deletesavingcharge":
|
||||
scope.showDelete = true;
|
||||
break;
|
||||
case "paycharge":
|
||||
scope.formData.dueDate = new Date();
|
||||
resourceFactory.savingsResource.get({accountId: routeParams.id, resourceType: 'charges', chargeId: routeParams.chargeId,
|
||||
command: 'paycharge'}, function (data) {
|
||||
scope.formData.amount = data.amountOutstanding;
|
||||
});
|
||||
scope.labelName = 'label.amount';
|
||||
scope.showAmountField = true;
|
||||
scope.paymentDatefield = true;
|
||||
scope.modelName = 'dueDate';
|
||||
break;
|
||||
case "waive":
|
||||
scope.waiveCharge = true;
|
||||
break;
|
||||
}
|
||||
|
||||
scope.cancel = function () {
|
||||
location.path('/viewfixeddepositaccount/' + routeParams.id);
|
||||
};
|
||||
|
||||
scope.submit = function () {
|
||||
var params = {command: scope.action};
|
||||
if (scope.action != "undoapproval") {
|
||||
this.formData.locale = scope.optlang.code;
|
||||
this.formData.dateFormat = scope.df;
|
||||
}
|
||||
if (scope.action == "deposit" || scope.action == "withdrawal" || scope.action == "modifytransaction") {
|
||||
if (scope.action == "withdrawal") {
|
||||
if (this.formData.transactionDate) {
|
||||
this.formData.transactionDate = dateFilter(this.formData.transactionDate, scope.df);
|
||||
}
|
||||
} else if (scope.action == "deposit") {
|
||||
if (this.formData.transactionDate) {
|
||||
this.formData.transactionDate = dateFilter(this.formData.transactionDate, scope.df);
|
||||
}
|
||||
}
|
||||
if (scope.action == "modifytransaction") {
|
||||
params.command = 'modify';
|
||||
if (this.formData.transactionDate) {
|
||||
this.formData.transactionDate = dateFilter(this.formData.transactionDate, scope.df);
|
||||
}
|
||||
params.transactionId = routeParams.transactionId;
|
||||
}
|
||||
params.savingsId = scope.accountId;
|
||||
resourceFactory.fixedDepositTrxnsResource.save(params, this.formData, function (data) {
|
||||
location.path('/viewfixeddepositaccount/' + data.savingsId);
|
||||
});
|
||||
} else if (scope.action == "editsavingcharge") {
|
||||
if (this.formData.feeOnMonthDayFullDate) {
|
||||
this.formData.feeOnMonthDay = dateFilter(this.formData.feeOnMonthDayFullDate, scope.df);
|
||||
this.formData.monthDayFormat = "dd MMM";
|
||||
this.formData.feeOnMonthDay = this.formData.feeOnMonthDay.substring(0, this.formData.feeOnMonthDay.length - 5);
|
||||
delete this.formData.feeOnMonthDayFullDate;
|
||||
}
|
||||
resourceFactory.savingsResource.update({accountId: routeParams.id, resourceType: 'charges', chargeId: routeParams.chargeId}, this.formData,
|
||||
function (data) {
|
||||
location.path('/viewfixeddepositaccount/' + data.savingsId);
|
||||
});
|
||||
} else if (scope.action == "deletesavingcharge") {
|
||||
resourceFactory.savingsResource.delete({accountId: routeParams.id, resourceType: 'charges', chargeId: routeParams.chargeId}, this.formData,
|
||||
function (data) {
|
||||
location.path('/viewfixeddepositaccount/' + data.savingsId);
|
||||
});
|
||||
} else if (scope.action == "paycharge" || scope.action == "waive") {
|
||||
params = {accountId: routeParams.id, resourceType: 'charges', chargeId: routeParams.chargeId, command: scope.action};
|
||||
if (this.formData.dueDate) {
|
||||
this.formData.dueDate = dateFilter(this.formData.dueDate, scope.df);
|
||||
}
|
||||
resourceFactory.savingsResource.save(params, this.formData, function (data) {
|
||||
location.path('/viewfixeddepositaccount/' + data.savingsId);
|
||||
});
|
||||
} else {
|
||||
params.accountId = scope.accountId;
|
||||
if (scope.action == "approve") {
|
||||
if (this.formData.approvedOnDate) {
|
||||
this.formData.approvedOnDate = dateFilter(this.formData.approvedOnDate, scope.df);
|
||||
}
|
||||
} else if (scope.action == "withdrawnByApplicant") {
|
||||
if (this.formData.withdrawnOnDate) {
|
||||
this.formData.withdrawnOnDate = dateFilter(this.formData.withdrawnOnDate, scope.df);
|
||||
}
|
||||
} else if (scope.action == "reject") {
|
||||
if (this.formData.rejectedOnDate) {
|
||||
this.formData.rejectedOnDate = dateFilter(this.formData.rejectedOnDate, scope.df);
|
||||
}
|
||||
} else if (scope.action == "activate") {
|
||||
if (this.formData.activatedOnDate) {
|
||||
this.formData.activatedOnDate = dateFilter(this.formData.activatedOnDate, scope.df);
|
||||
}
|
||||
/*} else if (scope.action == "applyAnnualFees" || scope.action == "paycharge" || scope.action == "waivecharge") {
|
||||
params = {accountId : routeParams.id, resourceType : 'charges', chargeId : routeParams.chargeId, command : 'paycharge'};
|
||||
if (this.formData.dueDate) {
|
||||
this.formData.dueDate = dateFilter(this.formData.dueDate,scope.df);
|
||||
}*/
|
||||
} else if (scope.action === "close") {
|
||||
if (this.formData.closedOnDate) {
|
||||
this.formData.closedOnDate = dateFilter(this.formData.closedOnDate, scope.df);
|
||||
}
|
||||
} else if (scope.action === "prematureClose") {
|
||||
|
||||
if (this.formData.closedOnDate) {
|
||||
this.formData.closedOnDate = dateFilter(this.formData.closedOnDate, scope.df);
|
||||
}
|
||||
if (scope.retrievePreMatureAmount) {
|
||||
params = {accountId: routeParams.id, command: 'calculatePrematureAmount'};
|
||||
resourceFactory.fixedDepositAccountResource.save(params, this.formData, function (data) {
|
||||
scope.maturityAmount = data.maturityAmount;
|
||||
scope.onAccountClosureOptions = data.onAccountClosureOptions;
|
||||
scope.savingsAccounts = data.savingsAccounts;
|
||||
scope.paymentTypes = data.paymentTypeOptions;
|
||||
scope.currency = data.currency;
|
||||
});
|
||||
scope.isAccountClose = true;
|
||||
scope.showNoteField = true;
|
||||
scope.retrievePreMatureAmount = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
resourceFactory.fixedDepositAccountResource.save(params, this.formData, function (data) {
|
||||
location.path('/viewfixeddepositaccount/' + data.savingsId);
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('FixedDepositAccountActionsController', ['$scope', 'ResourceFactory', '$location', '$routeParams', 'dateFilter', mifosX.controllers.FixedDepositAccountActionsController]).run(function ($log) {
|
||||
$log.info("FixedDepositAccountActionsController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,228 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
ViewFixedDepositAccountDetailsController: function (scope, routeParams, resourceFactory, location, route, dateFilter) {
|
||||
scope.isDebit = function (savingsTransactionType) {
|
||||
return savingsTransactionType.withdrawal == true || savingsTransactionType.feeDeduction == true;
|
||||
};
|
||||
|
||||
scope.clickEvent = function (eventName, accountId) {
|
||||
eventName = eventName || "";
|
||||
switch (eventName) {
|
||||
case "modifyapplication":
|
||||
location.path('/editfixeddepositaccount/' + accountId);
|
||||
break;
|
||||
case "approve":
|
||||
location.path('/fixeddepositaccount/' + accountId + '/approve');
|
||||
break;
|
||||
case "reject":
|
||||
location.path('/fixeddepositaccount/' + accountId + '/reject');
|
||||
break;
|
||||
case "withdrawnbyclient":
|
||||
location.path('/fixeddepositaccount/' + accountId + '/withdrawnByApplicant');
|
||||
break;
|
||||
case "delete":
|
||||
resourceFactory.fixedDepositAccountResource.delete({accountId: accountId}, {}, function (data) {
|
||||
var destination = '/viewgroup/' + data.groupId;
|
||||
if (data.clientId) destination = '/viewclient/' + data.clientId;
|
||||
location.path(destination);
|
||||
});
|
||||
break;
|
||||
case "undoapproval":
|
||||
location.path('/fixeddepositaccount/' + accountId + '/undoapproval');
|
||||
break;
|
||||
case "activate":
|
||||
location.path('/fixeddepositaccount/' + accountId + '/activate');
|
||||
break;
|
||||
case "addcharge":
|
||||
location.path('/fixeddepositaccount/' + accountId + '/charges');
|
||||
break;
|
||||
case "calculateInterest":
|
||||
resourceFactory.fixedDepositAccountResource.save({accountId: accountId, command: 'calculateInterest'}, {}, function (data) {
|
||||
route.reload();
|
||||
});
|
||||
break;
|
||||
case "postInterest":
|
||||
resourceFactory.fixedDepositAccountResource.save({accountId: accountId, command: 'postInterest'}, {}, function (data) {
|
||||
route.reload();
|
||||
});
|
||||
break;
|
||||
/* case "applyAnnualFees":
|
||||
location.path('/savingaccountcharge/' + accountId + '/applyAnnualFees/' + scope.annualChargeId);
|
||||
break;
|
||||
case "transferFunds":
|
||||
if (scope.savingaccountdetails.clientId) {
|
||||
location.path('/accounttransfers/fromsavings/'+accountId);
|
||||
}
|
||||
break;*/
|
||||
case "close":
|
||||
location.path('/fixeddepositaccount/' + accountId + '/close');
|
||||
break;
|
||||
case "prematureClose":
|
||||
location.path('/fixeddepositaccount/' + accountId + '/prematureClose');
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
resourceFactory.fixedDepositAccountResource.get({accountId: routeParams.id, associations: 'all'}, function (data) {
|
||||
scope.savingaccountdetails = data;
|
||||
scope.status = data.status.value;
|
||||
if (scope.status == "Submitted and pending approval" || scope.status == "Active" || scope.status == "Approved") {
|
||||
scope.choice = true;
|
||||
}
|
||||
scope.chargeAction = data.status.value == "Submitted and pending approval" ? true : false;
|
||||
if (scope.savingaccountdetails.charges) {
|
||||
scope.charges = scope.savingaccountdetails.charges;
|
||||
scope.chargeTableShow = true;
|
||||
} else {
|
||||
scope.chargeTableShow = false;
|
||||
}
|
||||
if (data.status.value == "Submitted and pending approval") {
|
||||
scope.buttons = { singlebuttons: [
|
||||
{
|
||||
name: "button.modifyapplication",
|
||||
icon: "icon-pencil "
|
||||
},
|
||||
{
|
||||
name: "button.approve",
|
||||
icon: "icon-ok-sign"
|
||||
}
|
||||
],
|
||||
options: [
|
||||
{
|
||||
name: "button.reject"
|
||||
},
|
||||
{
|
||||
name: "button.withdrawnbyclient"
|
||||
},
|
||||
{
|
||||
name: "button.addcharge"
|
||||
},
|
||||
{
|
||||
name: "button.delete"
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
if (data.status.value == "Approved") {
|
||||
scope.buttons = { singlebuttons: [
|
||||
{
|
||||
name: "button.undoapproval",
|
||||
icon: "icon-undo"
|
||||
},
|
||||
{
|
||||
name: "button.activate",
|
||||
icon: "icon-ok-sign"
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
if (data.status.value == "Active") {
|
||||
scope.buttons = { singlebuttons: [
|
||||
{
|
||||
name: "button.prematureClose",
|
||||
icon: "icon-arrow-left"
|
||||
},
|
||||
{
|
||||
name: "button.calculateInterest",
|
||||
icon: "icon-table"
|
||||
}
|
||||
],
|
||||
options: [
|
||||
{
|
||||
name: "button.postInterest"
|
||||
},
|
||||
{
|
||||
name: "button.addcharge"
|
||||
}
|
||||
]
|
||||
|
||||
};
|
||||
/*if (data.clientId) {
|
||||
scope.buttons.options.push({
|
||||
name:"button.transferFunds"
|
||||
});
|
||||
}*/
|
||||
|
||||
}else if (data.status.value == "Matured") {
|
||||
scope.buttons = { singlebuttons: [
|
||||
{
|
||||
name: "button.close",
|
||||
icon: "icon-arrow-right"
|
||||
},
|
||||
{
|
||||
name: "button.calculateInterest",
|
||||
icon: "icon-table"
|
||||
}
|
||||
],
|
||||
options: [
|
||||
{
|
||||
name: "button.postInterest"
|
||||
},
|
||||
{
|
||||
name: "button.addcharge"
|
||||
}
|
||||
]
|
||||
|
||||
};
|
||||
/*if (data.clientId) {
|
||||
scope.buttons.options.push({
|
||||
name:"button.transferFunds"
|
||||
});
|
||||
}*/
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
resourceFactory.DataTablesResource.getAllDataTables({apptable: 'm_savings_account'}, function (data) {
|
||||
scope.savingdatatables = data;
|
||||
});
|
||||
|
||||
scope.dataTableChange = function (datatable) {
|
||||
resourceFactory.DataTablesResource.getTableDetails({datatablename: datatable.registeredTableName,
|
||||
entityId: routeParams.id, genericResultSet: 'true'}, function (data) {
|
||||
scope.datatabledetails = data;
|
||||
scope.datatabledetails.isData = data.data.length > 0 ? true : false;
|
||||
scope.datatabledetails.isMultirow = data.columnHeaders[0].columnName == "id" ? true : false;
|
||||
scope.singleRow = [];
|
||||
for (var i in data.columnHeaders) {
|
||||
if (scope.datatabledetails.columnHeaders[i].columnCode) {
|
||||
for (var j in scope.datatabledetails.columnHeaders[i].columnValues) {
|
||||
for (var k in data.data) {
|
||||
if (data.data[k].row[i] == scope.datatabledetails.columnHeaders[i].columnValues[j].id) {
|
||||
data.data[k].row[i] = scope.datatabledetails.columnHeaders[i].columnValues[j].value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (scope.datatabledetails.isData) {
|
||||
for (var i in data.columnHeaders) {
|
||||
if (!scope.datatabledetails.isMultirow) {
|
||||
var row = {};
|
||||
row.key = data.columnHeaders[i].columnName;
|
||||
row.value = data.data[0].row[i];
|
||||
scope.singleRow.push(row);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
scope.deleteAll = function (apptableName, entityId) {
|
||||
resourceFactory.DataTablesResource.delete({datatablename: apptableName, entityId: entityId, genericResultSet: 'true'}, {}, function (data) {
|
||||
route.reload();
|
||||
});
|
||||
};
|
||||
|
||||
scope.modifyTransaction = function (accountId, transactionId) {
|
||||
location.path('/fixeddepositaccount/' + accountId + '/modifytransaction?transactionId=' + transactionId);
|
||||
};
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('ViewFixedDepositAccountDetailsController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$route', 'dateFilter', mifosX.controllers.ViewFixedDepositAccountDetailsController]).run(function ($log) {
|
||||
$log.info("ViewFixedDepositAccountDetailsController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,25 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
ViewFixedDepositTransactionController: function (scope, resourceFactory, location, routeParams, dateFilter) {
|
||||
scope.flag = false;
|
||||
resourceFactory.fixedDepositTrxnsResource.get({savingsId: routeParams.accountId, transactionId: routeParams.transactionId}, function (data) {
|
||||
scope.transaction = data;
|
||||
if (scope.transaction.transactionType.value == 'Transfer' || scope.transaction.reversed == 'true') {
|
||||
scope.flag = true;
|
||||
}
|
||||
});
|
||||
|
||||
scope.undoTransaction = function (accountId, transactionId) {
|
||||
var params = {savingsId: accountId, transactionId: transactionId, command: 'undo'};
|
||||
var formData = {dateFormat: scope.df, locale: scope.optlang.code, transactionAmount: 0};
|
||||
formData.transactionDate = dateFilter(new Date(), scope.df);
|
||||
resourceFactory.fixedDepositTrxnsResource.save(params, formData, function (data) {
|
||||
location.path('/viewfixeddepositaccount/' + data.savingsId);
|
||||
});
|
||||
};
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('ViewFixedDepositTransactionController', ['$scope', 'ResourceFactory', '$location', '$routeParams', 'dateFilter', mifosX.controllers.ViewFixedDepositTransactionController]).run(function ($log) {
|
||||
$log.info("ViewFixedDepositTransactionController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,54 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
AddNewRecurringDepositChargeController: function (scope, resourceFactory, location, routeParams, dateFilter) {
|
||||
scope.offices = [];
|
||||
scope.cancelRoute = routeParams.id;
|
||||
scope.date = {};
|
||||
|
||||
resourceFactory.savingsChargeResource.get({accountId: routeParams.id, resourceType: 'template'}, function (data) {
|
||||
scope.chargeOptions = data.chargeOptions;
|
||||
});
|
||||
|
||||
scope.chargeSelected = function (id) {
|
||||
resourceFactory.chargeResource.get({chargeId: id, template: 'true'}, function (data) {
|
||||
scope.chargeCalculationType = data.chargeCalculationType.id;
|
||||
scope.chargeTimeType = data.chargeTimeType.id;
|
||||
scope.chargeDetails = data;
|
||||
scope.formData.amount = data.amount;
|
||||
scope.withDrawCharge = data.chargeTimeType.value === "Withdrawal Fee" ? true : false;
|
||||
scope.formData.feeInterval = data.feeInterval;
|
||||
if (data.chargeTimeType.value === "Annual Fee" || data.chargeTimeType.value === "Monthly Fee") {
|
||||
scope.chargeTimeTypeAnnualOrMonth = true;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
scope.submit = function () {
|
||||
this.formData.locale = "en";
|
||||
if (scope.withDrawCharge !== true) {
|
||||
if (scope.chargeTimeTypeAnnualOrMonth === true) {
|
||||
this.formData.monthDayFormat = "dd MMMM";
|
||||
if (scope.date.due) {
|
||||
this.formData.feeOnMonthDay = dateFilter(scope.date.due, 'dd MMMM');
|
||||
} else {
|
||||
this.formData.feeOnMonthDay = "";
|
||||
}
|
||||
} else {
|
||||
this.formData.dateFormat = "dd MMMM yyyy";
|
||||
if (scope.date.specificduedate) {
|
||||
this.formData.dueDate = dateFilter(scope.date.specificduedate, scope.df);
|
||||
} else {
|
||||
this.formData.dueDate = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
resourceFactory.savingsChargeResource.save({accountId: routeParams.id}, this.formData, function (data) {
|
||||
location.path('/viewrecurringdepositaccount/' + routeParams.id);
|
||||
});
|
||||
};
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('AddNewRecurringDepositChargeController', ['$scope', 'ResourceFactory', '$location', '$routeParams', 'dateFilter', mifosX.controllers.AddNewRecurringDepositChargeController]).run(function ($log) {
|
||||
$log.info("AddNewRecurringDepositChargeController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,309 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
CreateRecurringDepositAccountController: function (scope, resourceFactory, location, routeParams, dateFilter) {
|
||||
scope.products = [];
|
||||
scope.fieldOfficers = [];
|
||||
scope.formData = {};
|
||||
scope.restrictDate = new Date();
|
||||
scope.clientId = routeParams.clientId;
|
||||
scope.groupId = routeParams.groupId;
|
||||
if (routeParams.centerEntity) {
|
||||
scope.centerEntity = true;
|
||||
}
|
||||
|
||||
//interest rate chart details
|
||||
scope.chart = {};
|
||||
scope.fromDate = {}; //required for date formatting
|
||||
scope.endDate = {};//required for date formatting
|
||||
|
||||
scope.charges = [];
|
||||
scope.inparams = {};
|
||||
if (scope.clientId) {
|
||||
scope.inparams.clientId = scope.clientId
|
||||
}
|
||||
;
|
||||
if (scope.groupId) {
|
||||
scope.inparams.groupId = scope.groupId
|
||||
}
|
||||
;
|
||||
if (scope.centerId) {
|
||||
scope.inparams.centerId = scope.centerId
|
||||
}
|
||||
;
|
||||
|
||||
resourceFactory.recurringDepositAccountTemplateResource.get(scope.inparams, function (data) {
|
||||
scope.products = data.productOptions;
|
||||
scope.chargeOptions = data.chargeOptions;
|
||||
scope.clientName = data.clientName;
|
||||
scope.groupName = data.groupName;
|
||||
});
|
||||
|
||||
scope.changeProduct = function () {
|
||||
scope.inparams.productId = scope.formData.productId;
|
||||
resourceFactory.recurringDepositAccountTemplateResource.get(scope.inparams, function (data) {
|
||||
|
||||
scope.data = data;
|
||||
scope.charges = data.charges;
|
||||
|
||||
for (var i in scope.charges) {
|
||||
if (scope.charges[i].chargeTimeType.value === "Annual Fee" && scope.charges[i].feeOnMonthDay) {
|
||||
scope.charges[i].feeOnMonthDay.push('2013');
|
||||
scope.charges[i].feeOnMonthDay = new Date(dateFilter(scope.charges[i].feeOnMonthDay, scope.df));
|
||||
}
|
||||
}
|
||||
scope.fieldOfficers = data.fieldOfficerOptions;
|
||||
scope.formData.nominalAnnualInterestRate = data.nominalAnnualInterestRate;
|
||||
scope.formData.lockinPeriodFrequency = data.lockinPeriodFrequency;
|
||||
|
||||
if (data.interestCompoundingPeriodType) scope.formData.interestCompoundingPeriodType = data.interestCompoundingPeriodType.id;
|
||||
if (data.interestPostingPeriodType) scope.formData.interestPostingPeriodType = data.interestPostingPeriodType.id;
|
||||
if (data.interestCalculationType) scope.formData.interestCalculationType = data.interestCalculationType.id;
|
||||
if (data.interestCalculationDaysInYearType) scope.formData.interestCalculationDaysInYearType = data.interestCalculationDaysInYearType.id;
|
||||
if (data.lockinPeriodFrequencyType) scope.formData.lockinPeriodFrequencyType = data.lockinPeriodFrequencyType.id;
|
||||
if (data.withdrawalFeeType) scope.formData.withdrawalFeeType = data.withdrawalFeeType.id;
|
||||
if (data.interestFreePeriodApplicable) scope.formData.interestFreePeriodApplicable = data.interestFreePeriodApplicable;
|
||||
if (data.preClosurePenalApplicable) scope.formData.preClosurePenalApplicable = data.preClosurePenalApplicable;
|
||||
|
||||
scope.chart = data.accountChart;
|
||||
//format chart date values
|
||||
if (scope.chart.fromDate) {
|
||||
var fromDate = dateFilter(scope.chart.fromDate, scope.df);
|
||||
scope.fromDate.date = new Date(fromDate);
|
||||
}
|
||||
if (scope.chart.endDate) {
|
||||
var endDate = dateFilter(scope.chart.endDate, scope.df);
|
||||
scope.endDate.date = new Date(endDate);
|
||||
}
|
||||
|
||||
var interestFreePeriodFrequencyTypeId = (_.isNull(data.interestFreePeriodFrequencyType) || _.isUndefined(data.interestFreePeriodFrequencyType)) ? '' : data.interestFreePeriodFrequencyType.id;
|
||||
var preClosurePenalInterestOnTypeId = (_.isNull(data.preClosurePenalInterestOnType) || _.isUndefined(data.preClosurePenalInterestOnType)) ? '' : data.preClosurePenalInterestOnType.id;
|
||||
var minDepositTermTypeId = (_.isNull(data.minDepositTermType) || _.isUndefined(data.minDepositTermType)) ? '' : data.minDepositTermType.id;
|
||||
var maxDepositTermTypeId = (_.isNull(data.maxDepositTermType) || _.isUndefined(data.maxDepositTermType)) ? '' : data.maxDepositTermType.id;
|
||||
var inMultiplesOfDepositTermTypeId = (_.isNull(data.inMultiplesOfDepositTermType) || _.isUndefined(data.inMultiplesOfDepositTermType)) ? '' : data.inMultiplesOfDepositTermType.id;
|
||||
|
||||
|
||||
scope.formData.recurringDepositTypeId = scope.data.recurringDepositTypeOptions[0].id;
|
||||
scope.formData.recurringDepositFrequencyTypeId = scope.data.recurringDepositFrequencyTypeOptions[0].id;
|
||||
|
||||
scope.formData.interestFreePeriodApplicable = data.interestFreePeriodApplicable;
|
||||
scope.formData.interestFreeFromPeriod = data.interestFreeFromPeriod;
|
||||
scope.formData.interestFreeToPeriod = data.interestFreeToPeriod;
|
||||
scope.formData.interestFreePeriodFrequencyTypeId = interestFreePeriodFrequencyTypeId;
|
||||
scope.formData.preClosurePenalApplicable = data.preClosurePenalApplicable;
|
||||
scope.formData.preClosurePenalInterest = data.preClosurePenalInterest;
|
||||
scope.formData.preClosurePenalInterestOnTypeId = preClosurePenalInterestOnTypeId;
|
||||
scope.formData.minDepositTerm = data.minDepositTerm;
|
||||
scope.formData.maxDepositTerm = data.maxDepositTerm;
|
||||
scope.formData.minDepositTermTypeId = minDepositTermTypeId;
|
||||
scope.formData.maxDepositTermTypeId = maxDepositTermTypeId;
|
||||
scope.formData.inMultiplesOfDepositTerm = data.inMultiplesOfDepositTerm;
|
||||
scope.formData.inMultiplesOfDepositTermTypeId = inMultiplesOfDepositTermTypeId;
|
||||
scope.formData.recurringDepositFrequency = data.recurringDepositFrequency;
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
scope.addCharge = function (chargeId) {
|
||||
scope.errorchargeevent = false;
|
||||
if (chargeId) {
|
||||
resourceFactory.chargeResource.get({chargeId: chargeId, template: 'true'}, function (data) {
|
||||
data.chargeId = data.id;
|
||||
if (data.chargeTimeType.value == "Annual Fee") {
|
||||
if (data.feeOnMonthDay) {
|
||||
data.feeOnMonthDay.push(2013);
|
||||
data.feeOnMonthDay = new Date(dateFilter(data.feeOnMonthDay, scope.df));
|
||||
}
|
||||
} else if (data.chargeTimeType.value == "Monthly Fee") {
|
||||
if (data.feeOnMonthDay) {
|
||||
data.feeOnMonthDay.push(2013);
|
||||
data.feeOnMonthDay = new Date(dateFilter(data.feeOnMonthDay, scope.df));
|
||||
}
|
||||
}
|
||||
scope.charges.push(data);
|
||||
scope.chargeId = undefined;
|
||||
});
|
||||
} else {
|
||||
scope.errorchargeevent = true;
|
||||
scope.labelchargeerror = "selectcharge";
|
||||
}
|
||||
}
|
||||
|
||||
scope.deleteCharge = function (index) {
|
||||
scope.charges.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.submit = function () {
|
||||
if (scope.date) {
|
||||
this.formData.submittedOnDate = dateFilter(scope.date.submittedOnDate, scope.df);
|
||||
}
|
||||
this.formData.locale = scope.optlang.code;
|
||||
this.formData.dateFormat = scope.df;
|
||||
this.formData.monthDayFormat = "dd MMM";
|
||||
this.formData.charges = [];
|
||||
|
||||
if (scope.clientId) this.formData.clientId = scope.clientId;
|
||||
if (scope.groupId) this.formData.groupId = scope.groupId;
|
||||
if (scope.centerId) this.formData.centerId = scope.centerId;
|
||||
|
||||
if (scope.charges.length > 0) {
|
||||
for (var i in scope.charges) {
|
||||
if (scope.charges[i].chargeTimeType.value == 'Annual Fee') {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount,
|
||||
feeOnMonthDay: dateFilter(scope.charges[i].feeOnMonthDay, 'dd MMMM')});
|
||||
} else if (scope.charges[i].chargeTimeType.value == 'Specified due date') {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount,
|
||||
dueDate: dateFilter(scope.charges[i].dueDate, scope.df)});
|
||||
} else if (scope.charges[i].chargeTimeType.value == 'Monthly Fee') {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount,
|
||||
feeOnMonthDay: dateFilter(scope.charges[i].feeOnMonthDay, 'dd MMMM'), feeInterval: scope.charges[i].feeInterval});
|
||||
} else {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.formData.charts = [];//declare charts array
|
||||
this.formData.charts.push(copyChartData(scope.chart));//add chart details
|
||||
this.formData = removeEmptyValues(this.formData);
|
||||
|
||||
resourceFactory.recurringDepositAccountResource.save(this.formData, function (data) {
|
||||
location.path('/viewrecurringdepositaccount/' + data.savingsId);
|
||||
});
|
||||
};
|
||||
|
||||
scope.cancel = function () {
|
||||
if (scope.clientId) {
|
||||
location.path('/viewclient/' + scope.clientId);
|
||||
} else if (scope.centerEntity) {
|
||||
location.path('/viewcenter/' + scope.groupId);
|
||||
} else {
|
||||
location.path('/viewgroup/' + scope.groupId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new row with default values for entering chart details
|
||||
*/
|
||||
scope.addNewRow = function () {
|
||||
var fromPeriod = '';
|
||||
var amountRangeFrom = '';
|
||||
var periodType = '';
|
||||
if (_.isNull(scope.chart.chartSlabs) || _.isUndefined(scope.chart.chartSlabs)) {
|
||||
scope.chart.chartSlabs = [];
|
||||
} else {
|
||||
var lastChartSlab = {};
|
||||
if (scope.chart.chartSlabs.length > 0) {
|
||||
lastChartSlab = angular.copy(scope.chart.chartSlabs[scope.chart.chartSlabs.length - 1]);
|
||||
}
|
||||
if (!(_.isNull(lastChartSlab) || _.isUndefined(lastChartSlab))) {
|
||||
fromPeriod = _.isNull(lastChartSlab) ? '' : parseInt(lastChartSlab.toPeriod) + 1;
|
||||
amountRangeFrom = _.isNull(lastChartSlab) ? '' : parseFloat(lastChartSlab.amountRangeTo) + 1;
|
||||
periodType = angular.copy(lastChartSlab.periodType);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var chartSlab = {
|
||||
"periodType": periodType,
|
||||
"fromPeriod": fromPeriod,
|
||||
"amountRangeFrom": amountRangeFrom
|
||||
};
|
||||
|
||||
scope.chart.chartSlabs.push(chartSlab);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* create new chart data object
|
||||
*/
|
||||
|
||||
copyChartData = function () {
|
||||
var newChartData = {
|
||||
id: scope.chart.id,
|
||||
name: scope.chart.name,
|
||||
description: scope.chart.description,
|
||||
fromDate: dateFilter(scope.fromDate.date, scope.df),
|
||||
endDate: dateFilter(scope.endDate.date, scope.df),
|
||||
//savingsProductId: scope.productId,
|
||||
dateFormat: scope.df,
|
||||
locale: scope.optlang.code,
|
||||
chartSlabs: angular.copy(copyChartSlabs(scope.chart.chartSlabs)),
|
||||
isActiveChart: 'true'
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartData, function (v, k) {
|
||||
if (!v)
|
||||
delete newChartData[k];
|
||||
});
|
||||
|
||||
return newChartData;
|
||||
}
|
||||
|
||||
/**
|
||||
* copy all chart details to a new Array
|
||||
* @param chartSlabs
|
||||
* @returns {Array}
|
||||
*/
|
||||
copyChartSlabs = function (chartSlabs) {
|
||||
var detailsArray = [];
|
||||
_.each(chartSlabs, function (chartSlab) {
|
||||
var chartSlabData = copyChartSlab(chartSlab);
|
||||
detailsArray.push(chartSlabData);
|
||||
});
|
||||
return detailsArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* create new chart detail object data from chartSlab
|
||||
* @param chartSlab
|
||||
*
|
||||
*/
|
||||
|
||||
copyChartSlab = function (chartSlab) {
|
||||
var newChartSlabData = {
|
||||
id: chartSlab.id,
|
||||
description: chartSlab.description,
|
||||
periodType: chartSlab.periodType.id,
|
||||
fromPeriod: chartSlab.fromPeriod,
|
||||
toPeriod: chartSlab.toPeriod,
|
||||
amountRangeFrom: chartSlab.amountRangeFrom,
|
||||
amountRangeTo: chartSlab.amountRangeTo,
|
||||
annualInterestRate: chartSlab.annualInterestRate,
|
||||
locale: scope.optlang.code
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartSlabData, function (v, k) {
|
||||
if (!v && v != 0)
|
||||
delete newChartSlabData[k];
|
||||
});
|
||||
|
||||
return newChartSlabData;
|
||||
}
|
||||
|
||||
removeEmptyValues = function (objArray) {
|
||||
_.each(objArray, function (v, k) {
|
||||
//alert(k + ':' + v);
|
||||
if (_.isNull(v) || _.isUndefined(v) || v === '') {
|
||||
//alert('remove' + k + ':' + v);
|
||||
delete objArray[k];
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return objArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove chart details row
|
||||
*/
|
||||
scope.removeRow = function (index) {
|
||||
scope.chart.chartSlabs.splice(index, 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('CreateRecurringDepositAccountController', ['$scope', 'ResourceFactory', '$location', '$routeParams', 'dateFilter', mifosX.controllers.CreateRecurringDepositAccountController]).run(function ($log) {
|
||||
$log.info("CreateRecurringDepositAccountController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,361 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
EditRecurringDepositAccountController: function (scope, resourceFactory, location, routeParams, dateFilter) {
|
||||
scope.products = [];
|
||||
scope.fieldOfficers = [];
|
||||
scope.formData = {};
|
||||
scope.accountId = routeParams.id;
|
||||
scope.charges = [];
|
||||
scope.restrictDate = new Date();
|
||||
//interest rate chart details
|
||||
scope.chart = {};
|
||||
scope.fromDate = {}; //required for date formatting
|
||||
scope.endDate = {};//required for date formatting
|
||||
|
||||
resourceFactory.recurringDepositAccountResource.get({accountId: scope.accountId, template: 'true', associations: 'charges'}, function (data) {
|
||||
scope.data = data;
|
||||
scope.charges = data.charges || [];
|
||||
if (scope.charges) {
|
||||
for (var i in scope.charges) {
|
||||
if (scope.charges[i].chargeTimeType.value == 'Annual Fee') {
|
||||
scope.charges[i].feeOnMonthDay.push(2013);
|
||||
scope.charges[i].feeOnMonthDay = new Date(dateFilter(scope.charges[i].feeOnMonthDay, scope.df));
|
||||
} else if (scope.charges[i].chargeTimeType.value == "Monthly Fee") {
|
||||
scope.charges[i].feeOnMonthDay.push(2013);
|
||||
scope.charges[i].feeOnMonthDay = new Date(dateFilter(scope.charges[i].feeOnMonthDay, scope.df));
|
||||
} else if (scope.charges[i].chargeTimeType.value == 'Specified due date') {
|
||||
scope.charges[i].dueDate = new Date(dateFilter(scope.charges[i].dueDate, scope.df));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (data.clientId) {
|
||||
scope.formData.clientId = data.clientId;
|
||||
scope.clientName = data.clientName;
|
||||
}
|
||||
if (data.groupId) {
|
||||
scope.formData.groupId = data.groupId;
|
||||
scope.groupName = data.groupName;
|
||||
}
|
||||
scope.formData.productId = data.savingsProductId;
|
||||
scope.products = data.productOptions;
|
||||
if (data.fieldOfficerId != 0)scope.formData.fieldOfficerId = data.fieldOfficerId;
|
||||
if (data.timeline) {
|
||||
var submittedOnDate = dateFilter(data.timeline.submittedOnDate, scope.df);
|
||||
scope.formData.submittedOnDate = new Date(submittedOnDate);
|
||||
}
|
||||
scope.fieldOfficers = data.fieldOfficerOptions;
|
||||
scope.formData.nominalAnnualInterestRate = data.nominalAnnualInterestRate;
|
||||
scope.formData.recurringDepositAmount = data.recurringDepositAmount;
|
||||
scope.formData.depositPeriod = data.depositPeriod;
|
||||
scope.formData.recurringDepositFrequency = data.recurringDepositFrequency;
|
||||
scope.formData.lockinPeriodFrequency = data.lockinPeriodFrequency;
|
||||
/* FIX-ME: uncomment annualFeeAmount when datepicker avialable, because it depends on the date field 'annualFeeOnMonthDay'*/
|
||||
//scope.formData.annualFeeAmount = data.annualFeeAmount;
|
||||
//scope.formData.withdrawalFeeAmount = data.withdrawalFeeAmount;
|
||||
//scope.formData.withdrawalFeeForTransfers = data.withdrawalFeeForTransfers;
|
||||
var depositPeriodFrequencyId = (_.isNull(data.depositPeriodFrequency) || _.isUndefined(data.depositPeriodFrequency)) ? '' : data.depositPeriodFrequency.id;
|
||||
if (data.interestCompoundingPeriodType) scope.formData.interestCompoundingPeriodType = data.interestCompoundingPeriodType.id;
|
||||
if (data.interestPostingPeriodType) scope.formData.interestPostingPeriodType = data.interestPostingPeriodType.id;
|
||||
if (data.interestCalculationType) scope.formData.interestCalculationType = data.interestCalculationType.id;
|
||||
if (data.interestCalculationDaysInYearType) scope.formData.interestCalculationDaysInYearType = data.interestCalculationDaysInYearType.id;
|
||||
if (data.lockinPeriodFrequencyType) scope.formData.lockinPeriodFrequencyType = data.lockinPeriodFrequencyType.id;
|
||||
//if (data.withdrawalFeeType) scope.formData.withdrawalFeeType = data.withdrawalFeeType.id;
|
||||
|
||||
scope.chart = data.accountChart;
|
||||
//format chart date values
|
||||
if (scope.chart.fromDate) {
|
||||
var fromDate = dateFilter(scope.chart.fromDate, scope.df);
|
||||
scope.fromDate.date = new Date(fromDate);
|
||||
}
|
||||
if (scope.chart.endDate) {
|
||||
var endDate = dateFilter(scope.chart.endDate, scope.df);
|
||||
scope.endDate.date = new Date(endDate);
|
||||
}
|
||||
|
||||
var depositPeriodFrequencyId = (_.isNull(data.depositPeriodFrequency) || _.isUndefined(data.depositPeriodFrequency)) ? '' : data.depositPeriodFrequency.id;
|
||||
var interestFreePeriodFrequencyTypeId = (_.isNull(data.interestFreePeriodFrequencyType) || _.isUndefined(data.interestFreePeriodFrequencyType)) ? '' : data.interestFreePeriodFrequencyType.id;
|
||||
var preClosurePenalInterestOnTypeId = (_.isNull(data.preClosurePenalInterestOnType) || _.isUndefined(data.preClosurePenalInterestOnType)) ? '' : data.preClosurePenalInterestOnType.id;
|
||||
var minDepositTermTypeId = (_.isNull(data.minDepositTermType) || _.isUndefined(data.minDepositTermType)) ? '' : data.minDepositTermType.id;
|
||||
var maxDepositTermTypeId = (_.isNull(data.maxDepositTermType) || _.isUndefined(data.maxDepositTermType)) ? '' : data.maxDepositTermType.id;
|
||||
var inMultiplesOfDepositTermTypeId = (_.isNull(data.inMultiplesOfDepositTermType) || _.isUndefined(data.inMultiplesOfDepositTermType)) ? '' : data.inMultiplesOfDepositTermType.id;
|
||||
var recurringDepositTypeId = (_.isNull(data.recurringDepositType) || _.isUndefined(data.recurringDepositType)) ? '' : data.recurringDepositType.id;
|
||||
var recurringDepositFrequencyTypeId = (_.isNull(data.recurringDepositFrequencyType) || _.isUndefined(data.recurringDepositFrequencyType)) ? '' : data.recurringDepositFrequencyType.id;
|
||||
|
||||
scope.formData.depositPeriodFrequencyId = depositPeriodFrequencyId;
|
||||
scope.formData.interestFreePeriodApplicable = data.interestFreePeriodApplicable;
|
||||
scope.formData.interestFreeFromPeriod = data.interestFreeFromPeriod;
|
||||
scope.formData.interestFreeToPeriod = data.interestFreeToPeriod;
|
||||
scope.formData.interestFreePeriodFrequencyTypeId = interestFreePeriodFrequencyTypeId;
|
||||
scope.formData.preClosurePenalApplicable = data.preClosurePenalApplicable;
|
||||
scope.formData.preClosurePenalInterest = data.preClosurePenalInterest;
|
||||
scope.formData.preClosurePenalInterestOnTypeId = preClosurePenalInterestOnTypeId;
|
||||
scope.formData.minDepositTerm = data.minDepositTerm;
|
||||
scope.formData.maxDepositTerm = data.maxDepositTerm;
|
||||
scope.formData.minDepositTermTypeId = minDepositTermTypeId;
|
||||
scope.formData.maxDepositTermTypeId = maxDepositTermTypeId;
|
||||
scope.formData.inMultiplesOfDepositTerm = data.inMultiplesOfDepositTerm;
|
||||
scope.formData.inMultiplesOfDepositTermTypeId = inMultiplesOfDepositTermTypeId;
|
||||
scope.formData.recurringDepositTypeId = recurringDepositTypeId;
|
||||
scope.formData.recurringDepositFrequencyTypeId = recurringDepositFrequencyTypeId;
|
||||
|
||||
});
|
||||
|
||||
scope.changeProduct = function () {
|
||||
var inparams = {productId: scope.formData.productId};
|
||||
if (scope.formData.clientId) inparams.clientId = scope.formData.clientId;
|
||||
if (scope.formData.groupId) inparams.groupId = scope.formData.groupId;
|
||||
resourceFactory.recurringDepositAccountTemplateResource.get(inparams, function (data) {
|
||||
|
||||
scope.data = data;
|
||||
|
||||
scope.fieldOfficers = data.fieldOfficerOptions;
|
||||
scope.formData.nominalAnnualInterestRate = data.nominalAnnualInterestRate;
|
||||
scope.formData.recurringDepositAmount = data.recurringDepositAmount;
|
||||
scope.formData.depositPeriod = data.depositPeriod;
|
||||
scope.formData.recurringDepositFrequency = data.recurringDepositFrequency;
|
||||
scope.formData.lockinPeriodFrequency = data.lockinPeriodFrequency;
|
||||
/* FIX-ME: uncomment annualFeeAmount when datepicker avialable, because it depends on the date field 'annualFeeOnMonthDay'*/
|
||||
//scope.formData.annualFeeAmount = data.annualFeeAmount;
|
||||
//scope.formData.withdrawalFeeAmount = data.withdrawalFeeAmount;
|
||||
//scope.formData.withdrawalFeeForTransfers = data.withdrawalFeeForTransfers;
|
||||
|
||||
if (data.interestCompoundingPeriodType) scope.formData.interestCompoundingPeriodType = data.interestCompoundingPeriodType.id;
|
||||
if (data.interestPostingPeriodType) scope.formData.interestPostingPeriodType = data.interestPostingPeriodType.id;
|
||||
if (data.interestCalculationType) scope.formData.interestCalculationType = data.interestCalculationType.id;
|
||||
if (data.interestCalculationDaysInYearType) scope.formData.interestCalculationDaysInYearType = data.interestCalculationDaysInYearType.id;
|
||||
if (data.lockinPeriodFrequencyType) scope.formData.lockinPeriodFrequencyType = data.lockinPeriodFrequencyType.id;
|
||||
//if (data.withdrawalFeeType) scope.formData.withdrawalFeeType = data.withdrawalFeeType.id;
|
||||
|
||||
scope.chart = data.accountChart;
|
||||
//format chart date values
|
||||
if (scope.chart.fromDate) {
|
||||
var fromDate = dateFilter(scope.chart.fromDate, scope.df);
|
||||
scope.fromDate.date = new Date(fromDate);
|
||||
}
|
||||
if (scope.chart.endDate) {
|
||||
var endDate = dateFilter(scope.chart.endDate, scope.df);
|
||||
scope.endDate.date = new Date(endDate);
|
||||
}
|
||||
|
||||
var depositPeriodFrequencyId = (_.isNull(data.depositPeriodFrequency) || _.isUndefined(data.depositPeriodFrequency)) ? '' : data.depositPeriodFrequency.id;
|
||||
var interestFreePeriodFrequencyTypeId = (_.isNull(data.interestFreePeriodFrequencyType) || _.isUndefined(data.interestFreePeriodFrequencyType)) ? '' : data.interestFreePeriodFrequencyType.id;
|
||||
var preClosurePenalInterestOnTypeId = (_.isNull(data.preClosurePenalInterestOnType) || _.isUndefined(data.preClosurePenalInterestOnType)) ? '' : data.preClosurePenalInterestOnType.id;
|
||||
var minDepositTermTypeId = (_.isNull(data.minDepositTermType) || _.isUndefined(data.minDepositTermType)) ? '' : data.minDepositTermType.id;
|
||||
var maxDepositTermTypeId = (_.isNull(data.maxDepositTermType) || _.isUndefined(data.maxDepositTermType)) ? '' : data.maxDepositTermType.id;
|
||||
var inMultiplesOfDepositTermTypeId = (_.isNull(data.inMultiplesOfDepositTermType) || _.isUndefined(data.inMultiplesOfDepositTermType)) ? '' : data.inMultiplesOfDepositTermType.id;
|
||||
var recurringDepositTypeId = (_.isNull(data.recurringDepositType) || _.isUndefined(data.recurringDepositType)) ? '' : data.recurringDepositType.id;
|
||||
var recurringDepositFrequencyTypeId = (_.isNull(data.recurringDepositFrequencyType) || _.isUndefined(data.recurringDepositFrequencyType)) ? '' : data.recurringDepositFrequencyType.id;
|
||||
|
||||
scope.formData.depositPeriodFrequencyId = depositPeriodFrequencyId;
|
||||
scope.formData.interestFreePeriodApplicable = data.interestFreePeriodApplicable;
|
||||
scope.formData.interestFreeFromPeriod = data.interestFreeFromPeriod;
|
||||
scope.formData.interestFreeToPeriod = data.interestFreeToPeriod;
|
||||
scope.formData.interestFreePeriodFrequencyTypeId = interestFreePeriodFrequencyTypeId;
|
||||
scope.formData.preClosurePenalApplicable = data.preClosurePenalApplicable;
|
||||
scope.formData.preClosurePenalInterest = data.preClosurePenalInterest;
|
||||
scope.formData.preClosurePenalInterestOnTypeId = preClosurePenalInterestOnTypeId;
|
||||
scope.formData.minDepositTerm = data.minDepositTerm;
|
||||
scope.formData.maxDepositTerm = data.maxDepositTerm;
|
||||
scope.formData.minDepositTermTypeId = minDepositTermTypeId;
|
||||
scope.formData.maxDepositTermTypeId = maxDepositTermTypeId;
|
||||
scope.formData.inMultiplesOfDepositTerm = data.inMultiplesOfDepositTerm;
|
||||
scope.formData.inMultiplesOfDepositTermTypeId = inMultiplesOfDepositTermTypeId;
|
||||
scope.formData.recurringDepositTypeId = recurringDepositTypeId;
|
||||
scope.formData.recurringDepositFrequencyTypeId = recurringDepositFrequencyTypeId;
|
||||
});
|
||||
}
|
||||
|
||||
scope.addCharge = function (chargeId) {
|
||||
scope.errorchargeevent = false;
|
||||
if (chargeId) {
|
||||
resourceFactory.chargeResource.get({chargeId: chargeId, template: 'true'}, function (data) {
|
||||
data.chargeId = data.id;
|
||||
if (data.chargeTimeType.value == "Annual Fee") {
|
||||
if (data.feeOnMonthDay) {
|
||||
data.feeOnMonthDay.push(2013);
|
||||
data.feeOnMonthDay = new Date(dateFilter(data.feeOnMonthDay, scope.df));
|
||||
}
|
||||
} else if (data.chargeTimeType.value == "Monthly Fee") {
|
||||
if (data.feeOnMonthDay) {
|
||||
data.feeOnMonthDay.push(2013);
|
||||
data.feeOnMonthDay = new Date(dateFilter(data.feeOnMonthDay, scope.df));
|
||||
}
|
||||
}
|
||||
|
||||
delete data.id;
|
||||
scope.charges.push(data);
|
||||
scope.chargeId = undefined;
|
||||
});
|
||||
} else {
|
||||
scope.errorchargeevent = true;
|
||||
scope.labelchargeerror = "selectcharge";
|
||||
}
|
||||
}
|
||||
|
||||
scope.deleteCharge = function (index) {
|
||||
scope.charges.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.cancel = function () {
|
||||
location.path('/viewsavingaccount/' + scope.accountId);
|
||||
}
|
||||
|
||||
scope.submit = function () {
|
||||
if (this.formData.submittedOnDate) this.formData.submittedOnDate = dateFilter(this.formData.submittedOnDate, scope.df);
|
||||
this.formData.locale = scope.optlang.code;
|
||||
this.formData.dateFormat = scope.df;
|
||||
this.formData.monthDayFormat = "dd MMM";
|
||||
scope.formData.charges = [];
|
||||
if (scope.charges.length > 0) {
|
||||
for (var i in scope.charges) {
|
||||
if (scope.charges[i].chargeTimeType.value == 'Annual Fee') {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount,
|
||||
feeOnMonthDay: dateFilter(scope.charges[i].feeOnMonthDay, 'dd MMMM')});
|
||||
} else if (scope.charges[i].chargeTimeType.value == 'Specified due date') {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount,
|
||||
dueDate: dateFilter(scope.charges[i].dueDate, scope.df)});
|
||||
} else if (scope.charges[i].chargeTimeType.value == 'Monthly Fee') {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount,
|
||||
feeOnMonthDay: dateFilter(scope.charges[i].feeOnMonthDay, 'dd MMMM'), feeInterval: scope.charges[i].feeInterval});
|
||||
} else {
|
||||
this.formData.charges.push({ chargeId: scope.charges[i].chargeId, amount: scope.charges[i].amount});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.formData.charts = [];//declare charts array
|
||||
this.formData.charts.push(copyChartData(scope.chart));//add chart details
|
||||
this.formData = removeEmptyValues(this.formData);
|
||||
|
||||
resourceFactory.recurringDepositAccountResource.update({'accountId': scope.accountId}, this.formData, function (data) {
|
||||
location.path('/viewrecurringdepositaccount/' + data.savingsId);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Add a new row with default values for entering chart details
|
||||
*/
|
||||
scope.addNewRow = function () {
|
||||
var fromPeriod = '';
|
||||
var amountRangeFrom = '';
|
||||
var periodType = '';
|
||||
if (_.isNull(scope.chart.chartSlabs) || _.isUndefined(scope.chart.chartSlabs)) {
|
||||
scope.chart.chartSlabs = [];
|
||||
} else {
|
||||
var lastChartSlab = {};
|
||||
if (scope.chart.chartSlabs.length > 0) {
|
||||
lastChartSlab = angular.copy(scope.chart.chartSlabs[scope.chart.chartSlabs.length - 1]);
|
||||
}
|
||||
if (!(_.isNull(lastChartSlab) || _.isUndefined(lastChartSlab))) {
|
||||
fromPeriod = _.isNull(lastChartSlab) ? '' : parseInt(lastChartSlab.toPeriod) + 1;
|
||||
amountRangeFrom = _.isNull(lastChartSlab) ? '' : parseFloat(lastChartSlab.amountRangeTo) + 1;
|
||||
periodType = angular.copy(lastChartSlab.periodType);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var chartSlab = {
|
||||
"periodType": periodType,
|
||||
"fromPeriod": fromPeriod,
|
||||
"amountRangeFrom": amountRangeFrom
|
||||
};
|
||||
|
||||
scope.chart.chartSlabs.push(chartSlab);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* create new chart data object
|
||||
*/
|
||||
|
||||
copyChartData = function () {
|
||||
var newChartData = {
|
||||
id: scope.chart.id,
|
||||
name: scope.chart.name,
|
||||
description: scope.chart.description,
|
||||
fromDate: dateFilter(scope.fromDate.date, scope.df),
|
||||
endDate: dateFilter(scope.endDate.date, scope.df),
|
||||
//savingsProductId: scope.productId,
|
||||
dateFormat: scope.df,
|
||||
locale: scope.optlang.code,
|
||||
chartSlabs: angular.copy(copyChartSlabs(scope.chart.chartSlabs)),
|
||||
isActiveChart: 'true'
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartData, function (v, k) {
|
||||
if (!v)
|
||||
delete newChartData[k];
|
||||
});
|
||||
|
||||
return newChartData;
|
||||
}
|
||||
|
||||
/**
|
||||
* copy all chart details to a new Array
|
||||
* @param chartSlabs
|
||||
* @returns {Array}
|
||||
*/
|
||||
copyChartSlabs = function (chartSlabs) {
|
||||
var detailsArray = [];
|
||||
_.each(chartSlabs, function (chartSlab) {
|
||||
var chartSlabData = copyChartSlab(chartSlab);
|
||||
detailsArray.push(chartSlabData);
|
||||
});
|
||||
return detailsArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* create new chart detail object data from chartSlab
|
||||
* @param chartSlab
|
||||
*
|
||||
*/
|
||||
|
||||
copyChartSlab = function (chartSlab) {
|
||||
var newChartSlabData = {
|
||||
id: chartSlab.id,
|
||||
description: chartSlab.description,
|
||||
periodType: chartSlab.periodType.id,
|
||||
fromPeriod: chartSlab.fromPeriod,
|
||||
toPeriod: chartSlab.toPeriod,
|
||||
amountRangeFrom: chartSlab.amountRangeFrom,
|
||||
amountRangeTo: chartSlab.amountRangeTo,
|
||||
annualInterestRate: chartSlab.annualInterestRate,
|
||||
locale: scope.optlang.code
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartSlabData, function (v, k) {
|
||||
if (!v && v != 0)
|
||||
delete newChartSlabData[k];
|
||||
});
|
||||
|
||||
return newChartSlabData;
|
||||
}
|
||||
|
||||
removeEmptyValues = function (objArray) {
|
||||
_.each(objArray, function (v, k) {
|
||||
//alert(k + ':' + v);
|
||||
if (_.isNull(v) || _.isUndefined(v) || v === '') {
|
||||
//alert('remove' + k + ':' + v);
|
||||
delete objArray[k];
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return objArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove chart details row
|
||||
*/
|
||||
scope.removeRow = function (index) {
|
||||
scope.chart.chartSlabs.splice(index, 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('EditRecurringDepositAccountController', ['$scope', 'ResourceFactory', '$location', '$routeParams', 'dateFilter', mifosX.controllers.EditRecurringDepositAccountController]).run(function ($log) {
|
||||
$log.info("EditRecurringDepositAccountController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,308 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
RecurringDepositAccountActionsController: function (scope, resourceFactory, location, routeParams, dateFilter) {
|
||||
|
||||
scope.action = routeParams.action || "";
|
||||
scope.accountId = routeParams.id;
|
||||
scope.savingAccountId = routeParams.id;
|
||||
scope.formData = {};
|
||||
scope.restrictDate = new Date();
|
||||
// Transaction UI Related
|
||||
scope.isAccountClose = false;
|
||||
scope.showPaymentDetails = false;
|
||||
scope.paymentTypes = [];
|
||||
|
||||
switch (scope.action) {
|
||||
case "approve":
|
||||
scope.title = 'label.heading.approverecurringdepositaccount';
|
||||
scope.labelName = 'label.input.savingaccountapprovedOnDate';
|
||||
scope.modelName = 'approvedOnDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = true;
|
||||
scope.actionName = 'Approve application';
|
||||
break;
|
||||
case "reject":
|
||||
scope.title = 'label.heading.rejectrecurringdepositaccount';
|
||||
scope.labelName = 'label.input.rejectedon';
|
||||
scope.modelName = 'rejectedOnDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = true;
|
||||
scope.actionName = 'Reject application';
|
||||
break;
|
||||
case "withdrawnByApplicant":
|
||||
scope.title = 'label.heading.withdrawnrecurringdepositaccount';
|
||||
scope.labelName = 'label.input.withdrawnon';
|
||||
scope.modelName = 'withdrawnOnDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = true;
|
||||
scope.actionName = 'Withdrawn by applicant';
|
||||
break;
|
||||
case "undoapproval":
|
||||
scope.title = 'label.heading.undoapproverecurringdepositaccount';
|
||||
scope.showDateField = false;
|
||||
scope.showNoteField = true;
|
||||
scope.actionName = 'Undo Approve application';
|
||||
break;
|
||||
case "activate":
|
||||
scope.title = 'label.heading.activaterecurringdepositaccount';
|
||||
scope.labelName = 'label.input.activatedon';
|
||||
scope.modelName = 'activatedOnDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = false;
|
||||
scope.actionName = 'Approve application';
|
||||
break;
|
||||
case "deposit":
|
||||
resourceFactory.recurringDepositTrxnsTemplateResource.get({savingsId: scope.accountId, command: 'deposit'}, function (data) {
|
||||
scope.formData.transactionAmount = data.amount;
|
||||
scope.paymentTypes = data.paymentTypeOptions;
|
||||
scope.formData.transactionDate=new Date(dateFilter(data.date, scope.df));
|
||||
});
|
||||
scope.title = 'label.heading.depositmoneytorecurringaccount';
|
||||
scope.labelName = 'label.input.transactiondate';
|
||||
scope.modelName = 'transactionDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = false;
|
||||
scope.isTransaction = true;
|
||||
scope.showPaymentDetails = false;
|
||||
scope.showPaymentType=true;
|
||||
scope.showAmount=true;
|
||||
break;
|
||||
case "withdrawal":
|
||||
resourceFactory.savingsTrxnsTemplateResource.get({savingsId: scope.accountId, command: 'withdrawal'}, function (data) {
|
||||
scope.paymentTypes = data.paymentTypeOptions;
|
||||
});
|
||||
scope.title = 'label.heading.withdrawmoneyfromsavingaccount';
|
||||
scope.labelName = 'label.input.transactiondate';
|
||||
scope.modelName = 'transactionDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = false;
|
||||
scope.isTransaction = true;
|
||||
scope.showPaymentDetails = false;
|
||||
scope.showPaymentType=true;
|
||||
break;
|
||||
case "applyAnnualFees":
|
||||
resourceFactory.savingsResource.get({accountId: routeParams.id, resourceType: 'charges', chargeId: routeParams.chargeId},
|
||||
function (data) {
|
||||
scope.formData.amount = data.amount;
|
||||
if (data.dueDate) {
|
||||
var dueDate = dateFilter(data.dueDate, scope.df);
|
||||
scope.formData.dueDate = new Date(dueDate);
|
||||
}
|
||||
});
|
||||
scope.title = 'label.heading.savingaccountapplyannualFee';
|
||||
scope.labelName = 'label.input.annualfeetransactiondate';
|
||||
scope.modelName = 'dueDate';
|
||||
scope.showDateField = true;
|
||||
scope.showAnnualAmountField = true;
|
||||
scope.showAmountField = false;
|
||||
scope.showNoteField = false;
|
||||
break;
|
||||
case "close":
|
||||
resourceFactory.recurringDepositAccountResource.get({accountId: routeParams.id, resourceType: 'template', command: 'close'},
|
||||
function (data) {
|
||||
scope.maturityAmount = data.maturityAmount;
|
||||
scope.onAccountClosureOptions = data.onAccountClosureOptions;
|
||||
scope.savingsAccounts = data.savingsAccounts;
|
||||
scope.paymentTypes = data.paymentTypeOptions;
|
||||
scope.currency = data.currency;
|
||||
});
|
||||
scope.title = 'label.heading.closerecurringdepositaccount';
|
||||
scope.labelName = 'label.input.closedon';
|
||||
scope.modelName = 'closedOnDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = true;
|
||||
scope.isAccountClose = true;
|
||||
scope.showPaymentType=true;
|
||||
break;
|
||||
case "prematureClose":
|
||||
scope.title = 'label.heading.prematurecloserecurringdepositaccount';
|
||||
scope.labelName = 'label.input.closedon';
|
||||
scope.modelName = 'closedOnDate';
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = false;
|
||||
scope.retrievePreMatureAmount = true;
|
||||
scope.showPaymentType=false;
|
||||
break;
|
||||
case "modifytransaction":
|
||||
resourceFactory.recurringDepositTrxnsResource.get({savingsId: scope.accountId, transactionId: routeParams.transactionId, template: 'true'},
|
||||
function (data) {
|
||||
scope.title = 'label.heading.editrecurringdepositaccounttransaction';
|
||||
scope.labelName = 'label.input.transactiondate';
|
||||
scope.modelName = 'transactionDate';
|
||||
scope.formData[scope.modelName] = new Date(data.date) || new Date();
|
||||
scope.paymentTypes = data.paymentTypeOptions;
|
||||
scope.formData.transactionAmount = data.amount;
|
||||
if (data.paymentDetailData) {
|
||||
if (data.paymentDetailData.paymentType) {
|
||||
scope.formData.paymentTypeId = data.paymentDetailData.paymentType.id;
|
||||
}
|
||||
scope.formData.accountNumber = data.paymentDetailData.accountNumber;
|
||||
scope.formData.checkNumber = data.paymentDetailData.checkNumber;
|
||||
scope.formData.routingCode = data.paymentDetailData.routingCode;
|
||||
scope.formData.receiptNumber = data.paymentDetailData.receiptNumber;
|
||||
scope.formData.bankNumber = data.paymentDetailData.bankNumber;
|
||||
}
|
||||
});
|
||||
scope.showDateField = true;
|
||||
scope.showNoteField = false;
|
||||
scope.isTransaction = true;
|
||||
scope.showPaymentDetails = false;
|
||||
scope.showPaymentType=true;
|
||||
scope.showAmount=true;
|
||||
break;
|
||||
case "editsavingcharge":
|
||||
resourceFactory.savingsResource.get({accountId: routeParams.id, resourceType: 'charges', chargeId: routeParams.chargeId},
|
||||
function (data) {
|
||||
scope.formData.amount = data.amount;
|
||||
if (data.feeOnMonthDay) {
|
||||
scope.dateArray = [];
|
||||
scope.dateArray.push(2013)
|
||||
for (var i in data.feeOnMonthDay) {
|
||||
scope.dateArray.push(data.feeOnMonthDay[i]);
|
||||
}
|
||||
var feeOnMonthDay = dateFilter(scope.dateArray, scope.df);
|
||||
scope.formData.feeOnMonthDayFullDate = new Date(feeOnMonthDay);
|
||||
scope.labelName = 'label.heading.savingaccounttransactionDate';
|
||||
scope.modelName = 'feeOnMonthDayFullDate';
|
||||
scope.showDateField = true;
|
||||
scope.showAnnualAmountField = true;
|
||||
scope.showAmountField = false;
|
||||
} else {
|
||||
scope.labelName = 'label.amount';
|
||||
scope.modelName = 'amount';
|
||||
scope.showDateField = false;
|
||||
scope.showAnnualAmountField = false;
|
||||
scope.showAmountField = true;
|
||||
}
|
||||
});
|
||||
break;
|
||||
case "deletesavingcharge":
|
||||
scope.showDelete = true;
|
||||
break;
|
||||
case "paycharge":
|
||||
scope.formData.dueDate = new Date();
|
||||
resourceFactory.savingsResource.get({accountId: routeParams.id, resourceType: 'charges', chargeId: routeParams.chargeId,
|
||||
command: 'paycharge'}, function (data) {
|
||||
scope.formData.amount = data.amountOutstanding;
|
||||
});
|
||||
scope.labelName = 'label.amount';
|
||||
scope.showAmountField = true;
|
||||
scope.paymentDatefield = true;
|
||||
scope.modelName = 'dueDate';
|
||||
break;
|
||||
case "waive":
|
||||
scope.waiveCharge = true;
|
||||
break;
|
||||
}
|
||||
|
||||
scope.cancel = function () {
|
||||
location.path('/viewrecurringdepositaccount/' + routeParams.id);
|
||||
};
|
||||
|
||||
scope.submit = function () {
|
||||
var params = {command: scope.action};
|
||||
if (scope.action != "undoapproval") {
|
||||
this.formData.locale = scope.optlang.code;
|
||||
this.formData.dateFormat = scope.df;
|
||||
}
|
||||
if (scope.action == "deposit" || scope.action == "modifytransaction") {
|
||||
if (scope.action == "deposit") {
|
||||
if (this.formData.transactionDate) {
|
||||
this.formData.transactionDate = dateFilter(this.formData.transactionDate, scope.df);
|
||||
}
|
||||
params.command = 'deposit';
|
||||
}
|
||||
if (scope.action == "modifytransaction") {
|
||||
params.command = 'modify';
|
||||
if (this.formData.transactionDate) {
|
||||
this.formData.transactionDate = dateFilter(this.formData.transactionDate, scope.df);
|
||||
}
|
||||
params.transactionId = routeParams.transactionId;
|
||||
}
|
||||
params.savingsId = scope.accountId;
|
||||
resourceFactory.recurringDepositTrxnsResource.save(params, this.formData, function (data) {
|
||||
location.path('/viewrecurringdepositaccount/' + data.savingsId);
|
||||
});
|
||||
} else if (scope.action == "editsavingcharge") {
|
||||
if (this.formData.feeOnMonthDayFullDate) {
|
||||
this.formData.feeOnMonthDay = dateFilter(this.formData.feeOnMonthDayFullDate, scope.df);
|
||||
this.formData.monthDayFormat = "dd MMM";
|
||||
this.formData.feeOnMonthDay = this.formData.feeOnMonthDay.substring(0, this.formData.feeOnMonthDay.length - 5);
|
||||
delete this.formData.feeOnMonthDayFullDate;
|
||||
}
|
||||
resourceFactory.savingsResource.update({accountId: routeParams.id, resourceType: 'charges', chargeId: routeParams.chargeId}, this.formData,
|
||||
function (data) {
|
||||
location.path('/viewrecurringdepositaccount/' + data.savingsId);
|
||||
});
|
||||
} else if (scope.action == "deletesavingcharge") {
|
||||
resourceFactory.savingsResource.delete({accountId: routeParams.id, resourceType: 'charges', chargeId: routeParams.chargeId}, this.formData,
|
||||
function (data) {
|
||||
location.path('/viewrecurringdepositaccount/' + data.savingsId);
|
||||
});
|
||||
} else if (scope.action == "paycharge" || scope.action == "waive") {
|
||||
params = {accountId: routeParams.id, resourceType: 'charges', chargeId: routeParams.chargeId, command: scope.action};
|
||||
if (this.formData.dueDate) {
|
||||
this.formData.dueDate = dateFilter(this.formData.dueDate, scope.df);
|
||||
}
|
||||
resourceFactory.savingsResource.save(params, this.formData, function (data) {
|
||||
location.path('/viewrecurringdepositaccount/' + data.savingsId);
|
||||
});
|
||||
} else {
|
||||
params.accountId = scope.accountId;
|
||||
if (scope.action == "approve") {
|
||||
if (this.formData.approvedOnDate) {
|
||||
this.formData.approvedOnDate = dateFilter(this.formData.approvedOnDate, scope.df);
|
||||
}
|
||||
} else if (scope.action == "withdrawnByApplicant") {
|
||||
if (this.formData.withdrawnOnDate) {
|
||||
this.formData.withdrawnOnDate = dateFilter(this.formData.withdrawnOnDate, scope.df);
|
||||
}
|
||||
} else if (scope.action == "reject") {
|
||||
if (this.formData.rejectedOnDate) {
|
||||
this.formData.rejectedOnDate = dateFilter(this.formData.rejectedOnDate, scope.df);
|
||||
}
|
||||
} else if (scope.action == "activate") {
|
||||
if (this.formData.activatedOnDate) {
|
||||
this.formData.activatedOnDate = dateFilter(this.formData.activatedOnDate, scope.df);
|
||||
}
|
||||
/*} else if (scope.action == "applyAnnualFees" || scope.action == "paycharge" || scope.action == "waivecharge") {
|
||||
params = {accountId : routeParams.id, resourceType : 'charges', chargeId : routeParams.chargeId, command : 'paycharge'};
|
||||
if (this.formData.dueDate) {
|
||||
this.formData.dueDate = dateFilter(this.formData.dueDate,scope.df);
|
||||
}*/
|
||||
} else if (scope.action === "close") {
|
||||
if (this.formData.closedOnDate) {
|
||||
this.formData.closedOnDate = dateFilter(this.formData.closedOnDate, scope.df);
|
||||
}
|
||||
} else if (scope.action === "prematureClose") {
|
||||
if (this.formData.closedOnDate) {
|
||||
this.formData.closedOnDate = dateFilter(this.formData.closedOnDate, scope.df);
|
||||
}
|
||||
if (scope.retrievePreMatureAmount) {
|
||||
params = {accountId: routeParams.id, command: 'calculatePrematureAmount'};
|
||||
resourceFactory.recurringDepositAccountResource.save(params, this.formData, function (data) {
|
||||
scope.maturityAmount = data.maturityAmount;
|
||||
scope.onAccountClosureOptions = data.onAccountClosureOptions;
|
||||
scope.savingsAccounts = data.savingsAccounts;
|
||||
scope.paymentTypes = data.paymentTypeOptions;
|
||||
scope.currency = data.currency;
|
||||
});
|
||||
scope.isAccountClose = true;
|
||||
scope.showNoteField = true;
|
||||
scope.retrievePreMatureAmount = false;
|
||||
scope.showPaymentType=true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
resourceFactory.recurringDepositAccountResource.save(params, this.formData, function (data) {
|
||||
location.path('/viewrecurringdepositaccount/' + data.savingsId);
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('RecurringDepositAccountActionsController', ['$scope', 'ResourceFactory', '$location', '$routeParams', 'dateFilter', mifosX.controllers.RecurringDepositAccountActionsController]).run(function ($log) {
|
||||
$log.info("RecurringDepositAccountActionsController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,262 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
ViewRecurringDepositAccountDetailsController: function (scope, routeParams, resourceFactory, location, route, dateFilter) {
|
||||
scope.isDebit = function (savingsTransactionType) {
|
||||
return savingsTransactionType.withdrawal == true || savingsTransactionType.feeDeduction == true;
|
||||
};
|
||||
|
||||
scope.clickEvent = function (eventName, accountId) {
|
||||
eventName = eventName || "";
|
||||
switch (eventName) {
|
||||
case "modifyapplication":
|
||||
location.path('/editrecurringdepositaccount/' + accountId);
|
||||
break;
|
||||
case "approve":
|
||||
location.path('/recurringdepositaccount/' + accountId + '/approve');
|
||||
break;
|
||||
case "reject":
|
||||
location.path('/recurringdepositaccount/' + accountId + '/reject');
|
||||
break;
|
||||
case "withdrawnbyclient":
|
||||
location.path('/recurringdepositaccount/' + accountId + '/withdrawnByApplicant');
|
||||
break;
|
||||
case "delete":
|
||||
resourceFactory.recurringDepositAccountResource.delete({accountId: accountId}, {}, function (data) {
|
||||
var destination = '/viewgroup/' + data.groupId;
|
||||
if (data.clientId) destination = '/viewclient/' + data.clientId;
|
||||
location.path(destination);
|
||||
});
|
||||
break;
|
||||
case "undoapproval":
|
||||
location.path('/recurringdepositaccount/' + accountId + '/undoapproval');
|
||||
break;
|
||||
case "activate":
|
||||
location.path('/recurringdepositaccount/' + accountId + '/activate');
|
||||
break;
|
||||
case "deposit":
|
||||
location.path('/recurringdepositaccount/' + accountId + '/deposit');
|
||||
break;
|
||||
/*case "withdraw":
|
||||
location.path('/recurringdepositaccount/' + accountId + '/withdrawal');
|
||||
break;*/
|
||||
case "addcharge":
|
||||
location.path('/recurringdepositaccount/' + accountId + '/charges');
|
||||
break;
|
||||
case "calculateInterest":
|
||||
resourceFactory.recurringDepositAccountResource.save({accountId: accountId, command: 'calculateInterest'}, {}, function (data) {
|
||||
route.reload();
|
||||
});
|
||||
break;
|
||||
case "postInterest":
|
||||
resourceFactory.recurringDepositAccountResource.save({accountId: accountId, command: 'postInterest'}, {}, function (data) {
|
||||
route.reload();
|
||||
});
|
||||
break;
|
||||
/*case "applyAnnualFees":
|
||||
location.path('/savingaccountcharge/' + accountId + '/applyAnnualFees/' + scope.annualChargeId);
|
||||
break;
|
||||
case "transferFunds":
|
||||
if (scope.savingaccountdetails.clientId) {
|
||||
location.path('/accounttransfers/fromsavings/' + accountId);
|
||||
}
|
||||
break;*/
|
||||
case "close":
|
||||
location.path('/recurringdepositaccount/' + accountId + '/close');
|
||||
break;
|
||||
case "prematureClose":
|
||||
location.path('/recurringdepositaccount/' + accountId + '/prematureClose');
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
resourceFactory.recurringDepositAccountResource.get({accountId: routeParams.id, associations: 'all'}, function (data) {
|
||||
scope.savingaccountdetails = data;
|
||||
scope.status = data.status.value;
|
||||
if (scope.status == "Submitted and pending approval" || scope.status == "Active" || scope.status == "Approved") {
|
||||
scope.choice = true;
|
||||
}
|
||||
scope.chargeAction = data.status.value == "Submitted and pending approval" ? true : false;
|
||||
if (scope.savingaccountdetails.charges) {
|
||||
scope.charges = scope.savingaccountdetails.charges;
|
||||
scope.chargeTableShow = true;
|
||||
} else {
|
||||
scope.chargeTableShow = false;
|
||||
}
|
||||
if (data.status.value == "Submitted and pending approval") {
|
||||
scope.buttons = { singlebuttons: [
|
||||
{
|
||||
name: "button.modifyapplication",
|
||||
icon: "icon-pencil "
|
||||
},
|
||||
{
|
||||
name: "button.approve",
|
||||
icon: "icon-ok-sign"
|
||||
}
|
||||
],
|
||||
options: [
|
||||
{
|
||||
name: "button.reject"
|
||||
},
|
||||
{
|
||||
name: "button.withdrawnbyclient"
|
||||
},
|
||||
{
|
||||
name: "button.addcharge"
|
||||
},
|
||||
{
|
||||
name: "button.delete"
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
if (data.status.value == "Approved") {
|
||||
scope.buttons = { singlebuttons: [
|
||||
{
|
||||
name: "button.undoapproval",
|
||||
icon: "icon-undo"
|
||||
},
|
||||
{
|
||||
name: "button.activate",
|
||||
icon: "icon-ok-sign"
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
if (data.status.value == "Active") {
|
||||
scope.buttons = { singlebuttons: [
|
||||
{
|
||||
name: "button.deposit",
|
||||
icon: "icon-arrow-right"
|
||||
},
|
||||
{
|
||||
name: "button.prematureClose",
|
||||
icon: "icon-arrow-left"
|
||||
},
|
||||
{
|
||||
name: "button.calculateInterest",
|
||||
icon: "icon-table"
|
||||
}
|
||||
],
|
||||
options: [
|
||||
{
|
||||
name: "button.postInterest"
|
||||
},
|
||||
{
|
||||
name: "button.addcharge"
|
||||
}
|
||||
]
|
||||
|
||||
};
|
||||
if (data.clientId) {
|
||||
scope.buttons.options.push({
|
||||
name: "button.transferFunds"
|
||||
});
|
||||
}
|
||||
if (data.charges) {
|
||||
for (var i in scope.charges) {
|
||||
if (scope.charges[i].name == "Annual fee - INR") {
|
||||
scope.buttons.options.push({
|
||||
name: "button.applyAnnualFees"
|
||||
});
|
||||
scope.annualChargeId = scope.charges[i].id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (data.status.value == "Matured") {
|
||||
scope.buttons = { singlebuttons: [
|
||||
{
|
||||
name: "button.close",
|
||||
icon: "icon-arrow-right"
|
||||
},
|
||||
{
|
||||
name: "button.calculateInterest",
|
||||
icon: "icon-table"
|
||||
},
|
||||
{
|
||||
name: "button.postInterest",
|
||||
icon: "icon-table"
|
||||
}
|
||||
],
|
||||
options: [
|
||||
{
|
||||
name: "button.addcharge"
|
||||
}
|
||||
]
|
||||
|
||||
};
|
||||
if (data.clientId) {
|
||||
scope.buttons.options.push({
|
||||
name: "button.transferFunds"
|
||||
});
|
||||
}
|
||||
if (data.charges) {
|
||||
for (var i in scope.charges) {
|
||||
if (scope.charges[i].name == "Annual fee - INR") {
|
||||
scope.buttons.options.push({
|
||||
name: "button.applyAnnualFees"
|
||||
});
|
||||
scope.annualChargeId = scope.charges[i].id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/*var annualdueDate = [];
|
||||
annualdueDate = data.annualFee.feeOnMonthDay;
|
||||
annualdueDate.push(2013);
|
||||
scope.annualdueDate = new Date(annualdueDate);*/
|
||||
});
|
||||
|
||||
resourceFactory.DataTablesResource.getAllDataTables({apptable: 'm_savings_account'}, function (data) {
|
||||
scope.savingdatatables = data;
|
||||
});
|
||||
|
||||
scope.dataTableChange = function (datatable) {
|
||||
resourceFactory.DataTablesResource.getTableDetails({datatablename: datatable.registeredTableName,
|
||||
entityId: routeParams.id, genericResultSet: 'true'}, function (data) {
|
||||
scope.datatabledetails = data;
|
||||
scope.datatabledetails.isData = data.data.length > 0 ? true : false;
|
||||
scope.datatabledetails.isMultirow = data.columnHeaders[0].columnName == "id" ? true : false;
|
||||
scope.singleRow = [];
|
||||
for (var i in data.columnHeaders) {
|
||||
if (scope.datatabledetails.columnHeaders[i].columnCode) {
|
||||
for (var j in scope.datatabledetails.columnHeaders[i].columnValues) {
|
||||
for (var k in data.data) {
|
||||
if (data.data[k].row[i] == scope.datatabledetails.columnHeaders[i].columnValues[j].id) {
|
||||
data.data[k].row[i] = scope.datatabledetails.columnHeaders[i].columnValues[j].value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (scope.datatabledetails.isData) {
|
||||
for (var i in data.columnHeaders) {
|
||||
if (!scope.datatabledetails.isMultirow) {
|
||||
var row = {};
|
||||
row.key = data.columnHeaders[i].columnName;
|
||||
row.value = data.data[0].row[i];
|
||||
scope.singleRow.push(row);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
scope.deleteAll = function (apptableName, entityId) {
|
||||
resourceFactory.DataTablesResource.delete({datatablename: apptableName, entityId: entityId, genericResultSet: 'true'}, {}, function (data) {
|
||||
route.reload();
|
||||
});
|
||||
};
|
||||
|
||||
scope.modifyTransaction = function (accountId, transactionId) {
|
||||
location.path('/recurringdepositaccount/' + accountId + '/modifytransaction?transactionId=' + transactionId);
|
||||
};
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('ViewRecurringDepositAccountDetailsController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$route', 'dateFilter', mifosX.controllers.ViewRecurringDepositAccountDetailsController]).run(function ($log) {
|
||||
$log.info("ViewRecurringDepositAccountDetailsController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,25 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
ViewRecurringDepositTransactionController: function (scope, resourceFactory, location, routeParams, dateFilter) {
|
||||
scope.flag = false;
|
||||
resourceFactory.recurringDepositTrxnsResource.get({savingsId: routeParams.accountId, transactionId: routeParams.transactionId}, function (data) {
|
||||
scope.transaction = data;
|
||||
if (scope.transaction.transactionType.value == 'Transfer' || scope.transaction.reversed == 'true') {
|
||||
scope.flag = true;
|
||||
}
|
||||
});
|
||||
|
||||
scope.undoTransaction = function (accountId, transactionId) {
|
||||
var params = {savingsId: accountId, transactionId: transactionId, command: 'undo'};
|
||||
var formData = {dateFormat: scope.df, locale: scope.optlang.code, transactionAmount: 0};
|
||||
formData.transactionDate = dateFilter(new Date(), scope.df);
|
||||
resourceFactory.recurringDepositTrxnsResource.save(params, formData, function (data) {
|
||||
location.path('/viewrecurringdepositaccount/' + data.savingsId);
|
||||
});
|
||||
};
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('ViewRecurringDepositTransactionController', ['$scope', 'ResourceFactory', '$location', '$routeParams', 'dateFilter', mifosX.controllers.ViewRecurringDepositTransactionController]).run(function ($log) {
|
||||
$log.info("ViewRecurringDepositTransactionController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,306 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
CreateFixedDepositProductController: function (scope, resourceFactory, location, dateFilter) {
|
||||
scope.formData = {};
|
||||
scope.charges = [];
|
||||
scope.showOrHideValue = "show";
|
||||
scope.configureFundOptions = [];
|
||||
scope.specificIncomeaccounts = [];
|
||||
scope.penaltySpecificIncomeaccounts = [];
|
||||
scope.configureFundOption = {};
|
||||
|
||||
//interest rate details
|
||||
scope.chart = {};
|
||||
scope.restrictDate = new Date();
|
||||
scope.fromDate = {}; //required for date formatting
|
||||
scope.endDate = {};//required for date formatting
|
||||
|
||||
resourceFactory.fixedDepositProductResource.get({resourceType: 'template'}, function (data) {
|
||||
scope.product = data;
|
||||
scope.product.chargeOptions = scope.product.chargeOptions || [];
|
||||
scope.assetAccountOptions = scope.product.accountingMappingOptions.assetAccountOptions || [];
|
||||
scope.liabilityAccountOptions = scope.product.accountingMappingOptions.liabilityAccountOptions || [];
|
||||
scope.incomeAccountOptions = scope.product.accountingMappingOptions.incomeAccountOptions || [];
|
||||
scope.expenseAccountOptions = scope.product.accountingMappingOptions.expenseAccountOptions || [];
|
||||
|
||||
scope.formData.currencyCode = data.currencyOptions[0].code;
|
||||
scope.formData.digitsAfterDecimal = data.currencyOptions[0].decimalPlaces;
|
||||
scope.formData.interestCompoundingPeriodType = data.interestCompoundingPeriodType.id;
|
||||
scope.formData.interestPostingPeriodType = data.interestPostingPeriodType.id;
|
||||
scope.formData.interestCalculationType = data.interestCalculationType.id;
|
||||
scope.formData.interestCalculationDaysInYearType = data.interestCalculationDaysInYearType.id;
|
||||
scope.formData.preClosurePenalInterestOnTypeId = scope.product.preClosurePenalInterestOnTypeOptions[0].id;
|
||||
scope.formData.interestFreePeriodFrequencyTypeId = scope.product.interestFreePeriodTypeOptions[0].id;
|
||||
//alert(scope.formData.interestFreePeriodFrequencyTypeId);
|
||||
|
||||
//set chart template
|
||||
scope.chart = scope.product.chartTemplate;
|
||||
scope.chart.chartSlabs = [];
|
||||
|
||||
if (scope.assetAccountOptions.length > 0) {
|
||||
scope.formData.savingsReferenceAccountId = scope.assetAccountOptions[0].id;
|
||||
}
|
||||
if (scope.liabilityAccountOptions.length > 0) {
|
||||
scope.formData.savingsControlAccountId = scope.liabilityAccountOptions[0].id;
|
||||
}
|
||||
if (scope.liabilityAccountOptions.length > 1) {
|
||||
scope.formData.transfersInSuspenseAccountId = scope.liabilityAccountOptions[1].id;
|
||||
}
|
||||
if (scope.incomeAccountOptions.length > 0) {
|
||||
scope.formData.incomeFromFeeAccountId = scope.incomeAccountOptions[0].id;
|
||||
}
|
||||
if (scope.incomeAccountOptions.length > 1) {
|
||||
scope.formData.incomeFromPenaltyAccountId = scope.incomeAccountOptions[1].id;
|
||||
}
|
||||
if (scope.expenseAccountOptions.length > 0) {
|
||||
scope.formData.interestOnSavingsAccountId = scope.expenseAccountOptions[0].id;
|
||||
}
|
||||
scope.formData.accountingRule = '1';
|
||||
|
||||
});
|
||||
|
||||
//advanced accounting rule
|
||||
scope.showOrHide = function (showOrHideValue) {
|
||||
|
||||
if (showOrHideValue == "show") {
|
||||
scope.showOrHideValue = 'hide';
|
||||
}
|
||||
|
||||
if (showOrHideValue == "hide") {
|
||||
scope.showOrHideValue = 'show';
|
||||
}
|
||||
}
|
||||
|
||||
scope.chargeSelected = function (chargeId) {
|
||||
if (chargeId) {
|
||||
resourceFactory.chargeResource.get({chargeId: chargeId, template: 'true'}, this.formData, function (data) {
|
||||
data.chargeId = data.id;
|
||||
scope.charges.push(data);
|
||||
//to charge select box empty
|
||||
scope.chargeId = '';
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
scope.deleteCharge = function (index) {
|
||||
scope.charges.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.addConfigureFundSource = function () {
|
||||
if (scope.product.paymentTypeOptions && scope.product.paymentTypeOptions.length > 0 &&
|
||||
scope.assetAccountOptions && scope.assetAccountOptions.length > 0) {
|
||||
scope.configureFundOptions.push({
|
||||
paymentTypeId: scope.product.paymentTypeOptions[0].id,
|
||||
fundSourceAccountId: scope.assetAccountOptions[0].id,
|
||||
paymentTypeOptions: scope.product.paymentTypeOptions,
|
||||
assetAccountOptions: scope.assetAccountOptions
|
||||
});
|
||||
}
|
||||
;
|
||||
}
|
||||
|
||||
scope.mapFees = function () {
|
||||
if (scope.product.chargeOptions && scope.product.chargeOptions.length > 0 && scope.incomeAccountOptions && scope.incomeAccountOptions.length > 0) {
|
||||
scope.specificIncomeaccounts.push({
|
||||
chargeId: scope.product.chargeOptions[0].id,
|
||||
incomeAccountId: scope.incomeAccountOptions[0].id,
|
||||
chargeOptions: scope.product.chargeOptions,
|
||||
incomeAccountOptions: scope.product.accountingMappingOptions.incomeAccountOptions
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
scope.mapPenalty = function () {
|
||||
if (scope.product.penaltyOptions && scope.product.penaltyOptions.length > 0 && scope.incomeAccountOptions && scope.incomeAccountOptions.length > 0) {
|
||||
scope.penaltySpecificIncomeaccounts.push({
|
||||
chargeId: scope.product.penaltyOptions[0].id,
|
||||
incomeAccountId: scope.incomeAccountOptions[0].id,
|
||||
penaltyOptions: scope.product.penaltyOptions,
|
||||
incomeAccountOptions: scope.incomeAccountOptions
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
scope.deleteFund = function (index) {
|
||||
scope.configureFundOptions.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.deleteFee = function (index) {
|
||||
scope.specificIncomeaccounts.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.deletePenalty = function (index) {
|
||||
scope.penaltySpecificIncomeaccounts.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.cancel = function () {
|
||||
location.path('/fixeddepositproducts');
|
||||
};
|
||||
|
||||
scope.submit = function () {
|
||||
scope.paymentChannelToFundSourceMappings = [];
|
||||
scope.feeToIncomeAccountMappings = [];
|
||||
scope.penaltyToIncomeAccountMappings = [];
|
||||
scope.chargesSelected = [];
|
||||
|
||||
var temp = '';
|
||||
|
||||
//configure fund sources for payment channels
|
||||
for (var i in scope.configureFundOptions) {
|
||||
temp = {
|
||||
paymentTypeId: scope.configureFundOptions[i].paymentTypeId,
|
||||
fundSourceAccountId: scope.configureFundOptions[i].fundSourceAccountId
|
||||
}
|
||||
scope.paymentChannelToFundSourceMappings.push(temp);
|
||||
}
|
||||
|
||||
//map fees to specific income accounts
|
||||
for (var i in scope.specificIncomeaccounts) {
|
||||
temp = {
|
||||
chargeId: scope.specificIncomeaccounts[i].chargeId,
|
||||
incomeAccountId: scope.specificIncomeaccounts[i].incomeAccountId
|
||||
}
|
||||
scope.feeToIncomeAccountMappings.push(temp);
|
||||
}
|
||||
|
||||
//map penalties to specific income accounts
|
||||
for (var i in scope.penaltySpecificIncomeaccounts) {
|
||||
temp = {
|
||||
chargeId: scope.penaltySpecificIncomeaccounts[i].chargeId,
|
||||
incomeAccountId: scope.penaltySpecificIncomeaccounts[i].incomeAccountId
|
||||
}
|
||||
scope.penaltyToIncomeAccountMappings.push(temp);
|
||||
}
|
||||
|
||||
for (var i in scope.charges) {
|
||||
temp = {
|
||||
id: scope.charges[i].id
|
||||
}
|
||||
scope.chargesSelected.push(temp);
|
||||
}
|
||||
|
||||
this.formData.paymentChannelToFundSourceMappings = scope.paymentChannelToFundSourceMappings;
|
||||
this.formData.feeToIncomeAccountMappings = scope.feeToIncomeAccountMappings;
|
||||
this.formData.penaltyToIncomeAccountMappings = scope.penaltyToIncomeAccountMappings;
|
||||
this.formData.charges = scope.chargesSelected;
|
||||
this.formData.locale = "en";
|
||||
this.formData.charts = [];//declare charts array
|
||||
this.formData.charts.push(copyChartData(scope.chart));//add chart details
|
||||
|
||||
resourceFactory.fixedDepositProductResource.save(this.formData, function (data) {
|
||||
location.path('/viewfixeddepositproduct/' + data.resourceId);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new row with default values for entering chart details
|
||||
*/
|
||||
scope.addNewRow = function () {
|
||||
var fromPeriod = '';
|
||||
var amountRangeFrom = '';
|
||||
var periodType = '';
|
||||
if (_.isNull(scope.chart.chartSlabs) || _.isUndefined(scope.chart.chartSlabs)) {
|
||||
scope.chart.chartSlabs = [];
|
||||
} else {
|
||||
var lastChartSlab = {};
|
||||
if(scope.chart.chartSlabs.length > 0){
|
||||
lastChartSlab = angular.copy(scope.chart.chartSlabs[scope.chart.chartSlabs.length - 1]);
|
||||
}
|
||||
if (!(_.isNull(lastChartSlab) || _.isUndefined(lastChartSlab))) {
|
||||
fromPeriod = _.isNull(lastChartSlab) ? '' : parseInt(lastChartSlab.toPeriod) + 1;
|
||||
amountRangeFrom = _.isNull(lastChartSlab) ? '' : parseFloat(lastChartSlab.amountRangeTo) + 1;
|
||||
periodType = angular.copy(lastChartSlab.periodType);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var chartSlab = {
|
||||
"periodType": periodType,
|
||||
"fromPeriod": fromPeriod,
|
||||
"amountRangeFrom": amountRangeFrom
|
||||
};
|
||||
|
||||
scope.chart.chartSlabs.push(chartSlab);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove chart details row
|
||||
*/
|
||||
scope.removeRow = function(index){
|
||||
scope.chart.chartSlabs.splice(index,1);
|
||||
}
|
||||
|
||||
/**
|
||||
* create new chart data object
|
||||
*/
|
||||
|
||||
copyChartData = function () {
|
||||
var newChartData = {
|
||||
name: scope.chart.name,
|
||||
description: scope.chart.description,
|
||||
fromDate: dateFilter(scope.fromDate.date, scope.df),
|
||||
endDate: dateFilter(scope.endDate.date, scope.df),
|
||||
//savingsProductId: scope.productId,
|
||||
dateFormat: scope.df,
|
||||
locale: scope.optlang.code,
|
||||
chartSlabs: angular.copy(copyChartSlabs(scope.chart.chartSlabs))
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartData, function (v, k) {
|
||||
if (!v)
|
||||
delete newChartData[k];
|
||||
});
|
||||
|
||||
return newChartData;
|
||||
}
|
||||
|
||||
/**
|
||||
* copy all chart details to a new Array
|
||||
* @param chartSlabs
|
||||
* @returns {Array}
|
||||
*/
|
||||
copyChartSlabs = function (chartSlabs) {
|
||||
var detailsArray = [];
|
||||
_.each(chartSlabs, function (chartSlab) {
|
||||
var chartSlabData = copyChartSlab(chartSlab);
|
||||
detailsArray.push(chartSlabData);
|
||||
});
|
||||
return detailsArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* create new chart detail object data from chartSlab
|
||||
* @param chartSlab
|
||||
*
|
||||
*/
|
||||
|
||||
copyChartSlab = function (chartSlab) {
|
||||
var newChartSlabData = {
|
||||
id: chartSlab.id,
|
||||
description: chartSlab.description,
|
||||
periodType: chartSlab.periodType.id,
|
||||
fromPeriod: chartSlab.fromPeriod,
|
||||
toPeriod: chartSlab.toPeriod,
|
||||
amountRangeFrom: chartSlab.amountRangeFrom,
|
||||
amountRangeTo: chartSlab.amountRangeTo,
|
||||
annualInterestRate: chartSlab.annualInterestRate,
|
||||
locale: scope.optlang.code
|
||||
}
|
||||
//alert("Period type id" + chartSlab.periodType.id);
|
||||
//remove empty values
|
||||
_.each(newChartSlabData, function (v, k) {
|
||||
if (!v && v != 0){
|
||||
// alert('key:' + k + " and value:" + v);
|
||||
delete newChartSlabData[k];
|
||||
}
|
||||
});
|
||||
|
||||
return newChartSlabData;
|
||||
}
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('CreateFixedDepositProductController', ['$scope', 'ResourceFactory', '$location', 'dateFilter', mifosX.controllers.CreateFixedDepositProductController]).run(function ($log) {
|
||||
$log.info("CreateFixedDepositProductController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,180 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
CreateInterestRateChartController: function (scope, resourceFactory, location, routeParams, dateFilter) {
|
||||
scope.formData = {};//used for update/save form data
|
||||
scope.restrictDate = new Date();
|
||||
scope.fromDate = {}; //required for date formatting
|
||||
scope.endDate = {};//required for date formatting
|
||||
|
||||
//deposit product details
|
||||
scope.productName = routeParams.productName;
|
||||
scope.productId = routeParams.productId;
|
||||
|
||||
scope.productsLink = '';
|
||||
scope.viewProductLink = '';
|
||||
scope.productType = routeParams.productType;
|
||||
//alert(scope.productType);
|
||||
if ( routeParams.productType === 'fixeddepositproduct'){
|
||||
scope.productsLink = 'fixeddepositproducts';
|
||||
scope.viewProductLink = 'viewfixeddepositproduct';
|
||||
}else if ( routeParams.productType === 'recurringdepositproduct'){
|
||||
scope.productsLink = 'recurringdepositproducts';
|
||||
scope.viewProductLink = 'viewrecurringdepositproduct';
|
||||
}
|
||||
|
||||
//get a interestrate chart
|
||||
resourceFactory.interestRateChartResource.get({resourceType: "template"}, function (data) {
|
||||
scope.chart = data;
|
||||
scope.chart.chartSlabs = [];
|
||||
//format date values
|
||||
//if (scope.chart.fromDate) {
|
||||
// var fromDate = dateFilter(scope.chart.fromDate, scope.df);
|
||||
scope.fromDate.date = new Date();
|
||||
//}
|
||||
//if (scope.chart.endDate) {
|
||||
// var endDate = dateFilter(scope.chart.endDate, scope.df);
|
||||
// scope.endDate.date = new Date(endDate);
|
||||
//}
|
||||
});
|
||||
|
||||
/**
|
||||
* Add a new row with default values for entering chart details
|
||||
*/
|
||||
scope.addNewRow = function () {
|
||||
var fromPeriod = '';
|
||||
var amountRangeFrom = '';
|
||||
var periodType = '';
|
||||
if (_.isNull(scope.chart.chartSlabs) || _.isUndefined(scope.chart.chartSlabs)) {
|
||||
scope.chart.chartSlabs = [];
|
||||
} else {
|
||||
var lastChartSlab = {};
|
||||
if(scope.chart.chartSlabs.length > 0){
|
||||
lastChartSlab = angular.copy(scope.chart.chartSlabs[scope.chart.chartSlabs.length - 1]);
|
||||
}
|
||||
if(!(_.isNull(lastChartSlab) || _.isUndefined(lastChartSlab))){
|
||||
fromPeriod = _.isNull(lastChartSlab) ? '' : parseInt(lastChartSlab.toPeriod) + 1;
|
||||
amountRangeFrom = _.isNull(lastChartSlab) ? '' : parseFloat(lastChartSlab.amountRangeTo) + 1;
|
||||
periodType = angular.copy(lastChartSlab.periodType);
|
||||
}
|
||||
}
|
||||
|
||||
var chartSlab = {
|
||||
"periodType": periodType,
|
||||
"fromPeriod": fromPeriod,
|
||||
"amountRangeFrom": amountRangeFrom
|
||||
};
|
||||
|
||||
scope.chart.chartSlabs.push(chartSlab);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove chart details row
|
||||
*/
|
||||
scope.removeRow = function (index) {
|
||||
scope.chart.chartSlabs.splice(index, 1);
|
||||
}
|
||||
|
||||
//back to deposit product view
|
||||
scope.cancel = function () {
|
||||
location.path('/interestratecharts/' + routeParams.productId + '/' + routeParams.productName + '/' + routeParams.productType);
|
||||
};
|
||||
|
||||
/**
|
||||
* Update Interest rate chart details
|
||||
*/
|
||||
scope.submitInterestRateChartForm = function () {
|
||||
//scope.chartData = {};
|
||||
//scope.chartData = copyChartData(scope.chart);
|
||||
var chartData = copyChartData(scope.chart);
|
||||
|
||||
scope.formData.charts = [];//declare charts array
|
||||
scope.formData.charts.push(chartData);//add chart details
|
||||
//update deposit product with new chart
|
||||
if ( routeParams.productType === 'fixeddepositproduct'){
|
||||
resourceFactory.fixedDepositProductResource.update({productId: routeParams.productId}, scope.formData, function (data) {
|
||||
location.path('/interestratecharts/' + routeParams.productId + '/' + routeParams.productName + '/' + scope.productType);
|
||||
});
|
||||
}else if ( routeParams.productType === 'recurringdepositproduct'){
|
||||
resourceFactory.recurringDepositProductResource.update({productId: routeParams.productId}, scope.formData, function (data) {
|
||||
location.path('/interestratecharts/' + routeParams.productId + '/' + routeParams.productName + '/' + scope.productType);
|
||||
});
|
||||
}
|
||||
|
||||
//resourceFactory.interestRateChartResource.save(chartData, function (data) {
|
||||
// location.path('/interestratecharts/' + routeParams.productId + '/' + routeParams.productName);
|
||||
//});
|
||||
}
|
||||
|
||||
/**
|
||||
* create new chart data object
|
||||
*/
|
||||
|
||||
copyChartData = function () {
|
||||
var newChartData = {
|
||||
name: scope.chart.name,
|
||||
description: scope.chart.description,
|
||||
fromDate: dateFilter(scope.fromDate.date, scope.df),
|
||||
endDate: dateFilter(scope.endDate.date, scope.df),
|
||||
savingsProductId: scope.productId,
|
||||
dateFormat: scope.df,
|
||||
locale: scope.optlang.code,
|
||||
chartSlabs: angular.copy(copyChartSlabs(scope.chart.chartSlabs))
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartData, function (v, k) {
|
||||
if (!v)
|
||||
delete newChartData[k];
|
||||
});
|
||||
|
||||
return newChartData;
|
||||
}
|
||||
|
||||
/**
|
||||
* copy all chart details to a new Array
|
||||
* @param chartSlabs
|
||||
* @returns {Array}
|
||||
*/
|
||||
copyChartSlabs = function (chartSlabs) {
|
||||
var detailsArray = [];
|
||||
_.each(chartSlabs, function (chartSlab) {
|
||||
var chartSlabData = copyChartSlab(chartSlab);
|
||||
detailsArray.push(chartSlabData);
|
||||
});
|
||||
return detailsArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* create new chart detail object data from chartSlab
|
||||
* @param chartSlab
|
||||
*
|
||||
*/
|
||||
|
||||
copyChartSlab = function (chartSlab) {
|
||||
var newChartSlabData = {
|
||||
id: chartSlab.id,
|
||||
description: chartSlab.description,
|
||||
periodType: chartSlab.periodType.id,
|
||||
fromPeriod: chartSlab.fromPeriod,
|
||||
toPeriod: chartSlab.toPeriod,
|
||||
amountRangeFrom: chartSlab.amountRangeFrom,
|
||||
amountRangeTo: chartSlab.amountRangeTo,
|
||||
annualInterestRate: chartSlab.annualInterestRate,
|
||||
locale: scope.optlang.code
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartSlabData, function (v, k) {
|
||||
if (!v && v != 0)
|
||||
delete newChartSlabData[k];
|
||||
});
|
||||
|
||||
return newChartSlabData;
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
mifosX.ng.application.controller('CreateInterestRateChartController', ['$scope', 'ResourceFactory', '$location', '$routeParams', 'dateFilter', mifosX.controllers.CreateInterestRateChartController]).run(function ($log) {
|
||||
$log.info("CreateInterestRateChartController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,305 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
CreateRecurringDepositProductController: function (scope, resourceFactory, location, dateFilter) {
|
||||
scope.formData = {};
|
||||
scope.charges = [];
|
||||
scope.showOrHideValue = "show";
|
||||
scope.configureFundOptions = [];
|
||||
scope.specificIncomeaccounts = [];
|
||||
scope.penaltySpecificIncomeaccounts = [];
|
||||
scope.configureFundOption = {};
|
||||
|
||||
//interest rate details
|
||||
scope.chart = {};
|
||||
scope.restrictDate = new Date();
|
||||
scope.fromDate = {}; //required for date formatting
|
||||
scope.endDate = {};//required for date formatting
|
||||
|
||||
resourceFactory.recurringDepositProductResource.get({resourceType: 'template'}, function (data) {
|
||||
scope.product = data;
|
||||
scope.product.chargeOptions = scope.product.chargeOptions || [];
|
||||
scope.assetAccountOptions = scope.product.accountingMappingOptions.assetAccountOptions || [];
|
||||
scope.liabilityAccountOptions = scope.product.accountingMappingOptions.liabilityAccountOptions || [];
|
||||
scope.incomeAccountOptions = scope.product.accountingMappingOptions.incomeAccountOptions || [];
|
||||
scope.expenseAccountOptions = scope.product.accountingMappingOptions.expenseAccountOptions || [];
|
||||
|
||||
scope.formData.currencyCode = data.currencyOptions[0].code;
|
||||
scope.formData.digitsAfterDecimal = data.currencyOptions[0].decimalPlaces;
|
||||
scope.formData.interestCompoundingPeriodType = data.interestCompoundingPeriodType.id;
|
||||
scope.formData.interestPostingPeriodType = data.interestPostingPeriodType.id;
|
||||
scope.formData.interestCalculationType = data.interestCalculationType.id;
|
||||
scope.formData.interestCalculationDaysInYearType = data.interestCalculationDaysInYearType.id;
|
||||
scope.formData.preClosurePenalInterestOnTypeId = scope.product.preClosurePenalInterestOnTypeOptions[0].id;
|
||||
scope.formData.interestFreePeriodFrequencyTypeId = scope.product.interestFreePeriodTypeOptions[0].id;
|
||||
scope.formData.recurringDepositTypeId = scope.product.recurringDepositTypeOptions[0].id;
|
||||
scope.formData.recurringDepositFrequencyTypeId = scope.product.recurringDepositFrequencyTypeOptions[0].id;
|
||||
|
||||
//set chart template
|
||||
scope.chart = scope.product.chartTemplate;
|
||||
scope.chart.chartSlabs = [];
|
||||
|
||||
if (scope.assetAccountOptions.length > 0) {
|
||||
scope.formData.savingsReferenceAccountId = scope.assetAccountOptions[0].id;
|
||||
}
|
||||
if (scope.liabilityAccountOptions.length > 0) {
|
||||
scope.formData.savingsControlAccountId = scope.liabilityAccountOptions[0].id;
|
||||
}
|
||||
if (scope.liabilityAccountOptions.length > 1) {
|
||||
scope.formData.transfersInSuspenseAccountId = scope.liabilityAccountOptions[1].id;
|
||||
}
|
||||
if (scope.incomeAccountOptions.length > 0) {
|
||||
scope.formData.incomeFromFeeAccountId = scope.incomeAccountOptions[0].id;
|
||||
}
|
||||
if (scope.incomeAccountOptions.length > 1) {
|
||||
scope.formData.incomeFromPenaltyAccountId = scope.incomeAccountOptions[1].id;
|
||||
}
|
||||
if (scope.expenseAccountOptions.length > 0) {
|
||||
scope.formData.interestOnSavingsAccountId = scope.expenseAccountOptions[0].id;
|
||||
}
|
||||
scope.formData.accountingRule = '1';
|
||||
|
||||
});
|
||||
|
||||
//advanced accounting rule
|
||||
scope.showOrHide = function (showOrHideValue) {
|
||||
|
||||
if (showOrHideValue == "show") {
|
||||
scope.showOrHideValue = 'hide';
|
||||
}
|
||||
|
||||
if (showOrHideValue == "hide") {
|
||||
scope.showOrHideValue = 'show';
|
||||
}
|
||||
}
|
||||
|
||||
scope.chargeSelected = function (chargeId) {
|
||||
if (chargeId) {
|
||||
resourceFactory.chargeResource.get({chargeId: chargeId, template: 'true'}, this.formData, function (data) {
|
||||
data.chargeId = data.id;
|
||||
scope.charges.push(data);
|
||||
//to charge select box empty
|
||||
scope.chargeId = '';
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
scope.deleteCharge = function (index) {
|
||||
scope.charges.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.addConfigureFundSource = function () {
|
||||
if (scope.product.paymentTypeOptions && scope.product.paymentTypeOptions.length > 0 &&
|
||||
scope.assetAccountOptions && scope.assetAccountOptions.length > 0) {
|
||||
scope.configureFundOptions.push({
|
||||
paymentTypeId: scope.product.paymentTypeOptions[0].id,
|
||||
fundSourceAccountId: scope.assetAccountOptions[0].id,
|
||||
paymentTypeOptions: scope.product.paymentTypeOptions,
|
||||
assetAccountOptions: scope.assetAccountOptions
|
||||
});
|
||||
}
|
||||
;
|
||||
}
|
||||
|
||||
scope.mapFees = function () {
|
||||
if (scope.product.chargeOptions && scope.product.chargeOptions.length > 0 && scope.incomeAccountOptions && scope.incomeAccountOptions.length > 0) {
|
||||
scope.specificIncomeaccounts.push({
|
||||
chargeId: scope.product.chargeOptions[0].id,
|
||||
incomeAccountId: scope.incomeAccountOptions[0].id,
|
||||
chargeOptions: scope.product.chargeOptions,
|
||||
incomeAccountOptions: scope.product.accountingMappingOptions.incomeAccountOptions
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
scope.mapPenalty = function () {
|
||||
if (scope.product.penaltyOptions && scope.product.penaltyOptions.length > 0 && scope.incomeAccountOptions && scope.incomeAccountOptions.length > 0) {
|
||||
scope.penaltySpecificIncomeaccounts.push({
|
||||
chargeId: scope.product.penaltyOptions[0].id,
|
||||
incomeAccountId: scope.incomeAccountOptions[0].id,
|
||||
penaltyOptions: scope.product.penaltyOptions,
|
||||
incomeAccountOptions: scope.incomeAccountOptions
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
scope.deleteFund = function (index) {
|
||||
scope.configureFundOptions.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.deleteFee = function (index) {
|
||||
scope.specificIncomeaccounts.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.deletePenalty = function (index) {
|
||||
scope.penaltySpecificIncomeaccounts.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.cancel = function () {
|
||||
location.path('/recurringdepositproducts');
|
||||
};
|
||||
|
||||
scope.submit = function () {
|
||||
scope.paymentChannelToFundSourceMappings = [];
|
||||
scope.feeToIncomeAccountMappings = [];
|
||||
scope.penaltyToIncomeAccountMappings = [];
|
||||
scope.chargesSelected = [];
|
||||
|
||||
var temp = '';
|
||||
|
||||
//configure fund sources for payment channels
|
||||
for (var i in scope.configureFundOptions) {
|
||||
temp = {
|
||||
paymentTypeId: scope.configureFundOptions[i].paymentTypeId,
|
||||
fundSourceAccountId: scope.configureFundOptions[i].fundSourceAccountId
|
||||
}
|
||||
scope.paymentChannelToFundSourceMappings.push(temp);
|
||||
}
|
||||
|
||||
//map fees to specific income accounts
|
||||
for (var i in scope.specificIncomeaccounts) {
|
||||
temp = {
|
||||
chargeId: scope.specificIncomeaccounts[i].chargeId,
|
||||
incomeAccountId: scope.specificIncomeaccounts[i].incomeAccountId
|
||||
}
|
||||
scope.feeToIncomeAccountMappings.push(temp);
|
||||
}
|
||||
|
||||
//map penalties to specific income accounts
|
||||
for (var i in scope.penaltySpecificIncomeaccounts) {
|
||||
temp = {
|
||||
chargeId: scope.penaltySpecificIncomeaccounts[i].chargeId,
|
||||
incomeAccountId: scope.penaltySpecificIncomeaccounts[i].incomeAccountId
|
||||
}
|
||||
scope.penaltyToIncomeAccountMappings.push(temp);
|
||||
}
|
||||
|
||||
for (var i in scope.charges) {
|
||||
temp = {
|
||||
id: scope.charges[i].id
|
||||
}
|
||||
scope.chargesSelected.push(temp);
|
||||
}
|
||||
|
||||
this.formData.paymentChannelToFundSourceMappings = scope.paymentChannelToFundSourceMappings;
|
||||
this.formData.feeToIncomeAccountMappings = scope.feeToIncomeAccountMappings;
|
||||
this.formData.penaltyToIncomeAccountMappings = scope.penaltyToIncomeAccountMappings;
|
||||
this.formData.charges = scope.chargesSelected;
|
||||
this.formData.locale = "en";
|
||||
this.formData.charts = [];//declare charts array
|
||||
this.formData.charts.push(copyChartData(scope.chart));//add chart details
|
||||
|
||||
resourceFactory.recurringDepositProductResource.save(this.formData, function (data) {
|
||||
location.path('/viewrecurringdepositproduct/' + data.resourceId);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new row with default values for entering chart details
|
||||
*/
|
||||
scope.addNewRow = function () {
|
||||
var fromPeriod = '';
|
||||
var amountRangeFrom = '';
|
||||
var periodType = '';
|
||||
if (_.isNull(scope.chart.chartSlabs) || _.isUndefined(scope.chart.chartSlabs)) {
|
||||
scope.chart.chartSlabs = [];
|
||||
} else {
|
||||
var lastChartSlab = {};
|
||||
if(scope.chart.chartSlabs.length > 0){
|
||||
lastChartSlab = angular.copy(scope.chart.chartSlabs[scope.chart.chartSlabs.length - 1]);
|
||||
}
|
||||
if (!(_.isNull(lastChartSlab) || _.isUndefined(lastChartSlab))) {
|
||||
fromPeriod = _.isNull(lastChartSlab) ? '' : parseInt(lastChartSlab.toPeriod) + 1;
|
||||
amountRangeFrom = _.isNull(lastChartSlab) ? '' : parseFloat(lastChartSlab.amountRangeTo) + 1;
|
||||
periodType = angular.copy(lastChartSlab.periodType);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var chartSlab = {
|
||||
"periodType": periodType,
|
||||
"fromPeriod": fromPeriod,
|
||||
"amountRangeFrom": amountRangeFrom
|
||||
};
|
||||
|
||||
scope.chart.chartSlabs.push(chartSlab);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove chart details row
|
||||
*/
|
||||
scope.removeRow = function(index){
|
||||
scope.chart.chartSlabs.splice(index,1);
|
||||
}
|
||||
|
||||
/**
|
||||
* create new chart data object
|
||||
*/
|
||||
|
||||
copyChartData = function () {
|
||||
var newChartData = {
|
||||
name: scope.chart.name,
|
||||
description: scope.chart.description,
|
||||
fromDate: dateFilter(scope.fromDate.date, scope.df),
|
||||
endDate: dateFilter(scope.endDate.date, scope.df),
|
||||
//savingsProductId: scope.productId,
|
||||
dateFormat: scope.df,
|
||||
locale: scope.optlang.code,
|
||||
chartSlabs: angular.copy(copyChartSlabs(scope.chart.chartSlabs))
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartData, function (v, k) {
|
||||
if (!v)
|
||||
delete newChartData[k];
|
||||
});
|
||||
|
||||
return newChartData;
|
||||
}
|
||||
|
||||
/**
|
||||
* copy all chart details to a new Array
|
||||
* @param chartSlabs
|
||||
* @returns {Array}
|
||||
*/
|
||||
copyChartSlabs = function (chartSlabs) {
|
||||
var detailsArray = [];
|
||||
_.each(chartSlabs, function (chartSlab) {
|
||||
var chartSlabData = copyChartSlab(chartSlab);
|
||||
detailsArray.push(chartSlabData);
|
||||
});
|
||||
return detailsArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* create new chart detail object data from chartSlab
|
||||
* @param chartSlab
|
||||
*
|
||||
*/
|
||||
|
||||
copyChartSlab = function (chartSlab) {
|
||||
var newChartSlabData = {
|
||||
id: chartSlab.id,
|
||||
description: chartSlab.description,
|
||||
periodType: chartSlab.periodType.id,
|
||||
fromPeriod: chartSlab.fromPeriod,
|
||||
toPeriod: chartSlab.toPeriod,
|
||||
amountRangeFrom: chartSlab.amountRangeFrom,
|
||||
amountRangeTo: chartSlab.amountRangeTo,
|
||||
annualInterestRate: chartSlab.annualInterestRate,
|
||||
locale: scope.optlang.code
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartSlabData, function (v, k) {
|
||||
if (!v && v != 0)
|
||||
delete newChartSlabData[k];
|
||||
});
|
||||
|
||||
return newChartSlabData;
|
||||
}
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('CreateRecurringDepositProductController', ['$scope', 'ResourceFactory', '$location', 'dateFilter', mifosX.controllers.CreateRecurringDepositProductController]).run(function ($log) {
|
||||
$log.info("CreateRecurringDepositProductController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,392 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
EditFixedDepositProductController: function (scope, resourceFactory, location, routeParams, dateFilter) {
|
||||
scope.formData = {};
|
||||
scope.charges = [];
|
||||
scope.showOrHideValue = "show";
|
||||
scope.configureFundOptions = [];
|
||||
scope.specificIncomeaccounts = [];
|
||||
scope.penaltySpecificIncomeaccounts = [];
|
||||
scope.configureFundOption = {};
|
||||
|
||||
//interest rate chart details
|
||||
scope.chart = {};
|
||||
scope.restrictDate = new Date();
|
||||
scope.fromDate = {}; //required for date formatting
|
||||
scope.endDate = {};//required for date formatting
|
||||
|
||||
resourceFactory.fixedDepositProductResource.get({productId: routeParams.productId, template: 'true'}, function (data) {
|
||||
scope.product = data;
|
||||
scope.charges = data.charges;
|
||||
scope.assetAccountOptions = scope.product.accountingMappingOptions.assetAccountOptions || [];
|
||||
scope.liabilityAccountOptions = scope.product.accountingMappingOptions.liabilityAccountOptions || [];
|
||||
scope.incomeAccountOptions = scope.product.accountingMappingOptions.incomeAccountOptions || [];
|
||||
scope.expenseAccountOptions = scope.product.accountingMappingOptions.expenseAccountOptions || [];
|
||||
var interestFreePeriodFrequencyTypeId = (_.isNull(data.interestFreePeriodFrequencyType) || _.isUndefined(data.interestFreePeriodFrequencyType)) ? '' : data.interestFreePeriodFrequencyType.id;
|
||||
var preClosurePenalInterestOnTypeId = (_.isNull(data.preClosurePenalInterestOnType) || _.isUndefined(data.preClosurePenalInterestOnType)) ? '' : data.preClosurePenalInterestOnType.id;
|
||||
var minDepositTermTypeId = (_.isNull(data.minDepositTermType) || _.isUndefined(data.minDepositTermType)) ? '' : data.minDepositTermType.id;
|
||||
var maxDepositTermTypeId = (_.isNull(data.maxDepositTermType) || _.isUndefined(data.maxDepositTermType)) ? '' : data.maxDepositTermType.id;
|
||||
var inMultiplesOfDepositTermTypeId = (_.isNull(data.inMultiplesOfDepositTermType) || _.isUndefined(data.inMultiplesOfDepositTermType)) ? '' : data.inMultiplesOfDepositTermType.id;
|
||||
scope.formData = {
|
||||
name: data.name,
|
||||
shortName: data.shortName,
|
||||
description: data.description,
|
||||
currencyCode: data.currency.code,
|
||||
digitsAfterDecimal: data.currency.decimalPlaces,
|
||||
inMultiplesOf: data.currency.inMultiplesOf,
|
||||
nominalAnnualInterestRate: data.nominalAnnualInterestRate,
|
||||
minRequiredOpeningBalance: data.minRequiredOpeningBalance,
|
||||
lockinPeriodFrequency: data.lockinPeriodFrequency,
|
||||
interestCompoundingPeriodType: data.interestCompoundingPeriodType.id,
|
||||
interestPostingPeriodType: data.interestPostingPeriodType.id,
|
||||
interestCalculationType: data.interestCalculationType.id,
|
||||
interestCalculationDaysInYearType: data.interestCalculationDaysInYearType.id,
|
||||
accountingRule: data.accountingRule.id,
|
||||
interestFreePeriodApplicable: data.interestFreePeriodApplicable,
|
||||
interestFreeFromPeriod: data.interestFreeFromPeriod,
|
||||
interestFreeToPeriod: data.interestFreeToPeriod,
|
||||
interestFreePeriodFrequencyTypeId: interestFreePeriodFrequencyTypeId,
|
||||
preClosurePenalApplicable: data.preClosurePenalApplicable,
|
||||
preClosurePenalInterest: data.preClosurePenalInterest,
|
||||
preClosurePenalInterestOnTypeId: preClosurePenalInterestOnTypeId,
|
||||
minDepositTerm: data.minDepositTerm,
|
||||
maxDepositTerm: data.maxDepositTerm,
|
||||
minDepositTermTypeId: minDepositTermTypeId,
|
||||
maxDepositTermTypeId: maxDepositTermTypeId,
|
||||
inMultiplesOfDepositTerm: data.inMultiplesOfDepositTerm,
|
||||
inMultiplesOfDepositTermTypeId: inMultiplesOfDepositTermTypeId
|
||||
}
|
||||
|
||||
scope.chart = scope.product.activeChart;
|
||||
scope.chart.chartSlabs = _.sortBy(scope.chart.chartSlabs, function (obj) {
|
||||
return obj.fromPeriod
|
||||
});
|
||||
//format chart date values
|
||||
if (scope.chart.fromDate) {
|
||||
var fromDate = dateFilter(scope.chart.fromDate, scope.df);
|
||||
scope.fromDate.date = new Date(fromDate);
|
||||
}
|
||||
if (scope.chart.endDate) {
|
||||
var endDate = dateFilter(scope.chart.endDate, scope.df);
|
||||
scope.endDate.date = new Date(endDate);
|
||||
}
|
||||
|
||||
if (data.lockinPeriodFrequencyType) {
|
||||
scope.formData.lockinPeriodFrequencyType = data.lockinPeriodFrequencyType.id;
|
||||
}
|
||||
|
||||
if (scope.formData.accountingRule == 1) {
|
||||
|
||||
if (scope.assetAccountOptions.length > 0) {
|
||||
scope.formData.savingsReferenceAccountId = scope.assetAccountOptions[0].id;
|
||||
}
|
||||
if (scope.liabilityAccountOptions.length > 0) {
|
||||
scope.formData.savingsControlAccountId = scope.liabilityAccountOptions[0].id;
|
||||
}
|
||||
if (scope.liabilityAccountOptions.length > 1) {
|
||||
scope.formData.transfersInSuspenseAccountId = scope.liabilityAccountOptions[1].id;
|
||||
}
|
||||
if (scope.incomeAccountOptions.length > 0) {
|
||||
scope.formData.incomeFromFeeAccountId = scope.incomeAccountOptions[0].id;
|
||||
}
|
||||
if (scope.incomeAccountOptions.length > 1) {
|
||||
scope.formData.incomeFromPenaltyAccountId = scope.incomeAccountOptions[1].id;
|
||||
}
|
||||
if (scope.expenseAccountOptions.length > 0) {
|
||||
scope.formData.interestOnSavingsAccountId = scope.expenseAccountOptions[0].id;
|
||||
}
|
||||
} else {
|
||||
scope.formData.savingsReferenceAccountId = data.accountingMappings.savingsReferenceAccount.id;
|
||||
scope.formData.savingsControlAccountId = data.accountingMappings.savingsControlAccount.id;
|
||||
scope.formData.transfersInSuspenseAccountId = data.accountingMappings.transfersInSuspenseAccount.id;
|
||||
scope.formData.incomeFromFeeAccountId = data.accountingMappings.incomeFromFeeAccount.id;
|
||||
scope.formData.incomeFromPenaltyAccountId = data.accountingMappings.incomeFromPenaltyAccount.id;
|
||||
scope.formData.interestOnSavingsAccountId = data.accountingMappings.interestOnSavingsAccount.id;
|
||||
|
||||
_.each(scope.product.paymentChannelToFundSourceMappings, function (fundSource) {
|
||||
scope.configureFundOptions.push({
|
||||
paymentTypeId: fundSource.paymentType.id,
|
||||
fundSourceAccountId: fundSource.fundSourceAccount.id,
|
||||
paymentTypeOptions: scope.product.paymentTypeOptions,
|
||||
assetAccountOptions: scope.assetAccountOptions
|
||||
})
|
||||
});
|
||||
|
||||
_.each(scope.product.feeToIncomeAccountMappings, function (fees) {
|
||||
scope.specificIncomeaccounts.push({
|
||||
chargeId: fees.charge.id,
|
||||
incomeAccountId: fees.incomeAccount.id,
|
||||
chargeOptions: scope.product.chargeOptions,
|
||||
incomeAccountOptions: scope.incomeAccountOptions
|
||||
})
|
||||
});
|
||||
|
||||
_.each(scope.product.penaltyToIncomeAccountMappings, function (penalty) {
|
||||
scope.penaltySpecificIncomeaccounts.push({
|
||||
chargeId: penalty.charge.id,
|
||||
incomeAccountId: penalty.incomeAccount.id,
|
||||
penaltyOptions: scope.product.penaltyOptions,
|
||||
incomeAccountOptions: scope.incomeAccountOptions
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
//advanced accounting rule
|
||||
scope.showOrHide = function (showOrHideValue) {
|
||||
|
||||
if (showOrHideValue == "show") {
|
||||
scope.showOrHideValue = 'hide';
|
||||
}
|
||||
|
||||
if (showOrHideValue == "hide") {
|
||||
scope.showOrHideValue = 'show';
|
||||
}
|
||||
}
|
||||
|
||||
scope.chargeSelected = function (chargeId) {
|
||||
if (chargeId) {
|
||||
resourceFactory.chargeResource.get({chargeId: chargeId, template: 'true'}, this.formData, function (data) {
|
||||
data.chargeId = data.id;
|
||||
scope.charges.push(data);
|
||||
//to charge select box empty
|
||||
scope.chargeId = '';
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
scope.deleteCharge = function (index) {
|
||||
scope.charges.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.addConfigureFundSource = function () {
|
||||
if (scope.product.paymentTypeOptions && scope.product.paymentTypeOptions.length > 0 &&
|
||||
scope.assetAccountOptions && scope.assetAccountOptions.length > 0) {
|
||||
scope.configureFundOptions.push({
|
||||
paymentTypeId: scope.product.paymentTypeOptions[0].id,
|
||||
fundSourceAccountId: scope.assetAccountOptions[0].id,
|
||||
paymentTypeOptions: scope.product.paymentTypeOptions,
|
||||
assetAccountOptions: scope.assetAccountOptions
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
scope.mapFees = function () {
|
||||
if (scope.product.chargeOptions && scope.product.chargeOptions.length > 0 && scope.incomeAccountOptions && scope.incomeAccountOptions.length > 0) {
|
||||
scope.specificIncomeaccounts.push({
|
||||
chargeId: scope.product.chargeOptions[0].id,
|
||||
incomeAccountId: scope.incomeAccountOptions[0].id,
|
||||
chargeOptions: scope.product.chargeOptions,
|
||||
incomeAccountOptions: scope.product.accountingMappingOptions.incomeAccountOptions
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
scope.mapPenalty = function () {
|
||||
if (scope.product.penaltyOptions && scope.product.penaltyOptions.length > 0 && scope.incomeAccountOptions && scope.incomeAccountOptions.length > 0) {
|
||||
scope.penaltySpecificIncomeaccounts.push({
|
||||
chargeId: scope.product.penaltyOptions[0].id,
|
||||
incomeAccountId: scope.incomeAccountOptions[0].id,
|
||||
penaltyOptions: scope.product.penaltyOptions,
|
||||
incomeAccountOptions: scope.incomeAccountOptions
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
scope.deleteFund = function (index) {
|
||||
scope.configureFundOptions.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.deleteFee = function (index) {
|
||||
scope.specificIncomeaccounts.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.deletePenalty = function (index) {
|
||||
scope.penaltySpecificIncomeaccounts.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.cancel = function () {
|
||||
location.path('/viewfixeddepositproduct/' + routeParams.id);
|
||||
};
|
||||
|
||||
scope.submit = function () {
|
||||
scope.paymentChannelToFundSourceMappings = [];
|
||||
scope.feeToIncomeAccountMappings = [];
|
||||
scope.penaltyToIncomeAccountMappings = [];
|
||||
scope.chargesSelected = [];
|
||||
|
||||
var temp = '';
|
||||
|
||||
//configure fund sources for payment channels
|
||||
for (var i in scope.configureFundOptions) {
|
||||
temp = {
|
||||
paymentTypeId: scope.configureFundOptions[i].paymentTypeId,
|
||||
fundSourceAccountId: scope.configureFundOptions[i].fundSourceAccountId
|
||||
}
|
||||
scope.paymentChannelToFundSourceMappings.push(temp);
|
||||
}
|
||||
|
||||
//map fees to specific income accounts
|
||||
for (var i in scope.specificIncomeaccounts) {
|
||||
temp = {
|
||||
chargeId: scope.specificIncomeaccounts[i].chargeId,
|
||||
incomeAccountId: scope.specificIncomeaccounts[i].incomeAccountId,
|
||||
}
|
||||
scope.feeToIncomeAccountMappings.push(temp);
|
||||
}
|
||||
|
||||
//map penalties to specific income accounts
|
||||
for (var i in scope.penaltySpecificIncomeaccounts) {
|
||||
temp = {
|
||||
chargeId: scope.penaltySpecificIncomeaccounts[i].chargeId,
|
||||
incomeAccountId: scope.penaltySpecificIncomeaccounts[i].incomeAccountId,
|
||||
}
|
||||
scope.penaltyToIncomeAccountMappings.push(temp);
|
||||
}
|
||||
|
||||
for (var i in scope.charges) {
|
||||
temp = {
|
||||
id: scope.charges[i].id
|
||||
}
|
||||
scope.chargesSelected.push(temp);
|
||||
}
|
||||
|
||||
this.formData.paymentChannelToFundSourceMappings = scope.paymentChannelToFundSourceMappings;
|
||||
this.formData.feeToIncomeAccountMappings = scope.feeToIncomeAccountMappings;
|
||||
this.formData.penaltyToIncomeAccountMappings = scope.penaltyToIncomeAccountMappings;
|
||||
this.formData.charges = scope.chargesSelected;
|
||||
this.formData.locale = "en";
|
||||
this.formData.charts = [];//declare charts array
|
||||
this.formData.charts.push(copyChartData(scope.chart));//add chart details
|
||||
this.formData = removeEmptyValues(this.formData);
|
||||
resourceFactory.fixedDepositProductResource.update({productId: routeParams.productId}, this.formData, function (data) {
|
||||
location.path('/viewfixeddepositproduct/' + data.resourceId);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new row with default values for entering chart details
|
||||
*/
|
||||
scope.addNewRow = function () {
|
||||
var fromPeriod = '';
|
||||
var amountRangeFrom = '';
|
||||
var periodType = '';
|
||||
if (_.isNull(scope.chart.chartSlabs) || _.isUndefined(scope.chart.chartSlabs)) {
|
||||
scope.chart.chartSlabs = [];
|
||||
} else {
|
||||
var lastChartSlab = {};
|
||||
if (scope.chart.chartSlabs.length > 0) {
|
||||
lastChartSlab = angular.copy(scope.chart.chartSlabs[scope.chart.chartSlabs.length - 1]);
|
||||
}
|
||||
if (!(_.isNull(lastChartSlab) || _.isUndefined(lastChartSlab))) {
|
||||
fromPeriod = _.isNull(lastChartSlab) ? '' : parseInt(lastChartSlab.toPeriod) + 1;
|
||||
amountRangeFrom = _.isNull(lastChartSlab) ? '' : parseFloat(lastChartSlab.amountRangeTo) + 1;
|
||||
periodType = angular.copy(lastChartSlab.periodType);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var chartSlab = {
|
||||
"periodType": periodType,
|
||||
"fromPeriod": fromPeriod,
|
||||
"amountRangeFrom": amountRangeFrom
|
||||
};
|
||||
|
||||
scope.chart.chartSlabs.push(chartSlab);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* create new chart data object
|
||||
*/
|
||||
|
||||
copyChartData = function () {
|
||||
var newChartData = {
|
||||
id: scope.chart.id,
|
||||
name: scope.chart.name,
|
||||
description: scope.chart.description,
|
||||
fromDate: dateFilter(scope.fromDate.date, scope.df),
|
||||
endDate: dateFilter(scope.endDate.date, scope.df),
|
||||
//savingsProductId: scope.productId,
|
||||
dateFormat: scope.df,
|
||||
locale: scope.optlang.code,
|
||||
chartSlabs: angular.copy(copyChartSlabs(scope.chart.chartSlabs))
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartData, function (v, k) {
|
||||
if (!v)
|
||||
delete newChartData[k];
|
||||
});
|
||||
|
||||
return newChartData;
|
||||
}
|
||||
|
||||
/**
|
||||
* copy all chart details to a new Array
|
||||
* @param chartSlabs
|
||||
* @returns {Array}
|
||||
*/
|
||||
copyChartSlabs = function (chartSlabs) {
|
||||
var detailsArray = [];
|
||||
_.each(chartSlabs, function (chartSlab) {
|
||||
var chartSlabData = copyChartSlab(chartSlab);
|
||||
detailsArray.push(chartSlabData);
|
||||
});
|
||||
return detailsArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* create new chart detail object data from chartSlab
|
||||
* @param chartSlab
|
||||
*
|
||||
*/
|
||||
|
||||
copyChartSlab = function (chartSlab) {
|
||||
var newChartSlabData = {
|
||||
id: chartSlab.id,
|
||||
description: chartSlab.description,
|
||||
periodType: chartSlab.periodType.id,
|
||||
fromPeriod: chartSlab.fromPeriod,
|
||||
toPeriod: chartSlab.toPeriod,
|
||||
amountRangeFrom: chartSlab.amountRangeFrom,
|
||||
amountRangeTo: chartSlab.amountRangeTo,
|
||||
annualInterestRate: chartSlab.annualInterestRate,
|
||||
locale: scope.optlang.code
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartSlabData, function (v, k) {
|
||||
if (!v && v != 0)
|
||||
delete newChartSlabData[k];
|
||||
});
|
||||
|
||||
return newChartSlabData;
|
||||
}
|
||||
|
||||
removeEmptyValues = function (objArray) {
|
||||
_.each(objArray, function (v, k) {
|
||||
//alert(k + ':' + v);
|
||||
if (_.isNull(v) || _.isUndefined(v) || v === '') {
|
||||
//alert('remove' + k + ':' + v);
|
||||
delete objArray[k];
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return objArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove chart details row
|
||||
*/
|
||||
scope.removeRow = function (index) {
|
||||
scope.chart.chartSlabs.splice(index, 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('EditFixedDepositProductController', ['$scope', 'ResourceFactory', '$location', '$routeParams', 'dateFilter', mifosX.controllers.EditFixedDepositProductController]).run(function ($log) {
|
||||
$log.info("EditFixedDepositProductController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,161 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
EditInterestRateChartController: function (scope, resourceFactory, location, routeParams, dateFilter) {
|
||||
scope.formData = {};//used for update/save form data
|
||||
scope.restrictDate = new Date();
|
||||
scope.fromDate = {}; //required for date formatting
|
||||
scope.endDate = {};//required for date formatting
|
||||
|
||||
//Fixed deposit product details
|
||||
scope.productName = routeParams.productName;
|
||||
scope.productId = routeParams.productId;
|
||||
|
||||
scope.productsLink = '';
|
||||
scope.viewProductLink = '';
|
||||
scope.productType = routeParams.productType;
|
||||
//alert(scope.productType);
|
||||
if ( routeParams.productType === 'fixeddepositproduct'){
|
||||
scope.productsLink = 'fixeddepositproducts';
|
||||
scope.viewProductLink = 'viewfixeddepositproduct';
|
||||
}else if ( routeParams.productType === 'recurringdepositproduct'){
|
||||
scope.productsLink = 'recurringdepositproducts';
|
||||
scope.viewProductLink = 'viewrecurringdepositproduct';
|
||||
}
|
||||
|
||||
//get a interestrate chart
|
||||
resourceFactory.interestRateChartResource.get({chartId: routeParams.chartId, productId: routeParams.productId, template: true}, function (data) {
|
||||
scope.chart = data;
|
||||
scope.chart.chartSlabs = _.sortBy(scope.chart.chartSlabs, function(obj){ return obj.fromPeriod });
|
||||
//format date values
|
||||
if (scope.chart.fromDate) {
|
||||
var fromDate = dateFilter(scope.chart.fromDate, scope.df);
|
||||
scope.fromDate.date = new Date(fromDate);
|
||||
}
|
||||
if (scope.chart.endDate) {
|
||||
var endDate = dateFilter(scope.chart.endDate, scope.df);
|
||||
scope.endDate.date = new Date(endDate);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Add a new row with default values for entering chart details
|
||||
*/
|
||||
scope.addNewRow = function () {
|
||||
var lastChartSlab = {};
|
||||
if(scope.chart.chartSlabs.length > 0){
|
||||
lastChartSlab = angular.copy(scope.chart.chartSlabs[scope.chart.chartSlabs.length - 1]);
|
||||
}
|
||||
var fromPeriod = parseInt(lastChartSlab.toPeriod) + 1;
|
||||
var amountRangeFrom = parseFloat(lastChartSlab.amountRangeTo) + 1;
|
||||
var chartSlab = {
|
||||
"periodType": angular.copy(lastChartSlab.periodType),
|
||||
"fromPeriod": fromPeriod,
|
||||
"amountRangeFrom":amountRangeFrom
|
||||
};
|
||||
scope.chart.chartSlabs.push(chartSlab);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove chart details row
|
||||
*/
|
||||
scope.removeRow = function(index){
|
||||
scope.chart.chartSlabs.splice(index,1);
|
||||
}
|
||||
|
||||
//back to deposit product view
|
||||
scope.cancel = function () {
|
||||
location.path('/interestratecharts/' + routeParams.productId + '/' + routeParams.productName + '/' + routeParams.productType);
|
||||
};
|
||||
|
||||
/**
|
||||
* Update Interest rate chart details
|
||||
*/
|
||||
scope.submitInterestRateChartForm = function () {
|
||||
var chartData = copyChartData(scope.chart);
|
||||
scope.formData.charts = [];//declare charts array
|
||||
scope.formData.charts.push(chartData);//add chart details
|
||||
|
||||
if ( routeParams.productType === 'fixeddepositproduct'){
|
||||
resourceFactory.fixedDepositProductResource.update({productId: routeParams.productId}, scope.formData, function (data) {
|
||||
location.path('/interestratecharts/' + routeParams.productId + '/' + routeParams.productName + '/' + scope.productType);
|
||||
});
|
||||
}else if ( routeParams.productType === 'recurringdepositproduct'){
|
||||
resourceFactory.recurringDepositProductResource.update({productId: routeParams.productId}, scope.formData, function (data) {
|
||||
location.path('/interestratecharts/' + routeParams.productId + '/' + routeParams.productName + '/' + scope.productType);
|
||||
});
|
||||
}
|
||||
|
||||
//resourceFactory.interestRateChartResource.update({chartId: routeParams.chartId}, chartData, function (data) {
|
||||
// location.path('/interestratecharts/' + routeParams.productId + '/' + routeParams.productName);
|
||||
//});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* create new chart data object
|
||||
*/
|
||||
|
||||
copyChartData = function() {
|
||||
var chartData = {
|
||||
name: scope.chart.name,
|
||||
id: scope.chart.id,
|
||||
description: scope.chart.description,
|
||||
fromDate: dateFilter(scope.fromDate.date, scope.df),
|
||||
endDate: dateFilter(scope.endDate.date, scope.df),
|
||||
//savingsProductId: scope.chart.savingsProductId,
|
||||
dateFormat: scope.df,
|
||||
locale: scope.optlang.code,
|
||||
chartSlabs: angular.copy(copyChartSlabs(scope.chart.chartSlabs))
|
||||
}
|
||||
|
||||
return chartData;
|
||||
}
|
||||
|
||||
/**
|
||||
* copy all chart details to a new Array
|
||||
* @param chartSlabs
|
||||
* @returns {Array}
|
||||
*/
|
||||
copyChartSlabs = function (chartSlabs) {
|
||||
var detailsArray = [];
|
||||
_.each(chartSlabs, function (chartSlab) {
|
||||
var chartSlabData = copyChartSlab(chartSlab);
|
||||
detailsArray.push(chartSlabData);
|
||||
});
|
||||
return detailsArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* create new chart detail object data from chartSlab
|
||||
* @param chartSlab
|
||||
*
|
||||
*/
|
||||
|
||||
copyChartSlab = function (chartSlab) {
|
||||
var newChartSlabData = {
|
||||
id: chartSlab.id,
|
||||
description: chartSlab.description,
|
||||
periodType: chartSlab.periodType.id,
|
||||
fromPeriod: chartSlab.fromPeriod,
|
||||
toPeriod: chartSlab.toPeriod,
|
||||
amountRangeFrom: chartSlab.amountRangeFrom,
|
||||
amountRangeTo: chartSlab.amountRangeTo,
|
||||
annualInterestRate: chartSlab.annualInterestRate,
|
||||
locale: scope.optlang.code
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartSlabData, function(v, k){
|
||||
if (!v && v != 0)
|
||||
delete newChartSlabData[k];
|
||||
});
|
||||
|
||||
return newChartSlabData;
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
mifosX.ng.application.controller('EditInterestRateChartController', ['$scope', 'ResourceFactory', '$location', '$routeParams', 'dateFilter', mifosX.controllers.EditInterestRateChartController]).run(function ($log) {
|
||||
$log.info("EditInterestRateChartController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,400 @@
|
||||
(function (module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
EditRecurringDepositProductController: function (scope, resourceFactory, location, routeParams, dateFilter) {
|
||||
scope.formData = {};
|
||||
scope.charges = [];
|
||||
scope.showOrHideValue = "show";
|
||||
scope.configureFundOptions = [];
|
||||
scope.specificIncomeaccounts = [];
|
||||
scope.penaltySpecificIncomeaccounts = [];
|
||||
scope.configureFundOption = {};
|
||||
|
||||
//interest rate chart details
|
||||
scope.chart = {};
|
||||
scope.restrictDate = new Date();
|
||||
scope.fromDate = {}; //required for date formatting
|
||||
scope.endDate = {};//required for date formatting
|
||||
|
||||
resourceFactory.recurringDepositProductResource.get({productId: routeParams.productId, template: 'true'}, function (data) {
|
||||
scope.product = data;
|
||||
scope.charges = data.charges;
|
||||
scope.assetAccountOptions = scope.product.accountingMappingOptions.assetAccountOptions || [];
|
||||
scope.liabilityAccountOptions = scope.product.accountingMappingOptions.liabilityAccountOptions || [];
|
||||
scope.incomeAccountOptions = scope.product.accountingMappingOptions.incomeAccountOptions || [];
|
||||
scope.expenseAccountOptions = scope.product.accountingMappingOptions.expenseAccountOptions || [];
|
||||
var interestFreePeriodFrequencyTypeId = (_.isNull(data.interestFreePeriodFrequencyType) || _.isUndefined(data.interestFreePeriodFrequencyType)) ? '' : data.interestFreePeriodFrequencyType.id;
|
||||
var preClosurePenalInterestOnTypeId = (_.isNull(data.preClosurePenalInterestOnType) || _.isUndefined(data.preClosurePenalInterestOnType)) ? '' : data.preClosurePenalInterestOnType.id;
|
||||
var minDepositTermTypeId = (_.isNull(data.minDepositTermType) || _.isUndefined(data.minDepositTermType)) ? '' : data.minDepositTermType.id;
|
||||
var maxDepositTermTypeId = (_.isNull(data.maxDepositTermType) || _.isUndefined(data.maxDepositTermType)) ? '' : data.maxDepositTermType.id;
|
||||
var inMultiplesOfDepositTermTypeId = (_.isNull(data.inMultiplesOfDepositTermType) || _.isUndefined(data.inMultiplesOfDepositTermType)) ? '' : data.inMultiplesOfDepositTermType.id;
|
||||
scope.formData = {
|
||||
name: data.name,
|
||||
shortName: data.shortName,
|
||||
description: data.description,
|
||||
currencyCode: data.currency.code,
|
||||
digitsAfterDecimal: data.currency.decimalPlaces,
|
||||
inMultiplesOf: data.currency.inMultiplesOf,
|
||||
nominalAnnualInterestRate: data.nominalAnnualInterestRate,
|
||||
minRequiredOpeningBalance: data.minRequiredOpeningBalance,
|
||||
lockinPeriodFrequency: data.lockinPeriodFrequency,
|
||||
interestCompoundingPeriodType: data.interestCompoundingPeriodType.id,
|
||||
interestPostingPeriodType: data.interestPostingPeriodType.id,
|
||||
interestCalculationType: data.interestCalculationType.id,
|
||||
interestCalculationDaysInYearType: data.interestCalculationDaysInYearType.id,
|
||||
accountingRule: data.accountingRule.id,
|
||||
interestFreePeriodApplicable: data.interestFreePeriodApplicable,
|
||||
interestFreeFromPeriod: data.interestFreeFromPeriod,
|
||||
interestFreeToPeriod: data.interestFreeToPeriod,
|
||||
interestFreePeriodFrequencyTypeId: interestFreePeriodFrequencyTypeId,
|
||||
preClosurePenalApplicable: data.preClosurePenalApplicable,
|
||||
preClosurePenalInterest: data.preClosurePenalInterest,
|
||||
preClosurePenalInterestOnTypeId: preClosurePenalInterestOnTypeId,
|
||||
recurringDepositTypeId: data.recurringDepositType.id,
|
||||
recurringDepositFrequencyTypeId: data.recurringDepositFrequencyType.id,
|
||||
recurringDepositFrequency: data.recurringDepositFrequency,
|
||||
minDepositTerm: data.minDepositTerm,
|
||||
maxDepositTerm: data.maxDepositTerm,
|
||||
minDepositTermTypeId: minDepositTermTypeId,
|
||||
maxDepositTermTypeId: maxDepositTermTypeId,
|
||||
inMultiplesOfDepositTerm: data.inMultiplesOfDepositTerm,
|
||||
inMultiplesOfDepositTermTypeId: inMultiplesOfDepositTermTypeId
|
||||
}
|
||||
|
||||
scope.chart = scope.product.activeChart;
|
||||
scope.chart.chartSlabs = _.sortBy(scope.chart.chartSlabs, function (obj) {
|
||||
return obj.fromPeriod
|
||||
});
|
||||
//format chart date values
|
||||
if (scope.chart.fromDate) {
|
||||
var fromDate = dateFilter(scope.chart.fromDate, scope.df);
|
||||
scope.fromDate.date = new Date(fromDate);
|
||||
}
|
||||
if (scope.chart.endDate) {
|
||||
var endDate = dateFilter(scope.chart.endDate, scope.df);
|
||||
scope.endDate.date = new Date(endDate);
|
||||
}
|
||||
|
||||
if (data.lockinPeriodFrequencyType) {
|
||||
scope.formData.lockinPeriodFrequencyType = data.lockinPeriodFrequencyType.id;
|
||||
}
|
||||
|
||||
if (scope.formData.accountingRule == 1) {
|
||||
|
||||
if (scope.assetAccountOptions.length > 0) {
|
||||
scope.formData.savingsReferenceAccountId = scope.assetAccountOptions[0].id;
|
||||
}
|
||||
if (scope.liabilityAccountOptions.length > 0) {
|
||||
scope.formData.savingsControlAccountId = scope.liabilityAccountOptions[0].id;
|
||||
}
|
||||
if (scope.liabilityAccountOptions.length > 1) {
|
||||
scope.formData.transfersInSuspenseAccountId = scope.liabilityAccountOptions[1].id;
|
||||
}
|
||||
if (scope.incomeAccountOptions.length > 0) {
|
||||
scope.formData.incomeFromFeeAccountId = scope.incomeAccountOptions[0].id;
|
||||
}
|
||||
if (scope.incomeAccountOptions.length > 1) {
|
||||
scope.formData.incomeFromPenaltyAccountId = scope.incomeAccountOptions[1].id;
|
||||
}
|
||||
if (scope.expenseAccountOptions.length > 0) {
|
||||
scope.formData.interestOnSavingsAccountId = scope.expenseAccountOptions[0].id;
|
||||
}
|
||||
} else {
|
||||
scope.formData.savingsReferenceAccountId = data.accountingMappings.savingsReferenceAccount.id;
|
||||
scope.formData.savingsControlAccountId = data.accountingMappings.savingsControlAccount.id;
|
||||
scope.formData.transfersInSuspenseAccountId = data.accountingMappings.transfersInSuspenseAccount.id;
|
||||
scope.formData.incomeFromFeeAccountId = data.accountingMappings.incomeFromFeeAccount.id;
|
||||
scope.formData.incomeFromPenaltyAccountId = data.accountingMappings.incomeFromPenaltyAccount.id;
|
||||
scope.formData.interestOnSavingsAccountId = data.accountingMappings.interestOnSavingsAccount.id;
|
||||
|
||||
_.each(scope.product.paymentChannelToFundSourceMappings, function (fundSource) {
|
||||
scope.configureFundOptions.push({
|
||||
paymentTypeId: fundSource.paymentType.id,
|
||||
fundSourceAccountId: fundSource.fundSourceAccount.id,
|
||||
paymentTypeOptions: scope.product.paymentTypeOptions,
|
||||
assetAccountOptions: scope.assetAccountOptions
|
||||
})
|
||||
});
|
||||
|
||||
_.each(scope.product.feeToIncomeAccountMappings, function (fees) {
|
||||
scope.specificIncomeaccounts.push({
|
||||
chargeId: fees.charge.id,
|
||||
incomeAccountId: fees.incomeAccount.id,
|
||||
chargeOptions: scope.product.chargeOptions,
|
||||
incomeAccountOptions: scope.incomeAccountOptions
|
||||
})
|
||||
});
|
||||
|
||||
_.each(scope.product.penaltyToIncomeAccountMappings, function (penalty) {
|
||||
scope.penaltySpecificIncomeaccounts.push({
|
||||
chargeId: penalty.charge.id,
|
||||
incomeAccountId: penalty.incomeAccount.id,
|
||||
penaltyOptions: scope.product.penaltyOptions,
|
||||
incomeAccountOptions: scope.incomeAccountOptions
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
//advanced accounting rule
|
||||
scope.showOrHide = function (showOrHideValue) {
|
||||
|
||||
if (showOrHideValue == "show") {
|
||||
scope.showOrHideValue = 'hide';
|
||||
}
|
||||
|
||||
if (showOrHideValue == "hide") {
|
||||
scope.showOrHideValue = 'show';
|
||||
}
|
||||
}
|
||||
|
||||
scope.chargeSelected = function (chargeId) {
|
||||
if (chargeId) {
|
||||
resourceFactory.chargeResource.get({chargeId: chargeId, template: 'true'}, this.formData, function (data) {
|
||||
data.chargeId = data.id;
|
||||
scope.charges.push(data);
|
||||
//to charge select box empty
|
||||
scope.chargeId = '';
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
scope.deleteCharge = function (index) {
|
||||
scope.charges.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.addConfigureFundSource = function () {
|
||||
if (scope.product.paymentTypeOptions && scope.product.paymentTypeOptions.length > 0 &&
|
||||
scope.assetAccountOptions && scope.assetAccountOptions.length > 0) {
|
||||
scope.configureFundOptions.push({
|
||||
paymentTypeId: scope.product.paymentTypeOptions[0].id,
|
||||
fundSourceAccountId: scope.assetAccountOptions[0].id,
|
||||
paymentTypeOptions: scope.product.paymentTypeOptions,
|
||||
assetAccountOptions: scope.assetAccountOptions
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
scope.mapFees = function () {
|
||||
if (scope.product.chargeOptions && scope.product.chargeOptions.length > 0 && scope.incomeAccountOptions && scope.incomeAccountOptions.length > 0) {
|
||||
scope.specificIncomeaccounts.push({
|
||||
chargeId: scope.product.chargeOptions[0].id,
|
||||
incomeAccountId: scope.incomeAccountOptions[0].id,
|
||||
chargeOptions: scope.product.chargeOptions,
|
||||
incomeAccountOptions: scope.product.accountingMappingOptions.incomeAccountOptions
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
scope.mapPenalty = function () {
|
||||
if (scope.product.penaltyOptions && scope.product.penaltyOptions.length > 0 && scope.incomeAccountOptions && scope.incomeAccountOptions.length > 0) {
|
||||
scope.penaltySpecificIncomeaccounts.push({
|
||||
chargeId: scope.product.penaltyOptions[0].id,
|
||||
incomeAccountId: scope.incomeAccountOptions[0].id,
|
||||
penaltyOptions: scope.product.penaltyOptions,
|
||||
incomeAccountOptions: scope.incomeAccountOptions
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
scope.deleteFund = function (index) {
|
||||
scope.configureFundOptions.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.deleteFee = function (index) {
|
||||
scope.specificIncomeaccounts.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.deletePenalty = function (index) {
|
||||
scope.penaltySpecificIncomeaccounts.splice(index, 1);
|
||||
}
|
||||
|
||||
scope.cancel = function () {
|
||||
location.path('/viewrecurringdepositproduct/' + routeParams.id);
|
||||
};
|
||||
|
||||
scope.submit = function () {
|
||||
scope.paymentChannelToFundSourceMappings = [];
|
||||
scope.feeToIncomeAccountMappings = [];
|
||||
scope.penaltyToIncomeAccountMappings = [];
|
||||
scope.chargesSelected = [];
|
||||
|
||||
var temp = '';
|
||||
|
||||
//configure fund sources for payment channels
|
||||
for (var i in scope.configureFundOptions) {
|
||||
temp = {
|
||||
paymentTypeId: scope.configureFundOptions[i].paymentTypeId,
|
||||
fundSourceAccountId: scope.configureFundOptions[i].fundSourceAccountId
|
||||
}
|
||||
scope.paymentChannelToFundSourceMappings.push(temp);
|
||||
}
|
||||
|
||||
//map fees to specific income accounts
|
||||
for (var i in scope.specificIncomeaccounts) {
|
||||
temp = {
|
||||
chargeId: scope.specificIncomeaccounts[i].chargeId,
|
||||
incomeAccountId: scope.specificIncomeaccounts[i].incomeAccountId,
|
||||
}
|
||||
scope.feeToIncomeAccountMappings.push(temp);
|
||||
}
|
||||
|
||||
//map penalties to specific income accounts
|
||||
for (var i in scope.penaltySpecificIncomeaccounts) {
|
||||
temp = {
|
||||
chargeId: scope.penaltySpecificIncomeaccounts[i].chargeId,
|
||||
incomeAccountId: scope.penaltySpecificIncomeaccounts[i].incomeAccountId,
|
||||
}
|
||||
scope.penaltyToIncomeAccountMappings.push(temp);
|
||||
}
|
||||
|
||||
for (var i in scope.charges) {
|
||||
temp = {
|
||||
id: scope.charges[i].id
|
||||
}
|
||||
scope.chargesSelected.push(temp);
|
||||
}
|
||||
|
||||
this.formData.paymentChannelToFundSourceMappings = scope.paymentChannelToFundSourceMappings;
|
||||
this.formData.feeToIncomeAccountMappings = scope.feeToIncomeAccountMappings;
|
||||
this.formData.penaltyToIncomeAccountMappings = scope.penaltyToIncomeAccountMappings;
|
||||
this.formData.charges = scope.chargesSelected;
|
||||
this.formData.locale = "en";
|
||||
this.formData.charts = [];//declare charts array
|
||||
this.formData.charts.push(copyChartData(scope.chart));//add chart details
|
||||
this.formData = removeEmptyValues(this.formData);
|
||||
resourceFactory.recurringDepositProductResource.update({productId: routeParams.productId}, this.formData, function (data) {
|
||||
location.path('/viewrecurringdepositproduct/' + data.resourceId);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new row with default values for entering chart details
|
||||
*/
|
||||
scope.addNewRow = function () {
|
||||
var fromPeriod = '';
|
||||
var amountRangeFrom = '';
|
||||
var periodType = '';
|
||||
if (_.isNull(scope.chart.chartSlabs) || _.isUndefined(scope.chart.chartSlabs)) {
|
||||
scope.chart.chartSlabs = [];
|
||||
} else {
|
||||
var lastChartSlab = {};
|
||||
if (scope.chart.chartSlabs.length > 0) {
|
||||
lastChartSlab = angular.copy(scope.chart.chartSlabs[scope.chart.chartSlabs.length - 1]);
|
||||
}
|
||||
if (!(_.isNull(lastChartSlab) || _.isUndefined(lastChartSlab))) {
|
||||
fromPeriod = _.isNull(lastChartSlab) ? '' : parseInt(lastChartSlab.toPeriod) + 1;
|
||||
amountRangeFrom = _.isNull(lastChartSlab) ? '' : parseFloat(lastChartSlab.amountRangeTo) + 1;
|
||||
periodType = angular.copy(lastChartSlab.periodType);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var chartSlab = {
|
||||
"periodType": periodType,
|
||||
"fromPeriod": fromPeriod,
|
||||
"amountRangeFrom": amountRangeFrom
|
||||
};
|
||||
|
||||
scope.chart.chartSlabs.push(chartSlab);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* create new chart data object
|
||||
*/
|
||||
|
||||
copyChartData = function () {
|
||||
var newChartData = {
|
||||
id: scope.chart.id,
|
||||
//name: scope.chart.name,
|
||||
//description: scope.chart.description,
|
||||
fromDate: dateFilter(scope.fromDate.date, scope.df),
|
||||
endDate: dateFilter(scope.endDate.date, scope.df),
|
||||
//savingsProductId: scope.productId,
|
||||
dateFormat: scope.df,
|
||||
locale: scope.optlang.code,
|
||||
chartSlabs: angular.copy(copyChartSlabs(scope.chart.chartSlabs))
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartData, function (v, k) {
|
||||
if (!v)
|
||||
delete newChartData[k];
|
||||
});
|
||||
|
||||
return newChartData;
|
||||
}
|
||||
|
||||
/**
|
||||
* copy all chart details to a new Array
|
||||
* @param chartSlabs
|
||||
* @returns {Array}
|
||||
*/
|
||||
copyChartSlabs = function (chartSlabs) {
|
||||
var detailsArray = [];
|
||||
_.each(chartSlabs, function (chartSlab) {
|
||||
var chartSlabData = copyChartSlab(chartSlab);
|
||||
detailsArray.push(chartSlabData);
|
||||
});
|
||||
return detailsArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* create new chart detail object data from chartSlab
|
||||
* @param chartSlab
|
||||
*
|
||||
*/
|
||||
|
||||
copyChartSlab = function (chartSlab) {
|
||||
var newChartSlabData = {
|
||||
id: chartSlab.id,
|
||||
description: chartSlab.description,
|
||||
periodType: chartSlab.periodType.id,
|
||||
fromPeriod: chartSlab.fromPeriod,
|
||||
toPeriod: chartSlab.toPeriod,
|
||||
amountRangeFrom: chartSlab.amountRangeFrom,
|
||||
amountRangeTo: chartSlab.amountRangeTo,
|
||||
annualInterestRate: chartSlab.annualInterestRate,
|
||||
locale: scope.optlang.code
|
||||
}
|
||||
|
||||
//remove empty values
|
||||
_.each(newChartSlabData, function (v, k) {
|
||||
if (v === '') {
|
||||
delete newChartSlabData[k];
|
||||
}
|
||||
if (!v && v != 0) {
|
||||
delete newChartSlabData[k];
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return newChartSlabData;
|
||||
}
|
||||
|
||||
removeEmptyValues = function (objArray) {
|
||||
_.each(objArray, function (v, k) {
|
||||
//alert(k + ':' + v);
|
||||
if (_.isNull(v) || _.isUndefined(v) || v === '') {
|
||||
//alert('remove' + k + ':' + v);
|
||||
delete objArray[k];
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return objArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove chart details row
|
||||
*/
|
||||
scope.removeRow = function (index) {
|
||||
scope.chart.chartSlabs.splice(index, 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('EditRecurringDepositProductController', ['$scope', 'ResourceFactory', '$location', '$routeParams', 'dateFilter', mifosX.controllers.EditRecurringDepositProductController]).run(function ($log) {
|
||||
$log.info("EditRecurringDepositProductController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,16 @@
|
||||
(function(module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
FixedDepositProductController: function(scope, resourceFactory,location) {
|
||||
scope.routeTo = function(id){
|
||||
location.path('/viewfixeddepositproduct/' + id);
|
||||
};
|
||||
resourceFactory.fixedDepositProductResource.getAllFixedDepositProducts(function(data) {
|
||||
scope.depositproducts = data;
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('FixedDepositProductController', ['$scope', 'ResourceFactory','$location', mifosX.controllers.FixedDepositProductController]).run(function($log) {
|
||||
$log.info("FixedDepositProductController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,29 @@
|
||||
(function(module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
InterestRateChartController: function(scope, routeParams, resourceFactory, location) {
|
||||
scope.edit = function(id){
|
||||
location.path('/editinterestratechart/' + id);
|
||||
};
|
||||
scope.productName = routeParams.productName;
|
||||
scope.productId = routeParams.productId;
|
||||
scope.productsLink = '';
|
||||
scope.viewProductLink = '';
|
||||
scope.productType = routeParams.productType;
|
||||
if ( routeParams.productType === 'fixeddepositproduct'){
|
||||
scope.productsLink = 'fixeddepositproducts';
|
||||
scope.viewProductLink = 'viewfixeddepositproduct';
|
||||
}else if ( routeParams.productType === 'recurringdepositproduct'){
|
||||
scope.productsLink = 'recurringdepositproducts';
|
||||
scope.viewProductLink = 'viewrecurringdepositproduct';
|
||||
}
|
||||
|
||||
resourceFactory.interestRateChartResource.getAllInterestRateCharts({productId: routeParams.productId}, function(data) {
|
||||
scope.charts = data;
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('InterestRateChartController', ['$scope', '$routeParams', 'ResourceFactory','$location', mifosX.controllers.InterestRateChartController]).run(function($log) {
|
||||
$log.info("InterestRateChartController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,16 @@
|
||||
(function(module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
RecurringDepositProductController: function(scope, resourceFactory,location) {
|
||||
scope.routeTo = function(id){
|
||||
location.path('/viewrecurringdepositproduct/' + id);
|
||||
};
|
||||
resourceFactory.recurringDepositProductResource.getAllRecurringDepositProducts(function(data) {
|
||||
scope.depositproducts = data;
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('RecurringDepositProductController', ['$scope', 'ResourceFactory','$location', mifosX.controllers.RecurringDepositProductController]).run(function($log) {
|
||||
$log.info("RecurringDepositProductController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,19 @@
|
||||
(function(module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
ViewFixedDepositProductController: function(scope, routeParams , location , anchorScroll , resourceFactory ) {
|
||||
resourceFactory.fixedDepositProductResource.get({productId: routeParams.productId , template: 'true'} , function(data) {
|
||||
scope.depositproduct = data;
|
||||
scope.hasAccounting = data.accountingRule.id == 2 ? true : false;
|
||||
});
|
||||
|
||||
scope.scrollto = function (link){
|
||||
location.hash(link);
|
||||
anchorScroll();
|
||||
|
||||
};
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('ViewFixedDepositProductController', ['$scope', '$routeParams', '$location', '$anchorScroll' , 'ResourceFactory', mifosX.controllers.ViewFixedDepositProductController]).run(function($log) {
|
||||
$log.info("ViewFixedDepositProductController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -0,0 +1,19 @@
|
||||
(function(module) {
|
||||
mifosX.controllers = _.extend(module, {
|
||||
ViewRecurringDepositProductController: function(scope, routeParams , location , anchorScroll , resourceFactory ) {
|
||||
resourceFactory.recurringDepositProductResource.get({productId: routeParams.productId , template: 'true'} , function(data) {
|
||||
scope.depositproduct = data;
|
||||
scope.hasAccounting = data.accountingRule.id == 2 ? true : false;
|
||||
});
|
||||
|
||||
scope.scrollto = function (link){
|
||||
location.hash(link);
|
||||
anchorScroll();
|
||||
|
||||
};
|
||||
}
|
||||
});
|
||||
mifosX.ng.application.controller('ViewRecurringDepositProductController', ['$scope', '$routeParams', '$location', '$anchorScroll' , 'ResourceFactory', mifosX.controllers.ViewRecurringDepositProductController]).run(function($log) {
|
||||
$log.info("ViewRecurringDepositProductController initialized");
|
||||
});
|
||||
}(mifosX.controllers || {}));
|
||||
@ -14,6 +14,7 @@
|
||||
"savingsAccountStatusType.submitted.and.pending.approval": "statuspending",
|
||||
"savingsAccountStatusType.approved": "statusApproved",
|
||||
"savingsAccountStatusType.active": "statusactive",
|
||||
"savingsAccountStatusType.matured": "statusmatured",
|
||||
"loanProduct.active": "statusactive",
|
||||
"clientStatusType.pending": "statuspending",
|
||||
"clientStatusType.active": "statusactive",
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
|
||||
(function (mifosX) {
|
||||
var defineHeaders = function ($httpProvider, $translateProvider, ResourceFactoryProvider, HttpServiceProvider, $idleProvider, $keepaliveProvider, IDLE_DURATION, WARN_DURATION, KEEPALIVE_INTERVAL) {
|
||||
var mainLink = getLocation(window.location.href);
|
||||
@ -19,7 +20,6 @@
|
||||
$httpProvider.defaults.headers.common['X-Mifos-Platform-TenantId'] = domains[0];
|
||||
ResourceFactoryProvider.setTenantIdenetifier(domains[0]);
|
||||
console.log("other than demo server", domains[0]);
|
||||
|
||||
}
|
||||
host = "https://" + mainLink.hostname;
|
||||
console.log('hostname from mainLink = ', host);
|
||||
|
||||
@ -57,6 +57,17 @@ define(['Q', 'underscore', 'mifosX'], function (Q) {
|
||||
'product/SavingProductController',
|
||||
'product/ViewSavingProductController',
|
||||
'product/ViewLoanProductController',
|
||||
'product/FixedDepositProductController',
|
||||
'product/ViewFixedDepositProductController',
|
||||
'product/CreateFixedDepositProductController',
|
||||
'product/EditFixedDepositProductController',
|
||||
'product/RecurringDepositProductController',
|
||||
'product/ViewRecurringDepositProductController',
|
||||
'product/CreateRecurringDepositProductController',
|
||||
'product/EditRecurringDepositProductController',
|
||||
'product/InterestRateChartController',
|
||||
'product/CreateInterestRateChartController',
|
||||
'product/EditInterestRateChartController',
|
||||
'user/UserController',
|
||||
'user/UserFormController',
|
||||
'user/UserSettingController',
|
||||
@ -138,6 +149,18 @@ define(['Q', 'underscore', 'mifosX'], function (Q) {
|
||||
'savings/ViewSavingsTransactionController',
|
||||
'savings/AddNewSavingsChargeController',
|
||||
'savings/ViewSavingChargeController',
|
||||
'deposits/fixed/FixedDepositAccountActionsController',
|
||||
'deposits/fixed/ViewFixedDepositAccountDetailsController',
|
||||
'deposits/fixed/CreateFixedDepositAccountController',
|
||||
'deposits/fixed/EditDepositAccountController',
|
||||
'deposits/fixed/AddNewFixedDepositChargeController',
|
||||
'deposits/fixed/ViewFixedDepositTransactionController',
|
||||
'deposits/recurring/RecurringDepositAccountActionsController',
|
||||
'deposits/recurring/ViewRecurringDepositAccountDetailsController',
|
||||
'deposits/recurring/CreateRecurringDepositAccountController',
|
||||
'deposits/recurring/EditRecurringDepositAccountController',
|
||||
'deposits/recurring/AddNewRecurringDepositChargeController',
|
||||
'deposits/recurring/ViewRecurringDepositTransactionController',
|
||||
'groups/CreateGroupController',
|
||||
'groups/AddMemberController',
|
||||
'groups/EditGroupController',
|
||||
|
||||
@ -178,6 +178,39 @@
|
||||
.when('/viewsavingproduct/:id', {
|
||||
templateUrl: 'views/products/viewsavingproduct.html'
|
||||
})
|
||||
.when('/fixeddepositproducts', {
|
||||
templateUrl: 'views/products/fixeddepositproducts.html'
|
||||
})
|
||||
.when('/viewfixeddepositproduct/:productId', {
|
||||
templateUrl: 'views/products/viewfixeddepositproduct.html'
|
||||
})
|
||||
.when('/createfixeddepositproduct', {
|
||||
templateUrl: 'views/products/createfixeddepositproduct.html'
|
||||
})
|
||||
.when('/editfixeddepositproduct/:productId', {
|
||||
templateUrl: 'views/products/editfixeddepositproduct.html'
|
||||
})
|
||||
.when('/recurringdepositproducts', {
|
||||
templateUrl: 'views/products/recurringdepositproducts.html'
|
||||
})
|
||||
.when('/viewrecurringdepositproduct/:productId', {
|
||||
templateUrl: 'views/products/viewrecurringdepositproduct.html'
|
||||
})
|
||||
.when('/createrecurringdepositproduct', {
|
||||
templateUrl: 'views/products/createrecurringdepositproduct.html'
|
||||
})
|
||||
.when('/editrecurringdepositproduct/:productId', {
|
||||
templateUrl: 'views/products/editrecurringdepositproduct.html'
|
||||
})
|
||||
.when('/createinterestratechart/:productId/:productName/:productType', {
|
||||
templateUrl: 'views/products/createinterestratechart.html'
|
||||
})
|
||||
.when('/interestratecharts/:productId/:productName/:productType', {
|
||||
templateUrl: 'views/products/interestratecharts.html'
|
||||
})
|
||||
.when('/editinterestratecharts/:chartId/:productId/:productName/:productType', {
|
||||
templateUrl: 'views/products/editinterestratechart.html'
|
||||
})
|
||||
.when('/offices', {
|
||||
templateUrl: 'views/organization/offices.html'
|
||||
})
|
||||
@ -409,6 +442,48 @@
|
||||
.when('/viewsavingtrxn/:accountId/trxnId/:id', {
|
||||
templateUrl: 'views/savings/view_saving_transaction.html'
|
||||
})
|
||||
.when('/newclientfixeddepositaccount/:clientId', {
|
||||
templateUrl: 'views/deposits/fixed/newapplication.html'
|
||||
})
|
||||
.when('/viewfixeddepositaccount/:id', {
|
||||
templateUrl: 'views/deposits/fixed/viewaccountdetails.html'
|
||||
})
|
||||
.when('/editfixeddepositaccount/:id', {
|
||||
templateUrl: 'views/deposits/fixed/edit_account_application.html'
|
||||
})
|
||||
.when('/fixeddepositaccount/:id/charges', {
|
||||
templateUrl: 'views/deposits/fixed/add_new_fixed_deposit_charge.html'
|
||||
})
|
||||
.when('/fixeddepositaccount/:id/:action', {
|
||||
templateUrl: 'views/deposits/fixed/fixed_deposit_account_actions.html'
|
||||
})
|
||||
.when('/fixeddepositaccountcharge/:id/:action/:chargeId', {
|
||||
templateUrl: 'views/deposits/fixed/fixed_deposit_account_actions.html'
|
||||
})
|
||||
.when('/viewfixeddepositaccounttrxn/:accountId/:transactionId', {
|
||||
templateUrl: 'views/deposits/fixed/view_fixed_deposit_transaction.html'
|
||||
})
|
||||
.when('/newclientrecurringdepositaccount/:clientId', {
|
||||
templateUrl: 'views/deposits/recurring/newapplication.html'
|
||||
})
|
||||
.when('/viewrecurringdepositaccount/:id', {
|
||||
templateUrl: 'views/deposits/recurring/viewaccountdetails.html'
|
||||
})
|
||||
.when('/editrecurringdepositaccount/:id', {
|
||||
templateUrl: 'views/deposits/recurring/edit_account_application.html'
|
||||
})
|
||||
.when('/recurringdepositaccount/:id/charges', {
|
||||
templateUrl: 'views/deposits/recurring/add_new_recurring_deposit_charge.html'
|
||||
})
|
||||
.when('/recurringdepositaccount/:id/:action', {
|
||||
templateUrl: 'views/deposits/recurring/recurring_deposit_account_actions.html'
|
||||
})
|
||||
.when('/recurringdepositaccountcharge/:id/:action/:chargeId', {
|
||||
templateUrl: 'views/deposits/recurring/recurring_deposit_account_actions.html'
|
||||
})
|
||||
.when('/viewrecurringdepositaccounttrxn/:accountId/:transactionId', {
|
||||
templateUrl: 'views/deposits/recurring/view_recurring_deposit_transaction.html'
|
||||
})
|
||||
.when('/viewgroup/:id', {
|
||||
templateUrl: 'views/groups/viewgroup.html'
|
||||
})
|
||||
|
||||
@ -121,12 +121,25 @@
|
||||
}),
|
||||
chargeTemplateResource: defineResource(apiVer + "/charges/template", {
|
||||
get: {method: 'GET', params: {}, isArray: true},
|
||||
getChargeTemplates: {method: 'GET', params: {}},
|
||||
getChargeTemplates: {method: 'GET', params: {}}
|
||||
}),
|
||||
savingProductResource: defineResource(apiVer + "/savingsproducts/:savingProductId/:resourceType", {savingProductId: '@savingProductId', resourceType: '@resourceType'}, {
|
||||
getAllSavingProducts: {method: 'GET', params: {}, isArray: true},
|
||||
update: {method: 'PUT', params: {}}
|
||||
}),
|
||||
fixedDepositProductResource: defineResource(apiVer + "/fixeddepositproducts/:productId/:resourceType", {productId:'@productId', resourceType:'@resourceType'}, {
|
||||
getAllFixedDepositProducts: {method: 'GET', params: {}, isArray:true},
|
||||
update: {method: 'PUT', params: {}}
|
||||
}),
|
||||
recurringDepositProductResource: defineResource(apiVer + "/recurringdepositproducts/:productId/:resourceType", {productId:'@productId', resourceType:'@resourceType'}, {
|
||||
getAllRecurringDepositProducts: {method: 'GET', params: {}, isArray:true},
|
||||
update: {method: 'PUT', params: {}}
|
||||
}),
|
||||
interestRateChartResource: defineResource(apiVer + "/interestratecharts/:chartId/:resourceType", {chartId:'@chartId', resourceType:'@resourceType'}, {
|
||||
getInterestRateChart: {method: 'GET', params: {productId:'@productId', template:'@template'} , isArray:true},
|
||||
update: {method: 'PUT', params: {}},
|
||||
getAllInterestRateCharts: {method: 'GET', params: {productId:'@productId'}, isArray:true}
|
||||
}),
|
||||
loanResource: defineResource(apiVer + "/loans/:loanId/:resourceType/:resourceId", {resourceType: '@resourceType', loanId: '@loanId', resourceId: '@resourceId'}, {
|
||||
getAllLoans: {method: 'GET', params: {}},
|
||||
getAllNotes: {method: 'GET', params: {}, isArray: true},
|
||||
@ -249,6 +262,32 @@
|
||||
savingsTrxnsResource: defineResource(apiVer + "/savingsaccounts/:savingsId/transactions/:transactionId", {savingsId: '@savingsId', transactionId: '@transactionId'}, {
|
||||
get: {method: 'GET', params: {savingsId: '@savingsId', transactionId: '@transactionId'}}
|
||||
}),
|
||||
fixedDepositAccountResource: defineResource(apiVer + "/fixeddepositaccounts/:accountId/:resourceType", {accountId:'@accountId', resourceType:'@resourceType'}, {
|
||||
get: {method: 'GET', params: {}},
|
||||
update: {method: 'PUT'}
|
||||
}),
|
||||
fixedDepositAccountTemplateResource: defineResource(apiVer + "/fixeddepositaccounts/template", {}, {
|
||||
get: {method: 'GET', params: {}}
|
||||
}),
|
||||
fixedDepositTrxnsTemplateResource: defineResource(apiVer + "/fixeddepositaccounts/:savingsId/transactions/template", {savingsId:'@savingsId'}, {
|
||||
get: {method: 'GET', params: {savingsId:'@savingsId'}}
|
||||
}),
|
||||
fixedDepositTrxnsResource: defineResource(apiVer + "/fixeddepositaccounts/:savingsId/transactions/:transactionId", {savingsId: '@savingsId', transactionId: '@transactionId'}, {
|
||||
get: {method: 'GET', params: {savingsId: '@savingsId', transactionId: '@transactionId'}}
|
||||
}),
|
||||
recurringDepositAccountResource: defineResource(apiVer + "/recurringdepositaccounts/:accountId/:resourceType", {accountId:'@accountId', resourceType:'@resourceType'}, {
|
||||
get: {method: 'GET', params: {}},
|
||||
update: {method: 'PUT'}
|
||||
}),
|
||||
recurringDepositAccountTemplateResource: defineResource(apiVer + "/recurringdepositaccounts/template", {}, {
|
||||
get: {method: 'GET', params: {}}
|
||||
}),
|
||||
recurringDepositTrxnsTemplateResource: defineResource(apiVer + "/recurringdepositaccounts/:savingsId/transactions/template", {savingsId: '@savingsId'}, {
|
||||
get: {method: 'GET', params: {savingsId: '@savingsId'}}
|
||||
}),
|
||||
recurringDepositTrxnsResource: defineResource(apiVer + "/recurringdepositaccounts/:savingsId/transactions/:transactionId", {savingsId: '@savingsId', transactionId: '@transactionId'}, {
|
||||
get: {method: 'GET', params: {savingsId: '@savingsId', transactionId: '@transactionId'}}
|
||||
}),
|
||||
accountTransferResource: defineResource(apiVer + "/accounttransfers/:transferId", {transferId: '@transferId'}, {
|
||||
get: {method: 'GET', params: {transferId: '@transferId'}}
|
||||
}),
|
||||
@ -285,7 +324,7 @@
|
||||
get: {method: 'GET', params: {}, isArray: true},
|
||||
getJobDetails: {method: 'GET', params: {}},
|
||||
getJobHistory: {method: 'GET', params: {}},
|
||||
update: {method: 'PUT', params: {}},
|
||||
update: {method: 'PUT', params: {}}
|
||||
}),
|
||||
schedulerResource: defineResource(apiVer + "/scheduler", {}, {
|
||||
get: {method: 'GET', params: {}}
|
||||
@ -304,7 +343,7 @@
|
||||
templateResource: defineResource(apiVer + "/templates/:templateId/:resourceType", {templateId: '@templateId', resourceType: '@resourceType'}, {
|
||||
get: {method: 'GET', params: {}, isArray: true},
|
||||
getTemplateDetails: {method: 'GET', params: {}},
|
||||
update: {method: 'PUT', params: {}},
|
||||
update: {method: 'PUT', params: {}}
|
||||
}),
|
||||
loanProductTemplateResource: defineResource(apiVer + "/loanproducts/template", {}, {
|
||||
get: {method: 'GET', params: {}}
|
||||
@ -324,7 +363,6 @@
|
||||
get: {method: 'GET', params: {}},
|
||||
search: {method: 'GET', params: {}, isArray: true}
|
||||
})
|
||||
|
||||
};
|
||||
}];
|
||||
}
|
||||
|
||||
@ -145,6 +145,10 @@ div > div > ul > li a:focus {
|
||||
color: #008000;
|
||||
}
|
||||
|
||||
.statusmatured {
|
||||
color: #FF4000;
|
||||
}
|
||||
|
||||
.statusdeleted {
|
||||
color: #000000;
|
||||
}
|
||||
@ -410,6 +414,10 @@ tr.pointer-main:hover {
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
.input-mini-medium {
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
.input-smaller {
|
||||
width: 65px;
|
||||
}
|
||||
@ -1115,6 +1123,7 @@ input#search:-ms-input-placeholder {
|
||||
.margintopminustenpx{
|
||||
margin-top: -10px;
|
||||
}
|
||||
|
||||
.modalwidth600{
|
||||
width: 600px;
|
||||
}
|
||||
@ -1182,6 +1191,7 @@ hr.terms:after {
|
||||
background: white;
|
||||
border-width: 1px 0 0;
|
||||
}*/
|
||||
|
||||
.clear{
|
||||
clear:both;
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,6 +62,24 @@
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">{{'label.input.dateofbirth' | translate}}</label>
|
||||
|
||||
<div class="col-sm-3">
|
||||
<input id="dateofbirth" type="text" name="dateofbirth" datepicker-pop="dd MMMM yyyy"
|
||||
ng-model="first.dateofbirth" is-open="opened1" max="restrictDate" class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">{{'label.input.gender' | translate}}</label>
|
||||
|
||||
<div class="col-sm-3">
|
||||
<select id="genderId" ng-model="formData.genderId" class="form-control"
|
||||
ng-options="gender.id as gender.name for gender in genderOptions" value="{{gender.id}}">
|
||||
<option value="">--{{'label.menu.gender' | translate}}--</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2" for="externalId">{{'label.input.externalid' | translate}}</label>
|
||||
|
||||
|
||||
@ -66,6 +66,12 @@
|
||||
<a data-ng-click="createstandinginstruction()" has-permission='READ_STANDINGINSTRUCTION'>{{'label.button.createstandinginstruction'
|
||||
| translate}}</a>
|
||||
</li>
|
||||
<li class="{{button.icon}}" data-ng-show="client.status.value=='Active'">
|
||||
<a href="#/newclientfixeddepositaccount/{{client.id}}">{{'label.newfixeddepositaccount' | translate}}</a>
|
||||
</li>
|
||||
<li class="{{button.icon}}" data-ng-show="client.status.value=='Active'">
|
||||
<a href="#/newclientrecurringdepositaccount/{{client.id}}">{{'label.newrecurringdepositaccount' | translate}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</span>
|
||||
</div>
|
||||
@ -290,11 +296,11 @@
|
||||
</tr>
|
||||
<tr class="pointer-main"
|
||||
ng-repeat="savingaccount in clientAccounts.savingsAccounts | orderBy:'id':true | filter:isSavingNotClosed">
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id)">{{savingaccount.productName}}</td>
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id)">{{savingaccount.accountNo}}</td>
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id)">{{savingaccount.accountBalance}}
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id, savingaccount.depositType.code)">{{savingaccount.productName}}</td>
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id, savingaccount.depositType.code)">{{savingaccount.accountNo}}</td>
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id, savingaccount.depositType.code)">{{savingaccount.accountBalance}}
|
||||
</td>
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id)"><i
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id, savingaccount.depositType.code)"><i
|
||||
class="icon-stop {{savingaccount.status.code | StatusLookup}}"></i> {{savingaccount.status.value}}
|
||||
</td>
|
||||
</tr>
|
||||
@ -308,12 +314,12 @@
|
||||
</tr>
|
||||
<tr class="pointer-main"
|
||||
ng-repeat="savingaccount in clientAccounts.savingsAccounts | orderBy:'id':true | filter:isSavingClosed">
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id)">{{savingaccount.productName}}</td>
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id)">{{savingaccount.accountNo}}</td>
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id)">
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id, savingaccount.depositType.code)">{{savingaccount.productName}}</td>
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id, savingaccount.depositType.code)">{{savingaccount.accountNo}}</td>
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id, savingaccount.depositType.code)">
|
||||
<i class="icon-stop {{savingaccount.status.code | StatusLookup}}"></i> {{savingaccount.status.value}}
|
||||
</td>
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id)">
|
||||
<td class="pointer" data-ng-click="routeToSaving(savingaccount.id, savingaccount.depositType.code)">
|
||||
<span data-ng-show="savingaccount.timeline.closedOnDate">{{savingaccount.timeline.closedOnDate | DateFormat}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
90
app/views/deposits/fixed/add_new_fixed_deposit_charge.html
Normal file
90
app/views/deposits/fixed/add_new_fixed_deposit_charge.html
Normal file
@ -0,0 +1,90 @@
|
||||
<div class="paddedbottom10">
|
||||
<ul class="breadcrumb">
|
||||
<li class="active">{{ 'label.anchor.add.fixed.deposit.charges' | translate }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<form name="savingccountchargeform" novalidate="" class="form-horizontal" ng-controller="AddNewFixedDepositChargeController"
|
||||
rc-submit="submit()">
|
||||
<api-validate></api-validate>
|
||||
<fieldset>
|
||||
<div class="control-group">
|
||||
<label class="control-label">{{ 'label.input.charges' | translate }}<span class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<select ng-model="formData.chargeId" id="chargeId" name="charge"
|
||||
ng-options="charge.id as (charge.name+ +'('+charge.currency.name+')') for charge in chargeOptions"
|
||||
value="{{formData.chargeId}}"
|
||||
ng-change="chargeSelected(formData.chargeId)" required>
|
||||
<option style="display:none" value="">{{ 'label.selectcharge' | translate }}</option>
|
||||
</select>
|
||||
<form-validate valattributeform="savingccountchargeform" valattribute="charge"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-show="chargeDetails">
|
||||
<div class="control-group">
|
||||
<label class="control-label">{{ 'label.input.amount' | translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="amount" type="text" name="amount" ng-model="formData.amount" required ng-late-Validate/>
|
||||
<form-validate valattributeform="savingccountchargeform" valattribute="amount"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label">{{ 'label.input.chargecalculation' | translate }}</label>
|
||||
|
||||
<div class="controls">
|
||||
<select id="chargeCalculationType" ng-model="chargeCalculationType"
|
||||
ng-options="chargeCalculation.id as chargeCalculation.value for chargeCalculation in chargeDetails.chargeCalculationTypeOptions"
|
||||
value="{{chargeCalculation.id}}" disabled="disabled">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label">{{ 'label.input.chargetimetype' | translate }}</label>
|
||||
|
||||
<div class="controls">
|
||||
<select id="chargeTimeType" ng-model="chargeTimeType"
|
||||
ng-options="chargeTime.id as chargeTime.value for chargeTime in chargeDetails.chargeTimeTypeOptions"
|
||||
value="{{chargeTime.id}}" disabled="disabled">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" ng-show="!withDrawCharge && !chargeTimeTypeAnnualOrMonth">
|
||||
<label class="control-label">{{ 'label.input.dueforcollectedon' | translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="feeOnAnnualMonthDay" sort type="text" datepicker-pop="dd MMMM yyyy"
|
||||
ng-model="date.specificduedate" is-open="opened"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" ng-show="!withDrawCharge && chargeTimeTypeAnnualOrMonth">
|
||||
<label class="control-label">{{ 'label.input.dueon' | translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="feeOnMonthDay" sort type="text" datepicker-pop="dd MMMM" ng-model="date.due"
|
||||
is-open="opened"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" ng-show="chargeTimeType.value == 'Monthly Fee' ">
|
||||
<label class="control-label">{{ 'label.repeatsevery' | translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input type="text" class="input-small" ng-model="formData.feeInterval"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="offset3">
|
||||
<a id="cancel" href="#/viewfixeddepositaccount/{{cancelRoute}}" class="btn">{{'label.button.cancel' |
|
||||
translate}}</a>
|
||||
<button id="save" type="submit" class="btn btn-primary">{{'label.button.save' | translate}}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
454
app/views/deposits/fixed/edit_account_application.html
Normal file
454
app/views/deposits/fixed/edit_account_application.html
Normal file
@ -0,0 +1,454 @@
|
||||
<div ng-controller="EditDepositAccountController">
|
||||
<div>
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/viewfixeddepositaccount/{{accountId}}">{{'label.anchor.viewfixeddepositaccount' | translate}}</a>
|
||||
<span class="divider">/</span></li>
|
||||
<li class="active">{{'label.anchor.editfixeddepositapplication' | translate}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<api-validate></api-validate>
|
||||
<form name="editfixeddepositaccountform" novalidate="" class="well" rc-submit="submit()">
|
||||
<fieldset>
|
||||
<legend>{{ 'label.heading.editfixeddepositapplication' | translate }}</legend>
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="14%" align="center"></td>
|
||||
<td width="40%">
|
||||
<label ng-show="clientName" class="control-label">{{ 'label.input.applicant' | translate }} </label>
|
||||
<input ng-show="clientName" type="text" value="{{clientName}}" readonly>
|
||||
<label ng-show="groupName" class="control-label">{{ 'label.input.applicantgroup' | translate
|
||||
}} </label>
|
||||
<input ng-show="groupName" type="text" value="{{groupName}}" readonly>
|
||||
</td>
|
||||
<td width="44%">
|
||||
<label class="control-label">{{ 'label.input.product' | translate }} </label>
|
||||
<select id="productId" ng-model="formData.productId"
|
||||
ng-options="product.id as product.name for product in products" ng-change="changeProduct()"
|
||||
value="{{product.id}}"></select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div ng-show="data">
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="14%" align="center"></td>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.fieldofficer' | translate }} </label>
|
||||
<select id="fieldOfficerId" ng-model="formData.fieldOfficerId"
|
||||
ng-options="fieldOfficer.id as fieldOfficer.displayName for fieldOfficer in fieldOfficers"
|
||||
value="{{fieldOfficer.id}}">
|
||||
<option style="display:none" value="">{{'label.selectloanofficer' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td width="44%">
|
||||
<label class="control-label">{{ 'label.input.submittedon' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="submittedOnDate" sort type="text" datepicker-pop="dd MMMM yyyy"
|
||||
ng-model="formData.submittedOnDate" is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
</table>
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="10%" align="center">
|
||||
<label class="control-label"><h4>{{ 'label.heading.terms' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="90%">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.currency' | translate }} <b>{{data.currency.name}}({{data.currency.displaySymbol}})</b></label>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.heading.decimalplaces' | translate }} <b>{{data.currency.decimalPlaces}}</b></label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!--<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.nominalannualinterestrate' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="nominalAnnualInterestRate" type="text" name="nominalannualinterestrate"
|
||||
ng-model="formData.nominalAnnualInterestRate" required ng-late-Validate/>
|
||||
<form-validate valattributeform="editfixeddepositaccountform"
|
||||
valattribute="nominalannualinterestrate"/>
|
||||
</td>-->
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.currencyinmultiplesof' | translate }} </label>
|
||||
<input type="text" value="{{data.currency.inMultiplesOf}}" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.interestcompoundingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCompoundingPeriodType" ng-model="formData.interestCompoundingPeriodType"
|
||||
ng-options="type.id as type.value for type in data.interestCompoundingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.interestpostingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestPostingPeriodType" ng-model="formData.interestPostingPeriodType"
|
||||
ng-options="type.id as type.value for type in data.interestPostingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.interestcalculatedusing' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationType" ng-model="formData.interestCalculationType"
|
||||
ng-options="type.id as type.value for type in data.interestCalculationTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.daysinyears' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationDaysInYearType" ng-model="formData.interestCalculationDaysInYearType"
|
||||
ng-options="type.id as type.value for type in data.interestCalculationDaysInYearTypeOptions"
|
||||
value="{{type.id}}"/>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="10%" align="center">
|
||||
<label class="control-label"><h4>{{ 'label.heading.settings' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="90%">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.depositamount' | translate }} </label>
|
||||
<input id="depositAmount" type="text" ng-model="formData.depositAmount">
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.depositperiod' | translate }} </label>
|
||||
<input id="depositPeriod" type="text" ng-model="formData.depositPeriod">
|
||||
<select id="depositPeriodFrequencyId" ng-model="formData.depositPeriodFrequencyId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.depositPeriodFrequencyOptions"
|
||||
value="{{type.id}}">
|
||||
<option value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- <td width="50%">
|
||||
<label class="control-label">{{ 'label.input.minimumopeningbalance' | translate }} </label>
|
||||
<input id="minRequiredOpeningBalance" type="text" ng-model="formData.minRequiredOpeningBalance">
|
||||
</td>-->
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.lockinPeriodFrequency' | translate }} </label>
|
||||
<input id="lockinPeriodFrequency" type="text" class="input-small"
|
||||
ng-model="formData.lockinPeriodFrequency">
|
||||
<select id="lockinPeriodFrequencyType" ng-model="formData.lockinPeriodFrequencyType"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.lockinPeriodFrequencyTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option value="">{{ 'label.selectone' | translate }}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.minimumdepositterm' | translate }} </label>
|
||||
<input id="minimumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.minDepositTerm" readonly>
|
||||
<select id="minDepositTermTypeId" ng-model="formData.minDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.depositTermTypeOptions"
|
||||
value="{{type.id}}" readonly>
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.inmultiplesof' | translate }} </label>
|
||||
<input id="inMultiplesOfDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.inMultiplesOfDepositTerm" readonly>
|
||||
<select id="inMultiplesOfDepositTermTypeId" ng-model="formData.inMultiplesOfDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.inMultiplesOfDepositTermTypeOptions"
|
||||
value="{{type.id}}" readonly>
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="80%">
|
||||
<label class="control-label">{{ 'label.input.maximumdepositterm' | translate }} </label>
|
||||
<input id="maximumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.maxDepositTerm" readonly>
|
||||
<select id="maxDepositTermTypeId" ng-model="formData.maxDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.depositTermTypeOptions"
|
||||
value="{{type.id}}" readonly>
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<label class="control-label">{{ 'label.prematureclosure' | translate }} </label>
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="interestFreePeriodApplicable" type="checkbox"
|
||||
ng-model="formData.interestFreePeriodApplicable" readonly>
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.interestfreeperiodapplicable' |
|
||||
translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="interestFreeFromPeriod" name="interestFreeFromPeriod" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.interestFreeFromPeriod" readonly/> -
|
||||
<input id="interestFreeToPeriod" name="interestFreeToPeriod" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.interestFreeToPeriod" readonly/>
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-small" id="interestFreePeriodFrequencyTypeId"
|
||||
ng-model="formData.interestFreePeriodFrequencyTypeId"
|
||||
ng-options="type.id as type.value for type in product.interestFreePeriodTypeOptions"
|
||||
value="{{formData.interestFreePeriodFrequencyTypeId}}" readonly>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="preClosurePenalApplicable" type="checkbox"
|
||||
ng-model="formData.preClosurePenalApplicable" readonly>
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.applypreclosurepenalinterest' |
|
||||
translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="preClosurePenalInterest" name="preClosurePenalInterest" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.preClosurePenalInterest" readonly/> -
|
||||
On
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-medium" id="preClosurePenalInterestOnTypeId"
|
||||
ng-model="formData.preClosurePenalInterestOnTypeId"
|
||||
ng-options="type.id as type.value for type in data.preClosurePenalInterestOnTypeOptions"
|
||||
value="{{formData.preClosurePenalInterestOnTypeId}}" readonly>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.interestchart' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<!--<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.name' | translate
|
||||
}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="name" ng-autofocus="true" type="text" name="name" ng-model="chart.name"
|
||||
readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.description' |
|
||||
translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="chdescription" ng-autofocus="true" type="text" name="chdescription"
|
||||
ng-model="chart.description" readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.from' |
|
||||
translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="fromDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="fromDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate" readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.to' | translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="endDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="endDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate" readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table class="table table-bordered" width="100%">
|
||||
<tr class="graybg">
|
||||
<td>{{'label.heading.interestratedetails.period.type' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.period.from.to' | translate}}</td>
|
||||
<!--<td>{{'label.heading.interestratedetails.amount.range' | translate}}</td>-->
|
||||
<td>{{'label.heading.interestratedetails.interest' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.description' | translate}}</td>
|
||||
<!--
|
||||
<td>
|
||||
<div class="controls" ng-show="chart.chartSlabs.length < 1">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row' | translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
-->
|
||||
</tr>
|
||||
|
||||
<tr ng-repeat="chartSlab in chart.chartSlabs">
|
||||
<td>
|
||||
<select class="input-small" id="periodType" ng-model="chartSlab.periodType.id"
|
||||
ng-options="type.id as type.value for type in chart.periodTypes"
|
||||
value="{{chartSlab.periodType.id}}" readonly>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input id="fromPeriod" name="fromPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.fromPeriod" readonly/> -
|
||||
<input id="toPeriod" name="toPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.toPeriod" readonly/>
|
||||
</td>
|
||||
<!--<td>
|
||||
<input id="amountRangeFrom" name="amountRangeFrom" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeFrom" readonly/> -
|
||||
<input id="amountRangeTo" name="amountRangeTo" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeTo" readonly/>
|
||||
</td>-->
|
||||
<td><input id="annualInterestRate" name="annualInterestRate" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="chartSlab.annualInterestRate" readonly/></td>
|
||||
<td><input id="description" name="description" type="text" ng-model="chartSlab.description"
|
||||
readonly/></td>
|
||||
<!--<td>
|
||||
<a ng-click="removeRow($index)"><i class="icon-minus-sign icon-white"></i>{{'label.remove.row' | translate}}</a>
|
||||
<div class="controls" ng-show="$last">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row' | translate}}</a>
|
||||
</div></td>-->
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="10%" align="center">
|
||||
<label class="control-label"><h4>{{ 'label.heading.charges' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="90%">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<select ng-model="chargeId" ng-options="charge.id as charge.name for charge in data.chargeOptions"
|
||||
value="{{charge.id}}">
|
||||
<option style="display:none" value="">{{'label.selectcharge' | translate}}</option>
|
||||
</select>
|
||||
<a ng-click="addCharge(chargeId)"><i class="icon-plus icon-white"></i></a>
|
||||
<span ng-show="errorchargeevent">
|
||||
<small class="error">
|
||||
{{'label.'+labelchargeerror | translate}}
|
||||
</small>
|
||||
</span>
|
||||
</td>
|
||||
<td width="50%">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="table" width="100%" ng-show="charges.length>0">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.name' | translate}}</th>
|
||||
<th>{{'label.heading.type' | translate}}</th>
|
||||
<th>{{'label.heading.amount' | translate}}</th>
|
||||
<th>{{'label.heading.collectedon' | translate}}</th>
|
||||
<th>{{'label.heading.date' | translate}}</th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="charge in charges">
|
||||
<td>{{charge.name}},{{charge.currency.displaySymbol}}</td>
|
||||
<td>{{charge.chargeCalculationType.value}}</td>
|
||||
<td><input id="charges[{{$index}}].amount" class="input-small" type="text" ng-model="charge.amount"
|
||||
placeholder="{{'label.placeholder.amount' | translate}}"></td>
|
||||
<td>{{charge.chargeTimeType.value}}</td>
|
||||
<td ng-show="charge.chargeTimeType.value=='Annual Fee'">
|
||||
<input id="charges[{{$index}}].feeOnMonthDay" readonly class="date-disable" type="text"
|
||||
datepicker-pop="dd MMMM" ng-model="charge.feeOnMonthDay" is-open="opened"/>
|
||||
</td>
|
||||
{{charge.feeOnMonthDay}}
|
||||
<td ng-show="charge.chargeTimeType.value=='Specified due date'">
|
||||
<input id="charges[{{$index}}].dueDate" readonly class="date-disable" type="text"
|
||||
datepicker-pop="dd MMMM yyyy" ng-model="charge.dueDate" is-open="opened"/>
|
||||
</td>
|
||||
<td ng-show="charge.chargeTimeType.value=='Monthly Fee'">
|
||||
<input readonly class="date-disable" type="text" datepicker-pop="dd MMMM"
|
||||
ng-model="charge.feeOnMonthDay" is-open="opened"/>
|
||||
</td>
|
||||
<td ng-show="charge.chargeTimeType.value=='Monthly Fee'">
|
||||
<input id="charges[{{$index}}].amount" class="input-small" type="text"
|
||||
ng-model="charge.feeInterval"/>
|
||||
</td>
|
||||
<td ng-hide="charge.chargeTimeType.value=='Monthly Fee'"></td>
|
||||
<td ng-hide="charge.chargeTimeType.value=='Annual Fee' || charge.chargeTimeType.value=='Specified due date' || charge.chargeTimeType.value=='Monthly Fee'"></td>
|
||||
<td><a ng-click="deleteCharge($index)"><i class="icon-remove icon-white"></i></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="offset4">
|
||||
<button id="cancel" ng-click="cancel()" class="btn">{{ 'label.button.cancel' | translate }}</button>
|
||||
<button id="save" type="submit" class="btn btn-primary" ng-show="data">{{ 'label.button.save' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
185
app/views/deposits/fixed/fixed_deposit_account_actions.html
Normal file
185
app/views/deposits/fixed/fixed_deposit_account_actions.html
Normal file
@ -0,0 +1,185 @@
|
||||
<div ng-controller="FixedDepositAccountActionsController">
|
||||
<div class="paddedbottom10">
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/viewfixeddepositaccount/{{accountId}}">{{'label.anchor.viewfixeddepositaccount' |
|
||||
translate}}</a> <span class="divider">/</span></li>
|
||||
<li class="active">{{action}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<form name="savingccountactionform" novalidate="" class="form-horizontal" ng-submit="submit()">
|
||||
<api-validate></api-validate>
|
||||
<fieldset>
|
||||
<legend>{{ title | translate}}</legend>
|
||||
|
||||
<div class="control-group" ng-show="showDateField">
|
||||
<label class="control-label" for="modelName">{{labelName | translate}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="{{modelName}}" type="text" sort datepicker-pop="dd MMMM yyyy"
|
||||
ng-model="formData[modelName]" is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group" ng-show="showAmount">
|
||||
<label class="control-label">{{ 'label.input.amount' | translate}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="transactionAmount" type="text" name="transactionAmount"
|
||||
ng-model="formData.transactionAmount"/>
|
||||
</div>
|
||||
</div>
|
||||
<div ng-show="isAccountClose">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="maturityAmount">{{ 'label.maturityAmount' |
|
||||
translate}}<span class="required">*</span></label>
|
||||
|
||||
<span class="padded-td">{{currency.displaySymbol}} {{maturityAmount}}</span>
|
||||
|
||||
</tr>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="onAccountClosureId">{{ 'label.input.onAccountClosure' |
|
||||
translate}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<select id="onAccountClosureId" ng-model="formData.onAccountClosureId"
|
||||
ng-options="onAccountClosure.id as onAccountClosure.value for onAccountClosure in onAccountClosureOptions"
|
||||
value="{{onAccountClosure.id}}">
|
||||
<option value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" ng-show="formData.onAccountClosureId == '200'">
|
||||
<label class="control-label" for="toSavingsAccountId">{{ 'label.input.transfer.to.savings' |
|
||||
translate}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<select id="toSavingsAccountId" ng-model="formData.toSavingsAccountId"
|
||||
ng-options="savingsAccount.id as savingsAccount.accountNo for savingsAccount in savingsAccounts"
|
||||
value="{{savingsAccounts.id}}">
|
||||
<option value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" ng-show="formData.onAccountClosureId == '200'">
|
||||
<label class="control-label" for="transferDescription">{{ 'label.input.transfer.description' |
|
||||
translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="transferDescription" type="text" ng-model="formData.transferDescription">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div ng-show="showPaymentType">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="paymentTypeId">{{ 'label.input.paymentypeid' | translate}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<select id="paymentTypeId" ng-model="formData.paymentTypeId"
|
||||
ng-options="paymentType.id as paymentType.name for paymentType in paymentTypes"
|
||||
value="{{paymentType.id}}">
|
||||
<option value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label">{{ 'label.input.showpaymentdetails' | translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<a class="btn btn-primary" ng-click="showPaymentDetails=!showPaymentDetails">
|
||||
<i ng-show="showPaymentDetails" class="icon-minus icon-white"></i>
|
||||
<i ng-show="!showPaymentDetails" class="icon-plus icon-white"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div collapse="!showPaymentDetails">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="accountNumber">{{ 'label.input.accnum' | translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="accountNumber" type="text" ng-model="formData.accountNumber">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="checkNumber">{{ 'label.input.checknumber' |
|
||||
translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="checkNumber" type="text" ng-model="formData.checkNumber">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="routingCode">{{ 'label.input.routingcode' |
|
||||
translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="routingCode" type="text" ng-model="formData.routingCode">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="receiptNumber">{{ 'label.input.receiptnumber' |
|
||||
translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="receiptNumber" type="text" ng-model="formData.receiptNumber">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="bankNumber">{{ 'label.input.banknumber' | translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="bankNumber" type="text" ng-model="formData.bankNumber">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" ng-show="showNoteField">
|
||||
<label class="control-label" for="note">{{ 'label.input.note' | translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<textarea rows="2" id="note" ng-model="formData.note"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group" ng-show="showAmountField">
|
||||
<label class="control-label">{{ labelName | translate}}<span class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input type="text" id="amount" ng-model="formData.amount">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group" ng-show="paymentDatefield">
|
||||
<label class="control-label" for="modelName">{{'label.input.paymentdate' | translate}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="{{modelName}}" type="text" sort datepicker-pop="dd MMMM yyyy"
|
||||
ng-model="formData[modelName]" is-open="opened"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group" ng-show="showDelete || waiveCharge">
|
||||
<label class="control-label">{{ 'label.areyousure' | translate }}</label>
|
||||
</div>
|
||||
<div class="offset3" ng-show="showDelete">
|
||||
<button type="reset" ng-click="submit()" class="btn">{{ 'label.button.confirm' | translate }}</button>
|
||||
<button type="submit" ng-click="cancel()" class="btn btn-primary">{{ 'label.button.cancel' | translate
|
||||
}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="offset3" ng-hide="showDelete">
|
||||
<button id="cancel" ng-click="cancel()" class="btn">{{ 'label.button.cancel' | translate }}</button>
|
||||
<button id="save" type="submit" class="btn btn-primary">{{ 'label.button.save' | translate }}</button>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
447
app/views/deposits/fixed/newapplication.html
Normal file
447
app/views/deposits/fixed/newapplication.html
Normal file
@ -0,0 +1,447 @@
|
||||
<div ng-controller="CreateFixedDepositAccountController">
|
||||
<div>
|
||||
<ul class="breadcrumb">
|
||||
<li ng-show="centerEntity"><a href="#/viewcenter/{{groupId}}">{{groupName}}</a> <span class="divider">/</span>
|
||||
</li>
|
||||
<li ng-show="groupName&&!centerEntity"><a href="#/viewgroup/{{groupId}}">{{groupName}}</a> <span
|
||||
class="divider">/</span></li>
|
||||
<li ng-show="clientName"><a href="#/viewclient/{{clientId}}">{{clientName}}</a> <span class="divider">/</span>
|
||||
</li>
|
||||
<li class="active">{{'label.anchor.fixeddepositapplication' | translate}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<api-validate></api-validate>
|
||||
<form name="newsavingccountform" novalidate="" class="well" rc-submit="submit()">
|
||||
<fieldset>
|
||||
<legend>{{ 'label.heading.fixeddepositapplication' | translate }}</legend>
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="14%" align="center"></td>
|
||||
<td width="40%">
|
||||
<label ng-show="clientName" class="control-label">{{ 'label.input.applicant' | translate }} </label>
|
||||
<input ng-show="clientName" type="text" value="{{clientName}}" readonly>
|
||||
<label ng-show="groupName" class="control-label">{{ 'label.input.applicantgroup' | translate
|
||||
}} </label>
|
||||
<input ng-show="groupName" type="text" value="{{groupName}}" readonly>
|
||||
</td>
|
||||
<td width="44%">
|
||||
<label class="control-label">{{ 'label.input.product' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="productId" ng-model="formData.productId"
|
||||
ng-options="product.id as product.name for product in products" value="{{product.id}}"
|
||||
ng-change="changeProduct()" required="required">
|
||||
<option style="display:none" value="">{{'label.selectfixeddepositproduct' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div ng-show="data">
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="14%" align="center"></td>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.fieldofficer' | translate }} </label>
|
||||
<select id="fieldOfficerId" ng-model="formData.fieldOfficerId"
|
||||
ng-options="fieldOfficer.id as fieldOfficer.displayName for fieldOfficer in fieldOfficers"
|
||||
value="{{fieldOfficer.id}}">
|
||||
<option value="">{{'label.selectfieldofficer' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td width="44%">
|
||||
<label class="control-label">{{ 'label.input.submittedon' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="submittedOnDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="date.submittedOnDate"
|
||||
is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
</table>
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="10%" align="center">
|
||||
<label class="control-label"><h4>{{ 'label.heading.terms' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="90%">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.heading.currency' | translate }} <b>{{data.currency.name}}({{data.currency.displaySymbol}})</b></label>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.heading.decimalplaces' | translate }} <b>{{data.currency.decimalPlaces}}</b></label>
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.nominalannualinterestrate' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="nominalAnnualInterestRate" type="text" name="nominalannualinterestrate"
|
||||
ng-model="formData.nominalAnnualInterestRate" required late-Validate/>
|
||||
<form-validate valattributeform="newsavingccountform" valattribute="nominalannualinterestrate"/>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.currencyinmultiplesof' | translate }} </label>
|
||||
<input type="text" value="{{data.currency.inMultiplesOf}}" readonly>
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.interestcompoundingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCompoundingPeriodType" ng-model="formData.interestCompoundingPeriodType"
|
||||
ng-options="type.id as type.value for type in data.interestCompoundingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.interestpostingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestPostingPeriodType" ng-model="formData.interestPostingPeriodType"
|
||||
ng-options="type.id as type.value for type in data.interestPostingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.interestcalculatedusing' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationType" ng-model="formData.interestCalculationType"
|
||||
ng-options="type.id as type.value for type in data.interestCalculationTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.daysinyears' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationDaysInYearType" ng-model="formData.interestCalculationDaysInYearType"
|
||||
ng-options="type.id as type.value for type in data.interestCalculationDaysInYearTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="10%" align="center">
|
||||
<label class="control-label"><h4>{{ 'label.heading.settings' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="90%">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.depositamount' | translate }} </label>
|
||||
<input id="depositAmount" type="text" ng-model="formData.depositAmount">
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.depositperiod' | translate }} </label>
|
||||
<input id="depositPeriod" type="text" ng-model="formData.depositPeriod">
|
||||
<select id="depositPeriodFrequencyId" ng-model="formData.depositPeriodFrequencyId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.depositPeriodFrequencyOptions"
|
||||
value="{{type.id}}">
|
||||
<option value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.lockinPeriodFrequency' | translate }} </label>
|
||||
<input id="lockinPeriodFrequency" type="text" class="input-small"
|
||||
ng-model="formData.lockinPeriodFrequency">
|
||||
<select id="lockinPeriodFrequencyType" ng-model="formData.lockinPeriodFrequencyType"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.lockinPeriodFrequencyTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.minimumdepositterm' | translate }} </label>
|
||||
<input id="minimumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.minDepositTerm" readonly>
|
||||
<select id="minDepositTermTypeId" ng-model="formData.minDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.depositTermTypeOptions"
|
||||
value="{{type.id}}" readonly>
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.inmultiplesof' | translate }} </label>
|
||||
<input id="inMultiplesOfDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.inMultiplesOfDepositTerm" readonly>
|
||||
<select id="inMultiplesOfDepositTermTypeId" ng-model="formData.inMultiplesOfDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.inMultiplesOfDepositTermTypeOptions"
|
||||
value="{{type.id}}" readonly>
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="80%">
|
||||
<label class="control-label">{{ 'label.input.maximumdepositterm' | translate }} </label>
|
||||
<input id="maximumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.maxDepositTerm" readonly>
|
||||
<select id="maxDepositTermTypeId" ng-model="formData.maxDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.depositTermTypeOptions"
|
||||
value="{{type.id}}" readonly>
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<label class="control-label">{{ 'label.prematureclosure' | translate }} </label>
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="interestFreePeriodApplicable" type="checkbox"
|
||||
ng-model="formData.interestFreePeriodApplicable" readonly>
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.interestfreeperiodapplicable' |
|
||||
translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="interestFreeFromPeriod" name="interestFreeFromPeriod" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.interestFreeFromPeriod" readonly/> -
|
||||
<input id="interestFreeToPeriod" name="interestFreeToPeriod" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.interestFreeToPeriod" readonly/>
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-small" id="interestFreePeriodFrequencyTypeId"
|
||||
ng-model="formData.interestFreePeriodFrequencyTypeId"
|
||||
ng-options="type.id as type.value for type in product.interestFreePeriodTypeOptions"
|
||||
value="{{formData.interestFreePeriodFrequencyTypeId}}" readonly>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="preClosurePenalApplicable" type="checkbox"
|
||||
ng-model="formData.preClosurePenalApplicable">
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.applypreclosurepenalinterest' |
|
||||
translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="preClosurePenalInterest" name="preClosurePenalInterest" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.preClosurePenalInterest" readonly/> -
|
||||
On
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-medium" id="preClosurePenalInterestOnTypeId"
|
||||
ng-model="formData.preClosurePenalInterestOnTypeId"
|
||||
ng-options="type.id as type.value for type in data.preClosurePenalInterestOnTypeOptions"
|
||||
value="{{formData.preClosurePenalInterestOnTypeId}}" readonly>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.interestchart' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<!--<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.name' | translate
|
||||
}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="name" ng-autofocus="true" type="text" name="name" ng-model="chart.name"
|
||||
readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.description' |
|
||||
translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="chdescription" ng-autofocus="true" type="text" name="chdescription"
|
||||
ng-model="chart.description" readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.from' |
|
||||
translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="fromDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="fromDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate" readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.to' | translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="endDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="endDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate" readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table class="table table-bordered" width="100%">
|
||||
<tr class="graybg">
|
||||
<td>{{'label.heading.interestratedetails.period.type' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.period.from.to' | translate}}</td>
|
||||
<!--<td>{{'label.heading.interestratedetails.amount.range' | translate}}</td>-->
|
||||
<td>{{'label.heading.interestratedetails.interest' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.description' | translate}}</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-repeat="chartSlab in chart.chartSlabs">
|
||||
<td>
|
||||
<select class="input-small" id="periodType" ng-model="chartSlab.periodType.id"
|
||||
ng-options="type.id as type.value for type in chart.periodTypes"
|
||||
value="{{chartSlab.periodType.id}}" readonly>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input id="fromPeriod" name="fromPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.fromPeriod" readonly/> -
|
||||
<input id="toPeriod" name="toPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.toPeriod" readonly/>
|
||||
</td>
|
||||
<!--<td>
|
||||
<input id="amountRangeFrom" name="amountRangeFrom" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeFrom" readonly/> -
|
||||
<input id="amountRangeTo" name="amountRangeTo" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeTo" readonly/>
|
||||
</td>-->
|
||||
<td><input id="annualInterestRate" name="annualInterestRate" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="chartSlab.annualInterestRate" readonly/></td>
|
||||
<td><input id="description" name="description" type="text" ng-model="chartSlab.description"
|
||||
readonly/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="10%" align="center">
|
||||
<label class="control-label"><h4>{{ 'label.heading.charges' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="90%">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<select ng-model="chargeId" ng-options="charge.id as charge.name for charge in chargeOptions"
|
||||
value="{{charge.id}}">
|
||||
<option value="">{{'label.selectcharge' | translate}}</option>
|
||||
</select>
|
||||
<a ng-click="addCharge(chargeId)"><i class="icon-plus icon-white"></i></a>
|
||||
<span ng-show="errorchargeevent">
|
||||
<small class="error">
|
||||
{{'label.'+labelchargeerror | translate}}
|
||||
</small>
|
||||
</span>
|
||||
</td>
|
||||
<td width="50%">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="table" width="100%" ng-show="charges.length>0">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.name' | translate}}</th>
|
||||
<th>{{'label.heading.type' | translate}}</th>
|
||||
<th>{{'label.heading.amount' | translate}}</th>
|
||||
<th>{{'label.heading.collectedon' | translate}}</th>
|
||||
<th>{{'label.heading.date' | translate}}</th>
|
||||
<th>{{'label.heading.repaymentsevery' | translate}}</th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="charge in charges">
|
||||
<td>{{charge.name}},{{charge.currency.displaySymbol}}</td>
|
||||
<td>{{charge.chargeCalculationType.value}}</td>
|
||||
<td><input id="charges[{{$index}}].amount" class="input-small" type="text" ng-model="charge.amount"
|
||||
placeholder="{{'label.placeholder.amount' | translate}}"/></td>
|
||||
<td>{{charge.chargeTimeType.value}}</td>
|
||||
<td ng-show="charge.chargeTimeType.value=='Annual Fee'">
|
||||
<input id="charges[{{$index}}].feeOnMonthDay" class="input-medium" readonly class="date-disable"
|
||||
type="text" datepicker-pop="dd MMMM" ng-model="charge.feeOnMonthDay" is-open="opened"/>
|
||||
</td>
|
||||
<td ng-show="charge.chargeTimeType.value=='Specified due date'">
|
||||
<input id="charges[{{$index}}].dueDate" class="input-medium" readonly class="date-disable"
|
||||
type="text" datepicker-pop="dd MMMM yyyy" ng-model="charge.dueDate" is-open="opened"/>
|
||||
</td>
|
||||
<td ng-show="charge.chargeTimeType.value=='Monthly Fee'">
|
||||
<input readonly class="date-disable" class="input-medium" readonly class="date-disable" type="text"
|
||||
datepicker-pop="dd MMMM" ng-model="charge.feeOnMonthDay" is-open="opened"/>
|
||||
</td>
|
||||
<td ng-show="charge.chargeTimeType.value=='Monthly Fee'">
|
||||
<input id="charges[{{$index}}].amount" class="input-small" type="text"
|
||||
ng-model="charge.feeInterval"/>
|
||||
</td>
|
||||
<td ng-hide="charge.chargeTimeType.value=='Monthly Fee'"></td>
|
||||
<td ng-hide="charge.chargeTimeType.value=='Annual Fee' || charge.chargeTimeType.value=='Specified due date' || charge.chargeTimeType.value=='Monthly Fee'"></td>
|
||||
<td><a ng-click="deleteCharge($index)"><i class="icon-remove icon-white"></i></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="offset6">
|
||||
<button id="cancel" ng-click="cancel()" class="btn">{{ 'label.button.cancel' | translate }}</button>
|
||||
<button id="save" type="submit" class="btn btn-primary" ng-show="data">{{ 'label.button.save' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
76
app/views/deposits/fixed/view_fixed_deposit_transaction.html
Normal file
76
app/views/deposits/fixed/view_fixed_deposit_transaction.html
Normal file
@ -0,0 +1,76 @@
|
||||
<div ng-controller="ViewFixedDepositTransactionController">
|
||||
<div class="paddedbottom10">
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/viewfixeddepositaccount/{{transaction.accountId}}">{{'label.anchor.viewfixeddepositaccount' |
|
||||
translate}}</a></li>
|
||||
<li class="active">{{ 'label.anchor.viewtransaction' | translate}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<h3>{{ 'label.heading.transactiondetails' | translate}}</h3>
|
||||
|
||||
<!--<div ng-hide="transaction.reversed" class="pull-right">
|
||||
<div class="btn-group">
|
||||
<a data-ng-hide="flag" has-permission='ADJUSTTRANSACTION_SAVINGSACCOUNT'
|
||||
href="#/fixeddepositaccount/{{transaction.accountId}}/modifytransaction?transactionId={{transaction.id}}"
|
||||
class="btn btn-primary"><i class="icon-pencil icon-white"></i>{{ 'label.button.edit' | translate}}</a>
|
||||
<a ng-click="undoTransaction(transaction.accountId, transaction.id)" class="btn btn-danger" has-permission='UNDOTRANSACTION_SAVINGSACCOUNT'><i
|
||||
class="icon-trash icon-white"></i>{{ 'label.button.undo' | translate}}</a>
|
||||
</div>
|
||||
</div>-->
|
||||
|
||||
<div class="row">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="20%">{{ 'label.heading.transactionid' | translate}}</td>
|
||||
<td width="80%">{{transaction.id}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'label.heading.type' | translate}}</td>
|
||||
<td>{{transaction.transactionType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'label.heading.transactiondate' | translate}}</td>
|
||||
<td>{{transaction.date | DateFormat}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'label.heading.currency' | translate}}</td>
|
||||
<td>{{transaction.currency.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'label.heading.amount' | translate}}</td>
|
||||
<td>{{transaction.amount}}</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
</table>
|
||||
<table width="100%" ng-show="transaction.paymentDetailData">
|
||||
<tr>
|
||||
<td width="20%"><strong>{{ 'label.heading.paymentdetails' | translate}}</strong></td>
|
||||
<td width="80%"></td>
|
||||
</tr>
|
||||
<tr ng-show="transaction.paymentDetailData.paymentType">
|
||||
<td>{{ 'label.heading.type' | translate}}</td>
|
||||
<td>{{transaction.paymentDetailData.paymentType.name}}</td>
|
||||
</tr>
|
||||
<tr ng-show="transaction.paymentDetailData.accountNumber">
|
||||
<td>{{ 'label.heading.accnum' | translate}}</td>
|
||||
<td>{{transaction.paymentDetailData.accountNumber}}</td>
|
||||
</tr>
|
||||
<tr ng-show="transaction.paymentDetailData.checkNumber">
|
||||
<td>{{ 'label.heading.checknumber' | translate}}</td>
|
||||
<td>{{transaction.paymentDetailData.checkNumber}}</td>
|
||||
</tr>
|
||||
<tr ng-show="transaction.paymentDetailData.routingCode">
|
||||
<td>{{ 'label.heading.routingcode' | translate}}</td>
|
||||
<td>{{transaction.paymentDetailData.routingCode}}</td>
|
||||
</tr>
|
||||
<tr ng-show="transaction.paymentDetailData.receiptNumber">
|
||||
<td>{{ 'label.heading.receiptnumber' | translate}}</td>
|
||||
<td>{{transaction.paymentDetailData.receiptNumber}}</td>
|
||||
</tr>
|
||||
<tr ng-show="transaction.paymentDetailData.bankNumber">
|
||||
<td>{{ 'label.heading.banknumber' | translate}}</td>
|
||||
<td>{{transaction.paymentDetailData.bankNumber}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
327
app/views/deposits/fixed/viewaccountdetails.html
Normal file
327
app/views/deposits/fixed/viewaccountdetails.html
Normal file
@ -0,0 +1,327 @@
|
||||
<div ng-controller="ViewFixedDepositAccountDetailsController">
|
||||
<div>
|
||||
<ul class="breadcrumb">
|
||||
<li ng-show="savingaccountdetails.groupName"><a href="#/viewgroup/{{savingaccountdetails.groupId}}">{{savingaccountdetails.groupName}}</a>
|
||||
<span class="divider">/</span></li>
|
||||
<li ng-show="savingaccountdetails.clientName"><a href="#/viewclient/{{savingaccountdetails.clientId}}">{{savingaccountdetails.clientName}}</a>
|
||||
<span class="divider">/</span></li>
|
||||
<li class="active">{{savingaccountdetails.savingsProductName}}({{savingaccountdetails.accountNo}})</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<div class="span gray-head" style="margin-left:0%;">
|
||||
<span style="margin-left: 10px;font-size:20px">
|
||||
<strong><i class="icon-stop {{savingaccountdetails.status.code | StatusLookup}}"></i> {{savingaccountdetails.savingsProductName}}(#{{savingaccountdetails.accountNo}})</strong>
|
||||
</span>
|
||||
</div>
|
||||
<div class="row-fluid primarydiv">
|
||||
<div class="pull-right">
|
||||
<div class="btn-group">
|
||||
<span ng-repeat="button in buttons.singlebuttons">
|
||||
<a ng-show="button.name"
|
||||
ng-click="clickEvent(button.name.replace('button.',''), savingaccountdetails.id)"
|
||||
class="btn btn-primary"><i class="{{button.icon}} icon-white"></i>{{'label.'+button.name |
|
||||
translate}}</a>
|
||||
</span>
|
||||
<span ng-show="buttons.options" class="btn-group">
|
||||
<a class="btn btn-primary dropdown-toggle">
|
||||
{{'label.button.more' | translate}}
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown dropdown-menu">
|
||||
<li class="{{button.icon}}" ng-repeat="button in buttons.options">
|
||||
<a ng-click="clickEvent(button.name.replace('button.',''), savingaccountdetails.id)">{{'label.'+button.name
|
||||
| translate}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<hr/>
|
||||
<div class="row-fluid span" style="margin-left:-1px;margin-top: -20px">
|
||||
<div class="span6">
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<td>{{'label.heading.activatedon' | translate}}</td>
|
||||
<td>{{savingaccountdetails.timeline.activatedOnDate | DateFormat}}<span
|
||||
data-ng-hide="savingaccountdetails.timeline.activatedOnDate">{{ 'label.notactivated' | translate }}</span>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.currency' | translate}}</td>
|
||||
<td>{{savingaccountdetails.currency.name}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="span6">
|
||||
<table class="table table-bordered table-striped">
|
||||
<tr>
|
||||
<td>{{'label.heading.fieldofficer' | translate}}</td>
|
||||
<td>{{savingaccountdetails.fieldOfficerName}}<span data-ng-hide="savingaccountdetails.fieldOfficerName">{{'label.unassigned' | translate}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.balance' | translate}}</td>
|
||||
<td>{{savingaccountdetails.summary.accountBalance}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row paddedleft">
|
||||
<hr class="marginbottom"/>
|
||||
<tabset>
|
||||
<tab heading="{{'label.heading.summary' | translate}}">
|
||||
<div class="span8" style="margin-left: 10px;margin-top: 30px;">
|
||||
<table class="table table-bordered view-table">
|
||||
<tr ng-show="savingaccountdetails.depositAmount">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.depositAmount' | translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.currency.displaySymbol}} {{savingaccountdetails.depositAmount}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="savingaccountdetails.maturityAmount">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.maturityAmount' | translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.currency.displaySymbol}} {{savingaccountdetails.maturityAmount}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="savingaccountdetails.depositPeriod">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.depositPeriod' | translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.depositPeriod}} {{savingaccountdetails.depositPeriodFrequency.value}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="savingaccountdetails.maturityDate">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{ 'label.maturityDate' | translate }}</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.maturityDate | DateFormat}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="savingaccountdetails.summary.totalWithdrawals">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.totalwithdarawals' |
|
||||
translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.currency.displaySymbol}} {{savingaccountdetails.summary.totalWithdrawals}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="savingaccountdetails.summary.totalInterestEarned">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.totalinterestearned' |
|
||||
translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.currency.displaySymbol}} {{savingaccountdetails.summary.totalInterestEarned}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="savingaccountdetails.summary.totalInterestPosted">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.totalinterestposted' |
|
||||
translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.currency.displaySymbol}} {{savingaccountdetails.summary.totalInterestPosted}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr ng-show="savingaccountdetails.nominalAnnualInterestRate">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.interestrate' | translate}}</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.nominalAnnualInterestRate}}%</span></td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.interestcompoundingperiod' |
|
||||
translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.interestCompoundingPeriodType.value}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.interestpostingperiod' |
|
||||
translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.interestPostingPeriodType.value}}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.interestcalculatedusing' |
|
||||
translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.interestCalculationType.value}}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.noofdaysinyear' | translate}}
|
||||
</td>
|
||||
<td><span
|
||||
class="padded-td">{{savingaccountdetails.interestCalculationDaysInYearType.value}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">
|
||||
{{'label.minimumdepositterm.and.inmultiplesof' | translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.minDepositTerm}} - {{savingaccountdetails.depositTermType.value}}.
|
||||
And there after, in multiples of {{savingaccountdetails.inMultiplesOfDepositTerm}} - {{savingaccountdetails.inMultiplesOfDepositTermType.value}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.maximumdepositterm' |
|
||||
translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.maxDepositTerm}} - {{savingaccountdetails.depositTermType.value}}</span>
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td ng-show="savingaccountdetails.interestFreePeriodApplicable" style="font-weight: normal"
|
||||
class="table-bold-acc">{{'label.interestfreetoperiod' | translate}}
|
||||
</td>
|
||||
<td ng-show="savingaccountdetails.interestFreePeriodApplicable"><span class="padded-td">{{savingaccountdetails.interestFreeFromPeriod}} to {{savingaccountdetails.interestFreeToPeriod}} - {{savingaccountdetails.interestFreePeriodFrequencyType.value}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="savingaccountdetails.preClosurePenalApplicable">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.preclosurepenal' | translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.preClosurePenalInterest}} on {{savingaccountdetails.preClosurePenalInterestOnType.value}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</tab>
|
||||
<tab heading="{{'label.heading.transactions' | translate}}" ng-show="savingaccountdetails.transactions">
|
||||
<table class="table table-bordered">
|
||||
<colgroup span="4"></colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{'label.heading.id' | translate}}</th>
|
||||
<th>{{'label.heading.transactiondate' | translate}}</th>
|
||||
<th>{{'label.heading.transactiontype' | translate}}</th>
|
||||
<th>{{'label.heading.debit' | translate}}</th>
|
||||
<th>{{'label.heading.credit' | translate}}</th>
|
||||
<th>{{'label.heading.balance' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-class="{strikeoff : transaction.reversed==true}"
|
||||
ng-repeat="transaction in savingaccountdetails.transactions">
|
||||
<td style="width: 50px;">
|
||||
<a ng-hide="transaction.transfer"
|
||||
href="#/viewfixeddepositaccounttrxn/{{transaction.accountId}}/{{transaction.id}}">{{transaction.id}}</a>
|
||||
<a ng-show="transaction.transfer" href="#/viewaccounttransfers/{{transaction.transfer.id}}">{{transaction.id}}</a>
|
||||
</td>
|
||||
<td style="width: 130px;">{{transaction.date | DateFormat}}</td>
|
||||
<td style="width: 130px;">{{transaction.transactionType.value}}</td>
|
||||
<td>
|
||||
<div ng-show="isDebit(transaction.transactionType)">
|
||||
{{transaction.amount}}
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div ng-show="!isDebit(transaction.transactionType)">
|
||||
{{transaction.amount}}
|
||||
</div>
|
||||
</td>
|
||||
<td>{{transaction.runningBalance}}</td>
|
||||
</tbody>
|
||||
</table>
|
||||
</tab>
|
||||
<tab heading="{{savingdatatable.registeredTableName}}" ng-repeat="savingdatatable in savingdatatables"
|
||||
select="dataTableChange(savingdatatable)">
|
||||
<span data-ng-show="choice">
|
||||
<a ng-show="datatabledetails.isData" class="btn btn-danger pull-right"
|
||||
ng-click="deleteAll(savingdatatable.registeredTableName, savingaccountdetails.id)"><i
|
||||
class="icon-trash icon-white"></i>{{'label.button.deleteall' | translate}}</a>
|
||||
<span ng-show="!datatabledetails.isData || datatabledetails.isMultirow" class="pull-right ">
|
||||
<a href="#/makedatatableentry/{{savingdatatable.registeredTableName}}/{{savingaccountdetails.id}}"
|
||||
class="btn btn-primary"><i class="icon-plus icon-white"></i>{{'label.button.add' | translate}}</a>
|
||||
</span></br>
|
||||
</span>
|
||||
|
||||
<div data-ng-show="datatabledetails.isData">
|
||||
<table ng-show="datatabledetails.isMultirow" class="table">
|
||||
<thead>
|
||||
<th ng-repeat="column in datatabledetails.columnHeaders">{{column.columnName}}</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="data in datatabledetails.data">
|
||||
<td ng-repeat="row in data.row">
|
||||
<span ng-show="$index == 0">
|
||||
<a href="#/viewdatatableentry/{{savingdatatable.registeredTableName}}/{{savingaccountdetails.id}}/{{data.row[0]}}"
|
||||
ng-show="datatabledetails.isMultirow">{{row}}</a>
|
||||
<a href="#/viewdatatableentry/{{savingdatatable.registeredTableName}}/{{savingaccountdetails.id}}/"
|
||||
ng-hide="datatabledetails.isMultirow">{{row}}</a>
|
||||
</span>
|
||||
<span ng-hide="$index == 0">{{row}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-bordered" data-ng-show="!datatabledetails.isMultirow" style="width: 450px">
|
||||
<tr ng-repeat="value in singleRow">
|
||||
<td class="graybg" style="font-weight: bold">{{value.key}}</td>
|
||||
<td><span class="padded-td">{{value.value}}</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</tab>
|
||||
<tab ng-show="chargeTableShow" heading="{{'label.heading.charges' | translate}}">
|
||||
<table class="table" width="100%">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.name' | translate}}</th>
|
||||
<th>{{'label.heading.feeorpenalty' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.paymentdueat' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.dueasof' | translate}}</th>
|
||||
<th>{{'label.heading.repeatson' | translate}}</th>
|
||||
<th>{{'label.heading.calculationtype' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.due' | translate}}</th>
|
||||
<th>{{'label.heading.paid' | translate}}</th>
|
||||
<th>{{'label.heading.waived' | translate}}</th>
|
||||
<th>{{'label.heading.outstanding' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr ng-repeat="charge in charges">
|
||||
<td>
|
||||
<a href="#">{{charge.name}}</a>
|
||||
</td>
|
||||
<td ng-show="'charge.penalty'==true">{{"penalty"}}</td>
|
||||
<td ng-hide="'charge.penalty'==true">{{"fee"}}</td>
|
||||
<td></td>
|
||||
<td>{{charge.chargeTimeType.value}}</td>
|
||||
<td></td>
|
||||
<td>{{charge.dueDate | DateFormat}}</td>
|
||||
<td>{{charge.feeOnMonthDay | DayMonthFormat}}</td>
|
||||
<td>{{charge.chargeCalculationType.value}}</td>
|
||||
<td></td>
|
||||
<td>{{charge.currency.displaySymbol}}{{charge.amount}}</td>
|
||||
<td>{{charge.currency.displaySymbol}}{{charge.amountPaid}}</td>
|
||||
<td>{{charge.currency.displaySymbol}}{{charge.amountWaived}}</td>
|
||||
<td>{{charge.currency.displaySymbol}}{{charge.amountOutstanding}}</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<span ng-show="chargeAction">
|
||||
<a title="{{'label.edit' | translate}}"
|
||||
href="#/fixeddepositaccountcharge/{{savingaccountdetails.id}}/editsavingcharge/{{charge.id}}"><i
|
||||
class="icon-pencil icon-white"></i></a>
|
||||
<a title="{{'label.delete' | translate}}"
|
||||
href="#/fixeddepositaccountcharge/{{savingaccountdetails.id}}/deletesavingcharge/{{charge.id}}"><i
|
||||
class="icon-remove icon-white"></i></a>
|
||||
</span>
|
||||
<span ng-hide="chargeAction">
|
||||
<span ng-hide="charge.amountOutstanding == 0"
|
||||
ng-show="charge.chargeTimeType.value == 'Monthly Fee' || charge.chargeTimeType.value == 'Annual Fee'|| charge.chargeTimeType.value == 'Specified due date'">
|
||||
<a title="{{'label.button.paycharge' | translate}}"
|
||||
href="#/fixeddepositaccountcharge/{{savingaccountdetails.id}}/paycharge/{{charge.id}}"><i
|
||||
class="icon-check icon-white"></i></a>
|
||||
<a title="{{'label.button.waivecharge' | translate}}"
|
||||
href="#/fixeddepositaccountcharge/{{savingaccountdetails.id}}/waive/{{charge.id}}"><i
|
||||
class="icon-flag icon-white"></i></a>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</tab>
|
||||
</tabset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -0,0 +1,90 @@
|
||||
<div class="paddedbottom10">
|
||||
<ul class="breadcrumb">
|
||||
<li class="active">{{ 'label.anchor.add.recurring.deposit.charges' | translate }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<form name="savingccountchargeform" novalidate="" class="form-horizontal" ng-controller="AddNewRecurringDepositChargeController"
|
||||
rc-submit="submit()">
|
||||
<api-validate></api-validate>
|
||||
<fieldset>
|
||||
<div class="control-group">
|
||||
<label class="control-label">{{ 'label.input.charges' | translate }}<span class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<select ng-model="formData.chargeId" id="chargeId" name="charge"
|
||||
ng-options="charge.id as (charge.name+ +'('+charge.currency.name+')') for charge in chargeOptions"
|
||||
value="{{formData.chargeId}}"
|
||||
ng-change="chargeSelected(formData.chargeId)" required>
|
||||
<option style="display:none" value="">{{ 'label.selectcharge' | translate }}</option>
|
||||
</select>
|
||||
<form-validate valattributeform="savingccountchargeform" valattribute="charge"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-show="chargeDetails">
|
||||
<div class="control-group">
|
||||
<label class="control-label">{{ 'label.input.amount' | translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="amount" type="text" name="amount" ng-model="formData.amount" required ng-late-Validate/>
|
||||
<form-validate valattributeform="savingccountchargeform" valattribute="amount"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label">{{ 'label.input.chargecalculation' | translate }}</label>
|
||||
|
||||
<div class="controls">
|
||||
<select id="chargeCalculationType" ng-model="chargeCalculationType"
|
||||
ng-options="chargeCalculation.id as chargeCalculation.value for chargeCalculation in chargeDetails.chargeCalculationTypeOptions"
|
||||
value="{{chargeCalculation.id}}" disabled="disabled">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label">{{ 'label.input.chargetimetype' | translate }}</label>
|
||||
|
||||
<div class="controls">
|
||||
<select id="chargeTimeType" ng-model="chargeTimeType"
|
||||
ng-options="chargeTime.id as chargeTime.value for chargeTime in chargeDetails.chargeTimeTypeOptions"
|
||||
value="{{chargeTime.id}}" disabled="disabled">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" ng-show="!withDrawCharge && !chargeTimeTypeAnnualOrMonth">
|
||||
<label class="control-label">{{ 'label.input.dueforcollectedon' | translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="feeOnAnnualMonthDay" sort type="text" datepicker-pop="dd MMMM yyyy"
|
||||
ng-model="date.specificduedate" is-open="opened"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" ng-show="!withDrawCharge && chargeTimeTypeAnnualOrMonth">
|
||||
<label class="control-label">{{ 'label.input.dueon' | translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="feeOnMonthDay" sort type="text" datepicker-pop="dd MMMM" ng-model="date.due"
|
||||
is-open="opened"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" ng-show="chargeTimeType.value == 'Monthly Fee' ">
|
||||
<label class="control-label">{{ 'label.repeatsevery' | translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input type="text" class="input-small" ng-model="formData.feeInterval"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="offset3">
|
||||
<a id="cancel" href="#/viewrecurringdepositaccount/{{cancelRoute}}" class="btn">{{'label.button.cancel' |
|
||||
translate}}</a>
|
||||
<button id="save" type="submit" class="btn btn-primary">{{'label.button.save' | translate}}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
460
app/views/deposits/recurring/edit_account_application.html
Normal file
460
app/views/deposits/recurring/edit_account_application.html
Normal file
@ -0,0 +1,460 @@
|
||||
<div ng-controller="EditRecurringDepositAccountController">
|
||||
<div>
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/viewrecurringdepositaccount/{{accountId}}">{{'label.anchor.viewrecurringdepositaccount' |
|
||||
translate}}</a> <span class="divider">/</span></li>
|
||||
<li class="active">{{'label.anchor.editrecurringdepositapplication' | translate}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<api-validate></api-validate>
|
||||
<form name="editrecurringdepositaccountform" novalidate="" class="well" rc-submit="submit()">
|
||||
<fieldset>
|
||||
<legend>{{ 'label.heading.editrecurringdepositapplication' | translate }}</legend>
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="14%" align="center"></td>
|
||||
<td width="40%">
|
||||
<label ng-show="clientName" class="control-label">{{ 'label.input.applicant' | translate }} </label>
|
||||
<input ng-show="clientName" type="text" value="{{clientName}}" readonly>
|
||||
<label ng-show="groupName" class="control-label">{{ 'label.input.applicantgroup' | translate
|
||||
}} </label>
|
||||
<input ng-show="groupName" type="text" value="{{groupName}}" readonly>
|
||||
</td>
|
||||
<td width="44%">
|
||||
<label class="control-label">{{ 'label.input.product' | translate }} </label>
|
||||
<select id="productId" ng-model="formData.productId"
|
||||
ng-options="product.id as product.name for product in products" ng-change="changeProduct()"
|
||||
value="{{product.id}}"></select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div ng-show="data">
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="14%" align="center"></td>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.fieldofficer' | translate }} </label>
|
||||
<select id="fieldOfficerId" ng-model="formData.fieldOfficerId"
|
||||
ng-options="fieldOfficer.id as fieldOfficer.displayName for fieldOfficer in fieldOfficers"
|
||||
value="{{fieldOfficer.id}}">
|
||||
<option style="display:none" value="">{{'label.selectloanofficer' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td width="44%">
|
||||
<label class="control-label">{{ 'label.input.submittedon' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="submittedOnDate" sort type="text" datepicker-pop="dd MMMM yyyy"
|
||||
ng-model="formData.submittedOnDate" is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
</table>
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="10%" align="center">
|
||||
<label class="control-label"><h4>{{ 'label.heading.terms' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="90%">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.currency' | translate }} <b>{{data.currency.name}}({{data.currency.displaySymbol}})</b></label>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.heading.decimalplaces' | translate }} <b>{{data.currency.decimalPlaces}}</b></label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!--<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.nominalannualinterestrate' | translate }} <span class="required">*</span></label>
|
||||
<input id="nominalAnnualInterestRate" type="text" name="nominalannualinterestrate" ng-model="formData.nominalAnnualInterestRate" required ng-late-Validate/>
|
||||
<form-validate valattributeform="editrecurringdepositaccountform" valattribute="nominalannualinterestrate"/>
|
||||
</td>-->
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.currencyinmultiplesof' | translate }} </label>
|
||||
<input type="text" value="{{data.currency.inMultiplesOf}}" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.interestcompoundingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCompoundingPeriodType" ng-model="formData.interestCompoundingPeriodType"
|
||||
ng-options="type.id as type.value for type in data.interestCompoundingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.interestpostingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestPostingPeriodType" ng-model="formData.interestPostingPeriodType"
|
||||
ng-options="type.id as type.value for type in data.interestPostingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.interestcalculatedusing' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationType" ng-model="formData.interestCalculationType"
|
||||
ng-options="type.id as type.value for type in data.interestCalculationTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.daysinyears' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationDaysInYearType" ng-model="formData.interestCalculationDaysInYearType"
|
||||
ng-options="type.id as type.value for type in data.interestCalculationDaysInYearTypeOptions"
|
||||
value="{{type.id}}"/>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="10%" align="center">
|
||||
<label class="control-label"><h4>{{ 'label.heading.settings' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="90%">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.recurring.deposit.amount' | translate }} </label>
|
||||
<input id="recurringDepositAmount" type="text" ng-model="formData.recurringDepositAmount">
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.depositperiod' | translate }} </label>
|
||||
<input id="depositPeriod" type="text" ng-model="formData.depositPeriod">
|
||||
<select id="depositPeriodFrequencyId" ng-model="formData.depositPeriodFrequencyId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.depositPeriodFrequencyOptions"
|
||||
value="{{type.id}}">
|
||||
<option value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.select.recurringdeposittype' | translate }} </label>
|
||||
<select id="recurringDepositTypeId" ng-model="formData.recurringDepositTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.recurringDepositTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td colspan="2">
|
||||
<label class="control-label">{{ 'label.input.recurringdepositfrequency' | translate }} </label>
|
||||
<input id="recurringDepositFrequency" type="text" ng-model="formData.recurringDepositFrequency">
|
||||
|
||||
<select id="recurringDepositFrequencyTypeId" ng-model="formData.recurringDepositFrequencyTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.recurringDepositFrequencyTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<label class="control-label">{{ 'label.input.lockinPeriodFrequency' | translate }} </label>
|
||||
<input id="lockinPeriodFrequency" type="text" class="input-small"
|
||||
ng-model="formData.lockinPeriodFrequency">
|
||||
<select id="lockinPeriodFrequencyType" ng-model="formData.lockinPeriodFrequencyType"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.lockinPeriodFrequencyTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option value="">{{ 'label.selectone' | translate }}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.minimumdepositterm' | translate }} </label>
|
||||
<input id="minimumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.minDepositTerm" readonly>
|
||||
<select id="minDepositTermTypeId" ng-model="formData.minDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.depositTermTypeOptions"
|
||||
value="{{type.id}}" readonly>
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.inmultiplesof' | translate }} </label>
|
||||
<input id="inMultiplesOfDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.inMultiplesOfDepositTerm" readonly>
|
||||
<select id="inMultiplesOfDepositTermTypeId" ng-model="formData.inMultiplesOfDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.inMultiplesOfDepositTermTypeOptions"
|
||||
value="{{type.id}}" readonly>
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="80%">
|
||||
<label class="control-label">{{ 'label.input.maximumdepositterm' | translate }} </label>
|
||||
<input id="maximumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.maxDepositTerm" readonly>
|
||||
<select id="maxDepositTermTypeId" ng-model="formData.maxDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.depositTermTypeOptions"
|
||||
value="{{type.id}}" readonly>
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<label class="control-label">{{ 'label.prematureclosure' | translate }} </label>
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="interestFreePeriodApplicable" type="checkbox" ng-model="formData.interestFreePeriodApplicable" readonly>
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.interestfreeperiodapplicable' | translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="interestFreeFromPeriod" name="interestFreeFromPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="formData.interestFreeFromPeriod" readonly/> -
|
||||
<input id="interestFreeToPeriod" name="interestFreeToPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="formData.interestFreeToPeriod" readonly/>
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-small" id="interestFreePeriodFrequencyTypeId" ng-model="formData.interestFreePeriodFrequencyTypeId"
|
||||
ng-options="type.id as type.value for type in product.interestFreePeriodTypeOptions"
|
||||
value="{{formData.interestFreePeriodFrequencyTypeId}}" readonly>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="preClosurePenalApplicable" type="checkbox"
|
||||
ng-model="formData.preClosurePenalApplicable" readonly>
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.applypreclosurepenalinterest' |
|
||||
translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="preClosurePenalInterest" name="preClosurePenalInterest" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.preClosurePenalInterest" readonly/> -
|
||||
On
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-medium" id="preClosurePenalInterestOnTypeId"
|
||||
ng-model="formData.preClosurePenalInterestOnTypeId"
|
||||
ng-options="type.id as type.value for type in data.preClosurePenalInterestOnTypeOptions"
|
||||
value="{{formData.preClosurePenalInterestOnTypeId}}" readonly>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.interestchart' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<!--<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.name' | translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="name" ng-autofocus="true" type="text" name="name" ng-model="chart.name" readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.description' | translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="chdescription" ng-autofocus="true" type="text" name="chdescription" ng-model="chart.description" readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.from' |
|
||||
translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="fromDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="fromDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate" readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.to' | translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="endDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="endDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate" readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table class="table table-bordered" width="100%">
|
||||
<tr class="graybg">
|
||||
<td>{{'label.heading.interestratedetails.period.type' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.period.from.to' | translate}}</td>
|
||||
<!--<td>{{'label.heading.interestratedetails.amount.range' | translate}}</td>-->
|
||||
<td>{{'label.heading.interestratedetails.interest' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.description' | translate}}</td>
|
||||
<!--
|
||||
<td>
|
||||
<div class="controls" ng-show="chart.chartSlabs.length < 1">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row' | translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
-->
|
||||
</tr>
|
||||
|
||||
<tr ng-repeat="chartSlab in chart.chartSlabs">
|
||||
<td>
|
||||
<select class="input-small" id="periodType" ng-model="chartSlab.periodType.id"
|
||||
ng-options="type.id as type.value for type in chart.periodTypes"
|
||||
value="{{chartSlab.periodType.id}}" readonly>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input id="fromPeriod" name="fromPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.fromPeriod" readonly/> -
|
||||
<input id="toPeriod" name="toPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.toPeriod" readonly/>
|
||||
</td>
|
||||
<!--<td>
|
||||
<input id="amountRangeFrom" name="amountRangeFrom" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeFrom" readonly/> -
|
||||
<input id="amountRangeTo" name="amountRangeTo" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeTo" readonly/>
|
||||
</td>-->
|
||||
<td><input id="annualInterestRate" name="annualInterestRate" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="chartSlab.annualInterestRate" readonly/></td>
|
||||
<td><input id="description" name="description" type="text" ng-model="chartSlab.description"
|
||||
readonly/></td>
|
||||
<!--<td>
|
||||
<a ng-click="removeRow($index)"><i class="icon-minus-sign icon-white"></i>{{'label.remove.row' | translate}}</a>
|
||||
<div class="controls" ng-show="$last">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row' | translate}}</a>
|
||||
</div></td>-->
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="10%" align="center">
|
||||
<label class="control-label"><h4>{{ 'label.heading.charges' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="90%">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<select ng-model="chargeId" ng-options="charge.id as charge.name for charge in data.chargeOptions"
|
||||
value="{{charge.id}}">
|
||||
<option style="display:none" value="">{{'label.selectcharge' | translate}}</option>
|
||||
</select>
|
||||
<a ng-click="addCharge(chargeId)"><i class="icon-plus icon-white"></i></a>
|
||||
<span ng-show="errorchargeevent">
|
||||
<small class="error">
|
||||
{{'label.'+labelchargeerror | translate}}
|
||||
</small>
|
||||
</span>
|
||||
</td>
|
||||
<td width="50%">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="table" width="100%" ng-show="charges.length>0">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.name' | translate}}</th>
|
||||
<th>{{'label.heading.type' | translate}}</th>
|
||||
<th>{{'label.heading.amount' | translate}}</th>
|
||||
<th>{{'label.heading.collectedon' | translate}}</th>
|
||||
<th>{{'label.heading.date' | translate}}</th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="charge in charges">
|
||||
<td>{{charge.name}},{{charge.currency.displaySymbol}}</td>
|
||||
<td>{{charge.chargeCalculationType.value}}</td>
|
||||
<td><input id="charges[{{$index}}].amount" class="input-small" type="text" ng-model="charge.amount"
|
||||
placeholder="{{'label.placeholder.amount' | translate}}"></td>
|
||||
<td>{{charge.chargeTimeType.value}}</td>
|
||||
<td ng-show="charge.chargeTimeType.value=='Annual Fee'">
|
||||
<input id="charges[{{$index}}].feeOnMonthDay" readonly class="date-disable" type="text"
|
||||
datepicker-pop="dd MMMM" ng-model="charge.feeOnMonthDay" is-open="opened"/>
|
||||
</td>
|
||||
{{charge.feeOnMonthDay}}
|
||||
<td ng-show="charge.chargeTimeType.value=='Specified due date'">
|
||||
<input id="charges[{{$index}}].dueDate" readonly class="date-disable" type="text"
|
||||
datepicker-pop="dd MMMM yyyy" ng-model="charge.dueDate" is-open="opened"/>
|
||||
</td>
|
||||
<td ng-show="charge.chargeTimeType.value=='Monthly Fee'">
|
||||
<input readonly class="date-disable" type="text" datepicker-pop="dd MMMM"
|
||||
ng-model="charge.feeOnMonthDay" is-open="opened"/>
|
||||
</td>
|
||||
<td ng-show="charge.chargeTimeType.value=='Monthly Fee'">
|
||||
<input id="charges[{{$index}}].amount" class="input-small" type="text"
|
||||
ng-model="charge.feeInterval"/>
|
||||
</td>
|
||||
<td ng-hide="charge.chargeTimeType.value=='Monthly Fee'"></td>
|
||||
<td ng-hide="charge.chargeTimeType.value=='Annual Fee' || charge.chargeTimeType.value=='Specified due date' || charge.chargeTimeType.value=='Monthly Fee'"></td>
|
||||
<td><a ng-click="deleteCharge($index)"><i class="icon-remove icon-white"></i></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="offset4">
|
||||
<button id="cancel" ng-click="cancel()" class="btn">{{ 'label.button.cancel' | translate }}</button>
|
||||
<button id="save" type="submit" class="btn btn-primary" ng-show="data">{{ 'label.button.save' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
467
app/views/deposits/recurring/newapplication.html
Normal file
467
app/views/deposits/recurring/newapplication.html
Normal file
@ -0,0 +1,467 @@
|
||||
<div ng-controller="CreateRecurringDepositAccountController">
|
||||
<div>
|
||||
<ul class="breadcrumb">
|
||||
<li ng-show="centerEntity"><a href="#/viewcenter/{{groupId}}">{{groupName}}</a> <span class="divider">/</span>
|
||||
</li>
|
||||
<li ng-show="groupName&&!centerEntity"><a href="#/viewgroup/{{groupId}}">{{groupName}}</a> <span
|
||||
class="divider">/</span></li>
|
||||
<li ng-show="clientName"><a href="#/viewclient/{{clientId}}">{{clientName}}</a> <span class="divider">/</span>
|
||||
</li>
|
||||
<li class="active">{{'label.anchor.recurringdepositapplication' | translate}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<api-validate></api-validate>
|
||||
<form name="newsavingccountform" novalidate="" class="well" rc-submit="submit()">
|
||||
<fieldset>
|
||||
<legend>{{ 'label.heading.recurringdepositapplication' | translate }}</legend>
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="14%" align="center"></td>
|
||||
<td width="40%">
|
||||
<label ng-show="clientName" class="control-label">{{ 'label.input.applicant' | translate }} </label>
|
||||
<input ng-show="clientName" type="text" value="{{clientName}}" readonly>
|
||||
<label ng-show="groupName" class="control-label">{{ 'label.input.applicantgroup' | translate
|
||||
}} </label>
|
||||
<input ng-show="groupName" type="text" value="{{groupName}}" readonly>
|
||||
</td>
|
||||
<td width="44%">
|
||||
<label class="control-label">{{ 'label.input.product' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="productId" ng-model="formData.productId"
|
||||
ng-options="product.id as product.name for product in products" value="{{product.id}}"
|
||||
ng-change="changeProduct()" required="required">
|
||||
<option style="display:none" value="">{{'label.selectrecurringdepositproduct' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div ng-show="data">
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="14%" align="center"></td>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.fieldofficer' | translate }} </label>
|
||||
<select id="fieldOfficerId" ng-model="formData.fieldOfficerId"
|
||||
ng-options="fieldOfficer.id as fieldOfficer.displayName for fieldOfficer in fieldOfficers"
|
||||
value="{{fieldOfficer.id}}">
|
||||
<option value="">{{'label.selectfieldofficer' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td width="44%">
|
||||
<label class="control-label">{{ 'label.input.submittedon' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="submittedOnDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="date.submittedOnDate"
|
||||
is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
</table>
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="10%" align="center">
|
||||
<label class="control-label"><h4>{{ 'label.heading.terms' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="90%">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.heading.currency' | translate }} <b>{{data.currency.name}}({{data.currency.displaySymbol}})</b></label>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.heading.decimalplaces' | translate }} <b>{{data.currency.decimalPlaces}}</b></label>
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.nominalannualinterestrate' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="nominalAnnualInterestRate" type="text" name="nominalannualinterestrate"
|
||||
ng-model="formData.nominalAnnualInterestRate" required late-Validate/>
|
||||
<form-validate valattributeform="newsavingccountform" valattribute="nominalannualinterestrate"/>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.currencyinmultiplesof' | translate }} </label>
|
||||
<input type="text" value="{{data.currency.inMultiplesOf}}" readonly>
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.interestcompoundingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCompoundingPeriodType" ng-model="formData.interestCompoundingPeriodType"
|
||||
ng-options="type.id as type.value for type in data.interestCompoundingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.interestpostingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestPostingPeriodType" ng-model="formData.interestPostingPeriodType"
|
||||
ng-options="type.id as type.value for type in data.interestPostingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.interestcalculatedusing' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationType" ng-model="formData.interestCalculationType"
|
||||
ng-options="type.id as type.value for type in data.interestCalculationTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.daysinyears' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationDaysInYearType" ng-model="formData.interestCalculationDaysInYearType"
|
||||
ng-options="type.id as type.value for type in data.interestCalculationDaysInYearTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="10%" align="center">
|
||||
<label class="control-label"><h4>{{ 'label.heading.settings' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="90%">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.recurring.deposit.amount' | translate }} </label>
|
||||
<input id="recurringDepositAmount" type="text" ng-model="formData.recurringDepositAmount">
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.depositperiod' | translate }} </label>
|
||||
<input id="depositPeriod" type="text" ng-model="formData.depositPeriod">
|
||||
<select id="depositPeriodFrequencyId" ng-model="formData.depositPeriodFrequencyId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.depositPeriodFrequencyOptions"
|
||||
value="{{type.id}}">
|
||||
<option value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.select.recurringdeposittype' | translate }} </label>
|
||||
<select id="recurringDepositTypeId" ng-model="formData.recurringDepositTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.recurringDepositTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td colspan="2">
|
||||
<label class="control-label">{{ 'label.input.recurringdepositfrequency' | translate }} </label>
|
||||
<input id="recurringDepositFrequency" type="text" ng-model="formData.recurringDepositFrequency">
|
||||
|
||||
<select id="recurringDepositFrequencyTypeId" ng-model="formData.recurringDepositFrequencyTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.recurringDepositFrequencyTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label class="control-label">{{ 'label.input.lockinPeriodFrequency' | translate }} </label>
|
||||
<input id="lockinPeriodFrequency" type="text" class="input-small"
|
||||
ng-model="formData.lockinPeriodFrequency">
|
||||
<select id="lockinPeriodFrequencyType" ng-model="formData.lockinPeriodFrequencyType"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.lockinPeriodFrequencyTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.minimumdepositterm' | translate }} </label>
|
||||
<input id="minimumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.minDepositTerm" readonly>
|
||||
<select id="minDepositTermTypeId" ng-model="formData.minDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.depositTermTypeOptions"
|
||||
value="{{type.id}}" readonly>
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.inmultiplesof' | translate }} </label>
|
||||
<input id="inMultiplesOfDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.inMultiplesOfDepositTerm" readonly>
|
||||
<select id="inMultiplesOfDepositTermTypeId" ng-model="formData.inMultiplesOfDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.inMultiplesOfDepositTermTypeOptions"
|
||||
value="{{type.id}}" readonly>
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="80%">
|
||||
<label class="control-label">{{ 'label.input.maximumdepositterm' | translate }} </label>
|
||||
<input id="maximumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.maxDepositTerm" readonly>
|
||||
<select id="maxDepositTermTypeId" ng-model="formData.maxDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in data.depositTermTypeOptions"
|
||||
value="{{type.id}}" readonly>
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<label class="control-label">{{ 'label.prematureclosure' | translate }} </label>
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="interestFreePeriodApplicable" type="checkbox"
|
||||
ng-model="formData.interestFreePeriodApplicable" readonly>
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.interestfreeperiodapplicable' |
|
||||
translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="interestFreeFromPeriod" name="interestFreeFromPeriod" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.interestFreeFromPeriod" readonly/> -
|
||||
<input id="interestFreeToPeriod" name="interestFreeToPeriod" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.interestFreeToPeriod" readonly/>
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-small" id="interestFreePeriodFrequencyTypeId"
|
||||
ng-model="formData.interestFreePeriodFrequencyTypeId"
|
||||
ng-options="type.id as type.value for type in product.interestFreePeriodTypeOptions"
|
||||
value="{{formData.interestFreePeriodFrequencyTypeId}}" readonly>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="preClosurePenalApplicable" type="checkbox"
|
||||
ng-model="formData.preClosurePenalApplicable">
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.applypreclosurepenalinterest' |
|
||||
translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="preClosurePenalInterest" name="preClosurePenalInterest" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.preClosurePenalInterest" readonly/> -
|
||||
On
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-medium" id="preClosurePenalInterestOnTypeId"
|
||||
ng-model="formData.preClosurePenalInterestOnTypeId"
|
||||
ng-options="type.id as type.value for type in data.preClosurePenalInterestOnTypeOptions"
|
||||
value="{{formData.preClosurePenalInterestOnTypeId}}" readonly>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.interestchart' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<!--<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.name' | translate
|
||||
}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="name" ng-autofocus="true" type="text" name="name" ng-model="chart.name"
|
||||
readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.description' |
|
||||
translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="chdescription" ng-autofocus="true" type="text" name="chdescription"
|
||||
ng-model="chart.description" readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.from' |
|
||||
translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="fromDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="fromDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate" readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.to' | translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="endDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="endDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate" readonly/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table class="table table-bordered" width="100%">
|
||||
<tr class="graybg">
|
||||
<td>{{'label.heading.interestratedetails.period.type' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.period.from.to' | translate}}</td>
|
||||
<!--<td>{{'label.heading.interestratedetails.amount.range' | translate}}</td>-->
|
||||
<td>{{'label.heading.interestratedetails.interest' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.description' | translate}}</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-repeat="chartSlab in chart.chartSlabs">
|
||||
<td>
|
||||
<select class="input-small" id="periodType" ng-model="chartSlab.periodType.id"
|
||||
ng-options="type.id as type.value for type in chart.periodTypes"
|
||||
value="{{chartSlab.periodType.id}}" readonly>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input id="fromPeriod" name="fromPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.fromPeriod" readonly/> -
|
||||
<input id="toPeriod" name="toPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.toPeriod" readonly/>
|
||||
</td>
|
||||
<!--<td>
|
||||
<input id="amountRangeFrom" name="amountRangeFrom" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeFrom" readonly/> -
|
||||
<input id="amountRangeTo" name="amountRangeTo" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeTo" readonly/>
|
||||
</td>-->
|
||||
<td><input id="annualInterestRate" name="annualInterestRate" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="chartSlab.annualInterestRate" readonly/></td>
|
||||
<td><input id="description" name="description" type="text" ng-model="chartSlab.description"
|
||||
readonly/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="10%" align="center">
|
||||
<label class="control-label"><h4>{{ 'label.heading.charges' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="90%">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<select ng-model="chargeId" ng-options="charge.id as charge.name for charge in chargeOptions"
|
||||
value="{{charge.id}}">
|
||||
<option value="">{{'label.selectcharge' | translate}}</option>
|
||||
</select>
|
||||
<a ng-click="addCharge(chargeId)"><i class="icon-plus icon-white"></i></a>
|
||||
<span ng-show="errorchargeevent">
|
||||
<small class="error">
|
||||
{{'label.'+labelchargeerror | translate}}
|
||||
</small>
|
||||
</span>
|
||||
</td>
|
||||
<td width="50%">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="table" width="100%" ng-show="charges.length>0">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.name' | translate}}</th>
|
||||
<th>{{'label.heading.type' | translate}}</th>
|
||||
<th>{{'label.heading.amount' | translate}}</th>
|
||||
<th>{{'label.heading.collectedon' | translate}}</th>
|
||||
<th>{{'label.heading.date' | translate}}</th>
|
||||
<th>{{'label.heading.repaymentsevery' | translate}}</th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="charge in charges">
|
||||
<td>{{charge.name}},{{charge.currency.displaySymbol}}</td>
|
||||
<td>{{charge.chargeCalculationType.value}}</td>
|
||||
<td><input id="charges[{{$index}}].amount" class="input-small" type="text" ng-model="charge.amount"
|
||||
placeholder="{{'label.placeholder.amount' | translate}}"/></td>
|
||||
<td>{{charge.chargeTimeType.value}}</td>
|
||||
<td ng-show="charge.chargeTimeType.value=='Annual Fee'">
|
||||
<input id="charges[{{$index}}].feeOnMonthDay" class="input-medium" readonly class="date-disable"
|
||||
type="text" datepicker-pop="dd MMMM" ng-model="charge.feeOnMonthDay" is-open="opened"/>
|
||||
</td>
|
||||
<td ng-show="charge.chargeTimeType.value=='Specified due date'">
|
||||
<input id="charges[{{$index}}].dueDate" class="input-medium" readonly class="date-disable"
|
||||
type="text" datepicker-pop="dd MMMM yyyy" ng-model="charge.dueDate" is-open="opened"/>
|
||||
</td>
|
||||
<td ng-show="charge.chargeTimeType.value=='Monthly Fee'">
|
||||
<input readonly class="date-disable" class="input-medium" readonly class="date-disable" type="text"
|
||||
datepicker-pop="dd MMMM" ng-model="charge.feeOnMonthDay" is-open="opened"/>
|
||||
</td>
|
||||
<td ng-show="charge.chargeTimeType.value=='Monthly Fee'">
|
||||
<input id="charges[{{$index}}].amount" class="input-small" type="text"
|
||||
ng-model="charge.feeInterval"/>
|
||||
</td>
|
||||
<td ng-hide="charge.chargeTimeType.value=='Monthly Fee'"></td>
|
||||
<td ng-hide="charge.chargeTimeType.value=='Annual Fee' || charge.chargeTimeType.value=='Specified due date' || charge.chargeTimeType.value=='Monthly Fee'"></td>
|
||||
<td><a ng-click="deleteCharge($index)"><i class="icon-remove icon-white"></i></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="offset6">
|
||||
<button id="cancel" ng-click="cancel()" class="btn">{{ 'label.button.cancel' | translate }}</button>
|
||||
<button id="save" type="submit" class="btn btn-primary" ng-show="data">{{ 'label.button.save' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
@ -0,0 +1,183 @@
|
||||
<div ng-controller="RecurringDepositAccountActionsController">
|
||||
<div class="paddedbottom10">
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/viewrecurringdepositaccount/{{accountId}}">{{'label.anchor.viewrecurringdepositaccount' |
|
||||
translate}}</a> <span class="divider">/</span></li>
|
||||
<li class="active">{{action}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<form name="savingccountactionform" novalidate="" class="form-horizontal" ng-submit="submit()">
|
||||
<api-validate></api-validate>
|
||||
<fieldset>
|
||||
<legend>{{ title | translate}}</legend>
|
||||
|
||||
<div class="control-group" ng-show="showDateField">
|
||||
<label class="control-label" for="modelName">{{labelName | translate}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="{{modelName}}" type="text" sort datepicker-pop="dd MMMM yyyy"
|
||||
ng-model="formData[modelName]" is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" ng-show="showAmount">
|
||||
<label class="control-label">{{ 'label.input.amount' | translate}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="transactionAmount" type="text" name="transactionAmount" ng-model="formData.transactionAmount" />
|
||||
</div>
|
||||
</div>
|
||||
<div ng-show="isAccountClose">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="maturityAmount">{{ 'label.maturityAmount' |
|
||||
translate}}<span class="required">*</span></label>
|
||||
|
||||
<span class="padded-td">{{currency.displaySymbol}} {{maturityAmount}}</span>
|
||||
|
||||
</tr>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="onAccountClosureId">{{ 'label.input.onAccountClosure' |
|
||||
translate}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<select id="onAccountClosureId" ng-model="formData.onAccountClosureId"
|
||||
ng-options="onAccountClosure.id as onAccountClosure.value for onAccountClosure in onAccountClosureOptions"
|
||||
value="{{onAccountClosure.id}}">
|
||||
<option value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" ng-show="formData.onAccountClosureId == '200'">
|
||||
<label class="control-label" for="toSavingsAccountId">{{ 'label.input.transfer.to.savings' |
|
||||
translate}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<select id="toSavingsAccountId" ng-model="formData.toSavingsAccountId"
|
||||
ng-options="savingsAccount.id as savingsAccount.accountNo for savingsAccount in savingsAccounts"
|
||||
value="{{savingsAccounts.id}}">
|
||||
<option value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" ng-show="formData.onAccountClosureId == '200'">
|
||||
<label class="control-label" for="transferDescription">{{ 'label.input.transfer.description' |
|
||||
translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="transferDescription" type="text" ng-model="formData.transferDescription">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div ng-show="showPaymentType">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="paymentTypeId">{{ 'label.input.paymentypeid' | translate}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<select id="paymentTypeId" ng-model="formData.paymentTypeId"
|
||||
ng-options="paymentType.id as paymentType.name for paymentType in paymentTypes"
|
||||
value="{{paymentType.id}}">
|
||||
<option value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label">{{ 'label.input.showpaymentdetails' | translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<a class="btn btn-primary" ng-click="showPaymentDetails=!showPaymentDetails">
|
||||
<i ng-show="showPaymentDetails" class="icon-minus icon-white"></i>
|
||||
<i ng-show="!showPaymentDetails" class="icon-plus icon-white"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div collapse="!showPaymentDetails">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="accountNumber">{{ 'label.input.accnum' | translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="accountNumber" type="text" ng-model="formData.accountNumber">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="checkNumber">{{ 'label.input.checknumber' |
|
||||
translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="checkNumber" type="text" ng-model="formData.checkNumber">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="routingCode">{{ 'label.input.routingcode' |
|
||||
translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="routingCode" type="text" ng-model="formData.routingCode">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="receiptNumber">{{ 'label.input.receiptnumber' |
|
||||
translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="receiptNumber" type="text" ng-model="formData.receiptNumber">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="bankNumber">{{ 'label.input.banknumber' | translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="bankNumber" type="text" ng-model="formData.bankNumber">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" ng-show="showNoteField">
|
||||
<label class="control-label" for="note">{{ 'label.input.note' | translate}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<textarea rows="2" id="note" ng-model="formData.note"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group" ng-show="showAmountField">
|
||||
<label class="control-label">{{ labelName | translate}}<span class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input type="text" id="amount" ng-model="formData.amount">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group" ng-show="paymentDatefield">
|
||||
<label class="control-label" for="modelName">{{'label.input.paymentdate' | translate}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="{{modelName}}" type="text" sort datepicker-pop="dd MMMM yyyy"
|
||||
ng-model="formData[modelName]" is-open="opened"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group" ng-show="showDelete || waiveCharge">
|
||||
<label class="control-label">{{ 'label.areyousure' | translate }}</label>
|
||||
</div>
|
||||
<div class="offset3" ng-show="showDelete">
|
||||
<button type="reset" ng-click="submit()" class="btn">{{ 'label.button.confirm' | translate }}</button>
|
||||
<button type="submit" ng-click="cancel()" class="btn btn-primary">{{ 'label.button.cancel' | translate
|
||||
}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="offset3" ng-hide="showDelete">
|
||||
<button id="cancel" ng-click="cancel()" class="btn">{{ 'label.button.cancel' | translate }}</button>
|
||||
<button id="save" type="submit" class="btn btn-primary">{{ 'label.button.save' | translate }}</button>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
@ -0,0 +1,76 @@
|
||||
<div ng-controller="ViewRecurringDepositTransactionController">
|
||||
<div class="paddedbottom10">
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/viewrecurringdepositaccount/{{transaction.accountId}}">{{'label.anchor.viewrecurringdepositaccount' |
|
||||
translate}}</a></li>
|
||||
<li class="active">{{ 'label.anchor.viewtransaction' | translate}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<h3>{{ 'label.heading.transactiondetails' | translate}}</h3>
|
||||
|
||||
<div ng-hide="transaction.reversed" class="pull-right">
|
||||
<div class="btn-group">
|
||||
<a data-ng-hide="flag" has-permission='ADJUSTTRANSACTION_SAVINGSACCOUNT'
|
||||
href="#/recurringdepositaccount/{{transaction.accountId}}/modifytransaction?transactionId={{transaction.id}}"
|
||||
class="btn btn-primary"><i class="icon-pencil icon-white"></i>{{ 'label.button.edit' | translate}}</a>
|
||||
<a ng-click="undoTransaction(transaction.accountId, transaction.id)" class="btn btn-danger" has-permission='UNDOTRANSACTION_SAVINGSACCOUNT'><i
|
||||
class="icon-trash icon-white"></i>{{ 'label.button.undo' | translate}}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="20%">{{ 'label.heading.transactionid' | translate}}</td>
|
||||
<td width="80%">{{transaction.id}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'label.heading.type' | translate}}</td>
|
||||
<td>{{transaction.transactionType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'label.heading.transactiondate' | translate}}</td>
|
||||
<td>{{transaction.date | DateFormat}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'label.heading.currency' | translate}}</td>
|
||||
<td>{{transaction.currency.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'label.heading.amount' | translate}}</td>
|
||||
<td>{{transaction.amount}}</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
</table>
|
||||
<table width="100%" ng-show="transaction.paymentDetailData">
|
||||
<tr>
|
||||
<td width="20%"><strong>{{ 'label.heading.paymentdetails' | translate}}</strong></td>
|
||||
<td width="80%"></td>
|
||||
</tr>
|
||||
<tr ng-show="transaction.paymentDetailData.paymentType">
|
||||
<td>{{ 'label.heading.type' | translate}}</td>
|
||||
<td>{{transaction.paymentDetailData.paymentType.name}}</td>
|
||||
</tr>
|
||||
<tr ng-show="transaction.paymentDetailData.accountNumber">
|
||||
<td>{{ 'label.heading.accnum' | translate}}</td>
|
||||
<td>{{transaction.paymentDetailData.accountNumber}}</td>
|
||||
</tr>
|
||||
<tr ng-show="transaction.paymentDetailData.checkNumber">
|
||||
<td>{{ 'label.heading.checknumber' | translate}}</td>
|
||||
<td>{{transaction.paymentDetailData.checkNumber}}</td>
|
||||
</tr>
|
||||
<tr ng-show="transaction.paymentDetailData.routingCode">
|
||||
<td>{{ 'label.heading.routingcode' | translate}}</td>
|
||||
<td>{{transaction.paymentDetailData.routingCode}}</td>
|
||||
</tr>
|
||||
<tr ng-show="transaction.paymentDetailData.receiptNumber">
|
||||
<td>{{ 'label.heading.receiptnumber' | translate}}</td>
|
||||
<td>{{transaction.paymentDetailData.receiptNumber}}</td>
|
||||
</tr>
|
||||
<tr ng-show="transaction.paymentDetailData.bankNumber">
|
||||
<td>{{ 'label.heading.banknumber' | translate}}</td>
|
||||
<td>{{transaction.paymentDetailData.bankNumber}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
330
app/views/deposits/recurring/viewaccountdetails.html
Normal file
330
app/views/deposits/recurring/viewaccountdetails.html
Normal file
@ -0,0 +1,330 @@
|
||||
<div ng-controller="ViewRecurringDepositAccountDetailsController">
|
||||
<div>
|
||||
<ul class="breadcrumb">
|
||||
<li ng-show="savingaccountdetails.groupName"><a href="#/viewgroup/{{savingaccountdetails.groupId}}">{{savingaccountdetails.groupName}}</a>
|
||||
<span class="divider">/</span></li>
|
||||
<li ng-show="savingaccountdetails.clientName"><a href="#/viewclient/{{savingaccountdetails.clientId}}">{{savingaccountdetails.clientName}}</a>
|
||||
<span class="divider">/</span></li>
|
||||
<li class="active">{{savingaccountdetails.savingsProductName}}({{savingaccountdetails.accountNo}})</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<div class="span gray-head" style="margin-left:0%;">
|
||||
<span style="margin-left: 10px;font-size:20px">
|
||||
<strong><i class="icon-stop {{savingaccountdetails.status.code | StatusLookup}}"></i> {{savingaccountdetails.savingsProductName}}(#{{savingaccountdetails.accountNo}})</strong>
|
||||
</span>
|
||||
</div>
|
||||
<div class="row-fluid primarydiv">
|
||||
<div class="pull-right">
|
||||
<div class="btn-group">
|
||||
<span ng-repeat="button in buttons.singlebuttons">
|
||||
<a ng-show="button.name"
|
||||
ng-click="clickEvent(button.name.replace('button.',''), savingaccountdetails.id)"
|
||||
class="btn btn-primary"><i class="{{button.icon}} icon-white"></i>{{'label.'+button.name |
|
||||
translate}}</a>
|
||||
</span>
|
||||
<span ng-show="buttons.options" class="btn-group">
|
||||
<a class="btn btn-primary dropdown-toggle">
|
||||
{{'label.button.more' | translate}}
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown dropdown-menu">
|
||||
<li class="{{button.icon}}" ng-repeat="button in buttons.options">
|
||||
<a ng-click="clickEvent(button.name.replace('button.',''), savingaccountdetails.id)">{{'label.'+button.name
|
||||
| translate}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<hr/>
|
||||
<div class="row-fluid span" style="margin-left:-1px;margin-top: -20px">
|
||||
<div class="span6">
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<td>{{'label.heading.activatedon' | translate}}</td>
|
||||
<td>{{savingaccountdetails.timeline.activatedOnDate | DateFormat}}<span
|
||||
data-ng-hide="savingaccountdetails.timeline.activatedOnDate">{{ 'label.notactivated' | translate }}</span>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.currency' | translate}}</td>
|
||||
<td>{{savingaccountdetails.currency.name}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="span6">
|
||||
<table class="table table-bordered table-striped">
|
||||
<tr>
|
||||
<td>{{'label.heading.fieldofficer' | translate}}</td>
|
||||
<td>{{savingaccountdetails.fieldOfficerName}}<span data-ng-hide="savingaccountdetails.fieldOfficerName">{{'label.unassigned' | translate}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.balance' | translate}}</td>
|
||||
<td>{{savingaccountdetails.summary.accountBalance}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row paddedleft">
|
||||
<hr class="marginbottom"/>
|
||||
<tabset>
|
||||
<tab heading="{{'label.heading.summary' | translate}}">
|
||||
<div class="span8" style="margin-left: 10px;margin-top: 30px;">
|
||||
<table class="table table-bordered view-table">
|
||||
<tr ng-show="savingaccountdetails.maturityAmount">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.maturityAmount' | translate}}</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.currency.displaySymbol}} {{savingaccountdetails.maturityAmount}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="savingaccountdetails.maturityDate">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.maturityDate' | translate}}</td>
|
||||
<td>{{savingaccountdetails.maturityDate | DateFormat}}<span
|
||||
data-ng-hide="savingaccountdetails.maturityDate"></span></td>
|
||||
</tr>
|
||||
<tr ng-show="savingaccountdetails.depositPeriod">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.depositPeriod' | translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.depositPeriod}} {{savingaccountdetails.depositPeriodFrequency.value}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="savingaccountdetails.summary.totalDeposits">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.actual.totalDeposits' | translate}}</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.currency.displaySymbol}} {{savingaccountdetails.summary.totalDeposits}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="savingaccountdetails.summary.totalWithdrawals">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.totalwithdarawals' | translate}}</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.currency.displaySymbol}} {{savingaccountdetails.summary.totalWithdrawals}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr ng-show="savingaccountdetails.summary.totalWithdrawalFees">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.totalwithdrawalsfees' | translate}}</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.currency.displaySymbol}} {{savingaccountdetails.summary.totalWithdrawalFees}}</span></td>
|
||||
</tr>
|
||||
<tr ng-show="savingaccountdetails.summary.totalAnnualFees">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.totalannualfees' | translate}}</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.currency.displaySymbol}} {{savingaccountdetails.summary.totalAnnualFees}}</span></td>
|
||||
</tr>-->
|
||||
<tr ng-show="savingaccountdetails.summary.totalInterestEarned">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.totalinterestearned' | translate}}</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.currency.displaySymbol}} {{savingaccountdetails.summary.totalInterestEarned}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="savingaccountdetails.summary.totalInterestPosted">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.totalinterestposted' | translate}}</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.currency.displaySymbol}} {{savingaccountdetails.summary.totalInterestPosted}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.interestrate' | translate}}</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.nominalAnnualInterestRate}}%</span></td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.interestcompoundingperiod' |
|
||||
translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.interestCompoundingPeriodType.value}}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.interestpostingperiod' | translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.interestPostingPeriodType.value}}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.interestcalculatedusing' | translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.interestCalculationType.value}}</span></td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.noofdaysinyear' | translate}}</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.interestCalculationDaysInYearType.value}}</span></td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.recurring.deposit.amount' |
|
||||
translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.recurringDepositAmount}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.recurringdeposittype' | translate}}</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.recurringDepositType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.recurring.deposit.every' | translate}}
|
||||
</td>
|
||||
<td><span class="padded-td">Every {{savingaccountdetails.recurringDepositFrequency}} {{savingaccountdetails.recurringDepositFrequencyType.value}}
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.minimumdepositterm.and.inmultiplesof' | translate}}</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.minDepositTerm}} - {{savingaccountdetails.depositTermType.value}}.
|
||||
And there after, in multiples of {{savingaccountdetails.inMultiplesOfDepositTerm}} - {{savingaccountdetails.inMultiplesOfDepositTermType.value}}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.maximumdepositterm' | translate}}</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.maxDepositTerm}} - {{savingaccountdetails.depositTermType.value}}</span></td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td ng-show="savingaccountdetails.interestFreePeriodApplicable" style="font-weight: normal"
|
||||
class="table-bold-acc">{{'label.interestfreetoperiod' | translate}}
|
||||
</td>
|
||||
<td ng-show="savingaccountdetails.interestFreePeriodApplicable"><span class="padded-td">{{savingaccountdetails.interestFreeFromPeriod}} to {{savingaccountdetails.interestFreeToPeriod}} - {{savingaccountdetails.interestFreePeriodFrequencyType.value}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="savingaccountdetails.preClosurePenalApplicable">
|
||||
<td style="font-weight: normal" class="table-bold-acc">{{'label.preclosurepenal' | translate}}</td>
|
||||
<td><span class="padded-td">{{savingaccountdetails.preClosurePenalInterest}} on {{savingaccountdetails.preClosurePenalInterestOnType.value}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</tab>
|
||||
<tab heading="{{'label.heading.transactions' | translate}}">
|
||||
<table class="table table-bordered">
|
||||
<colgroup span="4"></colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{'label.heading.id' | translate}}</th>
|
||||
<th>{{'label.heading.transactiondate' | translate}}</th>
|
||||
<th>{{'label.heading.transactiontype' | translate}}</th>
|
||||
<th>{{'label.heading.debit' | translate}}</th>
|
||||
<th>{{'label.heading.credit' | translate}}</th>
|
||||
<th>{{'label.heading.balance' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-class="{strikeoff : transaction.reversed==true}"
|
||||
ng-repeat="transaction in savingaccountdetails.transactions">
|
||||
<td style="width: 50px;">
|
||||
<a ng-hide="transaction.transfer"
|
||||
href="#/viewrecurringdepositaccounttrxn/{{transaction.accountId}}/{{transaction.id}}">{{transaction.id}}</a>
|
||||
<a ng-show="transaction.transfer" href="#/viewaccounttransfers/{{transaction.transfer.id}}">{{transaction.id}}</a>
|
||||
</td>
|
||||
<td style="width: 130px;">{{transaction.date | DateFormat}}</td>
|
||||
<td style="width: 130px;">{{transaction.transactionType.value}}</td>
|
||||
<td>
|
||||
<div ng-show="isDebit(transaction.transactionType)">
|
||||
{{transaction.amount}}
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div ng-show="!isDebit(transaction.transactionType)">
|
||||
{{transaction.amount}}
|
||||
</div>
|
||||
</td>
|
||||
<td>{{transaction.runningBalance}}</td>
|
||||
</tbody>
|
||||
</table>
|
||||
</tab>
|
||||
<tab heading="{{savingdatatable.registeredTableName}}" ng-repeat="savingdatatable in savingdatatables"
|
||||
select="dataTableChange(savingdatatable)">
|
||||
<span data-ng-show="choice">
|
||||
<a ng-show="datatabledetails.isData" class="btn btn-danger pull-right"
|
||||
ng-click="deleteAll(savingdatatable.registeredTableName, savingaccountdetails.id)"><i
|
||||
class="icon-trash icon-white"></i>{{'label.button.deleteall' | translate}}</a>
|
||||
<span ng-show="!datatabledetails.isData || datatabledetails.isMultirow" class="pull-right ">
|
||||
<a href="#/makedatatableentry/{{savingdatatable.registeredTableName}}/{{savingaccountdetails.id}}"
|
||||
class="btn btn-primary"><i class="icon-plus icon-white"></i>{{'label.button.add' | translate}}</a>
|
||||
</span></br>
|
||||
</span>
|
||||
|
||||
<div data-ng-show="datatabledetails.isData">
|
||||
<table ng-show="datatabledetails.isMultirow" class="table">
|
||||
<thead>
|
||||
<th ng-repeat="column in datatabledetails.columnHeaders">{{column.columnName}}</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="data in datatabledetails.data">
|
||||
<td ng-repeat="row in data.row">
|
||||
<span ng-show="$index == 0">
|
||||
<a href="#/viewdatatableentry/{{savingdatatable.registeredTableName}}/{{savingaccountdetails.id}}/{{data.row[0]}}"
|
||||
ng-show="datatabledetails.isMultirow">{{row}}</a>
|
||||
<a href="#/viewdatatableentry/{{savingdatatable.registeredTableName}}/{{savingaccountdetails.id}}/"
|
||||
ng-hide="datatabledetails.isMultirow">{{row}}</a>
|
||||
</span>
|
||||
<span ng-hide="$index == 0">{{row}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-bordered" data-ng-show="!datatabledetails.isMultirow" style="width: 450px">
|
||||
<tr ng-repeat="value in singleRow">
|
||||
<td class="graybg" style="font-weight: bold">{{value.key}}</td>
|
||||
<td><span class="padded-td">{{value.value}}</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</tab>
|
||||
<tab ng-show="chargeTableShow" heading="{{'label.heading.charges' | translate}}">
|
||||
<table class="table" width="100%">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.name' | translate}}</th>
|
||||
<th>{{'label.heading.feeorpenalty' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.paymentdueat' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.dueasof' | translate}}</th>
|
||||
<th>{{'label.heading.repeatson' | translate}}</th>
|
||||
<th>{{'label.heading.calculationtype' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.due' | translate}}</th>
|
||||
<th>{{'label.heading.paid' | translate}}</th>
|
||||
<th>{{'label.heading.waived' | translate}}</th>
|
||||
<th>{{'label.heading.outstanding' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr ng-repeat="charge in charges">
|
||||
<td>
|
||||
<a href="#">{{charge.name}}</a>
|
||||
</td>
|
||||
<td ng-show="'charge.penalty'==true">{{"penalty"}}</td>
|
||||
<td ng-hide="'charge.penalty'==true">{{"fee"}}</td>
|
||||
<td></td>
|
||||
<td>{{charge.chargeTimeType.value}}</td>
|
||||
<td></td>
|
||||
<td>{{charge.dueDate | DateFormat}}</td>
|
||||
<td>{{charge.feeOnMonthDay | DayMonthFormat}}</td>
|
||||
<td>{{charge.chargeCalculationType.value}}</td>
|
||||
<td></td>
|
||||
<td>{{charge.currency.displaySymbol}}{{charge.amount}}</td>
|
||||
<td>{{charge.currency.displaySymbol}}{{charge.amountPaid}}</td>
|
||||
<td>{{charge.currency.displaySymbol}}{{charge.amountWaived}}</td>
|
||||
<td>{{charge.currency.displaySymbol}}{{charge.amountOutstanding}}</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<span ng-show="chargeAction">
|
||||
<a title="{{'label.edit' | translate}}"
|
||||
href="#/recurringdepositaccountcharge/{{savingaccountdetails.id}}/editsavingcharge/{{charge.id}}"><i
|
||||
class="icon-pencil icon-white"></i></a>
|
||||
<a title="{{'label.delete' | translate}}"
|
||||
href="#/recurringdepositaccountcharge/{{savingaccountdetails.id}}/deletesavingcharge/{{charge.id}}"><i
|
||||
class="icon-remove icon-white"></i></a>
|
||||
</span>
|
||||
<span ng-hide="chargeAction">
|
||||
<span ng-hide="charge.amountOutstanding == 0"
|
||||
ng-show="charge.chargeTimeType.value == 'Monthly Fee' || charge.chargeTimeType.value == 'Annual Fee'|| charge.chargeTimeType.value == 'Specified due date'">
|
||||
<a title="{{'label.button.paycharge' | translate}}"
|
||||
href="#/recurringdepositaccountcharge/{{savingaccountdetails.id}}/paycharge/{{charge.id}}"><i
|
||||
class="icon-check icon-white"></i></a>
|
||||
<a title="{{'label.button.waivecharge' | translate}}"
|
||||
href="#/recurringdepositaccountcharge/{{savingaccountdetails.id}}/waive/{{charge.id}}"><i
|
||||
class="icon-flag icon-white"></i></a>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</tab>
|
||||
</tabset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
709
app/views/products/createfixeddepositproduct.html
Normal file
709
app/views/products/createfixeddepositproduct.html
Normal file
@ -0,0 +1,709 @@
|
||||
<div>
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/products">{{'label.anchor.products' | translate}}</a> <span class="divider">/</span></li>
|
||||
<li><a href="#/fixeddepositproducts">{{'label.anchor.fixeddepositproducts' | translate}}</a> <span
|
||||
class="divider">/</span></li>
|
||||
<li class="active">{{'label.anchor.createfixeddepositproduct' | translate}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<form name="createfixeddepositproductform" novalidate="" class="well"
|
||||
ng-controller="CreateFixedDepositProductController" rc-submit="submit()">
|
||||
<api-validate></api-validate>
|
||||
<div class="control-group">
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.details' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.productname' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input ng-autofocus="true" id="name" name="name" type="text" ng-model="formData.name"
|
||||
required late-validate/>
|
||||
<form-validate valattributeform="createfixeddepositproductform" valattribute="name"/>
|
||||
</td>
|
||||
<td width="40%">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.product.shortname' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input type="text" id="shortName" name="shortName" ng-model="formData.shortName"
|
||||
maxlength="4" required late-validate/>
|
||||
<form-validate valattributeform="createfixeddepositproductform" valattribute="shortName"/>
|
||||
</td>
|
||||
<td width="40%">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.description' | translate }}<span
|
||||
class="required">*</span></label>
|
||||
<textarea rows="2" id="description" name="description" ng-model="formData.description"
|
||||
required late-validate/></textarea>
|
||||
<form-validate valattributeform="createfixeddepositproductform" valattribute="description"/>
|
||||
</td>
|
||||
<td width="40%">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<table width="100%">
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.terms' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.currency' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="currencyCode" ng-model="formData.currencyCode"
|
||||
ng-options="currency.code as currency.name for currency in product.currencyOptions"
|
||||
value="{{currency.code}}"/>
|
||||
</td>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.decimalplaces' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input type="text" id="digitsAfterDecimal" name="decimalplace" class="input-small"
|
||||
ng-model="formData.digitsAfterDecimal" required late-validate/>
|
||||
<form-validate valattributeform="createfixeddepositproductform" valattribute="decimalplace"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.multiplesof' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input type="text" id="inMultiplesOf" name="multiplesof" ng-model="formData.inMultiplesOf" required
|
||||
late-validate/>
|
||||
<form-validate valattributeform="createfixeddepositproductform" valattribute="multiplesof"/>
|
||||
</td>
|
||||
<!--<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.nominalannualinterestrate' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="nominalAnnualInterestRate" name="nominalAnnualInterestRate" type="text"
|
||||
class="input-small" ng-model="formData.nominalAnnualInterestRate" required late-validate/>
|
||||
<form-validate valattributeform="createfixeddepositproductform"
|
||||
valattribute="nominalAnnualInterestRate"/>
|
||||
</td>-->
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.interestcompoundingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCompoundingPeriodTypeOptions" ng-model="formData.interestCompoundingPeriodType"
|
||||
ng-options="type.id as type.value for type in product.interestCompoundingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="40%"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.interestpostingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestPostingPeriodTypeOptions" ng-model="formData.interestPostingPeriodType"
|
||||
ng-options="type.id as type.value for type in product.interestPostingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="40%"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.interestcalculatedusing' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationType" ng-model="formData.interestCalculationType"
|
||||
ng-options="type.id as type.value for type in product.interestCalculationTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.daysinyears' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationDaysInYearType" ng-model="formData.interestCalculationDaysInYearType"
|
||||
ng-options="type.id as type.value for type in product.interestCalculationDaysInYearTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.settings' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<!-- <tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.minimumopeningbalance' | translate }} </label>
|
||||
<input id="minRequiredOpeningBalance" type="text" ng-model="formData.minRequiredOpeningBalance">
|
||||
</td>
|
||||
<td width="40%">
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td width="80%">
|
||||
<label class="control-label">{{ 'label.input.lockinPeriodFrequency' | translate }} </label>
|
||||
<input id="lockinPeriodFrequency" type="text" class="input-small"
|
||||
ng-model="formData.lockinPeriodFrequency">
|
||||
<select id="lockinPeriodFrequencyType" ng-model="formData.lockinPeriodFrequencyType"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.lockinPeriodFrequencyTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.minimumdepositterm' | translate }} </label>
|
||||
<input id="minimumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.minDepositTerm">
|
||||
<select id="minDepositTermTypeId" ng-model="formData.minDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.depositTermTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.inmultiplesof' | translate }} </label>
|
||||
<input id="inMultiplesOfDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.inMultiplesOfDepositTerm">
|
||||
<select id="inMultiplesOfDepositTermTypeId" ng-model="formData.inMultiplesOfDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.inMultiplesOfDepositTermTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="80%">
|
||||
<label class="control-label">{{ 'label.input.maximumdepositterm' | translate }} </label>
|
||||
<input id="maximumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.maxDepositTerm">
|
||||
<select id="maxDepositTermTypeId" ng-model="formData.maxDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.depositTermTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<label class="control-label">{{ 'label.prematureclosure' | translate }} </label>
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="interestFreePeriodApplicable" type="checkbox"
|
||||
ng-model="formData.interestFreePeriodApplicable">
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.interestfreeperiodapplicable' |
|
||||
translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="interestFreeFromPeriod" name="interestFreeFromPeriod" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.interestFreeFromPeriod"/> -
|
||||
<input id="interestFreeToPeriod" name="interestFreeToPeriod" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.interestFreeToPeriod"/>
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-small" id="interestFreePeriodFrequencyTypeId"
|
||||
ng-model="formData.interestFreePeriodFrequencyTypeId"
|
||||
ng-options="type.id as type.value for type in product.interestFreePeriodTypeOptions"
|
||||
value="{{formData.interestFreePeriodFrequencyTypeId}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="preClosurePenalApplicable" type="checkbox"
|
||||
ng-model="formData.preClosurePenalApplicable">
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.applypreclosurepenalinterest' |
|
||||
translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="preClosurePenalInterest" name="preClosurePenalInterest" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.preClosurePenalInterest"/> -
|
||||
On
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-medium" id="preClosurePenalInterestOnTypeId"
|
||||
ng-model="formData.preClosurePenalInterestOnTypeId"
|
||||
ng-options="type.id as type.value for type in product.preClosurePenalInterestOnTypeOptions"
|
||||
value="{{formData.preClosurePenalInterestOnTypeId}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.interestchart' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<!--<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.name' | translate
|
||||
}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="name" ng-autofocus="true" type="text" name="name" ng-model="chart.name"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.description' |
|
||||
translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="chdescription" ng-autofocus="true" type="text" name="chdescription"
|
||||
ng-model="chart.description"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.from' |
|
||||
translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="fromDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="fromDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.to' | translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="endDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="endDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table class="table table-bordered" width="100%">
|
||||
<tr class="graybg">
|
||||
<td>{{'label.heading.interestratedetails.period.type' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.period.from.to' | translate}}</td>
|
||||
<!--<td>{{'label.heading.interestratedetails.amount.range' | translate}}</td>-->
|
||||
<td>{{'label.heading.interestratedetails.interest' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.description' | translate}}</td>
|
||||
<td>
|
||||
<div class="controls" ng-show="chart.chartSlabs.length < 1">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-repeat="chartSlab in chart.chartSlabs">
|
||||
<td>
|
||||
<select class="input-small" id="periodType" ng-model="chartSlab.periodType.id"
|
||||
ng-options="type.id as type.value for type in chart.periodTypes"
|
||||
value="{{chartSlab.periodType.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input id="fromPeriod" name="fromPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.fromPeriod"/> -
|
||||
<input id="toPeriod" name="toPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.toPeriod"/>
|
||||
</td>
|
||||
<!--<td>
|
||||
<input id="amountRangeFrom" name="amountRangeFrom" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeFrom"/> -
|
||||
<input id="amountRangeTo" name="amountRangeTo" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeTo"/>
|
||||
</td>-->
|
||||
<td><input id="annualInterestRate" name="annualInterestRate" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="chartSlab.annualInterestRate"/></td>
|
||||
<td><input id="description" name="description" type="text"
|
||||
ng-model="chartSlab.description"/></td>
|
||||
<td>
|
||||
<a ng-click="removeRow($index)"><i class="icon-minus-sign icon-white"></i>{{'label.remove.row'
|
||||
| translate}}</a>
|
||||
|
||||
<div class="controls" ng-show="$last">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label"><h4>{{ 'label.heading.charges' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult">
|
||||
<form>
|
||||
<select ng-model="chargeId"
|
||||
ng-options="charge.id as ((charge.name+' '+'('+charge.currency.name+')')) for charge in product.chargeOptions"
|
||||
value="{{charge.id}}">
|
||||
<option style="display:none" value="">{{'label.selectcharge' | translate}}</option>
|
||||
</select>
|
||||
<a class="btn btn-primary" ng-click="chargeSelected(chargeId)">{{ 'label.button.add' | translate }}</a>
|
||||
</form>
|
||||
<table class="table" width="100%">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.name' | translate}}</th>
|
||||
<th>{{'label.heading.type' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.amount' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.collectedon' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="charge in charges">
|
||||
<td>{{charge.name}},{{charge.currency.displaySymbol}}</td>
|
||||
<td>{{charge.chargeCalculationType.value}}</td>
|
||||
<td></td>
|
||||
<td>{{charge.amount}}</td>
|
||||
<td></td>
|
||||
<td>{{charge.chargeTimeType.value}}</td>
|
||||
<td></td>
|
||||
<td><a href="" ng-click="deleteCharge($index)"><i class="icon-remove icon-white"></i></a></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="span2"></tr>
|
||||
|
||||
<tr class="control-group">
|
||||
<td width="11%"></td>
|
||||
<td width="80%">
|
||||
<table>
|
||||
<tr class="span2"></tr>
|
||||
<tr>
|
||||
<td width="30%"></td>
|
||||
<td>
|
||||
<input type="radio" ng-model="formData.accountingRule" value="1">{{'label.input.none' |
|
||||
translate}}<br/>
|
||||
<td>
|
||||
<td>
|
||||
<input type="radio" ng-model="formData.accountingRule" value="2">{{'label.input.cash' |
|
||||
translate}}<br/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-show="formData.accountingRule==2" class="control-group">
|
||||
<td>
|
||||
<label class="control-label"><h4>{{ 'label.heading.accounting' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult">
|
||||
<table width="50%">
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.assets" | translate}}</h4></td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.savingreference' | translate }} </label>
|
||||
<select id="savingsReferenceAccountId" ng-model="formData.savingsReferenceAccountId"
|
||||
chosen="assetAccountOptions"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in assetAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table width="50%">
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.liabilities" | translate}}</h4></td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.savingcontrol' | translate }} </label>
|
||||
<select id="savingsControlAccountId" ng-model="formData.savingsControlAccountId"
|
||||
chosen="liabilityAccountOptions"
|
||||
ng-options="liabilityAccount.id as liabilityAccount.name for liabilityAccount in liabilityAccountOptions"
|
||||
value="{{liabilityAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.savingstransfersinsuspenpense' | translate }} </label>
|
||||
<select id="transfersInSuspenseAccountId" ng-model="formData.transfersInSuspenseAccountId"
|
||||
chosen="liabilityAccountOptions"
|
||||
ng-options="liabilityAccount.id as liabilityAccount.name for liabilityAccount in liabilityAccountOptions"
|
||||
value="{{liabilityAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.expenses" | translate}}</h4></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table width="50%">
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.interestonsavings' | translate }} </label>
|
||||
<select id="interestOnSavingsAccountId" ng-model="formData.interestOnSavingsAccountId"
|
||||
chosen="expenseAccountOptions"
|
||||
ng-options="expenseAccount.id as expenseAccount.name for expenseAccount in expenseAccountOptions"
|
||||
value="{{expenseAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.income" | translate}}</h4></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table width="50%">
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.incomefromfees' | translate }} </label>
|
||||
<select id="incomeFromFeeAccountId" ng-model="formData.incomeFromFeeAccountId" chosen="incomeAccountOptions"
|
||||
ng-options="incomeAccount.id as incomeAccount.name for incomeAccount in incomeAccountOptions"
|
||||
value="{{incomeAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.incomefrompenalties' | translate }} </label>
|
||||
<select id="incomeFromPenaltyAccountId" ng-model="formData.incomeFromPenaltyAccountId"
|
||||
chosen="incomeAccountOptions"
|
||||
ng-options="incomeAccount.id as incomeAccount.name for incomeAccount in incomeAccountOptions"
|
||||
value="{{incomeAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
</table>
|
||||
<table>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<h4>{{'label.heading.advancedaccountingrules' | translate}}[<a ng-click="showOrHide(showOrHideValue)">{{showOrHideValue}}</a>]
|
||||
</h4></br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<table ng-show="showOrHideValue == 'hide'">
|
||||
<tr>
|
||||
<td>{{'label.heading.configurefundsourcesforpaymentchannels' | translate}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a class="btn btn-primary" ng-click="addConfigureFundSource()">{{ 'label.button.add' | translate
|
||||
}}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.paymenttype' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.fundsource' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="configureFundOption in configureFundOptions">
|
||||
<td>
|
||||
<select id="configureFundOptions[{{$index}}].paymentTypeId"
|
||||
ng-model="configureFundOption.paymentTypeId"
|
||||
ng-options="paymentType.id as paymentType.name for paymentType in configureFundOption.paymentTypeOptions"
|
||||
value="{{paymentType.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<select id="configureFundOptions[{{$index}}].fundSourceAccountId"
|
||||
ng-model="configureFundOption.fundSourceAccountId"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in configureFundOption.assetAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td><i class="icon-remove" ng-click="deleteFund($index)"></i></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.mapfeestoincomeaccounts' | translate}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a class="btn btn-primary" ng-click="mapFees()">{{ 'label.button.add' | translate }}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.fees' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.incomeaccount' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="specificIncomeaccount in specificIncomeaccounts">
|
||||
<td>
|
||||
<select id="specificIncomeaccounts[{{$index}}].chargeId"
|
||||
ng-model="specificIncomeaccount.chargeId"
|
||||
ng-options="charge.id as charge.name for charge in specificIncomeaccount.chargeOptions"
|
||||
value="{{charge.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<select id="specificIncomeaccounts[{{$index}}].incomeAccountId"
|
||||
ng-model="specificIncomeaccount.incomeAccountId"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in specificIncomeaccount.incomeAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td><i class="icon-remove" ng-click="deleteFee($index)"></i></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.mappenaltiestospecificincomeaccounts' | translate}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a class="btn btn-primary" ng-click="mapPenalty()">{{ 'label.button.add' | translate }}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.penalty' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.incomeaccount' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="penaltySpecificIncomeaccount in penaltySpecificIncomeaccounts">
|
||||
<td>
|
||||
<select id="penaltySpecificIncomeaccounts[{{$index}}].chargeId"
|
||||
ng-model="penaltySpecificIncomeaccount.chargeId"
|
||||
ng-options="charge.id as charge.name for charge in penaltySpecificIncomeaccount.penaltyOptions"
|
||||
value="{{charge.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<select id="penaltySpecificIncomeaccounts[{{$index}}].incomeAccountId"
|
||||
ng-model="penaltySpecificIncomeaccount.incomeAccountId"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in penaltySpecificIncomeaccount.incomeAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td><i class="icon-remove" ng-click="deletePenalty($index)"></i></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="offset6 paddedtop">
|
||||
<a id="cancel" type="reset" class="btn" ng-click="cancel()">{{'label.button.cancel' | translate}}</a>
|
||||
<button id="save" type="submit" class="btn btn-primary">{{'label.button.save' | translate}}</button>
|
||||
</div>
|
||||
</form>
|
||||
141
app/views/products/createinterestratechart.html
Normal file
141
app/views/products/createinterestratechart.html
Normal file
@ -0,0 +1,141 @@
|
||||
<div ng-controller="CreateInterestRateChartController">
|
||||
<div id="viewlptop">
|
||||
<div class="paddedbottom10">
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/products">{{'label.anchor.products' | translate}}</a> <span class="divider">/</span></li>
|
||||
<li><a href="{{'#/' + productsLink }}">{{'label.anchor.' + productsLink | translate}}</a> <span
|
||||
class="divider">/</span></li>
|
||||
<li><a href="#/{{viewProductLink}}/{{productId}}">{{productName}}</a> <span class="divider">/</span>
|
||||
</li>
|
||||
<li><a href="#/interestratecharts/{{productId}}/{{productName}}/{{productType}}">{{'label.anchor.interestratecharts'
|
||||
| translate}}</a> <span class="divider">/</span></li>
|
||||
<li class="active">{{'label.anchor.createinterestratechart' | translate}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form name="createinterestratechartform" novalidate="" class="" rc-submit="submitInterestRateChartForm()">
|
||||
<api-validate></api-validate>
|
||||
<div class="row-fluid">
|
||||
<legend>{{'label.heading.createinterestratechart' | translate}}</legend>
|
||||
<table>
|
||||
<!--<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.name' | translate
|
||||
}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="name" ng-autofocus="true" type="text" name="name" ng-model="chart.name"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.description' |
|
||||
translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="chdescription" ng-autofocus="true" type="text" name="chdescription"
|
||||
ng-model="chart.description"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.from' |
|
||||
translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="fromDate" sort type="text" datepicker-pop="dd MMMM yyyy"
|
||||
ng-model="fromDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.to' |
|
||||
translate }}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="endDate" sort type="text" datepicker-pop="dd MMMM yyyy"
|
||||
ng-model="endDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table class="table table-bordered" width="100%">
|
||||
<tr class="graybg">
|
||||
<td>{{'label.heading.interestratedetails.period.type' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.period.from.to' | translate}}</td>
|
||||
<!--<td>{{'label.heading.interestratedetails.amount.range' | translate}}</td>-->
|
||||
<td>{{'label.heading.interestratedetails.interest' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.description' | translate}}</td>
|
||||
<td>
|
||||
<div class="controls" ng-show="chart.chartSlabs.length < 1">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-repeat="chartSlab in chart.chartSlabs">
|
||||
<td>
|
||||
<select class="input-small" id="periodType" ng-model="chartSlab.periodType.id"
|
||||
ng-options="type.id as type.value for type in chart.periodTypes"
|
||||
value="{{chartSlab.periodType.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input id="fromPeriod" name="fromPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.fromPeriod" /> -
|
||||
<input id="toPeriod" name="toPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.toPeriod"/>
|
||||
</td>
|
||||
<!--<td>
|
||||
<input id="amountRangeFrom" name="amountRangeFrom" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeFrom"/> -
|
||||
<input id="amountRangeTo" name="amountRangeTo" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeTo"/>
|
||||
</td>-->
|
||||
<td><input id="annualInterestRate" name="annualInterestRate" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="chartSlab.annualInterestRate"/></td>
|
||||
<td><input id="description" name="description" type="text"
|
||||
ng-model="chartSlab.description"/></td>
|
||||
<td>
|
||||
<a ng-click="removeRow($index)"><i class="icon-minus-sign icon-white"></i>{{'label.remove.row'
|
||||
| translate}}</a>
|
||||
|
||||
<div class="controls" ng-show="$last">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="offset4 paddedtop">
|
||||
<button id="cancel" type="reset" class="btn btn-warning" ng-click="cancel()">{{'label.button.cancel' |
|
||||
translate}}
|
||||
</button>
|
||||
<button id="save" type="submit" class="btn btn-primary">{{'label.button.save' | translate}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
732
app/views/products/createrecurringdepositproduct.html
Normal file
732
app/views/products/createrecurringdepositproduct.html
Normal file
@ -0,0 +1,732 @@
|
||||
<div>
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/products">{{'label.anchor.products' | translate}}</a> <span class="divider">/</span></li>
|
||||
<li><a href="#/recurringdepositproducts">{{'label.anchor.recurringdepositproducts' | translate}}</a> <span
|
||||
class="divider">/</span></li>
|
||||
<li class="active">{{'label.anchor.createrecurringdepositproduct' | translate}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<form name="createrecurringdepositproductform" novalidate="" class="well"
|
||||
ng-controller="CreateRecurringDepositProductController" rc-submit="submit()">
|
||||
<api-validate></api-validate>
|
||||
<div class="control-group">
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.details' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.productname' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input ng-autofocus="true" id="name" name="name" type="text" ng-model="formData.name"
|
||||
required late-validate/>
|
||||
<form-validate valattributeform="createrecurringdepositproductform" valattribute="name"/>
|
||||
</td>
|
||||
<td width="40%">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.product.shortname' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input type="text" id="shortName" name="shortName" ng-model="formData.shortName"
|
||||
maxlength="4" required late-validate/>
|
||||
<form-validate valattributeform="createrecurringdepositproductform"
|
||||
valattribute="shortName"/>
|
||||
</td>
|
||||
<td width="40%">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.description' | translate }}<span
|
||||
class="required">*</span></label>
|
||||
<textarea rows="2" id="description" name="description" ng-model="formData.description"
|
||||
required late-validate/></textarea>
|
||||
<form-validate valattributeform="createrecurringdepositproductform"
|
||||
valattribute="description"/>
|
||||
</td>
|
||||
<td width="40%">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<table width="100%">
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.terms' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.currency' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="currencyCode" ng-model="formData.currencyCode"
|
||||
ng-options="currency.code as currency.name for currency in product.currencyOptions"
|
||||
value="{{currency.code}}"/>
|
||||
</td>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.decimalplaces' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input type="text" id="digitsAfterDecimal" name="decimalplace" class="input-small"
|
||||
ng-model="formData.digitsAfterDecimal" required late-validate/>
|
||||
<form-validate valattributeform="createrecurringdepositproductform" valattribute="decimalplace"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.multiplesof' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input type="text" id="inMultiplesOf" name="multiplesof" ng-model="formData.inMultiplesOf" required
|
||||
late-validate/>
|
||||
<form-validate valattributeform="createrecurringdepositproductform" valattribute="multiplesof"/>
|
||||
</td>
|
||||
<!--<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.nominalannualinterestrate' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="nominalAnnualInterestRate" name="nominalAnnualInterestRate" type="text"
|
||||
class="input-small" ng-model="formData.nominalAnnualInterestRate" required late-validate/>
|
||||
<form-validate valattributeform="createrecurringdepositproductform"
|
||||
valattribute="nominalAnnualInterestRate"/>
|
||||
</td>-->
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.interestcompoundingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCompoundingPeriodTypeOptions" ng-model="formData.interestCompoundingPeriodType"
|
||||
ng-options="type.id as type.value for type in product.interestCompoundingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="40%"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.interestpostingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestPostingPeriodTypeOptions" ng-model="formData.interestPostingPeriodType"
|
||||
ng-options="type.id as type.value for type in product.interestPostingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="40%"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.interestcalculatedusing' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationType" ng-model="formData.interestCalculationType"
|
||||
ng-options="type.id as type.value for type in product.interestCalculationTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.daysinyears' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationDaysInYearType" ng-model="formData.interestCalculationDaysInYearType"
|
||||
ng-options="type.id as type.value for type in product.interestCalculationDaysInYearTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.settings' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.select.recurringdeposittype' | translate }} </label>
|
||||
<select id="recurringDepositTypeId" ng-model="formData.recurringDepositTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.recurringDepositTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td width="40%">
|
||||
<!--<label class="control-label">{{ 'label.input.recurringdepositamount' | translate }} </label>
|
||||
<input id="minRequiredOpeningBalance" class="input-small" input-small type="text"
|
||||
ng-model="formData.minRequiredOpeningBalance">-->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<label class="control-label">{{ 'label.input.recurringdepositfrequency' | translate }} </label>
|
||||
<input id="recurringDepositFrequency" type="text" ng-model="formData.recurringDepositFrequency">
|
||||
|
||||
<select id="recurringDepositFrequencyTypeId" ng-model="formData.recurringDepositFrequencyTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.recurringDepositFrequencyTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="80%">
|
||||
<label class="control-label">{{ 'label.input.lockinPeriodFrequency' | translate }} </label>
|
||||
<input id="lockinPeriodFrequency" type="text" class="input-small"
|
||||
ng-model="formData.lockinPeriodFrequency">
|
||||
<select id="lockinPeriodFrequencyType" ng-model="formData.lockinPeriodFrequencyType"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.lockinPeriodFrequencyTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.minimumdepositterm' | translate }} </label>
|
||||
<input id="minimumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.minDepositTerm">
|
||||
<select id="minDepositTermTypeId" ng-model="formData.minDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.depositTermTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.inmultiplesof' | translate }} </label>
|
||||
<input id="inMultiplesOfDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.inMultiplesOfDepositTerm">
|
||||
<select id="inMultiplesOfDepositTermTypeId" ng-model="formData.inMultiplesOfDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.inMultiplesOfDepositTermTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="80%">
|
||||
<label class="control-label">{{ 'label.input.maximumdepositterm' | translate }} </label>
|
||||
<input id="maximumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.maxDepositTerm">
|
||||
<select id="maxDepositTermTypeId" ng-model="formData.maxDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.depositTermTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<label class="control-label">{{ 'label.prematureclosure' | translate }} </label>
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="interestFreePeriodApplicable" type="checkbox"
|
||||
ng-model="formData.interestFreePeriodApplicable">
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.interestfreeperiodapplicable' |
|
||||
translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="interestFreeFromPeriod" name="interestFreeFromPeriod" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.interestFreeFromPeriod"/> -
|
||||
<input id="interestFreeToPeriod" name="interestFreeToPeriod" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.interestFreeToPeriod"/>
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-small" id="interestFreePeriodFrequencyTypeId"
|
||||
ng-model="formData.interestFreePeriodFrequencyTypeId"
|
||||
ng-options="type.id as type.value for type in product.interestFreePeriodTypeOptions"
|
||||
value="{{formData.interestFreePeriodFrequencyTypeId}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="preClosurePenalApplicable" type="checkbox"
|
||||
ng-model="formData.preClosurePenalApplicable">
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.applypreclosurepenalinterest' |
|
||||
translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="preClosurePenalInterest" name="preClosurePenalInterest" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.preClosurePenalInterest"/> -
|
||||
On
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-medium" id="preClosurePenalInterestOnTypeId"
|
||||
ng-model="formData.preClosurePenalInterestOnTypeId"
|
||||
ng-options="type.id as type.value for type in product.preClosurePenalInterestOnTypeOptions"
|
||||
value="{{formData.preClosurePenalInterestOnTypeId}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.interestchart' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<!--<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.name' | translate
|
||||
}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="name" ng-autofocus="true" type="text" name="name" ng-model="chart.name"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.description' |
|
||||
translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="chdescription" ng-autofocus="true" type="text" name="chdescription"
|
||||
ng-model="chart.description"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.from' |
|
||||
translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="fromDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="fromDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.to' | translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="endDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="endDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table class="table table-bordered" width="100%">
|
||||
<tr class="graybg">
|
||||
<td>{{'label.heading.interestratedetails.period.type' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.period.from.to' | translate}}</td>
|
||||
<!--<td>{{'label.heading.interestratedetails.amount.range' | translate}}</td>-->
|
||||
<td>{{'label.heading.interestratedetails.interest' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.description' | translate}}</td>
|
||||
<td>
|
||||
<div class="controls" ng-show="chart.chartSlabs.length < 1">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-repeat="chartSlab in chart.chartSlabs">
|
||||
<td>
|
||||
<select class="input-small" id="periodType" ng-model="chartSlab.periodType.id"
|
||||
ng-options="type.id as type.value for type in chart.periodTypes"
|
||||
value="{{chartSlab.periodType.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input id="fromPeriod" name="fromPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.fromPeriod"/> -
|
||||
<input id="toPeriod" name="toPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.toPeriod"/>
|
||||
</td>
|
||||
<!--<td>
|
||||
<input id="amountRangeFrom" name="amountRangeFrom" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeFrom"/> -
|
||||
<input id="amountRangeTo" name="amountRangeTo" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeTo"/>
|
||||
</td>-->
|
||||
<td><input id="annualInterestRate" name="annualInterestRate" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="chartSlab.annualInterestRate"/></td>
|
||||
<td><input id="description" name="description" type="text"
|
||||
ng-model="chartSlab.description"/></td>
|
||||
<td>
|
||||
<a ng-click="removeRow($index)"><i class="icon-minus-sign icon-white"></i>{{'label.remove.row'
|
||||
| translate}}</a>
|
||||
|
||||
<div class="controls" ng-show="$last">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label"><h4>{{ 'label.heading.charges' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult">
|
||||
<form>
|
||||
<select ng-model="chargeId"
|
||||
ng-options="charge.id as ((charge.name+' '+'('+charge.currency.name+')')) for charge in product.chargeOptions"
|
||||
value="{{charge.id}}">
|
||||
<option style="display:none" value="">{{'label.selectcharge' | translate}}</option>
|
||||
</select>
|
||||
<a class="btn btn-primary" ng-click="chargeSelected(chargeId)">{{ 'label.button.add' | translate }}</a>
|
||||
</form>
|
||||
<table class="table" width="100%">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.name' | translate}}</th>
|
||||
<th>{{'label.heading.type' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.amount' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.collectedon' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="charge in charges">
|
||||
<td>{{charge.name}},{{charge.currency.displaySymbol}}</td>
|
||||
<td>{{charge.chargeCalculationType.value}}</td>
|
||||
<td></td>
|
||||
<td>{{charge.amount}}</td>
|
||||
<td></td>
|
||||
<td>{{charge.chargeTimeType.value}}</td>
|
||||
<td></td>
|
||||
<td><a href="" ng-click="deleteCharge($index)"><i class="icon-remove icon-white"></i></a></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="span2"></tr>
|
||||
|
||||
<tr class="control-group">
|
||||
<td width="11%"></td>
|
||||
<td width="80%">
|
||||
<table>
|
||||
<tr class="span2"></tr>
|
||||
<tr>
|
||||
<td width="30%"></td>
|
||||
<td>
|
||||
<input type="radio" ng-model="formData.accountingRule" value="1">{{'label.input.none' |
|
||||
translate}}<br/>
|
||||
<td>
|
||||
<td>
|
||||
<input type="radio" ng-model="formData.accountingRule" value="2">{{'label.input.cash' |
|
||||
translate}}<br/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-show="formData.accountingRule==2" class="control-group">
|
||||
<td>
|
||||
<label class="control-label"><h4>{{ 'label.heading.accounting' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult">
|
||||
<table width="50%">
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.assets" | translate}}</h4></td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.savingreference' | translate }} </label>
|
||||
<select id="savingsReferenceAccountId" ng-model="formData.savingsReferenceAccountId"
|
||||
chosen="assetAccountOptions"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in assetAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table width="50%">
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.liabilities" | translate}}</h4></td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.savingcontrol' | translate }} </label>
|
||||
<select id="savingsControlAccountId" ng-model="formData.savingsControlAccountId"
|
||||
chosen="liabilityAccountOptions"
|
||||
ng-options="liabilityAccount.id as liabilityAccount.name for liabilityAccount in liabilityAccountOptions"
|
||||
value="{{liabilityAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.savingstransfersinsuspenpense' | translate }} </label>
|
||||
<select id="transfersInSuspenseAccountId" ng-model="formData.transfersInSuspenseAccountId"
|
||||
chosen="liabilityAccountOptions"
|
||||
ng-options="liabilityAccount.id as liabilityAccount.name for liabilityAccount in liabilityAccountOptions"
|
||||
value="{{liabilityAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.expenses" | translate}}</h4></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table width="50%">
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.interestonsavings' | translate }} </label>
|
||||
<select id="interestOnSavingsAccountId" ng-model="formData.interestOnSavingsAccountId"
|
||||
chosen="expenseAccountOptions"
|
||||
ng-options="expenseAccount.id as expenseAccount.name for expenseAccount in expenseAccountOptions"
|
||||
value="{{expenseAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.income" | translate}}</h4></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table width="50%">
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.incomefromfees' | translate }} </label>
|
||||
<select id="incomeFromFeeAccountId" ng-model="formData.incomeFromFeeAccountId" chosen="incomeAccountOptions"
|
||||
ng-options="incomeAccount.id as incomeAccount.name for incomeAccount in incomeAccountOptions"
|
||||
value="{{incomeAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.incomefrompenalties' | translate }} </label>
|
||||
<select id="incomeFromPenaltyAccountId" ng-model="formData.incomeFromPenaltyAccountId"
|
||||
chosen="incomeAccountOptions"
|
||||
ng-options="incomeAccount.id as incomeAccount.name for incomeAccount in incomeAccountOptions"
|
||||
value="{{incomeAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
</table>
|
||||
<table>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<h4>{{'label.heading.advancedaccountingrules' | translate}}[<a ng-click="showOrHide(showOrHideValue)">{{showOrHideValue}}</a>]
|
||||
</h4></br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<table ng-show="showOrHideValue == 'hide'">
|
||||
<tr>
|
||||
<td>{{'label.heading.configurefundsourcesforpaymentchannels' | translate}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a class="btn btn-primary" ng-click="addConfigureFundSource()">{{ 'label.button.add' | translate
|
||||
}}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.paymenttype' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.fundsource' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="configureFundOption in configureFundOptions">
|
||||
<td>
|
||||
<select id="configureFundOptions[{{$index}}].paymentTypeId"
|
||||
ng-model="configureFundOption.paymentTypeId"
|
||||
ng-options="paymentType.id as paymentType.name for paymentType in configureFundOption.paymentTypeOptions"
|
||||
value="{{paymentType.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<select id="configureFundOptions[{{$index}}].fundSourceAccountId"
|
||||
ng-model="configureFundOption.fundSourceAccountId"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in configureFundOption.assetAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td><i class="icon-remove" ng-click="deleteFund($index)"></i></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.mapfeestoincomeaccounts' | translate}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a class="btn btn-primary" ng-click="mapFees()">{{ 'label.button.add' | translate }}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.fees' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.incomeaccount' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="specificIncomeaccount in specificIncomeaccounts">
|
||||
<td>
|
||||
<select id="specificIncomeaccounts[{{$index}}].chargeId"
|
||||
ng-model="specificIncomeaccount.chargeId"
|
||||
ng-options="charge.id as charge.name for charge in specificIncomeaccount.chargeOptions"
|
||||
value="{{charge.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<select id="specificIncomeaccounts[{{$index}}].incomeAccountId"
|
||||
ng-model="specificIncomeaccount.incomeAccountId"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in specificIncomeaccount.incomeAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td><i class="icon-remove" ng-click="deleteFee($index)"></i></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.mappenaltiestospecificincomeaccounts' | translate}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a class="btn btn-primary" ng-click="mapPenalty()">{{ 'label.button.add' | translate }}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.penalty' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.incomeaccount' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="penaltySpecificIncomeaccount in penaltySpecificIncomeaccounts">
|
||||
<td>
|
||||
<select id="penaltySpecificIncomeaccounts[{{$index}}].chargeId"
|
||||
ng-model="penaltySpecificIncomeaccount.chargeId"
|
||||
ng-options="charge.id as charge.name for charge in penaltySpecificIncomeaccount.penaltyOptions"
|
||||
value="{{charge.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<select id="penaltySpecificIncomeaccounts[{{$index}}].incomeAccountId"
|
||||
ng-model="penaltySpecificIncomeaccount.incomeAccountId"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in penaltySpecificIncomeaccount.incomeAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td><i class="icon-remove" ng-click="deletePenalty($index)"></i></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="offset6 paddedtop">
|
||||
<a id="cancel" type="reset" class="btn" ng-click="cancel()">{{'label.button.cancel' | translate}}</a>
|
||||
<button id="save" type="submit" class="btn btn-primary">{{'label.button.save' | translate}}</button>
|
||||
</div>
|
||||
</form>
|
||||
714
app/views/products/editfixeddepositproduct.html
Normal file
714
app/views/products/editfixeddepositproduct.html
Normal file
@ -0,0 +1,714 @@
|
||||
<div ng-controller="EditFixedDepositProductController">
|
||||
<div>
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/products">{{'label.anchor.products' | translate}}</a> <span class="divider">/</span></li>
|
||||
<li><a href="#/fixeddepositproducts">{{'label.anchor.fixeddepositproducts' | translate}}</a> <span
|
||||
class="divider">/</span></li>
|
||||
<li><a href="#/viewfixeddepositproduct/{{product.id}}">{{product.name}}</a> <span class="divider">/</span></li>
|
||||
<li class="active">{{'label.anchor.editfixeddepositproduct' | translate}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<form name="createfixeddepositproductform" novalidate="" class="well" rc-submit="submit()">
|
||||
<api-validate></api-validate>
|
||||
<div class="control-group">
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.details' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.productname' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="name" ng-autofocus="true" name="name" type="text" ng-model="formData.name"
|
||||
required late-validate/>
|
||||
<form-validate valattributeform="createfixeddepositproductform" valattribute="name"/>
|
||||
</td>
|
||||
<td width="40%">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.product.shortname' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input type="text" id="shortName" name="shortName" ng-model="formData.shortName"
|
||||
maxlength="4" required late-validate/>
|
||||
<form-validate valattributeform="createfixeddepositproductform" valattribute="shortName"/>
|
||||
</td>
|
||||
<td width="40%">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.description' | translate }}<span
|
||||
class="required">*</span></label>
|
||||
<textarea rows="2" id="description" name="description" ng-model="formData.description"
|
||||
required late-validate/></textarea>
|
||||
<form-validate valattributeform="createfixeddepositproductform" valattribute="description"/>
|
||||
</td>
|
||||
<td width="40%">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<table width="100%">
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.terms' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.currency' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="currencyCode" ng-model="formData.currencyCode"
|
||||
ng-options="currency.code as currency.name for currency in product.currencyOptions"
|
||||
value="{{currency.code}}">
|
||||
</td>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.decimalplaces' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="digitsAfterDecimal" type="text" name="decimalplace" class="input-small"
|
||||
ng-model="formData.digitsAfterDecimal" required late-validate/>
|
||||
<form-validate valattributeform="createfixeddepositproductform" valattribute="decimalplace"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.multiplesof' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="inMultiplesOf" type="text" name="multiplesof" ng-model="formData.inMultiplesOf" required
|
||||
late-validate/>
|
||||
<form-validate valattributeform="createfixeddepositproductform" valattribute="multiplesof"/>
|
||||
</td>
|
||||
<!--<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.nominalannualinterestrate' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="nominalAnnualInterestRate" name="nominalAnnualInterestRate" type="text"
|
||||
class="input-small" ng-model="formData.nominalAnnualInterestRate" required late-validate/>
|
||||
<form-validate valattributeform="createfixeddepositproductform"
|
||||
valattribute="nominalAnnualInterestRate"/>
|
||||
</td>-->
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.interestcompoundingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCompoundingPeriodType" ng-model="formData.interestCompoundingPeriodType"
|
||||
ng-options="type.id as type.value for type in product.interestCompoundingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="40%"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.interestpostingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestPostingPeriodType" ng-model="formData.interestPostingPeriodType"
|
||||
ng-options="type.id as type.value for type in product.interestPostingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="40%"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.interestcalculatedusing' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationType" ng-model="formData.interestCalculationType"
|
||||
ng-options="type.id as type.value for type in product.interestCalculationTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.daysinyears' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationDaysInYearType" ng-model="formData.interestCalculationDaysInYearType"
|
||||
ng-options="type.id as type.value for type in product.interestCalculationDaysInYearTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.settings' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<!--<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.minimumopeningbalance' | translate }} </label>
|
||||
<input id="minRequiredOpeningBalance" type="text" ng-model="formData.minRequiredOpeningBalance">
|
||||
</td>
|
||||
<td width="40%">
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td width="80%">
|
||||
<label class="control-label">{{ 'label.input.lockinPeriodFrequency' | translate }} </label>
|
||||
<input id="lockinPeriodFrequency" type="text" class="input-small"
|
||||
ng-model="formData.lockinPeriodFrequency">
|
||||
<select id="lockinPeriodFrequencyType" ng-model="formData.lockinPeriodFrequencyType"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.lockinPeriodFrequencyTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.minimumdepositterm' | translate }} </label>
|
||||
<input id="minimumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.minDepositTerm">
|
||||
<select id="minDepositTermTypeId" ng-model="formData.minDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.depositTermTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.inmultiplesof' | translate }} </label>
|
||||
<input id="inMultiplesOfDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.inMultiplesOfDepositTerm">
|
||||
<select id="inMultiplesOfDepositTermTypeId" ng-model="formData.inMultiplesOfDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.inMultiplesOfDepositTermTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="80%">
|
||||
<label class="control-label">{{ 'label.input.maximumdepositterm' | translate }} </label>
|
||||
<input id="maximumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.maxDepositTerm">
|
||||
<select id="maxDepositTermTypeId" ng-model="formData.maxDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.depositTermTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<label class="control-label">{{ 'label.prematureclosure' | translate }} </label>
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="interestFreePeriodApplicable" type="checkbox"
|
||||
ng-model="formData.interestFreePeriodApplicable">
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.interestfreeperiodapplicable' |
|
||||
translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="interestFreeFromPeriod" name="interestFreeFromPeriod" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.interestFreeFromPeriod"/> -
|
||||
<input id="interestFreeToPeriod" name="interestFreeToPeriod" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.interestFreeToPeriod"/>
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-small" id="interestFreePeriodFrequencyTypeId"
|
||||
ng-model="formData.interestFreePeriodFrequencyTypeId"
|
||||
ng-options="type.id as type.value for type in product.interestFreePeriodTypeOptions"
|
||||
value="{{formData.interestFreePeriodFrequencyTypeId}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="preClosurePenalApplicable" type="checkbox"
|
||||
ng-model="formData.preClosurePenalApplicable">
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.applypreclosurepenalinterest' |
|
||||
translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="preClosurePenalInterest" name="preClosurePenalInterest" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.preClosurePenalInterest"/> -
|
||||
On
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-medium" id="preClosurePenalInterestOnTypeId"
|
||||
ng-model="formData.preClosurePenalInterestOnTypeId"
|
||||
ng-options="type.id as type.value for type in product.preClosurePenalInterestOnTypeOptions"
|
||||
value="{{formData.preClosurePenalInterestOnTypeId}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.interestchart' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<!--<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.name' | translate
|
||||
}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="name" ng-autofocus="true" type="text" name="name" ng-model="chart.name"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.description' |
|
||||
translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="chdescription" ng-autofocus="true" type="text" name="chdescription"
|
||||
ng-model="chart.description"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.from' |
|
||||
translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="fromDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="fromDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.to' | translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="endDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="endDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table class="table table-bordered" width="100%">
|
||||
<tr class="graybg">
|
||||
<td>{{'label.heading.interestratedetails.period.type' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.period.from.to' | translate}}</td>
|
||||
<!--<td>{{'label.heading.interestratedetails.amount.range' | translate}}</td>-->
|
||||
<td>{{'label.heading.interestratedetails.interest' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.description' | translate}}</td>
|
||||
<td>
|
||||
<div class="controls" ng-show="chart.chartSlabs.length < 1">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-repeat="chartSlab in chart.chartSlabs">
|
||||
<td>
|
||||
<select class="input-small" id="periodType" ng-model="chartSlab.periodType.id"
|
||||
ng-options="type.id as type.value for type in chart.periodTypes"
|
||||
value="{{chartSlab.periodType.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input id="fromPeriod" name="fromPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.fromPeriod"/> -
|
||||
<input id="toPeriod" name="toPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.toPeriod"/>
|
||||
</td>
|
||||
<!--<td>
|
||||
<input id="amountRangeFrom" name="amountRangeFrom" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeFrom"/> -
|
||||
<input id="amountRangeTo" name="amountRangeTo" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeTo"/>
|
||||
</td>-->
|
||||
<td><input id="annualInterestRate" name="annualInterestRate" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="chartSlab.annualInterestRate"/></td>
|
||||
<td><input id="description" name="description" type="text"
|
||||
ng-model="chartSlab.description"/></td>
|
||||
<td>
|
||||
<a ng-click="removeRow($index)"><i class="icon-minus-sign icon-white"></i>{{'label.remove.row'
|
||||
| translate}}</a>
|
||||
|
||||
<div class="controls" ng-show="$last">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label"><h4>{{ 'label.heading.charges' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult">
|
||||
<form>
|
||||
<select ng-model="chargeId" ng-options="charge.id as charge.name for charge in product.chargeOptions"
|
||||
value="{{charge.id}}">
|
||||
<option style="display:none" value="">{{'label.selectcharge' | translate}}</option>
|
||||
</select>
|
||||
<a class="btn btn-primary" ng-click="chargeSelected(chargeId)">{{ 'label.button.add' | translate }}</a>
|
||||
</form>
|
||||
<table class="table" width="100%">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.name' | translate}}</th>
|
||||
<th>{{'label.heading.type' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.amount' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.collectedon' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="charge in charges">
|
||||
<td>{{charge.name}},{{charge.currency.displaySymbol}}</td>
|
||||
<td>{{charge.chargeCalculationType.value}}</td>
|
||||
<td></td>
|
||||
<td>{{charge.amount}}</td>
|
||||
<td></td>
|
||||
<td>{{charge.chargeTimeType.value}}</td>
|
||||
<td></td>
|
||||
<td><a href="" ng-click="deleteCharge($index)"><i class="icon-remove icon-white"></i></a></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="span2"></tr>
|
||||
|
||||
<tr class="control-group">
|
||||
<td width="11%"></td>
|
||||
<td width="80%">
|
||||
<table>
|
||||
<tr class="span2"></tr>
|
||||
<tr>
|
||||
<td width="30%"></td>
|
||||
<td>
|
||||
<input type="radio" ng-model="formData.accountingRule" value="1">{{'label.input.none' |
|
||||
translate}}<br/>
|
||||
<td>
|
||||
<td>
|
||||
<input type="radio" ng-model="formData.accountingRule" value="2">{{'label.input.cash' |
|
||||
translate}}<br/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-show="formData.accountingRule==2" class="control-group">
|
||||
<td>
|
||||
<label class="control-label"><h4>{{ 'label.heading.accounting' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult">
|
||||
<table width="50%">
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.assets" | translate}}</h4></td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.savingreference' | translate }} </label>
|
||||
<select id="savingsReferenceAccountId" ng-model="formData.savingsReferenceAccountId"
|
||||
chosen="assetAccountOptions"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in assetAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<table width="50%">
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.liabilities" | translate}}</h4></td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.savingcontrol' | translate }} </label>
|
||||
<select id="savingsControlAccountId" ng-model="formData.savingsControlAccountId"
|
||||
chosen="liabilityAccountOptions"
|
||||
ng-options="liabilityAccount.id as liabilityAccount.name for liabilityAccount in liabilityAccountOptions"
|
||||
value="{{liabilityAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.savingstransfersinsuspenpense' | translate }} </label>
|
||||
<select id="transfersInSuspenseAccountId" ng-model="formData.transfersInSuspenseAccountId"
|
||||
chosen="liabilityAccountOptions"
|
||||
ng-options="liabilityAccount.id as liabilityAccount.name for liabilityAccount in liabilityAccountOptions"
|
||||
value="{{liabilityAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.expenses" | translate}}</h4></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table width="50%">
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.interestonsavings' | translate }} </label>
|
||||
<select id="interestOnSavingsAccountId" ng-model="formData.interestOnSavingsAccountId"
|
||||
chosen="expenseAccountOptions"
|
||||
ng-options="expenseAccount.id as expenseAccount.name for expenseAccount in expenseAccountOptions"
|
||||
value="{{expenseAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.income" | translate}}</h4></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table width="50%">
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.incomefromfees' | translate }} </label>
|
||||
<select id="incomeFromFeeAccountId" ng-model="formData.incomeFromFeeAccountId" chosen="incomeAccountOptions"
|
||||
ng-options="incomeAccount.id as incomeAccount.name for incomeAccount in incomeAccountOptions"
|
||||
value="{{incomeAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.incomefrompenalties' | translate }} </label>
|
||||
<select id="incomeFromPenaltyAccountId" ng-model="formData.incomeFromPenaltyAccountId"
|
||||
chosen="incomeAccountOptions"
|
||||
ng-options="incomeAccount.id as incomeAccount.name for incomeAccount in incomeAccountOptions"
|
||||
value="{{incomeAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
</table>
|
||||
<table>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<h4>{{'label.heading.advancedaccountingrules' | translate}}[<a ng-click="showOrHide(showOrHideValue)">{{showOrHideValue}}</a>]
|
||||
</h4></br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<table ng-show="showOrHideValue == 'hide'">
|
||||
<tr>
|
||||
<td>{{'label.heading.configurefundsourcesforpaymentchannels' | translate}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a class="btn btn-primary" ng-click="addConfigureFundSource()">{{ 'label.button.add' | translate
|
||||
}}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.paymenttype' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.fundsource' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="configureFundOption in configureFundOptions">
|
||||
<td>
|
||||
<select id="configureFundOptions[{{$index}}].paymentTypeId"
|
||||
ng-model="configureFundOption.paymentTypeId"
|
||||
ng-options="paymentType.id as paymentType.name for paymentType in configureFundOption.paymentTypeOptions"
|
||||
value="{{paymentType.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<select id="configureFundOptions[{{$index}}].fundSourceAccountId"
|
||||
ng-model="configureFundOption.fundSourceAccountId"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in configureFundOption.assetAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td><i class="icon-remove" ng-click="deleteFund($index)"></i></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.mapfeestoincomeaccounts' | translate}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a class="btn btn-primary" ng-click="mapFees()">{{ 'label.button.add' | translate }}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.fees' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.incomeaccount' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="specificIncomeaccount in specificIncomeaccounts">
|
||||
<td>
|
||||
<select id="specificIncomeaccounts[{{$index}}].chargeId"
|
||||
ng-model="specificIncomeaccount.chargeId"
|
||||
ng-options="charge.id as charge.name for charge in specificIncomeaccount.chargeOptions"
|
||||
value="{{charge.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<select id="specificIncomeaccounts[{{$index}}].incomeAccountId"
|
||||
ng-model="specificIncomeaccount.incomeAccountId"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in specificIncomeaccount.incomeAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td><i class="icon-remove" ng-click="deleteFee($index)"></i></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.mappenaltiestospecificincomeaccounts' | translate}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a class="btn btn-primary" ng-click="mapPenalty()">{{ 'label.button.add' | translate }}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.penalty' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.incomeaccount' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="penaltySpecificIncomeaccount in penaltySpecificIncomeaccounts">
|
||||
<td>
|
||||
<select id="penaltySpecificIncomeaccounts[{{$index}}].chargeId"
|
||||
ng-model="penaltySpecificIncomeaccount.chargeId"
|
||||
ng-options="charge.id as charge.name for charge in penaltySpecificIncomeaccount.penaltyOptions"
|
||||
value="{{charge.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<select id="penaltySpecificIncomeaccounts[{{$index}}].incomeAccountId"
|
||||
ng-model="penaltySpecificIncomeaccount.incomeAccountId"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in penaltySpecificIncomeaccount.incomeAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td><i class="icon-remove" ng-click="deletePenalty($index)"></i></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="offset6 paddedtop">
|
||||
<button id="cancel" type="reset" class="btn btn-warning" ng-click="cancel()">{{'label.button.cancel' | translate}}
|
||||
</button>
|
||||
<button id="save" type="submit" class="btn btn-primary">{{'label.button.save' | translate}}</button>
|
||||
</div>
|
||||
<p>{{formData.interestFreePeriodFrequencyTypeId | json}}</p>
|
||||
</form>
|
||||
</div>
|
||||
141
app/views/products/editinterestratechart.html
Normal file
141
app/views/products/editinterestratechart.html
Normal file
@ -0,0 +1,141 @@
|
||||
<div ng-controller="EditInterestRateChartController">
|
||||
<div id="viewlptop">
|
||||
<div class="paddedbottom10">
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/products">{{'label.anchor.products' | translate}}</a> <span class="divider">/</span></li>
|
||||
<li><a href="{{'#/' + productsLink }}">{{'label.anchor.' + productsLink | translate}}</a> <span
|
||||
class="divider">/</span></li>
|
||||
<li><a href="#/{{viewProductLink}}/{{productId}}">{{productName}}</a> <span class="divider">/</span>
|
||||
</li>
|
||||
<li><a href="#/interestratecharts/{{productId}}/{{productName}}/{{productType}}">{{'label.anchor.interestratecharts'
|
||||
| translate}}</a> <span class="divider">/</span></li>
|
||||
<li class="active">{{chart.name}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form name="createinterestratechartform" novalidate="" class="" rc-submit="submitInterestRateChartForm()">
|
||||
<api-validate></api-validate>
|
||||
<div class="row-fluid">
|
||||
<legend>{{'label.heading.editinterestratechart' | translate}}</legend>
|
||||
<table>
|
||||
<!--<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.name' | translate
|
||||
}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="name" ng-autofocus="true" type="text" name="name" ng-model="chart.name"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.description' |
|
||||
translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="chdescription" ng-autofocus="true" type="text" name="chdescription"
|
||||
ng-model="chart.description"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.from' |
|
||||
translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="fromDate" sort type="text" datepicker-pop="dd MMMM yyyy"
|
||||
ng-model="fromDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.to' |
|
||||
translate }}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="endDate" sort type="text" datepicker-pop="dd MMMM yyyy"
|
||||
ng-model="endDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table class="table table-bordered" width="100%">
|
||||
<tr class="graybg">
|
||||
<td>{{'label.heading.interestratedetails.period.type' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.period.from.to' | translate}}</td>
|
||||
<!--<td>{{'label.heading.interestratedetails.amount.range' | translate}}</td>-->
|
||||
<td>{{'label.heading.interestratedetails.interest' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.description' | translate}}</td>
|
||||
<td>
|
||||
<div class="controls" ng-show="chart.chartSlabs.length < 1">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-repeat="chartSlab in chart.chartSlabs">
|
||||
<td>
|
||||
<select class="input-small" id="periodType" ng-model="chartSlab.periodType.id"
|
||||
ng-options="type.id as type.value for type in chart.periodTypes"
|
||||
value="{{chartSlab.periodType.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input id="fromPeriod" name="fromPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.fromPeriod" /> -
|
||||
<input id="toPeriod" name="toPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.toPeriod"/>
|
||||
</td>
|
||||
<!--<td>
|
||||
<input id="amountRangeFrom" name="amountRangeFrom" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeFrom"/> -
|
||||
<input id="amountRangeTo" name="amountRangeTo" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeTo"/>
|
||||
</td>-->
|
||||
<td><input id="annualInterestRate" name="annualInterestRate" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="chartSlab.annualInterestRate"/></td>
|
||||
<td><input id="description" name="description" type="text"
|
||||
ng-model="chartSlab.description"/></td>
|
||||
<td>
|
||||
<a ng-click="removeRow($index)"><i class="icon-minus-sign icon-white"></i>{{'label.remove.row'
|
||||
| translate}}</a>
|
||||
|
||||
<div class="controls" ng-show="$last">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="offset4 paddedtop">
|
||||
<button id="cancel" type="reset" class="btn btn-warning" ng-click="cancel()">{{'label.button.cancel' |
|
||||
translate}}
|
||||
</button>
|
||||
<button id="save" type="submit" class="btn btn-primary">{{'label.button.save' | translate}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
737
app/views/products/editrecurringdepositproduct.html
Normal file
737
app/views/products/editrecurringdepositproduct.html
Normal file
@ -0,0 +1,737 @@
|
||||
<div ng-controller="EditRecurringDepositProductController">
|
||||
<div>
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/products">{{'label.anchor.products' | translate}}</a> <span class="divider">/</span></li>
|
||||
<li><a href="#/recurringdepositproducts">{{'label.anchor.recurringdepositproducts' | translate}}</a> <span
|
||||
class="divider">/</span></li>
|
||||
<li><a href="#/viewrecurringdepositproduct/{{product.id}}">{{product.name}}</a> <span class="divider">/</span>
|
||||
</li>
|
||||
<li class="active">{{'label.anchor.editrecurringdepositproduct' | translate}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<form name="createrecurringdepositproductform" novalidate="" class="well" rc-submit="submit()">
|
||||
<api-validate></api-validate>
|
||||
<div class="control-group">
|
||||
<table width="100%">
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.details' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.productname' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="name" ng-autofocus="true" name="name" type="text" ng-model="formData.name"
|
||||
required late-validate/>
|
||||
<form-validate valattributeform="createrecurringdepositproductform" valattribute="name"/>
|
||||
</td>
|
||||
<td width="40%">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.product.shortname' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input type="text" id="shortName" name="shortName" ng-model="formData.shortName"
|
||||
maxlength="4" required late-validate/>
|
||||
<form-validate valattributeform="createrecurringdepositproductform"
|
||||
valattribute="shortName"/>
|
||||
</td>
|
||||
<td width="40%">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.description' | translate }}<span
|
||||
class="required">*</span></label>
|
||||
<textarea rows="2" id="description" name="description" ng-model="formData.description"
|
||||
required late-validate/></textarea>
|
||||
<form-validate valattributeform="createrecurringdepositproductform"
|
||||
valattribute="description"/>
|
||||
</td>
|
||||
<td width="40%">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<table width="100%">
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.terms' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.currency' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="currencyCode" ng-model="formData.currencyCode"
|
||||
ng-options="currency.code as currency.name for currency in product.currencyOptions"
|
||||
value="{{currency.code}}">
|
||||
</td>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.decimalplaces' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="digitsAfterDecimal" type="text" name="decimalplace" class="input-small"
|
||||
ng-model="formData.digitsAfterDecimal" required late-validate/>
|
||||
<form-validate valattributeform="createrecurringdepositproductform" valattribute="decimalplace"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.multiplesof' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="inMultiplesOf" type="text" name="multiplesof" ng-model="formData.inMultiplesOf" required
|
||||
late-validate/>
|
||||
<form-validate valattributeform="createrecurringdepositproductform" valattribute="multiplesof"/>
|
||||
</td>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.nominalannualinterestrate' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<input id="nominalAnnualInterestRate" name="nominalAnnualInterestRate" type="text"
|
||||
class="input-small" ng-model="formData.nominalAnnualInterestRate" required late-validate/>
|
||||
<form-validate valattributeform="createrecurringdepositproductform"
|
||||
valattribute="nominalAnnualInterestRate"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.interestcompoundingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCompoundingPeriodType" ng-model="formData.interestCompoundingPeriodType"
|
||||
ng-options="type.id as type.value for type in product.interestCompoundingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="40%"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.interestpostingperiod' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestPostingPeriodType" ng-model="formData.interestPostingPeriodType"
|
||||
ng-options="type.id as type.value for type in product.interestPostingPeriodTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="40%"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.interestcalculatedusing' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationType" ng-model="formData.interestCalculationType"
|
||||
ng-options="type.id as type.value for type in product.interestCalculationTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.daysinyears' | translate }} <span
|
||||
class="required">*</span></label>
|
||||
<select id="interestCalculationDaysInYearType" ng-model="formData.interestCalculationDaysInYearType"
|
||||
ng-options="type.id as type.value for type in product.interestCalculationDaysInYearTypeOptions"
|
||||
value="{{type.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.settings' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.select.recurringdeposittype' | translate }} </label>
|
||||
<select id="recurringDepositTypeId" ng-model="formData.recurringDepositTypeId"
|
||||
class="input-medium"
|
||||
ng-options="type.id as type.value for type in product.recurringDepositTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td width="40%">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%">
|
||||
<label class="control-label">{{ 'label.input.recurringdepositfrequency' | translate }} </label>
|
||||
<input id="recurringDepositFrequency" class="input-small" type="text"
|
||||
ng-model="formData.recurringDepositFrequency">
|
||||
|
||||
<select id="recurringDepositFrequencyTypeId" ng-model="formData.recurringDepositFrequencyTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.recurringDepositFrequencyTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="80%">
|
||||
<label class="control-label">{{ 'label.input.lockinPeriodFrequency' | translate }} </label>
|
||||
<input id="lockinPeriodFrequency" type="text" class="input-small"
|
||||
ng-model="formData.lockinPeriodFrequency">
|
||||
<select id="lockinPeriodFrequencyType" ng-model="formData.lockinPeriodFrequencyType"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.lockinPeriodFrequencyTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.minimumdepositterm' | translate }} </label>
|
||||
<input id="minimumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.minDepositTerm">
|
||||
<select id="minDepositTermTypeId" ng-model="formData.minDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.depositTermTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.inmultiplesof' | translate }} </label>
|
||||
<input id="inMultiplesOfDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.inMultiplesOfDepositTerm">
|
||||
<select id="inMultiplesOfDepositTermTypeId" ng-model="formData.inMultiplesOfDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.inMultiplesOfDepositTermTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="80%">
|
||||
<label class="control-label">{{ 'label.input.maximumdepositterm' | translate }} </label>
|
||||
<input id="maximumDepositTerm" type="text" class="input-small"
|
||||
ng-model="formData.maxDepositTerm">
|
||||
<select id="maxDepositTermTypeId" ng-model="formData.maxDepositTermTypeId"
|
||||
class="input-small"
|
||||
ng-options="type.id as type.value for type in product.depositTermTypeOptions"
|
||||
value="{{type.id}}">
|
||||
<option style="display:none" value="">{{'label.selectone' | translate}}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<label class="control-label">{{ 'label.prematureclosure' | translate }} </label>
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="interestFreePeriodApplicable" type="checkbox"
|
||||
ng-model="formData.interestFreePeriodApplicable">
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.interestfreeperiodapplicable' |
|
||||
translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="interestFreeFromPeriod" name="interestFreeFromPeriod" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.interestFreeFromPeriod"/> -
|
||||
<input id="interestFreeToPeriod" name="interestFreeToPeriod" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.interestFreeToPeriod"/>
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-small" id="interestFreePeriodFrequencyTypeId"
|
||||
ng-model="formData.interestFreePeriodFrequencyTypeId"
|
||||
ng-options="type.id as type.value for type in product.interestFreePeriodTypeOptions"
|
||||
value="{{formData.interestFreePeriodFrequencyTypeId}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="preClosurePenalApplicable" type="checkbox"
|
||||
ng-model="formData.preClosurePenalApplicable">
|
||||
</td>
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.checkbox.applypreclosurepenalinterest' |
|
||||
translate }} </label>
|
||||
</td>
|
||||
<td>
|
||||
<input id="preClosurePenalInterest" name="preClosurePenalInterest" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="formData.preClosurePenalInterest"/> -
|
||||
On
|
||||
</td>
|
||||
<td>
|
||||
<select class="input-medium" id="preClosurePenalInterestOnTypeId"
|
||||
ng-model="formData.preClosurePenalInterestOnTypeId"
|
||||
ng-options="type.id as type.value for type in product.preClosurePenalInterestOnTypeOptions"
|
||||
value="{{formData.preClosurePenalInterestOnTypeId}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
<tr class="control-group">
|
||||
<td width="11%">
|
||||
<label class="control-label"><h4>{{ 'label.heading.interestchart' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult" width="80%">
|
||||
<table>
|
||||
<!--<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.name' | translate
|
||||
}}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="name" ng-autofocus="true" type="text" name="name" ng-model="chart.name"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.description' |
|
||||
translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="chdescription" ng-autofocus="true" type="text" name="chdescription"
|
||||
ng-model="chart.description"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.from' |
|
||||
translate }}<span
|
||||
class="required">*</span></label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="fromDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="fromDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">{{ 'label.input.interestratechart.valid.to' | translate
|
||||
}}</label>
|
||||
|
||||
<div class="controls">
|
||||
<input id="endDate" sort type="text" datepicker-pop="dd MMMM yyyy" ng-model="endDate.date"
|
||||
is-open="opened" min="minDate" max="restrictDate"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table class="table table-bordered" width="100%">
|
||||
<tr class="graybg">
|
||||
<td>{{'label.heading.interestratedetails.period.type' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.period.from.to' | translate}}</td>
|
||||
<!--<td>{{'label.heading.interestratedetails.amount.range' | translate}}</td>-->
|
||||
<td>{{'label.heading.interestratedetails.interest' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.description' | translate}}</td>
|
||||
<td>
|
||||
<div class="controls" ng-show="chart.chartSlabs.length < 1">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-repeat="chartSlab in chart.chartSlabs">
|
||||
<td>
|
||||
<select class="input-small" id="periodType" ng-model="chartSlab.periodType.id"
|
||||
ng-options="type.id as type.value for type in chart.periodTypes"
|
||||
value="{{chartSlab.periodType.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input id="fromPeriod" name="fromPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.fromPeriod"/> -
|
||||
<input id="toPeriod" name="toPeriod" type="text" class="input-mini-medium"
|
||||
ng-model="chartSlab.toPeriod"/>
|
||||
</td>
|
||||
<!--<td>
|
||||
<input id="amountRangeFrom" name="amountRangeFrom" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeFrom"/> -
|
||||
<input id="amountRangeTo" name="amountRangeTo" type="text" class="input-mini"
|
||||
ng-model="chartSlab.amountRangeTo"/>
|
||||
</td>-->
|
||||
<td><input id="annualInterestRate" name="annualInterestRate" type="text"
|
||||
class="input-mini-medium"
|
||||
ng-model="chartSlab.annualInterestRate"/></td>
|
||||
<td><input id="description" name="description" type="text"
|
||||
ng-model="chartSlab.description"/></td>
|
||||
<td>
|
||||
<a ng-click="removeRow($index)"><i class="icon-minus-sign icon-white"></i>{{'label.remove.row'
|
||||
| translate}}</a>
|
||||
|
||||
<div class="controls" ng-show="$last">
|
||||
<a ng-click="addNewRow()"><i class="icon-plus-sign icon-white"></i>{{'label.add.row'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label"><h4>{{ 'label.heading.charges' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult">
|
||||
<form>
|
||||
<select ng-model="chargeId" ng-options="charge.id as charge.name for charge in product.chargeOptions"
|
||||
value="{{charge.id}}">
|
||||
<option style="display:none" value="">{{'label.selectcharge' | translate}}</option>
|
||||
</select>
|
||||
<a class="btn btn-primary" ng-click="chargeSelected(chargeId)">{{ 'label.button.add' | translate }}</a>
|
||||
</form>
|
||||
<table class="table" width="100%">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.name' | translate}}</th>
|
||||
<th>{{'label.heading.type' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.amount' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.collectedon' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="charge in charges">
|
||||
<td>{{charge.name}},{{charge.currency.displaySymbol}}</td>
|
||||
<td>{{charge.chargeCalculationType.value}}</td>
|
||||
<td></td>
|
||||
<td>{{charge.amount}}</td>
|
||||
<td></td>
|
||||
<td>{{charge.chargeTimeType.value}}</td>
|
||||
<td></td>
|
||||
<td><a href="" ng-click="deleteCharge($index)"><i class="icon-remove icon-white"></i></a></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="span2"></tr>
|
||||
|
||||
<tr class="control-group">
|
||||
<td width="11%"></td>
|
||||
<td width="80%">
|
||||
<table>
|
||||
<tr class="span2"></tr>
|
||||
<tr>
|
||||
<td width="30%"></td>
|
||||
<td>
|
||||
<input type="radio" ng-model="formData.accountingRule" value="1">{{'label.input.none' |
|
||||
translate}}<br/>
|
||||
<td>
|
||||
<td>
|
||||
<input type="radio" ng-model="formData.accountingRule" value="2">{{'label.input.cash' |
|
||||
translate}}<br/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-show="formData.accountingRule==2" class="control-group">
|
||||
<td>
|
||||
<label class="control-label"><h4>{{ 'label.heading.accounting' | translate }}</h4></label>
|
||||
</td>
|
||||
<td class="blockquoteresult">
|
||||
<table width="50%">
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.assets" | translate}}</h4></td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.savingreference' | translate }} </label>
|
||||
<select id="savingsReferenceAccountId" ng-model="formData.savingsReferenceAccountId"
|
||||
chosen="assetAccountOptions"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in assetAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<table width="50%">
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.liabilities" | translate}}</h4></td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.savingcontrol' | translate }} </label>
|
||||
<select id="savingsControlAccountId" ng-model="formData.savingsControlAccountId"
|
||||
chosen="liabilityAccountOptions"
|
||||
ng-options="liabilityAccount.id as liabilityAccount.name for liabilityAccount in liabilityAccountOptions"
|
||||
value="{{liabilityAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.savingstransfersinsuspenpense' | translate }} </label>
|
||||
<select id="transfersInSuspenseAccountId" ng-model="formData.transfersInSuspenseAccountId"
|
||||
chosen="liabilityAccountOptions"
|
||||
ng-options="liabilityAccount.id as liabilityAccount.name for liabilityAccount in liabilityAccountOptions"
|
||||
value="{{liabilityAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.expenses" | translate}}</h4></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table width="50%">
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.interestonsavings' | translate }} </label>
|
||||
<select id="interestOnSavingsAccountId" ng-model="formData.interestOnSavingsAccountId"
|
||||
chosen="expenseAccountOptions"
|
||||
ng-options="expenseAccount.id as expenseAccount.name for expenseAccount in expenseAccountOptions"
|
||||
value="{{expenseAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<hr class="marginbottom">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h4>{{"label.heading.income" | translate}}</h4></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table width="50%">
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.incomefromfees' | translate }} </label>
|
||||
<select id="incomeFromFeeAccountId" ng-model="formData.incomeFromFeeAccountId" chosen="incomeAccountOptions"
|
||||
ng-options="incomeAccount.id as incomeAccount.name for incomeAccount in incomeAccountOptions"
|
||||
value="{{incomeAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<label class="control-label">{{ 'label.input.incomefrompenalties' | translate }} </label>
|
||||
<select id="incomeFromPenaltyAccountId" ng-model="formData.incomeFromPenaltyAccountId"
|
||||
chosen="incomeAccountOptions"
|
||||
ng-options="incomeAccount.id as incomeAccount.name for incomeAccount in incomeAccountOptions"
|
||||
value="{{incomeAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="span2"></tr>
|
||||
</table>
|
||||
<table>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<h4>{{'label.heading.advancedaccountingrules' | translate}}[<a ng-click="showOrHide(showOrHideValue)">{{showOrHideValue}}</a>]
|
||||
</h4></br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="control-group">
|
||||
<td>
|
||||
<table ng-show="showOrHideValue == 'hide'">
|
||||
<tr>
|
||||
<td>{{'label.heading.configurefundsourcesforpaymentchannels' | translate}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a class="btn btn-primary" ng-click="addConfigureFundSource()">{{ 'label.button.add' | translate
|
||||
}}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.paymenttype' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.fundsource' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="configureFundOption in configureFundOptions">
|
||||
<td>
|
||||
<select id="configureFundOptions[{{$index}}].paymentTypeId"
|
||||
ng-model="configureFundOption.paymentTypeId"
|
||||
ng-options="paymentType.id as paymentType.name for paymentType in configureFundOption.paymentTypeOptions"
|
||||
value="{{paymentType.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<select id="configureFundOptions[{{$index}}].fundSourceAccountId"
|
||||
ng-model="configureFundOption.fundSourceAccountId"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in configureFundOption.assetAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td><i class="icon-remove" ng-click="deleteFund($index)"></i></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.mapfeestoincomeaccounts' | translate}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a class="btn btn-primary" ng-click="mapFees()">{{ 'label.button.add' | translate }}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.fees' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.incomeaccount' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="specificIncomeaccount in specificIncomeaccounts">
|
||||
<td>
|
||||
<select id="specificIncomeaccounts[{{$index}}].chargeId"
|
||||
ng-model="specificIncomeaccount.chargeId"
|
||||
ng-options="charge.id as charge.name for charge in specificIncomeaccount.chargeOptions"
|
||||
value="{{charge.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<select id="specificIncomeaccounts[{{$index}}].incomeAccountId"
|
||||
ng-model="specificIncomeaccount.incomeAccountId"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in specificIncomeaccount.incomeAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td><i class="icon-remove" ng-click="deleteFee($index)"></i></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.mappenaltiestospecificincomeaccounts' | translate}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a class="btn btn-primary" ng-click="mapPenalty()">{{ 'label.button.add' | translate }}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="table">
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.penalty' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.incomeaccount' | translate}}</th>
|
||||
<th></th>
|
||||
<th>{{'label.heading.actions' | translate}}</th>
|
||||
</tr>
|
||||
<tr ng-repeat="penaltySpecificIncomeaccount in penaltySpecificIncomeaccounts">
|
||||
<td>
|
||||
<select id="penaltySpecificIncomeaccounts[{{$index}}].chargeId"
|
||||
ng-model="penaltySpecificIncomeaccount.chargeId"
|
||||
ng-options="charge.id as charge.name for charge in penaltySpecificIncomeaccount.penaltyOptions"
|
||||
value="{{charge.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<select id="penaltySpecificIncomeaccounts[{{$index}}].incomeAccountId"
|
||||
ng-model="penaltySpecificIncomeaccount.incomeAccountId"
|
||||
ng-options="assetAccount.id as assetAccount.name for assetAccount in penaltySpecificIncomeaccount.incomeAccountOptions"
|
||||
value="{{assetAccount.id}}">
|
||||
</select>
|
||||
</td>
|
||||
<td></td>
|
||||
<td><i class="icon-remove" ng-click="deletePenalty($index)"></i></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="offset6 paddedtop">
|
||||
<button id="cancel" type="reset" class="btn btn-warning" ng-click="cancel()">{{'label.button.cancel' | translate}}
|
||||
</button>
|
||||
<button id="save" type="submit" class="btn btn-primary">{{'label.button.save' | translate}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
29
app/views/products/fixeddepositproducts.html
Normal file
29
app/views/products/fixeddepositproducts.html
Normal file
@ -0,0 +1,29 @@
|
||||
<div>
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/products">{{'label.anchor.products' | translate}}</a> <span class="divider">/</span></li>
|
||||
<li class="active">{{'label.anchor.fixeddepositproducts' | translate}}</li>
|
||||
</ul>
|
||||
<div class="pull-right">
|
||||
<a href="#/createfixeddepositproduct" class="btn btn-primary"><i class="icon-plus icon-white"></i>{{'label.button.createfixeddepositproduct'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row-fluid" ng-controller="FixedDepositProductController">
|
||||
<input ng-autofocus="true" ng-model="filterText" type="text" class="span marginbottom0px"
|
||||
placeholder="{{'label.input.filterbynameshortname' | translate}}">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.name' | translate}}</th>
|
||||
<th>{{'label.heading.shortname' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="pointer-main" ng-repeat="product in depositproducts | orderBy:'name':reverse | filter:filterText">
|
||||
<td class="pointer" data-ng-click="routeTo(product.id)">{{product.name}}</td>
|
||||
<td class="pointer" data-ng-click="routeTo(product.id)">{{product.shortName}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
49
app/views/products/interestratecharts.html
Normal file
49
app/views/products/interestratecharts.html
Normal file
@ -0,0 +1,49 @@
|
||||
<div ng-controller="InterestRateChartController">
|
||||
<div>
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/products">{{'label.anchor.products' | translate}}</a> <span class="divider">/</span></li>
|
||||
<li><a href="{{'#/' + productsLink }}">{{'label.anchor.' + productsLink | translate}}</a> <span
|
||||
class="divider">/</span></li>
|
||||
<li><a href="#/{{viewProductLink}}/{{productId}}">{{productName}}</a> <span class="divider">/</span></li>
|
||||
<li class="active">{{'label.anchor.interestratecharts' | translate}}</li>
|
||||
</ul>
|
||||
<div class="pull-right">
|
||||
<a href="#/createinterestratechart/{{productId}}/{{productName}}/{{productType}}" class="btn btn-primary"><i
|
||||
class="icon-plus icon-white"></i>{{'label.button.createinterestratechart'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row-fluid">
|
||||
<legend>{{'label.heading.interestratecharts' | translate}}</legend>
|
||||
|
||||
<div ng-repeat="chart in charts | orderBy:'fromDate':!reverse">
|
||||
<span>{{'label.heading.interestratechart.valid.from' | translate}} : {{chart.fromDate | DateFormat}}</span>
|
||||
<span>{{'label.heading.interestratechart.valid.to' | translate}} : {{chart.endDate | DateFormat}}
|
||||
</span>
|
||||
|
||||
<div class="pull-right">
|
||||
<div class="btn-group">
|
||||
<a href="#/editinterestratecharts/{{chart.id}}/{{productId}}/{{productName}}/{{productType}}"
|
||||
class="btn btn-primary"><i class="icon-edit icon-white"></i>{{'label.button.edit' |
|
||||
translate}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<table width="98%" class="table table-bordered">
|
||||
<tr class="bottomborder graybg">
|
||||
<td>{{'label.heading.interestratedetails.period.from.to' | translate}}</td>
|
||||
<!--<td>{{'label.heading.interestratedetails.amount.range' | translate}}</td>-->
|
||||
<td>{{'label.heading.interestratedetails.interest' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.description' | translate}}</td>
|
||||
</tr>
|
||||
<tr ng-repeat="chartSlab in chart.chartSlabs">
|
||||
<td>{{chartSlab.fromPeriod}} - {{chartSlab.toPeriod}} {{chartSlab.periodType.value}}</td>
|
||||
<!--<td>{{chartSlab.amountRangeFrom}} - {{chartSlab.amountRangeTo}}</td>-->
|
||||
<td>{{chartSlab.annualInterestRate}}</td>
|
||||
<td>{{chartSlab.description}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -7,6 +7,12 @@
|
||||
|
||||
<p class="list-group-item-text">{{'label.addnewloanproductor' | translate}}</p>
|
||||
</a>
|
||||
<a class="list-group-item" href="#/savingproducts" has-permission='READ_SAVINGSPRODUCT'>
|
||||
<h4 class="list-group-item-heading"><i class="icon-large icon-briefcase"></i> {{
|
||||
'label.anchor.savingproducts' | translate }}</h4>
|
||||
|
||||
<p class="list-group-item-text">{{'label.addnewsavingproductor' | translate}}</p>
|
||||
</a>
|
||||
<a class="list-group-item" href="#/charges" has-permission='READ_CHARGE'>
|
||||
<h4 class="list-group-item-heading"><i class="icon-calendar icon-puzzle-piece"></i> {{
|
||||
'label.anchor.charges' | translate }}</h4>
|
||||
@ -17,18 +23,24 @@
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6">
|
||||
<div class="list-group">
|
||||
<a class="list-group-item" href="#/savingproducts" has-permission='READ_SAVINGSPRODUCT'>
|
||||
<h4 class="list-group-item-heading"><i class="icon-large icon-briefcase"></i> {{
|
||||
'label.anchor.savingproducts' | translate }}</h4>
|
||||
|
||||
<p class="list-group-item-text">{{'label.addnewsavingproductor' | translate}}</p>
|
||||
</a>
|
||||
<a class="list-group-item" href="#/productmix" has-permission='READ_PRODUCTMIX'>
|
||||
<h4 class="list-group-item-heading"><i class="icon-large icon-random"></i> {{
|
||||
'label.anchor.productsmix' | translate }}</h4>
|
||||
|
||||
<p class="list-group-item-text">{{'label.definesrulesfortakingmul' | translate}}</p>
|
||||
</a>
|
||||
<a class="list-group-item" href="#/fixeddepositproducts" has-permission='READ_SAVINGSPRODUCT'>
|
||||
<h4 class="list-group-item-heading"><i class="icon-calendar icon-puzzle-piece"></i> {{
|
||||
'label.anchor.fixeddepositproducts' | translate }}</h4>
|
||||
|
||||
<p class="list-group-item-text">{{'label.fixeddepositproduct.def' | translate}}</p>
|
||||
</a>
|
||||
<a class="list-group-item" href="#/recurringdepositproducts" has-permission='READ_SAVINGSPRODUCT'>
|
||||
<h4 class="list-group-item-heading"><i class="icon-calendar icon-puzzle-piece"></i> {{
|
||||
'label.anchor.recurringdepositproducts' | translate }}</h4>
|
||||
|
||||
<p class="list-group-item-text">{{'label.recurringdepositproduct.def' | translate}}</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
29
app/views/products/recurringdepositproducts.html
Normal file
29
app/views/products/recurringdepositproducts.html
Normal file
@ -0,0 +1,29 @@
|
||||
<div>
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/products">{{'label.anchor.products' | translate}}</a> <span class="divider">/</span></li>
|
||||
<li class="active">{{'label.anchor.recurringdepositproducts' | translate}}</li>
|
||||
</ul>
|
||||
<div class="pull-right">
|
||||
<a href="#/createrecurringdepositproduct" class="btn btn-primary"><i class="icon-plus icon-white"></i>{{'label.button.createrecurringdepositproduct'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row-fluid" ng-controller="RecurringDepositProductController">
|
||||
<input ng-autofocus="true" ng-model="filterText" type="text" class="span marginbottom0px"
|
||||
placeholder="{{'label.input.filterbynameshortname' | translate}}">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr class="graybg">
|
||||
<th>{{'label.heading.name' | translate}}</th>
|
||||
<th>{{'label.heading.shortname' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="pointer-main" ng-repeat="product in depositproducts | orderBy:'name':reverse | filter:filterText">
|
||||
<td class="pointer" data-ng-click="routeTo(product.id)">{{product.name}}</td>
|
||||
<td class="pointer" data-ng-click="routeTo(product.id)">{{product.shortName}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
264
app/views/products/viewfixeddepositproduct.html
Normal file
264
app/views/products/viewfixeddepositproduct.html
Normal file
@ -0,0 +1,264 @@
|
||||
<div class="row paddedleft" ng-controller="ViewFixedDepositProductController">
|
||||
<div id="viewlptop">
|
||||
<div class="paddedbottom10">
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/products">{{'label.anchor.products' | translate}}</a> <span class="divider">/</span></li>
|
||||
<li><a href="#/fixeddepositproducts">{{'label.anchor.fixeddepositproducts' | translate}}</a> <span
|
||||
class="divider">/</span></li>
|
||||
<li class="active">{{depositproduct.name}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<div class="btn-group">
|
||||
<a href="#/editfixeddepositproduct/{{depositproduct.id}}" class="btn btn-primary"><i
|
||||
class="icon-edit icon-white"></i>{{'label.button.edit' | translate}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<legend>{{depositproduct.name}}</legend>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<a name="test" class="old-syle-anchor"> </a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="bottomborder">
|
||||
<td colspan="4">
|
||||
<strong>{{'label.heading.details' | translate}}</strong>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="toppadding">
|
||||
<td>{{'label.heading.description' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.description}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.shortname' | translate}} :</td>
|
||||
<td colspan="3">{{depositproduct.shortName}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><br/></td>
|
||||
</tr>
|
||||
<tr class="bottomborder">
|
||||
<td colspan="4"><strong>{{'label.heading.items' | translate}}</strong></td>
|
||||
</tr>
|
||||
<tr class="toppadding">
|
||||
<td>{{'label.heading.currency' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.currency.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.decimalplaces' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.currency.decimalPlaces}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.currencyinmultiplesof' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.currency.inMultiplesOf}}</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td>{{'label.heading.nominalannualinterestrate' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.nominalAnnualInterestRate}}</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td>{{'label.heading.interestcompoundingperiod' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.interestCompoundingPeriodType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.interestpostingperiod' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.interestPostingPeriodType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.interestcalculatedusing' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.interestCalculationType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.daysinyears' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.interestCalculationDaysInYearType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><br/></td>
|
||||
</tr>
|
||||
<tr class="bottomborder">
|
||||
<td colspan="4"><strong>{{'label.heading.settings' | translate}}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.lockinPeriodFrequency' | translate}}</td>
|
||||
<td>{{depositproduct.lockinPeriodFrequency}} {{depositproduct.lockinPeriodFrequencyType.value}}</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.minimumdepositterm' | translate}}</td>
|
||||
<td>{{depositproduct.minDepositTerm}} {{depositproduct.minDepositTermType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.maximumdepositterm' | translate}}</td>
|
||||
<td>{{depositproduct.maxDepositTerm}} {{depositproduct.maxDepositTermType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.inmultiplesofdeposit' | translate}}</td>
|
||||
<td>{{depositproduct.inMultiplesOfDepositTerm}} - {{depositproduct.inMultiplesOfDepositTermType.value}}</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td>{{'label.heading.interestfreeperiodapplicable' | translate}}</td>
|
||||
<td>from {{depositproduct.interestFreeFromPeriod}} - {{depositproduct.interestFreeToPeriod}}
|
||||
{{depositproduct.interestFreePeriodFrequencyType.value}}
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr ng-show="depositproduct.preClosurePenalInterest">
|
||||
<td>{{'label.heading.preclosurepenalapplicable' | translate}}</td>
|
||||
<td>{{depositproduct.preClosurePenalInterest}} % On
|
||||
{{depositproduct.preClosurePenalInterestOnType.value}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><br/></td>
|
||||
</tr>
|
||||
<tr class="bottomborder">
|
||||
<td colspan="4"><strong>{{'label.heading.interestchart' | translate}}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<div class="pull-right">
|
||||
<a href="#/interestratecharts/{{depositproduct.id}}/{{depositproduct.name}}/fixeddepositproduct">{{'label.anchor.interestratechartviewedit'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.interestratechart.valid.from' | translate}} : {{depositproduct.activeChart.fromDate |
|
||||
DateFormat}}
|
||||
</td>
|
||||
<td>{{'label.heading.interestratechart.valid.to' | translate}} : {{depositproduct.activeChart.endDate |
|
||||
DateFormat}}
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr class="bottomborder graybg">
|
||||
<td>{{'label.heading.interestratedetails.period.from.to' | translate}}</td>
|
||||
<!--<td>{{'label.heading.interestratedetails.amount.range' | translate}}</td>-->
|
||||
<td>{{'label.heading.interestratedetails.interest' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.description' | translate}}</td>
|
||||
</tr>
|
||||
<tr ng-repeat="chartSlabs in depositproduct.activeChart.chartSlabs | orderBy:'fromPeriod':reverse">
|
||||
<td>{{chartSlabs.fromPeriod}} - {{chartSlabs.toPeriod}} {{chartSlabs.periodType.value}}</td>
|
||||
<!--<td>{{chartSlabs.amountRangeFrom}} - {{chartSlabs.amountRangeTo}}</td>-->
|
||||
<td>{{chartSlabs.annualInterestRate}}</td>
|
||||
<td>{{chartSlabs.description}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><br/></td>
|
||||
</tr>
|
||||
<tr class="bottomborder">
|
||||
<td colspan="4"><strong>{{'label.heading.charges' | translate}}</strong></td>
|
||||
</tr>
|
||||
<tr class="bottomborder graybg">
|
||||
<td>{{'label.heading.name' | translate}}</td>
|
||||
<td>{{'label.heading.type' | translate}}</td>
|
||||
<td>{{'label.heading.amount' | translate}}</td>
|
||||
<td>{{'label.heading.collectedon' | translate}}</td>
|
||||
</tr>
|
||||
<tr ng-repeat="charge in depositproduct.charges">
|
||||
<td>{{charge.name}}</td>
|
||||
<td>{{charge.chargeCalculationType.value}}</td>
|
||||
<td>{{charge.amount}}</td>
|
||||
<td>{{charge.chargeTimeType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><br/></td>
|
||||
</tr>
|
||||
<tr class="bottomborder">
|
||||
<td><strong>{{'label.heading.accounting' | translate}}</strong></td>
|
||||
<td colspan="3"><span ng-hide="hasAccounting">{{'label.none' | translate}}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table width="100%" ng-show="hasAccounting">
|
||||
<tr class="toppadding">
|
||||
<td>{{'label.heading.savingsreference' | translate}}({{'label.heading.assets' | translate}})</td>
|
||||
<td colspan="3">{{depositproduct.accountingMappings.savingsReferenceAccount.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.savingscontrol' | translate}}({{'label.heading.liabilities' | translate}})</td>
|
||||
<td colspan="3">{{depositproduct.accountingMappings.savingsControlAccount.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.transfersinsuspenpense' | translate}}({{'label.heading.liabilities' |
|
||||
translate}})
|
||||
</td>
|
||||
<td colspan="3">{{depositproduct.accountingMappings.transfersInSuspenseAccount.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.interestonsavings' | translate}}({{'label.heading.expenses' | translate}})</td>
|
||||
<td colspan="3">{{depositproduct.accountingMappings.interestOnSavingsAccount.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.incomefromfee' | translate}}({{'label.heading.income' | translate}})</td>
|
||||
<td colspan="3">{{depositproduct.accountingMappings.incomeFromFeeAccount.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.incomefrompenalties' | translate}}({{'label.heading.income' | translate}})</td>
|
||||
<td colspan="3">{{depositproduct.accountingMappings.incomeFromPenaltyAccount.name}}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4"><br/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<strong>{{'label.heading.advancedaccountingrules' | translate}}</strong>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="toppadding bottomborder">
|
||||
<td colspan="4">{{'label.heading.configurefundsourcesforpaymentchannels' | translate}}</td>
|
||||
</tr>
|
||||
<tr class="bottomborder graybg">
|
||||
<td>{{'label.heading.paymenttype' | translate}}</td>
|
||||
<td colspan="3">{{'label.heading.fundsource' | translate}}</td>
|
||||
</tr>
|
||||
<tr ng-repeat="paymentChannel in depositproduct.paymentChannelToFundSourceMappings">
|
||||
<td>{{paymentChannel.paymentType.name}}</td>
|
||||
<td colspan="3">{{paymentChannel.fundSourceAccount.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"></td>
|
||||
</tr>
|
||||
<tr class="toppadding bottomborder">
|
||||
<td colspan="4">{{'label.heading.feestospecificincome' | translate}}</td>
|
||||
</tr>
|
||||
<tr class="bottomborder graybg">
|
||||
<td>{{'label.heading.fees' | translate}}</td>
|
||||
<td colspan="3">{{'label.heading.incomeaccount' | translate}}</td>
|
||||
</tr>
|
||||
<tr ng-repeat="feeToIncomeAccount in depositproduct.feeToIncomeAccountMappings">
|
||||
<td>{{feeToIncomeAccount.charge.name}}</td>
|
||||
<td colspan="3">{{feeToIncomeAccount.incomeAccount.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"></td>
|
||||
</tr>
|
||||
<tr class="toppadding bottomborder">
|
||||
<td colspan="4">{{'label.heading.penaltiesspecifictoincomeacc' | translate}}</td>
|
||||
</tr>
|
||||
<tr class="bottomborder graybg">
|
||||
<td>{{'label.heading.penalty' | translate}}</td>
|
||||
<td colspan="3">{{'label.heading.incomeaccount' | translate}}</td>
|
||||
</tr>
|
||||
<tr ng-repeat="penaltyToIncomeAccount in depositproduct.penaltyToIncomeAccountMappings">
|
||||
<td>{{penaltyToIncomeAccount.charge.name}}</td>
|
||||
<td colspan="3">{{penaltyToIncomeAccount.incomeAccount.name}}</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
</td>
|
||||
<td class="pull-right">
|
||||
<a ng-click="scrollto('viewlptop')"><i class="icon-upload"></i>{{'label.button.top' | translate}}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
278
app/views/products/viewrecurringdepositproduct.html
Normal file
278
app/views/products/viewrecurringdepositproduct.html
Normal file
@ -0,0 +1,278 @@
|
||||
<div class="row paddedleft" ng-controller="ViewRecurringDepositProductController">
|
||||
<div id="viewlptop">
|
||||
<div class="paddedbottom10">
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="#/products">{{'label.anchor.products' | translate}}</a> <span class="divider">/</span></li>
|
||||
<li><a href="#/recurringdepositproducts">{{'label.anchor.recurringdepositproducts' | translate}}</a> <span
|
||||
class="divider">/</span></li>
|
||||
<li class="active">{{depositproduct.name}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<div class="btn-group">
|
||||
<a href="#/editrecurringdepositproduct/{{depositproduct.id}}" class="btn btn-primary"><i
|
||||
class="icon-edit icon-white"></i>{{'label.button.edit' | translate}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<legend>{{depositproduct.name}}</legend>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<a name="test" class="old-syle-anchor"> </a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="bottomborder">
|
||||
<td colspan="4">
|
||||
<strong>{{'label.heading.details' | translate}}</strong>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="toppadding">
|
||||
<td>{{'label.heading.description' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.description}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.shortname' | translate}} :</td>
|
||||
<td colspan="3">{{depositproduct.shortName}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><br/></td>
|
||||
</tr>
|
||||
<tr class="bottomborder">
|
||||
<td colspan="4"><strong>{{'label.heading.items' | translate}}</strong></td>
|
||||
</tr>
|
||||
<tr class="toppadding">
|
||||
<td>{{'label.heading.currency' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.currency.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.decimalplaces' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.currency.decimalPlaces}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.currencyinmultiplesof' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.currency.inMultiplesOf}}</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td>{{'label.heading.nominalannualinterestrate' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.nominalAnnualInterestRate}}</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td>{{'label.heading.interestcompoundingperiod' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.interestCompoundingPeriodType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.interestpostingperiod' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.interestPostingPeriodType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.interestcalculatedusing' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.interestCalculationType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.daysinyears' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.interestCalculationDaysInYearType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><br/></td>
|
||||
</tr>
|
||||
<tr class="bottomborder">
|
||||
<td colspan="4"><strong>{{'label.heading.settings' | translate}}</strong></td>
|
||||
</tr>
|
||||
<!--<tr class="toppadding">
|
||||
<td>{{'label.heading.minimumopeningbalance' | translate}}</td>
|
||||
<td colspan="3">{{depositproduct.minRequiredOpeningBalance}}</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td>{{'label.heading.lockinPeriodFrequency' | translate}}</td>
|
||||
<td>{{depositproduct.lockinPeriodFrequency}} {{depositproduct.lockinPeriodFrequencyType.value}}</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.minimumdepositterm' | translate}}</td>
|
||||
<td>{{depositproduct.minDepositTerm}} {{depositproduct.minDepositTermType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.maximumdepositterm' | translate}}</td>
|
||||
<td>{{depositproduct.maxDepositTerm}} {{depositproduct.maxDepositTermType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.inmultiplesofdeposit' | translate}}</td>
|
||||
<td>{{depositproduct.inMultiplesOfDepositTerm}} - {{depositproduct.inMultiplesOfDepositTermType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.recurringdeposittype' | translate}}</td>
|
||||
<td>{{depositproduct.recurringDepositType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.recurringdepositfrequency' | translate}}</td>
|
||||
<td>Every {{depositproduct.recurringDepositFrequency}}
|
||||
{{depositproduct.recurringDepositFrequencyType.value}}
|
||||
</td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td>{{'label.heading.interestfreeperiodapplicable' | translate}}</td>
|
||||
<td>from {{depositproduct.interestFreeFromPeriod}} - {{depositproduct.interestFreeToPeriod}}
|
||||
{{depositproduct.interestFreePeriodFrequencyType.value}}
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr ng-show="depositproduct.preClosurePenalInterest">
|
||||
<td>{{'label.heading.preclosurepenalapplicable' | translate}}</td>
|
||||
<td>{{depositproduct.preClosurePenalInterest}} % On
|
||||
{{depositproduct.preClosurePenalInterestOnType.value}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><br/></td>
|
||||
</tr>
|
||||
<tr class="bottomborder">
|
||||
<td colspan="4"><strong>{{'label.heading.interestchart' | translate}}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<div class="pull-right">
|
||||
<a href="#/interestratecharts/{{depositproduct.id}}/{{depositproduct.name}}/recurringdepositproduct">{{'label.anchor.interestratechartviewedit'
|
||||
| translate}}</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.interestratechart.valid.from' | translate}} : {{depositproduct.activeChart.fromDate |
|
||||
DateFormat}}
|
||||
</td>
|
||||
<td>{{'label.heading.interestratechart.valid.to' | translate}} : {{depositproduct.activeChart.endDate |
|
||||
DateFormat}}
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr class="bottomborder graybg">
|
||||
<td>{{'label.heading.interestratedetails.period.from.to' | translate}}</td>
|
||||
<!--<td>{{'label.heading.interestratedetails.amount.range' | translate}}</td>-->
|
||||
<td>{{'label.heading.interestratedetails.interest' | translate}}</td>
|
||||
<td>{{'label.heading.interestratedetails.description' | translate}}</td>
|
||||
</tr>
|
||||
<tr ng-repeat="chartSlabs in depositproduct.activeChart.chartSlabs | orderBy:'fromPeriod':reverse">
|
||||
<td>{{chartSlabs.fromPeriod}} - {{chartSlabs.toPeriod}} {{chartSlabs.periodType.value}}</td>
|
||||
<!--<td>{{chartSlabs.amountRangeFrom}} - {{chartSlabs.amountRangeTo}}</td>-->
|
||||
<td>{{chartSlabs.annualInterestRate}}</td>
|
||||
<td>{{chartSlabs.description}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><br/></td>
|
||||
</tr>
|
||||
<tr class="bottomborder">
|
||||
<td colspan="4"><strong>{{'label.heading.charges' | translate}}</strong></td>
|
||||
</tr>
|
||||
<tr class="bottomborder graybg">
|
||||
<td>{{'label.heading.name' | translate}}</td>
|
||||
<td>{{'label.heading.type' | translate}}</td>
|
||||
<td>{{'label.heading.amount' | translate}}</td>
|
||||
<td>{{'label.heading.collectedon' | translate}}</td>
|
||||
</tr>
|
||||
<tr ng-repeat="charge in depositproduct.charges">
|
||||
<td>{{charge.name}}</td>
|
||||
<td>{{charge.chargeCalculationType.value}}</td>
|
||||
<td>{{charge.amount}}</td>
|
||||
<td>{{charge.chargeTimeType.value}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><br/></td>
|
||||
</tr>
|
||||
<tr class="bottomborder">
|
||||
<td><strong>{{'label.heading.accounting' | translate}}</strong></td>
|
||||
<td colspan="3"><span ng-hide="hasAccounting">{{'label.none' | translate}}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table width="100%" ng-show="hasAccounting">
|
||||
<tr class="toppadding">
|
||||
<td>{{'label.heading.savingsreference' | translate}}({{'label.heading.assets' | translate}})</td>
|
||||
<td colspan="3">{{depositproduct.accountingMappings.savingsReferenceAccount.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.savingscontrol' | translate}}({{'label.heading.liabilities' | translate}})</td>
|
||||
<td colspan="3">{{depositproduct.accountingMappings.savingsControlAccount.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.transfersinsuspenpense' | translate}}({{'label.heading.liabilities' |
|
||||
translate}})
|
||||
</td>
|
||||
<td colspan="3">{{depositproduct.accountingMappings.transfersInSuspenseAccount.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.interestonsavings' | translate}}({{'label.heading.expenses' | translate}})</td>
|
||||
<td colspan="3">{{depositproduct.accountingMappings.interestOnSavingsAccount.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.incomefromfee' | translate}}({{'label.heading.income' | translate}})</td>
|
||||
<td colspan="3">{{depositproduct.accountingMappings.incomeFromFeeAccount.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{'label.heading.incomefrompenalties' | translate}}({{'label.heading.income' | translate}})</td>
|
||||
<td colspan="3">{{depositproduct.accountingMappings.incomeFromPenaltyAccount.name}}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4"><br/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<strong>{{'label.heading.advancedaccountingrules' | translate}}</strong>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="toppadding bottomborder">
|
||||
<td colspan="4">{{'label.heading.configurefundsourcesforpaymentchannels' | translate}}</td>
|
||||
</tr>
|
||||
<tr class="bottomborder graybg">
|
||||
<td>{{'label.heading.paymenttype' | translate}}</td>
|
||||
<td colspan="3">{{'label.heading.fundsource' | translate}}</td>
|
||||
</tr>
|
||||
<tr ng-repeat="paymentChannel in depositproduct.paymentChannelToFundSourceMappings">
|
||||
<td>{{paymentChannel.paymentType.name}}</td>
|
||||
<td colspan="3">{{paymentChannel.fundSourceAccount.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"></td>
|
||||
</tr>
|
||||
<tr class="toppadding bottomborder">
|
||||
<td colspan="4">{{'label.heading.feestospecificincome' | translate}}</td>
|
||||
</tr>
|
||||
<tr class="bottomborder graybg">
|
||||
<td>{{'label.heading.fees' | translate}}</td>
|
||||
<td colspan="3">{{'label.heading.incomeaccount' | translate}}</td>
|
||||
</tr>
|
||||
<tr ng-repeat="feeToIncomeAccount in depositproduct.feeToIncomeAccountMappings">
|
||||
<td>{{feeToIncomeAccount.charge.name}}</td>
|
||||
<td colspan="3">{{feeToIncomeAccount.incomeAccount.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"></td>
|
||||
</tr>
|
||||
<tr class="toppadding bottomborder">
|
||||
<td colspan="4">{{'label.heading.penaltiesspecifictoincomeacc' | translate}}</td>
|
||||
</tr>
|
||||
<tr class="bottomborder graybg">
|
||||
<td>{{'label.heading.penalty' | translate}}</td>
|
||||
<td colspan="3">{{'label.heading.incomeaccount' | translate}}</td>
|
||||
</tr>
|
||||
<tr ng-repeat="penaltyToIncomeAccount in depositproduct.penaltyToIncomeAccountMappings">
|
||||
<td>{{penaltyToIncomeAccount.charge.name}}</td>
|
||||
<td colspan="3">{{penaltyToIncomeAccount.incomeAccount.name}}</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
</td>
|
||||
<td class="pull-right">
|
||||
<a ng-click="scrollto('viewlptop')"><i class="icon-upload"></i>{{'label.button.top' | translate}}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
Loading…
Reference in New Issue
Block a user