@Override protected String getBeginStatus(BusiActionParamVO<T> param) throws BusinessException { RegisterVO vo = param.getSuperVO(); if (FbmBusConstant.GATHER_TYPE_RELIEF.equals(vo.getGathertype())) { // 调剂存放过来的 return FbmStatusConstant.HAS_RELIEF_KEEP; // 已内部存放 } else { return FbmStatusConstant.REGISTER; } }
@Override protected String doCheck(BusiActionParamVO<T> param) throws BusinessException { String commonError = commonCheck(param); if (commonError != null) return commonError; ActionVO actionVO = param.getLastActionVO(); // 校验票据动作 if (!(actionVO.getActioncode().equals(FbmActionConstant.AUDIT) && actionVO.getBilltype().equals(FbmBusConstant.BILLTYPE_GATHER) && actionVO.getPk_bill().equals(param.getPk_bill()))) { return nc.vo.ml.NCLangRes4VoTransl.getNCLangRes() .getStrByID("fbmcomm", "UPPFBMComm-000239") /* @res"票据"*/ + param.getBaseinfoVO().getFbmbillno() + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes() .getStrByID("fbmcomm", "UPPFBMComm-000263") /* @res"的前一操作必须是审核收票登记单。"*/ + BusiMessageTranslator.translateAction(param); } return null; }
@Override protected String doCheck(BusiActionParamVO<T> param) throws BusinessException { ActionVO actionVO = param.getLastActionVO(); if (actionVO == null) { return nc.vo.ml.NCLangRes4VoTransl.getNCLangRes() .getStrByID("fbmcomm", "UPPFBMComm-000238") /* @res"找不到票据动作"*/; } // 2007.11.27 xwq承兑付款日期在票据到期日之后可不校验状态 if (actionVO.getEndstatus().equals(FbmStatusConstant.HAS_DESTROY)) { return nc.vo.ml.NCLangRes4VoTransl.getNCLangRes() .getStrByID("fbmcomm", "UPPFBMComm-000239") /* @res"票据"*/ + param.getBaseinfoVO().getFbmbillno() + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes() .getStrByID("fbmcomm", "UPPFBMComm-000318") /* @res"已核销,无法承兑"*/; } if (actionVO.getEndstatus().equals(FbmStatusConstant.HAS_PAY) || actionVO.getEndstatus().equals(FbmStatusConstant.ON_PAY)) { return nc.vo.ml.NCLangRes4VoTransl.getNCLangRes() .getStrByID("fbmcomm", "UPPFBMComm-000239") /* @res"票据"*/ + param.getBaseinfoVO().getFbmbillno() + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes() .getStrByID("fbmcomm", "UPPFBMComm-000319") /* @res"在付款或已付款,无法承兑"*/; } // 校验业务日期 if (actionVO.getActiondate().after(param.getActiondate())) { return param.getBaseinfoVO().getFbmbillno() + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes() .getStrByID("fbmcomm", "UPPFBMComm-000320") /* @res"的业务日期早于前一操作业务日期"*/; } // 校验付票是否审核 RegisterVO regVO = param.getRegisterVO(); if (regVO != null) { if (regVO.getVbillstatus().intValue() != IBillStatus.CHECKPASS && regVO.getVbillstatus().intValue() != IFBMStatus.Create) { throw new BusinessException( nc.vo.ml.NCLangRes4VoTransl.getNCLangRes() .getStrByID("fbmcomm", "UPPFBMComm-000321") /* @res"付票登记单状态必须为审核通过或已生成单据"*/); } } // 校验是否已生成划账单 // ICreateCorpQueryService ProductService = (ICreateCorpQueryService) // NCLocator.getInstance().lookup(ICreateCorpQueryService.class.getName()); // Hashtable productEnabled = // ProductService.queryProductEnabled(param.getRegisterVO().getPk_corp(),new // String[]{ProductCode.PROD_EP}); // if(((UFBoolean)productEnabled.get(ProductInfo.pro_EP)).booleanValue()){//启用了收付报才校验 // OuterRelationDAO relDao = new OuterRelationDAO(); // if(!relDao.isHjEffect(param.getPk_source())){ // throw new BusinessException("付票登记的划账结算单未生成或未生效"); // } // } return null; }
/** * 组装后台需要的RegisterVO * * @param param * @param oldVO * @return * @throws BusinessException */ private RegisterVO getNewVO(BusiActionParamVO<T> param) throws BusinessException { RegisterVO vo = new RegisterVO(); RegisterVO oldVO = param.getRegisterVO(); ReliefVO reliefVO = param.getSuperVO(); vo.setPk_baseinfo(param.getPk_baseinfo()); vo.setPk_billtypecode(FbmBusConstant.BILLTYPE_GATHER); vo.setGatherdate(param.getActiondate()); vo.setGathertype(FbmBusConstant.GATHER_TYPE_RELIEF); // 调剂来源 vo.setPk_source(param.getPk_bill()); // 来源单据:调剂出库单 vo.setPaybillunit( dao.queryCustByCorp(InvocationInfoProxy.getInstance().getCorpCode())); // 付票单位为当前登陆的公司 vo.setHoldunit(reliefVO.getReliefunit()); // 持票单位 vo.setMoneyy(oldVO.getMoneyy()); vo.setFrate(oldVO.getFrate()); vo.setBrate(oldVO.getBrate()); vo.setMoneyb(oldVO.getMoneyb()); vo.setMoneyf(oldVO.getMoneyf()); vo.setKeepunit( dao.queryCustByCorp(InvocationInfoProxy.getInstance().getCorpCode())); // 持票单位同付票单位,取中心 vo.setIsnewbill(UFBoolean.FALSE); vo.setSfflag(UFBoolean.FALSE); vo.setIsverify(UFBoolean.FALSE); vo.setNote(""); vo.setPk_corp(dao.queryCorpByCust(reliefVO.getReliefunit())); // 根据客商取公司 vo.setVbillno( new HYPubBO().getBillNo(FbmBusConstant.BILLTYPE_GATHER, vo.getPk_corp(), null, null)); /** ************************************************ */ vo.setSfflag(UFBoolean.TRUE); // 收付款标志,默认打上true /** ************************************************ */ vo.setVoperatorid(param.getActionperson()); vo.setDoperatedate(param.getActiondate()); vo.setVapproveid(param.getActionperson()); vo.setDapprovedate(param.getActiondate()); vo.setVapprovenote(""); return vo; }
/* * (non-Javadoc) * * @see nc.bs.fbm.pub.action.AbstractAction#dealAccount(java.lang.String, * nc.vo.fbm.pub.ActionParamVO) */ @Override public void dealAccount(String pk_action, BusiActionParamVO<T> param) throws BusinessException { CommonDAO dao = new CommonDAO(); BaseinfoVO baseinfoVO = dao.queryBaseinfoByPK(param.getPk_baseinfo()); /** 将A单位票据调剂给C单位 生成三条虚拟账户记录: A单位调剂存放户减少 C单位内部存放户增加 A和C的清算户 */ boolean isSelf = false; AccountDetailVO[] vos = null; if (BusiReliefUtil.isSelfBill(param)) { vos = new AccountDetailVO[2]; isSelf = true; } else { vos = new AccountDetailVO[4]; } // A调剂存放户减少 vos[0] = new AccountDetailVO(); vos[0].setPk_org(param.getUnit_a()); // 调出的单位 vos[0].setMoneyy(baseinfoVO.getMoneyy().multiply(-1)); vos[0].setPk_baseinfo(param.getPk_baseinfo()); vos[0].setPk_action(pk_action); vos[0].setPk_type(FbmBusConstant.ACCOUNT_TYPE_RELIEF); // 中心调剂户减少 vos[0].setReason(FbmBusConstant.ACCOUNT_REASON_RELIEF_USE); vos[0].setIsliquid(UFBoolean.FALSE); // 是否清算,默认false vos[0].setLiquidationdate(baseinfoVO.getEnddate()); // 清算日期 vos[0].setPk_register(param.getRegisterVO().getPrimaryKey()); // 设置pk_register // C内部存放户增加 vos[1] = new AccountDetailVO(); vos[1].setPk_org(param.getUnit_b()); // 调入的单位 vos[1].setMoneyy(baseinfoVO.getMoneyy()); vos[1].setPk_baseinfo(param.getPk_baseinfo()); vos[1].setPk_action(pk_action); vos[1].setPk_type(FbmBusConstant.ACCOUNT_TYPE_CENTER); // 中心存放户增加 vos[1].setReason(FbmBusConstant.ACCOUNT_REASON_RELIEF_USE); vos[1].setIsliquid(UFBoolean.FALSE); // 是否清算,默认false vos[1].setLiquidationdate(baseinfoVO.getEnddate()); // 清算日期 vos[1].setPk_register(param.getRegisterVO().getPrimaryKey()); // 设置pk_register if (!isSelf) { // A的清算户减少 vos[2] = new AccountDetailVO(); vos[2].setPk_org(param.getRegisterVO().getHoldunit()); // 调出的单位减少 vos[2].setMoneyy(baseinfoVO.getMoneyy()); vos[2].setPk_baseinfo(param.getPk_baseinfo()); vos[2].setPk_action(pk_action); vos[2].setPk_type(FbmBusConstant.ACCOUNT_TYPE_LIQUID); // A单位清算户减少 vos[2].setReason(FbmBusConstant.ACCOUNT_REASON_RELIEF_USE); vos[2].setIsliquid(UFBoolean.FALSE); // 是否清算,默认false vos[2].setLiquidationdate(baseinfoVO.getEnddate()); // 清算日期 vos[2].setPk_register(param.getRegisterVO().getPrimaryKey()); // 设置pk_register // C的清算户增加 vos[3] = new AccountDetailVO(); vos[3].setPk_org(param.getUnit_b()); // 调到的单位增加 vos[3].setMoneyy(baseinfoVO.getMoneyy().multiply(-1)); vos[3].setPk_baseinfo(param.getPk_baseinfo()); vos[3].setPk_action(pk_action); vos[3].setPk_type(FbmBusConstant.ACCOUNT_TYPE_LIQUID); // C单位清算户增加 vos[3].setReason(FbmBusConstant.ACCOUNT_REASON_RELIEF_USE); vos[3].setIsliquid(UFBoolean.FALSE); // 是否清算,默认false vos[3].setLiquidationdate(baseinfoVO.getEnddate()); // 清算日期 vos[3].setPk_register(param.getRegisterVO().getPrimaryKey()); // 设置pk_register } dao.getBaseDAO().insertVOArray(vos); }