SELECT E.EMP_CODE,E.NAME,E.SNO,E.MONTH,LAG(E.BALANCE,1,E.LOAN_AMT) OVER (PARTITION BY E.EMP_CODE ORDER BY E.SNO) AS PRINCIPAL,E.INT,
(E.BALANCE + E.EMI + E.ADJ) AS PRIN_INT,E.EMI,E.ADJ,E.BALANCE,E.REMARKS FROM (
  SELECT D.EMP_CODE,D.NAME,D.LOAN_AMT,D.SNO,D.MONTH,D.INT,D.EMI,D.ADJ,
  D.LOAN_AMT + (SUM(D.INT) OVER (PARTITION BY D.EMP_CODE ORDER BY D.SNO)) - (SUM(D.EMI) OVER (PARTITION BY D.EMP_CODE ORDER BY D.SNO))
    - (SUM(D.ADJ) OVER (PARTITION BY D.EMP_CODE ORDER BY D.SNO)) BALANCE,D.REMARKS
  FROM (
    SELECT A.EMP_CODE,TRIM(A.EMP_FNAME) || ' ' || TRIM(A.EMP_MNAME) || ' ' ||TRIM(A.EMP_LNAME) NAME,@@LOAN AMOUNT@@ LOAN_AMT,B.SNO,
    TO_CHAR(ADD_MONTHS(TO_DATE(@@START RECOVERY FROM@@||'01','YYYYMMDD'),B.SNO-1),'Mon-yy') MONTH,
    TO_NUMBER(DDF_HR_CALC_EMI_INT(A.EMP_CODE,@@LOAN AMOUNT@@,@@START RECOVERY FROM@@,@@INTEREST@@,@@TERM (MONTHS)@@,@@LOAN TYPE - [E]MI / (N)ORMAL@@,'I',B.SNO,@@PERK INCREMENT PERCENTAGE@@,@@ADJUST PERK (Y/N)@@,@@ADJUSTABLE PERCENTAGE@@)) INT,
    TO_NUMBER(DDF_HR_CALC_EMI_INT(A.EMP_CODE,@@LOAN AMOUNT@@,@@START RECOVERY FROM@@,@@INTEREST@@,@@TERM (MONTHS)@@,@@LOAN TYPE - [E]MI / (N)ORMAL@@,'E',B.SNO,@@PERK INCREMENT PERCENTAGE@@,@@ADJUST PERK (Y/N)@@,@@ADJUSTABLE PERCENTAGE@@)) EMI,
    TO_NUMBER(DDF_HR_CALC_EMI_INT(A.EMP_CODE,@@LOAN AMOUNT@@,@@START RECOVERY FROM@@,@@INTEREST@@,@@TERM (MONTHS)@@,@@LOAN TYPE - [E]MI / (N)ORMAL@@,'A',B.SNO,@@PERK INCREMENT PERCENTAGE@@,@@ADJUST PERK (Y/N)@@,@@ADJUSTABLE PERCENTAGE@@)) ADJ,
    DDF_HR_CALC_EMI_INT(A.EMP_CODE,@@LOAN AMOUNT@@,@@START RECOVERY FROM@@,@@INTEREST@@,@@TERM (MONTHS)@@,@@LOAN TYPE - [E]MI / (N)ORMAL@@,'R',B.SNO,@@PERK INCREMENT PERCENTAGE@@,@@ADJUST PERK (Y/N)@@,@@ADJUSTABLE PERCENTAGE@@) REMARKS
    FROM EMPLOYEE A,NSRNO B,SITE C,SUN_GEOBI_ACCESS F
    WHERE C.SITE_CODE = A.EMP_SITE
    AND A.EMP_CODE = &&0.EMPLOYEE CODE&&
    AND B.SNO >= 1
    AND B.SNO <= &&1.TERM (MONTHS)&&
    AND @@LOAN AMOUNT@@ = &&2.LOAN AMOUNT&&
    AND @@START RECOVERY FROM@@ = &&3.START RECOVERY FROM&&
    AND @@INTEREST@@ = &&4.INTEREST&&
    AND @@LOAN TYPE - [E]MI / (N)ORMAL@@ = &&5.LOAN TYPE - [E]MI / (N)ORMAL&&
    AND @@PERK INCREMENT PERCENTAGE@@ = &&6.PERK INCREMENT PERCENTAGE&&
    AND @@ADJUST PERK (Y/N)@@ = &&7.ADJUST PERK (Y/N)&&
    AND @@ADJUSTABLE PERCENTAGE@@ = &&8.ADJUSTABLE PERCENTAGE&&
    AND F.USER_ID = :loginCode:
    AND F.GEO_LOC = C.GEO_LOC
  ) D
) E
