分润补漏功能
This commit is contained in:
parent
82bfd45337
commit
1d586480aa
@ -12,6 +12,7 @@ include
|
|||||||
dwTemp.genHTMLObjectWindow(CurPage.getParameter("ID"));
|
dwTemp.genHTMLObjectWindow(CurPage.getParameter("ID"));
|
||||||
String sButtons[][] = {
|
String sButtons[][] = {
|
||||||
{"true", "All", "Button", "保存","保存所有修改", "saveRecord()", "", "", "", ""},
|
{"true", "All", "Button", "保存","保存所有修改", "saveRecord()", "", "", "", ""},
|
||||||
|
{"true","All","Button","根据产品ID补录分润计划","根据产品ID补录分润计划","split()","","","","btn_icon_delete",""},
|
||||||
};
|
};
|
||||||
%><%@ include file="/Frame/resources/include/ui/include_info.jspf"%>
|
%><%@ include file="/Frame/resources/include/ui/include_info.jspf"%>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
@ -53,5 +54,15 @@ include
|
|||||||
|
|
||||||
as_save("myiframe0", "goBack()");
|
as_save("myiframe0", "goBack()");
|
||||||
}
|
}
|
||||||
|
function split(){
|
||||||
|
var distributorId = getItemValue(0,0,'distributor_id');
|
||||||
|
var productId = getItemValue(0,0,'product_id');
|
||||||
|
var message = AsControl.RunJavaMethodTrans("com.tenwa.reckon.executor.CreateTransactionExecutor","getSplitByProductId","productId="+productId+",distributorId="+distributorId);
|
||||||
|
if(message=="success"){
|
||||||
|
alert("操作成功");
|
||||||
|
}else{
|
||||||
|
alert(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<%@ include file="/Frame/resources/include/include_end.jspf"%>
|
<%@ include file="/Frame/resources/include/include_end.jspf"%>
|
||||||
|
|||||||
@ -16,15 +16,14 @@ import com.tenwa.quartz.StringUtil;
|
|||||||
import com.tenwa.reckon.bean.*;
|
import com.tenwa.reckon.bean.*;
|
||||||
import com.tenwa.reckon.executor.rentChange.RentChangeExe;
|
import com.tenwa.reckon.executor.rentChange.RentChangeExe;
|
||||||
import com.tenwa.reckon.executor.rentTerminate.RentTerminateExe;
|
import com.tenwa.reckon.executor.rentTerminate.RentTerminateExe;
|
||||||
import com.tenwa.reckon.help.CalYearRateFromRent;
|
import com.tenwa.reckon.help.*;
|
||||||
import com.tenwa.reckon.help.ConditionHelper;
|
|
||||||
import com.tenwa.reckon.help.RentPlanContrCalDAOImpl;
|
|
||||||
import com.tenwa.reckon.util.*;
|
import com.tenwa.reckon.util.*;
|
||||||
import jbo.app.tenwa.calc.*;
|
import jbo.app.tenwa.calc.*;
|
||||||
import jbo.com.tenwa.entity.comm.flow.FLOW_BUSSINESS_OBJECT;
|
import jbo.com.tenwa.entity.comm.flow.FLOW_BUSSINESS_OBJECT;
|
||||||
import jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO;
|
import jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO;
|
||||||
import jbo.com.tenwa.lease.comm.LB_EQUIPMENT_TEMP;
|
import jbo.com.tenwa.lease.comm.LB_EQUIPMENT_TEMP;
|
||||||
import jbo.com.tenwa.lease.comm.LC_PAY_CONDTION_TEMP;
|
import jbo.com.tenwa.lease.comm.LC_PAY_CONDTION_TEMP;
|
||||||
|
import jbo.prd.LB_SPLITTING_RATIO;
|
||||||
import jbo.sys.CODE_LIBRARY;
|
import jbo.sys.CODE_LIBRARY;
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@ -58,6 +57,8 @@ public class CreateTransactionExecutor implements Transaction {
|
|||||||
private String flow_name;
|
private String flow_name;
|
||||||
private String ebanknumber;
|
private String ebanknumber;
|
||||||
private String projectId;
|
private String projectId;
|
||||||
|
private String distributorId;
|
||||||
|
|
||||||
|
|
||||||
public String getStartDate() {
|
public String getStartDate() {
|
||||||
return startDate;
|
return startDate;
|
||||||
@ -384,6 +385,38 @@ public class CreateTransactionExecutor implements Transaction {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getSplitByProductId(JBOTransaction tx) {
|
||||||
|
try{
|
||||||
|
com.amarsoft.awe.util.Transaction Sqlca = com.amarsoft.awe.util.Transaction.createTransaction(tx);
|
||||||
|
String splitType = Sqlca.getString( "select attribute5 from business_type where typeno = '" + productId + "'" );
|
||||||
|
BizObjectManager bmLSR = JBOFactory.getBizObjectManager(LB_SPLITTING_RATIO.CLASS_NAME,tx);
|
||||||
|
BizObjectManager bmLCI = JBOFactory.getBizObjectManager(LB_CONTRACT_INFO.CLASS_NAME,tx);
|
||||||
|
BizObjectManager bmLRP = JBOFactory.getBizObjectManager(LC_RENT_PLAN.CLASS_NAME,tx);
|
||||||
|
BizObject boLSR= bmLSR.createQuery("product_id=:productId and distributor_id=:distributorId").setParameter("productId",productId).setParameter("distributorId",distributorId).getSingleResult(false);
|
||||||
|
String splitRatio = boLSR.getAttribute("splitting_ratio").toString();
|
||||||
|
|
||||||
|
List<BizObject> boLCIs = bmLCI.createQuery("product_id=:productId and distributor_id=:distributorId").setParameter("productId",productId).setParameter("distributorId",distributorId).getResultList(false);
|
||||||
|
if(boLCIs.size()>0){
|
||||||
|
for(BizObject boLCI : boLCIs){
|
||||||
|
String contractId = boLCI.getAttribute("ID").toString();
|
||||||
|
BizObject boLRP = bmLRP.createQuery("contract_id=:contractId and corpus_sp is null").setParameter("contractId",contractId).getSingleResult(false);
|
||||||
|
if(boLRP!=null){
|
||||||
|
setPlannumber(boLRP.getAttribute("PAYMENT_NUMBER").toString());
|
||||||
|
insertRentPlan_SP(splitRatio,Sqlca,splitType);
|
||||||
|
}else{
|
||||||
|
return "当前产品和经销商下的起租合同均已经有分润";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
return "未找到对应的起租合同";
|
||||||
|
}
|
||||||
|
return "success";
|
||||||
|
}catch (Exception e){
|
||||||
|
return "操作失败";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
public void insertRentPlan_SP_Flexible(String ratio,Transaction Sqlca){
|
public void insertRentPlan_SP_Flexible(String ratio,Transaction Sqlca){
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -762,6 +795,100 @@ public class CreateTransactionExecutor implements Transaction {
|
|||||||
return "服务器繁忙,请稍后再试!";
|
return "服务器繁忙,请稍后再试!";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 租金计划休眠
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String runRentdormant() throws Exception{
|
||||||
|
|
||||||
|
JSONObject jsonObject = JSONObject.createObject();
|
||||||
|
JBOTransaction tx=null;
|
||||||
|
try {
|
||||||
|
tx=JBOFactory.createJBOTransaction();
|
||||||
|
//组装实体bean
|
||||||
|
TabCalBean bean = TbBeanTools.getTabInfo(calType, flowunid,plannumber,productId);
|
||||||
|
ConditionBean cb = bean.getCb();
|
||||||
|
cb = DictTools.getReversDict(cb);
|
||||||
|
bean.setCb(cb);
|
||||||
|
BizObject bo = JBOFactory.getFactory().getManager("jbo.app.tenwa.calc.LC_DORMANT_RENT_ADJUST_TEMP").createQuery("flowunid =:flowunid and payment_number=:payment_number").setParameter("flowunid", flowunid).setParameter("payment_number", plannumber).getSingleResult(false);
|
||||||
|
int startList = bo.getAttribute("START_LIST").getInt();
|
||||||
|
int endList = bo.getAttribute("END_LIST").getInt();
|
||||||
|
String dormantYearRate = bo.getAttribute("DORMANT_YEAR_RATE").toString();
|
||||||
|
BizObjectManager bomLRPT = JBOFactory.getFactory().getManager(LC_RENT_PLAN_TEMP.CLASS_NAME,tx);
|
||||||
|
List<BizObject> bolLRPT = bomLRPT.createQuery("flowunid =:flowunid and payment_number=:payment_number order by plan_list").setParameter("flowunid", flowunid).setParameter("payment_number", plannumber).getResultList(true);
|
||||||
|
String ALL_REMAIN_CORPUS = bolLRPT.get(startList-1).getAttribute("ALL_REMAIN_CORPUS").toString();
|
||||||
|
String CORPUS = bolLRPT.get(startList-1).getAttribute("CORPUS").toString();
|
||||||
|
BigDecimal allRemainCorpus = new BigDecimal(ALL_REMAIN_CORPUS).add(new BigDecimal(CORPUS));
|
||||||
|
BigDecimal dormantInterest = allRemainCorpus.multiply(new BigDecimal(dormantYearRate)).divide(new BigDecimal("100")).divide(new BigDecimal("12"),2,BigDecimal.ROUND_HALF_UP);
|
||||||
|
|
||||||
|
BigDecimal finalPayment = new BigDecimal(cb.getFinalPayment()==null?"0":cb.getFinalPayment());
|
||||||
|
String preRate = RateTools.getPreRate(cb.getYearRate(), cb.getIncomeNumberYear(),cb.getRateAdjustType());
|
||||||
|
String rent = new BigDecimal(RentTools.getPMT(preRate, bolLRPT.size()-endList + "", "-"+allRemainCorpus.toString(), finalPayment.toString(), cb.getPeriodType())).toString();
|
||||||
|
List<String> rentList = new ArrayList<>();
|
||||||
|
for(int i=0;i<bolLRPT.size()-endList;i++){
|
||||||
|
rentList.add(i,rent);
|
||||||
|
}
|
||||||
|
// 加载利息列表
|
||||||
|
InterestCalServiceImpl icsi = new InterestCalServiceImpl();
|
||||||
|
List<String> interests = icsi.getInterestList(rentList, allRemainCorpus.toString(), cb.getYearRate(), cb.getPeriodType(), cb.getGrace(), cb.getIncomeNumberYear(), cb.getEquipEndValue(),cb.getRateAdjustType());
|
||||||
|
|
||||||
|
// 加载本金列表103196.63*(1.0075)
|
||||||
|
CorpusServiceImpl csi = new CorpusServiceImpl();
|
||||||
|
List<String> corpusList = csi.getCorpusList(rentList, interests);
|
||||||
|
|
||||||
|
FundRentPlanBean frpb = new FundRentPlanBean();
|
||||||
|
frpb.setRentList(rentList);
|
||||||
|
frpb.setCorpusBusinessList(corpusList);
|
||||||
|
frpb.setInterestBusinessList(interests);
|
||||||
|
|
||||||
|
// 加载调整信息列表
|
||||||
|
RentPlanServiceImpl rpsi = new RentPlanServiceImpl();
|
||||||
|
rpsi.adjustLastRentPlan(frpb, allRemainCorpus.toString(), cb.getEquipEndValue());
|
||||||
|
|
||||||
|
// 加载本金余额列表
|
||||||
|
List<String> corpusOverageBusinessList = TransRateHelper.getCorpusOvergeList(allRemainCorpus.toString(), frpb.getCorpusBusinessList());
|
||||||
|
|
||||||
|
for(int i=0;i<bolLRPT.size();i++){
|
||||||
|
int planNo = bolLRPT.get(i).getAttribute("PLAN_LIST").getInt();
|
||||||
|
if(planNo>=startList&&planNo<=endList){
|
||||||
|
String interest = dormantInterest.toString();
|
||||||
|
String remainCorpus = allRemainCorpus.toString();
|
||||||
|
bolLRPT.get(i).setAttributeValue("RENT",interest);
|
||||||
|
bolLRPT.get(i).setAttributeValue("CORPUS","0.00");
|
||||||
|
bolLRPT.get(i).setAttributeValue("INTEREST",interest);
|
||||||
|
bolLRPT.get(i).setAttributeValue("CORPUS_BUSINESS","0.00");
|
||||||
|
bolLRPT.get(i).setAttributeValue("INTEREST_BUSINESS",interest);
|
||||||
|
bolLRPT.get(i).setAttributeValue("ALL_REMAIN_CORPUS",remainCorpus);
|
||||||
|
}else if (planNo>endList){
|
||||||
|
bolLRPT.get(i).setAttributeValue("RENT",frpb.getRentList().get(i-endList));
|
||||||
|
bolLRPT.get(i).setAttributeValue("CORPUS",frpb.getCorpusBusinessList().get(i-endList));
|
||||||
|
bolLRPT.get(i).setAttributeValue("INTEREST",frpb.getInterestBusinessList().get(i-endList));
|
||||||
|
bolLRPT.get(i).setAttributeValue("CORPUS_BUSINESS",frpb.getCorpusBusinessList().get(i-endList));
|
||||||
|
bolLRPT.get(i).setAttributeValue("INTEREST_BUSINESS",frpb.getInterestBusinessList().get(i-endList));
|
||||||
|
bolLRPT.get(i).setAttributeValue("ALL_REMAIN_CORPUS",corpusOverageBusinessList.get(i-endList));
|
||||||
|
|
||||||
|
}
|
||||||
|
bomLRPT.saveObject(bolLRPT.get(i));
|
||||||
|
}
|
||||||
|
String irr = this.createCashFlow(bean,tx);
|
||||||
|
BizObjectManager bomLCCT = JBOFactory.getFactory().getManager(LC_CALC_CONDITION_TEMP.CLASS_NAME);
|
||||||
|
BizObject boLCCT = bomLCCT.createQuery("flowunid =:flowunid and payment_number=:payment_number").setParameter("flowunid", flowunid).setParameter("payment_number", plannumber).getSingleResult(true);
|
||||||
|
boLCCT.setAttributeValue("IRR",irr);
|
||||||
|
bomLCCT.saveObject(boLCCT);
|
||||||
|
|
||||||
|
jsonObject.appendElement("result", "true");
|
||||||
|
} catch (Exception e) {
|
||||||
|
tx.rollback();
|
||||||
|
e.printStackTrace();
|
||||||
|
jsonObject.appendElement("result", "false");
|
||||||
|
}finally{
|
||||||
|
if(tx!=null){
|
||||||
|
tx.commit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return JSONEncoder.encode(jsonObject);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 租金计划变更
|
* 租金计划变更
|
||||||
*/
|
*/
|
||||||
@ -1334,7 +1461,12 @@ public class CreateTransactionExecutor implements Transaction {
|
|||||||
public void setProjectId(String projectId) {
|
public void setProjectId(String projectId) {
|
||||||
this.projectId = projectId;
|
this.projectId = projectId;
|
||||||
}
|
}
|
||||||
|
public String getDistributorId() {
|
||||||
|
return distributorId;
|
||||||
|
}
|
||||||
|
public void setDistributorId(String distributorId) {
|
||||||
|
this.distributorId = distributorId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user