调整计划期次和业务本金问题
This commit is contained in:
parent
78c5615f38
commit
819cd2cf21
@ -477,8 +477,9 @@ public class EarlyContract {
|
||||
* 变更租金计划表
|
||||
*/
|
||||
// 获取日期大于约定终止日所在月的租金计划,按比例算出每期租金,本金,利息,在约定终止日那一月汇总后边的
|
||||
String planlist = Sqlca.getString("select max(PLAN_LIST) from LC_RENT_PLAN where CONTRACT_ID = '"+contractId+"' and STR_TO_DATE(PLAN_DATE,'%Y/%m/%d')<= STR_TO_DATE('2022/04/05','%Y/%m/%d')");
|
||||
BizObjectManager lrptBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_RENT_PLAN_TEMP",Sqlca);
|
||||
List<BizObject> lrptBoList = lrptBm.createQuery("FLOWUNID='"+flowunid+"' and v.date_format(v.STR_TO_DATE(PLAN_DATE,'%Y/%m/%d'),'%Y/%m/%d')>=v.date_format(v.STR_TO_DATE('"+paydayAdjust+"','%Y/%m/%d'),'%Y/%m/%d') order by plan_list desc").getResultList(true);
|
||||
List<BizObject> lrptBoList = lrptBm.createQuery("FLOWUNID='"+flowunid+"' and plan_list >= '"+planlist+"' order by plan_list desc").getResultList(true);
|
||||
//查询结清租金
|
||||
// BigDecimal tax = new BigDecimal( bean.getTax() ).multiply( t );
|
||||
// BigDecimal other = new BigDecimal( bean.getOther() ).multiply( t ).add( BigDecimal.ONE );
|
||||
@ -507,27 +508,39 @@ public class EarlyContract {
|
||||
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 INTEREST 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);
|
||||
//强制结清不要利息
|
||||
if("coerce_terminate".equals(adjustType)){
|
||||
interest = BigDecimal.ZERO;
|
||||
}else{
|
||||
interest=new BigDecimal(lrptBoList.get(i).getAttribute("INTEREST").getString());
|
||||
}
|
||||
interest=new BigDecimal(lrptBoList.get(i).getAttribute("INTEREST").getString());
|
||||
//计算调整后本金
|
||||
corpus = corpus.add(planCorpus);
|
||||
//计算调整后租息
|
||||
interest = interest.add(planInterest);
|
||||
|
||||
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);
|
||||
//计算调整后租息
|
||||
interest = interest.add(planInterest);
|
||||
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));
|
||||
@ -773,18 +786,6 @@ public class EarlyContract {
|
||||
lfitBm.saveObject(lfitBo2);
|
||||
}
|
||||
|
||||
if("coerce_terminate".equals(adjustType)){
|
||||
String sql1="SELECT ((((ifnull(lcfd.interest,0))+ifnull(lcfd.interest_adjust,0)))) AS interest_over,lrpt.PLAN_LIST AS plan_list FROM LC_RENT_PLAN lrpt LEFT JOIN (SELECT lri.PAYMENT_NUMBER AS payment_number,lri.PLAN_LIST AS plan_list,SUM(lri.INTEREST) AS interest,SUM(lri.INTEREST_ADJUST) AS interest_adjust FROM lc_rent_income lri WHERE lri.ROLL_BACK='0' GROUP BY lri.PAYMENT_NUMBER,lri.PLAN_LIST) lcfd ON lrpt.PAYMENT_NUMBER=lcfd.payment_number AND lrpt.PLAN_LIST=lcfd.plan_list WHERE lrpt.CONTRACT_ID='\" + CONTRACT_ID + \"' AND (lrpt.INTEREST-(ifnull(lcfd.interest,0)+ifnull(lcfd.interest_adjust,0)))> 0 AND ifnull(lcfd.interest,0)>=0";
|
||||
List<Map<String, String>> dataList1 = DataUtil.query(sql1, tx);
|
||||
String plan_list="";
|
||||
String INTEREST_OVER="";
|
||||
for(int i=0;i<dataList1.size();i++) {
|
||||
plan_list=dataList1.get(i).get("PLAN_LIST");
|
||||
INTEREST_OVER=dataList1.get(i).get("INTEREST_OVER");
|
||||
Sqlca.executeSQL(new SqlObject("update LC_RENT_PLAN_temp set rent=corpus+"+INTEREST_OVER+", INTEREST="+INTEREST_OVER+" where CONTRACT_ID='"+CONTRACT_ID+"' AND PLAN_LIST='"+plan_list+"'"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 租金计划临时表变更回笼状态
|
||||
*/
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user