You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

5665 lines
203 KiB

/*
* <p>ClassName: OtoFBL </p>
* <p>Description: OtoFBL类文件 </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: sinosoft </p>
* @Database: LIS
* @CreateDate:
*/
package com.sinosoft.lis.otof;
import com.sinosoft.lis.bl.LCPolBL;
import com.sinosoft.lis.db.LCGrpPolDB;
import com.sinosoft.lis.db.LDBankDB;
import com.sinosoft.lis.db.LDCodeDB;
import com.sinosoft.lis.db.LITranInfoDB;
import com.sinosoft.lis.db.LIVertifyDB;
import com.sinosoft.lis.db.LJAGetClaimDB;
import com.sinosoft.lis.db.LJAGetDB;
import com.sinosoft.lis.db.LJAGetDrawDB;
import com.sinosoft.lis.db.LJAGetEndorseDB;
import com.sinosoft.lis.db.LJAPayPersonDB;
import com.sinosoft.lis.db.LJTempFeeDB;
import com.sinosoft.lis.db.LMRiskAppDB;
import com.sinosoft.lis.db.OFinaLogDB;
import com.sinosoft.lis.i18n.I18nMessage;
import com.sinosoft.lis.pubfun.FDate;
import com.sinosoft.lis.pubfun.GlobalInput;
import com.sinosoft.lis.pubfun.MMap;
import com.sinosoft.lis.pubfun.OtoFLockBL;
import com.sinosoft.lis.pubfun.PubFun;
import com.sinosoft.lis.pubfun.PubFun1;
import com.sinosoft.lis.pubfun.PubSubmit;
import com.sinosoft.lis.schema.LCGrpPolSchema;
import com.sinosoft.lis.schema.LCInsureAccTraceSchema;
import com.sinosoft.lis.schema.LCPolSchema;
import com.sinosoft.lis.schema.LITranErrSchema;
import com.sinosoft.lis.schema.LITranInfoSchema;
import com.sinosoft.lis.schema.LIVertifySchema;
import com.sinosoft.lis.schema.LJABonusGetSchema;
import com.sinosoft.lis.schema.LJAGetClaimSchema;
import com.sinosoft.lis.schema.LJAGetDrawSchema;
import com.sinosoft.lis.schema.LJAGetEndorseSchema;
import com.sinosoft.lis.schema.LJAGetOtherSchema;
import com.sinosoft.lis.schema.LJAGetSchema;
import com.sinosoft.lis.schema.LJAGetTempFeeSchema;
import com.sinosoft.lis.schema.LJAPayGrpSchema;
import com.sinosoft.lis.schema.LJAPayPersonSchema;
import com.sinosoft.lis.schema.LJAPaySchema;
import com.sinosoft.lis.schema.LJTempFeeClassSchema;
import com.sinosoft.lis.schema.LJTempFeeSchema;
import com.sinosoft.lis.schema.OFInterfaceSchema;
import com.sinosoft.lis.schema.OFinaLogSchema;
import com.sinosoft.lis.sql.otof.OtoFBLSQL;
import com.sinosoft.lis.sql.repository.LAAgentSQL;
import com.sinosoft.lis.sql.repository.LCContSQL;
import com.sinosoft.lis.sql.repository.LCGrpPolSQL;
import com.sinosoft.lis.sql.repository.LCInsureAccTraceSQL;
import com.sinosoft.lis.sql.repository.LIVertifySQL;
import com.sinosoft.lis.sql.repository.LJABonusGetSQL;
import com.sinosoft.lis.sql.repository.LJAGetClaimSQL;
import com.sinosoft.lis.sql.repository.LJAGetEndorseSQL;
import com.sinosoft.lis.sql.repository.LJAGetOtherSQL;
import com.sinosoft.lis.sql.repository.LJAGetTempFeeSQL;
import com.sinosoft.lis.sql.repository.LJAPayGrpSQL;
import com.sinosoft.lis.sql.repository.LJAPayPersonSQL;
import com.sinosoft.lis.sql.repository.LJAPaySQL;
import com.sinosoft.lis.sql.repository.LJTempFeeClassSQL;
import com.sinosoft.lis.sql.repository.LJTempFeeSQL;
import com.sinosoft.lis.sql.repository.LMRiskAppSQL;
import com.sinosoft.lis.vschema.LCInsureAccTraceSet;
import com.sinosoft.lis.vschema.LITranErrSet;
import com.sinosoft.lis.vschema.LITranInfoSet;
import com.sinosoft.lis.vschema.LIVertifySet;
import com.sinosoft.lis.vschema.LJABonusGetSet;
import com.sinosoft.lis.vschema.LJAGetClaimSet;
import com.sinosoft.lis.vschema.LJAGetDrawSet;
import com.sinosoft.lis.vschema.LJAGetEndorseSet;
import com.sinosoft.lis.vschema.LJAGetOtherSet;
import com.sinosoft.lis.vschema.LJAGetSet;
import com.sinosoft.lis.vschema.LJAGetTempFeeSet;
import com.sinosoft.lis.vschema.LJAPayGrpSet;
import com.sinosoft.lis.vschema.LJAPayPersonSet;
import com.sinosoft.lis.vschema.LJAPaySet;
import com.sinosoft.lis.vschema.LJTempFeeClassSet;
import com.sinosoft.lis.vschema.LJTempFeeSet;
import com.sinosoft.lis.vschema.OFInterfaceSet;
import com.sinosoft.persistence.SQLProxy;
import com.sinosoft.utility.CError;
import com.sinosoft.utility.CErrors;
import com.sinosoft.utility.SSRS;
import com.sinosoft.utility.TransferData;
import com.sinosoft.utility.VData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
public class OtoFBL
{
private static final Logger logger = LoggerFactory.getLogger(OtoFBL.class);
/** 错误处理类,每个需要错误处理的类中都放置该类 */
public CErrors mErrors = new CErrors();
/** 往后面传输数据的容器 */
private VData mInputData;
/** 数据操作字符串 */
private String mOperate;
private String mStartDate = "";
private String mEndDate = "";
private String mToday = "";
private int mTime = 0;
private String DateFlag = "0";
private String mInputDate = ""; // 界面传入的记帐日期
private GlobalInput mGlobalInput = new GlobalInput();
private String cManageCom = ""; // 提取管理机构
private String tmoney = ""; // >金额</money>
private String mBillID = ""; // 对应凭证科目,便于查找 == 凭证类别+凭证分类(一张凭证内部有多个分类的情况)+内部编码
private String mReversedStatus = ""; // 冲消状态
private String mOrigRowID = ""; // 被冲消的行
private String mReversedRowID = ""; // 冲消生成的行
private String mCurrencyCode = ""; // 币别
private String mVoucherType = ""; // 凭证类别
private String mManageCom = ""; // 核算单位代码
private String mSegment2 = ""; // 成本中心
private String mAccountCode = ""; // 科目代码
private String mAccountSubCode = ""; // 科目明细代码
private String mSaleChnl = ""; // 销售渠道
private String mRiskCode = ""; // 保险产品代码
private String mTransDate = ""; // 事务日期
private String mAccountingDate = ""; // 记帐日期
private int mMatchID = 0; // 借贷关系key值
private String mBatchNo = ""; // 批次号
private String mEnteredDR = ""; // 事务借计金额
private String mEnteredCR = ""; // 事务贷计金额
private String mHeadDescription = ""; // 日记帐摘要
private String mLineDescription = ""; // 行记帐摘要
private String mPolNo = ""; // 保单号
private String mContNo = ""; // 合同号
private String mInsuredName = ""; // 被保险人姓名
private String mEndYear = ""; //保险期间
private String mBranchType = ""; //销售渠道
private String mAgentName = ""; //代理人姓名
private String mBankCode = ""; //银行编码
private String mAgentCom = ""; //代理机构
private String mBussNo = ""; // 收付款单据号
private String mAttribute5 = ""; // 行为明细类别
private String mAttribute6 = ""; // 代理机构(航意险应收凭证)
private int mPayIntv = 0; // 保费交费间隔
private Date dbdate;
private Date dedate;
double tYHSLMoney = 0.0;//印花税金额
private HashSet mLITranInfoSetHashtable=new HashSet();
// 对表的定义
private OFInterfaceSet mOFInterfaceSet = new OFInterfaceSet();
private LITranInfoSet mLITranInfoSet = new LITranInfoSet();
private LITranErrSet mLITranErrSet = new LITranErrSet();
private LIVertifySet mLIVertifySet = new LIVertifySet(); //科目约束性
private OtoFLockBL tOtoFLockBL = new OtoFLockBL();
private String tRecordNo; //进行锁表的管理机构
private OFinaLogSchema tFinaLogSchema = new OFinaLogSchema();//提取日志表
private OtoFBLSQL otoFBLSQL = SQLProxy.getInstance(OtoFBLSQL.class);
private LJTempFeeSQL ljTempFeeSQL = SQLProxy.getInstance(LJTempFeeSQL.class);
private LJTempFeeClassSQL ljTempFeeClassSQL = SQLProxy.getInstance(LJTempFeeClassSQL.class);
private LCInsureAccTraceSQL lcInsureAccTraceSQL = SQLProxy.getInstance(LCInsureAccTraceSQL.class);
private LCGrpPolSQL lcGrpPolSQL = SQLProxy.getInstance(LCGrpPolSQL.class);
private LAAgentSQL laAgentSQL = SQLProxy.getInstance(LAAgentSQL.class);
private LCContSQL lcContSQL = SQLProxy.getInstance(LCContSQL.class);
private LJAGetEndorseSQL ljaGetEndorseSQL = SQLProxy.getInstance(LJAGetEndorseSQL.class);
public OtoFBL()
{
}
/**
* 传输数据的公共方法
*/
public boolean submitData(VData cInputData, String cOperate)
{
logger.debug("--- OtoFBL begin ---");
mInputData = (VData)cInputData.clone();
this.mOperate = cOperate;
try
{
if(!cOperate.equals("Buss"))
{
CError.buildErr(this, new I18nMessage("不支持的业务凭证提取操作字符串", "LIS-12636"));
return false;
}
initVar(); // 避免getinputdata中的数据被冲掉
// 得到外部传入的数据,将数据备份到本类中
if(!getInputData(cInputData))
{
return false;
}
if(!checkData())
{
CError.buildErr(this, new I18nMessage("校验数据失败!", "LIS-12637"));
return false;
}
while(dbdate.compareTo(dedate) <= 0)
{
try
{
FDate chgdate = new FDate();
mToday = chgdate.getString(dbdate);
Date mDate = chgdate.getDate(PubFun.getCurrentDate());
tRecordNo=cManageCom+new SimpleDateFormat("yyyyMMdd").format(dbdate)
+new SimpleDateFormat("yyyyMMdd").format(mDate)+String.valueOf(mTime);
logger.debug("tRecordNo---------"+tRecordNo);
//调用并发控制程序
tFinaLogSchema = new OFinaLogSchema();
if(!tOtoFLockBL.lock(tRecordNo, cManageCom, String.valueOf(mTime),mToday,mGlobalInput))
{
CError.buildErr(this, new I18nMessage("自动提取加锁或者解锁失败", "LIS-12748"));
return false;
}
else
{
//针对自动运行的并发控制,且一天的一中类型的凭证的批次号一致
// if("1".equals(DateFlag))
// {
//手工界面提取的规则与自动运行提取一致,即提取日期一致、操作日期一致、凭证类型一致的批次号则一致
OFinaLogDB tFinaLogDB = new OFinaLogDB();
tFinaLogDB.setRecordNo(tRecordNo);
tFinaLogSchema =tFinaLogDB.query().get(1);
mBatchNo = tFinaLogSchema.getBatchNo();
mMatchID = (int)tFinaLogSchema.getMatchID();//一个批次下mMatchID不重复
// }
// else
// mBatchNo = PubFun1.CreateMaxNo("OTOF","20");
}
// 准备所有要打印的数据
if(!getVoucherData(mTime))
{
CError.buildErr(this, new I18nMessage("凭证提取错误!", "LIS-12749"));
return false;
}
tFinaLogSchema.setMatchID(mMatchID);
prepareOutputData();
PubSubmit ps = new PubSubmit();
if(!ps.submitData(mInputData))
{
mErrors.copyAllErrors(ps.mErrors);
CError.buildErr(this, new I18nMessage("提交数据库失败!", "LIS-12638"));
return false;
}
}
catch(Exception ex)
{
logger.error("程序执行异常",ex);
CError.buildErr(this, new I18nMessage( ex.toString(), null));
return false;
}
finally
{
logger.debug("unlock");
tOtoFLockBL.unLock(tRecordNo);
}
dbdate = PubFun.calDate(dbdate, 1, "D", null);
}
}
catch(Exception ex)
{
logger.error("程序执行异常",ex);
CError.buildErr(this, new I18nMessage( ex.toString(), null));
return false;
}
return true;
}
/**
* 从输入数据中得到所有对象 输出:如果没有得到足够的业务数据对象,则返回false,否则返回true
*/
private boolean getInputData(VData cInputData)
{
mGlobalInput.setSchema(cInputData.get(GlobalInput.class, 0));
TransferData mTransferData = cInputData.get(TransferData.class, 0);
mStartDate = (String)mTransferData.getValueByName("mStartDate");
mEndDate = (String)mTransferData.getValueByName("mEndDate");
Integer itemp = (Integer)mTransferData.getValueByName("itemp");
mTime = itemp.intValue();
DateFlag = (String)mTransferData.getValueByName("DateFlag");
mInputDate = (String)mTransferData.getValueByName("mInputDate"); // 记账日期
cManageCom = (String)mTransferData.getValueByName("cManageCom"); // 提取管理机构
logger.debug("凭证编码:" + mTime);
if(mStartDate.equals(""))
{
CError.buildErr(this, new I18nMessage("没有起始日期!", "LIS-12639"));
return false;
}
if(mEndDate.equals(""))
{
CError.buildErr(this, new I18nMessage("没有终止日期!", "LIS-12640"));
return false;
}
if(mStartDate.length() != 10 || mEndDate.length() != 10)
{
CError.buildErr(this, new I18nMessage("请检查本地机器的时间格式设置,请采用YYYY-MM-DD格式!", "LIS-12641"));
return false;
}
if(mGlobalInput == null)
{
CError.buildErr(this, new I18nMessage("没有得到足够的信息!", "LIS-12642"));
return false;
}
return true;
}
private boolean checkData()
{
FDate chgdate = new FDate();
dbdate = chgdate.getDate(mStartDate);
dedate = chgdate.getDate(mEndDate);
mLITranErrSet.clear();
mLITranInfoSet.clear();
LIVertifyDB tLIVertifyDB = new LIVertifyDB();
LIVertifySQL liVertifySQL = SQLProxy.getInstance(LIVertifySQL.class);
mLIVertifySet = liVertifySQL.findAll();
return true;
}
private boolean dealData()
{
return true;
}
/**
* 凭证提取的分类
**/
private boolean getVoucherData(int i)
{
try
{
switch(i)
{
case 1: // 暂收保费
if(!getFeeDataTemp())
return false;
break;
case 2: // 预收保费
if(!getFeeDataAdvance())
return false;
break;
case 3: // 保费收入
if(!getFeeDataPrem())
return false;
break;
case 4: // 赔款支出
if(!PayFeeDataClaimJ())
return false;
break;
case 5: // 保全应付
if(!PayFeeDataEndordseJ())
return false;
break;
case 6: // 领取类给付
if(!PayFeeDataDrawJ())
return false;
break;
case 7: // 其他应付
if(!PayFeeDataJ())
return false;
break;
case 8: // 实付
if(!PayFeeDataD())
return false;
break;
// case 9: // 保全收费
// if(!getEndorsePrem())
// return false;
// break;
}
}
catch(Exception ex)
{
logger.error("程序执行异常",ex);
CError.buildErr(this, new I18nMessage( ex.toString(), null));
return false;
}
return true;
}
/**
* 暂收凭证的提取
**/
private boolean getFeeDataTemp()
{
// 暂收费(排除银保通的处理)
SSRS tSSRS = otoFBLSQL.getDistinctTempFeeNoByConfMakeDateAndManageComLikeAndTempFeeTypeAndCodeType(mToday,cManageCom,"1","bank");
for(int i = 1; i <= tSSRS.getMaxRow(); i++)
{
String tTempfeeno = tSSRS.GetText(i, 1);
LJTempFeeSet tLJTempFeeSet = ljTempFeeSQL.findAllByTempFeeNoOrderByPayMoneyDesc(tTempfeeno.trim());
LJTempFeeClassSet tLJTempFeeClassSet = ljTempFeeClassSQL.findAllByTempFeeNoOrderByPayMoneyDesc(tTempfeeno.trim());
double tLJTempFeeSum = 0;
double tLJTempFeeClassSum = 0;
for(int k = 1; k <= tLJTempFeeSet.size(); k++)
{
tLJTempFeeSum = tLJTempFeeSum + tLJTempFeeSet.get(k).getPayMoney();
}
for(int k = 1; k <= tLJTempFeeClassSet.size(); k++)
{
tLJTempFeeClassSum = tLJTempFeeClassSum + tLJTempFeeClassSet.get(k).getPayMoney();
}
if(Math.abs((tLJTempFeeSum - tLJTempFeeClassSum)) >= 0.001)
{
dealError("LJTempFee", tTempfeeno, tTempfeeno, "006", mVoucherType+mMatchID+i, "暂收费与暂收费分类金额不一致");
continue;
}
for(int j = 1; j <= tLJTempFeeSet.size(); j++)
{
LJTempFeeSchema tLJTempFeeSchema = new LJTempFeeSchema();
tLJTempFeeSchema = tLJTempFeeSet.get(j);
if(tLJTempFeeSchema.getPayMoney() <= 0)
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "004",
mVoucherType+mMatchID+j, "暂收费金额为非正数");
continue;
}
if(tLJTempFeeSchema.getManageCom().trim().length() == 2)
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "007",
mVoucherType+mMatchID+j, "管理机构为2位,不予提取");
continue;
}
if("1".equals(tLJTempFeeSchema.getRiskType()))
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "013",
mVoucherType+mMatchID+j, "该保单为健康委托产品,不在此进行凭证的提取");
continue;
}
initVar();
mMatchID++;
mPolNo = tLJTempFeeSchema.getOtherNo();
mContNo = tLJTempFeeSchema.getOtherNo();
mBussNo = tLJTempFeeSchema.getTempFeeNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJTempFeeSchema.getConfMakeDate();
mSegment2 = tLJTempFeeSchema.getManageCom();
mManageCom = tLJTempFeeSchema.getManageCom().substring(0, 6); // 所有支票都转入商业银行账户
mRiskCode = tLJTempFeeSchema.getRiskCode();
String tFailFlag = "0";
// 取值
LJTempFeeClassSet ttLJTempFeeClassSet = this.getAccTemp(1, tLJTempFeeSchema.getPayMoney(),
tLJTempFeeClassSet);
for(int k = 1; k <= ttLJTempFeeClassSet.size(); k++)
{
LJTempFeeClassSchema tLJTempFeeClassSchema = new LJTempFeeClassSchema();
tLJTempFeeClassSchema.setSchema(ttLJTempFeeClassSet.get(k));
tLJTempFeeClassSchema.setPayMoney(new DecimalFormat("0.00").format(new Double(tLJTempFeeClassSchema
.getPayMoney())));
if(tLJTempFeeClassSchema.getPayMoney() < 0.01)
{
dealError("LJTempFeeClass", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "004",
mVoucherType+mMatchID+k, "暂收分类金额为非正数");
continue;
}
mHeadDescription = "分类收暂收保费!";
tmoney = new DecimalFormat("0.00").format(new Double(tLJTempFeeClassSchema.getPayMoney()));
//判断如果是邮保通的保单则获取保单信息
if(tLJTempFeeClassSchema.getPayMode().toUpperCase().equals("A"))
{
if(!setPolInfo(mPolNo,mRiskCode, "LJTempFeeClass", mVoucherType+mMatchID+k))
{
tFailFlag = "1";
continue;
}
}
for(int t = 1; t <= 2; t++)
{
if(t == 1)
{
// 贷方如果有问题,则借方不再处理
if(tFailFlag.equals("1"))
break;
if("8637".equals(mManageCom.substring(0, 4))
&& "2227".equals(tLJTempFeeClassSchema.getBankCode()))
{
mBillID = "0116";
mAccountCode = "其他应收款-资金中转-邮政储蓄";
}
else
{
mBillID = "1001002";
mAccountCode = "庫存現金";
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
// 借方如果有问题,则贷方不再处理
if(tFailFlag.equals("1"))
break;
if(tLJTempFeeClassSchema.getPayMode().toUpperCase().equals("A")) // 邮保通保费核销
{
mBillID = "0111";
mAccountCode = "应收保费-首期-邮保通";
mHeadDescription = "应收保费";
mAccountSubCode = "NA";
}
else
{
mBillID = "229300311";
mAccountCode = "暫收-系統現金"; // 暂收
mAccountSubCode = "NA";
mHeadDescription = "收暂收保费!";
}
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
if(isExitInTab(mBussNo, null, mBillID))
{
tFailFlag = "1";
break;
}
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
}
}
// 处理集中代收的数据
SSRS ssrs = otoFBLSQL.getDistinctTempFeeNoByConfMakeDateAndTempFeeTypeAndBankeCodeIsNotNull(mToday,cManageCom,"1","bank");
for(int i = 1; i <= ssrs.getMaxRow(); i++)
{
String tTempfeeno = ssrs.GetText(i, 1);
LJTempFeeSet tLJTempFeeSet = ljTempFeeSQL.findAllByTempFeeNoOrderByPayMoneyDesc(tTempfeeno.trim());
LJTempFeeClassSet tLJTempFeeClassSet = ljTempFeeClassSQL.findAllByTempFeeNoOrderByPayMoneyDesc(tTempfeeno.trim());
double tLJTempFeeSum = 0;
double tLJTempFeeClassSum = 0;
for(int k = 1; k <= tLJTempFeeSet.size(); k++)
{
tLJTempFeeSum = tLJTempFeeSum + tLJTempFeeSet.get(k).getPayMoney();
}
for(int k = 1; k <= tLJTempFeeClassSet.size(); k++)
{
tLJTempFeeClassSum = tLJTempFeeClassSum + tLJTempFeeClassSet.get(k).getPayMoney();
}
if(Math.abs((tLJTempFeeSum - tLJTempFeeClassSum)) >= 0.001)
{
dealError("LJTempFee", tTempfeeno, tTempfeeno, "006", mVoucherType+mMatchID+i, "暂收费与暂收费分类金额不一致");
continue;
}
for(int j = 1; j <= tLJTempFeeSet.size(); j++)
{
LJTempFeeSchema tLJTempFeeSchema = new LJTempFeeSchema();
tLJTempFeeSchema = tLJTempFeeSet.get(j);
if(tLJTempFeeSchema.getPayMoney() <= 0)
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "004",
mVoucherType+mMatchID+j, "暂收费金额为非正数");
continue;
}
if(tLJTempFeeSchema.getManageCom().trim().length() == 2)
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "007",
mVoucherType+mMatchID+j, "管理机构为2位,不予提取");
continue;
}
if("1".equals(tLJTempFeeSchema.getRiskType()))
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "013",
mVoucherType+mMatchID+j, "该保单为健康委托产品,不在此进行凭证的提取");
continue;
}
initVar();
mMatchID++;
mPolNo = tLJTempFeeSchema.getOtherNo();
mContNo = tLJTempFeeSchema.getOtherNo();
mBussNo = tLJTempFeeSchema.getTempFeeNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJTempFeeSchema.getConfMakeDate();
mRiskCode = tLJTempFeeSchema.getRiskCode();
String tFailFlag = "0";
// 取值
LJTempFeeClassSet ttLJTempFeeClassSet = this.getAccTemp(1, tLJTempFeeSchema.getPayMoney(),
tLJTempFeeClassSet);
for(int k = 1; k <= ttLJTempFeeClassSet.size(); k++)
{
LJTempFeeClassSchema tLJTempFeeClassSchema = new LJTempFeeClassSchema();
tLJTempFeeClassSchema.setSchema(ttLJTempFeeClassSet.get(k));
tLJTempFeeClassSchema.setPayMoney(new DecimalFormat("0.00").format(new Double(tLJTempFeeClassSchema
.getPayMoney())));
if(tLJTempFeeClassSchema.getPayMoney() < 0.01)
{
dealError("LJTempFeeClass", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "004",
mVoucherType+mMatchID+k, "暂收分类金额为非正数");
continue;
}
mSegment2 = tLJTempFeeSchema.getManageCom();
mManageCom = tLJTempFeeSchema.getManageCom().substring(0, 6); // 所有支票都转入商业银行账户
tmoney = new DecimalFormat("0.00").format(new Double(tLJTempFeeClassSchema.getPayMoney()));
if(tLJTempFeeClassSchema.getPayMode().equals("A"))
{
mHeadDescription = "应收保费!";
mTransDate = tLJTempFeeSchema.getEnterAccDate();
//如果是邮保通的单子,先进行判断,如果保单不存在则直接跳出
if(!setPolInfo(mPolNo,mRiskCode, "LJTempFeeClass", mVoucherType+mMatchID+k))
{
tFailFlag = "1";
continue;
}
}
else
{
mHeadDescription = "分类收暂收保费!";
}
String tBankCom = getTBankCom(tLJTempFeeClassSchema.getBankCode(), mVoucherType+mMatchID+k);
for(int t = 1; t <= 2; t++)
{
if(t == 1)
{
if(tFailFlag.equals("1"))
break;
// 判断是否是分公司代支公司集中扣款
if(!tLJTempFeeClassSchema.getPayMode().equals("1")
&& !tLJTempFeeClassSchema.getPayMode().equals("5"))
{
// //如果是邮保通的单子,先进行判断,如果保单不存在则直接跳出
// if(tLJTempFeeClassSchema.getPayMode().toUpperCase().equals("A")) // 邮保通保费核销
// {
// if(!setPolInfo(mPolNo,mRiskCode, "LJTempFeeClass", mVoucherType+mMatchID+k))
// {
// tFailFlag = "1";
// continue;
// }
// }
// 支公司
if(!tBankCom.equals(mManageCom))
{
mBillID = "0105";
mAccountCode = "其他应收款-资金中转-集中批收"; // 集中批收的处理
mAccountSubCode = "C"+ tLJTempFeeSchema.getManageCom().substring(2, 4).concat("0000");
// 分公司代码转化,如86513400分公司记为C510100
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
if(isExitInTab(mBussNo, null, mBillID))
{
tFailFlag = "1";
break;
}
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
if(!("B".equals(tLJTempFeeClassSchema.getPayMode())))
{
mManageCom = tLJTempFeeSchema.getManageCom().substring(0, 4).concat("00");
mSegment2 = mManageCom.concat("00"); // 分公司帐套记录
if(("8637".equals(mManageCom.substring(0, 4)))
&& "2227".equals(tLJTempFeeClassSchema.getBankCode())) // 针对山东分公司集中批收
{
mBillID = "0115";
mAccountCode = "其他应收款-资金中转-邮政储蓄";
}
else
{
if(tLJTempFeeClassSchema.getBankCode() == null) // 银行托收银行代码为空
{
dealError("LJTempFeeClass", tLJTempFeeClassSchema.getTempFeeNo(),
tLJTempFeeClassSchema.getTempFeeNo(), "008", mVoucherType+mMatchID+k,
"银行集中批收的银行编码为空");
tFailFlag = "1";
break;
}
mBillID = "0107";
mAccountCode = "银行存款-活期-人民币"; // 银行存款
mAccountSubCode = "收" + tLJTempFeeClassSchema.getBankCode();
}
}
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
// 贷方如果有问题,则借方不再处理
if(tFailFlag.equals("1"))
break;
if(!("B".equals(tLJTempFeeClassSchema.getPayMode()) && "CBC".equals(tLJTempFeeClassSchema.getOperator())))
{
mBillID = "0108";
mAccountCode = "其他应付款-资金中转-集中批收"; // 暂收
mAccountSubCode = "C" + tLJTempFeeSchema.getManageCom().substring(2, 6).concat("00");
// 支公司的科目改变,如86513400-C513400
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
if(isExitInTab(mBussNo, null, mBillID))
{
tFailFlag = "1";
break;
}
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
mSegment2 = tLJTempFeeSchema.getManageCom();
mManageCom = tLJTempFeeSchema.getManageCom().substring(0, 6); // 所有支票都转入商业银行账户
if(!tBankCom.equals(mManageCom))
{
if(tLJTempFeeClassSchema.getPayMode().toUpperCase().equals("A")) // 邮保通保费核销
{
mBillID = "0113";
mAccountCode = "应收保费-首期-邮保通";
mEnteredCR = String.valueOf(tmoney);
mHeadDescription = "应收保费";
mAccountSubCode = "NA";
}
else
{
mBillID = "0109";
mAccountCode = "暂收保费"; // 暂收
mAccountSubCode = "NA";
mHeadDescription = "收暂收保费!";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
}
}
if(isExitInTab(mBussNo, null, mBillID))
{
tFailFlag = "1";
break;
}
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
}
}
// 提取银保通单子的凭证(PAYMODE='B') !
// 2008-11-08 zy 增加对建行银保通的处理 由于工商银行的银保通银行编码同一为011,无法获取明细银行编码,所以需要对建行和工行做特殊处理
// 2008-11-26 为了保证日结单的提取,要求工行的银行编码获取到最明细的银行编码
//2009-12-21 zy 新总对总邮储的暂收凭证记账规则等同于银保通的记账规则
/*String ySql = "select distinct(tempfeeno) from LJTempFee a where Confmakedate='"+mToday+"' "
+ "and ManageCom like '"+cManageCom+"%' and TempFeeType='1' and exists( "
+ "select 1 from ljtempfeeclass b where tempfeeno = a.tempfeeno and paymode='B' "
+ "and ((operator='CBC' and exists(select 1 from ldcode where codetype='bank' and "
+ "code = b.bankcode and rpad(trim(comcode),6,'0') = substr(b.managecom,0,6))) or operator<>'CBC' ))";
logger.debug(ySql);
SSRS ySSRS = tExeSQL.execSQL(ySql);
for(int i = 1; i <= ySSRS.getMaxRow(); i++)
{
String tTempfeeno = ySSRS.GetText(i, 1);
LJTempFeeDB tLJTempFeeDB = new LJTempFeeDB();
LJTempFeeClassDB tLJTempFeeClassDB = new LJTempFeeClassDB();
String tSql1 = "select * from LJTempFee where tempfeeno='" + tTempfeeno.trim() + "' order by paymoney desc";
LJTempFeeSet tLJTempFeeSet = tLJTempFeeDB.executeQuery(tSql1);
String tSql2 = "select * from LJTempFeeClass where tempfeeno='" + tTempfeeno.trim()
+ "' order by paymoney desc";
LJTempFeeClassSet tLJTempFeeClassSet = tLJTempFeeClassDB.executeQuery(tSql2);
double tLJTempFeeSum = 0;
double tLJTempFeeClassSum = 0;
for(int k = 1; k <= tLJTempFeeSet.size(); k++)
{
tLJTempFeeSum = tLJTempFeeSum + tLJTempFeeSet.get(k).getPayMoney();
}
for(int k = 1; k <= tLJTempFeeClassSet.size(); k++)
{
tLJTempFeeClassSum = tLJTempFeeClassSum + tLJTempFeeClassSet.get(k).getPayMoney();
}
if(Math.abs((tLJTempFeeSum - tLJTempFeeClassSum)) >= 0.001)
{
dealError("LJTempFee", tTempfeeno, tTempfeeno, "006", mVoucherType+mMatchID+i, "暂收费与暂收费分类金额不一致");
continue;
}
for(int j = 1; j <= tLJTempFeeSet.size(); j++)
{
LJTempFeeSchema tLJTempFeeSchema = new LJTempFeeSchema();
tLJTempFeeSchema = tLJTempFeeSet.get(j);
if(tLJTempFeeSchema.getPayMoney() <= 0)
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "004",
mVoucherType+mMatchID+j, "暂收费金额为非正数");
continue;
}
if(tLJTempFeeSchema.getManageCom().trim().length() == 2)
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "007",
mVoucherType+mMatchID+j, "管理机构为2位,不予提取");
continue;
}
if("1".equals(tLJTempFeeSchema.getRiskType()))
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "013",
mVoucherType+mMatchID+j, "该保单为健康委托产品,不在此进行凭证的提取");
continue;
}
initVar();
mMatchID++;
mPolNo = tLJTempFeeSchema.getOtherNo();
mContNo = tLJTempFeeSchema.getOtherNo();
mBussNo = tLJTempFeeSchema.getTempFeeNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJTempFeeSchema.getConfMakeDate();
mSegment2 = tLJTempFeeSchema.getManageCom();
mRiskCode = tLJTempFeeSchema.getRiskCode();
mManageCom = tLJTempFeeSchema.getManageCom().substring(0, 6);
String tFailFlag = "0";
// 取值
LJTempFeeClassSet ttLJTempFeeClassSet = this.getAccTemp(1, tLJTempFeeSchema.getPayMoney(),
tLJTempFeeClassSet);
for(int k = 1; k <= ttLJTempFeeClassSet.size(); k++)
{
LJTempFeeClassSchema tLJTempFeeClassSchema = new LJTempFeeClassSchema();
tLJTempFeeClassSchema.setSchema(ttLJTempFeeClassSet.get(k));
tLJTempFeeClassSchema.setPayMoney(new DecimalFormat("0.00").format(new Double(tLJTempFeeClassSchema
.getPayMoney())));
if(tLJTempFeeClassSchema.getPayMoney() < 0.01)
{
dealError("LJTempFeeClass", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "004",
mVoucherType+mMatchID+k, "暂收分类金额为非正数");
continue;
}
mHeadDescription = "分类收暂收保费!";
tmoney = new DecimalFormat("0.00").format(new Double(tLJTempFeeClassSchema.getPayMoney()));
for(int t = 1; t <= 2; t++)
{
if(t == 1)
{
//建行分公司处理
if("CBC".equals(tLJTempFeeClassSchema.getOperator()))
{
mBillID = "0103";
mAccountCode = "银行存款-活期-人民币"; // 银行存款
mAccountSubCode = "收" + tLJTempFeeClassSchema.getBankCode();
}
else
{ //工行的处理
if(tLJTempFeeClassSchema.getManageCom().substring(0, 4).concat("0000").equals(
tLJTempFeeClassSchema.getManageCom())) // 如果是分公司直接借:银行存款
{
mBillID = "0117";
mAccountCode = "银行存款-活期-人民币"; // 银行存款
mAccountSubCode = "收"+ tLJTempFeeClassSchema.getBankCode();
// mAccountSubCode = "收"+ getYBankCode(
// tLJTempFeeClassSchema.getBankCode(), tLJTempFeeClassSchema.getManageCom());
}
else
{
mBillID = "0118";
mAccountCode = "其他应收款-资金中转-工行银保通";
mAccountSubCode = "C"
+ tLJTempFeeSchema.getManageCom().substring(2, 4).concat("0000");
// 如果是支公司,则借其他应收科目,然后分公司手工做帐
}
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
// 贷方如果有问题,则借方不再处理
if(tFailFlag.equals("1"))
continue;
mBillID = "0104";
mAccountCode = "暂收保费"; // 暂收
mAccountSubCode = "NA";
mHeadDescription = "收暂收保费!";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
if(isExitInTab(mBussNo, null, mBillID))
{
tFailFlag = "1";
break;
}
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
}
}// end of 银保通处理分公司的处理
*/
// 增加对建行银保通支公司的处理
// String jySql = "select distinct(tempfeeno) from LJTempFee a where Confmakedate='"+mToday+"' "
// + "and ManageCom like '"+cManageCom+"%' and TempFeeType='1' and exists( "
// + "select 1 from ljtempfeeclass b where tempfeeno = a.tempfeeno and paymode='B' and operator='CBC' "
// + "and exists(select 1 from ldcode where codetype='bank' and code = b.bankcode "
// + "and rpad(trim(comcode),6,'0') <> substr(b.managecom,0,6)))";
// 增加对建行银保通支公司的处理
SSRS jySSRS = otoFBLSQL.getDistinctTempFeeNoByConfMakeDateAndManageComAndTempFeeTypeAndPayMode(mToday,cManageCom,"1","B");
for(int i = 1; i <= jySSRS.getMaxRow(); i++)
{
String tTempfeeno = jySSRS.GetText(i, 1);
LJTempFeeSet tLJTempFeeSet = ljTempFeeSQL.findAllByTempFeeNoOrderByPayMoneyDesc(tTempfeeno.trim());
LJTempFeeClassSet tLJTempFeeClassSet = ljTempFeeClassSQL.findAllByTempFeeNoOrderByPayMoneyDesc(tTempfeeno.trim());
double tLJTempFeeSum = 0;
double tLJTempFeeClassSum = 0;
for(int k = 1; k <= tLJTempFeeSet.size(); k++)
{
tLJTempFeeSum = tLJTempFeeSum + tLJTempFeeSet.get(k).getPayMoney();
}
for(int k = 1; k <= tLJTempFeeClassSet.size(); k++)
{
tLJTempFeeClassSum = tLJTempFeeClassSum + tLJTempFeeClassSet.get(k).getPayMoney();
}
if(Math.abs((tLJTempFeeSum - tLJTempFeeClassSum)) >= 0.001)
{
dealError("LJTempFee", tTempfeeno, tTempfeeno, "006", mVoucherType+mMatchID+i, "暂收费与暂收费分类金额不一致");
continue;
}
for(int j = 1; j <= tLJTempFeeSet.size(); j++)
{
LJTempFeeSchema tLJTempFeeSchema = new LJTempFeeSchema();
tLJTempFeeSchema = tLJTempFeeSet.get(j);
if(tLJTempFeeSchema.getPayMoney() <= 0)
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "004",
mVoucherType+mMatchID+j, "暂收费金额为非正数");
continue;
}
if(tLJTempFeeSchema.getManageCom().trim().length() == 2)
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "007",
mVoucherType+mMatchID+j, "管理机构为2位,不予提取");
continue;
}
if("1".equals(tLJTempFeeSchema.getRiskType()))
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "013",
mVoucherType+mMatchID+j, "该保单为健康委托产品,不在此进行凭证的提取");
continue;
}
initVar();
mMatchID++;
mPolNo = tLJTempFeeSchema.getOtherNo();
mContNo = tLJTempFeeSchema.getOtherNo();
mBussNo = tLJTempFeeSchema.getTempFeeNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJTempFeeSchema.getConfMakeDate();
mSegment2 = tLJTempFeeSchema.getManageCom();
mManageCom = tLJTempFeeSchema.getManageCom().substring(0, 6); // 所有支票都转入商业银行账户
mRiskCode = tLJTempFeeSchema.getRiskCode();
String tFailFlag = "0";
// 取值
LJTempFeeClassSet ttLJTempFeeClassSet = this.getAccTemp(1, tLJTempFeeSchema.getPayMoney(),
tLJTempFeeClassSet);
for(int k = 1; k <= ttLJTempFeeClassSet.size(); k++)
{
LJTempFeeClassSchema tLJTempFeeClassSchema = new LJTempFeeClassSchema();
tLJTempFeeClassSchema.setSchema(ttLJTempFeeClassSet.get(k));
tLJTempFeeClassSchema.setPayMoney(new DecimalFormat("0.00").format(new Double(tLJTempFeeClassSchema
.getPayMoney())));
if(tLJTempFeeClassSchema.getPayMoney() < 0.01)
{
dealError("LJTempFeeclass", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "004",
mVoucherType+mMatchID+k, "暂收分类金额为非正数");
continue;
}
mHeadDescription = "分类收暂收保费!";
tmoney = new DecimalFormat("0.00").format(new Double(tLJTempFeeClassSchema.getPayMoney()));
String tBankCom = getTBankCom(tLJTempFeeClassSchema.getBankCode(), mVoucherType+mMatchID+k);
for(int t = 1; t <= 2; t++)
{
if(t == 1)
{
if("CBC".equals(tLJTempFeeClassSchema.getOperator()))
{
if(!tBankCom.equals(mManageCom))
{
mBillID = "0115";
mAccountCode = "其他应收款-资金中转-建行银保通"; // 银行存款
mAccountSubCode = "C"
+ tLJTempFeeSchema.getManageCom().substring(2, 4).concat("0000");
}
else
{
// dealError("LJTempFeeClass", mBussNo, mPolNo, "005", mVoucherType+mMatchID+k,
// "银保通对应的管理机构为分公司,不进行凭证提取");
// tFailFlag="1";
// break;
mBillID = "0103";
mAccountCode = "银行存款-活期-人民币"; // 银行存款
mAccountSubCode = "收" + tLJTempFeeClassSchema.getBankCode();
}
}
else if("ICBC".equals(tLJTempFeeClassSchema.getOperator()))
{
if(!tBankCom.equals(mManageCom))
{
mBillID = "0118";
mAccountCode = "其他应收款-资金中转-工行银保通";
mAccountSubCode = "C"
+ tLJTempFeeSchema.getManageCom().substring(2, 4).concat("0000");
}
else
{
mBillID = "0117";
mAccountCode = "银行存款-活期-人民币"; // 银行存款
mAccountSubCode = "收"+ tLJTempFeeClassSchema.getBankCode();
}
}
else if("YBT".equals(tLJTempFeeClassSchema.getOperator()))
{
if(!tBankCom.equals(mManageCom))
{
mBillID = "01151";
mAccountCode = "其他应收款-资金中转-邮储银保通"; // 银行存款
mAccountSubCode = "C"
+ tLJTempFeeSchema.getManageCom().substring(2, 4).concat("0000");
}
else
{
mBillID = "0119";
mAccountCode = "银行存款-活期-人民币"; // 银行存款
mAccountSubCode = "收"+ tLJTempFeeClassSchema.getBankCode();
}
}
else // 分公司手工做账
{
dealError("LJTempFeeClass", mBussNo, mPolNo, "005", mVoucherType+mMatchID+k,
"不支持的凭证提取");
tFailFlag = "1";
break;
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
// 贷方如果有问题,则借方不再处理
if(tFailFlag.equals("1"))
continue;
// // 排除分公司处理
// if(!tBankCom.equals(mManageCom))
// {
mBillID = "0104";
mAccountCode = "暂收保费"; // 暂收
mAccountSubCode = "NA";
mHeadDescription = "收暂收保费!";
// }
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
if(isExitInTab(mBussNo, null, mBillID))
{
tFailFlag = "1";
break;
}
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
}
}
return true;
}
/**
* 预收凭证的提取
**/
private boolean getFeeDataAdvance()
{
// 暂收费
SSRS tSSRS = otoFBLSQL.getDistinctTempFeeNoByConfMakeDateAndManageComLike(mToday,cManageCom,"1","4");
for(int i = 1; i <= tSSRS.getMaxRow(); i++)
{
String tTempfeeno = tSSRS.GetText(i, 1);
LJTempFeeSet tLJTempFeeSet = ljTempFeeSQL.findAllByTempFeeNoOrderByPayMoneyDesc(tTempfeeno.trim());
LJTempFeeClassSet tLJTempFeeClassSet = ljTempFeeClassSQL.findAllByTempFeeNoOrderByPayMoneyDesc(tTempfeeno.trim());
double tLJTempFeeSum = 0;
double tLJTempFeeClassSum = 0;
for(int k = 1; k <= tLJTempFeeSet.size(); k++)
{
tLJTempFeeSum = tLJTempFeeSum + tLJTempFeeSet.get(k).getPayMoney();
}
for(int k = 1; k <= tLJTempFeeClassSet.size(); k++)
{
tLJTempFeeClassSum = tLJTempFeeClassSum + tLJTempFeeClassSet.get(k).getPayMoney();
}
if(Math.abs((tLJTempFeeSum - tLJTempFeeClassSum)) >= 0.001)
{
dealError("LJTempFee", tTempfeeno, tTempfeeno, "006",mVoucherType+mMatchID+i, "暂收费与暂收费分类金额不一致");
continue;
}
for(int j = 1; j <= tLJTempFeeSet.size(); j++)
{
LJTempFeeSchema tLJTempFeeSchema = new LJTempFeeSchema();
tLJTempFeeSchema = tLJTempFeeSet.get(j);
if(tLJTempFeeSchema.getPayMoney() <= 0)
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "004",
mVoucherType+mMatchID+j, "暂收费金额为非正数");
continue;
}
if(tLJTempFeeSchema.getManageCom().trim().length() == 2)
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "007",
mVoucherType+mMatchID+j, "管理机构为2位,不予提取");
continue;
}
// if("1".equals(tLJTempFeeSchema.getTempFeeNoType()))
//zy 2010-02-22 判断健康委托产品的字段应为risktype
if("1".equals(tLJTempFeeSchema.getRiskType()))
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "013",
mVoucherType+mMatchID+j, "该保单为健康委托产品,不在此进行凭证的提取");
continue;
}
if(tLJTempFeeSchema.getPayMoney() > 0)
{
initVar();
mMatchID++;
mPolNo = tLJTempFeeSchema.getOtherNo();
mContNo = tLJTempFeeSchema.getOtherNo();
mBussNo = tLJTempFeeSchema.getTempFeeNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJTempFeeSchema.getConfMakeDate();
mSegment2 = tLJTempFeeSchema.getManageCom();
mManageCom = tLJTempFeeSchema.getManageCom().substring(0, 6);
mRiskCode = tLJTempFeeSchema.getRiskCode();
// 取值
String tFailFlag = "0";
LJTempFeeClassSet ttLJTempFeeClassSet = this.getAccTemp(1, tLJTempFeeSchema.getPayMoney(),
tLJTempFeeClassSet);
for(int k = 1; k <= ttLJTempFeeClassSet.size(); k++)
{
LJTempFeeClassSchema tLJTempFeeClassSchema = new LJTempFeeClassSchema();
tLJTempFeeClassSchema.setSchema(ttLJTempFeeClassSet.get(k));
tmoney = new DecimalFormat("0.00").format(new Double(tLJTempFeeClassSchema.getPayMoney()));
if(Double.parseDouble(tmoney) < 0.01)
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(),
"004", mVoucherType+mMatchID+k, "暂收分类金额为非正数");
continue;
}
for(int t = 1; t <= 2; t++)
{
if(t == 1)
{
// 如果贷方有问题,则借方不再处理
if(tFailFlag.equals("1"))
break;
if(mManageCom.substring(0, 4).equals("8637")
&& "2227".equals(tLJTempFeeClassSchema.getBankCode()))
{
mBillID = "0215";
mAccountCode = "其他应收款-资金中转-邮政储蓄";
}
else
{
if(tLJTempFeeClassSchema.getPayMode().equals("1"))
{
mBillID = "0200";
mAccountCode = "库存现金-人民币-业务";
}
else if(tLJTempFeeClassSchema.getPayMode().equals("5"))
{
mBillID = "0201";
mAccountCode = "应付业务支出-内部转帐"; // 应付业务支出??
}
else if(tLJTempFeeClassSchema.getPayMode().equals("3"))
{
mBillID = "0202";
mAccountCode = "银行存款-活期-人民币"; // 银行支票
mAccountSubCode = "支" + mManageCom;
}
else
{
if(tLJTempFeeClassSchema.getBankCode() == null) // 银行托收银行代码为空
{
dealError("LJTempFeeClass", tLJTempFeeClassSchema.getTempFeeNo(),
tLJTempFeeClassSchema.getTempFeeNo(), "008", mVoucherType+mMatchID+k,
"银行托收/现金支票的银行编码为空");
tFailFlag = "1";
break;
}
mBillID = "0203";
mAccountCode = "银行存款-活期-人民币";
mAccountSubCode = "收" + tLJTempFeeClassSchema.getBankCode();
}
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = "分类收预收保费!";
}
else
{
// 如果贷方有问题,则借方不再处理
if(tFailFlag.equals("1"))
continue;
mBillID = "0204";
mAccountCode = "预收保费";
mAccountSubCode = "NA";
mHeadDescription = "收预收保费!";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
if(isExitInTab(mBussNo, null, mBillID))
{
tFailFlag = "1";
break;
}
mManageCom = tLJTempFeeSchema.getManageCom().substring(0, 6);
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
}
}
}
// 处理集中代收的数据
SSRS ssrs = otoFBLSQL.getDistinctTempFeeNoByConfMakeDateAndLDBankAndBankeCodeIsNotNull(mToday,cManageCom,"1","4");
for(int i = 1; i <= ssrs.getMaxRow(); i++)
{
String tTempfeeno = ssrs.GetText(i, 1);
LJTempFeeSet tLJTempFeeSet = ljTempFeeSQL.findAllByTempFeeNoOrderByPayMoneyDesc(tTempfeeno.trim());
LJTempFeeClassSet tLJTempFeeClassSet = ljTempFeeClassSQL.findAllByTempFeeNoOrderByPayMoneyDesc(tTempfeeno.trim());
double tLJTempFeeSum = 0;
double tLJTempFeeClassSum = 0;
for(int k = 1; k <= tLJTempFeeSet.size(); k++)
{
tLJTempFeeSum = tLJTempFeeSum + tLJTempFeeSet.get(k).getPayMoney();
}
for(int k = 1; k <= tLJTempFeeClassSet.size(); k++)
{
tLJTempFeeClassSum = tLJTempFeeClassSum + tLJTempFeeClassSet.get(k).getPayMoney();
}
if(Math.abs((tLJTempFeeSum - tLJTempFeeClassSum)) >= 0.001)
{
dealError("LJTempFee", tTempfeeno, tTempfeeno, "006",mVoucherType+mMatchID+i, "暂收费与暂收费分类金额不一致");
continue;
}
for(int j = 1; j <= tLJTempFeeSet.size(); j++)
{
LJTempFeeSchema tLJTempFeeSchema = new LJTempFeeSchema();
tLJTempFeeSchema = tLJTempFeeSet.get(j);
if(tLJTempFeeSchema.getPayMoney() <= 0)
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(),
"004", mVoucherType+mMatchID+j, "暂收金额为非正数");
continue;
}
initVar();
mMatchID++;
mPolNo = tLJTempFeeSchema.getOtherNo();
mContNo = tLJTempFeeSchema.getOtherNo();
mBussNo = tLJTempFeeSchema.getTempFeeNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJTempFeeSchema.getConfMakeDate();
mRiskCode = tLJTempFeeSchema.getRiskCode();
String tFailFlag = "0";
// 取值
LJTempFeeClassSet ttLJTempFeeClassSet = this.getAccTemp(1, tLJTempFeeSchema.getPayMoney(),
tLJTempFeeClassSet);
for(int k = 1; k <= ttLJTempFeeClassSet.size(); k++)
{
LJTempFeeClassSchema tLJTempFeeClassSchema = new LJTempFeeClassSchema();
tLJTempFeeClassSchema.setSchema(ttLJTempFeeClassSet.get(k));
tLJTempFeeClassSchema.setPayMoney(new DecimalFormat("0.00").format(new Double(tLJTempFeeClassSchema
.getPayMoney())));
if(tLJTempFeeClassSchema.getPayMoney() <= 0)
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "004",
mVoucherType+mMatchID+k, "暂收费金额为非正数");
continue;
}
if(tLJTempFeeSchema.getManageCom().trim().length() == 2)
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "007",
mVoucherType+mMatchID+k, "管理机构为2位,不予提取");
continue;
}
// if("1".equals(tLJTempFeeSchema.getTempFeeNoType()))
//zy 2010-02-22 判断健康委托产品的字段应为risktype
if("1".equals(tLJTempFeeSchema.getRiskType()))
{
dealError("LJTempFee", tLJTempFeeSchema.getTempFeeNo(), tLJTempFeeSchema.getOtherNo(), "013",
mVoucherType+mMatchID+k, "该保单为健康委托产品,不在此进行凭证的提取");
continue;
}
mSegment2 = tLJTempFeeSchema.getManageCom();
mManageCom = tLJTempFeeSchema.getManageCom().substring(0, 6); // 所有支票都转入商业银行账户
mHeadDescription = "分类收预收保费!";
tmoney = new DecimalFormat("0.00").format(new Double(tLJTempFeeClassSchema.getPayMoney()));
String tBankCom = getBankCom(tLJTempFeeClassSchema.getBankCode(), "002");
for(int t = 1; t <= 2; t++)
{
if(t == 1)
{
// 判断是否是分公司代支公司集中扣款
if(!tLJTempFeeClassSchema.getPayMode().equals("1")
&& !tLJTempFeeClassSchema.getPayMode().equals("5"))
{
if(!tBankCom.equals(mManageCom))
{
mBillID = "0209";
mAccountCode = "其他应收款-资金中转-集中批收"; // 集中批收的处理
mAccountSubCode = "C" + mManageCom.substring(2, 4).concat("0000");//支公司的科目改变,如86513400-C513400
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
if(isExitInTab(mBussNo, null, mBillID))
{
tFailFlag = "1";
break;
}
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
mManageCom = tLJTempFeeSchema.getManageCom().substring(0, 4).concat("00");
mSegment2 = mManageCom.concat("00"); // 分公司帐套记录
if(mManageCom.substring(0, 4).equals("8637")
&& "2227".equals(tLJTempFeeClassSchema.getBankCode())) // 针对山东分公司集中批收
{
mBillID = "0214";
mAccountCode = "其他应收款-资金中转-邮政储蓄"; // 银行支票
}
else
{
if(tLJTempFeeClassSchema.getPayMode().equals("3"))
{
mBillID = "0210";
mAccountCode = "银行存款-活期-人民币"; // 银行支票
mAccountSubCode = "支" + mManageCom;
}
else
{
if(tLJTempFeeClassSchema.getBankCode() == null) // 银行托收银行代码为空
{
dealError("LJTempFeeClass", tLJTempFeeClassSchema.getTempFeeNo(),
tLJTempFeeSchema.getOtherNo(), "009", mVoucherType+mMatchID+k,
"银行托收/现金支票的银行编码为空");
tFailFlag = "1";
break;
}
mBillID = "0211";
mAccountCode = "银行存款-活期-人民币"; // 银行存款
mAccountSubCode = "收" + tLJTempFeeClassSchema.getBankCode();
}
}
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
// 贷方如果有问题,则借方不再处理
if(tFailFlag.equals("1"))
continue;
mBillID = "0212";
mAccountCode = "其他应付款-资金中转-集中批收"; // 预收
mAccountSubCode = "C" + tLJTempFeeSchema.getManageCom().substring(2, 6).concat("00");
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
if(isExitInTab(mBussNo, null, mBillID))
{
tFailFlag = "1";
break;
}
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
mSegment2 = tLJTempFeeSchema.getManageCom();
mManageCom = tLJTempFeeSchema.getManageCom().substring(0, 6); // 所有支票都转入商业银行账户
if(!tBankCom.equals(mManageCom))
{
mBillID = "0213";
mAccountCode = "预收保费"; // 预收
mAccountSubCode = "NA";
mHeadDescription = "收预收保费!";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
}
if(isExitInTab(mBussNo, null, mBillID))
{
tFailFlag = "1";
break;
}
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
}
}
LJAPayPersonSQL ljaPayPersonSQL = SQLProxy.getInstance(LJAPayPersonSQL.class);
LJAPayPersonSet tLJAPayPersonSet = ljaPayPersonSQL.findAllByConfDateAndManageComLikeAndPayTypeAndPayCount(mToday,cManageCom,"YET","1");
for(int i = 1; i <= tLJAPayPersonSet.size(); i++)
{
LJAPayPersonSchema tLJAPayPersonSchema = new LJAPayPersonSchema();
tLJAPayPersonSchema.setSchema(tLJAPayPersonSet.get(i));
if(tLJAPayPersonSchema.getSumActuPayMoney() == 0)
{
dealError("LJAPayPerson", tLJAPayPersonSchema.getPayNo(), tLJAPayPersonSchema.getPolNo(), "004",
mVoucherType+mMatchID+i, "实收个人表金额为非正数");
continue;
}
initVar();
mMatchID++;
mPolNo = tLJAPayPersonSchema.getPolNo();
mContNo = tLJAPayPersonSchema.getContNo();
mRiskCode = tLJAPayPersonSchema.getRiskCode();
mBussNo = tLJAPayPersonSchema.getPayNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAPayPersonSchema.getConfDate();
mSegment2 = tLJAPayPersonSchema.getManageCom();
mManageCom = tLJAPayPersonSchema.getManageCom().substring(0, 6);
tmoney = new DecimalFormat("0.00").format(new Double(tLJAPayPersonSchema.getSumActuPayMoney()));
if(!this.setPolInfo(mPolNo,mRiskCode, "LJAPayPerson", "002"))
{
mHeadDescription = "暂收余额转预收" + mInsuredName + "保费";
continue;
}
else
mHeadDescription = "暂收余额转预收";
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
mBillID = "0205";
mAccountCode = "暂收保费"; // 借暂收
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
mBillID = "0206";
mAccountCode = "预收保费";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
if(isExitInTab(mBussNo, null, mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
LJAPayGrpSQL ljaPayGrpSQL = SQLProxy.getInstance(LJAPayGrpSQL.class);
LJAPayGrpSet tLJAPayGrpSet = ljaPayGrpSQL.findAllByConfDateAndManageComLikeAndPayTypeAndPayCount(mToday,cManageCom,"YET","1");
for(int i = 1; i <= tLJAPayGrpSet.size(); i++)
{
LJAPayGrpSchema tLJAPayGrpSchema = new LJAPayGrpSchema();
tLJAPayGrpSchema.setSchema(tLJAPayGrpSet.get(i));
if(tLJAPayGrpSchema.getSumActuPayMoney() == 0)
{
dealError("LJAPayGrp", tLJAPayGrpSchema.getPayNo(), tLJAPayGrpSchema.getGrpPolNo(), "004",
mVoucherType+mMatchID+i, "实收个人表金额为非正数");
continue;
}
initVar();
mMatchID++;
mBussNo = tLJAPayGrpSchema.getPayNo();
mContNo = tLJAPayGrpSchema.getGrpContNo();
mPolNo = tLJAPayGrpSchema.getGrpPolNo();
mRiskCode = tLJAPayGrpSchema.getRiskCode();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAPayGrpSchema.getConfDate();
mRiskCode = tLJAPayGrpSchema.getRiskCode();
mSegment2 = tLJAPayGrpSchema.getManageCom();
mManageCom = tLJAPayGrpSchema.getManageCom().substring(0, 6);
tmoney = new DecimalFormat("0.00").format(new Double(tLJAPayGrpSchema.getSumActuPayMoney()));
if(!this.setPolInfo(mPolNo,mRiskCode, "LJAPayGrp", mVoucherType+mMatchID+i))
{
mHeadDescription = "暂收余额转预收" + mInsuredName + "保费";
continue;
}
else
mHeadDescription = "暂收余额转预收,收据号:" + tLJAPayGrpSchema.getPayNo();
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
mBillID = "0207";
mAccountCode = "暂收保费"; // 借暂收
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
mBillID = "0208";
mAccountCode = "预收保费";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
if(isExitInTab(mBussNo, null, mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
return true;
}
/**
* 保费收入凭证的提取
*/
private boolean getFeeDataPrem()
{
// 个人实收
LJAPayPersonSet tLJAPayPersonSet = otoFBLSQL.findAllLJAPayPersonByConfDateAndManageComLikeAndOtherNoTypeAnIncomeType(mToday,cManageCom,"10","10");
for(int i = 1; i <= tLJAPayPersonSet.size(); i++)
{
LJAPayPersonSchema tLJAPayPersonSchema = new LJAPayPersonSchema();
tLJAPayPersonSchema = tLJAPayPersonSet.get(i);
if(!tLJAPayPersonSchema.getPayType().equals("ZC"))
{
dealError("LJAPayPerson", tLJAPayPersonSchema.getPayNo(), tLJAPayPersonSchema.getPolNo(), "005",
mVoucherType+mMatchID+i,"交费类型为" + tLJAPayPersonSchema.getPayType() + ",不属于凭证提取范围");
continue;
}
if(tLJAPayPersonSchema.getSumActuPayMoney() == 0)
{
dealError("LJAPayPerson", tLJAPayPersonSchema.getPayNo(), tLJAPayPersonSchema.getPolNo(), "004",
mVoucherType+mMatchID+i,"实收个人表交费金额为零");
continue;
}
// 为变量附值
initVar();
mMatchID++;
mPolNo = tLJAPayPersonSchema.getPolNo();
mContNo = tLJAPayPersonSchema.getContNo();
mBussNo = tLJAPayPersonSchema.getPayNo();
mTransDate = tLJAPayPersonSchema.getConfDate();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mSegment2 = tLJAPayPersonSchema.getManageCom();
mManageCom = tLJAPayPersonSchema.getManageCom().substring(0, 6);
tmoney = new DecimalFormat("0.00").format(new Double(tLJAPayPersonSchema.getSumActuPayMoney()));
LCPolSchema tLCPolBL = (LCPolSchema)getPol(mPolNo, mVoucherType+mMatchID+i);
if(tLCPolBL == null)
continue;
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
//zy 2009-12-18 调整邮保通记账规则
if("ybt".equals(tLJAPayPersonSchema.getOperator().toLowerCase())||"hnyz".equals(tLJAPayPersonSchema.getOperator().toLowerCase())) // 邮保通网点出单
{
String mYType=getYBTPayMode(tLJAPayPersonSchema.getPayNo());
if("A".equals(mYType))
{
mBillID = "0325";
mAccountCode = "应收保费-首期-邮保通";
}
else if("B".equals(mYType))
{
if(tLJAPayPersonSchema.getPayCount() == 1 && (tLCPolBL.getRenewCount()<=0))
{
mBillID = "0310";
mAccountCode = "暂收保费"; // 新保暂转
}
else
{
mBillID = "0311";
mAccountCode = "预收保费"; // 续期暂转
}
}
else
{
dealError("LJAPayPerson", tLJAPayPersonSchema.getPayNo(), tLJAPayPersonSchema.getPolNo(), "005",
mVoucherType+mMatchID+i,"不支持的邮保通凭证提取");
break;
}
}
else if("04".equals(mSaleChnl))
{
mBillID = "0312";
mAccountCode = "其他应收款-电子商务保单"; // 电子商务保单应收款
}
else
{
if(tLJAPayPersonSchema.getPayCount() == 1 && (tLCPolBL.getRenewCount()<=0))
{
mBillID = "0310";
mAccountCode = "暂收保费"; // 新保暂转
}
else
{
mBillID = "0311";
mAccountCode = "预收保费"; // 续期暂转
}
}
mEnteredDR = String.valueOf(tmoney); // 借
mEnteredCR = ""; // 贷
mHeadDescription = "转" + mInsuredName + "保费";
}
else
{
if(tLJAPayPersonSchema.getPayIntv() == 0 || tLJAPayPersonSchema.getPayIntv() == -1)
{
mBillID = "0313";
mAccountCode = "保费收入-趸缴"; // 趸缴
}
else
{
if(tLJAPayPersonSchema.getPayCount() == 1 )
{
mBillID = "0314";
mAccountCode = "保费收入-首年首期"; // 首年首期
}
else
{
String tPolDate = PubFun.calDate(tLCPolBL.getCValiDate(), 1, "Y", tLCPolBL.getCValiDate());
if(PubFun.calInterval(tPolDate, tLJAPayPersonSchema.getCurPayToDate(), "D") > 0)
{
mBillID = "0315";
mAccountCode = "保费收入-续年续期"; // 续年续期
}
else
{
mBillID = "0316";
mAccountCode = "保费收入-首年续期"; // 首年续期
}
}
}
mEnteredDR = ""; // 借
mEnteredCR = String.valueOf(tmoney); // 贷
mHeadDescription = "收" + mInsuredName + "保费";
}
if(isExitInTab(mBussNo, mPolNo, mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
//团单的保费收入提取
LJAPayGrpSet tLJAPayGrpSet = otoFBLSQL.findAllLJAPayGrpByConfDateAndManageComLikeAndOtherNoTypeAnIncomeType(mToday,cManageCom,"10","10");
for(int i = 1; i <= tLJAPayGrpSet.size(); i++)
{
LJAPayGrpSchema tLJAPayGrpSchema = new LJAPayGrpSchema();
tLJAPayGrpSchema = tLJAPayGrpSet.get(i);
if(!tLJAPayGrpSchema.getPayType().equals("ZC"))
{
dealError("LJAPayGrp", tLJAPayGrpSchema.getPayNo(), tLJAPayGrpSchema.getGrpPolNo(), "005",
mVoucherType+mMatchID+i,"交费类型为" + tLJAPayGrpSchema.getPayType() + ",不属于提取范围");
continue;
}
if(tLJAPayGrpSchema.getSumActuPayMoney() == 0)
{
dealError("LJAPayGrp", tLJAPayGrpSchema.getPayNo(), tLJAPayGrpSchema.getGrpPolNo(), "004",
mVoucherType+mMatchID+i,"实收集体表交费金额为零");
continue;
}
initVar();
mMatchID++;
mPolNo = tLJAPayGrpSchema.getGrpPolNo();
mContNo = tLJAPayGrpSchema.getGrpContNo();
mBussNo = tLJAPayGrpSchema.getPayNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAPayGrpSchema.getConfDate();
mSegment2 = tLJAPayGrpSchema.getManageCom();
mManageCom = tLJAPayGrpSchema.getManageCom().substring(0, 6);
tmoney = new DecimalFormat("0.00").format(new Double(tLJAPayGrpSchema.getSumActuPayMoney()));
LCGrpPolSchema tLCGrpPolBL = (LCGrpPolSchema)getGrpPol(mPolNo, mVoucherType+mMatchID+i);
if(tLCGrpPolBL == null)
continue;
double douAirPolPrem = getPremAirPol(mContNo,tLJAPayGrpSchema.getRiskCode().trim());
if(douAirPolPrem > 0)
mVoucherType = "1"; //如果这笔记录有航意险信息,记在暂收凭证中-视作借贷相等,专款专用
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
if(tLJAPayGrpSchema.getPayCount() == 1)
{
mBillID = "0317";
mAccountCode = "暂收保费"; // 新保暂转
}
else
{
mBillID = "0318";
mAccountCode = "预收保费"; // 续期暂转
}
if(mSaleChnl.equals("04"))
{
mBillID = "0319";
mAccountCode = "其他应收款-电子商务保单"; // 电子商务保单应收款
}
mEnteredDR = String.valueOf(tmoney); // 借
mEnteredCR = ""; // 贷
mHeadDescription = "暂收保费";
}
else
{
if(douAirPolPrem > 0) //判断是否是航意险保单交费
{
mBillID = "0324";
mAccountCode = "应收保费-首期-中介代理";
mEnteredDR = ""; //借
mEnteredCR = String.valueOf(douAirPolPrem); //贷航意险保费这部金额
mHeadDescription = "应收保费";
if (isExitInTab(mBussNo,mPolNo,mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema) entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
//如果扣除航意险这部分保费还有多交的部分(或者交费保单比应收保费多,则记入后面的保费收入科目)
double tRemainMoney = Double.parseDouble(tmoney) - douAirPolPrem;
tmoney = (tRemainMoney >= 0) ? String.valueOf(tRemainMoney) : "0";
}
if(tLJAPayGrpSchema.getPayIntv() == 0 || tLJAPayGrpSchema.getPayIntv() == -1)
{
mBillID = "0320";
mAccountCode = "保费收入-趸缴"; // 趸交
}
else
{
if(tLJAPayGrpSchema.getPayCount() == 1)
{
mBillID = "0321";
mAccountCode = "保费收入-首年首期"; // 首年首期
}
else
{
String tPolDate = PubFun.calDate(tLCGrpPolBL.getCValiDate(), 1, "Y", tLCGrpPolBL
.getCValiDate());
if(PubFun.calInterval(tPolDate, tLJAPayGrpSchema.getCurPayToDate(), "D") > 0)
{
mBillID = "0322";
mAccountCode = "保费收入-续年续期"; // 续年续期
}
else
{
mBillID = "0323";
mAccountCode = "保费收入-首年续期"; // 首年续期
}
}
}
mEnteredDR = ""; // 借
mEnteredCR = String.valueOf(tmoney); // 贷
mHeadDescription = "收" + mInsuredName + "保费";
}
if(isExitInTab(mBussNo, mPolNo, mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null && Double.parseDouble(tmoney) > 0.0)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
return true;
}
/**
* 获取该团体航意险保单的保费金额/交费金额
* @param cGrpPolNo
* @return
*/
private double getPremAirPol(String cGrpPolNo,String cRiskCode)
{
//由于航意险的升级暂时未决定(sequenceno)不存在了,所以暂时不做调整
//航意险升级在lcpol中contno为lcairpol表的polno
double prem=0.00;
if("141801".equals(cRiskCode) || "141807".equals(cRiskCode)|| "141810".equals(cRiskCode)|| "141813".equals(cRiskCode)
|| "211603".equals(cRiskCode) || "211609".equals(cRiskCode))
{
//由于满期终止可能导致保单失效,且终止时间正好卡在财务接口提取时间导致获取保单信息失败,所以屏蔽appflag='1'条件
SSRS ssrs = otoFBLSQL.getSumMoneyByGrpContNoAndVoucherTypeAndManageComLike(cGrpPolNo,"3",mManageCom);
if(ssrs == null || ssrs.getMaxRow() <= 0)
prem=0.00;
else
prem= Double.parseDouble(ssrs.GetText(1,1));
}
return prem;
}
/**
* 理赔应付凭证 待完善的部分:跨机构理赔的财务凭证是否由系统提取
*/
private boolean PayFeeDataClaimJ()
{
LJAGetClaimSQL ljaGetClaimSQL = SQLProxy.getInstance(LJAGetClaimSQL.class);
ArrayList<String> feeFinaType = new ArrayList<String>(Arrays.asList("HDLX", "HKLX","BF","HK", "HD","TM","CM","HLRB","YFRB","HLTF","DJTF","XJTF","LJTF"));
LJAGetClaimSet tLJAGetClaimSet = ljaGetClaimSQL.findAllByMakeDateAndManageComLikeAndFeeFinaTypeNot(mToday,cManageCom,feeFinaType);
for(int i = 1; i <= tLJAGetClaimSet.size(); i++)
{
LJAGetClaimSchema tLJAGetClaimSchema = new LJAGetClaimSchema();
tLJAGetClaimSchema = tLJAGetClaimSet.get(i);
if(tLJAGetClaimSchema.getPay() == 0)
{
dealError("LJAGetClaim", tLJAGetClaimSchema.getActuGetNo(), tLJAGetClaimSchema.getPolNo(), "004",
mVoucherType+mMatchID+i, "理赔金额为零");
continue;
}
initVar();
mMatchID++;
mPolNo = tLJAGetClaimSchema.getPolNo();
mContNo = tLJAGetClaimSchema.getContNo();
mBussNo = tLJAGetClaimSchema.getActuGetNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAGetClaimSchema.getMakeDate();
mSegment2 = tLJAGetClaimSchema.getManageCom();
mManageCom = tLJAGetClaimSchema.getManageCom().substring(0, 6);
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetClaimSchema.getPay()));
LCPolSchema tLCPolBL = new LCPolSchema();
tLCPolBL = getPol(mPolNo, mVoucherType+mMatchID+i);
if(tLCPolBL == null)
continue;
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
if("TF".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
if("0".equals(String.valueOf(tLCPolBL.getPayIntv())) || "-1".equals(String.valueOf(tLCPolBL.getPayIntv())))
{
mBillID = "04090";
mAccountCode = "保费收入-趸缴"; //保全退费
}
else
{
mBillID = "04091";
mAccountCode = "保费收入-首年首期";
}
// this.tmoney = "-" + this.tmoney;
tmoney = new DecimalFormat("0.00").format(new Double(0-tLJAGetClaimSchema.getPay()));
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
else
{
if("SWPK".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "0400";
mAccountCode = "死亡给付"; // 死亡给付金
mHeadDescription = mAccountCode + tLCPolBL.getInsuredName().trim() + "赔付费,保单号:"
+ tLCPolBL.getContNo();
}
else if("YLPK".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "0401";
mAccountCode = "医疗给付"; // 医疗给付金
mHeadDescription = mAccountCode + tLCPolBL.getInsuredName().trim() + "赔付费,保单号:"
+ tLCPolBL.getContNo();
}
else if("SCPK".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "0402";
mAccountCode = "伤残给付"; // 伤残给付金
mHeadDescription = mAccountCode + tLCPolBL.getInsuredName().trim() + "赔付费,保单号:"
+ tLCPolBL.getContNo();
}
else if("DQPK".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "0403";
mAccountCode = "赔款支出";
mHeadDescription = mAccountCode + tLCPolBL.getInsuredName().trim() + "赔付费,保单号:"
+ tLCPolBL.getContNo();
}
//取消预付赔付款科目
// else if("YFPK".equals(tLJAGetClaimSchema.getFeeFinaType()) )
// {
// //二次赔付时产生的与原预付记录相反的数据
// if("A".equals(tLJAGetClaimSchema.getSubFeeOperationType()) )
// {
// break;
// }
// //预付记录
// if("B".equals(tLJAGetClaimSchema.getSubFeeOperationType()))
// {
// mBillID = "0404";
// mAccountCode = "预付赔付款";
// }
// }
else if("TB".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "0405";
mAccountCode = "退保金"; // 理赔退保金
mHeadDescription = tLCPolBL.getInsuredName().trim()+mAccountCode;
}
else if("YCLX".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "0408";
mAccountCode = "利息支出-延滞赔款利息";
mHeadDescription = mAccountCode + tLCPolBL.getInsuredName().trim() + "赔付费,保单号:"
+ tLCPolBL.getContNo();
}
else if ("YF".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "0413";
mAccountCode = "年金给付";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName + "生存领取费";
}
else if("YFLX".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "0417";
mAccountCode = "利息支出-延滞领取利息";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName + "生存领取费";
}
else if ("EF".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "0414";
mAccountCode = "应付业务支出-满期";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName + "生存领取费";
}
else if("YE".equals(tLJAGetClaimSchema.getFeeFinaType()) )
{
mBillID = "0410";
mAccountCode = "预收保费"; //退余额
mHeadDescription = tLCPolBL.getInsuredName().trim()+mAccountCode;
}
else
{
dealError("LJAGetClaim", mBussNo, mPolNo, "005", mVoucherType+mMatchID+i, "未描述的财务类型"+tLJAGetClaimSchema.getFeeFinaType()+"");
break; //待补充
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
}
else
{
if("SWPK".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "04071";
mAccountCode = "应付业务支出-死亡给付"; // 死亡给付金
mHeadDescription = mAccountCode + tLCPolBL.getInsuredName().trim() + "赔付费,保单号:"
+ tLCPolBL.getContNo();
}
else if("YLPK".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "04072";
mAccountCode = "应付业务支出-医疗给付"; // 医疗给付金
mHeadDescription = mAccountCode + tLCPolBL.getInsuredName().trim() + "赔付费,保单号:"
+ tLCPolBL.getContNo();
}
else if("SCPK".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "04073";
mAccountCode = "应付业务支出-伤残给付"; // 伤残给付金
mHeadDescription = mAccountCode + tLCPolBL.getInsuredName().trim() + "赔付费,保单号:"
+ tLCPolBL.getContNo();
}
else if("DQPK".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "04074";
mAccountCode = "应付业务支出-赔款支出";
mHeadDescription = mAccountCode + tLCPolBL.getInsuredName().trim() + "赔付费,保单号:"
+ tLCPolBL.getContNo();
}
else if("TB".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "0411";
mAccountCode = "应付业务支出-退保金"; // 理赔退保金
mHeadDescription = tLCPolBL.getInsuredName().trim() + mAccountCode;
}
else if("YCLX".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "0412";
mAccountCode = "应付业务支出-理赔";
mHeadDescription = tLCPolBL.getInsuredName().trim() + mAccountCode;
}
else if("TF".equals(tLJAGetClaimSchema.getFeeFinaType()) || "YE".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
if(getRiskPeriod(mRiskCode, "005").equals("M")
|| getRiskPeriod(mRiskCode, "005").equals("S"))
{
mBillID = "0415";
mAccountCode = "应付业务支出-短期险退保";
}
else
{
mBillID = "04150";
mAccountCode = "应付业务支出-其他";
}
mHeadDescription = tLCPolBL.getInsuredName().trim() + mAccountCode;
}
else if ("YF".equals(tLJAGetClaimSchema.getFeeFinaType()) || "YFLX".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "0416";
mAccountCode = "应付业务支出-年金";
mHeadDescription = mAccountCode + mInsuredName + "生存领取费";
}
else
{
dealError("LJAGetClaim", mBussNo, mPolNo, "005", mVoucherType+mMatchID+i, "未描述的财务类型"+tLJAGetClaimSchema.getFeeFinaType()+"");
break; //待补充
}
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetClaimSchema.getPay()));
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
if(isExitInTab(tLJAGetClaimSchema.getActuGetNo(), tLJAGetClaimSchema.getPolNo(), mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
return true;
}
/**
* 判断银行代码对应的管理机构
*
* @param cBankCode
* @return ComCode-6位
*/
private String getBankCom(String cBankCode, String tID)
{
if(cBankCode == null || cBankCode.equals(""))
return "";
LDBankDB tLDBankDB = new LDBankDB();
tLDBankDB.setBankCode(cBankCode);
if(!tLDBankDB.getInfo())
{
dealError("ldbank", mBussNo, mPolNo, "009", tID, "无法获取银行" + cBankCode + "的机构信息!");
return "";
}
return PubFun.RCh(tLDBankDB.getComCode(),"0",6);
}
/**
* 判断银行代码对应的管理机构,针对暂收银行编码在ldbank中没有描述的银行
*
* @param cBankCode
* @return ComCode-6位
*/
private String getTBankCom(String cBankCode, String tID)
{
if(cBankCode == null || cBankCode.equals(""))
return "";
LDCodeDB tLDCodeDB = new LDCodeDB();
tLDCodeDB.setCodeType("bank");
tLDCodeDB.setCode(cBankCode.trim());
if(!tLDCodeDB.getInfo())
{
dealError("LDCode", mBussNo, mPolNo, "009", tID, "无法获取银行" + cBankCode + "的机构信息!");
return "";
}
return PubFun.RCh(tLDCodeDB.getComCode(),"0",6);
}
/*******************************************************************************************************************
* PayFeeData()分为以下几个部分; PayFeeDataEndordseJ()批改补退费表的业务付费部分;
* PayFeeDataEndordseD()批改补退费的财务付费部分;
* PayFeeDataDrawJ()生存领取表的业务付费部分; PayFeeDataDrawD()生存领取的财务付费部分;
* PayFeeDataOtherJ()其它退费表的业务付费操作 PayFeeDataOtheD()退费表的财务付费操作 PayFeeDataClaimJ()
* 赔付退费表的业务付费操作 PayFeeDataClaimD()赔付退费表的财务付费操作
* PayFeeDataBonusGetJ()红利给付实付表的业务付费操作; PayFeeDataBonusGetD()红利给付实付表的财务付费操作; **************
*/
private boolean PayFeeDataD()
{
if(!getEndorsePay())
{
return false;
}
//由于生存金领取涉及贷款的清偿,所以部分放到保全实付凭证中进行提取
if(!PayFeeDataDrawD())
{
return false;
}
if(!PayFeeDataTempD())
{
return false;
}
if(!PayFeeDataClaimD())
{
return false;
}
if(!PayFeeDataBonusGetD())
{
return false;
}
if(!PayFeeDataOtherGetD())
{
return false;
}
return true;
}
private boolean PayFeeDataJ()
{
if(!PayFeeDataTempJ())
{
return false;
}
if(!PayFeeDataBonusGetJ())
{
return false;
}
if(!PayFeeDataOtherJ())
{
return false;
}
return true;
}
// 对批改补退费表业务付费的操作
private boolean PayFeeDataEndordseJ()
{
ArrayList<String> feeFinaType = new ArrayList<String>(Arrays.asList("LX", "BF", "GB", "HK", "HD", "RV","TM","CM","BD"));
LJAGetEndorseSet tLJAGetEndorseSet = ljaGetEndorseSQL.findAllByMakeDateAndManageComLikeAndFeeFinaTypeNot(mToday,cManageCom,feeFinaType);
for(int i = 0; i < tLJAGetEndorseSet.size(); i++)
{
LJAGetEndorseSchema tLJAGetEndorseSchema = new LJAGetEndorseSchema();
tLJAGetEndorseSchema = tLJAGetEndorseSet.get(i + 1);
LJAGetDB tLJAGetDB = new LJAGetDB();
tLJAGetDB.setActuGetNo(tLJAGetEndorseSchema.getActuGetNo());
if(tLJAGetEndorseSchema.getGetMoney() == 0)
{
dealError("LJAGetEndorse", tLJAGetEndorseSchema.getActuGetNo(), tLJAGetEndorseSchema.getPolNo(), "004",
mVoucherType+mMatchID+i, "保全应付金额为零");
continue;
}
//由于保全的回滚业务产生相应的金额为负数,所以该校验屏蔽掉
initVar();
mMatchID++;
mPolNo = tLJAGetEndorseSchema.getPolNo();
mContNo = tLJAGetEndorseSchema.getContNo();
mBussNo = tLJAGetEndorseSchema.getActuGetNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAGetEndorseSchema.getMakeDate();
mSegment2 = tLJAGetEndorseSchema.getManageCom();
mManageCom = tLJAGetEndorseSchema.getManageCom().substring(0, 6);
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetEndorseSchema.getGetMoney()));
double tYHSL = 0;
//针对保全团单不到个单的特殊处理
if("00000000000000000000".equals(tLJAGetEndorseSchema.getContNo()))
{
// if(getGrpPol(tLJAGetEndorseSchema.getGrpPolNo(),mVoucherType+mMatchID+i)==null)
//zy 2009-07-27 由于保全有些项目针对合同,grppolno记得是20个0,所以调整查询逻辑
if(!getEGrpPol(tLJAGetEndorseSchema.getGrpContNo(),tLJAGetEndorseSchema.getRiskCode(),mVoucherType+mMatchID+i))
continue;
}
else
{
if(!this.setPolInfo(mContNo, tLJAGetEndorseSchema.getRiskCode(),"LJAGetEndorse", mVoucherType+mMatchID+i))
continue;
}
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
if(tLJAGetEndorseSchema.getFeeFinaType().equals("TF"))
{
if(mPayIntv == 0 || mPayIntv == -1)
{
mBillID = "05010";
mAccountCode = "保费收入-趸缴"; // 保全退费
}
else
{
mBillID = "05011";
mAccountCode = "保费收入-首年首期";
}
// String ttmoney = "-" + this.tmoney;
String ttmoney =new DecimalFormat("0.00").format(new Double(0-tLJAGetEndorseSchema.getGetMoney()));
mEnteredDR = "";
mEnteredCR = String.valueOf(ttmoney);
}
else
{
if(tLJAGetEndorseSchema.getFeeFinaType().equals("TB"))
{
mBillID = "0500";
mAccountCode = "退保金"; // 保全退保金
}
else if(tLJAGetEndorseSchema.getFeeFinaType().equals("YE"))
{
mBillID = "0502";
mAccountCode = "预收保费"; // 退余额
}
else if(tLJAGetEndorseSchema.getFeeFinaType().equals("DK")) // 借款
{
mBillID = "0503";
mAccountCode = "贷款-保户质押贷款-本金";
}
else if(tLJAGetEndorseSchema.getFeeFinaType().equals("DJ")) // 垫交
{
mBillID = "0504";
mAccountCode = "垫交保费";
}
else if ("LJTF".equals(tLJAGetEndorseSchema.getFeeFinaType())) //红利
{
mBillID = "0511";
mAccountCode = "应付保单红利-累计生息";
}
else
{
dealError("LJAGetEndorse", mBussNo, mPolNo, "004", mVoucherType+mMatchID+i, "保全财务类型为"
+ tLJAGetEndorseSchema.getFeeFinaType() + ",不支持该类型的凭证提取");
break;
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
mHeadDescription = mInsuredName + mAccountCode;
}
else
{
if(tLJAGetEndorseSchema.getFeeFinaType().equals("TB"))
{
mBillID = "0505";
mAccountCode = "应付业务支出-退保金";
}
else if(tLJAGetEndorseSchema.getFeeFinaType().equals("DK"))
{
tYHSL = Double.valueOf(ljaGetEndorseSQL.getSumGetMoneyByActuGetNoAndPolNoAndEndorsementNoAndFeeOperationTypeAndMore(tLJAGetEndorseSchema.getActuGetNo(),tLJAGetEndorseSchema.getPolNo(),tLJAGetEndorseSchema.getEndorsementNo(),"LN","RV").GetText(1, 1)).doubleValue();
mBillID = "0506";
mAccountCode = "应付业务支出-保单贷款";
tmoney = new DecimalFormat("0.00")
.format(new Double(tLJAGetEndorseSchema.getGetMoney() - tYHSL));
if(Double.parseDouble(this.tmoney) ==0)
{
dealError("ljagetendorse", tLJAGetEndorseSchema.getActuGetNo(), tLJAGetEndorseSchema
.getPolNo(), "004", mVoucherType+mMatchID+i, "贷款金额合计为零");
continue;
}
}
else
// TF,YE,DJ 都贷保全其它应付款
{
if("TF".equals(tLJAGetEndorseSchema.getFeeFinaType()) || "YE".equals(tLJAGetEndorseSchema.getFeeFinaType())
|| "DJ".equals(tLJAGetEndorseSchema.getFeeFinaType()))
{
if("WT".equals(tLJAGetEndorseSchema.getFeeOperationType()))
{
mBillID = "0509";
mAccountCode = "应付业务支出-犹豫期撤单";
}
else if(getRiskPeriod(mRiskCode, "005").equals("M")
|| getRiskPeriod(mRiskCode, "005").equals("S"))
{
mBillID = "0510";
mAccountCode = "应付业务支出-短期险退保";
}
else
{
mBillID = "0507";
mAccountCode = "应付业务支出-其他";
}
}
else if ("LJTF".equals(tLJAGetEndorseSchema.getFeeFinaType())) //红利
{
mBillID = "0512";
mAccountCode = "应付业务支出-红利";
}
else
{
dealError("LJAGetEndorse", mBussNo, mPolNo, "004", mVoucherType+mMatchID+i, "保全财务类型为"
+ tLJAGetEndorseSchema.getFeeFinaType() + ",不支持该类型的凭证提取");
}
}
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
mHeadDescription = mInsuredName + mAccountCode;
}
if(isExitInTab(tLJAGetEndorseSchema.getActuGetNo(), tLJAGetEndorseSchema.getPolNo(), mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
if(tLJAGetEndorseSchema.getFeeFinaType().equals("DK"))
{
tmoney = new DecimalFormat("0.00").format(new Double(tYHSL));
if(Double.parseDouble(this.tmoney) ==0)
{
dealError("ljagetendorse", tLJAGetEndorseSchema.getActuGetNo(), tLJAGetEndorseSchema.getPolNo(),
"004", mVoucherType+mMatchID+i, "贷款金额合计为零");
continue;
}
mBillID = "0508";
mAccountCode = "应交税费-印花税";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
}
}
return true;
}
private LJAGetEndorseSet getAccEndorse(int Flag, double tSumMoney, LJAGetEndorseSet tLJAGetEndorseSet)
{
LJAGetEndorseSet tReturnEndorseSet = new LJAGetEndorseSet();
if(tSumMoney == 0.00)
{
return tReturnEndorseSet;
}
double[] a = new double[tLJAGetEndorseSet.size()];
for(int i = 0; i < tLJAGetEndorseSet.size(); i++)
a[i] = tLJAGetEndorseSet.get(i + 1).getGetMoney();
Arrays.sort(a);
if(Flag == 1) // 降序排列
{
double[] b = new double[tLJAGetEndorseSet.size()];
for(int i = 0; i < a.length; i++)
{
b[i] = a[i];
}
for(int i = 0; i < a.length; i++)
{
a[i] = b[a.length - i - 1];
}
}
double tSumArr = 0;
for(int i = 0; i < a.length; i++)
{
LJAGetEndorseSchema tLJAGetEndorseSchema = new LJAGetEndorseSchema();
for(int j = 1; j <= tLJAGetEndorseSet.size(); j++)
{
tLJAGetEndorseSchema = tLJAGetEndorseSet.get(j);
if(tLJAGetEndorseSchema.getGetMoney() == a[i])
{
tLJAGetEndorseSet.remove(tLJAGetEndorseSchema);
break;
}
}
tSumArr = tSumArr + a[i];
if(tSumArr > tSumMoney)
{
double ttBalance = tSumArr - tSumMoney;
double tBalance = tLJAGetEndorseSchema.getGetMoney() - ttBalance;
if(tBalance < 0.01)
break;
tLJAGetEndorseSchema.setGetMoney(tBalance);
tReturnEndorseSet.add(tLJAGetEndorseSchema);
LJAGetEndorseSchema ttLJAGetEndorseSchema = new LJAGetEndorseSchema();
ttLJAGetEndorseSchema.setSchema(tLJAGetEndorseSchema);
ttLJAGetEndorseSchema.setGetMoney(ttBalance);
tLJAGetEndorseSet.add(ttLJAGetEndorseSchema);
break;
}
else
{
tReturnEndorseSet.add(tLJAGetEndorseSchema);
}
}
return tReturnEndorseSet;
}
private LJTempFeeClassSet getAccTemp(int Flag, double tSumMoney, LJTempFeeClassSet tLJTempFeeClassSet)
{
LJTempFeeClassSet tReturnTempSet = new LJTempFeeClassSet();
if(tSumMoney == 0.00)
{
return tReturnTempSet;
}
double[] a = new double[tLJTempFeeClassSet.size()];
for(int i = 0; i < tLJTempFeeClassSet.size(); i++)
a[i] = tLJTempFeeClassSet.get(i + 1).getPayMoney();
Arrays.sort(a);
if(Flag == 1) // 降序排列
{
double[] b = new double[tLJTempFeeClassSet.size()];
for(int i = 0; i < a.length; i++)
{
b[i] = a[i];
}
for(int i = 0; i < a.length; i++)
{
a[i] = b[a.length - i - 1];
}
}
double tSumArr = 0;
for(int i = 0; i < a.length; i++)
{
LJTempFeeClassSchema tLJTempFeeClassSchema = new LJTempFeeClassSchema();
for(int j = 1; j <= tLJTempFeeClassSet.size(); j++)
{
tLJTempFeeClassSchema = tLJTempFeeClassSet.get(j);
if(tLJTempFeeClassSchema.getPayMoney() == a[i])
{
tLJTempFeeClassSet.remove(tLJTempFeeClassSchema);
break;
}
}
tSumArr = tSumArr + a[i];
if(tSumArr > tSumMoney)
{
double ttBalance = tSumArr - tSumMoney;
double tBalance = tLJTempFeeClassSchema.getPayMoney() - ttBalance;
tLJTempFeeClassSchema.setPayMoney(tBalance);
tReturnTempSet.add(tLJTempFeeClassSchema);
LJTempFeeClassSchema ttLJTempFeeClassSchema = new LJTempFeeClassSchema();
ttLJTempFeeClassSchema.setSchema(tLJTempFeeClassSchema);
ttLJTempFeeClassSchema.setPayMoney(ttBalance);
tLJTempFeeClassSet.add(ttLJTempFeeClassSchema);
break;
}
else
{
tReturnTempSet.add(tLJTempFeeClassSchema);
}
}
return tReturnTempSet;
}
// 保全实付
private boolean getEndorsePay()
{
//zy 增加网银代付的处理,处理规则与银行转账一致
// String tSql = "select * from LJAGet a where "
// + "ConfDate='"+ mToday+ "' and ManageCom like '"+ cManageCom+ "%' "
// + "and OtherNoType='10' and not exists(select 1 from ljabonusget where actugetno=a.actugetno) "
// + " and (paymode not in ( '4','9') or (paymode in ( '4','9') and exists(select 1 from ldbank where "
// + "bankcode = a.bankcode and rpad(trim(comcode),6,'0') = substr(a.managecom,0,6)))) ";
//zy 2009-06-26 由于网银代付的银行在ldbank中没有描述,所以查询逻辑同一调整为ldcode
LJAGetSet tLJAGetSet = new LJAGetSet();
tLJAGetSet = otoFBLSQL.findAllLJAGetByConfDateAndManageComLikeAndOtherNoTypeAndCodeType(mToday,cManageCom,"10","bank");
for(int i = 1; i <= tLJAGetSet.size(); i++)
{
LJAGetSchema tLJAGetSchema = new LJAGetSchema();
tLJAGetSchema.setSchema(tLJAGetSet.get(i));
this.initVar();
mMatchID++;
mBussNo = tLJAGetSchema.getActuGetNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAGetSchema.getConfDate();
mSegment2 = tLJAGetSchema.getManageCom();
mManageCom = tLJAGetSchema.getManageCom().substring(0, 6);
// if(tLJAGetSchema.getSumGetMoney() == 0)
// {
// dealError("LJAGet", mBussNo, tLJAGetSchema.getOtherNo(), "004", mVoucherType+mMatchID+i, "保全实付金额为0");
// continue;
// }
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
if(!getEndorsePayCode(tLJAGetSchema.getActuGetNo(),tLJAGetSchema.getManageCom(),tLJAGetSchema.getConfDate(),"G"))
break;
}
else
{
//当出现坏账类型的财务数据时,总表的数据为0,不做下列科目的处理
if(tLJAGetSchema.getSumGetMoney() > 0 || tLJAGetSchema.getSumGetMoney() < 0)
{
if(tLJAGetSchema.getPayMode() != null)
{
if("1".equals(tLJAGetSchema.getPayMode()))
{
mBillID = "0805";
mAccountCode = "库存现金-人民币-业务";
}
else
{
if(tLJAGetSchema.getPayMode().equals("5")) // 内部转账
{
mBillID = "0803";
mAccountCode = "应付业务支出-内部转帐"; // 内部转账贷
}
else
{
mBillID = "0804";
mAccountCode = "银行存款-活期-人民币"; // 银行存款支
mAccountSubCode = "付" + tLJAGetSchema.getBankCode();
}
}
}
else
{
mBillID = "0806";
mAccountCode = "库存现金-人民币-业务";
}
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetSchema.getSumGetMoney()) );
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
mHeadDescription = mAccountCode + mInsuredName;
if(isExitInTab(tLJAGetSchema.getActuGetNo(), mPolNo, mBillID))
continue;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
}
}
// String sql = "select * from LJAGet a where "
// + "ConfDate='"+ mToday+ "' and ManageCom like '"+ cManageCom+ "%' "
// + "and OtherNoType='10' and not exists(select 1 from ljabonusget where actugetno=a.actugetno) "
// + "and paymode in ( '4','9') and bankcode is not null and exists(select 1 from ldbank where bankcode = a.bankcode and "
// + "rpad(trim(comcode),6,'0') <> substr(a.managecom,0,6)) ";
tLJAGetSet = new LJAGetSet();
tLJAGetSet = otoFBLSQL.findAllLJAGetByConfDateAndManageComLike(mToday,cManageCom,"10","bank");
for(int i = 1; i <= tLJAGetSet.size(); i++)
{
LJAGetSchema tLJAGetSchema = new LJAGetSchema();
tLJAGetSchema.setSchema(tLJAGetSet.get(i));
// if(tLJAGetSchema.getSumGetMoney() == 0)
// {
// dealError("LJAGet", tLJAGetSchema.getActuGetNo(), tLJAGetSchema.getOtherNo(), "004", mVoucherType+mMatchID+i, "保全实付金额为0");
// continue;
// }
this.initVar();
mMatchID++;
mBussNo = tLJAGetSchema.getActuGetNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAGetSchema.getConfDate();
mSegment2 = tLJAGetSchema.getManageCom();
mManageCom = tLJAGetSchema.getManageCom().substring(0, 6);
//支公司科目
if(!getEndorsePayCode(tLJAGetSchema.getActuGetNo(),tLJAGetSchema.getManageCom(),tLJAGetSchema.getConfDate(),"G"))
continue;
if(tLJAGetSchema.getSumGetMoney() > 0 || tLJAGetSchema.getSumGetMoney() < 0)
{
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetSchema.getSumGetMoney()));
if(tLJAGetSchema.getPayMode() != null)
{
if(!tLJAGetSchema.getPayMode().equals("") && !tLJAGetSchema.getPayMode().equals("1"))
{
if(tLJAGetSchema.getPayMode().equals("5")) // 内部转账
{
mBillID = "0863";
mAccountCode = "应付业务支出-内部转帐";
}
else
{
mBillID = "0864";
mAccountCode = "其他应付款-资金中转-集中批付"; // 银行存款支
mAccountSubCode = "C" + mManageCom.substring(2, 4).concat("0000");
}
}
}
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
mHeadDescription = mAccountCode + mInsuredName;
if(isExitInTab(tLJAGetSchema.getActuGetNo(), mPolNo, mBillID))
continue;
OFInterfaceSchema ttOFInterfaceSchema = new OFInterfaceSchema();
ttOFInterfaceSchema = (OFInterfaceSchema)entry();
if(ttOFInterfaceSchema != null)
mOFInterfaceSet.add(ttOFInterfaceSchema);
dealLITranInfo();
// 分公司借记科目
// 取得机构对应的分公司
mManageCom = tLJAGetSchema.getManageCom().substring(0, 4).concat("00");
mSegment2 = mManageCom.concat("00");
mBillID = "0865";
mAccountCode = "其他应收款-资金中转-集中批付"; // 银行存款支
mAccountSubCode = "C" + tLJAGetSchema.getManageCom().substring(2, 6).concat("00");
mHeadDescription = mAccountCode + mInsuredName;
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
if(isExitInTab(tLJAGetSchema.getActuGetNo(), mPolNo, mBillID))
continue;
OFInterfaceSchema t1OFInterfaceSchema = new OFInterfaceSchema();
t1OFInterfaceSchema = (OFInterfaceSchema)entry();
if(t1OFInterfaceSchema != null)
mOFInterfaceSet.add(t1OFInterfaceSchema);
dealLITranInfo();
// 分公司贷记科目
mBillID = "0866";
mAccountCode = "银行存款-活期-人民币"; // 银行存款支
mAccountSubCode = "付" + tLJAGetSchema.getBankCode();
mHeadDescription = mAccountCode + mInsuredName;
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
if(isExitInTab(tLJAGetSchema.getActuGetNo(),mPolNo, mBillID))
continue;
OFInterfaceSchema t2OFInterfaceSchema = new OFInterfaceSchema();
t2OFInterfaceSchema = (OFInterfaceSchema)entry();
if(t2OFInterfaceSchema != null)
mOFInterfaceSet.add(t2OFInterfaceSchema);
dealLITranInfo();
}
}
//查询实收总表
LJAPaySet tLJAPaySet = new LJAPaySet();
LJAPaySQL ljaPaySQL = SQLProxy.getInstance(LJAPaySQL.class);
tLJAPaySet=ljaPaySQL.findAllByConfDateAndManageComLikeAndIncomeType(mToday,cManageCom,"10");
for (int i=1;i<=tLJAPaySet.size();i++)
{
LJAPaySchema tLJAPaySchema = new LJAPaySchema();
tLJAPaySchema.setSchema(tLJAPaySet.get(i));
// if(tLJAPaySchema.getSumActuPayMoney() == 0)
// {
// dealError("LJAGet", tLJAPaySchema.getPayNo(), tLJAPaySchema.getOtherNo(), "004", mVoucherType+mMatchID+i, "实收金额为0");
// continue;
// }
initVar();
mMatchID ++ ;
mBussNo = tLJAPaySchema.getPayNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAPaySchema.getConfDate();
mSegment2 = tLJAPaySchema.getManageCom();
mManageCom = tLJAPaySchema.getManageCom().substring(0,6);
if(!getEndorsePayCode(tLJAPaySchema.getPayNo(),tLJAPaySchema.getManageCom(),tLJAPaySchema.getConfDate(),"P"))
continue;
if(tLJAPaySchema.getSumActuPayMoney()>0 || tLJAPaySchema.getSumActuPayMoney()<0)
{
mBillID = "0909";
mAccountCode = "预收保费"; //续期暂转
mHeadDescription = "转预收保费";
tmoney = new DecimalFormat("0.00").format(new Double(tLJAPaySchema.getSumActuPayMoney()));
tmoney = String.valueOf(Double.parseDouble(tmoney) - tYHSLMoney);
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
if (isExitInTab(tLJAPaySchema.getPayNo(),mPolNo,mBillID))
continue;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema) entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
return true;
}
// 生存领取表的业务操作
private boolean PayFeeDataDrawJ()
{
// 生存金的应付处理
ArrayList<String> moneyType = new ArrayList<String>(Arrays.asList("YF", "EF","YFLX","EFLX"));
LCInsureAccTraceSet tLCInsureAccTraceSet = lcInsureAccTraceSQL.findAllByMakeDateAndManageComAndMoneyTypeAndMoneyTypeInAndGrpContNo(
mToday,cManageCom,moneyType,"00000000000000000000");
for(int i = 1; i <= tLCInsureAccTraceSet.size(); i++)
{
LCInsureAccTraceSchema tLCInsureAccTraceSchema = new LCInsureAccTraceSchema();
tLCInsureAccTraceSchema = tLCInsureAccTraceSet.get(i);
if(tLCInsureAccTraceSchema.getMoney() == 0)
{
dealError("LCInsureAccTrace", tLCInsureAccTraceSchema.getContNo(), tLCInsureAccTraceSchema.getRiskCode(), "004",
mVoucherType+mMatchID+i, "生存金应付金额为非正数!");
continue;
}
initVar();
mMatchID++;
mPolNo = tLCInsureAccTraceSchema.getPolNo();
mContNo = tLCInsureAccTraceSchema.getContNo();
mBussNo = tLCInsureAccTraceSchema.getSerialNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLCInsureAccTraceSchema.getMakeDate();
mSegment2 = tLCInsureAccTraceSchema.getManageCom();
mManageCom = tLCInsureAccTraceSchema.getManageCom().substring(0, 6);
tmoney = new DecimalFormat("0.00").format(new Double(tLCInsureAccTraceSchema.getMoney()));
if(!this.setPolInfo(mContNo,tLCInsureAccTraceSchema.getRiskCode(), "LCInsureAccTrace", mVoucherType+mMatchID+i))
continue;
LMRiskAppDB mLMRiskAppDB = new LMRiskAppDB();
mLMRiskAppDB.setRiskCode(mRiskCode);
if(mLMRiskAppDB.getInfo())
{
if("1".equals(mLMRiskAppDB.getHealthType()))
{
dealError("LCInsureAccTrace", mBussNo, mPolNo, "013",mVoucherType+mMatchID+i, "健康委托产品不在该处进行凭证提取!");
continue;
}
}
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
if("YF".equals(tLCInsureAccTraceSchema.getMoneyType())) // 红利累计生息账户中的累计生息利息
{
mBillID = "0602";
mAccountCode = "年金给付";
}
if("YFLX".equals(tLCInsureAccTraceSchema.getMoneyType()))
{
mBillID = "0601";
mAccountCode = "利息支出-延滞领取利息";
}
if("EF".equals(tLCInsureAccTraceSchema.getMoneyType()))
{
mBillID = "0600";
mAccountCode = "满期给付";
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
if("YF".equals(tLCInsureAccTraceSchema.getMoneyType()) ||
"YFLX".equals(tLCInsureAccTraceSchema.getMoneyType()) )
{
mBillID = "0605";
mAccountCode = "应付业务支出-年金";
}
else
{
mBillID = "0603";
mAccountCode = "应付业务支出-满期";
}
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
mHeadDescription = mAccountCode + "," + mInsuredName + "生存领取费";
if(isExitInTab(tLCInsureAccTraceSchema.getSerialNo(), tLCInsureAccTraceSchema.getPolNo(), mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
return true;
}
// 生存领取表的财务付费操作
private boolean PayFeeDataDrawD()
{
//zy 需要兼容5.3的生存领取数据,即ljaget表中othernotype为1
// String tSql = "select * from LJAGet a where "
// + "ConfDate='"+ mToday+ "' and ManageCom like '"+ cManageCom+ "%' and OtherNoType in ('1','2') "
// + " and (paymode not in ( '4','9') or (paymode in ( '4','9') and exists(select 1 from ldbank where "
// + "bankcode = a.bankcode and rpad(trim(comcode),6,'0') = substr(a.managecom,0,6)))) ";
LJAGetSet tLJAGetSet = otoFBLSQL.findAllLJAGetByConfDateAndManangeComLikeAndCodeType(mToday,cManageCom,"bank");
for(int i = 1; i <= tLJAGetSet.size(); i++)
{
LJAGetSchema tLJAGetSchema = tLJAGetSet.get(i);
// if(tLJAGetSchema.getSumGetMoney()==0)
// {
// dealError("LJAGet", tLJAGetSchema.getActuGetNo(), tLJAGetSchema.getOtherNo(), "004", mVoucherType+mMatchID+i, "生存领取给付金额为非正数");
// continue;
// }
initVar();
mMatchID++;
mBussNo = tLJAGetSchema.getActuGetNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAGetSchema.getConfDate();
mSegment2 = tLJAGetSchema.getManageCom();
mManageCom = tLJAGetSchema.getManageCom().substring(0, 6);
if(!this.getDrawCode(mBussNo))
continue;
if(tLJAGetSchema.getSumGetMoney() > 0 || tLJAGetSchema.getSumGetMoney() < 0)
{
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetSchema.getSumGetMoney()));
if(tLJAGetSchema.getPayMode() != null)
{
if(!tLJAGetSchema.getPayMode().equals("") && !tLJAGetSchema.getPayMode().equals("1"))
{
if(tLJAGetSchema.getPayMode().equals("5"))
{
mBillID = "0813";
mAccountCode = "应付业务支出-内部转帐"; // 内部转账贷
}
else
{
mBillID = "0814";
mAccountCode = "银行存款-活期-人民币"; // 银行存款支
mAccountSubCode = "付" + tLJAGetSchema.getBankCode();
}
}
else
{
mBillID = "0815";
mAccountCode = "库存现金-人民币-业务";
}
}
else
{
mBillID = "0816";
mAccountCode = "库存现金-人民币-业务";
}
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
mHeadDescription = mAccountCode + mInsuredName + "生存领取费";
if(isExitInTab(tLJAGetSchema.getActuGetNo(), mPolNo, mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
// String sql = "select * from LJAGet a where "
// + "ConfDate='"+ mToday+ "' and ManageCom like '"+ cManageCom+ "%' and OtherNoType in ('1','2') "
// + "and paymode in ( '4','9') and bankcode is not null and exists(select 1 from ldbank where bankcode = a.bankcode and "
// + "rpad(trim(comcode),6,'0') <> substr(a.managecom,0,6)) ";
tLJAGetSet = otoFBLSQL.findAllLJAGetByConfDateAndManangeComLikeAndCodeTypeAndBankCodeIsNotNull(mToday,cManageCom,"bank");
for(int i = 1; i <= tLJAGetSet.size(); i++)
{
LJAGetSchema tLJAGetSchema = new LJAGetSchema();
tLJAGetSchema.setSchema(tLJAGetSet.get(i));
initVar();
mMatchID++;
mBussNo = tLJAGetSchema.getActuGetNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAGetSchema.getConfDate();
mSegment2 = tLJAGetSchema.getManageCom();
mManageCom = tLJAGetSchema.getManageCom().substring(0, 6);
if(!this.getDrawCode(mBussNo))
continue;
if(tLJAGetSchema.getSumGetMoney() > 0 || tLJAGetSchema.getSumGetMoney() < 0)
{
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetSchema.getSumGetMoney()));
if(tLJAGetSchema.getPayMode() != null)
{
if(!tLJAGetSchema.getPayMode().equals("") && !tLJAGetSchema.getPayMode().equals("1"))
{
if(tLJAGetSchema.getPayMode().equals("5"))
{
mBillID = "0870";
mAccountCode = "应付业务支出-内部转帐"; // 内部转账贷
}
else
{
mBillID = "0871";
mAccountCode = "其他应付款-资金中转-集中批付"; // 银行存款支
mAccountSubCode = "C" + mManageCom.substring(2, 4).concat("0000");
}
}
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
mHeadDescription = mAccountCode + mInsuredName + "生存领取费";
if(isExitInTab(tLJAGetSchema.getActuGetNo(), mPolNo, mBillID))
break;
OFInterfaceSchema ttOFInterfaceSchema = (OFInterfaceSchema)entry();
if(ttOFInterfaceSchema != null)
mOFInterfaceSet.add(ttOFInterfaceSchema);
dealLITranInfo();
}
// 分公司借记科目
// 取得机构对应的分公司
mManageCom = tLJAGetSchema.getManageCom().substring(0, 4).concat("00");
mSegment2 = mManageCom.concat("00");
mBillID = "0872";
mAccountCode = "其他应收款-资金中转-集中批付"; // 银行存款支
mAccountSubCode = "C" + tLJAGetSchema.getManageCom().substring(2, 6).concat("00");
mHeadDescription = mAccountCode + mInsuredName;
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
if(isExitInTab(tLJAGetSchema.getActuGetNo(),mPolNo, mBillID))
continue;
OFInterfaceSchema t1OFInterfaceSchema = new OFInterfaceSchema();
t1OFInterfaceSchema = (OFInterfaceSchema)entry();
if(t1OFInterfaceSchema != null)
mOFInterfaceSet.add(t1OFInterfaceSchema);
dealLITranInfo();
// 分公司贷记科目
mBillID = "0873";
mAccountCode = "银行存款-活期-人民币"; // 银行存款支
mAccountSubCode = "付" + tLJAGetSchema.getBankCode();
mHeadDescription = mAccountCode + mInsuredName;
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
if(isExitInTab(tLJAGetSchema.getActuGetNo(), mPolNo, mBillID))
continue;
OFInterfaceSchema t2OFInterfaceSchema = new OFInterfaceSchema();
t2OFInterfaceSchema = (OFInterfaceSchema)entry();
if(t2OFInterfaceSchema != null)
mOFInterfaceSet.add(t2OFInterfaceSchema);
dealLITranInfo();
}
}
return true;
}
// 临时退费表的借操作
private boolean PayFeeDataTempJ()
{
LJAGetTempFeeSQL ljaGetTempFeeSQL = SQLProxy.getInstance(LJAGetTempFeeSQL.class);
LJAGetTempFeeSet tLJAGetTempFeeSet = ljaGetTempFeeSQL.findAllByMakeDateAndManageComLike(mToday,cManageCom);
for(int i = 1; i <= tLJAGetTempFeeSet.size(); i++)
{
LJAGetTempFeeSchema tLJAGetTempFeeSchema = new LJAGetTempFeeSchema();
tLJAGetTempFeeSchema = tLJAGetTempFeeSet.get(i);
LJTempFeeDB tLJTempFeeDB = new LJTempFeeDB();
tLJTempFeeDB.setTempFeeNo(tLJAGetTempFeeSchema.getTempFeeNo());
tLJTempFeeDB.setTempFeeType(tLJAGetTempFeeSchema.getTempFeeType());
tLJTempFeeDB.setRiskCode(tLJAGetTempFeeSchema.getRiskCode());
if(!tLJTempFeeDB.getInfo())
{
dealError("LJAGetTempFee", tLJAGetTempFeeSchema.getActuGetNo(), tLJAGetTempFeeSchema.getTempFeeNo(), "002", mVoucherType+mMatchID+i, "暂收退费对应的收据号为"
+ tLJAGetTempFeeSchema.getTempFeeNo() + "的暂收信息不存在!");
continue;
}
if("CM".equals(tLJAGetTempFeeSchema.getFeeFinaType())) // 排除健康委托产品
{
dealError("LJAGetTempFee", tLJAGetTempFeeSchema.getActuGetNo(), tLJAGetTempFeeSchema.getTempFeeNo(), "013", mVoucherType+mMatchID+i, "健康委托产品退费不在该处提取凭证!");
continue;
}
if(tLJAGetTempFeeSchema.getGetMoney() <= 0)
{
dealError("LJAGetTempFee", tLJAGetTempFeeSchema.getActuGetNo(), tLJTempFeeDB.getOtherNo(), "004",
"007", "暂收退费的金额为非正数!");
continue;
}
LJAGetDB tLJAGetDB = new LJAGetDB();
tLJAGetDB.setActuGetNo(tLJAGetTempFeeSchema.getActuGetNo());
if(!tLJAGetDB.getInfo())
{
dealError("LJAGetTempFee", tLJAGetTempFeeSchema.getActuGetNo(), tLJAGetTempFeeSchema.getTempFeeNo(), "002", mVoucherType+mMatchID+i,
tLJAGetTempFeeSchema.getActuGetNo() + "的实付总表信息不存在!");
continue;
}
initVar();
mMatchID++;
mPolNo = tLJTempFeeDB.getOtherNo();
mContNo = tLJTempFeeDB.getOtherNo();
mBussNo = tLJAGetTempFeeSchema.getActuGetNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAGetTempFeeSchema.getMakeDate();
mRiskCode = tLJAGetTempFeeSchema.getRiskCode();
mSegment2 = tLJAGetTempFeeSchema.getManageCom();
mManageCom = tLJAGetTempFeeSchema.getManageCom().substring(0, 6);
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetTempFeeSchema.getGetMoney()));
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
if("1".equals(tLJAGetTempFeeSchema.getTempFeeType()))
{
mBillID = "0700";
mAccountCode = "暂收保费"; // 退首期保费
}
else
{
mBillID = "0701";
mAccountCode = "预收保费"; // 退续期保费
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
mBillID = "0702";
mAccountCode = "应付业务支出-暂收退费";
}
if(tLJAGetTempFeeSchema.getAPPntName() != null)
mHeadDescription = mAccountCode + mInsuredName;
else
mHeadDescription = mAccountCode;
if(isExitInTab(mBussNo, mPolNo, mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
return true;
}
// 临时退费表的代操作
private boolean PayFeeDataTempD()
{
// String tSql = "select * from LJAGetTempFee a "
// + "where ConfDate='"+ mToday+ "' and ManageCom like '"+ cManageCom+ "%' "
// + "and exists(select 1 from ljaget b where actugetno = a.actugetno "
// + "and (paymode not in ( '4','9') or (paymode in ( '4','9') and exists(select 1 from ldbank "
// + "where bankcode = b.bankcode and rpad(trim(comcode),6,'0') = substr(b.managecom,0,6)))))";
LJAGetTempFeeSet tLJAGetTempFeeSet = otoFBLSQL.findAllLJAGetTempFeeByConfDateAndManangeComLikeAndCodeType(mToday,cManageCom,"bank");
LJAGetSchema tLJAGetSchema = new LJAGetSchema();
for(int i = 0; i < tLJAGetTempFeeSet.size(); i++)
{
LJAGetTempFeeSchema tLJAGetTempFeeSchema = new LJAGetTempFeeSchema();
tLJAGetTempFeeSchema = tLJAGetTempFeeSet.get(i + 1);
if(tLJAGetTempFeeSchema.getGetMoney() <= 0)
{
dealError("LJAGetTempFee", tLJAGetTempFeeSchema.getActuGetNo(), tLJAGetTempFeeSchema.getTempFeeNo(), "004",
mVoucherType+mMatchID+i,"暂收退费金额为非正数");
continue;
}
LJAGetDB tLJAGetDB = new LJAGetDB();
tLJAGetDB.setActuGetNo(tLJAGetTempFeeSchema.getActuGetNo());
if(!tLJAGetDB.getInfo())
{
dealError("LJAGetTempFee", tLJAGetTempFeeSchema.getActuGetNo(), tLJAGetTempFeeSchema.getTempFeeNo(), "002",
mVoucherType+mMatchID+i, "LJAGet不存在LJAGetTempFee相应的记录");
continue;
}
tLJAGetSchema.setSchema(tLJAGetDB.getSchema());
LJTempFeeDB mLJTempFeeDB = new LJTempFeeDB();
mLJTempFeeDB.setTempFeeNo(tLJAGetTempFeeSchema.getTempFeeNo());
mLJTempFeeDB.setTempFeeType(tLJAGetTempFeeSchema.getTempFeeType());
mLJTempFeeDB.setRiskCode(tLJAGetTempFeeSchema.getRiskCode());
if(!mLJTempFeeDB.getInfo())
{
dealError("LJAGetTempFee", tLJAGetTempFeeSchema.getActuGetNo(), tLJAGetTempFeeSchema.getTempFeeNo(), "002",
mVoucherType+mMatchID+i, "LJTempFee不存在LJAGetTempFee对应的记录");
continue;
}
initVar();
mMatchID++;
mBussNo = tLJAGetTempFeeSchema.getActuGetNo();
mPolNo = mLJTempFeeDB.getOtherNo();
mContNo = mLJTempFeeDB.getOtherNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAGetTempFeeSchema.getConfDate();
mSegment2 = tLJAGetTempFeeSchema.getManageCom();
mManageCom = tLJAGetTempFeeSchema.getManageCom().substring(0, 6);
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetTempFeeSchema.getGetMoney()));
mSaleChnl = tranSaleChnl(tLJAGetSchema.getSaleChnl(), tLJAGetSchema.getAgentCode(), mLJTempFeeDB.getOtherNo());
mRiskCode = tLJAGetTempFeeSchema.getRiskCode();
if(tLJAGetTempFeeSchema.getGetMoney() > 0)
{
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
mAccountCode = "应付业务支出-暂收退费";
mBillID = "0820";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
if(tLJAGetSchema.getPayMode() != null)
{
if(!tLJAGetSchema.getPayMode().equals("") && !tLJAGetSchema.getPayMode().equals("1"))
{
if(tLJAGetSchema.getPayMode().equals("5"))
{
mBillID = "0821";
mAccountCode = "应付业务支出-内部转帐"; // 内部转账贷
}
else
{
mBillID = "0822";
mAccountCode = "银行存款-活期-人民币"; // 银行存款支
mAccountSubCode = "付" + tLJAGetSchema.getBankCode();
}
}
else
{
mBillID = "0823";
mAccountCode = "库存现金-人民币-业务";
}
}
else
{
mBillID = "0824";
mAccountCode = "库存现金-人民币-业务";
}
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
mHeadDescription = mAccountCode;
if(isExitInTab(tLJAGetTempFeeSchema.getActuGetNo(), mPolNo, mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
}
// String sql = "select * from LJAGetTempFee a "
// + "where ConfDate='"+ mToday+ "' and ManageCom like '"+ cManageCom+ "%' "
// + "and exists(select 1 from ljaget b where actugetno = a.actugetno and paymode in ( '4','9') "
// + "and (bankcode is not null and exists(select 1 from ldbank where bankcode = b.bankcode "
// + "and rpad(trim(comcode),6,'0') <> substr(b.managecom,0,6))))";
tLJAGetTempFeeSet = otoFBLSQL.findAllLJAGetTempFeeByConfDateAndManangeComLikeAndCodeTypeAndBankCodeIsNotNull(mToday,cManageCom,"bank");
tLJAGetSchema = new LJAGetSchema();
for(int i = 0; i < tLJAGetTempFeeSet.size(); i++)
{
LJAGetTempFeeSchema tLJAGetTempFeeSchema = new LJAGetTempFeeSchema();
tLJAGetTempFeeSchema = tLJAGetTempFeeSet.get(i + 1);
if(tLJAGetTempFeeSchema.getGetMoney() <= 0)
{
dealError("LJAGetTempFee", tLJAGetTempFeeSchema.getActuGetNo(), tLJAGetTempFeeSchema.getTempFeeNo(), "004",
mVoucherType+mMatchID+i,"暂收退费金额为非正数");
continue;
}
LJAGetDB tLJAGetDB = new LJAGetDB();
tLJAGetDB.setActuGetNo(tLJAGetTempFeeSchema.getActuGetNo());
if(!tLJAGetDB.getInfo())
{
dealError("LJAGetTempFee", tLJAGetTempFeeSchema.getActuGetNo(), tLJAGetTempFeeSchema.getTempFeeNo(), "002",
mVoucherType+mMatchID+i, "LJAGet不存在LJAGetTempFee相应的记录");
continue;
}
tLJAGetSchema.setSchema(tLJAGetDB.getSchema());
LJTempFeeDB mLJTempFeeDB = new LJTempFeeDB();
mLJTempFeeDB.setTempFeeNo(tLJAGetTempFeeSchema.getTempFeeNo());
mLJTempFeeDB.setTempFeeType(tLJAGetTempFeeSchema.getTempFeeType());
mLJTempFeeDB.setRiskCode(tLJAGetTempFeeSchema.getRiskCode());
if(!mLJTempFeeDB.getInfo())
{
dealError("LJAGetTempFee", tLJAGetTempFeeSchema.getActuGetNo(), tLJAGetTempFeeSchema.getTempFeeNo(), "002",
mVoucherType+mMatchID+i, "LJTempFee不存在LJAGetTempFee对应的记录");
continue;
}
initVar();
mMatchID++;
mBussNo = tLJAGetTempFeeSchema.getActuGetNo();
mPolNo = mLJTempFeeDB.getOtherNo();
mContNo = mLJTempFeeDB.getOtherNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAGetTempFeeSchema.getConfDate();
mSegment2 = tLJAGetTempFeeSchema.getManageCom();
mManageCom = tLJAGetTempFeeSchema.getManageCom().substring(0, 6);
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetTempFeeSchema.getGetMoney()));
mSaleChnl = tranSaleChnl(tLJAGetSchema.getSaleChnl(), tLJAGetSchema.getAgentCode(), mLJTempFeeDB.getOtherNo());
mRiskCode = tLJAGetTempFeeSchema.getRiskCode();
if(tLJAGetTempFeeSchema.getGetMoney() > 0)
{
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
mAccountCode = "应付业务支出-暂收退费";
mBillID = "0874";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
if(tLJAGetSchema.getPayMode() != null)
{
if(!tLJAGetSchema.getPayMode().equals("") && !tLJAGetSchema.getPayMode().equals("1"))
{
if(tLJAGetSchema.getPayMode().equals("5"))
{
mBillID = "0875";
mAccountCode = "应付业务支出-内部转帐"; // 内部转账贷
}
else
{
mBillID = "0876";
mAccountCode = "其他应付款-资金中转-集中批付"; // 银行存款支
mAccountSubCode = "C" + mManageCom.substring(2, 4).concat("0000");
}
}
}
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
mHeadDescription = mAccountCode;
if(isExitInTab(tLJAGetTempFeeSchema.getActuGetNo(), mPolNo, mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
// 分公司借记科目
// 取得机构对应的分公司
mManageCom = tLJAGetTempFeeSchema.getManageCom().substring(0, 4).concat("00");
mSegment2 = mManageCom.concat("00");
mBillID = "0877";
mAccountCode = "其他应收款-资金中转-集中批付"; // 银行存款支
mAccountSubCode = "C" + tLJAGetTempFeeSchema.getManageCom().substring(2, 6).concat("00");
mHeadDescription = mAccountCode + mInsuredName;
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
if(isExitInTab(mBussNo, mPolNo, mBillID))
continue;
OFInterfaceSchema t1OFInterfaceSchema = (OFInterfaceSchema)entry();
if(t1OFInterfaceSchema != null)
mOFInterfaceSet.add(t1OFInterfaceSchema);
dealLITranInfo();
// 分公司贷记科目
mBillID = "0878";
mAccountCode = "银行存款-活期-人民币"; // 银行存款支
mAccountSubCode = "付" + tLJAGetSchema.getBankCode();
mHeadDescription = mAccountCode + mInsuredName;
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
if(isExitInTab(mBussNo, mPolNo, mBillID))
continue;
OFInterfaceSchema t2OFInterfaceSchema = new OFInterfaceSchema();
t2OFInterfaceSchema = (OFInterfaceSchema)entry();
if(t2OFInterfaceSchema != null)
mOFInterfaceSet.add(t2OFInterfaceSchema);
dealLITranInfo();
}
}
return true;
}
// 理赔退费表的代操作
private boolean PayFeeDataClaimD()
{
// String tSql = "select * from LJAGet a "
// + "where ConfDate='"+ mToday+ "' and ManageCom like '"+ cManageCom+ "%' "
// + "and OtherNoType='5' "
// + "and (paymode not in ( '4','9') or (paymode in ( '4','9') and exists(select 1 from ldbank "
// + "where bankcode = a.bankcode and rpad(trim(comcode),6,'0') = substr(a.managecom,0,6))))";
LJAGetSet tLJAGetSet = new LJAGetSet();
tLJAGetSet = otoFBLSQL.findAllLJAGetByConfDateAndManangeComLikeAndOtherNoTypeAndCodeType(mToday,cManageCom,"5","bank");
for(int i = 1; i <= tLJAGetSet.size(); i++)
{
LJAGetSchema tLJAGetSchema = new LJAGetSchema();
tLJAGetSchema = tLJAGetSet.get(i);
initVar();
mMatchID++;
mBussNo = tLJAGetSchema.getActuGetNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAGetSchema.getConfDate();
mSegment2 = tLJAGetSchema.getManageCom();
mManageCom = tLJAGetSchema.getManageCom().substring(0, 6);
// if(tLJAGetSchema.getSumGetMoney() == 0)
// {
// dealError("LJAGet", mBussNo, tLJAGetSchema.getOtherNo(), "004", mVoucherType+mMatchID+i, "理赔实付金额为0");
// continue;
// }
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
if(!getClaimCode(tLJAGetSchema.getActuGetNo(),tLJAGetSchema.getManageCom(),tLJAGetSchema.getConfDate(),"G"))
break;
}
else
{
//当出现豁免垫交部分垫交的财务数据时,总表的数据为0,不做下列科目的处理
if(tLJAGetSchema.getSumGetMoney() > 0 || tLJAGetSchema.getSumGetMoney() < 0)
{
if(tLJAGetSchema.getPayMode() != null)
{
if(!tLJAGetSchema.getPayMode().equals("") && !tLJAGetSchema.getPayMode().equals("1"))
{
if(tLJAGetSchema.getPayMode().equals("5"))
{
mBillID = "0831";
mAccountCode = "应付业务支出-内部转帐"; // 内部转账贷
}
else
{
mBillID = "0832";
mAccountCode = "银行存款-活期-人民币"; // 银行存款支
mAccountSubCode = "付" + tLJAGetSchema.getBankCode();
}
}
else
{
mBillID = "0833";
mAccountCode = "库存现金-人民币-业务";
}
}
else
{
mBillID = "0834";
mAccountCode = "库存现金-人民币-业务";
}
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetSchema.getSumGetMoney()));
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
mHeadDescription = mAccountCode + mInsuredName.trim();
if(isExitInTab(tLJAGetSchema.getActuGetNo(), mPolNo, mBillID))
continue;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
}
}
// String sql = "select * from LJAGet a "
// + "where ConfDate='"+ mToday+ "' and ManageCom like '"+ cManageCom+ "%' "
// + "and OtherNoType='5' and paymode in ( '4','9') "
// + "and bankcode is not null and exists(select 1 from ldbank where bankcode = a.bankcode "
// + "and rpad(trim(comcode),6,'0') <> substr(a.managecom,0,6))";
tLJAGetSet = new LJAGetSet();
tLJAGetSet = otoFBLSQL.findAllLJAGetByConfDateAndManangeComLike(mToday,cManageCom,"5","bank");
for(int i = 1; i <= tLJAGetSet.size(); i++)
{
LJAGetSchema tLJAGetSchema = new LJAGetSchema();
tLJAGetSchema = tLJAGetSet.get(i);
initVar();
mMatchID++;
boolean cFlag=true;
mBussNo = tLJAGetSchema.getActuGetNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAGetSchema.getConfDate();
mSegment2 = tLJAGetSchema.getManageCom();
mManageCom = tLJAGetSchema.getManageCom().substring(0, 6);
// if(tLJAGetSchema.getSumGetMoney() == 0)
// {
// dealError("LJAGet", mBussNo, tLJAGetSchema.getOtherNo(), "004", mVoucherType+mMatchID+i, "理赔实付金额为0");
// continue;
// }
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
if(!getClaimCode(tLJAGetSchema.getActuGetNo(),tLJAGetSchema.getManageCom(),tLJAGetSchema.getConfDate(),"G"))
{
cFlag=false;
break;
}
}
else
{
if(tLJAGetSchema.getSumGetMoney() > 0 || tLJAGetSchema.getSumGetMoney() < 0)
{
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetSchema.getSumGetMoney()));
mBillID = "0882";
mAccountCode = "其他应付款-资金中转-集中批付"; // 银行存款支
mAccountSubCode = "C" + mManageCom.substring(2, 4).concat("0000");
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
mHeadDescription = mAccountCode + mInsuredName.trim();
if(isExitInTab(tLJAGetSchema.getActuGetNo(), mPolNo, mBillID))
{
cFlag=false;
break;
}
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
}
// 分公司借记科目
// 取得机构对应的分公司
if(cFlag)
{
if(tLJAGetSchema.getSumGetMoney() > 0 || tLJAGetSchema.getSumGetMoney() < 0)
{
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetSchema.getSumGetMoney()));
mManageCom = tLJAGetSchema.getManageCom().substring(0, 4).concat("00");
mSegment2 = mManageCom.concat("00");
mBillID = "0883";
mAccountCode = "其他应收款-资金中转-集中批付"; // 银行存款支
mAccountSubCode = "C" + tLJAGetSchema.getManageCom().substring(2, 6).concat("00");
mHeadDescription = mAccountCode + mInsuredName;
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
if(isExitInTab(tLJAGetSchema.getActuGetNo(), mPolNo, mBillID))
continue;
OFInterfaceSchema t1OFInterfaceSchema = (OFInterfaceSchema)entry();
if(t1OFInterfaceSchema != null)
mOFInterfaceSet.add(t1OFInterfaceSchema);
dealLITranInfo();
// 分公司贷记科目
mBillID = "0884";
mAccountCode = "银行存款-活期-人民币"; // 银行存款支
mAccountSubCode = "付" + tLJAGetSchema.getBankCode();
mHeadDescription = mAccountCode + mInsuredName;
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
if(isExitInTab(tLJAGetSchema.getActuGetNo(), mPolNo, mBillID))
continue;
OFInterfaceSchema t2OFInterfaceSchema = new OFInterfaceSchema();
t2OFInterfaceSchema = (OFInterfaceSchema)entry();
if(t2OFInterfaceSchema != null)
mOFInterfaceSet.add(t2OFInterfaceSchema);
dealLITranInfo();
}
}
}
//主要针对理赔回滚产生的实收总表,理赔加费核销的保费收入在保费收入凭证中进行提取
//查询实收总表
LJAPaySet tLJAPaySet = new LJAPaySet();
tLJAPaySet=otoFBLSQL.findAllLJAPayByConfDateAndManangeComLikeAndIncomeType(mToday,cManageCom,"5");
for (int i=1;i<=tLJAPaySet.size();i++)
{
LJAPaySchema tLJAPaySchema = new LJAPaySchema();
tLJAPaySchema.setSchema(tLJAPaySet.get(i));
// if(tLJAPaySchema.getSumActuPayMoney() == 0)
// {
// dealError("LJAPay", tLJAPaySchema.getPayNo(), tLJAPaySchema.getOtherNo(), "004", mVoucherType+mMatchID+i, "理赔实收金额为0");
// continue;
// }
initVar();
mMatchID ++ ;
mBussNo = tLJAPaySchema.getPayNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAPaySchema.getConfDate();
mSegment2 = tLJAPaySchema.getManageCom();
mManageCom = tLJAPaySchema.getManageCom().substring(0,6);
if(!getClaimCode(tLJAPaySchema.getPayNo(),tLJAPaySchema.getManageCom(),tLJAPaySchema.getConfDate(),"P"))
continue;
if(tLJAPaySchema.getSumActuPayMoney()>0 || tLJAPaySchema.getSumActuPayMoney()<0)
{
mBillID = "08116";
mAccountCode = "预收保费"; //续期暂转
mHeadDescription = "转预收保费";
tmoney = new DecimalFormat("0.00").format(new Double(tLJAPaySchema.getSumActuPayMoney()));
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
if (isExitInTab(tLJAPaySchema.getPayNo(),mPolNo,mBillID))
continue;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema) entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
return true;
}
// 对红利给付实付表的业务操作;
private boolean PayFeeDataBonusGetJ()
{
// 处理现金领取、抵交保费、增额交清、累计生息的应付处理
ArrayList<String> moneyType = new ArrayList<String>(Arrays.asList("HL", "HLLX","DJLX","YCLX"));
LCInsureAccTraceSet tLCInsureAccTraceSet = lcInsureAccTraceSQL.findAllByMakeDateAndManageComAndMoneyTypeAndMoneyTypeInAndGrpContNo(
mToday,cManageCom,moneyType,"00000000000000000000");
for(int i = 1; i <= tLCInsureAccTraceSet.size(); i++)
{
LCInsureAccTraceSchema tLCInsureAccTraceSchema = new LCInsureAccTraceSchema();
tLCInsureAccTraceSchema = tLCInsureAccTraceSet.get(i);
if(tLCInsureAccTraceSchema.getMoney() == 0)
{
dealError("LCInsureAccTrace", tLCInsureAccTraceSchema.getContNo(), tLCInsureAccTraceSchema.getRiskCode(), "004",
mVoucherType+mMatchID+i, "红利应付金额为非正数!");
continue;
}
initVar();
mMatchID++;
mPolNo = tLCInsureAccTraceSchema.getPolNo();
mContNo = tLCInsureAccTraceSchema.getContNo();
mBussNo = tLCInsureAccTraceSchema.getSerialNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLCInsureAccTraceSchema.getMakeDate();
mSegment2 = tLCInsureAccTraceSchema.getManageCom();
mManageCom = tLCInsureAccTraceSchema.getManageCom().substring(0, 6);
tmoney = new DecimalFormat("0.00").format(new Double(tLCInsureAccTraceSchema.getMoney()));
if(!this.setPolInfo(mContNo,tLCInsureAccTraceSchema.getRiskCode(), "LCInsureAccTrace", mVoucherType+mMatchID+i))
continue;
LMRiskAppDB mLMRiskAppDB = new LMRiskAppDB();
mLMRiskAppDB.setRiskCode(mRiskCode);
if(mLMRiskAppDB.getInfo())
{
if("1".equals(mLMRiskAppDB.getHealthType()))
{
dealError("LCInsureAccTrace", mBussNo, mPolNo, "013",mVoucherType+mMatchID+i, "健康委托产品不在该处进行凭证提取!");
continue;
}
}
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
if("HLLX".equals(tLCInsureAccTraceSchema.getMoneyType())) // 红利累计生息账户中的累计生息利息
{
mBillID = "0714";
// mAccountCode = "保户红利支出-红利利息";
mAccountCode = "保单红利支出-红利利息";
}
if("DJLX".equals(tLCInsureAccTraceSchema.getMoneyType()) || "YCLX".equals(tLCInsureAccTraceSchema.getMoneyType()))
{
mBillID = "0719";
mAccountCode = "利息支出-延滞领取利息";
}
if("HL".equals(tLCInsureAccTraceSchema.getMoneyType()))
{
mBillID = "0711";
mAccountCode = "应付保单红利-保单红利";
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
if("HLLX".equals(tLCInsureAccTraceSchema.getMoneyType()) ||
("HL".equals(tLCInsureAccTraceSchema.getMoneyType()) && "000001".equals(tLCInsureAccTraceSchema.getInsuAccNo())))
{
mBillID = "0715";
mAccountCode = "应付保单红利-累计生息";
}
else
{
mBillID = "0712";
mAccountCode = "应付业务支出-红利";
}
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
mHeadDescription = mAccountCode + mInsuredName + ",保单号" + mContNo;
if(isExitInTab(tLCInsureAccTraceSchema.getSerialNo(), tLCInsureAccTraceSchema.getPolNo(), mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
//处理累计生息的红利和增额缴清的红利
LJABonusGetSQL ljaBonusGetSQL = SQLProxy.getInstance(LJABonusGetSQL.class);
ArrayList<String> feeFinaType = new ArrayList<>(Arrays.asList("LJTF","HLTF"));
LJABonusGetSet tLJABonusGetSet = ljaBonusGetSQL.findAllByMakeDateAndManageComLikeAndFeeFinaTypeIn(mToday,cManageCom,feeFinaType);
for (int i =0;i<tLJABonusGetSet.size();i++)
{
LJABonusGetSchema tLJABonusGetSchema = new LJABonusGetSchema();
tLJABonusGetSchema = tLJABonusGetSet.get(i+1);
if (tLJABonusGetSchema.getGetMoney()==0)
{
dealError("LJABonusGet", tLJABonusGetSchema.getContNo(), tLJABonusGetSchema.getRiskCode(), "004",
mVoucherType+mMatchID+i, "红利应付金额为非正数!");
continue;
}
initVar();
mMatchID ++ ;
mPolNo = tLJABonusGetSchema.getPolNo();
mBussNo =tLJABonusGetSchema.getActuGetNo();
mContNo =tLJABonusGetSchema.getContNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJABonusGetSchema.getMakeDate();
mSegment2 = tLJABonusGetSchema.getManageCom();
mManageCom = tLJABonusGetSchema.getManageCom().substring(0,6);
tmoney = new DecimalFormat("0.00").format(new Double(tLJABonusGetSchema.getGetMoney()) );
LMRiskAppDB mLMRiskAppDB = new LMRiskAppDB();
mLMRiskAppDB.setRiskCode(tLJABonusGetSchema.getRiskCode());
if(mLMRiskAppDB.getInfo())
{
if("1".equals(mLMRiskAppDB.getHealthType()))
{
dealError("LJABonusGet", mBussNo, mPolNo, "013",mVoucherType+mMatchID+i, "健康委托产品不在该处进行凭证提取!");
continue;
}
}
if (!setPolInfo(mContNo,tLJABonusGetSchema.getRiskCode(), "LJABonusGet", mVoucherType+mMatchID+i))
continue;
for ( int j = 1; j <=2; j++)
{
if (j == 1)
{
if("HLTF".equals(tLJABonusGetSchema.getFeeFinaType()))
{
mBillID = "0711";
// mAccountCode = "应付保户红利-保单红利"; //应付保户红利保单红利
mAccountCode = "应付保单红利-保单红利";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
if("LJTF".equals(tLJABonusGetSchema.getFeeFinaType()))
//红利累计生息账户中的红利领取借方为应付保户红利--累计生息红利
{
mBillID = "0710";
mAccountCode = "应付保单红利-累计生息";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
}
else
{
mBillID = "0712";
mAccountCode = "应付业务支出-红利";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
mHeadDescription = mAccountCode + mInsuredName + ",保单号" + mContNo;
if (isExitInTab(mBussNo,mPolNo,mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema) entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
//处理清算累计生息的红利
// tSql = "select * from LJAGetEndorse where MakeDate='"+mToday+"' and ManageCom like '"+cManageCom+"%' and feefinatype='LJTF'";
//
// LJAGetEndorseDB tLJAGetEndorseDB = new LJAGetEndorseDB();
// LJAGetEndorseSet tLJAGetEndorseSet =tLJAGetEndorseDB.executeQuery(tSql);
// for (int i =0;i<tLJAGetEndorseSet.size();i++)
// {
// LJAGetEndorseSchema tLJAGetEndorseSchema = new LJAGetEndorseSchema();
// tLJAGetEndorseSchema = tLJAGetEndorseSet.get(i+1);
// if (tLJAGetEndorseSchema.getGetMoney()==0)
// {
// dealError("LJAGetEndorse", tLJAGetEndorseSchema.getContNo(), tLJAGetEndorseSchema.getRiskCode(), "004",
// mVoucherType+mMatchID+i, "红利应付金额为非正数!");
// continue;
// }
//
// initVar();
// mMatchID ++ ;
// mPolNo = tLJAGetEndorseSchema.getPolNo();
// mBussNo =tLJAGetEndorseSchema.getActuGetNo();
// mContNo =tLJAGetEndorseSchema.getContNo();
// mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
// mTransDate = tLJAGetEndorseSchema.getMakeDate();
// mSegment2 = tLJAGetEndorseSchema.getManageCom();
// mManageCom = tLJAGetEndorseSchema.getManageCom().substring(0,6);
// tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetEndorseSchema.getGetMoney()) );
// LMRiskAppDB mLMRiskAppDB = new LMRiskAppDB();
// mLMRiskAppDB.setRiskCode(tLJAGetEndorseSchema.getRiskCode());
// if(mLMRiskAppDB.getInfo())
// {
// if("1".equals(mLMRiskAppDB.getHealthType()))
// {
// dealError("LJAGetEndorse", mBussNo, mPolNo, "013",mVoucherType+mMatchID+i, "健康委托产品不在该处进行凭证提取!");
// continue;
// }
// }
// if (!setPolInfo(mContNo,"", "LJAGetEndorse", mVoucherType+mMatchID+i))
// continue;
// for ( int j = 1; j <=2; j++)
// {
// if (j == 1)
// {
// //红利累计生息账户中的红利领取借方为应付保户红利--累计生息红利
// mBillID = "0710";
// mAccountCode = "应付保单红利-累计生息";
// mEnteredDR = String.valueOf(tmoney);
// mEnteredCR = "";
// }
// else
// {
// mBillID = "0712";
// mAccountCode = "应付业务支出-红利";
// mEnteredDR = "";
// mEnteredCR = String.valueOf(tmoney);
// }
//
// mHeadDescription = mAccountCode + mInsuredName + ",保单号" + mContNo;
// if (isExitInTab(tLJAGetEndorseSchema.getActuGetNo(),tLJAGetEndorseSchema.getPolNo(),mBillID))
// break;
//
// OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema) entry();
// if(tOFInterfaceSchema != null)
// mOFInterfaceSet.add(tOFInterfaceSchema);
//
// dealLITranInfo();
// }
// }
// 团单和个单的红利分开处理,团单作为汇总数据记入凭证 modify by wentao 2007-06-20
ArrayList<String> moneyType1 = new ArrayList<>(Arrays.asList("HL","HLLX"));
SSRS tssrs = otoFBLSQL.getGrpContNoAndManangeComByMakeDateAndManageComLikeAndMoneyTypeIn(mToday,cManageCom,moneyType1);
if(tssrs == null)
{
dealError("LCInsureAccTrace", "null", "null", "002", "007","查询团单帐户红利失败");
return true; // 继续提取别的科目段数据
}
for(int i = 1; i <= tssrs.getMaxRow(); i++)
{
initVar();
mMatchID++;
mPolNo = tssrs.GetText(i, 3) + "(" + mToday + ")"; // 因多期红利之间只有serialno能区分开各期数据,此时借用日期+金额类型来区分
mContNo = tssrs.GetText(i, 1);
mBussNo = tssrs.GetText(i, 1);
mSegment2 = tssrs.GetText(i, 3);
mManageCom = tssrs.GetText(i, 3).substring(0, 6);
mAccountingDate = mToday;
mTransDate = mToday;
tmoney = new DecimalFormat("0.00").format(new Double(tssrs.GetText(i, 5)));
if(Double.parseDouble(tmoney) <= 0)
{
dealError("LCInsureAccTrace", mBussNo, mPolNo, "004", mVoucherType+mMatchID+i,
"团单帐户红利金额为非正数");
continue;
}
// LCGrpPolBL tLCGrpPolBL = new LCGrpPolBL();
// tLCGrpPolBL.setGrpContNo(mContNo);
if(lcGrpPolSQL.findAllByGrpContNoAndRiskCode(mContNo,tssrs.GetText(i, 2)).size()<=0)
{
dealError("LCGRPPOL", mBussNo, mPolNo, "001", mVoucherType+mMatchID+i,"保单号为" + mContNo + "对应保单信息不存在");
continue;
}
else
{
LCGrpPolSchema tLCGrpPolSchema = lcGrpPolSQL.findAllByGrpContNoAndRiskCode(mContNo,tssrs.GetText(i, 2)).get(1);
mRiskCode = tLCGrpPolSchema.getRiskCode();
mSaleChnl = tranSaleChnl(tLCGrpPolSchema.getSaleChnl(), tLCGrpPolSchema.getAgentCode(), tLCGrpPolSchema.getGrpContNo());
mInsuredName = tLCGrpPolSchema.getGrpName();
}
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
if(tssrs.GetText(i, 3).equals("HL"))
{
mBillID = "0716";
mAccountCode = "应付保单红利-保单红利";
}
else
{
mBillID = "0717";
// mAccountCode = "保户红利支出-红利利息"; // 保户红利利息
mAccountCode = "保单红利支出-红利利息";
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
mBillID = "0718";
mAccountCode = "应付保单红利-累计生息";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
mHeadDescription = mAccountCode + mInsuredName;
if(isExitInTab(mBussNo, mPolNo, mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
return true;
}
// 对其他给付实付表的业务操作;
private boolean PayFeeDataOtherJ()
{
LJAGetOtherSQL ljaGetOtherSQL = SQLProxy.getInstance(LJAGetOtherSQL.class);
LJAGetOtherSet tLJAGetOtherSet = ljaGetOtherSQL.findAllByMakeDateAndManageComLike(mToday,cManageCom);
for(int i = 0; i < tLJAGetOtherSet.size(); i++)
{
LJAGetOtherSchema tLJAGetOtherSchema = new LJAGetOtherSchema();
tLJAGetOtherSchema = tLJAGetOtherSet.get(i + 1);
if(tLJAGetOtherSchema.getGetMoney() <= 0)
{
dealError("LJAGetOther", tLJAGetOtherSchema.getActuGetNo(), tLJAGetOtherSchema.getOtherNo(), "004",
mVoucherType+mMatchID+i, "溢交应付金额为非正数!");
continue;
}
if("CM".equals(tLJAGetOtherSchema.getFeeFinaType()))
{
dealError("LJAGetOther", tLJAGetOtherSchema.getActuGetNo(), tLJAGetOtherSchema.getOtherNo(), "013", mVoucherType+mMatchID+i,
"该产品为健康委托产品,不在此进行凭证提取!");
continue;
}
LJAGetDB tLJAGetDB = new LJAGetDB();
tLJAGetDB.setActuGetNo(tLJAGetOtherSchema.getActuGetNo());
if(!tLJAGetDB.getInfo())
{
dealError("LJAGetOther", tLJAGetOtherSchema.getActuGetNo(), tLJAGetOtherSchema.getOtherNo(), "002",
mVoucherType+mMatchID+i, tLJAGetOtherSchema.getActuGetNo()+"实付总表记录不存在!");
continue;
}
initVar();
mMatchID++;
mPolNo = tLJAGetOtherSchema.getOtherNo();
mContNo = tLJAGetOtherSchema.getOtherNo();
mBussNo = tLJAGetOtherSchema.getActuGetNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAGetOtherSchema.getMakeDate();
mSegment2 = tLJAGetOtherSchema.getManageCom();
mManageCom = tLJAGetOtherSchema.getManageCom().substring(0, 6);
if(!this.setPolInfo(mContNo,"", "LJAGetOther", mVoucherType+mMatchID+i))
continue;
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetOtherSchema.getGetMoney()));
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
mBillID = "0720";
mAccountCode = "预收保费"; // 其它支出
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mInsuredName + "的其它给付";
}
else
{
mBillID = "0721";
mAccountCode = "应付业务支出-溢额退费";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
mHeadDescription = mInsuredName + "的业务其它给付";
}
if(isExitInTab(tLJAGetOtherSchema.getActuGetNo(), mPolNo, mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
return true;
}
// 对红利给付实付表的财务付费操作;
private boolean PayFeeDataBonusGetD()
{
// String tSql = "select * from LJABonusGet a "
// + "where ConfDate='"+ mToday+ "' and ManageCom like '"+ cManageCom+ "%' "
// + "and exists(select 1 from ljaget b where actugetno = a.actugetno "
// + "and (paymode not in ( '4','9') or (paymode in ( '4','9') and exists(select 1 from ldbank "
// + "where bankcode = b.bankcode and rpad(trim(comcode),6,'0') = substr(b.managecom,0,6)))))";
LJABonusGetSet tLJABonusGetSet = otoFBLSQL.findAllLJABonusGetByConfDateAndManangeComLikeAndCodeType(mToday,cManageCom,"bank");
LJAGetSchema tLJAGetSchema = new LJAGetSchema();
for(int i = 0; i < tLJABonusGetSet.size(); i++)
{
LJABonusGetSchema tLJABonusGetSchema = new LJABonusGetSchema();
tLJABonusGetSchema = tLJABonusGetSet.get(i + 1);
if(tLJABonusGetSchema.getGetMoney() == 0)
{
dealError("LJABonusGet", tLJABonusGetSchema.getActuGetNo(), tLJABonusGetSchema.getPolNo(), "004",
mVoucherType+mMatchID+i, "红利给付金额为非正数");
continue;
}
LJAGetDB tLJAGetDB = new LJAGetDB();
tLJAGetDB.setActuGetNo(tLJABonusGetSchema.getActuGetNo());
if(!tLJAGetDB.getInfo())
{
dealError("LJABonusGet", tLJABonusGetSchema.getActuGetNo(), tLJABonusGetSchema.getPolNo(), "002",
mVoucherType+mMatchID+i, "LJAGet不存在相应的记录");
continue;
}
tLJAGetSchema.setSchema(tLJAGetDB.getSchema());
initVar();
mMatchID++;
mPolNo = tLJABonusGetSchema.getPolNo();
mContNo = tLJABonusGetSchema.getContNo();
mBussNo = tLJABonusGetSchema.getActuGetNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJABonusGetSchema.getConfDate();
mSegment2 = tLJABonusGetSchema.getManageCom();
mManageCom = tLJABonusGetSchema.getManageCom().substring(0, 6);
tmoney = new DecimalFormat("0.00").format(new Double(tLJABonusGetSchema.getGetMoney()));
if(!setPolInfo(mContNo,tLJABonusGetSchema.getRiskCode(), "LJABonusGet", mVoucherType+mMatchID+i))
continue;
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
mBillID = "0840";
mAccountCode = "应付业务支出-红利";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
if(tLJAGetSchema.getPayMode() != null)
{
if(!tLJAGetSchema.getPayMode().equals("") && !tLJAGetSchema.getPayMode().equals("1"))
{
if(tLJAGetSchema.getPayMode().equals("5"))
{
mBillID = "0841";
mAccountCode = "应付业务支出-内部转帐"; // 内部转账贷
}
else
{
mBillID = "0842";
mAccountCode = "银行存款-活期-人民币"; // 银行存款支
mAccountSubCode = "付" + tLJAGetSchema.getBankCode();
}
}
else
{
mBillID = "0843";
mAccountCode = "库存现金-人民币-业务";
}
}
else
{
mBillID = "0844";
mAccountCode = "库存现金-人民币-业务";
}
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
mHeadDescription = mAccountCode + mInsuredName;
if(isExitInTab(mBussNo, mPolNo, mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
// String sql = "select * from LJABonusGet a "
// + "where ConfDate='"+ mToday+ "' and ManageCom like '"+ cManageCom+ "%' "
// + "and exists(select 1 from ljaget b where actugetno = a.actugetno and paymode in ( '4','9') "
// + "and bankcode is not null and exists(select 1 from ldbank where bankcode = b.bankcode "
// + "and rpad(trim(comcode),6,'0') <> substr(b.managecom,0,6)))";
tLJABonusGetSet = otoFBLSQL.findAllLJABonusGetByConfDateAndManangeComLikeAndCodeTypeAndBankCodeIsNotNull(mToday,cManageCom,"bank");
tLJAGetSchema = new LJAGetSchema();
for(int i = 0; i < tLJABonusGetSet.size(); i++)
{
LJABonusGetSchema tLJABonusGetSchema = new LJABonusGetSchema();
tLJABonusGetSchema = tLJABonusGetSet.get(i + 1);
if(tLJABonusGetSchema.getGetMoney() == 0)
{
dealError("LJABonusGet", tLJABonusGetSchema.getActuGetNo(), tLJABonusGetSchema.getPolNo(), "004",
mVoucherType+mMatchID+i, "红利给付金额为非正数");
continue;
}
LJAGetDB tLJAGetDB = new LJAGetDB();
tLJAGetDB.setActuGetNo(tLJABonusGetSchema.getActuGetNo());
if(!tLJAGetDB.getInfo())
{
dealError("LJABonusGet", tLJABonusGetSchema.getActuGetNo(), tLJABonusGetSchema.getPolNo(), "002",
mVoucherType+mMatchID+i, "LJAGet不存在相应的记录");
continue;
}
tLJAGetSchema.setSchema(tLJAGetDB.getSchema());
initVar();
mMatchID++;
mPolNo = tLJABonusGetSchema.getPolNo();
mContNo = tLJABonusGetSchema.getContNo();
mBussNo = tLJABonusGetSchema.getActuGetNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJABonusGetSchema.getConfDate();
mSegment2 = tLJABonusGetSchema.getManageCom();
mManageCom = tLJABonusGetSchema.getManageCom().substring(0, 6);
tmoney = new DecimalFormat("0.00").format(new Double(tLJABonusGetSchema.getGetMoney()));
if(!setPolInfo(mContNo,tLJABonusGetSchema.getRiskCode(), "LJABonusGet", mVoucherType+mMatchID+i))
continue;
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
mBillID = "0885";
mAccountCode = "应付业务支出-红利";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
if(tLJAGetSchema.getPayMode() != null)
{
if(!tLJAGetSchema.getPayMode().equals("") && !tLJAGetSchema.getPayMode().equals("1"))
{
if(tLJAGetSchema.getPayMode().equals("5"))
{
mBillID = "0886";
mAccountCode = "应付业务支出-内部转帐"; // 内部转账贷
}
else
{
mBillID = "0887";
mAccountCode = "其他应付款-资金中转-集中批付"; // 银行存款支
mAccountSubCode = "C" + mManageCom.substring(2, 4).concat("0000");
}
}
}
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
mHeadDescription = mAccountCode + mInsuredName;
if(isExitInTab(tLJABonusGetSchema.getActuGetNo(), mPolNo, mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
// 分公司借记科目
// 取得机构对应的分公司
mManageCom = tLJABonusGetSchema.getManageCom().substring(0, 4).concat("00");
mSegment2 = mManageCom.concat("00");
mBillID = "0888";
mAccountCode = "其他应收款-资金中转-集中批付"; // 银行存款支
mAccountSubCode = "C" + tLJABonusGetSchema.getManageCom().substring(2, 6).concat("00");
mHeadDescription = mAccountCode + mInsuredName;
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
if(isExitInTab(mBussNo, mPolNo, mBillID))
continue;
OFInterfaceSchema t1OFInterfaceSchema = (OFInterfaceSchema)entry();
if(t1OFInterfaceSchema != null)
mOFInterfaceSet.add(t1OFInterfaceSchema);
dealLITranInfo();
// 分公司贷记科目
mBillID = "0889";
mAccountCode = "银行存款-活期-人民币"; // 银行存款支
mAccountSubCode = "付" + tLJAGetSchema.getBankCode();
mHeadDescription = mAccountCode + mInsuredName;
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
if(isExitInTab(mBussNo, mPolNo, mBillID))
continue;
OFInterfaceSchema t2OFInterfaceSchema = new OFInterfaceSchema();
t2OFInterfaceSchema = (OFInterfaceSchema)entry();
if(t2OFInterfaceSchema != null)
mOFInterfaceSet.add(t2OFInterfaceSchema);
dealLITranInfo();
}
return true;
}
// 对其它给付实付表的财务付费操作;
private boolean PayFeeDataOtherGetD()
{
// String tSql = "select * from LJAGetOther a "
// + "where ConfDate='"+ mToday+ "' and ManageCom like '"+ cManageCom+ "%' "
// + "and exists(select 1 from ljaget b where actugetno = a.actugetno "
// + "and (paymode not in ( '4','9') or (paymode in ( '4','9') and exists(select 1 from ldbank "
// + "where bankcode = b.bankcode and rpad(trim(comcode),6,'0') = substr(b.managecom,0,6)))))";
LJAGetOtherSet tLJAGetOtherSet = otoFBLSQL.findAllLJAGetOtherByConfDateAndManangeComLikeAndCodeType(mToday,cManageCom,"bank");
LJAGetSchema tLJAGetSchema = new LJAGetSchema();
for(int i = 0; i < tLJAGetOtherSet.size(); i++)
{
LJAGetOtherSchema tLJAGetOtherSchema = new LJAGetOtherSchema();
tLJAGetOtherSchema = tLJAGetOtherSet.get(i + 1);
if(tLJAGetOtherSchema.getGetMoney() <= 0)
{
dealError("LJAGetOther", tLJAGetOtherSchema.getActuGetNo(), tLJAGetOtherSchema.getOtherNo(), "004",
mVoucherType+mMatchID+i, "溢交退费金额为非正数");
continue;
}
LJAGetDB tLJAGetDB = new LJAGetDB();
tLJAGetDB.setActuGetNo(tLJAGetOtherSchema.getActuGetNo());
if(!tLJAGetDB.getInfo())
{
dealError("LJAOtherGet", tLJAGetOtherSchema.getActuGetNo(), tLJAGetOtherSchema.getOtherNo(), "002",
mVoucherType+mMatchID+i, "LJAGet不存在对应的记录");
continue;
}
tLJAGetSchema.setSchema(tLJAGetDB.getSchema());
initVar();
mMatchID++;
mPolNo = tLJAGetOtherSchema.getOtherNo();
mContNo = tLJAGetOtherSchema.getOtherNo();
mBussNo = tLJAGetOtherSchema.getActuGetNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAGetOtherSchema.getConfDate();
mSegment2 = tLJAGetOtherSchema.getManageCom();
mManageCom = tLJAGetOtherSchema.getManageCom().substring(0, 6);
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetOtherSchema.getGetMoney()));
if(tLJAGetOtherSchema.getGetMoney() > 0)
{
if(!this.setPolInfo(mPolNo,"", "LJAGetOther",mVoucherType+mMatchID+i))
continue;
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
mBillID = "0850";
mAccountCode = "应付业务支出-溢额退费";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
if(tLJAGetSchema.getPayMode() != null)
{
if(!tLJAGetSchema.getPayMode().equals("") && !tLJAGetSchema.getPayMode().equals("1"))
{
if(tLJAGetSchema.getPayMode().equals("5"))
{
mBillID = "0851";
mAccountCode = "应付业务支出-内部转帐"; // 内部转账贷
}
else
{
mBillID = "0852";
mAccountCode = "银行存款-活期-人民币"; // 银行存款支
mAccountSubCode = "付" + tLJAGetSchema.getBankCode();
}
}
else
{
mBillID = "0853";
mAccountCode = "库存现金-人民币-业务";
}
}
else
{
mBillID = "0854";
mAccountCode = "库存现金-人民币-业务";
}
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
mHeadDescription = mInsuredName + "的其它给付退费";
if(isExitInTab(tLJAGetOtherSchema.getActuGetNo(), mPolNo, mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
}
}
// String sql = "select * from LJAGetOther a "
// + "where ConfDate='"+ mToday+ "' and ManageCom like '"+ cManageCom+ "%' "
// + "and exists(select 1 from ljaget b where actugetno = a.actugetno and paymode in ( '4','9') "
// + "and bankcode is not null and exists(select 1 from ldbank where bankcode = b.bankcode "
// + "and rpad(trim(comcode),6,'0') <> substr(b.managecom,0,6)))";
tLJAGetOtherSet = otoFBLSQL.findAllLJAGetOtherByConfDateAndManangeComLikeAndCodeTypeAndBankCodeIsNotNull(mToday,cManageCom,"bank");
tLJAGetSchema = new LJAGetSchema();
for(int i = 0; i < tLJAGetOtherSet.size(); i++)
{
LJAGetOtherSchema tLJAGetOtherSchema = new LJAGetOtherSchema();
tLJAGetOtherSchema = tLJAGetOtherSet.get(i + 1);
if(tLJAGetOtherSchema.getGetMoney() <= 0)
{
dealError("LJAGetOther", tLJAGetOtherSchema.getActuGetNo(), tLJAGetOtherSchema.getOtherNo(), "004",
mVoucherType+mMatchID+i, "溢交退费金额为非正数");
continue;
}
LJAGetDB tLJAGetDB = new LJAGetDB();
tLJAGetDB.setActuGetNo(tLJAGetOtherSchema.getActuGetNo());
if(!tLJAGetDB.getInfo())
{
dealError("LJAOtherGet", tLJAGetOtherSchema.getActuGetNo(), tLJAGetOtherSchema.getOtherNo(), "002",
mVoucherType+mMatchID+i, "LJAGet不存在对应的记录");
continue;
}
tLJAGetSchema.setSchema(tLJAGetDB.getSchema());
initVar();
mMatchID++;
mPolNo = tLJAGetOtherSchema.getOtherNo();
mContNo = tLJAGetOtherSchema.getOtherNo();
mBussNo = tLJAGetOtherSchema.getActuGetNo();
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate;
mTransDate = tLJAGetOtherSchema.getConfDate();
mSegment2 = tLJAGetOtherSchema.getManageCom();
mManageCom = tLJAGetOtherSchema.getManageCom().substring(0, 6);
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetOtherSchema.getGetMoney()));
if(tLJAGetOtherSchema.getGetMoney() > 0)
{
if(!this.setPolInfo(mPolNo, "","LJAGetOther", mVoucherType+mMatchID+i))
continue;
for(int j = 1; j <= 2; j++)
{
if(j == 1)
{
mBillID = "0890";
mAccountCode = "应付业务支出-溢额退费";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
}
else
{
if(tLJAGetSchema.getPayMode() != null)
{
if(!tLJAGetSchema.getPayMode().equals("") && !tLJAGetSchema.getPayMode().equals("1"))
{
if(tLJAGetSchema.getPayMode().equals("5"))
{
mBillID = "0891";
mAccountCode = "应付业务支出-内部转帐"; // 内部转账贷
}
else
{
mBillID = "0892";
mAccountCode = "其他应付款-资金中转-集中批付"; // 银行存款支
mAccountSubCode = "C" + mManageCom.substring(2, 4).concat("0000");
}
}
}
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
mHeadDescription = mInsuredName + "的其它给付退费";
if(isExitInTab(tLJAGetOtherSchema.getActuGetNo(), mPolNo, mBillID))
break;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
// 分公司借记科目
// 取得机构对应的分公司
mManageCom = tLJAGetSchema.getManageCom().substring(0, 4).concat("00");
mSegment2 = mManageCom.concat("00");
mBillID = "0893";
mAccountCode = "其他应收款-资金中转-集中批付"; // 银行存款支
mAccountSubCode = "C" + tLJAGetSchema.getManageCom().substring(2, 6).concat("00");
mHeadDescription = mAccountCode + mInsuredName;
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
if(isExitInTab(mBussNo, mPolNo, mBillID))
continue;
OFInterfaceSchema t1OFInterfaceSchema = (OFInterfaceSchema)entry();
if(t1OFInterfaceSchema != null)
mOFInterfaceSet.add(t1OFInterfaceSchema);
dealLITranInfo();
// 分公司贷记科目
mBillID = "0894";
mAccountCode = "银行存款-活期-人民币"; // 银行存款支
mAccountSubCode = "付" + tLJAGetSchema.getBankCode();
mHeadDescription = mAccountCode + mInsuredName;
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
if(isExitInTab(mBussNo, mPolNo, mBillID))
continue;
OFInterfaceSchema t2OFInterfaceSchema = new OFInterfaceSchema();
t2OFInterfaceSchema = (OFInterfaceSchema)entry();
if(t2OFInterfaceSchema != null)
mOFInterfaceSet.add(t2OFInterfaceSchema);
dealLITranInfo();
}
}
return true;
}
//获取保全项目详细科目代码
private boolean getEndorsePayCode(String mActugetno,String mManageCom,String mConfDate,String mFlag)
{
LJAGetEndorseSet tLJAGetEndorseSet = new LJAGetEndorseSet();
LJAGetEndorseDB tLJAGetEndorseDB = new LJAGetEndorseDB();
tLJAGetEndorseDB.setActuGetNo(mActugetno);
tLJAGetEndorseSet = (LJAGetEndorseSet)tLJAGetEndorseDB.query();
for(int k = 1; k <= tLJAGetEndorseSet.size(); k++)
{
LJAGetEndorseSchema tLJAGetEndorseSchema = new LJAGetEndorseSchema();
tLJAGetEndorseSchema.setSchema(tLJAGetEndorseSet.get(k));
if("CM".equals(tLJAGetEndorseSchema.getFeeFinaType())) // 排除健康委托产品
{
dealError("LJAGetEndorse", tLJAGetEndorseSchema.getActuGetNo(), tLJAGetEndorseSchema.getContNo(), "013", mVoucherType+mMatchID+k, "健康委托产品退费不在该处提取凭证!");
continue;
}
mPolNo = tLJAGetEndorseSchema.getPolNo();
mContNo = tLJAGetEndorseSchema.getContNo();
if(tLJAGetEndorseSchema.getGetMoney() == 0)
{
dealError("LJAGetEndorse", mBussNo, mPolNo, "004", mVoucherType+mMatchID+k, "保全实付金额为0");
continue;
}
//针对保全团单不到个单的特殊处理
if("00000000000000000000".equals(tLJAGetEndorseSchema.getContNo()))
{
// if(getGrpPol(tLJAGetEndorseSchema.getGrpPolNo(),"008")==null)
//zy 2009-07-27 由于保全有些项目针对合同,grppolno记得是20个0,所以调整查询逻辑
if(!getEGrpPol(tLJAGetEndorseSchema.getGrpContNo(),tLJAGetEndorseSchema.getRiskCode(),"008"))
return false;
}
else
{
if(!this.setPolInfo(mContNo,tLJAGetEndorseSchema.getRiskCode(), "LJAGetEndorse", "008"))
return false;
}
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetEndorseSchema.getGetMoney()) );
if("TB".equals(tLJAGetEndorseSchema.getFeeFinaType()))
{
mAccountCode = "应付业务支出-退保金";
mBillID = "0800";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
if("P".equals(mFlag))
{
mBillID = "0902";
mHeadDescription = "借" + mInsuredName + "业务应付退保金";
}
if("G".equals(mFlag))
{
mHeadDescription = "其它应付退保" + mInsuredName ;
}
}
else if("DK".equals(tLJAGetEndorseSchema.getFeeFinaType())) // 借款
{
double tYHSLMoney = 0.0;
LJAGetEndorseDB YLJAGetEndorseDB = new LJAGetEndorseDB();
YLJAGetEndorseDB.setActuGetNo(tLJAGetEndorseSchema.getActuGetNo());
YLJAGetEndorseDB.setPolNo(tLJAGetEndorseSchema.getPolNo());
YLJAGetEndorseDB.setEndorsementNo(tLJAGetEndorseSchema.getEndorsementNo());
YLJAGetEndorseDB.setFeeOperationType("LN");
YLJAGetEndorseDB.setFeeFinaType("RV");
LJAGetEndorseSet YLJAGetEndorseSet = YLJAGetEndorseDB.query();
for (int jj=1;jj<=YLJAGetEndorseSet.size();jj++)
{
tYHSLMoney = tYHSLMoney + YLJAGetEndorseSet.get(jj).getGetMoney();
}
mAccountCode = "应付业务支出-保单贷款";
mBillID = "0801";
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetEndorseSchema.getGetMoney()-tYHSLMoney) );
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
if("P".equals(mFlag))
{
mBillID = "0903";
mHeadDescription = "借" + mInsuredName + "业务应付借款";
}
if("G".equals(mFlag))
{
mHeadDescription = "其它应付借款" + mInsuredName ;
}
}
else if("TF".equals(tLJAGetEndorseSchema.getFeeFinaType()) || "YE".equals(tLJAGetEndorseSchema.getFeeFinaType())
||"DJ".equals(tLJAGetEndorseSchema.getFeeFinaType()))
{
if("WT".equals(tLJAGetEndorseSchema.getFeeOperationType()))
{
mBillID = "0895";
mAccountCode = "应付业务支出-犹豫期撤单";
}
else if("M".equals(getRiskPeriod(mRiskCode, "008"))
|| "S".equals(getRiskPeriod(mRiskCode, "008")))
{
mBillID = "0896";
mAccountCode = "应付业务支出-短期险退保";
}
else
{
mAccountCode = "应付业务支出-其他";
mBillID = "0802";
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = "借" + mInsuredName + "业务其它应付";
}
else if ("BF".equals(tLJAGetEndorseSchema.getFeeFinaType()))
{
mBillID = "0900";
mAccountCode = "保费收入-趸缴"; //实交
mHeadDescription = "收" + mInsuredName + "保费";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
else if("LX".equals(tLJAGetEndorseSchema.getFeeFinaType()))
{
if("RE".equals(tLJAGetEndorseSchema.getFeeOperationType()))
{
mBillID = "09010";
mAccountCode = "利息收入-保单复效利息收入"; //利息收入
}
else
{
mBillID = "0901";
mAccountCode = "利息收入-垫交保费"; //利息收入
}
mHeadDescription = "收" + mInsuredName + "利息";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
else if ("HK".equals(tLJAGetEndorseSchema.getFeeFinaType()))
{
mBillID = "0904";
mAccountCode = "贷款-保户质押贷款-本金";
mHeadDescription = "贷" + mInsuredName + "业务还款";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
else if ("HD".equals(tLJAGetEndorseSchema.getFeeFinaType()))
{
mBillID = "0905";
mAccountCode = "垫交保费"; //贷垫交
mHeadDescription = mInsuredName + "垫交";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
else if ("GB".equals(tLJAGetEndorseSchema.getFeeFinaType()))
{
mBillID = "0906";
mAccountCode = "其他业务收入-补发保单款";
mHeadDescription = mInsuredName + "工本费";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
// else if ("LJTF".equals(tLJAGetEndorseSchema.getFeeFinaType())) //累计生息红利
// {
// mBillID = "0906";
// mAccountCode = "应付保单红利-累计生息";
// mEnteredDR = String.valueOf(tmoney);
// mEnteredCR = "";
// }
else if ("XJTF".equals(tLJAGetEndorseSchema.getFeeFinaType()) || "DJTF".equals(tLJAGetEndorseSchema.getFeeFinaType())
|| "HLTF".equals(tLJAGetEndorseSchema.getFeeFinaType()) || "LJTF".equals(tLJAGetEndorseSchema.getFeeFinaType())) //红利
{
mBillID = "0840";
mAccountCode = "应付业务支出-红利";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName ;
}
else if ("YHSL".equals(tLJAGetEndorseSchema.getFeeFinaType()))
{
tYHSLMoney = Double.parseDouble(tmoney);
continue; //该凭证中不处理印花税率
}
else if ("YF".equals(tLJAGetEndorseSchema.getFeeFinaType()) || "YFLX".equals(tLJAGetEndorseSchema.getFeeFinaType()))
{
mBillID = "0812";
mAccountCode = "应付业务支出-年金";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName + "生存领取费";
}
else if ("EF".equals(tLJAGetEndorseSchema.getFeeFinaType()))
{
mBillID = "0810";
mAccountCode = "应付业务支出-满期";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName + "生存领取费";
}
else if("BD".equals(tLJAGetEndorseSchema.getFeeFinaType()))
{
mBillID = "0907";
// mAccountCode = "资产减值损失-客户贷(垫)款";
mAccountCode = "资产减值损失-垫交保费";//zy 2009-06-30 调整科目名称
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName ;
}
else //以后新增保全财务类型,待以后补充
{
dealError("LJAGetEndorse", mBussNo, mPolNo, "005", mVoucherType+mMatchID+k, "未描述的财务类型"+tLJAGetEndorseSchema.getFeeFinaType()+"");
continue;
}
if(isExitInTab(tLJAGetEndorseSchema.getActuGetNo(), tLJAGetEndorseSchema.getPolNo(), mBillID))
return false;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
LJAGetDrawDB tLJAGetDrawDB = new LJAGetDrawDB();
tLJAGetDrawDB.setActuGetNo(mActugetno);
LJAGetDrawSet tLJAGetDrawSet =(LJAGetDrawSet) tLJAGetDrawDB.query();
for(int j=1;j<=tLJAGetDrawSet.size();j++)
{
LJAGetDrawSchema tLJAGetDrawSchema = tLJAGetDrawSet.get(j);
if(tLJAGetDrawSchema.getGetMoney() == 0)
{
dealError("tLJAGetDrawSchema", mBussNo, tLJAGetDrawSchema.getPolNo(), "004", mVoucherType+mMatchID+j, "生存领取实付金额为0");
continue;
}
mPolNo = tLJAGetDrawSchema.getPolNo();
mContNo = tLJAGetDrawSchema.getContNo();
if(!this.setPolInfo(mContNo,tLJAGetDrawSchema.getRiskCode(), "LJAGetDraw", "008"))
return false;
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetDrawSchema.getGetMoney()) );
if ("YF".equals(tLJAGetDrawSchema.getFeeFinaType()) || "YFLX".equals(tLJAGetDrawSchema.getFeeFinaType()))
{
mBillID = "0812";
mAccountCode = "应付业务支出-年金";
}
if ("EF".equals(tLJAGetDrawSchema.getFeeFinaType()))
{
mBillID = "0810";
mAccountCode = "应付业务支出-满期";
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName + "生存领取费";
if(isExitInTab(mActugetno, tLJAGetDrawSchema.getPolNo(), mBillID))
return false;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
LJAPayPersonDB tLJAPayPersonDB = new LJAPayPersonDB();
tLJAPayPersonDB.setPayNo(mActugetno);
LJAPayPersonSet tLJAPayPersonSet =tLJAPayPersonDB.query();
for(int i=1;i<=tLJAPayPersonSet.size();i++)
{
LJAPayPersonSchema tLJAPayPersonSchema =tLJAPayPersonSet.get(i);
if(!"ZC".equals(tLJAPayPersonSchema.getPayType()))
{
dealError("LJAPayPerson", tLJAPayPersonSchema.getPayNo(), tLJAPayPersonSchema.getPolNo(), "005",
mVoucherType+mMatchID+i,"交费类型为" + tLJAPayPersonSchema.getPayType() + ",不属于凭证提取范围");
continue;
}
if(tLJAPayPersonSchema.getSumActuPayMoney()==0)
{
dealError("LJAPayPerson", mBussNo, tLJAPayPersonSchema.getPolNo(), "004", mVoucherType+mMatchID+i, "保费收入金额为0");
continue;
}
mPolNo = tLJAPayPersonSchema.getPolNo();
mContNo = tLJAPayPersonSchema.getContNo();
if(!this.setPolInfo(mContNo,tLJAPayPersonSchema.getRiskCode(), "LJAPayPerson", "008"))
return false;
tmoney = new DecimalFormat("0.00").format(new Double(tLJAPayPersonSchema.getSumActuPayMoney()));
mBillID = "0918";
mAccountCode = "保费收入-趸缴"; //实交
mHeadDescription = "收" + mInsuredName + "保费";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
if (isExitInTab(mActugetno,tLJAPayPersonSchema.getPolNo(),mBillID))
return false;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema) entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
return true;
}
/**
* 生存领取涉及的科目
**/
private boolean getDrawCode(String mActugetno)
{
LJAGetDrawDB tLJAGetDrawDB = new LJAGetDrawDB();
tLJAGetDrawDB.setActuGetNo(mActugetno);
LJAGetDrawSet tLJAGetDrawSet =(LJAGetDrawSet) tLJAGetDrawDB.query();
for(int j=1;j<=tLJAGetDrawSet.size();j++)
{
LJAGetDrawSchema tLJAGetDrawSchema = tLJAGetDrawSet.get(j);
if(tLJAGetDrawSchema.getGetMoney() == 0)
{
dealError("tLJAGetDrawSchema", mBussNo, tLJAGetDrawSchema.getPolNo(), "004", mVoucherType+mMatchID+j, "生存领取实付金额为0");
continue;
}
mPolNo = tLJAGetDrawSchema.getPolNo();
mContNo = tLJAGetDrawSchema.getContNo();
if(!this.setPolInfo(mContNo,tLJAGetDrawSchema.getRiskCode(), "LJAGetDraw", "008"))
return false;
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetDrawSchema.getGetMoney()) );
// if ("YF".equals(tLJAGetDrawSchema.getFeeFinaType()) || "YFLX".equals(tLJAGetDrawSchema.getFeeFinaType()))
// {
// mBillID = "0812";
// mAccountCode = "应付业务支出-年金";
// }
if ("EF".equals(tLJAGetDrawSchema.getFeeFinaType()))
{
mBillID = "0810";
mAccountCode = "应付业务支出-满期";
}
else //为了兼容历史数据,将LX纳入年金科目中
{
mBillID = "0812";
mAccountCode = "应付业务支出-年金";
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName + "生存领取费";
if(isExitInTab(mActugetno, tLJAGetDrawSchema.getPolNo(), mBillID))
return false;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
LJAGetEndorseSet tLJAGetEndorseSet = new LJAGetEndorseSet();
LJAGetEndorseDB tLJAGetEndorseDB = new LJAGetEndorseDB();
tLJAGetEndorseDB.setActuGetNo(mActugetno);
tLJAGetEndorseSet = (LJAGetEndorseSet)tLJAGetEndorseDB.query();
for(int k = 1; k <= tLJAGetEndorseSet.size(); k++)
{
LJAGetEndorseSchema tLJAGetEndorseSchema = new LJAGetEndorseSchema();
tLJAGetEndorseSchema.setSchema(tLJAGetEndorseSet.get(k));
if("CM".equals(tLJAGetEndorseSchema.getFeeFinaType())) // 排除健康委托产品
{
dealError("LJAGetEndorse", tLJAGetEndorseSchema.getActuGetNo(), tLJAGetEndorseSchema.getContNo(), "013", mVoucherType+mMatchID+k, "健康委托产品退费不在该处提取凭证!");
continue;
}
mPolNo = tLJAGetEndorseSchema.getPolNo();
mContNo = tLJAGetEndorseSchema.getContNo();
if(tLJAGetEndorseSchema.getGetMoney() == 0)
{
dealError("LJAGetEndorse", mBussNo, mPolNo, "004", mVoucherType+mMatchID+k, "保全实付金额为0");
continue;
}
if(!this.setPolInfo(mContNo,tLJAGetEndorseSchema.getRiskCode(), "LJAGetEndorse", "008"))
return false;
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetEndorseSchema.getGetMoney()) );
if("LX".equals(tLJAGetEndorseSchema.getFeeFinaType()))
{
mBillID = "0901";
mAccountCode = "利息收入-垫交保费"; //利息收入
mHeadDescription = "收" + mInsuredName + "利息";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
else if ("HK".equals(tLJAGetEndorseSchema.getFeeFinaType()))
{
mBillID = "0904";
mAccountCode = "贷款-保户质押贷款-本金";
mHeadDescription = "贷" + mInsuredName + "业务还款";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
else if ("HD".equals(tLJAGetEndorseSchema.getFeeFinaType()))
{
mBillID = "0905";
mAccountCode = "垫交保费"; //贷垫交
mHeadDescription = mInsuredName + "垫交";
mEnteredDR = "";
mEnteredCR = String.valueOf(tmoney);
}
else //生存金领取涉及清偿贷款
{
dealError("LJAGetEndorse", mBussNo, mPolNo, "005", mVoucherType+mMatchID+k, "未描述的财务类型"+tLJAGetEndorseSchema.getFeeFinaType()+"");
continue;
}
if(isExitInTab(tLJAGetEndorseSchema.getActuGetNo(), tLJAGetEndorseSchema.getPolNo(), mBillID))
return false;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
return true;
}
/**
* 理赔实付及理赔清算涉及的科目定义
**/
private boolean getClaimCode(String mActugetno,String mManageCom,String mConfDate,String mFlag)
{
LJAGetClaimSet tLJAGetClaimSet = new LJAGetClaimSet();
LJAGetClaimDB tLJAGetClaimDB = new LJAGetClaimDB();
tLJAGetClaimDB.setActuGetNo(mActugetno);
tLJAGetClaimSet = (LJAGetClaimSet)tLJAGetClaimDB.query();
for(int k = 1; k <= tLJAGetClaimSet.size(); k++)
{
LJAGetClaimSchema tLJAGetClaimSchema = new LJAGetClaimSchema();
tLJAGetClaimSchema.setSchema(tLJAGetClaimSet.get(k));
if("CM".equals(tLJAGetClaimSchema.getFeeFinaType())) // 排除健康委托产品
{
dealError("LJAGetClaim", tLJAGetClaimSchema.getActuGetNo(), tLJAGetClaimSchema.getContNo(), "013", mVoucherType+mMatchID+k, "健康委托产品退费不在该处提取凭证!");
continue;
}
mPolNo = tLJAGetClaimSchema.getPolNo();
mContNo = tLJAGetClaimSchema.getContNo();
if(tLJAGetClaimSchema.getPay() == 0)
{
dealError("LJAGetClaim", mBussNo, mPolNo, "004", mVoucherType+mMatchID+k, "理赔实付金额为0");
continue;
}
if(!this.setPolInfo(mContNo,tLJAGetClaimSchema.getRiskCode(), "LJAGetClaim", "008"))
return false;
tmoney = new DecimalFormat("0.00").format(new Double(tLJAGetClaimSchema.getPay()) );
if("SWPK".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "08301";
mAccountCode = "应付业务支出-死亡给付"; // 死亡给付金
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName.trim()+"赔付退费";
}
else if("YLPK".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "08302";
mAccountCode = "应付业务支出-医疗给付"; // 医疗给付金
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName.trim()+"赔付退费";
}
else if("SCPK".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "08303";
mAccountCode = "应付业务支出-伤残给付"; // 伤残给付金
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName.trim()+"赔付退费";
}
else if("DQPK".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "08304";
mAccountCode = "应付业务支出-赔款支出";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName.trim()+"赔付退费";
}
else if("YCLX".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mAccountCode = "应付业务支出-理赔";
mBillID = "0830";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName.trim()+"赔付退费";
}
else if("TB".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mAccountCode = "应付业务支出-退保金";
mBillID = "08100";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
if("P".equals(mFlag))
{
mBillID = "08101";
mHeadDescription = "借" + mInsuredName + "业务应付退保金";
}
if("G".equals(mFlag))
{
mHeadDescription = "其它应付退保" + mInsuredName ;
}
}
else if("TF".equals(tLJAGetClaimSchema.getFeeFinaType()) || "YE".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
if("M".equals(getRiskPeriod(mRiskCode, "008"))
|| "S".equals(getRiskPeriod(mRiskCode, "008")))
{
mBillID = "08102";
mAccountCode = "应付业务支出-短期险退保";
}
else
{
mAccountCode = "应付业务支出-其他";
mBillID = "08103";
}
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = "借" + mInsuredName + "业务其它应付";
}
else if ("BF".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "08104";
mAccountCode = "保费收入-趸缴"; //实交
mHeadDescription = "收" + mInsuredName + "保费";
mEnteredDR = "";
// mEnteredCR = String.valueOf(tmoney);
//理赔业务记录的是负值
mEnteredCR = String.valueOf( new DecimalFormat("0.00").format(new Double(0-tLJAGetClaimSchema.getPay())));
}
else if("HDLX".equals(tLJAGetClaimSchema.getFeeFinaType()) || "HKLX".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "08105";
mAccountCode = "利息收入-垫交保费"; //利息收入
mHeadDescription = "收" + mInsuredName + "利息";
mEnteredDR = "";
// mEnteredCR = String.valueOf(tmoney);
mEnteredCR = String.valueOf( new DecimalFormat("0.00").format(new Double(0-tLJAGetClaimSchema.getPay())));
}
else if ("HK".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "08106";
mAccountCode = "贷款-保户质押贷款-本金";
mHeadDescription = "贷" + mInsuredName + "业务还款";
mEnteredDR = "";
// mEnteredCR = String.valueOf(tmoney);
mEnteredCR = String.valueOf( new DecimalFormat("0.00").format(new Double(0-tLJAGetClaimSchema.getPay())));
}
else if ("HD".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "08107";
mAccountCode = "垫交保费"; //贷垫交
mHeadDescription = mInsuredName + "垫交";
mEnteredDR = "";
// mEnteredCR = String.valueOf(tmoney);
mEnteredCR = String.valueOf( new DecimalFormat("0.00").format(new Double(0-tLJAGetClaimSchema.getPay())));
}
else if ("LJTF".equals(tLJAGetClaimSchema.getFeeFinaType())) //累计生息红利
{
mBillID = "08108";
mAccountCode = "应付保单红利-累计生息";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName ;
}
else if ("XJTF".equals(tLJAGetClaimSchema.getFeeFinaType()) || "DJTF".equals(tLJAGetClaimSchema.getFeeFinaType())
|| "HLTF".equals(tLJAGetClaimSchema.getFeeFinaType())) //红利
{
mBillID = "08109";
mAccountCode = "应付业务支出-红利";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName ;
}
else if ("YF".equals(tLJAGetClaimSchema.getFeeFinaType()) || "YFLX".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "08110";
mAccountCode = "应付业务支出-年金";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName + "生存领取费";
}
else if ("EF".equals(tLJAGetClaimSchema.getFeeFinaType()))
{
mBillID = "08111";
mAccountCode = "应付业务支出-满期";
mEnteredDR = String.valueOf(tmoney);
mEnteredCR = "";
mHeadDescription = mAccountCode + mInsuredName + "生存领取费";
}
else if ("HLRB".equals(tLJAGetClaimSchema.getFeeFinaType())) //红利追回
{
mBillID = "08112";
mAccountCode = "保单红利支出-清算收入";
mEnteredDR ="" ;
// mEnteredCR = String.valueOf(tmoney);
//zy 理赔清算时该数据存放的是负值,所以财务接口取相反值
mEnteredCR = String.valueOf(new DecimalFormat("0.00").format(new Double(0-tLJAGetClaimSchema.getPay())));
mHeadDescription = mAccountCode + mInsuredName ;
}
else if ("YFRB".equals(tLJAGetClaimSchema.getFeeFinaType()))//年金追回
{
mBillID = "08113";
mAccountCode = "年金-清算收入";
mEnteredDR = "";
mEnteredCR = String.valueOf( new DecimalFormat("0.00").format(new Double(0-tLJAGetClaimSchema.getPay())));
mHeadDescription = mAccountCode + mInsuredName + "生存领取费";
}
else //以后新增保全财务类型,待以后补充
{
dealError("LJAGetClaim", mBussNo, mPolNo, "005", mVoucherType+mMatchID+k, "未描述的财务类型"+tLJAGetClaimSchema.getFeeFinaType()+"");
continue;
}
if(isExitInTab(tLJAGetClaimSchema.getActuGetNo(), tLJAGetClaimSchema.getPolNo(), mBillID))
return false;
OFInterfaceSchema tOFInterfaceSchema = (OFInterfaceSchema)entry();
if(tOFInterfaceSchema != null)
mOFInterfaceSet.add(tOFInterfaceSchema);
dealLITranInfo();
}
return true;
}
/*****************************************************************************************************************************************************
* 错误处理函数开始
*/
private void dealError(String TabName, String RecNo, String PNo, String ErrNo, String BID, String ErrDesc)
{
LITranErrSchema tLITranErrSchema = new LITranErrSchema();
tLITranErrSchema.setSerialNo(PubFun1.CreateMaxNo("LITranErrNo",20));
tLITranErrSchema.setBatchNo(mBatchNo);
tLITranErrSchema.setBussDate(mToday);
tLITranErrSchema.setTableName(TabName);
tLITranErrSchema.setBussNo(RecNo);
tLITranErrSchema.setErrFlag(ErrNo);
tLITranErrSchema.setErrDes(ErrDesc);
tLITranErrSchema.setPolicyNo(PNo);
tLITranErrSchema.setBillId(BID);
tLITranErrSchema.setManageCom(cManageCom);
tLITranErrSchema.setMakeDate(PubFun.getCurrentDate());
tLITranErrSchema.setMakeTime(PubFun.getCurrentTime());
tLITranErrSchema.setOperator(mGlobalInput.Operator);
if((tLITranErrSchema.getBussNo() == null) || (tLITranErrSchema.getPolicyNo() == null))
return;
mLITranErrSet.add(tLITranErrSchema);
}
private void dealLITranInfo()
{
LITranInfoSchema tLITranInfoSchema = new LITranInfoSchema();
tLITranInfoSchema.setBatchNo(mBatchNo);
tLITranInfoSchema.setBillId(mBillID);
tLITranInfoSchema.setBussNo(mBussNo);
tLITranInfoSchema.setPolNo(mPolNo);
tLITranInfoSchema.setMakeDate(PubFun.getCurrentDate());
tLITranInfoSchema.setMakeTime(PubFun.getCurrentTime());
tLITranInfoSchema.setTransDate(this.mToday);
tLITranInfoSchema.setVoucherType(this.mTime);
tLITranInfoSchema.setManageCom(mManageCom);
tLITranInfoSchema.setMatchID(mMatchID);
if(!isExistInSet(tLITranInfoSchema))
mLITranInfoSet.add(tLITranInfoSchema);
}
private OFInterfaceSchema entry()
{
String tMakeDate = PubFun.getCurrentDate();
String tMakeTime = PubFun.getCurrentTime();
mLineDescription = mManageCom + "||" + mBussNo + "||" + mInsuredName + "||" + mAttribute5 + "||" + mBillID;
// 公司段说明||收付单据号||保户人姓名||类别明细||BillID
String[] tVerSubject = { mAccountSubCode, mManageCom, mRiskCode, mSaleChnl };
try
{
tVerSubject = vertifySubject(mAccountCode); // 校验科目代码
String tRecordID = PubFun1.CreateMaxNo("OTOF", "RECORD");
OFInterfaceSchema rOFInterfaceSchema = new OFInterfaceSchema();
rOFInterfaceSchema.setRecordID(tRecordID); // 记录行ID
rOFInterfaceSchema.setReversedStatus(mReversedStatus); // 冲消状态
rOFInterfaceSchema.setOrigRowID(mOrigRowID); // 被冲消的行
rOFInterfaceSchema.setReversedRowID(mReversedRowID); // 冲消生成的行
rOFInterfaceSchema.setCurrencyCode(mCurrencyCode); // 币别
rOFInterfaceSchema.setVoucherType(mVoucherType); // 凭证类别
rOFInterfaceSchema.setManageCom(tVerSubject[1]); // 核算单位代码
rOFInterfaceSchema.setSegment2(mSegment2); // 成本中心
rOFInterfaceSchema.setAccountCode(mAccountCode); // 科目代码
rOFInterfaceSchema.setAccountSubCode(tVerSubject[0]); // 科目明细代码
rOFInterfaceSchema.setSaleChnl(tVerSubject[3]); // 销售渠道
rOFInterfaceSchema.setRiskCode(tVerSubject[2]); // 保险产品代码
rOFInterfaceSchema.setSegment7("NA"); // 备用段1
rOFInterfaceSchema.setSegment8("NA"); // 备用段2
rOFInterfaceSchema.setTransDate(mTransDate); // 事务日期
rOFInterfaceSchema.setAccountingDate(mAccountingDate); // 记帐日期
rOFInterfaceSchema.setMakeDate(tMakeDate); // 创建日期
rOFInterfaceSchema.setMakeTime(tMakeTime); // 创建时间
rOFInterfaceSchema.setModifyDate(tMakeDate); // 最后一次修改日期
rOFInterfaceSchema.setModifyTime(tMakeTime); // 最后一次修改时间
rOFInterfaceSchema.setMatchID(mMatchID); // 借贷关系key值
rOFInterfaceSchema.setBatchNo(mBatchNo); // 批次号
rOFInterfaceSchema.setEnteredDR(mEnteredDR); // 事务借计金额
rOFInterfaceSchema.setEnteredCR(mEnteredCR); // 事务贷计金额
rOFInterfaceSchema.setHeadDescription(mHeadDescription); // 日记帐摘要
rOFInterfaceSchema.setLineDescription(mLineDescription); // 行记帐摘要
rOFInterfaceSchema.setCurrencyConversionDate(""); // 汇率日期
rOFInterfaceSchema.setCurrencyConversionRate(""); // 汇率
rOFInterfaceSchema.setAccountedDR(""); // 记帐借计金额
rOFInterfaceSchema.setAccountedCR(""); // 记帐贷计金额
rOFInterfaceSchema.setAttribute1(""); // 空闲属性1
rOFInterfaceSchema.setPolNo(mContNo); // 保单号
rOFInterfaceSchema.setInsuredName(mInsuredName); // 被保险人姓名
rOFInterfaceSchema.setBussNo(mBussNo); // 收付款单据号
rOFInterfaceSchema.setAttribute5(mAttribute5); // 行为明细类别
if("02".equals(mSaleChnl)) //个险
{
rOFInterfaceSchema.setAttribute6(mAgentName); //代理人名称
}
if("03".equals(mSaleChnl)) //银代
{
rOFInterfaceSchema.setAttribute6(mAgentCom); //焦谨让修改为代理机构(原来是银行编码)
}
if("7".equals(mBranchType)) //中介
{
rOFInterfaceSchema.setAttribute6(mAgentCom); //代理机构
}
rOFInterfaceSchema.setAttribute7("NA"); // 空闲属性7
rOFInterfaceSchema.setAttribute8("NA"); // 空闲属性8
if(mAccountCode.startsWith("保费收入"))
{
rOFInterfaceSchema.setAttribute9(mEndYear); //保险期间及单位
}
rOFInterfaceSchema.setVoucherID("-1"); // 总帐凭证号回写
rOFInterfaceSchema.setVoucherFlag("NA"); // 回写标志
rOFInterfaceSchema.setVoucherDate(""); // 回写导入日期
return rOFInterfaceSchema;
}
catch(Exception ex)
{
logger.debug("Exception in entry " + ex.toString());
dealError("OFInterface", mBussNo, mPolNo, "012", String.valueOf(mMatchID), "接口表赋值错误");
CError.buildErr(this, new I18nMessage( ex.toString(), null));
return null;
}
}
/**
* 校验科目约束性
*/
private String[] vertifySubject(String cSubjectName)
{
String[] rSubject = { mAccountSubCode, mManageCom, mRiskCode, mSaleChnl };
LIVertifySchema tLIVertifySchema = new LIVertifySchema();
for(int i = 1 ; i <= mLIVertifySet.size() ; i ++)
{
tLIVertifySchema = (LIVertifySchema)mLIVertifySet.get(i);
if(tLIVertifySchema.getSubjectName().equals(cSubjectName))
{
if(tLIVertifySchema.getSegAccountSub().equals("N"))
rSubject[0] = "NA";
if(tLIVertifySchema.getSegComCode().equals("N"))
rSubject[1] = "NA";
if(tLIVertifySchema.getSegRiskCode().equals("N"))
rSubject[2] = "NA";
if(tLIVertifySchema.getSegSaleChnl().equals("N"))
rSubject[3] = "NA";
break;
}
}
return rSubject;
}
// 预留出对日志表的操作
private boolean isExistInSet(LITranInfoSchema tLITranInfoSchema)
{
if (!mLITranInfoSetHashtable
.contains((tLITranInfoSchema.getBillId().trim() + ":"
+ tLITranInfoSchema.getBussNo().trim() + ":" + tLITranInfoSchema
.getPolNo().trim()))) {
mLITranInfoSetHashtable
.add((tLITranInfoSchema.getBillId().trim() + ":"
+ tLITranInfoSchema.getBussNo().trim() + ":" + tLITranInfoSchema
.getPolNo().trim()));
return false;
}
return true;
// for(int i = 1; i <= mLITranInfoSet.size(); i++)
// {
// LITranInfoSchema ttLITranInfoSchema = new LITranInfoSchema();
// ttLITranInfoSchema.setSchema(mLITranInfoSet.get(i));
// if((ttLITranInfoSchema.getBillId().trim().equals(tLITranInfoSchema.getBillId().trim()))
// && (ttLITranInfoSchema.getBussNo().trim().equals(tLITranInfoSchema.getBussNo().trim()))
// && (ttLITranInfoSchema.getPolNo().trim().equals(tLITranInfoSchema.getPolNo().trim())))
// {
// return true;
// }
// }
// return false;
}
private boolean isExitInTab(String tBussNo, String tPolNo, String tBillId)
{
if(tBillId == null || tBillId.equals(""))
{
dealError("LITranInfo", tBussNo, tPolNo, "010", "001", "科目代码为空");
return true;
}
if(mContNo==null || "".equals(mContNo) || mPolNo==null || "".equals(mPolNo) )
{
dealError("LITranInfo", tBussNo, tBussNo, "010", "001", "保单号或者合同号为空");
return true;
}
LITranInfoDB tLITranInfoDB = new LITranInfoDB();
tLITranInfoDB.setBussNo(tBussNo);
tLITranInfoDB.setBillId(tBillId);
tLITranInfoDB.setPolNo(tPolNo);
if(tLITranInfoDB.getCount() > 0)
{
dealError("LITranInfo", tBussNo, tPolNo, "011", "001", "该保单已经提取过相应的凭证");
return true;
}
return false;
}
// 预留出对接口流转表的操作
private void prepareOutputData()
{
MMap mp = new MMap();
mp.put(mLITranInfoSet, MMap.Action.INSERT);
mp.put(mLITranErrSet, MMap.Action.INSERT);
mp.put(mOFInterfaceSet, MMap.Action.INSERT);
mp.put(tFinaLogSchema, MMap.Action.UPDATE);
mInputData.clear();
mInputData.add(mp);
}
private boolean setPolInfo(String tPolNo, String tRiskCode,String tTableName, String tId)
{
SSRS mSSRS = new SSRS();
//针对险种为000000的处理
if(!( tRiskCode==null||tRiskCode.equals("") || "000000".equals(tRiskCode)))
{
mSSRS = otoFBLSQL.getByRiskCodeAndPolNo(tRiskCode,tPolNo);
}
else
{
mSSRS = otoFBLSQL.getByPolNo(tPolNo);
}
SSRS tSSRS = new SSRS();
if(mSSRS.getMaxRow() <= 0)
{
tSSRS = lcGrpPolSQL.getRiskCodeAndSaleChnlAndGrpNameAndPayIntvAndAgentCodeByGrpPolNo(tPolNo);
if(tSSRS == null || tSSRS.getMaxRow() <= 0)
{
SSRS gSSRS = new SSRS();
gSSRS = lcGrpPolSQL.getRiskCodeAndSaleChnlAndGrpNameAndPayIntvAndAgentCodeByGrpPolNo(tPolNo);
if(gSSRS == null || gSSRS.getMaxRow() <= 0)
{
dealError(tTableName, mBussNo, tPolNo, "001", tId, "lcgrppol表对应的保单信息不存在");
return false;
}
else
{
mRiskCode = gSSRS.GetText(1, 1);
mSaleChnl =tranSaleChnl(gSSRS.GetText(1, 2),gSSRS.GetText(1, 5),"");
mInsuredName = gSSRS.GetText(1, 3).trim();
mPayIntv = Integer.parseInt(gSSRS.GetText(1, 4));
if(mInsuredName.length() > 20)
mInsuredName = mInsuredName.substring(0, 20);
}
}
else
{
mRiskCode = tSSRS.GetText(1, 1);
// mSaleChnl = mSSRS.GetText(1, 2);
mSaleChnl =tranSaleChnl(tSSRS.GetText(1, 2),tSSRS.GetText(1, 5),"");
mInsuredName = tSSRS.GetText(1, 3).trim();
mPayIntv = Integer.parseInt(tSSRS.GetText(1, 4));
if(mInsuredName.length() > 20)
mInsuredName = mInsuredName.substring(0, 20);
}
}
else
{
mRiskCode = mSSRS.GetText(1, 1);
// mSaleChnl = mSSRS.GetText(1, 2);
mSaleChnl = tranSaleChnl(mSSRS.GetText(1, 2),mSSRS.GetText(1, 8),mSSRS.GetText(1, 7));
mInsuredName = mSSRS.GetText(1, 3);
mPayIntv = Integer.parseInt(mSSRS.GetText(1, 5));
mEndYear = mSSRS.GetText(1, 9) + mSSRS.GetText(1, 10);
mBranchType = mSSRS.GetText(1, 11);
mAgentName = mSSRS.GetText(1, 12);
mBankCode = mSSRS.GetText(1, 13);
mAgentCom = mSSRS.GetText(1, 14);
}
return true;
}
private LCPolSchema getPol(String tPolNo, String tId)
{
LCPolSchema tLCPolBL = new LCPolSchema();
tLCPolBL.setPolNo(tPolNo);
if(!LCPolBL.getInfo(tLCPolBL))
{
dealError("LCPOL", mBussNo, tPolNo, "001", tId, "保单号为" + tPolNo + "对应保单信息不存在");
return null;
}
mRiskCode = tLCPolBL.getRiskCode();
// mSaleChnl = tLCPolBL.getSaleChnl();
mSaleChnl = tranSaleChnl(tLCPolBL.getSaleChnl(), tLCPolBL.getAgentCode(), tLCPolBL.getContNo());
mInsuredName = tLCPolBL.getInsuredName();
mEndYear = tLCPolBL.getPayEndYear()+tLCPolBL.getPayEndYearFlag();
SSRS aSsrs = laAgentSQL.getBranchTypeAndNameByAgentCode(tLCPolBL.getAgentCode());
mBranchType = aSsrs.GetText(1, 1);
mAgentName = aSsrs.GetText(1, 2);
SSRS bSsrs = lcContSQL.getBankCodeByContNo(tLCPolBL.getContNo());
mBankCode = bSsrs.GetText(1, 1);
mAgentCom = tLCPolBL.getAgentCom();
return tLCPolBL;
}
private LCGrpPolSchema getGrpPol(String tPolNo, String tId)
{
LCGrpPolDB tLCGrpPolBL = new LCGrpPolDB();
tLCGrpPolBL.setGrpPolNo(tPolNo);
if(!tLCGrpPolBL.getInfo())
{
dealError("LCGRPPOL", mBussNo, tPolNo, "001", tId, "保单号为" + tPolNo + "对应保单信息不存在");
return null;
}
mRiskCode = tLCGrpPolBL.getRiskCode();
// mSaleChnl = tLCGrpPolBL.getSaleChnl();
mSaleChnl = tranSaleChnl(tLCGrpPolBL.getSaleChnl(), tLCGrpPolBL.getAgentCode(), tLCGrpPolBL.getGrpContNo());
mInsuredName = tLCGrpPolBL.getGrpName();
return tLCGrpPolBL;
}
/**
* 由于保全有些项目针对合同,所以相应的grppolno就为20个0,所以针对这种情况则查询相应的合同下的任一条保单信息
*
* **/
private boolean getEGrpPol(String tGrpContno,String tRiskcode, String tId)
{
SSRS tSSRS = new SSRS();
if("".equals(tRiskcode) || tRiskcode==null || "000000".equals(tRiskcode))
{
tSSRS = lcGrpPolSQL.getRiskCodeAndSaleChnlAndGrpNameAndGrpPolNoAndAgentCodeByGrpContNo(tGrpContno);
}
else{
tSSRS = lcGrpPolSQL.getRiskCodeAndSaleChnlAndGrpNameAndGrpPolNoAndAgentCodeByGrpContNoAndRiskCode(tGrpContno,tRiskcode);
}
if(tSSRS == null || tSSRS.getMaxRow() <= 0)
{
dealError("lcgrppol", mBussNo, tGrpContno, "001", tId, "lcgrppol表对应的保单信息不存在");
return false;
}
else
{
mContNo = tGrpContno;
mPolNo = tSSRS.GetText(1,5);
mRiskCode = tSSRS.GetText(1, 1);
mSaleChnl =tranSaleChnl(tSSRS.GetText(1, 2),tSSRS.GetText(1, 4),tGrpContno);
mInsuredName = tSSRS.GetText(1, 3).trim();
if(mInsuredName.length() > 20)
mInsuredName = mInsuredName.substring(0, 20);
}
return true;
}
private void initVar()
{
mReversedStatus = "0"; // 冲消状态
mOrigRowID = ""; // 被冲消的行
mReversedRowID = ""; // 冲消生成的行
mCurrencyCode = "CNY"; // 币别
mVoucherType = String.valueOf(mTime); // 凭证类别
mManageCom = "NA"; // 核算单位代码
mSegment2 = "NA"; // 成本中心
mAccountCode = "NA"; // 科目代码
mAccountSubCode = "NA"; // 科目明细代码
mSaleChnl = "NA"; // 销售渠道
mRiskCode = "NA"; // 保险产品代码
mTransDate = ""; // 事务日期
mAccountingDate = (mInputDate.equals("")) ? mToday : mInputDate; // 记帐日期
mEnteredDR = ""; // 事务借计金额
mEnteredCR = ""; // 事务贷计金额
mHeadDescription = "NA"; // 日记帐摘要
mLineDescription = "NA"; // 行记帐摘要
mPolNo = ""; // 保单号
mInsuredName = ""; // 被保险人姓名
mBussNo = ""; // 收付款单据号
mAttribute5 = "核心业务系统"; // 行为明细类别-来源
mAttribute6 = "NA";
}
private String getRiskPeriod(String riskcode, String tID)
{
LMRiskAppSQL lmRiskAppSQL = SQLProxy.getInstance(LMRiskAppSQL.class);
SSRS tssrs = lmRiskAppSQL.getRiskPeriodByRiskCode(riskcode);
if( tssrs.getMaxRow() <= 0)
{
dealError("lmriskapp", mBussNo, mPolNo, "014", tID, "获取险种的长短期类型失败!");
return "";
}
String mRiskPeriod = tssrs.GetText(1, 1).trim();
return mRiskPeriod;
}
/**
* 核心系统渠道的升级:
* @param salechnl
* 个险、团单、银代、中介、续收、联办、收展
*/
private String tranSaleChnl(String mSaleChnl,String mAgentCode,String mContno)
{
String rSaleChnl=mSaleChnl;
SSRS rSsrs = laAgentSQL.getBranchTypeAndNameByAgentCode(mAgentCode);
//团险的拆分
if("01".equals(rSaleChnl))
{
if(rSsrs.getMaxRow()>0)
{
if("2".equals(rSsrs.GetText(1, 1)) && ("LB".equals(rSsrs.GetText(1, 2).substring(0,2))))
{
rSaleChnl="07"; //联办
}
}
}
//专业的拆分
if("05".equals(rSaleChnl) || "06".equals(rSaleChnl) || "08".equals(rSaleChnl) || "09".equals(rSaleChnl))
{
SSRS cSSrs = lcContSQL.getAgentComByContNoAndGrpContNo(mContNo,"00000000000000000000");
if(cSSrs.getMaxRow()>0)
{
if((cSSrs.GetText(1, 1).trim().length()==13 || cSSrs.GetText(1, 1).trim().length()==16)
&&("86".equals(cSSrs.GetText(1, 1).trim().substring(0,2))) && ("8".equals(cSSrs.GetText(1, 1).trim().substring(8,9))))
{
rSaleChnl="07"; //联办
}
}
}
return rSaleChnl;
}
// private String getYBankCode(String bankcode, String managecom)
// {
// String bSql = "select code from ldcode where codetype='bank' and code like '01%' and trim(comcode)=substr("
// + managecom + ",0,4) and rownum=1";
// ExeSQL tExeSQL = new ExeSQL();
// String mBankCode = tExeSQL.getOneValue(bSql);
// return mBankCode;
//
// }
private String getYBTPayMode(String tPayNo)
{
if(tPayNo == null || tPayNo.equals(""))
return "";
LJTempFeeClassSQL ljTempFeeClassSQL = SQLProxy.getInstance(LJTempFeeClassSQL.class);
String tPayMode = ljTempFeeClassSQL.findPayModeByOtherNo(tPayNo);
if(tPayMode==null || "".equals(tPayMode))
tPayMode="A";
return tPayMode;
}
}