@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;
  }
Exemple #3
0
  @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;
  }
Exemple #4
0
  /**
   * 组装后台需要的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;
  }
Exemple #5
0
  /*
   * (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);
  }