Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
Component Sharing
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
2
Merge Requests
2
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
CI / CD Analytics
Repository Analytics
Value Stream Analytics
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Gagandeep Singh Bhatia
Component Sharing
Commits
205bf12b
Commit
205bf12b
authored
Nov 06, 2024
by
Sonawane Amol Madhjuar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Delete due_date
parent
a0faaeee
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
496 deletions
+0
-496
Amol/ITIOmniFin/due_date
Amol/ITIOmniFin/due_date
+0
-496
No files found.
Amol/ITIOmniFin/due_date
deleted
100644 → 0
View file @
a0faaeee
CREATE DEFINER=`root`@`localhost` PROCEDURE `due_date_change`(IN I_COMPANY_ID INT, IN I_RESCH_ID INT(10),
IN I_CURR_DATE DATE, IN I_USER_ID VARCHAR(10),
IN I_STATUS VARCHAR(1), IN I_REMARKS VARCHAR(100),
OUT O_FLAT_RATE DECIMAL(10,7), OUT O_LOAN_EFF_RATE DECIMAL(10,7),
OUT O_MKTIRR1 DECIMAL(10,7), OUT O_MKTIRR2 DECIMAL(10,7),
out o_error_flag varchar(1), out o_error_msg Varchar(100))
BEGIN
DECLARE V_RESCH_EFF_DATE DATE;
DECLARE V_PREPAYMENT_AMOUNT DECIMAL(22,4);
DECLARE V_RESCH_CHARGES DECIMAL(22,4);
DECLARE V_DEFERAL_FROM_INSTL INT(3);
DECLARE V_INSTL_DEFERRED INT(3);
DECLARE V_INTEREST_METHOD VARCHAR(1);
DECLARE V_NEXT_DUE_DATE DATE;
DECLARE V_DEAL_ID INT(10);
Declare v_LOAN_PRODUCT_CATEGORY VARCHAR(10);
Declare v_LOAN_PRODUCT VARCHAR(10);
Declare V_LOAN_CUSTOMER_ID VARCHAR(10);
Declare v_LOAN_SCHEME int(10);
Declare v_LOAN_PROMO_SCHEME int(10);
Declare v_LOAN_PRODUCT_TYPE VARCHAR(1);
Declare v_LOAN_INITIATION_DATE DATE;
Declare v_LOAN_APPROVAL_DATE DATE;
Declare v_LOAN_DISBURSAL_DATE DATE;
Declare v_LOAN_REPAY_EFF_DATE DATE;
Declare v_LOAN_MATURITY_DATE DATE;
Declare v_LOAN_LOAN_AMOUNT DECIMAL(22,4) DEFAULT 0;
Declare v_LOAN_TENURE Int(5);
Declare v_LOAN_REPAYMENT_FREQ VARCHAR(1);
Declare v_LOAN_RATE_TYPE VARCHAR(1);
Declare v_LOAN_RATE_METHOD VARCHAR(1);
Declare v_LOAN_FINAL_RATE DECIMAL(10,7) DEFAULT 0;
Declare V_FLAT_RATE DECIMAL(10,7) DEFAULT 0;
Declare v_LOAN_REPAYMENT_TYPE VARCHAR(1);
Declare v_LOAN_INSTALLMENT_TYPE VARCHAR(1);
Declare v_LOAN_INSTALLMENT_MODE VARCHAR(1);
Declare v_LOAN_NUMBER_DISBURSAL Int(3);
Declare v_LOAN_ADVANCE_INSTL Int(3);
Declare v_LOAN_DUE_DAY Int(2);
DECLARE V_LOAN_EFF_RATE DECIMAL(10,7);
Declare v_LOAN_DAYS_BASIS VARCHAR(1);
Declare v_LOAN_DAYS_PER_YEAR int(3);
Declare v_RV_AMOUNT DECIMAL(22,4) DEFAULT 0;
DECLARE V_INSTL_ROUND_TYPE VARCHAR(1);
DECLARE V_INSTL_ROUNDING INT (1);
DECLARE V_INT_ROUND_TYPE VARCHAR(1);
DECLARE V_INT_ROUNDING INT (1);
DECLARE V_FREQ_MONTHS INT (2);
DECLARE V_NO_OF_INSTL INT(3);
DECLARE V_ERROR_FLAG VARCHAR (1);
DECLARE V_ERROR_MSG VARCHAR (100);
DECLARE V_TOTAL_INSTALLMENT_AMOUNT DECIMAL (22,4) DEFAULT 0;
DECLARE V_INSTALLMENT_AMOUNT DECIMAL (22,4) DEFAULT 0;
DECLARE V_PRINCIPAL_AMOUNT DECIMAL (22,4) DEFAULT 0;
DECLARE V_INTEREST_AMOUNT DECIMAL (22,4) DEFAULT 0;
DECLARE V_PREV_INSTL_AMOUNT DECIMAL (22,4);
DECLARE V_PREV_PRIN_COMP DECIMAL (22,4);
DECLARE V_TOTAL_PRINCIPAL DECIMAL(22,4) DEFAULT 0;
DECLARE V_RECOVERY_AMOUNT DECIMAL(22,4) default 0;
DECLARE DONE INT;
DECLARE V_LOAN_ID INT(10);
DECLARE V_SEQ_NO INT (3);
DECLARE v_FROM_INSTL_NO INT(3) default 0 ;
DECLARE v_TO_INSTL_NO INT(3) default 0;
DECLARE V_RECOVERY_PERCENT DECIMAL (5,2) DEFAULT 0;
DECLARE I INT DEFAULT 0;
DECLARE J INT DEFAULT 0;
DECLARE V_LAST_INSTL_NO INT(3);
DECLARE V_DUE_DATE DATE;
DECLARE V_ORG_DUE_DATE DATE;
DECLARE V_INSTL_AMOUNT DECIMAL (22,4);
DECLARE V_PRIN_COMP DECIMAL (22,4);
DECLARE V_INT_COMP DECIMAL (22,4);
DECLARE V_INT_COMP1 DECIMAL (22,4);
DECLARE V_ORG_INT_COMP DECIMAL (22,4);
DECLARE V_EXCESS_INT_COMP DECIMAL (22,4);
DECLARE V_PRIN_OS DECIMAL (22,4) default 0;
DECLARE V_ADV_FLAG VARCHAR(1);
DECLARE V_BILL_FLAG VARCHAR(1);
DECLARE V_COUNT INT(5) DEFAULT 0;
DECLARE V_REC_TYPE VARCHAR(1);
DECLARE V_PREV_DUE_DATE DATE;
DECLARE V_DAYS INT(5) DEFAULT 0;
DECLARE V_INT_OS DECIMAL (22,4);
DECLARE V_PREV_PRIN_OS DECIMAL (22,4);
Declare v_MKTIRR1 DECIMAL (10,7) Default 0;
Declare v_MKTIRR2 DECIMAL (10,7) Default 0;
Declare v_UpFront_InFlow DECIMAL (22,4) default 0;
Declare v_End_OutFlow DECIMAL (22,4) default 0;
DECLARE v_TOTAL_RECOVERY DECIMAL (5,2) Default 0;
DECLARE V_OPPORTUNITY_INTEREST DECIMAL (10,7) DEFAULT 15;
DECLARE V_GEN_ROUND_TYPE VARCHAR(1) DEFAULT 'R';
DECLARE V_GEN_ROUND_PARA INT(1) DEFAULT 2;
DECLARE V_ADVANCE_AMOUNT DECIMAL(22,4) DEFAULT 0;
DECLARE V_SD_ADJ_FLAG VARCHAR(1) DEFAULT 'N';
DECLARE V_RECOVERY_TYPE VARCHAR(1);
declare V_TOTAL_AMOUNT DECIMAL(22,4);
Declare v_NEW_EffRate DECIMAL (10,7) Default 0;
DECLARE V_ALLOC_FLAG VARCHAR(1) DEFAULT 'N';
DECLARE V_INSTL_COUNT INT(5);
DECLARE V_LOAN_NO_OF_INSTALLMENT INT(5);
DECLARE V_PREV_INSTL_COUNT INT(3);
DECLARE V_INSTL_PLAN_HST_ID INT(10);
DECLARE V_REPAY_HST_ID INT(10);
DECLARE V_OLD_INTEREST DECIMAL(22,4);
DECLARE V_NEW_INTEREST DECIMAL(22,4);
DECLARE V_TXNADVICE_ID INT(10);
DECLARE V_TXN_TYPE VARCHAR(3);
DECLARE V_TXN_ID INT(10);
DECLARE V_ADVICE_DATE DATE;
DECLARE V_ADVICE_TYPE VARCHAR(1);
DECLARE V_CHARGE_CODE_ID INT(10);
DECLARE V_ADVICE_AMOUNT DECIMAL(22,4) DEFAULT 0;
DECLARE V_TXN_ADJUSTED_AMOUNT DECIMAL(22,4) DEFAULT 0;
DECLARE V_AMOUNT_IN_PROCESS DECIMAL(22,4) DEFAULT 0;
DECLARE V_CHARGE_CODE INT(10);
DECLARE V_CHARGE_ID INT(10);
DECLARE V_CHARGE_TYPE VARCHAR(1);
DECLARE V_CHARGE_AMOUNT DECIMAL(22,4) DEFAULT 0;
DECLARE V_BP_TYPE VARCHAR(3);
DECLARE V_BP_ID INT(10);
DECLARE V_BP_NAME VARCHAR(50);
DECLARE V_CHARGE_METHOD VARCHAR(1);
DECLARE V_TAX_RATE1 DECIMAL(7,4) DEFAULT 0;
DECLARE V_TAX_RATE2 DECIMAL(7,4) DEFAULT 0;
DECLARE V_TDS_RATE DECIMAL(7,4) DEFAULT 0;
DECLARE V_TDS_AMOUNT DECIMAL(22,4) DEFAULT 0;
DECLARE V_TAX_AMOUNT1 DECIMAL(22,4) DEFAULT 0;
DECLARE V_TAX_AMOUNT2 DECIMAL(22,4) DEFAULT 0;
DECLARE V_TDS_APPLICABLE VARCHAR(1) DEFAULT 'N';
DECLARE V_TAX_APPLICABLE VARCHAR(1) DEFAULT 'N';
DECLARE V_TAX_INCLUSIVE VARCHAR(1) DEFAULT 'N';
DECLARE I_DEPARTMENT INT(10);
DECLARE V_ACCOUNTING_FLAG VARCHAR(1) DEFAULT 'N';
DECLARE V_CHARGE_STR VARCHAR(1000) DEFAULT '';
DECLARE V_VOUCHER_STR VARCHAR(500);
DECLARE V_CHARGE_AMT DECIMAL(22,4) DEFAULT 0;
DECLARE V_VOUCHER_NO VARCHAR(20);
DECLARE V_EXCESS_INT_FLAG VARCHAR(1);
DECLARE V_ORG_SEQ_NO INT(3);
DECLARE V_DISBURSAL_STATUS VARCHAR(1);
DECLARE V_LAST_DUE_DATE DATE;
DECLARE V_INSTL_NO INT;
DECLARE V_LOAN_BRANCH INT;
DECLARE V_NPA_FLAG VARCHAR(30);
DECLARE V_LOAN_CUSTOMER_NAME VARCHAR(100);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
Begin
Rollback;
set o_Error_Flag = 'E';
set o_Error_msg = 'Due_Date_Change-Unknown exception in SQL Execution, Contact System Administrator...';
End;
DECLARE EXIT HANDLER FOR 1205
Begin
Rollback;
set o_Error_Flag = 'E';
set o_Error_msg = 'Due_Date_Change-RECORD IS LOCKED BY SOME OTHER USER, TRY AFTER SOME TIME';
End;
SET AUTOCOMMIT=0;
set o_Error_Flag = 'S';
set o_Error_msg = '';
Create Temporary Table IF NOT EXISTS Instl_Plan_TEMP (P_LOAN_ID INT(10), P_RECOVERY_TYPE VARCHAR(1), P_SEQ_NO INT(3), P_FROM_INSTL_NO INT(3), P_TO_INSTL_NO INT(3),
P_RECOVERY_PERCENT DECIMAL(7,4), P_PRINCIPAL_AMOUNT DECIMAL(22,4),
P_INSTALLMENT_AMOUNT DECIMAL (22,4),P_REC_TYPE VARCHAR(1));
DELETE FROM Instl_Plan_TEMP;
Create Temporary Table IF NOT EXISTS Repay_Temp (R_LOAN_ID int(10), R_Seq_No int (3), R_Org_Due_Date Date, R_Due_Date Date,
R_Instl_Amount DECIMAL (22,4), R_Prin_Comp DECIMAL (22,4), R_Int_Comp DECIMAL (22,4),
R_EXCESS_Int_Comp DECIMAL (22,4), R_Prin_OS DECIMAL (22,4), R_EFFRATE DECIMAL (10,7),
R_ADV_FLAG VARCHAR(1), R_BILL_FLAG VARCHAR(1), R_Count int(5), R_REC_TYPE VARCHAR(1),
R_ORG_SEQ_NO INT(3), R_OTHER_CHARGES DECIMAL(22,4) );
DELETE FROM Repay_Temp;
Create Temporary Table IF NOT EXISTS Repay_Temp1 (R_LOAN_ID int(10), R_Seq_No int (3), R_Org_Due_Date Date, R_Due_Date Date,
R_Instl_Amount DECIMAL (22,4), R_Prin_Comp DECIMAL (22,4), R_Int_Comp DECIMAL (22,4),
R_EXCESS_Int_Comp DECIMAL (22,4), R_Prin_OS DECIMAL (22,4), R_EFFRATE DECIMAL (10,7),
R_ADV_FLAG VARCHAR(1), R_BILL_FLAG VARCHAR(1), R_Count int(5), R_REC_TYPE VARCHAR(1),
R_ORG_SEQ_NO INT(3), R_OTHER_CHARGES DECIMAL(22,4));
DELETE FROM Repay_Temp1;
BEGIN
DECLARE Instl_Plan_Cur CURSOR for select P_RECOVERY_TYPE, P_LOAN_ID, P_SEQ_NO, P_FROM_INSTL_NO, P_TO_INSTL_NO, IFNULL(P_RECOVERY_PERCENT,0), IFNULL(P_PRINCIPAL_AMOUNT,0), IFNULL(P_INSTALLMENT_AMOUNT,0)
from Instl_Plan_TEMP
Where P_LOAN_ID = V_LOAN_ID
ORDER BY P_LOAN_ID, P_SEQ_NO;
DECLARE REPAY_TEMP_CUR CURSOR FOR SELECT R_LOAN_ID, R_SEQ_NO, R_ORG_DUE_DATE, R_DUE_DATE,
R_INSTL_AMOUNT, R_PRIN_COMP, R_INT_COMP,
R_EXCESS_INT_COMP, R_ADV_FLAG, R_BILL_FLAG, R_Prin_OS, IFNULL(R_REC_TYPE, 'I'), R_ORG_SEQ_NO
FROM REPAY_TEMP
ORDER BY R_LOAN_ID, R_ORG_SEQ_NO;
SELECT PARAMETER_VALUE INTO V_EXCESS_INT_FLAG
FROM PARAMETER_MST
WHERE PARAMETER_KEY = 'EXCESS_INT_FLAG';
IF DONE = 1 THEN
SET DONE = 0;
SET V_EXCESS_INT_FLAG = 'Y';
END IF;
SELECT LOAN_ID, RESCH_EFF_DATE, IFNULL(RESCH_CHARGES,0), ifnull(DEFERAL_FROM_INSTL,0), ifnull(INSTL_DEFERRED,0), GAP_INTEREST_METHOD, NEW_DUE_DATE
INTO V_LOAN_ID, V_RESCH_EFF_DATE, V_RESCH_CHARGES, V_DEFERAL_FROM_INSTL, V_INSTL_DEFERRED, V_INTEREST_METHOD, V_NEXT_DUE_DATE
FROM CR_RESCH_DTL
WHERE RESCH_ID = I_RESCH_ID;
IF DONE = 1 THEN
SET DONE = 0;
rollback;
set o_Error_Flag = 'E';
set o_Error_msg = 'DEFERRAL DETAILS NOT FOUND';
END IF;
Select LOAN_ID, LOAN_DEAL_ID, LOAN_PRODUCT, LOAN_SCHEME, LOAN_PROMO_SCHEME, LOAN_PRODUCT_TYPE, LOAN_INITIATION_DATE,
LOAN_APPROVAL_DATE, LOAN_DISBURSAL_DATE, LOAN_REPAY_EFF_DATE, LOAN_LOAN_AMOUNT, LOAN_TENURE, LOAN_REPAYMENT_FREQ, LOAN_RATE_TYPE,
LOAN_RATE_METHOD, LOAN_FINAL_RATE, LOAN_REPAYMENT_TYPE, LOAN_INSTALLMENT_TYPE, LOAN_INSTALLMENT_MODE,
LOAN_ADVANCE_INSTL, LOAN_DUE_DAY, LOAN_MATURITY_DATE, LOAN_EFF_RATE, LOAN_NO_OF_INSTALLMENT,
LOAN_FLAT_RATE, LOAN_EFF_RATE, LOAN_IRR1, LOAN_IRR2, DISBURSAL_STATUS,LOAN_BRANCH,NPA_FLAG,CUSTOMER_NAME
into V_LOAN_ID, V_DEAL_ID, v_LOAN_PRODUCT, v_LOAN_SCHEME, v_LOAN_PROMO_SCHEME, v_LOAN_PRODUCT_TYPE, v_LOAN_INITIATION_DATE,
v_LOAN_APPROVAL_DATE, v_LOAN_DISBURSAL_DATE, v_LOAN_REPAY_EFF_DATE, v_LOAN_LOAN_AMOUNT, v_LOAN_TENURE, v_LOAN_REPAYMENT_FREQ, v_LOAN_RATE_TYPE,
v_LOAN_RATE_METHOD, v_LOAN_FINAL_RATE, v_LOAN_REPAYMENT_TYPE, v_LOAN_INSTALLMENT_TYPE, v_LOAN_INSTALLMENT_MODE,
v_LOAN_ADVANCE_INSTL, v_LOAN_DUE_DAY, V_LOAN_MATURITY_DATE, V_LOAN_EFF_RATE, V_LOAN_NO_OF_INSTALLMENT,
V_FLAT_RATE, V_LOAN_EFF_RATE, V_MKTIRR1,V_MKTIRR2, V_DISBURSAL_STATUS,V_LOAN_BRANCH,V_NPA_FLAG,V_LOAN_CUSTOMER_NAME
from CR_LOAN_DTL
JOIN GCD_CUSTOMER_M ON CR_LOAN_DTL.LOAN_CUSTOMER_ID=GCD_CUSTOMER_M.CUSTOMER_ID
where Loan_Id = V_LOAN_ID
AND IFNULL(LOAN_REPAYMENT_TYPE, 'I') = 'I';
set v_LOAN_DUE_DAY=EXTRACT(DAY FROM V_NEXT_DUE_DATE) ;
Select DAYS_BASIS, DAYS_PER_YEAR, INSTL_ROUND_TYPE, INSTL_ROUNDING, INT_ROUND_TYPE, INT_ROUNDING, OPPORTUNITY_RATE
INTO V_LOAN_DAYS_BASIS, V_LOAN_DAYS_PER_YEAR, V_INSTL_ROUND_TYPE, V_INSTL_ROUNDING,V_INT_ROUND_TYPE, V_INT_ROUNDING, V_OPPORTUNITY_INTEREST
from CR_PRODUCT_M
Where PRODUCT_ID = V_LOAN_PRODUCT;
insert into Instl_Plan_TEMP (P_RECOVERY_TYPE, P_LOAN_ID, P_SEQ_NO, P_FROM_INSTL_NO, P_TO_INSTL_NO,
P_RECOVERY_PERCENT, P_PRINCIPAL_AMOUNT, P_INSTALLMENT_AMOUNT)
select RECOVERY_TYPE, LOAN_ID, SEQ_NO, FROM_INSTL_NO, TO_INSTL_NO,
RECOVERY_PERCENT, PRINCIPAL_AMOUNT, INSTALLMENT_AMOUNT
FROM CR_INSTALLMENT_PLAN WHERE LOAN_ID = V_LOAN_ID;
INSERT INTO Repay_Temp (R_LOAN_ID, R_Seq_No, R_Org_Due_Date, R_Due_Date, R_Instl_Amount, R_Prin_Comp, R_Int_Comp, R_EXCESS_Int_Comp,
R_Prin_OS, R_EFFRATE, R_ADV_FLAG, R_BILL_FLAG, R_Count, R_REC_TYPE, R_ORG_SEQ_NO, R_OTHER_CHARGES)
SELECT LOAN_ID, INSTL_NO, INSTL_DATE, INSTL_DATE, INSTL_AMOUNT, PRIN_COMP, INT_COMP, EXCESS_INT,
PRIN_OS, INTEREST_RATE, ADV_FLAG, BILL_FLAG, 0, IFNULL(REC_TYPE, 'I'), SEQ_NO, OTHER_CHARGES
FROM CR_REPAYSCH_DTL
WHERE LOAN_ID = V_LOAN_ID
ORDER BY INSTL_NO;
SET V_FREQ_MONTHS = GET_FREQ_MONTHS (V_LOAN_REPAYMENT_FREQ);
SET V_PREV_DUE_DATE = v_LOAN_REPAY_EFF_DATE;
SET V_PREV_PRIN_OS = v_LOAN_LOAN_AMOUNT;
SET V_INT_COMP1 = 0;
OPEN REPAY_TEMP_CUR;
REPAY_TEMP_CUR_READ : LOOP
FETCH REPAY_TEMP_CUR INTO V_LOAN_ID, V_SEQ_NO, V_ORG_DUE_DATE, V_DUE_DATE,
V_INSTL_AMOUNT, V_PRIN_COMP, V_INT_COMP,
V_EXCESS_INT_COMP, V_ADV_FLAG, V_BILL_FLAG, V_PRIN_OS, V_REC_TYPE, V_ORG_SEQ_NO;
IF DONE = 1 THEN
SET DONE = 0;
LEAVE REPAY_TEMP_CUR_READ;
END IF;
IF V_SEQ_NO < V_DEFERAL_FROM_INSTL THEN
IF V_REC_TYPE = 'P' OR V_REC_TYPE = 'D' THEN
SET V_DAYS = GET_DAYS_BETWEEN(V_PREV_DUE_DATE, V_DUE_DATE, V_LOAN_DAYS_BASIS);
SET V_INT_COMP1 = V_INT_COMP1 + GET_ROUNDED_VALUE((V_PREV_PRIN_OS * V_LOAN_EFF_RATE * V_DAYS) / (V_LOAN_DAYS_PER_YEAR * 100),V_INT_ROUND_TYPE, V_INT_ROUNDING);
ELSE
SET V_INT_COMP1 = 0;
END IF;
SET V_PREV_DUE_DATE = V_DUE_DATE;
SET V_PREV_PRIN_OS = V_PRIN_OS;
ELSE
SET V_ORG_DUE_DATE = DATE_ADD(V_PREV_DUE_DATE, INTERVAL V_FREQ_MONTHS MONTH);
IF V_SEQ_NO = V_DEFERAL_FROM_INSTL THEN
SET V_DUE_DATE = V_NEXT_DUE_DATE;
ELSE
SET V_DUE_DATE = DATE_ADD(V_PREV_DUE_DATE, INTERVAL V_FREQ_MONTHS MONTH);
IF EXTRACT(DAY FROM LAST_DAY(V_Due_Date)) <= V_LOAN_DUE_DAY THEN
SET V_Due_Date = STR_TO_DATE(CONCAT(EXTRACT(YEAR_MONTH FROM V_Due_Date), EXTRACT(DAY FROM LAST_DAY(V_Due_Date))), '%Y%m%d');
ELSE
Set V_Due_Date = STR_TO_DATE(CONCAT(EXTRACT(YEAR_MONTH FROM V_Due_Date), V_LOAN_DUE_DAY), '%Y%m%d');
END IF;
END IF;
SET V_DAYS = GET_DAYS_BETWEEN(V_PREV_DUE_DATE, V_ORG_DUE_DATE, V_LOAN_DAYS_BASIS);
SET V_ORG_INT_COMP = GET_ROUNDED_VALUE((V_PREV_PRIN_OS * V_LOAN_EFF_RATE * V_DAYS) / (V_LOAN_DAYS_PER_YEAR * 100),V_INT_ROUND_TYPE, V_INT_ROUNDING);
SET V_ORG_INT_COMP = V_ORG_INT_COMP + V_INT_COMP1;
SET V_DAYS = GET_DAYS_BETWEEN(V_PREV_DUE_DATE, V_DUE_DATE, V_LOAN_DAYS_BASIS);
SET V_INT_COMP = GET_ROUNDED_VALUE((V_PREV_PRIN_OS * V_LOAN_EFF_RATE * V_DAYS) / (V_LOAN_DAYS_PER_YEAR * 100),V_INT_ROUND_TYPE, V_INT_ROUNDING);
SET V_INT_COMP = V_INT_COMP + V_INT_COMP1;
SET V_INT_COMP1 = 0;
IF V_EXCESS_INT_FLAG = 'N' THEN
SET V_EXCESS_INT_COMP = 0;
ELSE
SET V_EXCESS_INT_COMP = V_ORG_INT_COMP-V_INT_COMP;
END IF;
SET V_PRIN_COMP = V_INSTL_AMOUNT - V_INT_COMP - V_EXCESS_INT_COMP;
SET V_PRIN_OS = V_PREV_PRIN_OS - V_PRIN_COMP;
SET V_INT_OS = V_INT_OS - V_INT_COMP - V_EXCESS_INT_COMP;
SET V_PREV_DUE_DATE = V_DUE_DATE;
SET V_PREV_PRIN_OS = V_PRIN_OS;
UPDATE REPAY_TEMP
SET R_ORG_DUE_DATE = V_ORG_DUE_DATE,
R_DUE_DATE = V_DUE_DATE,
R_INSTL_AMOUNT = V_INSTL_AMOUNT,
R_PRIN_COMP = V_PRIN_COMP,
R_INT_COMP = V_INT_COMP,
R_EXCESS_INT_COMP = 0,
R_PRIN_OS = V_PRIN_OS,
R_EFFRATE = V_LOAN_EFF_RATE,
R_COUNT = V_COUNT
WHERE R_LOAN_ID = V_LOAN_ID
AND R_SEQ_NO = V_SEQ_NO;
END IF;
END LOOP;
CLOSE REPAY_TEMP_CUR;
IF V_PRIN_OS <> 0 THEN
SET V_PRIN_COMP = V_PRIN_COMP + V_PRIN_OS;
SET V_INSTL_AMOUNT = V_PRIN_COMP + V_INT_COMP + V_EXCESS_INT_COMP;
SET V_PRIN_OS = 0;
UPDATE REPAY_TEMP
SET R_INSTL_AMOUNT = R_INSTL_AMOUNT + V_EXCESS_INT_COMP,
R_PRIN_COMP = V_PRIN_COMP,
R_INT_COMP = 0,
R_EXCESS_INT_COMP = V_EXCESS_INT_COMP,
R_PRIN_OS = V_PRIN_OS
WHERE R_LOAN_ID = V_LOAN_ID
AND R_SEQ_NO = V_SEQ_NO + 1;
END IF;
SET O_FLAT_RATE = V_FLAT_RATE;
SET O_LOAN_EFF_RATE = V_LOAN_EFF_RATE;
SET O_MKTIRR1 = V_MKTIRR1;
SET O_MKTIRR2 = V_MKTIRR2;
IF I_STATUS ='A' THEN
SELECT MAX(INSTL_DATE) INTO V_LAST_DUE_DATE FROM CR_REPAYSCH_DTL WHERE LOAN_ID= V_LOAN_ID;
IF V_LOAN_INSTALLMENT_MODE='A' THEN
SET V_INSTL_NO = 2;
ELSE
SET V_INSTL_NO = 1;
END IF;
SELECT V_NEXT_DUE_DATE = INSTL_DATE FROM CR_REPAYSCH_DTL WHERE LOAN_ID = V_LOAN_ID AND INSTL_NO=V_INSTL_NO LIMIT 1;
UPDATE CR_LOAN_DTL
SET LOAN_DUE_DAY=EXTRACT(DAY FROM V_NEXT_DUE_DATE) ,
LOAN_MATURITY_DATE = IF(LOAN_INSTALLMENT_MODE='A', DATE_ADD(V_LAST_DUE_DATE, INTERVAL GET_FREQ_MONTHS(LOAN_REPAYMENT_FREQ) MONTH), V_LAST_DUE_DATE),
NEXT_DUE_DATE=V_NEXT_DUE_DATE
WHERE LOAN_ID = V_LOAN_ID ;
SELECT IFNULL(SUM(IFNULL(INT_COMP,0)),0) + IFNULL(SUM(IFNULL(EXCESS_INT,0)),0)
INTO V_OLD_INTEREST
FROM CR_REPAYSCH_DTL
WHERE LOAN_ID = V_LOAN_ID;
SET V_REPAY_HST_ID = function_sequence('REPAY_HST_ID');
INSERT INTO CR_REPAYSCH_DTL_HST (REPAY_HST_ID, REPAYSCH_ID, LOAN_ID, INSTL_NO, INSTL_DATE, INSTL_AMOUNT, PRIN_COMP, INT_COMP, EXCESS_INT,
OTHER_CHARGES, BILL_FLAG, INSTL_AMOUNT_RECD, PRIN_COMP_RECD, INT_COMP_RECD, EXCESS_INT_RECD,
OTHER_CHARGES_RECD, LAST_PMNT_DATE, LAST_OD_CALC_DATE, TOTAL_OD_AMOUNT, INTEREST_RATE, ADV_FLAG,
DISBURSAL_AMOUNT, PRIN_OS, REC_STATUS, MAKER_ID, MAKER_DATE, AUTHOR_ID, AUTHOR_DATE,MVMT_BY, MVMT_DATE, REC_TYPE, SEQ_NO)
SELECT V_REPAY_HST_ID, REPAYSCH_ID, LOAN_ID, INSTL_NO, INSTL_DATE, INSTL_AMOUNT, PRIN_COMP, INT_COMP, EXCESS_INT,
OTHER_CHARGES, BILL_FLAG, INSTL_AMOUNT_RECD, PRIN_COMP_RECD, INT_COMP_RECD, EXCESS_INT_RECD,
OTHER_CHARGES_RECD, LAST_PMNT_DATE, LAST_OD_CALC_DATE, TOTAL_OD_AMOUNT, INTEREST_RATE, ADV_FLAG,
DISBURSAL_AMOUNT, PRIN_OS, REC_STATUS, MAKER_ID, MAKER_DATE, AUTHOR_ID, AUTHOR_DATE, I_USER_ID, I_CURR_DATE, REC_TYPE, SEQ_NO
FROM CR_REPAYSCH_DTL
WHERE LOAN_ID = V_LOAN_ID
ORDER BY LOAN_ID, INSTL_NO;
DELETE FROM CR_REPAYSCH_DTL WHERE LOAN_ID = V_LOAN_ID AND INSTL_DATE > V_RESCH_EFF_DATE;
INSERT INTO CR_REPAYSCH_DTL(LOAN_ID, INSTL_NO, INSTL_DATE, INSTL_AMOUNT, PRIN_COMP, INT_COMP, EXCESS_INT, BILL_FLAG,
INSTL_AMOUNT_RECD, PRIN_COMP_RECD, INT_COMP_RECD, EXCESS_INT_RECD,
TOTAL_OD_AMOUNT, INTEREST_RATE, ADV_FLAG, PRIN_OS, REC_STATUS, REC_TYPE, SEQ_NO, OTHER_CHARGES)
SELECT R_LOAN_ID, R_Seq_No, R_Due_Date, R_Instl_Amount, R_Prin_Comp, R_Int_Comp, R_EXCESS_Int_Comp, 'N',
0, 0, 0, 0,
0, V_LOAN_EFF_RATE, R_ADV_FLAG, R_PRIN_OS, 'A', R_REC_TYPE, R_ORG_SEQ_NO, R_OTHER_CHARGES
FROM Repay_Temp
WHERE R_LOAN_ID = V_LOAN_ID
AND R_Due_Date > V_RESCH_EFF_DATE
ORDER BY R_LOAN_ID, R_Seq_No;
SELECT PARAMETER_VALUE INTO I_DEPARTMENT
FROM PARAMETER_MST
WHERE PARAMETER_KEY = 'CMDEPARTMENT';
IF DONE = 1 THEN
SET DONE = 0;
SET I_DEPARTMENT = '';
END IF;
SELECT COUNT(*) INTO V_COUNT
FROM CR_SCHEME_ACCOUNTING_DTL
WHERE SCHEME_ID = V_LOAN_SCHEME
AND STAGE_ID = 'DDA'
AND ACCOUNTING_FLAG = 'Y';
IF V_COUNT > 0 THEN
SET V_ACCOUNTING_FLAG = 'Y';
ELSE
SET V_ACCOUNTING_FLAG = 'N';
END IF;
SELECT IFNULL(SUM(IFNULL(INT_COMP,0)),0) + IFNULL(SUM(IFNULL(EXCESS_INT,0)),0)
INTO V_NEW_INTEREST
FROM CR_REPAYSCH_DTL
WHERE LOAN_ID = V_LOAN_ID;
SET V_CHARGE_STR = '';
SET V_CHARGE_AMT = 0;
SET V_TAX_RATE1 = 0;
SET V_TAX_RATE2 = 0;
SET V_TDS_RATE = 0;
SET V_TAX_AMOUNT1 = 0;
SET V_TAX_AMOUNT2 = 0;
SET V_TDS_AMOUNT = 0;
IF (IFNULL(V_NEW_INTEREST,0) - IFNULL(V_OLD_INTEREST,0)) <> 0 AND O_ERROR_FLAG = 'S' AND V_DISBURSAL_STATUS = 'F' THEN
SET V_CHARGE_CODE = 41;
SET V_CHARGE_AMT = (IFNULL(V_NEW_INTEREST,0) - IFNULL(V_OLD_INTEREST,0));
SET V_CHARGE_STR = CONCAT(V_CHARGE_STR, CAST(V_CHARGE_CODE AS CHAR),';', CAST(V_CHARGE_AMT AS CHAR), '|');
SET V_TAX_RATE1 = 0;
SET V_TAX_RATE2 = 0;
SET V_TDS_RATE = 0;
SET V_TAX_AMOUNT1 = 0;
SET V_TAX_AMOUNT2 = 0;
SET V_TDS_AMOUNT = 0;
SET V_TXN_ADJUSTED_AMOUNT = 0;
END IF;
IF V_RESCH_CHARGES > 0 AND O_ERROR_FLAG = 'S' THEN
SELECT IFNULL(DEAL_CHARGE_METHOD, 'F'), IFNULL(DEAL_CHARGE_TDS_APPLICABLE, 'N'), IFNULL(DEAL_CHARGE_TDS_RATE, 0),
IFNULL(DEAL_CHARGE_TAX_APPLICABLE, 'N'), IFNULL(DEAL_CHARGE_TAX_INCLUSIVE, 'N'),
IFNULL(DEAL_CHARGE_TAX_RATE1,0), IFNULL(DEAL_CHARGE_TAX_RATE2,0)
INTO V_CHARGE_METHOD, V_TDS_APPLICABLE, V_TDS_RATE,
V_TAX_APPLICABLE, V_TAX_INCLUSIVE, V_TAX_RATE1, V_TAX_RATE2
FROM CR_TXNCHARGES_DTL
WHERE TXN_TYPE = 'LIM'
AND TXN_ID = V_LOAN_ID
AND DEAL_CHARGE_CODE = 33
AND REC_STATUS = 'A';
IF DONE = 1 THEN
SET DONE = 0;
SET V_CHARGE_METHOD = 'F';
SET V_TDS_APPLICABLE = 'N';
SET V_TDS_RATE = 0;
SET V_TAX_APPLICABLE = 'N';
SET V_TAX_INCLUSIVE = 'N';
SET V_TAX_RATE1 = 0;
SET V_TAX_RATE2 = 0;
SET V_TAX_AMOUNT1 = 0;
SET V_TAX_AMOUNT2 = 0;
SET V_TDS_AMOUNT = 0;
SET V_TXN_ADJUSTED_AMOUNT = 0;
END IF;
SET V_CHARGE_CODE = 33;
SET V_CHARGE_AMOUNT = V_RESCH_CHARGES;
SET V_TAX_AMOUNT1 = 0;
SET V_TAX_AMOUNT2 = 0;
SET V_TDS_AMOUNT = 0;
SET V_TXN_ADJUSTED_AMOUNT = 0;
SET V_BP_TYPE = 'CS';
SET V_BP_ID = V_LOAN_CUSTOMER_ID;
IF V_TAX_APPLICABLE = 'Y' THEN
SET V_TAX_AMOUNT1 = ((100 * V_CHARGE_AMOUNT) / (100 + V_TAX_RATE1 + V_TAX_RATE2)) * V_TAX_RATE1 / 100;
SET V_TAX_AMOUNT1 = Get_Rounded_value(V_TAX_AMOUNT1, 'U', 0);
SET V_TAX_AMOUNT2 = ((100 * V_CHARGE_AMOUNT) / (100 + V_TAX_RATE1 + V_TAX_RATE2)) * V_TAX_RATE2 / 100;
SET V_TAX_AMOUNT2 = Get_Rounded_value(V_TAX_AMOUNT2, 'U', 0);
SET V_CHARGE_AMOUNT = V_CHARGE_AMOUNT;
END IF;
IF V_TDS_APPLICABLE = 'Y' THEN
SET V_TDS_AMOUNT = V_CHARGE_AMOUNT * V_TDS_RATE / 100;
SET V_TDS_AMOUNT = Get_Rounded_value(V_TDS_AMOUNT, 'U', 0);
END IF;
INSERT INTO CR_TXNADVICE_DTL (DEAL_ID, LOAN_ID, TXN_TYPE, TXN_ID, BP_TYPE, BP_ID, ADVICE_DATE, ADVICE_TYPE,
CHARGE_CODE_ID, ORG_CHARGE_AMOUNT, TAX_RATE1, TAX_RATE2, TDS_RATE, ORG_TAX_AMOUNT1,
ORG_TAX_AMOUNT2, ORG_TDS_AMOUNT, ORG_ADVICE_AMOUNT, WAIVE_OFF_AMOUNT, CHARGE_AMOUNT,
TAX_AMOUNT1, TAX_AMOUNT2, TDS_AMOUNT, ADVICE_AMOUNT, TXN_ADJUSTED_AMOUNT,
AMOUNT_IN_PROCESS, REC_STATUS, MAKER_ID, MAKER_DATE, AUTHOR_ID, AUTHOR_DATE)
VALUES (V_DEAL_ID, V_LOAN_ID, 'DDA', I_RESCH_ID, 'CS', V_LOAN_CUSTOMER_ID, V_RESCH_EFF_DATE, 'R',
V_CHARGE_CODE, (V_CHARGE_AMT-V_TAX_AMOUNT1-V_TAX_AMOUNT2), V_TAX_RATE1, V_TAX_RATE2, V_TDS_RATE, V_TAX_AMOUNT1,
V_TAX_AMOUNT2, V_TDS_AMOUNT, V_CHARGE_AMT, 0, (V_CHARGE_AMT-V_TAX_AMOUNT1-V_TAX_AMOUNT2),
V_TAX_AMOUNT1, V_TAX_AMOUNT2, V_TDS_AMOUNT, V_CHARGE_AMT, V_TXN_ADJUSTED_AMOUNT,
0, 'A', I_USER_ID, I_CURR_DATE, I_USER_ID, I_CURR_DATE);
SET V_CHARGE_STR = CONCAT(V_CHARGE_STR, CAST(V_CHARGE_CODE AS CHAR),';', CAST((V_CHARGE_AMT-V_TAX_AMOUNT1-V_TAX_AMOUNT2) AS CHAR), '|');
END IF;
IF V_ACCOUNTING_FLAG = 'Y' THEN
CALL GenerateVoucher(I_COMPANY_ID, V_LOAN_BRANCH, 'CMS',
V_LOAN_SCHEME, I_DEPARTMENT, '',
'DDA', V_NPA_FLAG, 0,
'CS', V_LOAN_CUSTOMER_ID, V_LOAN_CUSTOMER_NAME,
I_CURR_DATE, I_CURR_DATE,
V_LOAN_ID, V_CHARGE_STR,
I_USER_ID, V_VOUCHER_STR, O_ERROR_FLAG, O_ERROR_MSG);
IF IFNULL(V_VOUCHER_STR, '') <> '' THEN
VOUCHER_STR_LOOP: LOOP
IF INSTR(V_VOUCHER_STR,'|') = 0 THEN
LEAVE VOUCHER_STR_LOOP;
END IF;
SET V_VOUCHER_NO = SUBSTRING_INDEX(V_VOUCHER_STR, '|', 1);
SET V_VOUCHER_STR = SUBSTR(V_VOUCHER_STR,INSTR(V_VOUCHER_STR,'|') + 1);
INSERT INTO CR_LOAN_VOUCHER_DTL(LOAN_ID, TXN_TYPE, TXN_ID, TXN_DATE, VALUE_DATE,
COMPANY_ID, BRANCH_ID, PRODUCT_ID, DEPARTMENT_ID,
STAGE_ID, NPA_STAGE, BP_TYPE, BP_ID, VOUCHER_NO)
VALUES(V_LOAN_ID, 'DDA', I_RESCH_ID, I_CURR_DATE, I_CURR_DATE,
I_COMPANY_ID, V_LOAN_BRANCH, V_LOAN_SCHEME, I_DEPARTMENT,
'DDA', V_NPA_FLAG, 'CS', V_LOAN_CUSTOMER_ID, V_VOUCHER_NO);
END LOOP;
END IF;
END IF;
END IF;
IF IFNULL(O_ERROR_FLAG,'S') = 'S' AND I_STATUS <> 'T' THEN
UPDATE CR_RESCH_DTL
SET REC_STATUS = I_STATUS,
REMARKS = I_REMARKS,
AUTHOR_ID = I_USER_ID,
AUTHOR_DATE = I_CURR_DATE
WHERE RESCH_ID = I_RESCH_ID;
END IF;
END;
END
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment