public void saveGR() {
   LogManager log = new LogManager();
   try {
     // µÃǨÇèÒµéͧÁÕ¡ÒáÓ˹´ StorageLocation
     /*for (GoodsReceiptItem grItem : grItemList) {
     	if (grItem.getStorageLocation()== null ){
     		throw new ControllerException("¡ÃسÒÃкØʶҹ·Õè¨Ñ´à¡çºãËé¡Ñº·Ø¡ÃÒ¡Ò÷Õèµéͧ¡ÒÃÃѺà¢éÒ¤Åѧ");
     	}
     }*/
     if (isItemAmountOrPriceChanged == true && !editGR.getTotalDiscountAmount().equals(zero)) {
       throw new ControllerException("¡Ãسҡ´»ØèÁ¡ÃШÒÂÊèǹŴÍÕ¡¤ÃÑé§");
     }
     editGR.setGoodsReceiptItems(grItemList);
     if (editGR.getId() == null) {
       editGR.setBudgetYear(budgetYear);
       editGR = grController.saveGoodsReceipt(editGR);
       log.recordCreateGr(editGR.getFormattedGrNumber(), editGR.getTotalPrice());
     } else {
       editGR = grController.saveGoodsReceipt(editGR);
       log.recordUpdateGr(editGR.getFormattedGrNumber(), editGR.getTotalPrice());
     }
     createPOSelectItemList();
     listGR();
     grTableRowClicked();
     isGrSaved = true;
   } catch (ControllerException e) {
     FacesUtils.reportError(FacesContext.getCurrentInstance(), e.getMessage(), e.getMessage(), e);
     e.printStackTrace();
   }
 }