Siebel Finance Guide > Business Services for Siebel Financial Services > Using the Calculation Manager >
Example of Using Embedded eScript for Mortgage Calculation
For compound calculations, embedded eScript is a more appropriate mechanism. The following is an example of a mortgage calculation using eScript: var Amount= 0; var NumPeriods= 0; var Rate= 0; var InterestPaid = new Array; var Payment = new Array; var Period = new Array; var PrincipleBalance = new Array; var PrinciplePaid = new Array; var PeriodPayment = 0; var TotalInterest = 0; var TotalPayment = 0;
function GetInput (Inputs) {
with(Inputs) {
var temp; temp = GetProperty("Amount"); if (temp.length!=0)
Amount= ToNumber(temp);
temp = GetProperty("NumPeriods"); if (temp.length!=0)
NumPeriods= ToNumber(temp);
temp = GetProperty("Rate"); if (temp.length!=0)
Rate= ToNumber(temp);
}
}
function Main() {
Period[0] = 0; InterestPaid[0] = 0; PrinciplePaid[0] = 0; Payment[0] =0; PrincipleBalance[0] = Amount; Rate = Rate /1200; PeriodPayment = Amount / (1.00/Rate - (1.00/Rate)/Math.pow((1.00+Rate), NumPeriods));
for(var i=1; i<=NumPeriods-1; i++) {
Period[i] = i; InterestPaid[i] = PrincipleBalance[i-1]*Rate; Payment[i] = PeriodPayment; PrinciplePaid[i] = Payment[i]-InterestPaid[i]; PrincipleBalance[i] = PrincipleBalance[i-1] - PrinciplePaid[i];
}
TotalPayment = NumPeriods * PeriodPayment; TotalInterest = TotalPayment - Amount;
} function Service_PreInvokeMethod (MethodName, Inputs, Outputs) {
GetInput(Inputs); Main(); SetOutput(Outputs); return( CancelOperation );
}
function SetOutput (Outputs) {
Outputs.SetType("Result");
var psArray = TheApplication().NewPropertySet(); psArray.SetType("Array"); var len = InterestPaid.length; for(var j=0; j<=len-1; j++) {
var psArrayElement = TheApplication().NewPropertySet(); psArrayElement.SetProperty("InterestPaid",InterestPaid[j]); psArrayElement.SetProperty("Payment",Payment[j]); psArrayElement.SetProperty("Period",Period[j]); psArrayElement.SetProperty("PrincipleBalance",PrincipleBalance[j]); psArrayElement.SetProperty("PrinciplePaid",PrinciplePaid[j]); psArray.AddChild(psArrayElement);
} Outputs.AddChild(psArray);
var psPeriodPayment= TheApplication().NewPropertySet(); psPeriodPayment.SetProperty("PeriodPayment",PeriodPayment); Outputs.AddChild(psPeriodPayment);
var psTotalInterest= TheApplication().NewPropertySet(); psTotalInterest.SetProperty("TotalInterest",TotalInterest); Outputs.AddChild(psTotalInterest);
var psTotalPayment= TheApplication().NewPropertySet(); psTotalPayment.SetProperty("TotalPayment",TotalPayment); Outputs.AddChild(psTotalPayment);
}
|