提前结清部分结清
This commit is contained in:
parent
7a4287863c
commit
27f1de5fa0
@ -11,11 +11,11 @@
|
||||
String RightType = CurPage.getParameter("RightType");//选择模式
|
||||
String ishistory=CurPage.getParameter("IsHistory");
|
||||
String nodeNo=CurPage.getParameter("NodeNo");
|
||||
|
||||
String contractId = CurPage.getParameter("ContractId");
|
||||
BizObject condition=JBOFactory.createBizObjectQuery("jbo.app.tenwa.calc.LC_CALC_CONDITION_TEMP","flowunid=:flowunid").setParameter("flowunid", flowunid).getSingleResult(false);
|
||||
String paymentnumber=condition.getAttribute("payment_number").getString();
|
||||
String yearrate=condition.getAttribute("YEAR_RATE").getString();
|
||||
String contractId=condition.getAttribute("contract_id").getString();
|
||||
//String contractId=condition.getAttribute("contractid").getString();
|
||||
String nominalPrice=condition.getAttribute("NOMINAL_PRICE").getString();
|
||||
String cautionmoney = Sqlca.getString("select ifnull(round( sum(case lfi.FEE_TYPE when 'feetype2' then FACT_MONEY else 0 end)- sum(case lfi.FEE_TYPE when 'feetype2' then 0 else FACT_MONEY end ),2),0) as over_caution_monry from lc_fund_income lfi where lfi.CONTRACT_ID = '"+contractId+"' and lfi.FEE_TYPE in ('feetype2', 'feetype16', 'feetype17')");
|
||||
String mayopemoney = Sqlca.getString("select sum(MAYOPE_MONEY) from LC_EBANK_TEMP where flowunid='"+flowunid+"'");
|
||||
@ -23,14 +23,35 @@
|
||||
BizObject flow=GetFlowAction.getFlowBussinessObject(flowunid);
|
||||
String productId=flow.getAttribute("productId").getString();
|
||||
String ratio = Sqlca.getString("select EarlySettleBreachRatio from PRD_SPECIFIC_LIBRARY where productid='"+productId+"'");
|
||||
String CLEAN_LEASE_MONEY = Sqlca.getString("select CLEAN_LEASE_MONEY from lc_calc_condition where CONTRACT_ID='"+contractId+"'");
|
||||
System.out.println(ratio+"===================");
|
||||
String sTempletNo = "LCContractTerminate";//--模板号--
|
||||
ASObjectModel doTemp = new ASObjectModel(sTempletNo);
|
||||
doTemp.setDefaultValue("PAYMENT_NUMBER", paymentnumber);
|
||||
doTemp.setHtmlEvent("PAYDAY_ADJUST","onchange","getTerminateInfo");
|
||||
// doTemp.setHtmlEvent("PAYDAY_ADJUST","onchange","getTerminateInfo");
|
||||
doTemp.setHtmlEvent("ADJUST_TYPE","onchange","changeInfo");
|
||||
doTemp.setHtmlEvent("OTHER_IN","onchange","changeContract");
|
||||
doTemp.setHtmlEvent("REPURCHASE_RATIO","onchange","getRepurchaseMoney");
|
||||
|
||||
doTemp.setHtmlEvent("SETTLE_METHOD","onchange","setEquipmentRatioCharge");
|
||||
/*
|
||||
* 获取合同金额
|
||||
*/
|
||||
String PAYMENT_NUMBER = "";
|
||||
String START_DATE = "";
|
||||
String YEAR_RATE = "";
|
||||
if(condition!=null){
|
||||
PAYMENT_NUMBER = condition.getAttribute("PAYMENT_NUMBER").getString();
|
||||
START_DATE = condition.getAttribute("START_DATE").getString();
|
||||
YEAR_RATE = condition.getAttribute("YEAR_RATE").getString();
|
||||
}else{
|
||||
BizObject condition2=JBOFactory.createBizObjectQuery("jbo.app.tenwa.calc.LC_CONTRACT_CONDITION","CONTRACT_ID=:CONTRACT_ID").setParameter("CONTRACT_ID", contractId).getSingleResult(false);
|
||||
PAYMENT_NUMBER = condition2.getAttribute("PAYMENT_NUMBER").getString();
|
||||
START_DATE = condition2.getAttribute("START_DATE").getString();
|
||||
YEAR_RATE = condition2.getAttribute("YEAR_RATE").getString();
|
||||
}
|
||||
|
||||
|
||||
ASObjectWindow dwTemp = new ASObjectWindow(CurPage, doTemp,request);
|
||||
dwTemp.Style = "2";//freeform
|
||||
if((null!=RightType&&RightType.equals("ReadOnly"))||(null!=ishistory&&ishistory.equals("true"))){
|
||||
@ -163,6 +184,8 @@
|
||||
|
||||
//计算债券总计
|
||||
function updateContractBondTotal(){
|
||||
var SETTLE_METHOD = getItemValue(0,0,"SETTLE_METHOD");
|
||||
if(SETTLE_METHOD == "SETTLE_METHOD01"){
|
||||
var dunrent = getItemValue(0,getRow(),"DUN_RENT");
|
||||
var agreedPenalty = getItemValue(0,getRow(),"AGREED_PENALTY");
|
||||
var corpusOverage = getItemValue(0,getRow(),"CORPUS_OVERAGE");
|
||||
@ -175,6 +198,21 @@
|
||||
return (Number(dunrent ? dunrent : 0 ) + Number(agreedPenalty ? agreedPenalty : 0 ) + Number(corpusOverage ? corpusOverage : 0 )
|
||||
+ Number(sdhandlingCharge ? sdhandlingCharge : 0 ) + Number(otherin ? otherin : 0 )
|
||||
- Number(otherout ? otherout : 0 ) + Number(sdnominalPrice ? sdnominalPrice : 0 ) +Number(agreeddatepenalty ? agreeddatepenalty : 0 )).toFixed(2);
|
||||
}else if(SETTLE_METHOD == "SETTLE_METHOD02"){
|
||||
// 获取未到期本金
|
||||
var PREMATURE_MONEY = getItemValue(0,getRow(),"PREMATURE_MONEY");
|
||||
// 获取罚息
|
||||
var DUN_RENT = getItemValue(0,getRow(),"DUN_RENT");
|
||||
// 获取商定还款日息差
|
||||
var AGREED_DATEPENALTY = getItemValue(0,getRow(),"AGREED_DATEPENALTY");
|
||||
// 获取商定逾期罚息
|
||||
var AGREED_PENALTY = getItemValue(0,getRow(),"AGREED_PENALTY");
|
||||
// 获取商定违约金
|
||||
var SDHANDLING_CHARGE = getItemValue(0,getRow(),"SDHANDLING_CHARGE");
|
||||
var MAXIMUM_TOTAL = (Number(PREMATURE_MONEY ? PREMATURE_MONEY : 0 )+Number(DUN_RENT ? DUN_RENT : 0 ) + Number(AGREED_DATEPENALTY ? AGREED_DATEPENALTY : 0 )
|
||||
+Number(AGREED_PENALTY ? AGREED_PENALTY : 0 )+Number(SDHANDLING_CHARGE ? SDHANDLING_CHARGE : 0 )).toFixed(2);
|
||||
return MAXIMUM_TOTAL;
|
||||
}
|
||||
}
|
||||
//计算债券总计
|
||||
/* function getContractBondTotal(){
|
||||
@ -206,6 +244,7 @@
|
||||
//保存数据
|
||||
function saveRecord(sPostEvents)
|
||||
{
|
||||
debugger;
|
||||
//校验是否有保证金代偿
|
||||
var isCompensation = AsControl.RunJavaMethod("com.tenwa.reckon.executor.RentCalHelper","isCompensation","contractId=<%=contractId%>");
|
||||
if("false" == isCompensation){
|
||||
@ -262,8 +301,22 @@
|
||||
}
|
||||
|
||||
function run()
|
||||
{
|
||||
AsControl.RunJavaMethod("com.tenwa.reckon.executor.CreateTransactionExecutor","runTerminate","flowunid=<%=flowunid%>,plannumber=<%=paymentnumber%>,productId=<%=productId%>,calType=pay_process");
|
||||
{
|
||||
var EQUIPMENT_RATIO=getItemValue(0,0,'PROPROTION_NUMBER');//租赁物比重
|
||||
var PAYDAY_ADJUST = getItemValue(0,0,'PAYDAY_ADJUST'); //约定终止日
|
||||
var SETTLE_METHOD = getItemValue(0,0,"SETTLE_METHOD"); // 结清方式
|
||||
var ret = "";
|
||||
if(SETTLE_METHOD == "SETTLE_METHOD01"){
|
||||
AsControl.RunJavaMethod("com.tenwa.reckon.executor.CreateTransactionExecutor","runTerminate","flowunid=<%=flowunid%>,plannumber=<%=paymentnumber%>,productId=<%=productId%>,calType=pay_process");
|
||||
ret = "操作成功"
|
||||
}else if(SETTLE_METHOD == "SETTLE_METHOD02"){
|
||||
ret = AsControl.RunJavaMethodTrans("com.tenwa.voucher.CreateVoucherProcess.EarlyContract","partSettlement","REPURCHASE_RATIO="+EQUIPMENT_RATIO+",flowunid=<%=flowunid%>,contractId=<%=contractId%>,START_DATE=<%=START_DATE%>,plannumber=<%=PAYMENT_NUMBER%>,calType=pay_process,PAYDAY_ADJUST="+PAYDAY_ADJUST+",SettleMethod="+SETTLE_METHOD);
|
||||
}
|
||||
if(ret=="操作成功"){
|
||||
$m.alert("操作成功","success");
|
||||
}else{
|
||||
$m.alert("结清失败,请联系管理员!","error");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -326,6 +379,139 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setEquipmentRatioCharge(){
|
||||
var settlemethod = getItemValue(0,0,"SETTLE_METHOD");
|
||||
var ADJUST_TYPE = getItemValue(0,0,"ADJUST_TYPE");
|
||||
var PAYDAY_ADJUST = getItemValue(0,0,"PAYDAY_ADJUST");
|
||||
if(ADJUST_TYPE.length==0){
|
||||
alert("请先选择变更类型!!!");
|
||||
setItemValue(0,getRow(),"ADJUST_TYPE","");
|
||||
return;
|
||||
}
|
||||
if(PAYDAY_ADJUST.length==0){
|
||||
alert("请先选择约定终止日!!!");
|
||||
setItemValue(0,getRow(),"PAYDAY_ADJUST","");
|
||||
return;
|
||||
}
|
||||
setItemValue(0,0,"CLEAN_LEASE_MONEY","<%=CLEAN_LEASE_MONEY%>");
|
||||
if(settlemethod=="SETTLE_METHOD02"){
|
||||
$("#A_div_1008").attr("style","display:block;");
|
||||
$("#A_div_1009").attr("style","display:block;");
|
||||
$("#A_div_2096").attr("style","display:block;");
|
||||
$("#A_div_2098").attr("style","display:block;");
|
||||
settlemet();
|
||||
}else if(settlemethod=="SETTLE_METHOD01") {
|
||||
$("#A_div_1008").attr("style","display:none;");
|
||||
$("#A_div_1009").attr("style","display:none;");
|
||||
$("#A_div_2096").attr("style","display:none;");
|
||||
$("#A_div_2098").attr("style","display:none;");
|
||||
getTerminateInfo();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function settlemet(){
|
||||
AsDialog.OpenSelector("selectEquipCarTermination","contractid,<%=contractId%>,flowunid,<%=flowunid%>","dialogWidth=" + parseInt(window.screen.width * 0.8) + "px dialogHeight=" + parseInt(window.screen.height * 0.6) + "px",function(sReturn){
|
||||
if(!sReturn||sReturn=="_CANCEL_"||sReturn=="_NONE_"){
|
||||
setItemValue(0,0,'SETTLE_METHOD',"");
|
||||
}else{
|
||||
var IDS= sReturn;
|
||||
// 获取选中租赁物参融比例
|
||||
var PROPROTION_NUMBER = AsControl.RunJavaMethodTrans("com.tenwa.voucher.CreateVoucherProcess.EarlyContract","getReductionRatio","flowunid=<%=flowunid%>,IDS="+IDS);
|
||||
var returns = AsControl.RunJavaMethodTrans("com.tenwa.voucher.CreateVoucherProcess.EarlyContract","setEquipmentTerminateStatus","flowunid=<%=flowunid%>,IDS="+IDS);
|
||||
if(returns=="false"){
|
||||
$m.alert("系统异常,请联系管理员!", 'error');
|
||||
}else{
|
||||
setItemValue(0,0,'PROPROTION_NUMBER',PROPROTION_NUMBER);
|
||||
if(PAYDAY_ADJUST!=""){
|
||||
changeContractTotal();
|
||||
}
|
||||
}
|
||||
}
|
||||
},"请选择租赁物");
|
||||
}
|
||||
|
||||
/*
|
||||
* 提前结清结清金额计算
|
||||
*/
|
||||
function changeContractTotal(){
|
||||
var ADJUST_TYPE = getItemValue(0,0,"ADJUST_TYPE");
|
||||
var AGREED_PENALTY = parseFloat(getItemValue(0,0,"AGREED_PENALTY"));
|
||||
var SDHANDLING_CHARGE = parseFloat(getItemValue(0,0,"SDHANDLING_CHARGE"));
|
||||
var AGREED_DATEPENALTY = parseFloat(getItemValue(0,0,"AGREED_DATEPENALTY"));
|
||||
if(AGREED_PENALTY>DUN_PENALTY){
|
||||
$m.alert("减免减免逾期违约金不能大于逾期违约金!", "warning");
|
||||
setItemValue(0,getRow(),"AGREED_PENALTY","0");
|
||||
}
|
||||
var REPURCHASE_RATIO = parseFloat(getItemValue(0,0,"PROPROTION_NUMBER"));
|
||||
var PAYDAY_ADJUST = getItemValue(0,0,"PAYDAY_ADJUST");
|
||||
if(PAYDAY_ADJUST!="" && REPURCHASE_RATIO>0){
|
||||
// 减免逾期违约金
|
||||
var AGREED_PENALTY = getItemValue(0,0,"AGREED_PENALTY");
|
||||
// 其他应收
|
||||
var OTHER_IN = getItemValue(0,0,"OTHER_IN");
|
||||
var params = "contractId=<%=contractId%>,flowunid=<%=flowunid%>,YEAR_RATE=<%=YEAR_RATE%>,PAYDAY_ADJUST="+PAYDAY_ADJUST+",REPURCHASE_RATIO="+REPURCHASE_RATIO+",AGREED_PENALTY="+AGREED_PENALTY+",OTHER_IN="+OTHER_IN+",SDHANDLING_CHARGE="+SDHANDLING_CHARGE;
|
||||
var result = AsControl.RunJavaMethodTrans("com.tenwa.voucher.CreateVoucherProcess.EarlyContract","getSettlementMoney",params);
|
||||
// 根据提前终止日计算还款日息差
|
||||
var dateRate=Number("<%=yearrate%>")/100;//获取利率
|
||||
var rentPlanDate = AsControl.RunJavaMethod("com.tenwa.reckon.executor.RentCalHelper","rentPlanDate","contractId=<%=contractId%>,paydayAdjust="+PAYDAY_ADJUST);
|
||||
var idays = datedifference(rentPlanDate,PAYDAY_ADJUST);//获取约定终止日和提出日期相差天数
|
||||
|
||||
result = result.split("@");
|
||||
var CORPUS_OVERAGE = result[0];
|
||||
var PREMATURE_MONEY = result[1];
|
||||
var RESIDUE_MONEY = result[2];
|
||||
var DUN_RENT = result[3];
|
||||
var DUN_PENALTY = result[4];
|
||||
// 未到期本金
|
||||
setItemValue(0,getRow(),"CORPUS_OVERAGE",CORPUS_OVERAGE);
|
||||
// 部分结清车辆未到期本金
|
||||
setItemValue(0,getRow(),"PREMATURE_MONEY",PREMATURE_MONEY);
|
||||
// 剩余车辆未到期本金
|
||||
setItemValue(0,getRow(),"RESIDUE_MONEY",RESIDUE_MONEY);
|
||||
// 逾期租金
|
||||
setItemValue(0,getRow(),"DUN_RENT",DUN_RENT);
|
||||
// 逾期罚息
|
||||
setItemValue(0,getRow(),"DUN_PENALTY",DUN_PENALTY);
|
||||
// 应退金额
|
||||
setItemValue(0,getRow(),"OTHER_OUT",'0.00');
|
||||
// 留购价
|
||||
setItemValue(0,getRow(),"NOMINAL_PRICE","<%=nominalPrice%>");
|
||||
// 违约金
|
||||
var ratio=0;
|
||||
if("<%=ratio%>"==""||"<%=ratio%>"==null||"<%=ratio%>"=="null"){
|
||||
ratio = 0.05;
|
||||
}else{
|
||||
ratio = (Number("<%=ratio%>")/100).toFixed(2);
|
||||
}
|
||||
var HANDLING_CHARGE = Math.round(Number(PREMATURE_MONEY*ratio)*100)/100;
|
||||
setItemValue(0,getRow(),"HANDLING_CHARGE",HANDLING_CHARGE);
|
||||
//计算还款日息差
|
||||
var REPAYMENT=((Number(PREMATURE_MONEY)*dateRate)/360)*Number(idays);
|
||||
setItemValue(0,0,'REPAYMENT_INTEREST',REPAYMENT);
|
||||
// 提前还款金额
|
||||
var CONTRACT_TOTAL = (Number(PREMATURE_MONEY)+Number(DUN_RENT)+Number(DUN_PENALTY)+Number(HANDLING_CHARGE)+Number(REPAYMENT));
|
||||
setItemValue(0,0,'CONTRACT_TOTAL',CONTRACT_TOTAL);
|
||||
// 最终还款金额
|
||||
var MAXIMUM_TOTAL = (Number(PREMATURE_MONEY)+Number(DUN_RENT)+Number(AGREED_PENALTY)+SDHANDLING_CHARGE+AGREED_DATEPENALTY);
|
||||
setItemValue(0,0,'MAXIMUM_TOTAL',MAXIMUM_TOTAL);
|
||||
|
||||
if(ADJUST_TYPE=="coerce_terminate"){
|
||||
setItemValue(0,getRow(),"PENALTY_MONEY","0.00");
|
||||
setItemValue(0,getRow(),"DUN_PENALTY","0.00");
|
||||
setItemValue(0,getRow(),"RECEIVABLE_MONEY02","0.00");
|
||||
}else if(ADJUST_TYPE=="normal_terminate"){
|
||||
setItemValue(0,getRow(),"PENALTY_MONEY","0.00");
|
||||
setItemValue(0,getRow(),"OPEN_MONEY","0.00");
|
||||
}else{
|
||||
setItemValue(0,getRow(),"OPEN_MONEY","0.00");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
function changeContract(){
|
||||
getTerminateInfo();
|
||||
// setItemValue(0,0,"CONTRACT_TOTAL",(Number(getItemValue(0,getRow(),"CONTRACT_TOTAL"))+Number(getItemValue(0,getRow(),"OTHER_IN"))).toFixed(2));
|
||||
|
||||
@ -326,6 +326,11 @@
|
||||
<attribute name="SurplusINTEREST" label="剩余利息" type="STRING" length="32"/>
|
||||
<attribute name="MAXIMUM_TOTAL" label="最终还款金额" type="STRING" length="32"/>
|
||||
<attribute name="AGREED_DATEPENALTY" label="商定还款日息差" type="STRING" length="32"/>
|
||||
<attribute name="SETTLE_METHOD" label="结清方式" type="STRING" length="32"/>
|
||||
<attribute name="PROPROTION_NUMBER" label="租赁物比重" type="STRING" length="32"/>
|
||||
<attribute name="CLEAN_LEASE_MONEY" label="融资金额(元)" type="STRING" length="32"/>
|
||||
<attribute name="PREMATURE_MONEY" label="部分结清车辆未到期本金" type="STRING" length="32"/>
|
||||
<attribute name="RESIDUE_MONEY" label="剩余车辆未到期本金" type="STRING" length="32"/>
|
||||
</attributes>
|
||||
<manager>
|
||||
<managerProperties>
|
||||
@ -378,6 +383,11 @@
|
||||
<attribute name="SurplusINTEREST" label="剩余利息" type="STRING" length="32"/>
|
||||
<attribute name="MAXIMUM_TOTAL" label="最终还款金额" type="STRING" length="32"/>
|
||||
<attribute name="AGREED_DATEPENALTY" label="商定还款日息差" type="STRING" length="32"/>
|
||||
<attribute name="SETTLE_METHOD" label="结清方式" type="STRING" length="32"/>
|
||||
<attribute name="PROPROTION_NUMBER" label="租赁物比重" type="STRING" length="32"/>
|
||||
<attribute name="CLEAN_LEASE_MONEY" label="融资金额(元)" type="STRING" length="32"/>
|
||||
<attribute name="PREMATURE_MONEY" label="部分结清车辆未到期本金" type="STRING" length="32"/>
|
||||
<attribute name="RESIDUE_MONEY" label="剩余车辆未到期本金" type="STRING" length="32"/>
|
||||
</attributes>
|
||||
<manager>
|
||||
<managerProperties>
|
||||
|
||||
@ -0,0 +1,746 @@
|
||||
package com.tenwa.voucher.CreateVoucherProcess;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.amarsoft.are.jbo.BizObject;
|
||||
import com.amarsoft.are.jbo.BizObjectManager;
|
||||
import com.amarsoft.are.jbo.JBOException;
|
||||
import com.amarsoft.are.jbo.JBOFactory;
|
||||
import com.amarsoft.are.jbo.JBOTransaction;
|
||||
import com.amarsoft.awe.util.SqlObject;
|
||||
import com.amarsoft.awe.util.Transaction;
|
||||
import com.tenwa.comm.util.date.DateAssistant;
|
||||
import com.tenwa.jbo.manager.DataUtil;
|
||||
import com.tenwa.reckon.bean.TabCalBean;
|
||||
import com.tenwa.reckon.util.DateUtil;
|
||||
import com.tenwa.reckon.util.TbBeanTools;
|
||||
import com.tenwa.reckon.util.UUIDUtil;
|
||||
|
||||
public class EarlyContract {
|
||||
|
||||
// 流程编号
|
||||
private String flowunid;
|
||||
// 租赁物编号
|
||||
private String IDS;
|
||||
// 提出日期
|
||||
private String PAYDAY_ADJUST;
|
||||
// 提请结清租赁物占比
|
||||
private String REPURCHASE_RATIO;
|
||||
// 合同ID
|
||||
private String contractId;
|
||||
// 合同年利率
|
||||
private String YEAR_RATE;
|
||||
// 变更类型
|
||||
private String ADJUST_TYPE;
|
||||
// 商定逾期罚息
|
||||
private String AGREED_PENALTY;
|
||||
// 其它应收
|
||||
private String OTHER_IN;
|
||||
// 投放编号
|
||||
private String plannumber;
|
||||
// 产品编号
|
||||
private String productId;
|
||||
//
|
||||
private String calType;
|
||||
//
|
||||
private String planList;
|
||||
//结清方式
|
||||
private String SettleMethod;
|
||||
|
||||
public String getSettleMethod() {
|
||||
return SettleMethod;
|
||||
}
|
||||
|
||||
public void setSettleMethod(String settleMethod) {
|
||||
SettleMethod = settleMethod;
|
||||
}
|
||||
|
||||
public String getPlanList() {
|
||||
return planList;
|
||||
}
|
||||
|
||||
public void setPlanList(String planList) {
|
||||
this.planList = planList;
|
||||
}
|
||||
|
||||
public String getCalType() {
|
||||
return calType;
|
||||
}
|
||||
|
||||
|
||||
public void setCalType(String calType) {
|
||||
this.calType = calType;
|
||||
}
|
||||
|
||||
|
||||
public String getPlannumber() {
|
||||
return plannumber;
|
||||
}
|
||||
|
||||
|
||||
public void setPlannumber(String plannumber) {
|
||||
this.plannumber = plannumber;
|
||||
}
|
||||
|
||||
|
||||
public String getProductId() {
|
||||
return productId;
|
||||
}
|
||||
|
||||
|
||||
public void setProductId(String productId) {
|
||||
this.productId = productId;
|
||||
}
|
||||
|
||||
|
||||
public String getPAYDAY_ADJUST() {
|
||||
return PAYDAY_ADJUST;
|
||||
}
|
||||
|
||||
|
||||
public void setPAYDAY_ADJUST(String pAYDAY_ADJUST) {
|
||||
PAYDAY_ADJUST = pAYDAY_ADJUST;
|
||||
}
|
||||
|
||||
|
||||
public String getREPURCHASE_RATIO() {
|
||||
return REPURCHASE_RATIO;
|
||||
}
|
||||
|
||||
|
||||
public void setREPURCHASE_RATIO(String rEPURCHASE_RATIO) {
|
||||
REPURCHASE_RATIO = rEPURCHASE_RATIO;
|
||||
}
|
||||
|
||||
|
||||
public String getContractId() {
|
||||
return contractId;
|
||||
}
|
||||
|
||||
|
||||
public void setContractId(String contractId) {
|
||||
this.contractId = contractId;
|
||||
}
|
||||
|
||||
|
||||
public String getYEAR_RATE() {
|
||||
return YEAR_RATE;
|
||||
}
|
||||
|
||||
|
||||
public void setYEAR_RATE(String yEAR_RATE) {
|
||||
YEAR_RATE = yEAR_RATE;
|
||||
}
|
||||
|
||||
|
||||
public String getADJUST_TYPE() {
|
||||
return ADJUST_TYPE;
|
||||
}
|
||||
|
||||
|
||||
public void setADJUST_TYPE(String aDJUST_TYPE) {
|
||||
ADJUST_TYPE = aDJUST_TYPE;
|
||||
}
|
||||
|
||||
|
||||
public String getAGREED_PENALTY() {
|
||||
return AGREED_PENALTY;
|
||||
}
|
||||
|
||||
|
||||
public void setAGREED_PENALTY(String aGREED_PENALTY) {
|
||||
AGREED_PENALTY = aGREED_PENALTY;
|
||||
}
|
||||
|
||||
|
||||
public String getOTHER_IN() {
|
||||
return OTHER_IN;
|
||||
}
|
||||
|
||||
|
||||
public void setOTHER_IN(String oTHER_IN) {
|
||||
OTHER_IN = oTHER_IN;
|
||||
}
|
||||
|
||||
|
||||
public String getFlowunid() {
|
||||
return flowunid;
|
||||
}
|
||||
|
||||
|
||||
public void setFlowunid(String flowunid) {
|
||||
this.flowunid = flowunid;
|
||||
}
|
||||
|
||||
|
||||
public String getIDS() {
|
||||
return IDS;
|
||||
}
|
||||
|
||||
|
||||
public void setIDS(String iDS) {
|
||||
IDS = iDS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取租赁物比重
|
||||
*/
|
||||
public String getReductionRatio(JBOTransaction tx) {
|
||||
Transaction Sqlca = null;
|
||||
String REDUCTION_RATIO="";
|
||||
try {
|
||||
Sqlca = Transaction.createTransaction(tx);
|
||||
String idss="";
|
||||
if(IDS!=null && !"".equals(IDS)) {
|
||||
String[] ids = IDS.split("@~");
|
||||
for (String id : ids) {
|
||||
if("".equals(idss)) {
|
||||
idss="'"+id+"'";
|
||||
}else {
|
||||
idss+=",'"+id+"'";
|
||||
}
|
||||
}
|
||||
}
|
||||
// 获取租赁物-增融后租赁物价格(元)
|
||||
REDUCTION_RATIO = Sqlca.getString("SELECT ROUND(ifnull(LECT.EQUIP_PRICE,0)/ifnull(LEC.EQUIP_PRICE,0),4) AS REDUCTION_RATIO FROM ( SELECT CONTRACT_ID, SUM(ifnull(EQUIP_PRICE,0)) AS EQUIP_PRICE FROM LB_EQUIPMENT_CAR_TEMP WHERE ID IN ( "+idss+" ) AND FLOWUNID='"+flowunid+"' GROUP BY CONTRACT_ID ) LECT LEFT JOIN ( SELECT CONTRACT_ID, SUM(ifnull(EQUIP_PRICE,0)) AS EQUIP_PRICE FROM LB_EQUIPMENT_CAR WHERE ifnull(TERMINATE_TYPE,'1')<>'2' GROUP BY CONTRACT_ID )LEC ON LEC.CONTRACT_ID=LECT.CONTRACT_ID ");
|
||||
REDUCTION_RATIO = new BigDecimal(REDUCTION_RATIO).multiply(new BigDecimal(100)).toString();
|
||||
DecimalFormat df = new DecimalFormat("#.00");
|
||||
REDUCTION_RATIO = df.format(Double.valueOf(REDUCTION_RATIO.toString()));
|
||||
} catch (Exception e) {
|
||||
try {
|
||||
Sqlca.rollback();
|
||||
} catch (JBOException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if(Sqlca!=null) {
|
||||
try {
|
||||
Sqlca.disConnect();
|
||||
Sqlca=null;
|
||||
} catch (JBOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
// return REDUCTION_RATIO;
|
||||
return ""+REDUCTION_RATIO+"";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 全部结清,将租赁物等于未结清的标记为本次结清,如果是部分结清,将选中租赁物标记为本次结清
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public String setEquipmentTerminateStatus(JBOTransaction tx) {
|
||||
Transaction Sqlca = null;
|
||||
String returns="true";
|
||||
try {
|
||||
Sqlca = Transaction.createTransaction(tx);
|
||||
/**
|
||||
* 每次选择全部结清与部分结清,初始化租赁物状态
|
||||
*/
|
||||
String sql="UPDATE LB_EQUIPMENT_CAR_TEMP SET TERMINATE_TYPE='1',SETTLE_STATUS='1' WHERE FLOWUNID='"+flowunid+"' AND ifnull(TERMINATE_TYPE,'1') <> '2' ";
|
||||
Sqlca.executeSQL(sql);
|
||||
sql = "UPDATE LB_EQUIPMENT_CAR_TEMP SET SETTLE_STATUS='1',TERMINATE_TYPE='1' WHERE (TERMINATE_TYPE='3' or SETTLE_STATUS='3') AND FLOWUNID='"+flowunid+"'";
|
||||
Sqlca.executeSQL(sql);
|
||||
sql="UPDATE LB_EQUIPMENT_CAR_TEMP SET SETTLE_STATUS='3' WHERE (TERMINATE_TYPE IS NULL OR TERMINATE_TYPE='1') AND FLOWUNID='"+flowunid+"' ";
|
||||
/**
|
||||
* 查询本次结清车辆加融总额
|
||||
*/
|
||||
String sql2="SELECT SUM(ifnull(EQUIP_PRICE,0)) AS EQUIP_PRICE FROM LB_EQUIPMENT_CAR_TEMP WHERE (TERMINATE_TYPE IS NULL OR TERMINATE_TYPE='1') AND FLOWUNID='"+flowunid+"' ";
|
||||
// 部分结清将选中的变更为本次结清
|
||||
if(IDS!=null && !"".equals(IDS)) {
|
||||
String[] ids = IDS.split("@~");
|
||||
String idss="";
|
||||
for (String id : ids) {
|
||||
if("".equals(idss)) {
|
||||
idss="'"+id+"'";
|
||||
}else {
|
||||
idss+=",'"+id+"'";
|
||||
}
|
||||
}
|
||||
sql2+=" AND ID IN("+idss+") ";
|
||||
Sqlca.executeSQL(sql+" AND ID IN("+idss+")");
|
||||
// 全部结清,将未结清租赁物全部转入本次结清租赁物
|
||||
}else {
|
||||
Sqlca.executeSQL(sql);
|
||||
}
|
||||
returns = Sqlca.getString(sql2);
|
||||
Sqlca.commit();
|
||||
} catch (Exception e) {
|
||||
returns="false";
|
||||
try {
|
||||
Sqlca.rollback();
|
||||
} catch (JBOException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if(Sqlca!=null) {
|
||||
try {
|
||||
Sqlca.disConnect();
|
||||
Sqlca=null;
|
||||
} catch (JBOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
// return returns;
|
||||
return ""+returns+"";
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取结清金额数据
|
||||
*/
|
||||
public String getSettlementMoney(JBOTransaction tx){
|
||||
Transaction Sqlca = null;
|
||||
try{
|
||||
Sqlca = Transaction.createTransaction(tx);
|
||||
// 剩余本金- 本次结清车辆约定终止日,次月后所有本金
|
||||
String CORPUS_OVERAGE = Sqlca.getString("select sum(round(ifnull(lrp.CORPUS, 0) - ifnull(lri.CORPUS, 0),2)) as CORPUS from LC_RENT_PLAN LRP left join (select CONTRACT_ID,PLAN_LIST,SUM(ifnull(CORPUS, 0)) as CORPUS from LC_RENT_INCOME group by CONTRACT_ID,PLAN_LIST ) LRI on LRI.CONTRACT_ID = LRP.CONTRACT_ID and LRP.PLAN_LIST = LRI.PLAN_LIST where date_format(STR_TO_DATE(lrp.PLAN_DATE,'%Y/%m/%d'),'%Y/%m')> date_format(STR_TO_DATE('"+PAYDAY_ADJUST+"','%Y/%m/%d'),'%Y/%m') and lrp.CONTRACT_ID = '"+contractId+"'");
|
||||
if(CORPUS_OVERAGE == null) {
|
||||
CORPUS_OVERAGE="0.00";
|
||||
}
|
||||
// 部分结清车辆未到期本金- 本次结清车辆约定终止日,次月后所有本金
|
||||
String PREMATURE_MONEY = Sqlca.getString("select sum(round(((ifnull(lrp.CORPUS, 0) - ifnull(lri.CORPUS, 0))*'"+REPURCHASE_RATIO+"'/100),2)) as CORPUS from LC_RENT_PLAN LRP left join (select CONTRACT_ID,PLAN_LIST,SUM(ifnull(CORPUS, 0)) as CORPUS from LC_RENT_INCOME group by CONTRACT_ID,PLAN_LIST ) LRI on LRI.CONTRACT_ID = LRP.CONTRACT_ID and LRP.PLAN_LIST = LRI.PLAN_LIST where date_format(STR_TO_DATE(lrp.PLAN_DATE,'%Y/%m/%d'),'%Y/%m')> date_format(STR_TO_DATE('"+PAYDAY_ADJUST+"','%Y/%m/%d'),'%Y/%m') and lrp.CONTRACT_ID = '"+contractId+"'");
|
||||
if(PREMATURE_MONEY == null) {
|
||||
PREMATURE_MONEY="0.00";
|
||||
}
|
||||
// 剩余车辆未到期本金- 本次结清车辆约定终止日,次月后所有本金
|
||||
BigDecimal bg = new BigDecimal(Double.parseDouble(CORPUS_OVERAGE) - Double.parseDouble(PREMATURE_MONEY));
|
||||
double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
String RESIDUE_MONEY = Double.toString(f1);
|
||||
if(RESIDUE_MONEY == null) {
|
||||
RESIDUE_MONEY="0.00";
|
||||
}
|
||||
// 逾期租金- 本次结清车辆截止约定终止日(上月)所有逾期租金
|
||||
String DUN_RENT = Sqlca.getString("select ifnull(sum(round(ifnull(ifnull(LRP.RENT,0),0) - ifnull(ifnull(LRI.RENT,0),0),2)),0) as OVER_RENT from LC_RENT_PLAN LRP left join (select CONTRACT_ID,PLAN_LIST,SUM(ifnull(RENT, 0)) as RENT from LC_RENT_INCOME group by CONTRACT_ID,PLAN_LIST ) LRI on LRI.CONTRACT_ID = LRP.CONTRACT_ID and LRP.PLAN_LIST = LRI.PLAN_LIST where STR_TO_DATE(LRP.PLAN_DATE,'%Y/%m/%d') < STR_TO_DATE('"+PAYDAY_ADJUST+"','%Y/%m/%d') and LRP.CONTRACT_ID = '"+contractId+"'");
|
||||
if(DUN_RENT == null) {
|
||||
DUN_RENT="0.00";
|
||||
}
|
||||
// 逾期罚息- 本次结清车辆截止约定终止日所有罚息
|
||||
String DUN_PENALTY =Sqlca.getString("select ifnull(SUM(ROUND(ifnull(GETRENTPENALTY (LRP.PAYMENT_NUMBER, LRP.PLAN_LIST, '\"+PAYDAY_ADJUST+\"')-ifnull(LRI.PENALTY, 0)-ifnull(LRI.PENALTY_ADJUST, 0), 0), 2)),0) as DUN_PENALTY from LC_RENT_PLAN LRP left join (select PAYMENT_NUMBER,PLAN_LIST,SUM(ifnull(PENALTY, 0)) as PENALTY,SUM(ifnull(PENALTY_ADJUST, 0)) as PENALTY_ADJUST from LC_RENT_INCOME group by PAYMENT_NUMBER,PLAN_LIST) LRI on LRI.PAYMENT_NUMBER = LRP.PAYMENT_NUMBER and LRI.PLAN_LIST = LRP.PLAN_LIST where date_format(STR_TO_DATE(lrp.PLAN_DATE, '%Y/%m/%d'), '%Y/%m')> date_format(STR_TO_DATE('\"+PAYDAY_ADJUST+\"', '%Y/%m/%d'), '%Y/%m') and LRP.CONTRACT_ID = '"+contractId+"'");
|
||||
|
||||
// return CORPUS_OVERAGE+"@"+PREMATURE_MONEY+"@"+RESIDUE_MONEY+"@"+DUN_RENT+"@"+DUN_PENALTY;
|
||||
return ""+CORPUS_OVERAGE+"@"+PREMATURE_MONEY+"@"+RESIDUE_MONEY+"@"+DUN_RENT+"@"+DUN_PENALTY+"";
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return "ERR";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public String partSettlement(JBOTransaction tx){
|
||||
com.amarsoft.awe.util.Transaction Sqlca = null;
|
||||
try{
|
||||
TabCalBean bean = TbBeanTools.getTabInfoTrans(calType, flowunid,plannumber,productId,tx);
|
||||
BigDecimal t = new BigDecimal( "0.01" );
|
||||
BigDecimal zero = new BigDecimal(0);
|
||||
Sqlca = com.amarsoft.awe.util.Transaction.createTransaction(tx);
|
||||
//本次结清租赁物比例
|
||||
String equipmentRatio = REPURCHASE_RATIO;
|
||||
String paydayAdjust = PAYDAY_ADJUST;
|
||||
BigDecimal equipmentRatio2 = new BigDecimal(equipmentRatio).divide(new BigDecimal(100));
|
||||
|
||||
BizObjectManager lfratBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_FUND_RENT_ADJUST_TEMP",Sqlca);
|
||||
BizObject lfrat = lfratBm.createQuery("FLOWUNID='"+flowunid+"'").getSingleResult(true);
|
||||
String CONTRACT_ID = Sqlca.getString("SELECT lci.id FROM lb_contract_info_temp lcit left join lb_contract_info lci on lci.CONTRACT_NO = lcit.CONTRACT_NO where lcit.FLOWUNID='"+flowunid+"'");
|
||||
String adjustType = lfrat.getAttribute("ADJUST_TYPE").toString();//coerce_terminate
|
||||
|
||||
// 获取网银ID
|
||||
String EBANK_NUMBER = Sqlca.getString("SELECT LE.ID FROM LC_EBANK_TEMP LET LEFT JOIN LC_EBANK LE ON LE.EBANK_NUMBER=LET.EBANK_NUMBER where LET.FLOWUNID='"+flowunid+"'");
|
||||
String MAXIMUM_TOTAL = lfrat.getAttribute("MAXIMUM_TOTAL").getString();
|
||||
String RECEIVABLE_MONEY02 = MAXIMUM_TOTAL;
|
||||
//String OPEN_MONEY = lfrat.getAttribute("OPEN_MONEY").getString();
|
||||
// 判断结清类型是否为提前结清
|
||||
if("01".equals(adjustType)){
|
||||
Sqlca.executeSQL(new SqlObject("update LC_EBANK_TEMP let set HAD_MONEY = HAD_MONEY+"+RECEIVABLE_MONEY02+",MAYOPE_MONEY=MAYOPE_MONEY-"+RECEIVABLE_MONEY02+" where LET.FLOWUNID = '" +flowunid+ "'") );
|
||||
}else if("coerce_terminate".equals(adjustType)){
|
||||
Sqlca.executeSQL(new SqlObject("update LC_EBANK_TEMP let set HAD_MONEY = HAD_MONEY+MAYOPE_MONEY,MAYOPE_MONEY=MAYOPE_MONEY-MAYOPE_MONEY where LET.FLOWUNID = '" +flowunid+ "'") );
|
||||
}
|
||||
/**
|
||||
* 变更租金计划表
|
||||
*/
|
||||
// 获取日期大于约定终止日所在月的租金计划,按比例算出每期租金,本金,利息,在约定终止日那一月汇总后边的
|
||||
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);
|
||||
//查询结清租金
|
||||
// BigDecimal tax = new BigDecimal( bean.getTax() ).multiply( t );
|
||||
// BigDecimal other = new BigDecimal( bean.getOther() ).multiply( t ).add( BigDecimal.ONE );
|
||||
// 获取该合同约定终止日所在月开始所有本金
|
||||
String SUM_CORPUS = Sqlca.getString("SELECT ifnull(SUM(ifnull(CORPUS,0)),0) FROM LC_RENT_PLAN WHERE CONTRACT_ID='"+contractId+"' 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')");
|
||||
// 未结清租金
|
||||
BigDecimal now_rent = new BigDecimal(0);
|
||||
// 未结清本金
|
||||
BigDecimal now_corpus = new BigDecimal(0);
|
||||
// 结清日最近的一期租金
|
||||
BigDecimal end_rent = new BigDecimal(0);
|
||||
// 结清日最近的一期本金
|
||||
BigDecimal end_corpus = new BigDecimal(0);
|
||||
// 结清日最近的一期利息
|
||||
BigDecimal end_interest = new BigDecimal(0);
|
||||
String last_plan_date = "";
|
||||
for(int i=0; i<lrptBoList.size();i++) {
|
||||
BizObject lrptBo = lrptBoList.get(i);
|
||||
|
||||
BigDecimal rent= new BigDecimal(0);
|
||||
BigDecimal corpus= new BigDecimal(0);
|
||||
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();
|
||||
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());
|
||||
}
|
||||
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));
|
||||
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 {
|
||||
// 获取结清后约定终止日后边期次当期租金计划的租金本金利息
|
||||
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));
|
||||
corpus = new BigDecimal(lrptBo.getAttribute("CORPUS").toString()).subtract(new BigDecimal(lrptBo.getAttribute("CORPUS").toString()).multiply(new BigDecimal(equipmentRatio).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_HALF_UP));
|
||||
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));
|
||||
if(interest.compareTo(zero)==1) {
|
||||
interest=rent.subtract(corpus);
|
||||
}
|
||||
now_rent=now_rent.add(rent);
|
||||
now_corpus=now_corpus.add(corpus);
|
||||
}
|
||||
lrptBo.setAttributeValue("RENT",rent.toString());
|
||||
lrptBo.setAttributeValue("CORPUS_BUSINESS",corpus.toString());
|
||||
lrptBo.setAttributeValue("CORPUS",corpus.toString());
|
||||
lrptBo.setAttributeValue("INTEREST_BUSINESS",interest);
|
||||
lrptBo.setAttributeValue("INTEREST",interest);
|
||||
lrptBo.setAttributeValue("MEMO","部分结清");
|
||||
lrptBm.saveObject(lrptBo);
|
||||
}
|
||||
|
||||
// 因为不确定结清日期是否大于等于第一期月份,所以不按照月份删除。按照实际金额删除
|
||||
Sqlca.executeSQL(new SqlObject("delete from LC_RENT_PLAN_TEMP where flowunid='"+flowunid+"' AND ifnull(rent,0)=0 AND MEMO='部分结清' "));
|
||||
/**
|
||||
* 保证金抵扣租金
|
||||
* 对应的逾期租金、当期租金、未到期本金、逾期违约金、名义价款、提前终止合同损失金及其他应收
|
||||
*/
|
||||
BizObject lrptBo2 = lrptBm.createQuery("FLOWUNID='"+flowunid+"' ").getSingleResult(false);
|
||||
//创建租金实收
|
||||
BizObjectManager lritBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_RENT_INCOME_TEMP",Sqlca);
|
||||
//创建资金收付
|
||||
BizObjectManager lfitBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_FUND_INCOME_TEMP",Sqlca);
|
||||
// 创建资金计划
|
||||
BizObjectManager lfptBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_FUND_PLAN_TEMP",Sqlca);
|
||||
String sql="";
|
||||
if("coerce_terminate".equals(adjustType)){
|
||||
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:%i:%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) order by LRPT.PLAN_LIST";
|
||||
}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 ";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 保证金抵扣留购价款 (强制结清不核销留购价)
|
||||
*/
|
||||
BigDecimal REPURCHASE_MONEY = new BigDecimal(lfrat.getAttribute("REPURCHASE_MONEY").toString());
|
||||
|
||||
/**
|
||||
* 处理资金计划表-其他应收
|
||||
*/
|
||||
BigDecimal OTHER_IN = new BigDecimal(lfrat.getAttribute("OTHER_IN").toString());
|
||||
String OTHER_IN_ID = UUID.randomUUID().toString().replaceAll("-","");
|
||||
if(OTHER_IN.compareTo(zero)>0) {
|
||||
BizObject lfptBo = lfptBm.newObject();
|
||||
lfptBo.setAttributeValue("ID",OTHER_IN_ID);
|
||||
lfptBo.setAttributeValue("PROJECT_ID",lrptBo2.getAttribute("PROJECT_ID"));
|
||||
lfptBo.setAttributeValue("PROJECT_PLAN_NUMBER",lrptBo2.getAttribute("PROJECT_PLAN_NUMBER"));
|
||||
lfptBo.setAttributeValue("CONTRACT_ID",lrptBo2.getAttribute("CONTRACT_ID"));
|
||||
lfptBo.setAttributeValue("CONTRACT_PLAN_NUMBER",lrptBo2.getAttribute("CONTRACT_PLAN_NUMBER"));
|
||||
lfptBo.setAttributeValue("PAYMENT_NUMBER",lrptBo2.getAttribute("PAYMENT_NUMBER"));
|
||||
lfptBo.setAttributeValue("PLAN_LIST","1");
|
||||
lfptBo.setAttributeValue("PAY_TYPE","pay_type_in");
|
||||
lfptBo.setAttributeValue("FEE_TYPE","feetype8");
|
||||
lfptBo.setAttributeValue("SETTLE_METHOD","settlemethod6");
|
||||
lfptBo.setAttributeValue("PLAN_DATE",paydayAdjust);
|
||||
lfptBo.setAttributeValue("PLAN_MONEY",OTHER_IN.toString());
|
||||
lfptBo.setAttributeValue("FLOWUNID",flowunid);
|
||||
lfptBo.setAttributeValue("INPUTTIME",DateUtil.getSystemDateTime());
|
||||
lfptBm.saveObject(lfptBo);
|
||||
}
|
||||
BigDecimal OTHER_OUT = new BigDecimal(lfrat.getAttribute("OTHER_OUT").toString());
|
||||
String OTHER_OUT_ID = UUID.randomUUID().toString().replaceAll("-","");
|
||||
if(OTHER_OUT.compareTo(zero)>0) {
|
||||
BizObject lfptBo = lfptBm.newObject();
|
||||
lfptBo.setAttributeValue("ID",OTHER_OUT_ID);
|
||||
lfptBo.setAttributeValue("PROJECT_ID",lrptBo2.getAttribute("PROJECT_ID"));
|
||||
lfptBo.setAttributeValue("PROJECT_PLAN_NUMBER",lrptBo2.getAttribute("PROJECT_PLAN_NUMBER"));
|
||||
lfptBo.setAttributeValue("CONTRACT_ID",lrptBo2.getAttribute("CONTRACT_ID"));
|
||||
lfptBo.setAttributeValue("CONTRACT_PLAN_NUMBER",lrptBo2.getAttribute("CONTRACT_PLAN_NUMBER"));
|
||||
lfptBo.setAttributeValue("PAYMENT_NUMBER",lrptBo2.getAttribute("PAYMENT_NUMBER"));
|
||||
lfptBo.setAttributeValue("PLAN_LIST","1");
|
||||
lfptBo.setAttributeValue("PAY_TYPE","pay_type_out");
|
||||
lfptBo.setAttributeValue("FEE_TYPE","feetype11");
|
||||
lfptBo.setAttributeValue("SETTLE_METHOD","settlemethod6");
|
||||
lfptBo.setAttributeValue("PLAN_DATE",paydayAdjust);
|
||||
lfptBo.setAttributeValue("PLAN_MONEY",OTHER_OUT.toString());
|
||||
lfptBo.setAttributeValue("FLOWUNID",flowunid);
|
||||
lfptBo.setAttributeValue("INPUTTIME",DateUtil.getSystemDateTime());
|
||||
lfptBm.saveObject(lfptBo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 租金实收表操作
|
||||
*/
|
||||
if(!"coerce_terminate".equals(adjustType)){
|
||||
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++) {
|
||||
// 获取抵扣前当期应收租金本金利息
|
||||
String PLAN_LIST=dataList.get(i).get("PLAN_LIST");
|
||||
String PLAN_DATE = dataList.get(i).get("PLAN_DATE");
|
||||
String PLAN_ID = dataList.get(i).get("PLAN_ID");
|
||||
String INPUTTIME = dataList.get(i).get("INPUTTIME");
|
||||
// end_corpus
|
||||
BigDecimal over_rent = new BigDecimal(0);
|
||||
BigDecimal over_corpus = new BigDecimal(0);
|
||||
BigDecimal over_interest = new BigDecimal(0);
|
||||
BigDecimal over_penalty = new BigDecimal(0);
|
||||
if(i==dataList.size()-1) {
|
||||
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))){
|
||||
//提交结清收取当月利息,强制结清不收利息
|
||||
if("terminate".equals(adjustType)){
|
||||
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);
|
||||
over_rent=over_interest.add(over_corpus);
|
||||
}else{
|
||||
over_corpus=new BigDecimal(dataList.get(i).get("OVER_CORPUS")).subtract(end_corpus);
|
||||
over_rent=over_corpus;
|
||||
}
|
||||
}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";
|
||||
List<Map<String, String>> dataOverList = DataUtil.query(overSql, Sqlca);
|
||||
BigDecimal plan_rent = new BigDecimal(dataOverList.get(0).get("OVER_RENT"));
|
||||
BigDecimal plan_corpus = new BigDecimal(dataOverList.get(0).get("OVER_CORPUS"));
|
||||
String factSql = "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+"' and plan_list='"+PLAN_LIST+"' GROUP BY CONTRACT_ID, PLAN_LIST";
|
||||
List<Map<String, String>> dataFactList = DataUtil.query(factSql, Sqlca);
|
||||
BigDecimal old_rent = new BigDecimal(0);
|
||||
BigDecimal old_corpus = new BigDecimal(0);
|
||||
if(dataFactList.size()>0){
|
||||
old_rent = new BigDecimal(dataFactList.get(0).get("RENT"));
|
||||
old_corpus = new BigDecimal(dataFactList.get(0).get("CORPUS"));
|
||||
}
|
||||
over_rent=plan_rent.setScale(2,BigDecimal.ROUND_HALF_UP).subtract(old_rent);
|
||||
over_corpus=plan_corpus.setScale(2,BigDecimal.ROUND_HALF_UP).subtract(old_corpus);
|
||||
//提交结清收取逾期利息,强制结清不收利息
|
||||
if("SETTLE_METHOD02".equals(SettleMethod)){
|
||||
over_interest=over_rent.subtract(over_corpus);
|
||||
}else{
|
||||
over_rent=over_corpus;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(over_rent.compareTo(BigDecimal.ZERO)!=0){
|
||||
BizObject lritBo = lritBm.newObject();
|
||||
lritBo.setAttributeValue("PROJECT_ID",lrptBo2.getAttribute("PROJECT_ID"));
|
||||
lritBo.setAttributeValue("PROJECT_PLAN_NUMBER",lrptBo2.getAttribute("PROJECT_PLAN_NUMBER"));
|
||||
lritBo.setAttributeValue("CONTRACT_ID",lrptBo2.getAttribute("CONTRACT_ID"));
|
||||
lritBo.setAttributeValue("CONTRACT_PLAN_NUMBER",lrptBo2.getAttribute("CONTRACT_PLAN_NUMBER"));
|
||||
lritBo.setAttributeValue("PAYMENT_NUMBER",lrptBo2.getAttribute("PAYMENT_NUMBER"));
|
||||
lritBo.setAttributeValue("PLAN_LIST",PLAN_LIST);
|
||||
lritBo.setAttributeValue("PLAN_ID",PLAN_ID);
|
||||
lritBo.setAttributeValue("RENT",over_rent.toString());
|
||||
lritBo.setAttributeValue("CORPUS",over_corpus.toString());
|
||||
lritBo.setAttributeValue("INTEREST",over_interest.toString());
|
||||
lritBo.setAttributeValue("PENALTY",over_penalty);
|
||||
lritBo.setAttributeValue("HIRE_LIST",getHireList(lrptBo2.getAttribute("PAYMENT_NUMBER").toString(),PLAN_LIST,Sqlca));
|
||||
lritBo.setAttributeValue("HIRE_DATE",paydayAdjust);
|
||||
lritBo.setAttributeValue("CORPUS_ADJUST","0.00");
|
||||
lritBo.setAttributeValue("INTEREST_ADJUST","0.00");
|
||||
lritBo.setAttributeValue("PENALTY_ADJUST","0.00");
|
||||
lritBo.setAttributeValue("SETTLE_METHOD","settlemethod6");
|
||||
lritBo.setAttributeValue("DEDUCTION_ID","");
|
||||
lritBo.setAttributeValue("ACCOUNTING_DATE",paydayAdjust);
|
||||
lritBo.setAttributeValue("ROLL_BACK","0");
|
||||
lritBo.setAttributeValue("FLOWUNID",flowunid);
|
||||
lritBo.setAttributeValue("IS_FLOWING","0");
|
||||
lritBo.setAttributeValue("INPUTTIME",INPUTTIME);
|
||||
lritBo.setAttributeValue("EBANK_NUMBER",EBANK_NUMBER);
|
||||
lritBm.saveObject(lritBo);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 处理保证金未抵扣的留购价款
|
||||
*/
|
||||
BizObject boLFP = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_FUND_PLAN",tx).createQuery("CONTRACT_ID='"+CONTRACT_ID+"' and FEE_TYPE='feetype4'").getSingleResult(false);
|
||||
if(!"coerce_terminate".equals(adjustType)){
|
||||
if(REPURCHASE_MONEY.compareTo(BigDecimal.ZERO)!=0){
|
||||
BizObject lfitBo2 = lfitBm.newObject();
|
||||
lfitBo2.setAttributeValue("ID", UUIDUtil.getUUID());
|
||||
lfitBo2.setAttributeValue("PROJECT_ID",boLFP.getAttribute("PROJECT_ID").getString());
|
||||
lfitBo2.setAttributeValue("PROJECT_PLAN_NUMBER",boLFP.getAttribute("PROJECT_PLAN_NUMBER").getString());
|
||||
lfitBo2.setAttributeValue("CONTRACT_ID",boLFP.getAttribute("CONTRACT_ID").getString());
|
||||
lfitBo2.setAttributeValue("CONTRACT_PLAN_NUMBER",boLFP.getAttribute("CONTRACT_PLAN_NUMBER").getString());
|
||||
lfitBo2.setAttributeValue("PAYMENT_NUMBER",boLFP.getAttribute("PAYMENT_NUMBER").getString());
|
||||
lfitBo2.setAttributeValue("PLAN_ID",boLFP.getAttribute("ID").getString());
|
||||
lfitBo2.setAttributeValue("PLAN_LIST","1");
|
||||
lfitBo2.setAttributeValue("PAY_TYPE","pay_type_in");
|
||||
lfitBo2.setAttributeValue("FEE_TYPE","feetype4");
|
||||
lfitBo2.setAttributeValue("SETTLE_METHOD","settlemethod6");
|
||||
lfitBo2.setAttributeValue("CHARGE_LIST","1");
|
||||
lfitBo2.setAttributeValue("FACT_DATE",paydayAdjust);
|
||||
lfitBo2.setAttributeValue("FACT_MONEY",REPURCHASE_MONEY);
|
||||
lfitBo2.setAttributeValue("FEE_ADJUST","0.00");
|
||||
lfitBo2.setAttributeValue("ACCOUNTING_DATE",paydayAdjust);
|
||||
lfitBo2.setAttributeValue("ROLL_BACK","0");
|
||||
lfitBo2.setAttributeValue("FLOWUNID",flowunid);
|
||||
lfitBo2.setAttributeValue("IS_FLOWING","0");
|
||||
lfitBo2.setAttributeValue("INPUTTIME", DateAssistant.getTodayNow());
|
||||
lfitBo2.setAttributeValue("EBANK_NUMBER",EBANK_NUMBER);
|
||||
lfitBm.saveObject(lfitBo2);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 处理保证金未抵扣的其他应收
|
||||
*/
|
||||
if(OTHER_IN.compareTo(BigDecimal.ZERO)!=0){
|
||||
BizObject lfitBo2 = lfitBm.newObject();
|
||||
lfitBo2.setAttributeValue("ID", UUIDUtil.getUUID());
|
||||
lfitBo2.setAttributeValue("PROJECT_ID",boLFP.getAttribute("PROJECT_ID").getString());
|
||||
lfitBo2.setAttributeValue("PROJECT_PLAN_NUMBER",boLFP.getAttribute("PROJECT_PLAN_NUMBER").getString());
|
||||
lfitBo2.setAttributeValue("CONTRACT_ID",boLFP.getAttribute("CONTRACT_ID").getString());
|
||||
lfitBo2.setAttributeValue("CONTRACT_PLAN_NUMBER",boLFP.getAttribute("CONTRACT_PLAN_NUMBER").getString());
|
||||
lfitBo2.setAttributeValue("PAYMENT_NUMBER",boLFP.getAttribute("PAYMENT_NUMBER").getString());
|
||||
lfitBo2.setAttributeValue("PLAN_ID",OTHER_IN_ID);
|
||||
lfitBo2.setAttributeValue("PLAN_LIST","1");
|
||||
lfitBo2.setAttributeValue("PAY_TYPE","pay_type_in");
|
||||
lfitBo2.setAttributeValue("FEE_TYPE","feetype8");
|
||||
lfitBo2.setAttributeValue("SETTLE_METHOD","settlemethod6");
|
||||
lfitBo2.setAttributeValue("CHARGE_LIST","1");
|
||||
lfitBo2.setAttributeValue("FACT_DATE",paydayAdjust);
|
||||
lfitBo2.setAttributeValue("FACT_MONEY",OTHER_IN);
|
||||
lfitBo2.setAttributeValue("FEE_ADJUST","0.00");
|
||||
lfitBo2.setAttributeValue("ACCOUNTING_DATE",paydayAdjust);
|
||||
lfitBo2.setAttributeValue("ROLL_BACK","0");
|
||||
lfitBo2.setAttributeValue("FLOWUNID",flowunid);
|
||||
lfitBo2.setAttributeValue("IS_FLOWING","0");
|
||||
lfitBo2.setAttributeValue("INPUTTIME", DateAssistant.getTodayNow());
|
||||
lfitBo2.setAttributeValue("EBANK_NUMBER",EBANK_NUMBER);
|
||||
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+"'"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 租金计划临时表变更回笼状态
|
||||
*/
|
||||
List<BizObject> lrptBoList2 = lrptBm.createQuery("FLOWUNID='"+flowunid+"' and v.ifnull(PLAN_STATUS,'未回笼')<>'已回笼' order by plan_list desc").getResultList(false);
|
||||
for(int i=0;i<lrptBoList2.size();i++) {
|
||||
String PLAN_LIST = lrptBoList2.get(i).getAttribute("PLAN_LIST").toString();
|
||||
double RENT = Double.parseDouble(lrptBoList2.get(i).getAttribute("RENT").toString());
|
||||
DataUtil.executeUpdate("UPDATE LC_RENT_PLAN_TEMP SET PLAN_STATUS=(SELECT CASE WHEN (ifnull(LFIT.RENT,0)+ifnull(LRI.RENT,0))>="+RENT+" THEN '已回笼' WHEN (ifnull(LFIT.RENT,0)+ifnull(LRI.RENT,0))> 0 AND (ifnull(LFIT.RENT,0)+ifnull(LRI.RENT,0))<"+RENT+" THEN '部分回笼' ELSE '未回笼' END FROM (SELECT MAX(CONTRACT_ID) AS CONTRACT_ID, SUM(ifnull(RENT,0)) AS RENT FROM LC_RENT_INCOME_TEMP WHERE FLOWUNID='"+flowunid+"' AND PLAN_LIST='"+PLAN_LIST+"' )LFIT LEFT JOIN (SELECT MAX(CONTRACT_ID) AS CONTRACT_ID, SUM(ifnull(RENT,0)) AS RENT FROM LC_RENT_INCOME WHERE CONTRACT_ID='"+CONTRACT_ID+"' AND PLAN_LIST='"+PLAN_LIST+"' )LRI ON LRI.CONTRACT_ID=LFIT.CONTRACT_ID ) WHERE FLOWUNID='"+flowunid+"' AND PLAN_LIST='"+PLAN_LIST+"'", tx);
|
||||
}
|
||||
|
||||
// 变更租赁物
|
||||
DataUtil.executeUpdate("UPDATE LB_EQUIPMENT_CAR_TEMP SET TERMINATE_TYPE=SETTLE_STATUS WHERE FLOWUNID='"+flowunid+"' ",tx);
|
||||
|
||||
BizObjectManager lcctBom = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_CALC_CONDITION_TEMP", Sqlca);
|
||||
|
||||
BizObject lcctBo = lcctBom.createQuery("flowunid=:flowunid").setParameter("flowunid", flowunid).getSingleResult(false);
|
||||
BigDecimal clean_lease_money = new BigDecimal(lcctBo.getAttribute("CLEAN_LEASE_MONEY").toString()); //融资额
|
||||
List<BizObject> lrptBList = lrptBm.createQuery("flowunid=:flowunid order by plan_list").setParameter("flowunid", flowunid).getResultList(true);
|
||||
for(BizObject lrptB : lrptBList) {
|
||||
String corpus = lrptB.getAttribute("CORPUS").toString();
|
||||
BigDecimal bdCorpus = new BigDecimal(corpus);
|
||||
lrptB.setAttributeValue("ALL_REMAIN_CORPUS", clean_lease_money.subtract(bdCorpus).toString());
|
||||
clean_lease_money = clean_lease_money.subtract(bdCorpus);
|
||||
lrptBm.saveObject(lrptB);
|
||||
}
|
||||
Sqlca.commit();
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
try {
|
||||
Sqlca.rollback();
|
||||
} catch (JBOException jboException) {
|
||||
jboException.printStackTrace();
|
||||
}
|
||||
return "操作失败";
|
||||
} finally {
|
||||
try {
|
||||
if(Sqlca!=null) {
|
||||
Sqlca.disConnect();
|
||||
}
|
||||
} catch (JBOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
return "操作成功";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取回笼期项
|
||||
*/
|
||||
public String getHireList(String paymentNumber,String planList,com.amarsoft.awe.util.Transaction Sqlca) throws Exception{
|
||||
String hireList = Sqlca.getString("select max(HIRE_LIST) HIRE_LIST from (select max(HIRE_LIST) HIRE_LIST from LC_RENT_INCOME_TEMP where ROLL_BACK='0' and IS_FLOWING='0' and PAYMENT_NUMBER='"+paymentNumber+"' and PLAN_LIST='"+planList+"' union all select max(HIRE_LIST) HIRE_LIST from LC_RENT_INCOME where ROLL_BACK='0' and PAYMENT_NUMBER='"+paymentNumber+"' and PLAN_LIST='"+planList+"') aa");
|
||||
if(hireList==null){
|
||||
return "1";
|
||||
}
|
||||
int hireList2 = Integer.valueOf(hireList);
|
||||
return hireList2+1+"";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -177,4 +177,24 @@ public interface LC_FUND_RENT_ADJUST{
|
||||
* 商定还款日息差 STRING(32)<br>
|
||||
*/
|
||||
public static final String AGREED_DATEPENALTY = "AGREED_DATEPENALTY";
|
||||
/**
|
||||
* 结清方式 STRING(32)<br>
|
||||
*/
|
||||
public static final String SETTLE_METHOD = "SETTLE_METHOD";
|
||||
/**
|
||||
* 租赁物比重 STRING(32)<br>
|
||||
*/
|
||||
public static final String PROPROTION_NUMBER = "PROPROTION_NUMBER";
|
||||
/**
|
||||
* 融资金额(元) STRING(32)<br>
|
||||
*/
|
||||
public static final String CLEAN_LEASE_MONEY = "CLEAN_LEASE_MONEY";
|
||||
/**
|
||||
* 部分结清车辆未到期本金 STRING(32)<br>
|
||||
*/
|
||||
public static final String PREMATURE_MONEY = "PREMATURE_MONEY";
|
||||
/**
|
||||
* 剩余车辆未到期本金 STRING(32)<br>
|
||||
*/
|
||||
public static final String RESIDUE_MONEY = "RESIDUE_MONEY";
|
||||
}
|
||||
@ -181,4 +181,24 @@ public interface LC_FUND_RENT_ADJUST_TEMP{
|
||||
* 商定还款日息差 STRING(32)<br>
|
||||
*/
|
||||
public static final String AGREED_DATEPENALTY = "AGREED_DATEPENALTY";
|
||||
/**
|
||||
* 结清方式 STRING(32)<br>
|
||||
*/
|
||||
public static final String SETTLE_METHOD = "SETTLE_METHOD";
|
||||
/**
|
||||
* 租赁物比重 STRING(32)<br>
|
||||
*/
|
||||
public static final String PROPROTION_NUMBER = "PROPROTION_NUMBER";
|
||||
/**
|
||||
* 融资金额(元) STRING(32)<br>
|
||||
*/
|
||||
public static final String CLEAN_LEASE_MONEY = "CLEAN_LEASE_MONEY";
|
||||
/**
|
||||
* 部分结清车辆未到期本金 STRING(32)<br>
|
||||
*/
|
||||
public static final String PREMATURE_MONEY = "PREMATURE_MONEY";
|
||||
/**
|
||||
* 剩余车辆未到期本金 STRING(32)<br>
|
||||
*/
|
||||
public static final String RESIDUE_MONEY = "RESIDUE_MONEY";
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user