package com.ese.beans;
import com.ese.model.db.*;
import com.ese.model.view.*;
import com.ese.model.view.dilog.WarehouseDialogView;
import com.ese.service.*;
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 java.util.ArrayList;
import java.util.List;
@Getter
@Setter
@ViewScoped
@ManagedBean(name = "setup")
public class SetupBean extends Bean{
private static final long serialVersionUID = 4212578634029874840L;
@ManagedProperty("#{setupService}") private SetupService setupService;
@ManagedProperty("#{locationService}") private LocationService locationService;
@ManagedProperty("#{warehouseService}") private WarehouseService warehouseService;
@ManagedProperty("#{locationItemService}") private LocationItemService locationItemService;
@ManagedProperty("#{itemService}") private ItemService itemService;
@ManagedProperty("#{stockInOutNoteService}") private StockInOutNoteService stockInOutNoteService;
@ManagedProperty("#{message['authorize.menu.setup']}") private String key;
private SetupView setupView;
private WarehouseAndLocationView warehouseAndLocationView;
private WarehouseDialogView warehouseDialogView;
private List<WarehouseAndLocationView> warehouseAndLocationViewList;
private boolean flagBtnNewWarehouse;
private boolean flagBtnAddShowItem;
private boolean flagBtnAddEdit;
private boolean flagBtnDelete;
private boolean flagBtnDeleteStock;
private String modeStock;
private String nameBtnStock;
private String modeWarehouse;
private String nameBtn;
private List<LocationView> locationViewList;
private LocationView locationView;
private List<MSWarehouseModel> msWarehouseModelList;
private MSWarehouseModel msWarehouseModel;
private List<MSLocationModel> msLocationModelList;
private MSLocationModel msLocationModel;
private WarehouseView warehouseView;
private List<MSLocationItemsModel> msLocationItemsModelList;
private MSLocationItemsModel msLocationItemsModel;
private String itemSearch;
private List<MSItemModel> msItemModelList;
private String selectType;
private List<MSItemModel> selectItem;
private List<MSLocationItemsModel> selectLocationItem;
private List<MSStockInOutNoteModel> stockInOutNoteModelList;
private MSStockInOutNoteModel stockInOutNoteModel;
private StockInOutNoteView stockInOutNoteView;
private String modeWarehouseDlg;
private String keySearch;
private boolean flagFoil;
public SetupBean() {
}
@PostConstruct
public void onCreation(){
log.debug("onCreation()");
if(preLoad() && isAuthorize(key)){
init();
}
}
private void init(){
setupView = new SetupView();
warehouseDialogView = new WarehouseDialogView();
locationView = new LocationView();
msWarehouseModel = new MSWarehouseModel();
warehouseView = new WarehouseView();
msLocationItemsModel = new MSLocationItemsModel();
stockInOutNoteModel = new MSStockInOutNoteModel();
stockInOutNoteView = new StockInOutNoteView();
modeWarehouse = "Mode(New)";
nameBtn = "New";
modeStock = "Mode(New)";
nameBtnStock = "Cancel";
flagFoil = false;
btnOnLoad();
onLoadLocationTB();
warehouseOnLoad();
OnLoadStockInOutNote();
}
// public void test(){
// log.debug("#### {}",locationView.getWarehouseModel().getId());
// }
private void btnOnLoad(){
flagBtnNewWarehouse = false;
flagBtnAddShowItem = true;
flagBtnAddEdit = false;
flagBtnDelete = true;
flagBtnDeleteStock = true;
}
private void warehouseOnLoad(){
msWarehouseModelList = warehouseService.getWarehouseAll();
}
private void onLoadLocationTB(){
msLocationModelList = locationService.getLocationAll();
}
public void OnLoadStockInOutNote(){
stockInOutNoteView = new StockInOutNoteView();
stockInOutNoteModelList = stockInOutNoteService.getStockInOutNoteAll();
}
private boolean checkLocationCode(LocationView locationView){
log.debug("checkLocationCode {}",locationView);
return locationService.isDuplicate(locationView.getWarehouseModel().getId(), locationView.getLocationBarcode(), locationView.getId());
}
public void onClickNewOrCancelWarehouse(){
log.debug("NewOrCancel.");
modeWarehouse = "Mode(New)";
nameBtn = "New";
msLocationModel = new MSLocationModel();
locationView = new LocationView();
btnOnLoad();
}
public void onSaveWarehouse(){
log.debug("onSaveOrUpdate() {}", locationView);
try {
if (checkLocationCode(locationView)){
locationService.onSaveOrUpdateLocationToDB(locationView);
msLocationModel = new MSLocationModel();
if (Utils.isZero(locationView.getId())){
showDialogSaved();
} else {
showDialogUpdated();
}
init();
} else {
showDialog(MessageDialog.ERROR.getMessageHeader(), "Location Barcode is duplicate");
}
} catch (Exception e) {
log.debug("Exception onSaveLocation : ", e);
showDialogError(e.getMessage());
}
}
public void onSearchWarehouseAndLocation(){
log.debug("onSearch Location");
msLocationModelList = locationService.searchOrderByCodeOrName(keySearch);
}
public void preDelete(){
showDialog(MessageDialog.WARNING.getMessageHeader(), "Are you want to delete this item?", "confirmWarehouseAndLocationDlg");
}
public void onDeleteWarehouseAndLocation(){
log.debug("-- onDelete()");
try {
locationService.delete(msLocationModel);
showDialogDeleted();
init();
} catch (Exception e) {
log.error("{}",e);
showDialogError(e.getMessage());
}
}
public void onClickTableWarehouseAndLocation(){
log.debug("onClickToLocationTB(), {}", msLocationModel.toString());
modeWarehouse = "Mode(Edit)";
nameBtn = "New";
flagBtnDelete = false;
flagBtnAddShowItem = false;
if (Utils.isZero(msLocationModel.getQty()) && Utils.isZero(msLocationModel.getReservedQty())){
flagFoil = true;
} else {
flagFoil = false;
}
locationView = locationService.clickToWarehouseView(msLocationModel);
}
public boolean checkWarehouseCodeOnSave(String warehouseCode, int id){
log.debug("checkWarehouseCodeOnSave. {}", warehouseCode);
return warehouseService.isDuplicate(warehouseCode, id);
}
public void onEditDialogWarehouse(){
log.debug("Open Warehouse Dialog.");
warehouseView = new WarehouseView();
modeWarehouseDlg = "Mode(New)";
msWarehouseModel = new MSWarehouseModel();
msWarehouseModelList = warehouseService.getWarehouseAll();
}
public void onNewWarehouseDialog(){
warehouseView = new WarehouseView();
modeWarehouseDlg = "Mode(New)";
msWarehouseModel = new MSWarehouseModel();
}
public void onSaveWarehouseDialog(){
log.debug("OnSave Warehouse. {}", warehouseView);
if (checkWarehouseCodeOnSave(warehouseView.getWarehouseCode(), warehouseView.getId())){
warehouseService.onSaveOrUpdateWarehouse(warehouseView);
msWarehouseModel = new MSWarehouseModel();
if (Utils.isZero(warehouseView.getId())){
showDialogSaved();
} else {
showDialogUpdated();
}
warehouseView = new WarehouseView();
msWarehouseModelList = warehouseService.getWarehouseAll();
} else {
showDialog(MessageDialog.ERROR.getMessageHeader(), "Warehouse Code is duplicate");
}
}
public void preDeleteWarehouseDialog(){
showDialog(MessageDialog.WARNING.getMessageHeader(), "Are you want to delete this item?", "confirmWarehouseDialogDlg");
}
public void onDeleteWarehouseDialog(){
log.debug("Delete warehouse.");
warehouseService.delete(msWarehouseModel);
showDialogSaved();
init();
}
public void onClickTableWarehouseDialog(){
modeWarehouseDlg = "Mode(Edit)";
log.debug("onclickWarehouseTBDlg(). {}",msWarehouseModel.toString());
warehouseView = warehouseService.converToView(msWarehouseModel);
}
public void onClickAddItemWarehouse(){
log.debug("locationItemDialog(). {}", msLocationModel.getId());
selectType = "";
itemSearch = "";
msItemModelList = new ArrayList<MSItemModel>();
msLocationItemsModelList = locationItemService.findLocationItemByLocationId(msLocationModel.getId());
}
public void onSearchItemWarehouse(){
log.debug("-- onSubmitSearch() {}, {}", selectType,itemSearch);
if(!Utils.isZero(itemSearch.length())){
msItemModelList = itemService.findByCondition(selectType, itemSearch);
log.debug("msItemModelList Size : {}", msItemModelList.size());
} else {
msItemModelList = itemService.findByCondition(selectType, itemSearch);
}
}
public void onAddToLocation(){
log.debug("addToLocationItem");
locationItemService.addToLocationItemModel(selectItem, msLocationModel);
msLocationItemsModelList = locationItemService.findLocationItemByLocationId(msLocationModel.getId());
selectItem = new ArrayList<MSItemModel>();
showDialogSaved();
}
public void onRemove(){
log.debug("remove(). {}", selectLocationItem.size());
locationItemService.deleteLocationItemModel(selectLocationItem);
onAddToLocation();
}
public void OnNewStockInOutNote(){
log.debug("onNewAndCancelStock()");
modeStock = "Mode(New)";
flagBtnDeleteStock = true;
stockInOutNoteModel = new MSStockInOutNoteModel();
stockInOutNoteView = new StockInOutNoteView();
}
public void onSaveStockInOutNote(){
log.debug("onSaveStockInOutNote().");
if(stockInOutNoteView.getInoutCode().trim().length() < 5 || stockInOutNoteView.getInoutNote().trim().length() < 5){
showDialog(MessageDialog.ERROR.getMessageHeader(), "กรุณากรอก Code และ Note อย่างน้อย 5 ตัวอักษร");
} else {
stockInOutNoteService.onSaveStockInOutNote(stockInOutNoteView);
if (Utils.isZero(stockInOutNoteView.getId())){
showDialogSaved();
} else {
showDialogUpdated();
}
OnLoadStockInOutNote();
stockInOutNoteModel = new MSStockInOutNoteModel();
}
}
public void onDeleteStockInOutNote(){
log.debug("onDelectStock()");
stockInOutNoteService.deleteStockInOutNote(stockInOutNoteModel);
OnLoadStockInOutNote();
stockInOutNoteModel = new MSStockInOutNoteModel();
modeStock = "Mode(New)";
flagBtnDeleteStock = true;
showDialogSaved();
}
public void onClickTableStockInOutNote(){
log.debug("onClickStockInOutNote(). {}", stockInOutNoteModel);
stockInOutNoteView = stockInOutNoteService.clickToStockInOutNoteView(stockInOutNoteModel);
flagBtnDeleteStock = false;
modeStock = "Mode(Edit)";
nameBtnStock = "New";
}
public void preDeleteItem(){
showDialog(MessageDialog.WARNING.getMessageHeader(), "Are you want to delete this item?", "confirmStockInOutNoteDlg");
}
}