public void onPrintTag(int palletId) {
    String printTagReportName = Utils.genReportName("_PrintTag");
    String partReport = "";
    PalletModel palletModel = null;
    List<PalletManagemengModelReport> reportViews = null;
    HashMap map = new HashMap<String, Object>();

    try {
      palletModel = palletDAO.findByID(palletId);
      if (!Utils.isNull(palletModel) && Utils.isZero(palletModel.getIsCombine())) {
        reportViews = palletDAO.genSQLReportPallet(palletId);
        partReport = pathPrintTagReport;
      } else if (!Utils.isNull(palletModel) && !Utils.isZero(palletModel.getIsCombine())) {
        partReport = pathPrintTagV2Report;
        map.put("path", FacesUtil.getRealPath(pathSubReport));
        map.put("MainPallet", palletDAO.findByIdToReport(palletModel.getId()));
        map.put("SubPallet", palletDAO.genSQLReportPalletV2(palletModel.getId()));
      }
    } catch (Exception e) {
      log.debug("Exception error onPrintTag : ", e);
    }

    try {
      reportService.exportPDF(partReport, map, printTagReportName, reportViews);
    } catch (Exception e) {
      log.debug("Exception Report : ", e);
    }
  }
  public void changeLocation(
      PalletTransferView palletManagementView,
      LocationItemView locationItemView,
      int stockInOutId) {
    log.debug("changeLocation().");
    try {
      MSLocationModel model = locationDAO.findByID(locationItemView.getId()); // toLocation
      PalletModel palletModel = palletDAO.findByID(palletManagementView.getId()); // fromPallet

      palletDAO.updateNewPalletTransferByChangeLocation(palletModel.getId(), model.getId());

      if (palletModel.getStatus() == 3) {
        // Print Tag
        palletDAO.updateLocationByStatusPrinted(palletModel.getMsLocationModel().getId());
      } else {
        // Find Location
        palletDAO.updateLocationByStatusLocated(model.getId());
      }

      // บวกของใหม่  ลบของเก่า
      palletDAO.updateLocationByOld(model.getId());
      //            palletDAO.updateLocationByNew(palletModel.getMsLocationModel().getId());

      saveOrUpdateStockInOutLine(palletModel, stockInOutId, model);

    } catch (Exception e) {
      log.debug("Exception : {}", e);
    }
  }
  public void onUpdateByPrintTag(PalletTransferView palletManagementView, String redirect) {
    log.debug("onSaveByPrintTag().");
    PalletModel palletModel = null;
    int staffModel = (int) FacesUtil.getSession(false).getAttribute(AttributeName.STAFF.getName());
    try {
      if (!Utils.isNull(palletManagementView)) {
        palletModel = palletDAO.findByID(palletManagementView.getId());

        if (palletModel.getStatus() == 2) {
          palletModel.setStatus(palletModel.getStatus() + 1);
        } else {
          palletModel.setStatus(palletModel.getStatus());
        }
        palletModel.setUpdateBy(staffModel);
        palletModel.setUpdateDate(new Date());
      }

      palletDAO.update(palletModel);
    } catch (Exception e) {
      log.debug("Exception : {}", e);
    }
  }
  private void saveOrUpdateStockInOutLine(
      PalletModel palletModel, int stockInOutId, MSLocationModel toLocationId) {
    // jowjo
    StockInOutLineModel stockInOutLineModel = null;

    stockInOutLineModel =
        stockInOutLineDAO.findByPalletIdAndStockInOutId(palletModel.getId(), stockInOutId);
    int staffModel = (int) FacesUtil.getSession(false).getAttribute(AttributeName.STAFF.getName());

    try {
      if (!Utils.isNull(stockInOutLineModel) && !Utils.isZero(stockInOutLineModel.getId())) {
        log.debug("Update Stock In Out Line");
        stockInOutLineModel.setUpdateBy(staffModel);
        stockInOutLineModel.setUpdateDate(Utils.currentDate());
        stockInOutLineModel.setMsItemModel(palletModel.getMsItemModel());
        stockInOutLineModel.setPalletModel(palletModel);
        stockInOutLineModel.setMsLocationModel(toLocationId);
        stockInOutLineModel.setBarcode(palletModel.getPalletBarcode());
        stockInOutLineModel.setPreviousLocationId(palletModel.getMsLocationModel().getId());
        stockInOutLineDAO.update(stockInOutLineModel);
      } else {
        log.debug("Prsist Stock In Out Line");
        stockInOutLineModel = new StockInOutLineModel();

        stockInOutLineModel.setCreateBy(staffModel);
        stockInOutLineModel.setCreateDate(Utils.currentDate());
        stockInOutLineModel.setUpdateBy(staffModel);
        stockInOutLineModel.setUpdateDate(Utils.currentDate());
        stockInOutLineModel.setMsItemModel(palletModel.getMsItemModel());
        stockInOutLineModel.setPalletModel(palletModel);
        stockInOutLineModel.setMsLocationModel(toLocationId);
        stockInOutLineModel.setBarcode(palletModel.getPalletBarcode());
        stockInOutLineModel.setStockInOutModel(stockInOutDAO.findByID(stockInOutId));
        stockInOutLineModel.setPreviousLocationId(palletModel.getMsLocationModel().getId());
        stockInOutLineModel.setIsValid(1);
        stockInOutLineModel.setVersion(1);
        //               stockInOutLineModel.setQty(0);
        stockInOutLineDAO.persist(stockInOutLineModel);
      }
    } catch (Exception e) {
      log.debug("Exception error saveOrUpdateStockInOutLine : ", e);
    }
  }