Files
cbsnexora-backend/tempjpw/IndivLend - Copy.html
T

1299 lines
44 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>Mifos - Individual Lending</title>
<link rel="SHORTCUT ICON" href="resources/favicon.ico" />
<link rel="stylesheet" type="text/css" href="resources/allinone.css" />
<link rel="stylesheet" type="text/css" href="resources/libs/DataTables-1.8.2/extras/TableTools/media/css/TableTools.css" />
<link rel="stylesheet" type="text/css" href="resources/libs/DataTables-1.8.2/media/css/demo_page.css" />
<link rel="stylesheet" type="text/css" href="resources/libs/DataTables-1.8.2/media/css/demo_table.css" />
<link rel="stylesheet" type="text/css" href="resources/libs/jquery-ui-1.8.16.custom/css/smoothness/jquery-ui-1.8.16.custom.css" />
<link rel="stylesheet" type="text/css" href="resources/excel/excel-2007.css" />
<script type="text/javascript" src="resources/libs/jquery-1.7.min.js"></script>
<script type="text/javascript" src="resources/libs/jquery-ui-1.8.16.custom/js/jquery-ui-1.8.16.custom.min.js"></script>
<script type="text/javascript" src="resources/libs/DataTables-1.8.2/media/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="resources/libs/jquery.dataTables.TitleNumeric.js"></script>
<script type="text/javascript" src="resources/libs/DataTables-1.8.2/extras/TableTools/media/js/ZeroClipboard.js"></script>
<script type="text/javascript" src="resources/libs/DataTables-1.8.2/extras/TableTools/media/js/TableTools.min.js"></script>
<script type="text/javascript" src="resources/libs/jquery.i18n.properties-min-1.0.9.js"></script>
<script type="text/javascript" src="resources/libs/jsrender.js"></script>
<script type="text/javascript" src="resources/libs/jquery.views.js"></script>
<script type="text/javascript" src="resources/libs/jquery.observable.min.js"></script>
<script type="text/javascript" src="resources/libs/globalize/globalize.js"></script>
<script type="text/javascript" src="resources/stretchydata-0.95.js"></script>
<script>
$(document).ready(function() {
// default to 'en' culture - no need to import extra javascript files for globalize.js or datapicker
Globalize.culture('en');
$.datepicker.setDefaults( $.datepicker.regional['en']);
jQuery.i18n.properties({
name:'messages',
path: 'resources/global-translations/',
mode:'map',
cache: true,
language: '', // leave blank so defaults to 'en'
callback: function() {
}
});
});
</script>
<script>
$(document).ready(function() {
// basic auth details
var base64 = "bWlmb3M6cGFzc3dvcmQ=";
var baseApiUrl = "https://localhost:8443/mifosng-provider/api/v1/";
// these helpers are registered for the jsViews and jsRender functionality to fix bug with display zero!
$.views.registerHelpers({
money: function(monetaryObj) {
Globalize.culture().numberFormat.currency.symbol = monetaryObj.displaySymbol;
var digits = monetaryObj.digitsAfterDecimal.toFixed(0);
return Globalize.format(monetaryObj.amount, "n" + digits);
},
moneyWithCurrency: function(monetaryObj) {
Globalize.culture().numberFormat.currency.symbol = monetaryObj.displaySymbol;
var digits = monetaryObj.digitsAfterDecimal.toFixed(0);
return Globalize.format(monetaryObj.amount, "c" + digits);
},
decimal: function(number, digits) {
try {
return Globalize.format(number, "n" + digits);
} catch(e) {
return number +"(NaN)";
}
},
number: function(number) {
try {
return Globalize.format(number, "n0");
} catch(e) {
return number +"(NaN)";
}
},
numberGreaterThanZero: function(number) {
try {
var num = number.toFixed(0);
return num > 0;
} catch(e) {
return false;
}
},
globalDate: function(dateParts) {
try {
var year = dateParts[0];
var month = parseInt(dateParts[1]) - 1; // month is zero indexed
var day = dateParts[2];
var d = new Date();
d.setFullYear(year,month,day);
return Globalize.format(d,"dd MMMM yyyy");
} catch(e) {
return "??";
}
},
globalDateAsISOString: function(localDateAsISOString) {
try {
var dateParts = localDateAsISOString.split("-")
var year = dateParts[0];
var month = parseInt(dateParts[1]) - 1; // month is zero indexed
var day = dateParts[2];
var d = new Date();
d.setFullYear(year,month,day);
return Globalize.format(d,"dd MMMM yyyy");
} catch(e) {
return "??";
}
},
globalDateTime: function(dateInMillis) {
try {
var d = new Date(dateInMillis);
return Globalize.format(d,"F");
} catch(e) {
return "??";
}
}
});
function removeErrors(placeholderDiv) {
// remove error class from all input fields
var $inputs = $('#entityform :input');
$inputs.each(function() {
$(this).removeClass("ui-state-error");
});
$(placeholderDiv).html("");
}
function handleXhrError(jqXHR, textStatus, errorThrown, templateSelector, placeholderDiv) {
if (jqXHR.status === 0) {
alert('No connection. Verify application is running.');
} else if (jqXHR.status == 401) {
alert('Unauthorized. [401]');
} else if (jqXHR.status == 404) {
alert('Requested page not found. [404]');
} else if (jqXHR.status == 405) {
alert('HTTP verb not supported [405]: ' + errorThrown);
} else if (jqXHR.status == 500) {
alert('Internal Server Error [500].');
} else if (errorThrown === 'parsererror') {
alert('Requested JSON parse failed.');
} else if (errorThrown === 'timeout') {
alert('Time out error.');
} else if (errorThrown === 'abort') {
alert('Ajax request aborted.');
} else {
removeErrors(placeholderDiv);
var jsonErrors = JSON.parse(jqXHR.responseText);
console.log(jsonErrors);
var valErrors = jsonErrors.errors;
console.log(valErrors);
var errorArray = new Array();
var arrayIndex = 0;
$.each(valErrors, function() {
var fieldId = '#' + this.parameterName;
$(fieldId).addClass("ui-state-error");
var errorObj = new Object();
errorObj.field = this.parameterName;
errorObj.code = this.userMessageGlobalisationCode;
var argArray = new Array();
var argArrayIndex = 0;
$.each(this.args, function() {
argArray[argArrayIndex] = this.value;
argArrayIndex++;
});
// hardcoded support for six arguments
errorObj.message = jQuery.i18n.prop(this.userMessageGlobalisationCode, argArray[0], argArray[1], argArray[2], argArray[3], argArray[4], argArray[5]);
errorObj.value = this.value;
errorArray[arrayIndex] = errorObj;
arrayIndex++
});
var templateArray = new Array();
var templateErrorObj = new Object();
templateErrorObj.title = jQuery.i18n.prop('error.msg.header');
templateErrorObj.errors = errorArray;
templateArray[0] = templateErrorObj;
var formErrorsHtml = $(templateSelector).render(templateArray);
$(placeholderDiv).append(formErrorsHtml);
}
}
function showNotAvailableDialog(titleCode) {
var dialogDiv = $("<div id='notavailable-dialog-form'></div>");
dialogDiv.append("<p>" + jQuery.i18n.prop('dialog.messages.functionality.not.available') + "</p>");
var okButton = jQuery.i18n.prop('dialog.button.ok');
var buttonsOpts = {};
buttonsOpts[okButton] = function() {$(this).dialog("close");};
dialogDiv.dialog({
title: jQuery.i18n.prop(titleCode),
width: 300,
height: 200,
modal: true,
buttons: buttonsOpts,
close: function() {
// if i dont do this, theres a problem with errors being appended to dialog view second time round
$(this).remove();
}
}).dialog('open');
}
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
if (this.name === 'selectedItems' || this.name === 'notSelectedItems') {
o[this.name] = new Array();
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
}
});
return o;
};
function popupDialogWithFormView(getUrl, postUrl, submitType, titleCode, templateSelector, width, height, saveSuccessFunction) {
var dialogDiv = $("<div id='dialog-form'></div>");
var jqxhr = $.ajax({
url: getUrl,
type: 'GET',
contentType: 'application/json',
dataType: 'json',
cache: false,
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Basic " + base64);
},
success: function(data, textStatus, jqXHR) {
console.log(data);
var formHtml = $(templateSelector).render(data);
dialogDiv.append(formHtml);
var saveButton = jQuery.i18n.prop('dialog.button.save');
var cancelButton = jQuery.i18n.prop('dialog.button.cancel');
var buttonsOpts = {};
buttonsOpts[saveButton] = function() {
$('#notSelectedItems option').each(function(i) {
$(this).attr("selected", "selected");
});
$('#selectedItems option').each(function(i) {
$(this).attr("selected", "selected");
});
var newFormData = JSON.stringify($('#entityform').serializeObject());
console.log(newFormData);
var jqxhr = $.ajax({
url: postUrl,
type: submitType,
contentType: 'application/json',
dataType: 'json',
data: newFormData,
success: saveSuccessFunction,
cache: false,
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Basic " + base64);
},
error: function(jqXHR, textStatus, errorThrown) {
handleXhrError(jqXHR, textStatus, errorThrown, "#formErrorsTemplate", "#formerrors");
}
});
};
buttonsOpts[cancelButton] = function() {$(this).dialog( "close" );};
dialogDiv.dialog({
title: jQuery.i18n.prop(titleCode),
width: width,
height: height,
modal: true,
buttons: buttonsOpts,
close: function() {
// if i dont do this, theres a problem with errors being appended to dialog view second time round
$(this).remove();
},
open: function (event, ui) {
$('#add').click(function() {
return !$('#notSelectedItems option:selected').remove().appendTo('#selectedItems');
});
$('#remove').click(function() {
return !$('#selectedItems option:selected').remove().appendTo('#notSelectedItems');
});
$('.datepickerfield').datepicker({constrainInput: true, maxDate: 0, dateFormat: 'dd MM yy'});
$("#entityform textarea").first().focus();
$('#entityform input').first().focus();
}
}).dialog('open');
}
});
jqxhr.error(function(jqXHR, textStatus, errorThrown) {
handleXhrError(jqXHR, textStatus, errorThrown, "#formErrorsTemplate", "#formerrors");
});
}
$("#tabs").tabs({
"ajaxOptions": {
type: 'GET',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
cache: false,
beforeSend: function(xhr) {
console.log("before send");
xhr.setRequestHeader("Authorization", "Basic " + base64);
},
success: function(data, status, xhr) {
},
error: function(xhr, status, index, anchor) {
$(anchor.hash).html("error occured while ajax loading.");
}
},
select: function(event, ui) {
console.log("selected..");
},
load: function(event, ui) {
console.log("load..");
},
show: function(event, ui) {
console.log("show..");
var jqxhr = $.ajax({
url: baseApiUrl + 'clients',
type: 'GET',
contentType: 'application/json',
dataType: 'json',
cache: false,
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Basic " + base64);
},
success: function(data) {
var clientObject = new Object();
clientObject.clients = data;
console.log(clientObject);
var tableHtml = $("#clientSearchTabTemplate").render(clientObject);
$("#searchtab").html(tableHtml);
$('#client').change(function() {
$('#viewClient').submit();
});
},
error: function(jqXHR, textStatus, errorThrown) {
handleXhrError(jqXHR, textStatus, errorThrown, "#formErrorsTemplate", "#formerrors");
}
});
}
});
var addClientSuccessFunction = function(data, textStatus, jqXHR) {
$('#dialog-form').dialog("close");
window.location.href = '/portfolio/client/' + data.entityId;
}
$("#addclient").button().click(function(e) {
var getUrl = baseApiUrl + 'clients/template';
var postUrl = baseApiUrl + 'clients';
var templateSelector = "#clientFormTemplate";
var width = 600;
var height = 350;
popupDialogWithFormView(getUrl, postUrl, 'POST', 'dialog.title.add.client', templateSelector, width, height, addClientSuccessFunction);
e.preventDefault();
});
});
</script>
</head>
<body>
<div id="container">
<div id="logowrapper">
<span style="float: left">
<img style="float:left; border: 0;" alt="" src="resources/mifos.jpg"/>
</span>
</div>
<div id="navwrapper">
<ul id="nav" class="floatleft">
<li><a href="home">Clients</a></li>
<li><a href="org/admin/user">User Administration</a></li>
<li><a href="org/admin">Organisation Administration</a></li>
<li><a href="reporting/flexireport">Reports</a></li>
</ul>
<ul id="nav" class="floatright">
<li class="dmenu"><a href="#">Theme</a>
<ul>
<li><a href="?theme=default">smoothness</a></li>
<li><a href="?theme=ui-lightness">lightness</a></li>
<li><a href="?theme=redmond">redmond</a></li>
</ul>
</li>
<li class="dmenu"><a href="#">Culture</a>
<ul>
<li><a href="?lang=en">en</a></li>
<li><a href="?lang=fr">fr</a></li>
<li><a href="?lang=es">es</a></li>
<li><a href="?lang=pt">pt</a></li>
<li><a href="?lang=zh">zh</a></li>
</ul>
</li>
<li><a href="org/admin/settings" class="dmenu">mifos</a>
<ul>
<li><a href="org/admin/settings">Account Settings</a></li>
</ul>
</li>
<li><a href="signout">Sign out</a></li>
</ul>
<br class="clear">
</div><div style="float:none; clear:both;">
<div id="spacer" style="line-height: 15px;">&nbsp;</div>
<div id="content">
<button id="addclient" style="clear: both;">Add a new client</button>
<div id="tabs">
<ul>
<li><a href="#searchtab" title="searchtab">Search</a></li>
</ul>
<div id="searchtab"></div>
</div>
</div>
</div>
</div>
<!-- templates below here -->
<script id="newLoanScheduleTemplate" type="text/x-jquery-tmpl">
<table id="repaymentschedule" class="pretty displayschedule">
<caption>Repayment Schedule</caption>
<thead>
<tr>
<th>#</th>
<th>Date</th>
<th>Principal</th>
<th>Interest</th>
<th>Total</th>
<th>Outstanding</th>
</tr>
</thead>
<tbody>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>{{=$ctx.money(cumulativePrincipal)}}</td>
</tr>
{{#each scheduledLoanInstallments}}
<tr>
<td>{{=$ctx.number(installmentNumber)}}</td>
<td>{{=$ctx.globalDate(periodEnd)}}</td>
<td>{{=$ctx.money(principalDue)}}</td>
<td>{{=$ctx.money(interestDue)}}</td>
<td>{{=$ctx.money(totalInstallmentDue)}}</td>
<td>{{=$ctx.money(outStandingBalance)}}</td>
</tr>
{{/each}}
</tbody>
<tfoot class="ui-widget-header">
<tr class="ui-widget-header">
<th>Total</th>
<th>&nbsp;</th>
<th>{{=$ctx.money(cumulativePrincipal)}}</th>
<th>{{=$ctx.money(cumulativeInterest)}}</th>
<th>{{=$ctx.money(cumulativeTotal)}}</th>
<th>&nbsp;</th>
</tr>
</tfoot>
</table>
</script>
<script id="newLoanFormTemplate" type="text/x-jquery-tmpl">
<form id="entityform">
<div id="formerrors"></div>
<input type="hidden" id="clientId" name="clientId" value="{{=clientId}}" />
<input type="hidden" id="dateFormat" name="dateFormat" value="dd MMMM yyyy" />
<input type="hidden" id="locale" name="locale" value="en" />
<fieldset>
<legend>Loan Information</legend>
<div>
<table id="productdetails">
<tr>
<td valign="top">
<label for="clientname">Applicant:</label>
<input id="clientname" name="clientName" title="" type="text" value="{{=clientName}}" disabled="disabled" />
<label for="productId">Product:</label>
<select name="productId" id="productId">
<option value="-1">--Select Product--</option>
{{#each allowedProducts}}
{{#if $ctx.number($parent.parent.data.productId)===$ctx.number(id)}}
<option value="{{=$ctx.number(id)}}" selected="selected">{{=name}}</option>
{{#else}}
<option value="{{=$ctx.number(id)}}">{{=name}}</option>
{{/if}}
{{/each}}
</select>
<label for="description">Description:</label>
<textarea id="description" rows="2" cols="50" draggable="false" disabled="disabled">{{=selectedProduct.description}}</textarea>
</td>
<td style="text-align:right;vertical-align:bottom;width:50px;">&nbsp;</td>
<td valign="top">
<label for="submittedOnDate">Submitted on:</label>
<input id="submittedOnDate" name="submittedOnDate" title="" type="text" class="datepickerfield" value="{{=$ctx.globalDate(submittedOnDate)}}" />
<label for="submittedOnNote">Loan submittal note:</label>
<textarea id="submittedOnNote" name="submittedOnNote" rows="2" cols="50" draggable="false">{{=submittedOnNote}}</textarea>
</td>
</tr>
</table>
</div>
</fieldset>
<fieldset>
<legend>Loan Terms</legend>
<table>
<tr>
<td valign="top" style="padding-right: 5px; border-right: 1px solid;">
<table>
<tr>
<td>Loan amount:</td>
<td>
<input id="principal" name="principal" title="" type="text" value="{{=$ctx.money(selectedProduct.principal)}}" style="width: 125px;" />
<input id="principalCurrencyCode" name="principalCurrencyCode" title="" type="text" value="{{=selectedProduct.principal.displaySymbol}}" style="width: 40px;" disabled="disabled" />
</td>
</tr>
<tr>
<td>Repaid every:</td>
<td>
<input id="repaymentEvery" name="repaymentEvery" title="" type="text" value="{{=$ctx.number(selectedProduct.repaymentEvery)}}" style="width: 50px;" />
<select name="repaymentFrequencyType" id="repaymentFrequencyType" title="" style="width: 121px;">
{{#each selectedProduct.repaymentFrequencyTypeOptions}}
{{#if $ctx.number($parent.parent.data.selectedProduct.repaymentFrequencyType.id)===$ctx.number(id)}}
<option value="{{=$ctx.number(id)}}" selected="selected">{{=value}}</option>
{{#else}}
<option value="{{=$ctx.number(id)}}">{{=value}}</option>
{{/if}}
{{/each}}
</select>
</td>
</tr>
<tr>
<td># of repayments:</td>
<td>
<input id="numberOfRepayments" name="numberOfRepayments" title="" type="text" value="{{=$ctx.number(selectedProduct.numberOfRepayments)}}" style="width: 50px;" />
</td>
</tr>
<tr>
<td>Expected disbursement on:</td>
<td>
<input id="expectedDisbursementDate" name="expectedDisbursementDate" title="" type="text" class="datepickerfield" value="{{=$ctx.globalDate(expectedDisbursementDate)}}" style="width:172px;"/>
</td>
</tr>
<tr>
<td>First repayment on:</td>
<td>
<input id="repaymentsStartingFromDate" name="repaymentsStartingFromDate" title="" type="text" class="datepickerfield" value="{{=$ctx.globalDate(repaymentsStartingFromDate)}}" style="width:172px;"/>
</td>
</tr>
</table>
</td>
<!-- interest details cell -->
<td valign="top" style="padding-left: 5px; padding-right: 5px; border-right: 1px solid;">
<table>
<tr>
<td>Nominal interest rate %:</td>
<td>
<input id="interestRatePerPeriod" name="interestRatePerPeriod" title="" type="text" value="{{=$ctx.decimal(selectedProduct.interestRatePerPeriod, 4)}}" style="width: 60px;" />
<select name="interestRateFrequencyType" id="interestRateFrequencyType" title="" style="width: 115px;">
{{#each selectedProduct.interestRateFrequencyTypeOptions}}
{{#if $ctx.number($parent.parent.data.selectedProduct.interestRateFrequencyType.id)===$ctx.number(id)}}
<option value="{{=$ctx.number(id)}}" selected="selected">{{=value}}</option>
{{#else}}
<option value="{{=$ctx.number(id)}}">{{=value}}</option>
{{/if}}
{{/each}}
</select>
</td>
</tr>
<tr>
<td>Annual nominal rate %:</td>
<td>
<input id="interestRatePerYear" name="interestRatePerYear" title="" type="text" style="width: 60px;" disabled="disabled" />
</td>
</tr>
<tr>
<td>Amortization:</td>
<td>
<select name="amortizationType" id="amortizationType" title="" style="width: 178px;">
{{#each selectedProduct.amortizationTypeOptions}}
{{#if $ctx.number($parent.parent.data.selectedProduct.amortizationType.id)===$ctx.number(id)}}
<option value="{{=$ctx.number(id)}}" selected="selected">{{=value}}</option>
{{#else}}
<option value="{{=$ctx.number(id)}}">{{=value}}</option>
{{/if}}
{{/each}}
</select>
</td>
</tr>
<tr>
<td>Interest method:</td>
<td>
<select name="interestType" id="interestType" title="" style="width: 180px;">
{{#each selectedProduct.interestTypeOptions}}
{{#if $ctx.number($parent.parent.data.selectedProduct.interestType.id)===$ctx.number(id)}}
<option value="{{=$ctx.number(id)}}" selected="selected">{{=value}}</option>
{{#else}}
<option value="{{=$ctx.number(id)}}">{{=value}}</option>
{{/if}}
{{/each}}
</select>
</td>
</tr>
<tr>
<td>Interest calculation period:</td>
<td>
<select id="interestCalculationPeriodType" name="interestCalculationPeriodType" title="" style="width: 220px;">
{{#each selectedProduct.interestCalculationPeriodTypeOptions}}
{{#if $ctx.number($parent.parent.data.selectedProduct.interestCalculationPeriodType.id)===$ctx.number(id)}}
<option value="{{=$ctx.number(id)}}" selected="selected">{{=value}}</option>
{{#else}}
<option value="{{=$ctx.number(id)}}">{{=value}}</option>
{{/if}}
{{/each}}
</select>
</td>
</tr>
<tr>
<td>Interest charged from:</td>
<td>
<input id="interestChargedFromDate" name="interestChargedFromDate" title="" type="text" class="datepickerfield" value="{{=$ctx.globalDate(interestCalculatedFromDate)}}" style="width:172px;"/>
</td>
</tr>
<tr>
<td>Arrears tolerance:</td>
<td>
<input id="inArrearsTolerance" name="inArrearsTolerance" title="" type="text" value="{{=$ctx.money(selectedProduct.inArrearsTolerance)}}" style="width: 125px;" />
<input id="inArrearsCurrencyCode" name="inArrearsCurrencyCode" title="" type="text" value="{{=selectedProduct.inArrearsTolerance.displaySymbol}}" style="width: 40px;" disabled="disabled" />
</td>
</tr>
</table>
</td>
<td>
<!-- Other options -->
<div>
<span id="toolbar" class="ui-widget-header ui-corner-all">
<button type="submit" class="submitloanapp" id="submitloanapp" name="_eventId_submit" title="Submit loan application.">Submit loan application</button>
<button type="submit" class="cancelloanapp" id="cancelloanapp" name="_eventId_cancel" title="Cancel loan application.">Cancel</button>
</span>
</div>
<!-- other options -->
</td>
</tr>
</table>
</fieldset>
</form>
</script>
<script id="newLoanFormTemplateMin" type="text/x-jquery-tmpl">
<form id="entityform">
<div id="formerrors"></div>
<input type="hidden" id="clientId" name="clientId" value="{{=clientId}}" />
<label for="clientname">Applicant:</label>
<input id="clientname" name="clientName" title="" type="text" value="{{=clientName}}" disabled="disabled" />
<label for="productId">Product:</label>
<select name="productId" id="productId">
<option value="-1">--Select Product--</option>
{{#each allowedProducts}}
{{#if $ctx.number($parent.parent.data.productId)===$ctx.number(id)}}
<option value="{{=$ctx.number(id)}}" selected="selected">{{=name}}</option>
{{#else}}
<option value="{{=$ctx.number(id)}}">{{=name}}</option>
{{/if}}
{{/each}}
</select>
</form>
</script>
<script id="noteListViewTemplate" type="text/x-jquery-tmpl">
{{#if notes.length > 0}}
<div class="ui-widget .ui-widget-content ui-corner-all notecontainer">
<div class="ui-widget-header">
<span class="ui-icon ui-icon-info" style="float: left; margin-right: 5px;" ></span>
<span>{{=title}}</span>
</div>
<div class="ui-widget ui-widget-content ui-corner-all">
{{#each notes}}
<div>
<div class="notespacer">
<span class="ui-icon ui-icon-note" style="float: left; margin-right: 5px;"></span>
{{#if noteType.id === 100}}
<span>Client note:</span>
{{/if}}
{{#if noteType.id === 200}}
<span>Loan note:</span>
{{/if}}
{{#if noteType.id === 300}}
<span>Loan transaction note:</span>
{{/if}}
<span><a href="#" class="editclientnote" id="editclientnotelink{{=id}}">Edit</a></span>
</div>
<div class="notecontent">{{=note}}</div>
<div class="notespacer">
<span class="ui-icon ui-icon-person" style="float: left; margin-right: 5px;" ></span>
<span class="noteusername">{{=updatedByUsername}}</span>
<span>&nbsp;{{=$ctx.globalDateTime(updatedOn)}}</span>
</div>
</div>
{{/each}}
</div>
</div>
{{/if}}
</script>
<script id="noteFormTemplate" type="text/x-jquery-tmpl">
<form id="entityform">
<div id="formerrors"></div>
<label for="note">Note:</label>
<textarea rows="10" cols="75" id="note" name="note" cssClass="text ui-widget-content ui-corner-all">{{=note}}</textarea>
</form>
</script>
<script id="clientSearchTabTemplate" type="text/x-jquery-tmpl">
<form method="post" id="viewClient" name="viewClient" action="switchToClient">
<label for="client">Choose client:</label>
<select name="client" id="client">
<option value="0">--Select Client--</option>
{{#each clients}}
<option value="{{=id}}">{{=displayName}}&nbsp;-&nbsp;({{=officeName}})</option>
{{/each}}
</select>
</form>
</script>
<script id="clientFormTemplate" type="text/x-jquery-tmpl">
<form id="entityform">
<div id="formerrors"></div>
<label for="office">Office:</label>
<select id="officeId" name="officeId" title="">
<option value="">--Select Office--</option>
{{#each allowedOffices}}
{{#if $ctx.number($parent.parent.data.officeId)===$ctx.number(id)}}
<option value="{{=$ctx.number(id)}}" selected="selected">{{=name}}</option>
{{#else}}
<option value="{{=$ctx.number(id)}}">{{=name}}</option>
{{/if}}
{{/each}}
</select>
<table>
<tr>
<td>
<label for="firstname">First name:</label>
<input id="firstname" name="firstname" title="" type="text" value="{{=firstname}}"/>
</td>
<td>
<label for="lastname">Last name:</label>
<input id="lastname" name="lastname" title="" type="text" value="{{=lastname}}"/>
</td>
<tr>
<tr>
<td colspan="2">
<label for="clientOrBusinessName">Client or Business name:</label>
<input id="clientOrBusinessName" name="clientOrBusinessName" title="" type="text" value="{{=fullname}}" style="width:100%"/>
</td>
</tr>
</table>
<input type="hidden" id="dateFormat" name="dateFormat" value="dd MMMM yyyy" />
<label for="joiningDate">Joining date:</label>
<input id="joiningDate" name="joiningDate" title="" type="text" class="datepickerfield" value="{{=$ctx.globalDate(joinedDate)}}"/>
</form>
</script>
<script id="clientAccountSummariesTemplate" type="text/x-jquery-tmpl">
{{#if $ctx.numberGreaterThanZero(anyLoanCount)}}
{{#if $ctx.numberGreaterThanZero(pendingApprovalLoanCount)}}
<div class="row">
<span class="longrowlabel">Pending approval loans ({{=$ctx.number(pendingApprovalLoanCount)}}):</span>
<span class="rowvalue">
{{#each pendingApprovalLoans}}
<span class="loanaccount"><a href="https://localhost:8443/mifosng-provider/api/v1/loans/{{=id}}?associations=ALL" id="loan{{=id}}" class="openloanaccount" title="{{=loanProductName}}: &#35;{{=id}}">{{=loanProductName}}: &#35;{{=id}}</a></span>
{{/each}}
</span>
</div>
{{/if}}
{{#if $ctx.numberGreaterThanZero(awaitingDisbursalLoanCount)}}
<div class="row">
<span class="longrowlabel">Awaiting disbursal loans ({{=$ctx.number(awaitingDisbursalLoanCount)}}):</span>
<span class="rowvalue">
{{#each awaitingDisbursalLoans}}
<span class="loanaccount"><a href="https://localhost:8443/mifosng-provider/api/v1/loans/{{=id}}?associations=ALL" id="loan{{=id}}" class="openloanaccount" title="{{=loanProductName}}: &#35;{{=id}}">{{=loanProductName}}: &#35;{{=id}}</a></span>
{{/each}}
</span>
</div>
{{/if}}
{{#if $ctx.numberGreaterThanZero(activeLoanCount)}}
<div class="row">
<span class="longrowlabel">Active loans ({{=$ctx.number(activeLoanCount)}}):</span>
<span class="rowvalue">
{{#each openLoans}}
<span class="loanaccount"><a href="https://localhost:8443/mifosng-provider/api/v1/loans/{{=id}}?associations=ALL" id="loan{{=id}}" class="openloanaccount" title="{{=loanProductName}}: &#35;{{=id}}">{{=loanProductName}}: &#35;{{=id}}</a></span>
{{/each}}
</span>
</div>
{{/if}}
{{#if $ctx.numberGreaterThanZero(closedLoanCount)}}
<div class="row">
<div class="longrowlabel">Closed loans ({{=$ctx.number(closedLoanCount)}}):</div>
<div class="rowvalue">
{{#each closedLoans}}
<span class="loanaccount"><a href="https://localhost:8443/mifosng-provider/api/v1/loans/{{=id}}?associations=ALL" id="loan{{=id}}" class="openloanaccount" title="{{=loanProductName}}: &#35;{{=id}}">{{=loanProductName}}: &#35;{{=id}}</a></span>
{{/each}}
</div>
</div>
{{/if}}
{{#else}}
<div>
No accounts exist</div>
{{/if}}
</script>
<script id="clientDataTabTemplate" type="text/x-jquery-tmpl">
<span id="toolbar" class="ui-widget-header ui-corner-all">
<!--
<button id="cashflowbtn{{=id}}" class="casflowbtn">New cashflow analysis</button>
-->
<button id="newloanbtn{{=id}}" class="newloanbtn">New loan application</button>
<button id="addnotebtn{{=id}}" class="addnotebtn">Add note</button>
</span>
<hr/>
<div id="clienttabcontent">
<div id="clienttableftpane" style="float:left; max-width: 700px; width: 700px;">
<div class="row">
<span class="longrowlabel">Name:</span>
<span class="rowvalue">{{=displayName}}</span>
</div>
<div class="row">
<span class="longrowlabel">Branch:</span>
<span class="rowvalue">{{=officeName}}</span>
</div>
<div class="row">
<span class="longrowlabel">Joined on:</span>
<span class="rowvalue">{{=$ctx.globalDate(joinedDate)}}</span>
</div>
<p><b>Account Overview</b></p>
<div id="clientaccountssummary"></div>
<div id="clientadditionaldata"></div>
</div>
<!-- end of left pane content -->
<!-- placeholder for notes content -->
<div id="clienttabrightpane" style="float:right;"></div>
</div>
<div style="clear: both;"></div>
</script>
<script id="loanDataTabTemplate" type="text/x-jquery-tmpl">
{{#each permissions}}
{{#if anyActionOnLoanAllowed}}
<div id="loanactions">
<span id="toolbar" class="ui-widget-header ui-corner-all">
{{#if rejectAllowed}}
<button id="rejectbtn{{=$parent.parent.parent.data.id}}" class="rejectloan">Reject</button>
{{/if}}
{{#if withdrawnByApplicantAllowed}}
<button id="withdrawnbyapplicantloanbtn{{=$parent.parent.parent.data.id}}" class="withdrawnbyapplicantloan">Withdrawn By Applicant</button>
{{/if}}
{{#if pendingApproval}}
<button id="approvebtn{{=$parent.parent.parent.data.id}}" class="approveloan">Approve</button>
{{/if}}
{{#if pendingApproval}}
<button id="deletebtn{{=$parent.parent.parent.data.id}}" class="deleteloan">Delete</button>
{{/if}}
{{#if undoApprovalAllowed}}
<button id="undoapprovebtn{{=$parent.parent.parent.data.id}}" class="undoapproveloan">Undo Approval</button>
{{/if}}
{{#if disbursalAllowed}}
<button id="disbursebtn{{=$parent.parent.parent.data.id}}" class="disburseloan">Disburse</button>
{{/if}}
{{#if undoDisbursalAllowed}}
<button id="undodisbursalbtn{{=$parent.parent.parent.data.id}}" class="undodisbursalloan">Undo Disbursal</button>
{{/if}}
{{#if makeRepaymentAllowed}}
<button id="repaymentbtn{{=$parent.parent.parent.data.id}}" class="repaymentloan">Make Repayment</button>
{{/if}}
{{#if waiveAllowed}}
<button id="waivebtn{{=$parent.parent.parent.data.id}}" class="waiveloan">Waive</button>
{{/if}}
</span>
</div>
{{/if}}
{{/each}}
<div id="loantabs{{=id}}" class="loantabs">
<ul>
<li><a href="#details{{=id}}" title="details">Details</a></li>
<li><a href="#schedule{{=id}}" title="schedule">Schedule</a></li>
{{#if loanRepayments}}
<li><a href="#repayments{{=id}}" title="repayments">Repayments</a></li>
{{/if}}
</ul>
<!-- first loan tab -->
<div id="details{{=id}}" style="margin-top: 5px;">
<div class="row">
<span class="longrowlabel">Status:</span>
<span class="rowvalue">{{=lifeCycleStatusText}} (since {{=$ctx.globalDate(lifeCycleStatusDate)}})
{{#if $ctx.numberGreaterThanZero(summary.totalInArrears.amount)}}
{{#if actualDisbursementDate !== null}}
- In arrears by: {{=$ctx.moneyWithCurrency($parent.parent.data.summary.totalInArrears)}}
{{/if}}
{{/if}}
</span>
</div>
{{#if submittedOnDate !== null}}
<div class="row">
<span class="longrowlabel">Sumbitted on:</span>
<span class="rowvalue">{{=$ctx.globalDate(submittedOnDate)}}</span>
</div>
{{/if}}
{{#if approvedOnDate !== null}}
<div class="row">
<span class="longrowlabel">Approved on:</span>
<span class="rowvalue">{{=$ctx.globalDate(approvedOnDate)}}</span>
</div>
{{/if}}
{{#if actualDisbursementDate === null}}
<div class="row">
<span class="longrowlabel">Expected dibursement on:</span>
<span class="rowvalue">{{=$ctx.globalDate(expectedDisbursementDate)}}</span>
</div>
{{/if}}
{{#if actualDisbursementDate !== null}}
<div class="row">
<span class="longrowlabel">Disbursed on:</span>
<span class="rowvalue">{{=$ctx.globalDate(actualDisbursementDate)}}</span>
</div>
{{/if}}
{{#if expectedFirstRepaymentOnDate !== null}}
<div class="row">
<span class="longrowlabel">First repayment due on:</span>
<span class="rowvalue">{{=$ctx.globalDate(expectedFirstRepaymentOnDate)}}</span>
</div>
{{/if}}
{{#if interestChargedFromDate !== null}}
<div class="row">
<span class="longrowlabel">Interest charged from:</span>
<span class="rowvalue">{{=$ctx.globalDate(interestChargedFromDate)}}</span>
</div>
{{/if}}
{{#if actualDisbursementDate !== null}}
<div class="row">
<span class="longrowlabel">Expected to mature on:</span>
<span class="rowvalue">{{=$ctx.globalDate(expectedMaturityDate)}}</span>
</div>
{{/if}}
{{#if closedOnDate !== null}}
<div class="row">
<span class="longrowlabel">Closed on:</span>
<span class="rowvalue">{{=$ctx.globalDate(closedOnDate)}}</span>
</div>
{{/if}}
<div class="row">
<span class="longrowlabel">Expected loan term:</span>
<span class="rowvalue">{{=convenienceData.expectedLoanTermInMonths}} Months / ({{=convenienceData.expectedLoanTermInDays}} Days)</span>
</div>
{{#if closedOnDate !== null}}
<div class="row">
<span class="longrowlabel">Actual loan term:</span>
<span class="rowvalue">{{=convenienceData.actualLoanTermInMonths}} Months / ({{=convenienceData.actualLoanTermInDays}} Days)</span>
</div>
{{/if}}
<br/>
<div class="row">
<span class="longrowlabel">Product:</span>
<span class="rowvalue">{{=loanProductName}}</span>
</div>
<div class="row">
<span class="longrowlabel">External id:</span>
<span class="rowvalue">{{=externalId}}</span>
</div>
<br/>
<div class="row">
<span class="longrowlabel">Currency:</span>
<span class="rowvalue">{{=principal.defaultName}}</span>
</div>
<div class="row">
<span class="longrowlabel">Principal:</span>
<span class="rowvalue">{{=$ctx.moneyWithCurrency(principal)}}</span>
</div>
<div class="row">
<span class="longrowlabel">Repayments:</span>
<span class="rowvalue">{{=numberOfRepayments}} every {{=repaymentEvery}}&nbsp;{{=repaymentFrequencyType.value}}</span>
</div>
<div class="row">
<span class="longrowlabel">Amortization:</span>
<span class="rowvalue">{{=amortizationType.value}}</span>
</div>
<div class="row">
<span class="longrowlabel">Interest:</span>
<span class="rowvalue">{{=$ctx.decimal(annualInterestRate, 4)}}% per annum ({{=$ctx.decimal(interestRatePerPeriod, 4)}}%&nbsp; {{=interestRateFrequencyType.value}}) - {{=interestType.value}}</span>
</div>
<div id="loanadditionaldata{{=id}}"></div>
</div>
<!-- second loan tab -->
<div id="schedule{{=id}}" style="margin-top: 5px;">
<table id="summarytable{{=id}}" class="pretty displayschedule">
<caption>Summary</caption>
<thead>
<tr>
<th class="empty"></th>
<th>Original Loan</th>
<th>Paid</th>
<th>Waived</th>
<th>Outstanding</th>
</tr>
</thead>
<tbody>
<tr>
<th>Principal</th>
<td>{{=$ctx.money(summary.originalPrincipal)}}</td>
<td>{{=$ctx.money(summary.principalPaid)}}</td>
<td>&nbsp;</td>
<td>{{=$ctx.money(summary.principalOutstanding)}}</td>
</tr>
<tr>
<th>Interest</th>
<td>{{=$ctx.money(summary.originalInterest)}}</td>
<td>{{=$ctx.money(summary.interestPaid)}}</td>
<td>&nbsp;</td>
<td>{{=$ctx.money(summary.interestOutstanding)}}</td>
</tr>
</tbody>
<tfoot>
<tr>
<th>Total</th>
<th>{{=$ctx.money(summary.originalTotal)}}</th>
<th>{{=$ctx.money(summary.totalPaid)}}</th>
<th>{{=$ctx.money(summary.totalWaived)}}</th>
<th>{{=$ctx.money(summary.totalOutstanding)}}</th>
</tr>
</tfoot>
</table>
<br/>
<table id="repaymentschedule_todate{{=id}}" class="pretty displayschedule">
<caption>Repayment Schedule</caption>
<colgroup span="2"></colgroup>
<colgroup span="3">
<col class="lefthighlightcol">
<col>
<col class="righthighlightcol">
</colgroup>
<colgroup span="3">
<col class="lefthighlightcol">
<col>
<col class="righthighlightcol">
</colgroup>
<colgroup span="3">
<col class="lefthighlightcol">
<col>
<col class="righthighlightcol">
</colgroup>
<thead>
<tr>
<th colspan="2" scope="colgroup" class="empty">&nbsp;</th>
<th colspan="3" scope="colgroup" class="highlightcol">Principal</th>
<th colspan="3" scope="colgroup" class="highlightcol">Interest</th>
<th colspan="3" scope="colgroup" class="highlightcol">Total</th>
</tr>
<tr>
<th scope="col">#</th>
<th scope="col">Date</th>
<th scope="col" class="lefthighlightcolheader">Expected</th>
<th scope="col">Paid</th>
<th scope="col" class="righthighlightcolheader">Outstanding</th>
<th scope="col" class="lefthighlightcolheader">Expected</th>
<th scope="col">Paid</th>
<th scope="col" class="righthighlightcolheader">Outstanding</th>
<th scope="col" class="lefthighlightcolheader">Expected</th>
<th scope="col">Paid</th>
<th scope="col" class="righthighlightcolheader">Outstanding</th>
</tr>
</thead>
<tbody>
{{#each repaymentSchedule.periods}}
<tr>
<td scope="row">{{=$ctx.number(period)}}</td>
<td>{{=$ctx.globalDate(date)}}</td>
<td class="lefthighlightcolheader">{{=$ctx.money(principal)}}</td>
<td>{{=$ctx.money(principalPaid)}}</td>
<td class="righthighlightcolheader">{{=$ctx.money(principalOutstanding)}}</td>
<td class="lefthighlightcolheader">{{=$ctx.money(interest)}}</td>
<td>{{=$ctx.money(interestPaid)}}</td>
<td class="righthighlightcolheader">{{=$ctx.money(interestOutstanding)}}</td>
<td class="lefthighlightcolheader">{{=$ctx.money(total)}}</td>
<td>{{=$ctx.money(totalPaid)}}</td>
<td class="righthighlightcolheader">{{=$ctx.money(totalOutstanding)}}</td>
</tr>
{{/each}}
</tbody>
<tfoot>
<tr>
<th colspan="2">Total</th>
<th class="lefthighlightcolheader">{{=$ctx.money(summary.originalPrincipal)}}</th>
<th>{{=$ctx.money(summary.principalPaid)}}</th>
<th class="righthighlightcolheader">{{=$ctx.money(summary.principalOutstanding)}}</th>
<th class="lefthighlightcolheader">{{=$ctx.money(summary.originalInterest)}}</th>
<th>{{=$ctx.money(summary.interestPaid)}}</th>
<th class="righthighlightcolheader">{{=$ctx.money(summary.interestOutstanding)}}</th>
<th class="lefthighlightcolheader">{{=$ctx.money(summary.originalTotal)}}</th>
<th>{{=$ctx.money(summary.totalPaid)}}</th>
<th class="righthighlightcolheader">{{=$ctx.money(summary.totalOutstanding)}}</th>
</tr>
</tfoot>
</table>
</div>
{{#if loanRepayments}}
<!-- Third loan tab -->
<div id="repayments{{=id}}" style="margin-top: 5px;">
<table id="newrepaymentsactivity{{=id}}" class="pretty displaypayments">
<caption>Repayment Activity</caption>
<thead>
<tr>
<th>Payment Date</th>
<th>Amount Paid</th>
<th>Principal Portion</th>
<th>Interest Portion</th>
{{#if actualDisbursementDate !== null}}
<th>Action</th>
{{/if}}
</tr>
</thead>
<tbody>
{{#each loanRepayments}}
<tr>
<td>{{=$ctx.globalDate(date)}}</td>
<td>{{=$ctx.money(total)}}</td>
<td>{{=$ctx.money(principal)}}</td>
<td>{{=$ctx.money(interest)}}</td>
{{#if $parent.parent.data.actualDisbursementDate !== null}}
<td><button id="adjustrepaymentbtn{{=$parent.parent.parent.data.id}}_{{=id}}" class="adjustloanrepayment">Adjust</button></td>
{{/if}}
</tr>
{{/each}}
</tbody>
</table>
</div>
{{/if}}
</div>
</script>
<script id="stateTransitionLoanFormTemplate" type="text/x-jquery-tmpl">
<form id="entityform">
<div id="formerrors"></div>
<input type="hidden" id="dateFormat" name="dateFormat" value="dd MMMM yyyy" />
<label for="eventDate">On:</label>
<input id="eventDate" name="eventDate" title="" class="datepickerfield" />
<label for="note">Note:</label>
<textarea rows="3" cols="53" id="note" name="note"></textarea>
</form>
</script>
<script id="undoStateTransitionLoanFormTemplate" type="text/x-jquery-tmpl">
<form id="entityform">
<div id="formerrors"></div>
<label for="note">Note:</label>
<textarea rows="6" cols="53" id="note" name="note"></textarea>
</form>
</script>
<script id="transactionLoanFormTemplate" type="text/x-jquery-tmpl">
<form id="entityform">
<div id="formerrors"></div>
<input type="hidden" id="dateFormat" name="dateFormat" value="dd MMMM yyyy" />
<input type="hidden" id="locale" name="locale" value="{{=$ctx.currentLocale()}}" />
<label for="transactionDate">Repayment on:</label>
<input id="transactionDate" name="transactionDate" class="text ui-widget-content ui-corner-all datepickerfield" title=""d value="{{=$ctx.globalDate(date)}}"/>
<label for="transactionAmount">Amount:</label>
<input id="transactionAmount" name="transactionAmount" class="text ui-widget-content ui-corner-all" title="" value="{{=$ctx.money(total)}}" />
<label for="note">Note:</label>
<textarea rows="3" cols="53" id="note" name="note" class="text ui-widget-content ui-corner-all"></textarea>
</form>
</script>
<script id="formErrorsTemplate" type="text/x-jquery-tmpl">
<div class="ui-widget">
<div class="ui-state-error ui-corner-all">
<span class="ui-icon ui-icon-alert" style="float: left; margin-right: 5px;" ></span>
<span>{{=title}}</span>
<div style="margin-left: 5px;">
{{#each errors}}
<div>
<em>{{=message}}</em>
</div>
{{/each}}
</div>
</div>
</div>
</script></body>
</html>