package com.ese.beans; import com.ese.model.db.MSItemModel; import com.ese.model.db.MSLocationModel; import com.ese.model.db.MSWarehouseModel; import com.ese.model.db.PickingOrderModel; import com.ese.model.view.*; import com.ese.service.PickingOrderService; import com.ese.service.security.UserDetail; import com.ese.utils.FacesUtil; import com.ese.utils.MessageDialog; import com.ese.utils.Utils; import lombok.Getter; import lombok.Setter; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.servlet.http.HttpSession; import java.util.ArrayList; import java.util.List; @Getter @Setter @ViewScoped @ManagedBean(name = "pickingOrderShowItemBean") public class PickingOrderShowItemBean extends Bean { private static final long serialVersionUID = 4112578334029874840L; @ManagedProperty("#{pickingOrderShowItemService}") private com.ese.service.PickingOrderShowItemService pickingOrderShowItemService; @ManagedProperty("#{pickingOrderService}") private PickingOrderService pickingOrderService; private PickingOrderModel pickingOrderModel; private boolean flagItem; private boolean flagFIFOReserved; private boolean flagPeriodReserved; private boolean flagManualReserved; private boolean flagPoil; private boolean flagShowStatus; private boolean flagPrint; private String startBatch; private String toBatch; private String resultReserve; private List<PickingOrderShowItemView> orderLineModelList; private List<PickingOrderShowItemView> selectPickingLine; private PickingOrderShowItemView itemView; private List<MSWarehouseModel> msWarehouseModelList; private int warehouseId; private List<MSLocationModel> msLocationModelList; private int locationId; private List<LocationQtyView> locationQtyBox; private int locationQtyId; private List<LocationQtyView> locationQtyViewList; private LocationQtyView selectLocationQtyView; private int rowIndex; private int reservedManualQty; private ItemQtyView itemQtyView; private int pickingLineId; //addItemDialog private boolean flagSearch; private boolean flagSelect; private ItemQtySearchView itemQtySearchView; private List<MSItemModel> itemQtyViewList; private MSItemModel selectItemQty; private UserDetail userDetail; //showItemStatusDialog private List<ShowItemStatusView> showItemStatusViewList; private ShowItemStatusView selectShowItemStatus; private boolean flagRemove; @PostConstruct private void init(){ HttpSession session = FacesUtil.getSession(false); pickingOrderModel = (PickingOrderModel) session.getAttribute("pickingOrderId"); if(preLoad()/* && isAuthorize(key)*/){ userDetail = getUser(); } btnOnload(); onLoadTable(); onNewObject(); } private void btnOnload(){ flagItem = false; flagFIFOReserved = true; flagPeriodReserved = true; flagManualReserved = true; flagPoil = true; flagShowStatus = true; flagPrint = true; } private void onLoadTable(){ orderLineModelList = pickingOrderShowItemService.getPickingOrderLineByPickingOrderId(pickingOrderModel.getId()); } private void onNewObject(){ selectPickingLine = new ArrayList<PickingOrderShowItemView>(); selectLocationQtyView = new LocationQtyView(); itemView = new PickingOrderShowItemView(); } public void onClose(){ FacesUtil.redirect("/site/pickingOrder.xhtml"); } public void onClickTable(){ if (Utils.isSafetyList(selectPickingLine)){ if (selectPickingLine.size() == 1){ for (PickingOrderShowItemView view : selectPickingLine){ if (view.getReservedQty() != view.getQty()) { if (view.getStatusID() < 3){ if (selectPickingLine.size() > 1){ flagItem = true; flagManualReserved = true; } else { flagItem = false; flagManualReserved = false; } flagFIFOReserved = false; flagPeriodReserved = false; flagPoil = false; flagShowStatus = false; flagPrint = false; } } else { flagFIFOReserved = true; flagPeriodReserved = true; flagManualReserved = true; flagPoil = false; flagShowStatus = false; } // String flagReserved = pickingOrderShowItemService.checkQty(view.getId()); // if ("Success".equals(flagReserved)){ // } else { // if (view.getStatusID() < 3){ // if (selectPickingLine.size() > 1){ // flagItem = true; // } else { // flagItem = false; // } // } // // flagPrint = false; // flagShowStatus = false; // flagFIFOReserved = true; // flagPeriodReserved = true; // flagManualReserved = true; // } } } else { flagPoil = false; flagShowStatus = false; flagFIFOReserved = true; flagPeriodReserved = true; flagManualReserved = true; } } else { btnOnload(); } } public void onClickFoil(){ if (Utils.isSafetyList(selectPickingLine)){ showDialog(MessageDialog.WARNING.getMessageHeader(), "Click Yes to unwrap or wrap.", "foilDlg"); } } public void warpOnFoil(){ for (PickingOrderShowItemView itemView : selectPickingLine){ pickingOrderShowItemService.updateIsFoil(itemView.getId(), itemView.getFoil()); } init(); } public void FIFOReserved(){ for (PickingOrderShowItemView view : selectPickingLine){ if (pickingOrderShowItemService.checkReserve(view.getItem())){ pickingOrderShowItemService.onReserved(view.getId(), "", ""); pickingOrderShowItemService.setStatusPickingOrder(pickingOrderModel.getId()); showDialog(MessageDialog.SAVE.getMessageHeader(), "Success.", "msgBoxSystemMessageDlg"); init(); } else { showDialog(MessageDialog.WARNING.getMessageHeader(), "no item in warehouse", "msgBoxSystemMessageDlg"); } } } public void onClickPeriodReserve(){ for (PickingOrderShowItemView view : selectPickingLine){ if (pickingOrderShowItemService.checkReserve(view.getItem())){ showDialog("", "", "periodDlg"); } else { showDialog(MessageDialog.WARNING.getMessageHeader(), "no item in warehouse", "msgBoxSystemMessageDlg"); } } } public void onClickManualReserve(){ for (PickingOrderShowItemView view : selectPickingLine){ if (!Utils.isZero(view.getReservedQty())){ showDialog("", "", "periodDlg"); } else { showDialog(MessageDialog.WARNING.getMessageHeader(), "no item in warehouse", "msgBoxSystemMessageDlg"); } } } public void PeriodReserve(){ String[] sBatch = startBatch.split("-"); String[] tBatch = toBatch.split("-"); String batchStart = sBatch[0] + sBatch[1]; String batchTo = tBatch[0] + tBatch[1]; if (Utils.parseInt(batchStart, 0) <= Utils.parseInt(batchTo, 0)){ for (PickingOrderShowItemView view : selectPickingLine){ pickingOrderShowItemService.onReserved(view.getId(), startBatch, toBatch); pickingOrderShowItemService.setStatusPickingOrder(pickingOrderModel.getId()); showDialog(MessageDialog.SAVE.getMessageHeader(), "Success.", "msgBoxSystemMessageDlg"); init(); } } else { showDialog(MessageDialog.WARNING.getMessageHeader(), "StartBatch > ToBatch", "msgBoxSystemMessageDlg"); } } public void preManualReserved(){ warehouseId = 0; msLocationModelList = new ArrayList<MSLocationModel>(); locationQtyBox = new ArrayList<LocationQtyView>(); if (selectPickingLine.size() > 1){ showDialog(MessageDialog.WARNING.getMessageHeader(), "กรุณา Reserved ทีละ 1", "msgBoxSystemMessageDlg"); } else { onLoadManualReserved(); } } private void onLoadManualReserved(){ log.debug("selectPickingLine Size : {}", selectPickingLine.size()); for (PickingOrderShowItemView view : selectPickingLine){ if (pickingOrderShowItemService.checkReserve(view.getItem())){ locationQtyViewList = pickingOrderShowItemService.onManualReserved(view.getId(), "", 0, 0); pickingLineId = view.getId(); itemView = view; msWarehouseModelList = pickingOrderShowItemService.getWarehouseAll(); showDialog("", "", "manualDlg"); log.debug("msLocationModelList Size : {}", msWarehouseModelList.size()); } else { showDialog(MessageDialog.WARNING.getMessageHeader(), "no item in warehouse", "msgBoxSystemMessageDlg"); } } } public void onCloseManual(){ pickingOrderShowItemService.closeManual(pickingLineId); } public void getLocationByWarehouseId(){ msLocationModelList = pickingOrderShowItemService.getLocationByWarehouse(warehouseId); locationQtyBox = new ArrayList<LocationQtyView>(); } public void getBtachByLocationName(){ locationQtyBox = pickingOrderShowItemService.getBatchByLocation(locationId); } public void onSearchByManual(){ locationQtyViewList = pickingOrderShowItemService.getLocationQtyBySearch(itemView.getItem(), warehouseId, locationId, locationQtyId); } public void ManualReserved(){ log.debug("reservedManualQty [{}]", reservedManualQty); if (reservedManualQty > selectLocationQtyView.getAvailable()){ log.debug("1"); showDialog(MessageDialog.WARNING.getMessageHeader(), "Reserved Qty > Avaliable Qty.", "msgBoxSystemMessageDlg"); } else if (Utils.isZero(reservedManualQty)){ log.debug("2"); showDialog(MessageDialog.WARNING.getMessageHeader(), "กรุณาใส่จำนวน Reserved Qty.", "msgBoxSystemMessageDlg"); } else if (reservedManualQty <= selectLocationQtyView.getAvailable()){ log.debug("3"); boolean flagMessage = pickingOrderShowItemService.saveManualReserved(selectLocationQtyView, reservedManualQty, itemView.getId()); log.debug("flagMessage [{}]", flagMessage); if (flagMessage){ log.debug("3.1"); pickingOrderShowItemService.setStatusPickingOrder(pickingOrderModel.getId()); showDialog(MessageDialog.SAVE.getMessageHeader(), "Success.", "msgBoxSystemMessageDlg"); init(); } else { log.debug("3.2"); showDialog(MessageDialog.WARNING.getMessageHeader(), "can't reserve", "msgBoxSystemMessageDlg"); } } reservedManualQty = 0; // locationQtyViewList = pickingOrderShowItemService.onManualReserved(itemView.getId(), "", 0, 0); // locationQtyViewList = pickingOrderShowItemService.getLocationQtyBySearch(itemView.getItem(), warehouseId, locationId, locationQtyId); // orderLineModelList = pickingOrderShowItemService.getPickingOrderLineByPickingOrderId(pickingOrderModel.getId()); onLoadTable(); // onLoadManualReserved(); log.debug("itemView [{}]", itemView.toString()); } public void onAddEditItem(){ log.debug("--onAddEditItem."); if (!Utils.isZero(selectPickingLine.size())){ itemQtyView = new ItemQtyView(); if (selectPickingLine.size() > 1){ flagItem = true; } else { showDialog("Edit Order Qty.", "", "itemQtyDlg"); for (PickingOrderShowItemView view : selectPickingLine){ itemQtyView.setPickLineId(view.getId()); itemQtyView.setItemCode(view.getItem()); itemQtyView.setItemDes(view.getDescription()); itemQtyView.setOrderQty(view.getQty()); itemQtyView.setReservedQty(view.getReservedQty()); } } } else { showDialog("searchItemQtyDlg"); itemQtyViewList = new ArrayList<MSItemModel>(); itemQtySearchView = new ItemQtySearchView(); flagSearch = false; flagSelect = true; } } public void onSaveItemQty(){ log.debug("------ {}", itemQtyView.toString()); if (Utils.isZero(itemQtyView.getPickLineId())){ if (!Utils.isZero(itemQtyView.getOrderQty())){ pickingOrderShowItemService.onSavePickingLine(pickingOrderModel, userDetail, itemQtyView); showDialog(MessageDialog.SAVE.getMessageHeader(), "Success.", "msgBoxSystemMessageDlg"); init(); } else { showDialog(MessageDialog.WARNING.getMessageHeader(), "กรุณาใส่ Order Qty.", "msgBoxSystemMessageDlg"); } } else { log.debug("OrderQty : [{}] :::::: ReservedQty : [{}]", itemQtyView.getOrderQty(), itemQtyView.getReservedQty()); if (itemQtyView.getReservedQty() <= itemQtyView.getOrderQty()){ pickingOrderShowItemService.saveItemQty(itemQtyView.getPickLineId(), itemQtyView.getOrderQty()); showDialog(MessageDialog.SAVE.getMessageHeader(), "Success.", "msgBoxSystemMessageDlg"); init(); } else { showDialog(MessageDialog.WARNING.getMessageHeader(), "Edit fail. This item was reserved. Please cancel the reserved qty first.", "msgBoxSystemMessageDlg"); } } } public void onSearchItemQty(){ itemQtyViewList = pickingOrderShowItemService.searchItemQty(itemQtySearchView); log.debug("itemQtyViewList Size : {}", itemQtyViewList.size()); } public void onClickItemQty(){ flagSelect = false; } public void onSelectItemQty(){ itemQtyView = new ItemQtyView(); itemQtyView.setItemCode(selectItemQty.getItemId()); itemQtyView.setItemName(selectItemQty.getItemName()); itemQtyView.setItemDes(selectItemQty.getDSGThaiItemDescription()); itemQtyView.setOrderQty(0); } public void onShowItemStatus(){ if (selectPickingLine.size() > 1){ showDialog(MessageDialog.WARNING.getMessageHeader(), "กรุณาเลือก Picking Order Line ทีละ 1", "msgBoxSystemMessageDlg"); } else { showDialog("showItemStatusDlg"); flagRemove = true; onLoadShowItemStatus(); } } private void onLoadShowItemStatus(){ selectShowItemStatus = new ShowItemStatusView(); for (PickingOrderShowItemView view : selectPickingLine){ itemQtyView = new ItemQtyView(); itemQtyView.setItemCode(view.getItem()); itemQtyView.setItemName(view.getItemName()); itemQtyView.setItemDes(view.getDescription()); itemQtyView.setOrderQty(view.getOrderQty()); itemQtyView.setReservedQty(view.getReservedQty()); itemQtyView.setPickingQty(view.getQty()); showItemStatusViewList = pickingOrderShowItemService.getReservedOrder(view.getId()); } } public void removeShowItemStatus(){ pickingOrderShowItemService.onRemove(selectShowItemStatus.getId(), itemQtyView.getItemCode()); onLoadShowItemStatus(); } public void onClickShowItemStatusTable(){ flagRemove = false; } public void stikerWorkLoadReport(){ pickingOrderService.getStikerWorkLoadReport(pickingOrderModel.getId(), userDetail); } public void confirmationPackingReport(){ pickingOrderService.getConfirmationPackingReport(pickingOrderModel.getId(), userDetail); } public void onCloseShowStatusDialog(){ init(); } }