Пример #1
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);
  }