提前部分结清租金计划及租金实收调整
This commit is contained in:
parent
467d3d354c
commit
da395a4569
@ -438,7 +438,9 @@ public class EarlyContract {
|
||||
*/
|
||||
String sql1="UPDATE LB_EQUIPMENT_CAR_TEMP SET TERMINATE_TYPE='1',SETTLE_STATUS='1' WHERE FLOWUNID='"+flowunid+"' AND ifnull(TERMINATE_TYPE,'1') <> '2' ";
|
||||
Sqlca.executeSQL(sql1);
|
||||
Sqlca.executeSQL("delete from lc_rent_income_temp where FLOWUNID = '"+flowunid+"'");
|
||||
Sqlca.commit();
|
||||
|
||||
} catch (Exception e) {
|
||||
succeed="false";
|
||||
try {
|
||||
@ -562,49 +564,20 @@ public class EarlyContract {
|
||||
BigDecimal interest= new BigDecimal(0);
|
||||
// 约定终止日所在那一期次, 如果约定日期小于第一期月份,本金为0
|
||||
if(i==lrptBoList.size()-1) {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
|
||||
SimpleDateFormat sdfM = new SimpleDateFormat("yyyy/MM");
|
||||
last_plan_date = lrptBo.getAttribute("PLAN_DATE").getString();
|
||||
String planList = lrptBo.getAttribute("plan_list").getString();
|
||||
//获取当期计划表本金和租息
|
||||
//获取计划本金
|
||||
BigDecimal planCorpus = new BigDecimal(Sqlca.getString("select CORPUS from lc_rent_plan lrp where CONTRACT_ID = '"+contractId+"' and plan_list = '"+planlist+"'"));
|
||||
//获取计划租息
|
||||
BigDecimal planInterest = new BigDecimal(Sqlca.getString("select round(INTEREST*"+REPURCHASE_RATIO+"/100,2) from lc_rent_plan lrp where CONTRACT_ID = '"+contractId+"' and plan_list = '"+planlist+"'"));
|
||||
|
||||
String incomeCorpus = Sqlca.getString("SELECT ifnull(SUM(ifnull(CORPUS,0)),0) FROM LC_RENT_INCOME WHERE CONTRACT_ID='"+contractId+"' AND PLAN_LIST='"+planList+"'");
|
||||
String incomeInterest = Sqlca.getString("SELECT ifnull(SUM(ifnull(INTEREST,0)),0) FROM LC_RENT_INCOME WHERE CONTRACT_ID='"+contractId+"' AND PLAN_LIST='"+planList+"'");
|
||||
BigDecimal noIncomeCorpus = new BigDecimal(lrptBo.getAttribute("CORPUS").toString()).subtract(new BigDecimal(incomeCorpus));
|
||||
BigDecimal noIncomeInterest = new BigDecimal(lrptBo.getAttribute("INTEREST").toString()).subtract(new BigDecimal(incomeInterest));
|
||||
|
||||
Date date1 = sdf.parse(last_plan_date);
|
||||
Date date2 = sdf.parse(paydayAdjust);
|
||||
//如果约定终止日的月份和最后一次循环所在月份是一个月,才加上利息。否则减免一部分利息
|
||||
if(sdfM.format(date1).equals(sdfM.format(date2))){
|
||||
corpus=new BigDecimal(SUM_CORPUS).subtract(now_corpus);
|
||||
//强制结清不要利息
|
||||
//interest=new BigDecimal(lrptBoList.get(i).getAttribute("INTEREST").getString());
|
||||
//interest = noIncomeInterest.subtract(noIncomeInterest.multiply(new BigDecimal(equipmentRatio).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
//计算调整后本金
|
||||
interest = planInterest;
|
||||
corpus = corpus.add(planCorpus);
|
||||
//计算调整后租息
|
||||
rent=corpus.add(interest);
|
||||
end_corpus = noIncomeCorpus.subtract(noIncomeCorpus.multiply(new BigDecimal(equipmentRatio).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
end_interest = noIncomeInterest.subtract(noIncomeInterest.multiply(new BigDecimal(equipmentRatio).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
}else{
|
||||
corpus=new BigDecimal(SUM_CORPUS).subtract(now_corpus);
|
||||
interest = new BigDecimal(lrptBo.getAttribute("INTEREST").toString()).subtract(new BigDecimal(lrptBo.getAttribute("INTEREST").toString()).multiply(new BigDecimal(equipmentRatio).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
//计算调整后本金
|
||||
corpus = corpus.add(planCorpus);
|
||||
//计算调整后租息
|
||||
end_corpus = noIncomeCorpus.subtract(noIncomeCorpus.multiply(new BigDecimal(equipmentRatio).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
// end_interest = noIncomeInterest.subtract(noIncomeInterest.multiply(new BigDecimal(equipmentRatio).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
// 重新计算末期利息
|
||||
end_interest = new BigDecimal(incomeInterest).subtract(noIncomeInterest);
|
||||
interest = planInterest;
|
||||
rent=corpus.add(interest);
|
||||
}
|
||||
corpus=new BigDecimal(SUM_CORPUS).subtract(now_corpus).add(new BigDecimal(lrptBo.getAttribute("corpus").toString()));
|
||||
interest = new BigDecimal(lrptBo.getAttribute("interest").toString());
|
||||
rent=corpus.add(interest);
|
||||
//计算调整后实收本金
|
||||
end_corpus = noIncomeCorpus;
|
||||
//计算调整后实收租息
|
||||
end_interest = noIncomeInterest;
|
||||
}else {
|
||||
// 获取结清后约定终止日后边期次当期租金计划的租金本金利息
|
||||
rent = new BigDecimal(lrptBo.getAttribute("RENT").toString()).subtract(new BigDecimal(lrptBo.getAttribute("RENT").toString()).multiply(new BigDecimal(equipmentRatio).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
@ -644,8 +617,6 @@ public class EarlyContract {
|
||||
}else{
|
||||
sql = "select ifnull(LRPT.RENT,0)-ifnull(LRI.RENT,0) as OVER_RENT,ifnull(LRPT.CORPUS,0)-ifnull(LRI.CORPUS,0) as OVER_CORPUS,ifnull(LRPT.INTEREST,0)-ifnull(LRI.INTEREST,0) as OVER_INTEREST,LRPT.PLAN_LIST as PLAN_LIST,LRPT.PLAN_DATE as PLAN_DATE,LRP.PLAN_ID,date_format(now() ,'%Y/%m/%d') as ACCOUNTING_DATE,date_format(now(),'%Y/%m/%d %h:%m:%s') as INPUTTIME from(select MAX(ID) as PLAN_ID,CONTRACT_ID,PLAN_LIST,MAX(PLAN_DATE) as PLAN_DATE,SUM(RENT) as RENT,SUM(CORPUS) as CORPUS,SUM(INTEREST) as INTEREST from LC_RENT_PLAN_TEMP where FLOWUNID = '"+flowunid+"' and CONTRACT_ID = '"+contractId+"' group by CONTRACT_ID,PLAN_LIST ) LRPT left join (select CONTRACT_ID,PLAN_LIST,MAX(ID) as PLAN_ID from LC_RENT_PLAN where CONTRACT_ID = '"+contractId+"' group by CONTRACT_ID,PLAN_LIST )LRP on LRP.CONTRACT_ID = LRPT.CONTRACT_ID and LRP.PLAN_LIST = LRPT.PLAN_LIST left join (select CONTRACT_ID,PLAN_LIST,SUM(RENT) as RENT,SUM(CORPUS) as CORPUS,SUM(INTEREST) as INTEREST from LC_RENT_INCOME where CONTRACT_ID = '"+contractId+"' group by CONTRACT_ID,PLAN_LIST ) LRI on LRI.CONTRACT_ID = LRPT.CONTRACT_ID and LRI.PLAN_LIST = LRPT.PLAN_LIST where ifnull(LRPT.RENT,0)>ifnull(LRI.RENT,0) and LRPT.PLAN_DATE <= '"+last_plan_date+"' order by LRPT.PLAN_LIST ";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 保证金抵扣留购价款 (强制结清不核销留购价)
|
||||
*/
|
||||
@ -699,7 +670,7 @@ public class EarlyContract {
|
||||
/**
|
||||
* 租金实收表操作
|
||||
*/
|
||||
sql = "SELECT ifnull(LRPT.RENT,0)-ifnull(LRI.RENT,0)-ifnull(LRIT.RENT,0) AS OVER_RENT, ifnull(LRPT.CORPUS,0)-ifnull(LRI.CORPUS,0)-ifnull(LRIT.CORPUS,0) AS OVER_CORPUS, ifnull(LRPT.INTEREST,0)-ifnull(LRI.INTEREST,0)-ifnull(LRIT.INTEREST,0) AS OVER_INTEREST, LRPT.PLAN_LIST AS PLAN_LIST, LRPT.PLAN_DATE AS PLAN_DATE, LRP.PLAN_ID, date_format(now(),'%Y/%m/%d') AS ACCOUNTING_DATE, date_format(now(),'%Y/%m/%d %h:%m:%s') AS INPUTTIME FROM ( SELECT MAX(ID) AS PLAN_ID, CONTRACT_ID, PLAN_LIST, MAX(PLAN_DATE) AS PLAN_DATE, SUM(RENT) AS RENT, SUM(CORPUS) AS CORPUS, SUM(INTEREST) AS INTEREST FROM LC_RENT_PLAN_TEMP WHERE FLOWUNID='"+flowunid+"' AND CONTRACT_ID='"+contractId+"' GROUP BY CONTRACT_ID, PLAN_LIST ) LRPT LEFT JOIN (SELECT CONTRACT_ID, PLAN_LIST, MAX(ID) AS PLAN_ID FROM LC_RENT_PLAN WHERE CONTRACT_ID='"+contractId+"' GROUP BY CONTRACT_ID, PLAN_LIST )LRP ON LRP.CONTRACT_ID=LRPT.CONTRACT_ID AND LRP.PLAN_LIST=LRPT.PLAN_LIST LEFT JOIN ( SELECT CONTRACT_ID, PLAN_LIST, SUM(RENT) AS RENT, SUM(CORPUS) AS CORPUS, SUM(INTEREST) AS INTEREST FROM LC_RENT_INCOME WHERE CONTRACT_ID='"+contractId+"' GROUP BY CONTRACT_ID, PLAN_LIST ) LRI ON LRI.CONTRACT_ID=LRPT.CONTRACT_ID AND LRI.PLAN_LIST=LRPT.PLAN_LIST LEFT JOIN ( SELECT CONTRACT_ID, PLAN_LIST, SUM(RENT) AS RENT, SUM(CORPUS) AS CORPUS, SUM(INTEREST) AS INTEREST FROM LC_RENT_INCOME_TEMP WHERE CONTRACT_ID='"+contractId+"' and FLOWUNID='"+flowunid+"' GROUP BY CONTRACT_ID, PLAN_LIST ) LRIT ON LRIT.CONTRACT_ID=LRPT.CONTRACT_ID AND LRIT.PLAN_LIST=LRPT.PLAN_LIST WHERE ifnull(LRPT.RENT,0)>(ifnull(LRI.RENT,0)+ifnull(LRIT.RENT,0)) AND LRPT.PLAN_LIST<(SELECT MIN(PLAN_LIST) FROM LC_RENT_PLAN_TEMP WHERE FLOWUNID='"+flowunid+"' AND date_format(STR_TO_DATE(PLAN_DATE,'%Y/%m/%d'),'%Y/%m/%d')>=date_format(STR_TO_DATE('"+paydayAdjust+"','%Y/%m/%d'),'%Y/%m/%d')) ORDER BY LRPT.PLAN_LIST";
|
||||
sql = "SELECT ifnull(LRPT.RENT,0)-ifnull(LRI.RENT,0)-ifnull(LRIT.RENT,0) AS OVER_RENT, ifnull(LRPT.CORPUS,0)-ifnull(LRI.CORPUS,0)-ifnull(LRIT.CORPUS,0) AS OVER_CORPUS, ifnull(LRPT.INTEREST,0)-ifnull(LRI.INTEREST,0)-ifnull(LRIT.INTEREST,0) AS OVER_INTEREST, LRPT.PLAN_LIST AS PLAN_LIST, LRPT.PLAN_DATE AS PLAN_DATE, LRP.PLAN_ID, date_format(now(),'%Y/%m/%d') AS ACCOUNTING_DATE, date_format(now(),'%Y/%m/%d %h:%m:%s') AS INPUTTIME FROM ( SELECT MAX(ID) AS PLAN_ID, CONTRACT_ID, PLAN_LIST, MAX(PLAN_DATE) AS PLAN_DATE, SUM(RENT) AS RENT, SUM(CORPUS) AS CORPUS, SUM(INTEREST) AS INTEREST FROM LC_RENT_PLAN_TEMP WHERE FLOWUNID='"+flowunid+"' AND CONTRACT_ID='"+contractId+"' GROUP BY CONTRACT_ID, PLAN_LIST ) LRPT LEFT JOIN (SELECT CONTRACT_ID, PLAN_LIST, MAX(ID) AS PLAN_ID FROM LC_RENT_PLAN WHERE CONTRACT_ID='"+contractId+"' GROUP BY CONTRACT_ID, PLAN_LIST )LRP ON LRP.CONTRACT_ID=LRPT.CONTRACT_ID AND LRP.PLAN_LIST=LRPT.PLAN_LIST LEFT JOIN ( SELECT CONTRACT_ID, PLAN_LIST, SUM(RENT) AS RENT, SUM(CORPUS) AS CORPUS, SUM(INTEREST) AS INTEREST FROM LC_RENT_INCOME WHERE CONTRACT_ID='"+contractId+"' GROUP BY CONTRACT_ID, PLAN_LIST ) LRI ON LRI.CONTRACT_ID=LRPT.CONTRACT_ID AND LRI.PLAN_LIST=LRPT.PLAN_LIST LEFT JOIN ( SELECT CONTRACT_ID, PLAN_LIST, SUM(RENT) AS RENT, SUM(CORPUS) AS CORPUS, SUM(INTEREST) AS INTEREST FROM LC_RENT_INCOME_TEMP WHERE CONTRACT_ID='"+contractId+"' and FLOWUNID='"+flowunid+"' GROUP BY CONTRACT_ID, PLAN_LIST ) LRIT ON LRIT.CONTRACT_ID=LRPT.CONTRACT_ID AND LRIT.PLAN_LIST=LRPT.PLAN_LIST WHERE ifnull(LRPT.RENT,0)>(ifnull(LRI.RENT,0)+ifnull(LRIT.RENT,0)) AND LRPT.PLAN_LIST<=(SELECT MIN(PLAN_LIST) FROM LC_RENT_PLAN_TEMP WHERE FLOWUNID='"+flowunid+"' AND date_format(STR_TO_DATE(PLAN_DATE,'%Y/%m/%d'),'%Y/%m/%d')>=date_format(STR_TO_DATE('"+paydayAdjust+"','%Y/%m/%d'),'%Y/%m/%d')) ORDER BY LRPT.PLAN_LIST";
|
||||
List<Map<String, String>> dataList = DataUtil.query(sql, Sqlca);
|
||||
for(int i=0; i<dataList.size();i++) {
|
||||
// 获取抵扣前当期应收租金本金利息
|
||||
@ -713,21 +684,10 @@ public class EarlyContract {
|
||||
BigDecimal over_interest = new BigDecimal(0);
|
||||
BigDecimal over_penalty = new BigDecimal(0);
|
||||
if(i==dataList.size()-1) {
|
||||
SqlObject sql1 = new SqlObject("select RENT from lc_rent_plan_temp lrpt where FLOWUNID = '"+flowunid+"' and PLAN_LIST = (select min(PLAN_LIST) from lc_rent_plan_temp where FLOWUNID = '"+flowunid+"' and STR_TO_DATE(PLAN_DATE, '%Y/%m/%d') >= STR_TO_DATE('"+paydayAdjust+"','%Y/%m/%d'))");
|
||||
BigDecimal planrent = new BigDecimal(Sqlca.getString(sql1));
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
|
||||
SimpleDateFormat sdfM = new SimpleDateFormat("yyyy/MM");
|
||||
Date date1 = sdf.parse(PLAN_DATE);
|
||||
Date date2 = sdf.parse(paydayAdjust);
|
||||
//如果约定终止日的月份和最后一次循环所在月份是一个月,才加上利息。否则减免一部分利息
|
||||
if(sdfM.format(date1).equals(sdfM.format(date2))){
|
||||
//提交结清收取当月利息,强制结清不收利息
|
||||
over_interest=new BigDecimal(dataList.get(i).get("OVER_INTEREST")).subtract(end_interest);
|
||||
over_corpus=new BigDecimal(dataList.get(i).get("OVER_CORPUS")).subtract(end_corpus).add(planrent);
|
||||
over_rent=over_interest.add(over_corpus);
|
||||
}else{
|
||||
over_corpus=new BigDecimal(dataList.get(i).get("OVER_CORPUS")).subtract(end_corpus).add(planrent);
|
||||
over_rent=over_corpus;
|
||||
if(PLAN_DATE.equals(paydayAdjust)){
|
||||
over_interest=new BigDecimal(dataList.get(i).get("OVER_INTEREST"));
|
||||
over_corpus=new BigDecimal(dataList.get(i).get("OVER_CORPUS"));
|
||||
over_rent=new BigDecimal(dataList.get(i).get("OVER_RENT"));
|
||||
}
|
||||
}else {
|
||||
String overSql = "select ifnull(LRPT.RENT,0) - ifnull(LRI.RENT,0) as OVER_RENT,ifnull(LRPT.CORPUS,0) - ifnull(LRI.CORPUS,0) as OVER_CORPUS,ifnull(LRPT.INTEREST,0) - ifnull(LRI.INTEREST,0) as OVER_INTEREST,LRPT.PLAN_LIST as PLAN_LIST,LRPT.PLAN_DATE as PLAN_DATE,LRP.PLAN_ID,date_format(now() ,'%Y/%m/%d') as ACCOUNTING_DATE,date_format(now() ,'%Y/%m/%d %h/%m/%s') as INPUTTIME from(select MAX(ID) as PLAN_ID,CONTRACT_ID,PLAN_LIST,MAX(PLAN_DATE) as PLAN_DATE,SUM(RENT) as RENT,SUM(CORPUS) as CORPUS,SUM(INTEREST) as INTEREST from LC_RENT_PLAN_TEMP where FLOWUNID = '"+flowunid+"' and CONTRACT_ID = '"+contractId+"' group by CONTRACT_ID,PLAN_LIST) LRPT left join (select CONTRACT_ID,PLAN_LIST,MAX(ID) as PLAN_ID from LC_RENT_PLAN where CONTRACT_ID = '"+contractId+"' group by CONTRACT_ID,PLAN_LIST) LRP on LRP.CONTRACT_ID = LRPT.CONTRACT_ID and LRP.PLAN_LIST = LRPT.PLAN_LIST left join (select CONTRACT_ID,PLAN_LIST,SUM(RENT) as RENT,SUM(CORPUS) as CORPUS,SUM(INTEREST) as INTEREST from LC_RENT_INCOME where CONTRACT_ID = '"+contractId+"' group by CONTRACT_ID,PLAN_LIST) LRI on LRI.CONTRACT_ID = LRPT.CONTRACT_ID and LRI.PLAN_LIST = LRPT.PLAN_LIST left join VI_LC_RENT_PLAN vlrp on vlrp.CONTRACT_ID = LRPT.CONTRACT_ID and vlrp.PLAN_LIST = LRPT.PLAN_LIST where (ifnull(LRPT.RENT,0) > ifnull(LRI.RENT,0)or vlrp.PENALTY_OVER>0) and LRPT.PLAN_LIST = '"+PLAN_LIST+"' order by LRPT.PLAN_LIST";
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user