private void createStorageLocationSelectItemList() {
   SelectItem selectItem;
   storageLocationSelectItemList.clear();
   storageLocationSelectItemList.add(new SelectItem("-1", "àÅ×͡ʶҹ·Õè¨Ñ´à¡çº"));
   for (StorageLocation stLocation : StorageLocation.warehouse(warehouseCode)) {
     selectItem = new SelectItem();
     selectItem.setValue(stLocation.getID());
     selectItem.setLabel(stLocation.getValue());
     storageLocationSelectItemList.add(selectItem);
   }
 }
  public void saveGRItem() {
    try {
      /*editGRItem.setMaterial(selectedMaterial);
      if (selectedMaterial != null ){
      	editGRItem.setReceiveUnit(selectedMaterial.getOrderUnit());
      	editGRItem.setUnitPrice(selectedMaterial.getOrderUnitPrice());
      }*/
      if (editGRItem.getBudgetItem() == null) {
        throw new ControllerException("¡ÃسÒàÅ×Í¡ËÁÇ´§º»ÃÐÁÒ³");
      }
      if (selectedGRType.equalsIgnoreCase(GRType.PO.getID())) {
        if (editGRItem.getReceivedQty().compareTo(editGRItem.getOrderQty()) == 1) {
          editGRItem.setReceivedQty(editGRItem.getOrderQty());
          throw new ControllerException("äÁèÊÒÁÒöÃѺ¢Í§à¡Ô¹¨Ó¹Ç¹·ÕèÊÑ觫×éÍä´é");
        }
        if (!editGRItem.getOrderUnitPrice().equals(zero)) {
          if (editGRItem.getUnitPrice().compareTo(editGRItem.getOrderUnitPrice()) == 1) {
            editGRItem.setUnitPrice(editGRItem.getOrderUnitPrice());
            throw new ControllerException("äÁèÊÒÁÒöãÊèÃÒ¤ÒµèÍ˹èÇÂà¡Ô¹ÃÒ¤Ò·ÕèÊÑ觫×éÍä´é");
          }
        }
      }
      // µÃǨÊͺÇèÒÁÕ¡ÒÃàÅ×Í¡ material ËÃ×Í ãÊè other material ËÃ×ÍäÁè
      if (editGRItem.getMaterial() == null
          && (editGRItem.getOtherMaterial() == null
              || editGRItem.getOtherMaterial().trim().equals(""))) {
        throw new ControllerException("¡ÃسÒàÅ×Í¡ÇÑÊ´Ø·Õèµéͧ¡ÒÃÃѺ");
      }
      // äÁèãËéãÊè·Ñé§ material áÅÐ othermaterial
      if (editGRItem.getMaterial() != null
          && (editGRItem.getOtherMaterial() != null
              && !editGRItem.getOtherMaterial().trim().equals(""))) {
        throw new ControllerException("¡ÃسÒàÅ×Í¡ÇÑÊ´Ø ËÃ×Í ÇÑÊ´ØÍ×è¹æÍÂèÒ§ã´ÍÂèҧ˹Öè§à·èÒ¹Ñé¹");
      }
      // µÃǨÊͺÇèÒÁÕÃÒ¡ÒëéÓËÃ×ÍäÁè
      for (GoodsReceiptItem grItem : grItemList) {
        System.out.println("editPrITem otherMaterial" + editGRItem.getOtherMaterial());
        System.out.println("prITem otherMaterial" + editGRItem.getOtherMaterial());
        if (editGRItem.getItemNumber() != grItem.getItemNumber()) {
          if (editGRItem.getMaterial() != null
              && grItem.getMaterial() != null
              && editGRItem.getMaterial().getId().equals(grItem.getMaterial().getId())) {
            System.out.println("Same material");
            throw new ControllerException(
                "ÇÑÊ´Ø " + editGRItem.getMaterial() + " ÁÕÍÂÙèáÅéÇäÁèÊÒÁÒôÓà¹Ô¹¡ÒõèÍä´é");
          } else if (editGRItem.getOtherMaterial() != null
              && grItem.getOtherMaterial() != null
              && !editGRItem.getOtherMaterial().trim().equals("")
              && !editGRItem.getOtherMaterial().trim().equals("")
              && editGRItem.getOtherMaterial().equals(grItem.getOtherMaterial())) {
            System.out.println("Same othermaterial");
            throw new ControllerException(
                "ÇÑÊ´Ø " + editGRItem.getOtherMaterial() + " ÁÕÍÂÙèáÅéÇäÁèÊÒÁÒôÓà¹Ô¹¡ÒõèÍä´é");
          }
        }
      }
      /*if (storageLocation.equals("-1")){
      	throw new ControllerException("¡ÃسÒàÅ×͡ʶҹ·Õè¨Ñ´à¡çº");
      }*/
      editGRItem.setStorageLocation(StorageLocation.find(storageLocation));
      editGRItem.setTotalprice(editGRItem.getReceivedQty().multiply(editGRItem.getUnitPrice()));

      if (editGRItem.getDiscountAmount().compareTo(zero) != 0) {
        editGRItem.setNetPrice(editGRItem.getTotalprice().subtract(editGRItem.getDiscountAmount()));
        editGRItem.setAvgPrice(
            editGRItem.getNetPrice().divide(editGRItem.getReceivedQty(), 2, RoundingMode.HALF_UP));
      } else {
        editGRItem.setNetPrice(editGRItem.getTotalprice());
        editGRItem.setAvgPrice(editGRItem.getUnitPrice());
      }
      if (isNewGrItem) {
        grItemList.add(editGRItem);
      }
      if ((editGRItem.getOrderQty().compareTo(editGRItem.getReceivedQty()) != 0)
          || (editGRItem.getOrderUnitPrice().compareTo(editGRItem.getUnitPrice()) != 0)) {
        isItemAmountOrPriceChanged = true;
        System.out.println("true");
      } else {
        isItemAmountOrPriceChanged = false;
        System.out.println("false");
      }
      newGRItem();
    } catch (ControllerException e) {
      e.printStackTrace();
      FacesUtils.reportError(FacesContext.getCurrentInstance(), e.getMessage(), e.getMessage(), e);
    }
    /*if (isNewGrItem) {
    	grItemList.add(editGRItem);
    }*/
  }