Beispiel #1
0
  private void handleBudget(HttpServletRequest request, Payment entity) throws Exception {
    BudgetActionHelper budgetActionHelper =
        AppContextUtil.getAppContext().getBean("budgetActionHelper", BudgetActionHelper.class);
    BudgetHelper budgetHelper =
        AppContextUtil.getAppContext().getBean("budgetHelper", BudgetHelper.class);

    // handle budget
    User user = (User) ParamUtil.getSessionAttr(request, "LOGIN_USER");
    if (user == null) throw new Exception(MessageConsts.MSG_COMMON_SESSION_TIMEOUT);
    Budget currentBudget =
        budgetHelper.getBudgetByPaydate(user.getxDEPT_xID(), entity.getxPAY_DATE());

    // if there are no budget,then no paymentAction too
    if (currentBudget == null) {
      return;
    }

    BudgetAction paymenAction = new BudgetAction();
    paymenAction.setxACTION(MessageConsts.BUDGET_TYPE_PAYMENT);
    paymenAction.setxPAYMENT_ID(entity.getxID());
    paymenAction.setxACTION_AMT(entity.getxPAY_AMT());
    paymenAction.setxCREATER_ID(user.getxLOGIN_ID());
    if (currentBudget != null) {
      paymenAction.setxBUDGET_xID(currentBudget.getxID());
      paymenAction.setxSOURCE_AMT(currentBudget.getxBALANCE_AMT());
    }
    budgetActionHelper.insert(paymenAction);

    // handle borrow
    int deptId = ParamUtil.getInt(request, "deptId", 0);
    double borrowAmt = ParamUtil.getDouble(request, "borrowAmtHidden", 0);
    logger.info("PaymentAction-->borrowDeptId:" + deptId);
    logger.info("PaymentAction-->borrowAmt:" + borrowAmt);
    if (deptId > 0 && borrowAmt > 0) {
      Budget borrowBudget = budgetHelper.getBudgetByPaydate(deptId, entity.getxPAY_DATE());
      BudgetAction borrowOutAction = new BudgetAction();
      borrowOutAction.setxBUDGET_xID(borrowBudget.getxID());
      borrowOutAction.setxPAYMENT_ID(entity.getxID());
      borrowOutAction.setxACTION(MessageConsts.BUDGET_TYPE_BORROW_OUT);
      borrowOutAction.setxSOURCE_AMT(borrowBudget.getxBALANCE_AMT());
      borrowOutAction.setxACTION_AMT(borrowAmt);
      borrowOutAction.setxCREATER_ID(user.getxLOGIN_ID());
      budgetActionHelper.insert(borrowOutAction);

      borrowBudget.setxBALANCE_AMT(Calculator.sub(borrowBudget.getxBALANCE_AMT(), borrowAmt));
      budgetHelper.update(borrowBudget);

      BudgetAction borrowInAction = new BudgetAction();
      borrowInAction.setxBUDGET_xID(currentBudget.getxID());
      borrowInAction.setxPAYMENT_ID(entity.getxID());
      borrowInAction.setxACTION(MessageConsts.BUDGET_TYPE_BORROW_IN);
      borrowInAction.setxSOURCE_AMT(currentBudget.getxBALANCE_AMT());
      borrowInAction.setxACTION_AMT(borrowAmt);
      borrowInAction.setxRELATED_BUDGET_ACTION_ID(borrowOutAction.getxID());
      borrowInAction.setxCREATER_ID(user.getxLOGIN_ID());
      budgetActionHelper.insert(borrowInAction);

      borrowOutAction.setxRELATED_BUDGET_ACTION_ID(borrowInAction.getxID());
      budgetActionHelper.update(borrowOutAction);
    }

    double currentBalanceAmt =
        Calculator.add(
            Calculator.sub(currentBudget.getxBALANCE_AMT(), entity.getxPAY_AMT()), borrowAmt);
    currentBudget.setxBALANCE_AMT(currentBalanceAmt);
    budgetHelper.update(currentBudget);
  }
Beispiel #2
0
  private void rollBackPreviousAction(Payment payment) {
    int xID = payment.getxID();

    BudgetActionHelper budgetActionHelper =
        AppContextUtil.getAppContext().getBean("budgetActionHelper", BudgetActionHelper.class);
    List<BudgetAction> budgetActions =
        budgetActionHelper.getActionByActionTypeAndPaymentID(null, xID);

    BudgetHelper budgetHelper =
        AppContextUtil.getAppContext().getBean("budgetHelper", BudgetHelper.class);
    Budget borrowOutBudget = null;
    Budget currentBudget = null;
    Double borrowInAmt = 0.0D;
    if (budgetActions != null && budgetActions.size() > 0) {
      //
      for (int i = 0; i < budgetActions.size(); i++) {
        BudgetAction action = budgetActions.get(i);
        if (MessageConsts.BUDGET_TYPE_BORROW_OUT.equals(action.getxACTION())) {
          double borrowOutAmt = action.getxACTION_AMT();
          borrowInAmt = borrowOutAmt;
        }
      }

      for (int i = 0; i < budgetActions.size(); i++) {
        BudgetAction action = budgetActions.get(i);

        // add the budgetAmt to borrowOut Budget
        if (MessageConsts.BUDGET_TYPE_BORROW_OUT.equals(action.getxACTION())) {
          // Get the borrow out budget
          int borrowOutBudgetId = action.getxBUDGET_xID();
          double borrowOutAmt = action.getxACTION_AMT();

          // Add the borrowOutAmt to the borrow out budget
          borrowOutBudget = budgetHelper.getBudget(borrowOutBudgetId, false);
          if (borrowOutBudget != null) {
            logger.info(
                "BorrowOut Budget Amt: "
                    + String.valueOf(
                        Calculator.add(borrowOutBudget.getxBALANCE_AMT(), borrowOutAmt)));
            borrowOutBudget.setxBALANCE_AMT(
                Calculator.add(borrowOutBudget.getxBALANCE_AMT(), borrowOutAmt));
            budgetHelper.update(borrowOutBudget);
          }
        }

        // add the budgetAmt to current Budget
        if (MessageConsts.BUDGET_TYPE_PAYMENT.equals(action.getxACTION())) {
          // Get the borrow out budget
          int currentBudgetId = action.getxBUDGET_xID();
          double payOutAmt = action.getxACTION_AMT();

          // Add the budgetAmt to the current budget
          currentBudget = budgetHelper.getBudget(currentBudgetId, false);
          if (currentBudget != null) {
            logger.info(
                "currentBudget.getxBALANCE_AMT(): "
                    + String.valueOf(currentBudget.getxBALANCE_AMT()));
            logger.info("payOutAmt: " + String.valueOf(payOutAmt));
            logger.info("borrowInAmt: " + String.valueOf(borrowInAmt));
            logger.info(
                "Current Budget Amt "
                    + Calculator.sub(
                        Calculator.add(currentBudget.getxBALANCE_AMT(), payOutAmt), borrowInAmt));
            currentBudget.setxBALANCE_AMT(
                Calculator.sub(
                    Calculator.add(currentBudget.getxBALANCE_AMT(), payOutAmt), borrowInAmt));
            budgetHelper.update(currentBudget);
          }
        }

        // delete this budget action
        budgetActionHelper.delete(action.getxID());
      }
    }
  }