OrdenController.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.avbravo.store.controller;
// <editor-fold defaultstate="collapsed" desc="imports">
import com.avbravo.avbravoutils.JsfUtil;
import com.avbravo.avbravoutils.printer.Printer;
import com.avbravo.ejbjmoordb.interfaces.IController;
import com.avbravo.ejbjmoordb.services.RevisionHistoryServices;
import com.avbravo.ejbjmoordb.services.UserInfoServices;
import com.avbravo.storeejb.repository.AutoincrementableStoreejbRepository;
import com.avbravo.storeejb.datamodel.OrdenDataModel;
import com.avbravo.storeejb.repository.OrdenRepository;
import com.avbravo.storeejb.repository.RevisionHistoryStoreejbRepository;
import com.avbravo.storeejb.entity.Orden;
import com.avbravo.storeejb.services.OrdenServices;
import com.avbravo.store.util.ResourcesFiles;
import com.avbravo.storeejb.datamodel.OrdendetalleDataModel;
import com.avbravo.storeejb.entity.Articulo;
import com.avbravo.storeejb.entity.Bodega;
import com.avbravo.storeejb.entity.Ganga;
import com.avbravo.storeejb.entity.Interno;
import com.avbravo.storeejb.entity.Inventario;
import com.avbravo.storeejb.entity.Ordendetalle;
import com.avbravo.storeejb.entity.Proveedor;
import com.avbravo.storeejb.entity.Tienda;
import com.avbravo.storeejb.repository.ArticuloRepository;
import com.avbravo.storeejb.repository.InventarioRepository;
import com.avbravo.storeejb.repository.InventariodetalleRepository;
import com.avbravo.storeejb.repository.OrdendetalleRepository;
import com.avbravo.storeejb.services.ArticuloServices;
import com.avbravo.storeejb.services.AutoincrementableStoreejbServices;
import com.avbravo.storeejb.services.EmisorReceptorServices;
import com.avbravo.storeejb.services.InventarioServices;
import com.avbravo.storeejb.services.LookupStoreejbServices;
import java.util.ArrayList;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.faces.component.UIComponent;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.faces.context.FacesContext;
import org.bson.Document;
import org.primefaces.context.RequestContext;
import org.primefaces.event.CellEditEvent;
import org.primefaces.event.SelectEvent;
// </editor-fold>
/**
*
* @authoravbravo
*/
@Named
@ViewScoped
public class OrdenController implements Serializable, IController {
// <editor-fold defaultstate="collapsed" desc="fields">
private static final long serialVersionUID = 1L;
private static final Logger LOG = Logger.getLogger(OrdenController.class.getName());
// @Inject
//private transient ExternalContext externalContext;
private Boolean writable = false;
//DataModel
private OrdenDataModel ordenDataModel;
private OrdendetalleDataModel ordendetalleDataModel;
Integer page = 1;
Integer rowPage = 25;
List<Integer> pages = new ArrayList<>();
//
//Entity
Orden orden;
Orden ordenSelected;
Ordendetalle ordendetalle;
Ordendetalle ordendetalleSelected;
Proveedor proveedorSelected;
Bodega bodegaSelected;
Tienda tiendaSelected;
Ganga gangaSelected;
Interno internoSelected;
//List
List<Orden> ordenList = new ArrayList<>();
List<Orden> ordenFiltered = new ArrayList<>();
List<Ordendetalle> ordendetalleList = new ArrayList<>();
List<Ordendetalle> ordendetalleFiltered = new ArrayList<>();
//Repository
@Inject
AutoincrementableStoreejbRepository autoincrementableRepository;
@Inject
ArticuloRepository articuloRepository;
@Inject
InventarioRepository inventarioRepository;
@Inject
InventariodetalleRepository inventariodetalleRepository;
@Inject
OrdenRepository ordenRepository;
@Inject
OrdendetalleRepository ordendetalleRepository;
@Inject
RevisionHistoryStoreejbRepository revisionHistoryStoreejbRepository;
//Services
//Atributos para busquedas
@Inject
EmisorReceptorServices emisorReceptorServices;
@Inject
AutoincrementableStoreejbServices autoincrementableStoreejbServices;
@Inject
ArticuloServices articuloServices;
@Inject
InventarioServices inventarioServices;
@Inject
LookupStoreejbServices lookupStoreejbServices;
@Inject
RevisionHistoryServices revisionHistoryServices;
@Inject
UserInfoServices userInfoServices;
@Inject
OrdenServices ordenServices;
@Inject
ResourcesFiles rf;
@Inject
Printer printer;
@Inject
LoginController loginController;
//List of Relations
//Repository of Relations
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="getter/setter">
public List<Integer> getPages() {
return ordenRepository.listOfPage(rowPage);
}
public void setPages(List<Integer> pages) {
this.pages = pages;
}
public EmisorReceptorServices getEmisorReceptorServices() {
return emisorReceptorServices;
}
public void setEmisorReceptorServices(EmisorReceptorServices emisorReceptorServices) {
this.emisorReceptorServices = emisorReceptorServices;
}
public ArticuloServices getArticuloServices() {
return articuloServices;
}
public void setArticuloServices(ArticuloServices articuloServices) {
this.articuloServices = articuloServices;
}
public List<Ordendetalle> getOrdendetalleList() {
return ordendetalleList;
}
public void setOrdendetalleList(List<Ordendetalle> ordendetalleList) {
this.ordendetalleList = ordendetalleList;
}
public OrdendetalleDataModel getOrdendetalleDataModel() {
return ordendetalleDataModel;
}
public void setOrdendetalleDataModel(OrdendetalleDataModel ordendetalleDataModel) {
this.ordendetalleDataModel = ordendetalleDataModel;
}
public Ordendetalle getOrdendetalle() {
return ordendetalle;
}
public void setOrdendetalle(Ordendetalle ordendetalle) {
this.ordendetalle = ordendetalle;
}
public Ordendetalle getOrdendetalleSelected() {
return ordendetalleSelected;
}
public void setOrdendetalleSelected(Ordendetalle ordendetalleSelected) {
this.ordendetalleSelected = ordendetalleSelected;
}
public Tienda getTiendaSelected() {
return tiendaSelected;
}
public void setTiendaSelected(Tienda tiendaSelected) {
this.tiendaSelected = tiendaSelected;
}
public List<Ordendetalle> getOrdendetalleFiltered() {
return ordendetalleFiltered;
}
public void setOrdendetalleFiltered(List<Ordendetalle> ordendetalleFiltered) {
this.ordendetalleFiltered = ordendetalleFiltered;
}
public Proveedor getProveedorSelected() {
return proveedorSelected;
}
public void setProveedorSelected(Proveedor proveedorSelected) {
this.proveedorSelected = proveedorSelected;
}
public Bodega getBodegaSelected() {
return bodegaSelected;
}
public void setBodegaSelected(Bodega bodegaSelected) {
this.bodegaSelected = bodegaSelected;
}
public Ganga getGangaSelected() {
return gangaSelected;
}
public void setGangaSelected(Ganga gangaSelected) {
this.gangaSelected = gangaSelected;
}
public Interno getInternoSelected() {
return internoSelected;
}
public void setInternoSelected(Interno internoSelected) {
this.internoSelected = internoSelected;
}
public LookupStoreejbServices getLookupStoreejbServices() {
return lookupStoreejbServices;
}
public void setLookupStoreejbServices(LookupStoreejbServices lookupStoreejbServices) {
this.lookupStoreejbServices = lookupStoreejbServices;
}
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public Integer getRowPage() {
return rowPage;
}
public void setRowPage(Integer rowPage) {
this.rowPage = rowPage;
}
public OrdenServices getOrdenServices() {
return ordenServices;
}
public void setOrdenServices(OrdenServices ordenServices) {
this.ordenServices = ordenServices;
}
public List<Orden> getOrdenList() {
return ordenList;
}
public void setOrdenList(List<Orden> ordenList) {
this.ordenList = ordenList;
}
public List<Orden> getOrdenFiltered() {
return ordenFiltered;
}
public void setOrdenFiltered(List<Orden> ordenFiltered) {
this.ordenFiltered = ordenFiltered;
}
public Orden getOrden() {
return orden;
}
public void setOrden(Orden orden) {
this.orden = orden;
}
public Orden getOrdenSelected() {
return ordenSelected;
}
public void setOrdenSelected(Orden ordenSelected) {
this.ordenSelected = ordenSelected;
}
public OrdenDataModel getOrdenDataModel() {
return ordenDataModel;
}
public void setOrdenDataModel(OrdenDataModel ordenDataModel) {
this.ordenDataModel = ordenDataModel;
}
public Boolean getWritable() {
return writable;
}
public void setWritable(Boolean writable) {
this.writable = writable;
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="constructor">
public OrdenController() {
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="preRenderView()">
@Override
public String preRenderView(String action) {
//acciones al llamar el formulario despues del init
return "";
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="init">
@PostConstruct
public void init() {
try {
String action = loginController.get("orden");
String id = loginController.get("idorden");
String pageSession = loginController.get("pageorden");
//Search
loginController.put("searchorden", "_init");
writable = false;
ordenList = new ArrayList<>();
ordenFiltered = new ArrayList<>();
ordendetalleList = new ArrayList<>();
ordendetalleFiltered = new ArrayList<>();
orden = new Orden();
ordendetalle = new Ordendetalle();
ordendetalleSelected = new Ordendetalle();
ordenDataModel = new OrdenDataModel(ordenList);
ordendetalleDataModel = new OrdendetalleDataModel(ordendetalleList);
if (id != null) {
Optional<Orden> optional = ordenRepository.find("idorden", id);
if (optional.isPresent()) {
orden = optional.get();
ordenSelected = orden;
writable = true;
}
}
if (action != null && action.equals("gonew")) {
orden = new Orden();
ordenSelected = orden;
writable = false;
}
if (pageSession != null) {
page = Integer.parseInt(pageSession);
}
Integer c = ordenRepository.sizeOfPage(rowPage);
page = page > c ? c : page;
move();
} catch (Exception e) {
JsfUtil.errorMessage("init() " + e.getLocalizedMessage());
}
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="reset">
@Override
public void reset() {
RequestContext.getCurrentInstance().reset(":form:content");
prepare("new");
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="prepare(String action, Object... item)">
@Override
public String prepare(String action, Object... item) {
String url = "";
try {
loginController.put("pageorden", page.toString());
loginController.put("orden", action);
switch (action) {
case "new":
orden = new Orden();
ordenSelected = new Orden();
proveedorSelected = new Proveedor();
bodegaSelected = new Bodega();
ordendetalleList = new ArrayList<>();
ordendetalleFiltered = new ArrayList<>();
ordendetalleDataModel = new OrdendetalleDataModel(ordendetalleList);
writable = false;
break;
case "view":
if (item.length != 0) {
ordenSelected = (Orden) item[0];
orden = ordenSelected;
loginController.put("idorden", orden.getIdorden().toString());
}
url = "/pages/orden/view.xhtml";
break;
case "golist":
url = "/pages/orden/list.xhtml";
break;
case "gonew":
url = "/pages/orden/new.xhtml";
break;
}
} catch (Exception e) {
JsfUtil.errorMessage("prepare() " + e.getLocalizedMessage());
}
return url;
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="showAll">
@Override
public String showAll() {
try {
ordenList = new ArrayList<>();
ordenFiltered = new ArrayList<>();
ordenList = ordenRepository.findAll();
ordenFiltered = ordenList;
ordenDataModel = new OrdenDataModel(ordenList);
} catch (Exception e) {
JsfUtil.errorMessage("showAll()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="isNew">
@Override
public String isNew() {
try {
writable = true;
if(JsfUtil.isVacio(orden.getIdorden())){
writable=false;
return "";
}
Optional<Orden> optional = ordenRepository.findById(orden);
if (optional.isPresent()) {
writable = false;
JsfUtil.warningMessage(rf.getAppMessage("warning.idexist"));
return "";
} else {
Integer id = orden.getIdorden();
orden = new Orden();
orden.setIdorden(id);
ordenSelected = new Orden();
}
} catch (Exception e) {
JsfUtil.errorMessage("isNew()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
@Override
public String save() {
return "";
}
// <editor-fold defaultstate="collapsed" desc="save">
public String save(String tipoorden, String subtipoorden) {
try {
if (!valid()) {
return "";
}
Integer identity = autoincrementableStoreejbServices.getContador("orden");
orden.setIdorden(identity);
orden.setFecha(JsfUtil.getFechaActual());
orden.setAutorizadopor(loginController.getUsername());
orden.setTipoorden(tipoorden);
orden.setSubtipoorden(subtipoorden);
orden.setActivo("si");
orden.setIdemisor("");
orden.setTipoemisor("");
orden.setIdreceptor("");
orden.setTiporeceptor("");
//Carga los datos idemisorreceptor
orden = ordenServices.asignarEmisorReceptor(orden, subtipoorden, bodegaSelected, tiendaSelected, gangaSelected, internoSelected, proveedorSelected);
orden.setUserInfo(userInfoServices.generateListUserinfo(loginController.getUsername(), "create"));
if (ordenRepository.save(orden)) {
revisionHistoryStoreejbRepository.save(revisionHistoryServices.getRevisionHistory(orden.getIdorden().toString(), loginController.getUsername(),
"create", "orden", ordenRepository.toDocument(orden).toString()));
JsfUtil.successMessage(rf.getAppMessage("info.save"));
//---
//Guardar el detalle de la orden
for (Ordendetalle o : ordendetalleList) {
Ordendetalle ordendetalle = new Ordendetalle();
Integer identitydetalle = autoincrementableStoreejbServices.getContador("ordendetalle");
ordendetalle.setIdordendetalle(identitydetalle);
ordendetalle.setOrden(orden);
ordendetalle.setArticulo(o.getArticulo());
ordendetalle.setCantidad(o.getCantidad());
if (subtipoorden.equals("proveedorabodega")) {
ordendetalle.setCantidadanterioremisor(0); //porque es un proveedor
} else {
ordendetalle.setCantidadanterioremisor(o.getCantidadanterioremisor());
}
ordendetalle.setCantidadanteriorreceptor(o.getCantidadanteriorreceptor());
ordendetalle.setUserInfo(userInfoServices.generateListUserinfo(loginController.getUsername(), "create"));
if (ordendetalleRepository.save(ordendetalle)) {
revisionHistoryStoreejbRepository.save(revisionHistoryServices.getRevisionHistory(ordendetalle.getIdordendetalle().toString(), loginController.getUsername(),
"create", "ordendetalle", ordendetalleRepository.toDocument(ordendetalle).toString()));
}
//Actualiza el inventario
inventarioServices.saveFromOrden(ordendetalle, subtipoorden, loginController.getUsername(), bodegaSelected, tiendaSelected, gangaSelected, internoSelected, proveedorSelected);
}
//Limpia los datos
orden = new Orden();
proveedorSelected = new Proveedor();
bodegaSelected = new Bodega();
ordendetalleList = new ArrayList<>();
ordendetalleFiltered = new ArrayList<>();
ordendetalleDataModel = new OrdendetalleDataModel(ordendetalleList);
reset();
} else {
JsfUtil.successMessage("save() " + ordenRepository.getException().toString());
}
} catch (Exception e) {
JsfUtil.errorMessage("save()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="edit">
@Override
public String edit() {
try {
orden.getUserInfo().add(userInfoServices.generateUserinfo(loginController.getUsername(), "update"));
//guarda el contenido anterior
//guarda el contenido actualizado
revisionHistoryStoreejbRepository.save(revisionHistoryServices.getRevisionHistory(orden.getIdorden().toString(), loginController.getUsername(),
"update", "orden", ordenRepository.toDocument(orden).toString()));
ordenRepository.update(orden);
JsfUtil.successMessage(rf.getAppMessage("info.update"));
} catch (Exception e) {
JsfUtil.errorMessage("edit()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="delete(Object item, Boolean deleteonviewpage)">
@Override
public String delete(Object item, Boolean deleteonviewpage) {
String path = "";
try {
orden = (Orden) item;
ordenSelected = orden;
if (ordenRepository.delete("idorden", orden.getIdorden())) {
revisionHistoryStoreejbRepository.save(revisionHistoryServices.getRevisionHistory(orden.getIdorden().toString(), loginController.getUsername(), "delete", "orden", ordenRepository.toDocument(orden).toString()));
JsfUtil.successMessage(rf.getAppMessage("info.delete"));
if (!deleteonviewpage) {
ordenList.remove(orden);
ordenFiltered = ordenList;
ordenDataModel = new OrdenDataModel(ordenList);
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("pageorden", page.toString());
} else {
orden = new Orden();
ordenSelected = new Orden();
writable = false;
}
}
} catch (Exception e) {
JsfUtil.errorMessage("delete() " + e.getLocalizedMessage());
}
// path = deleteonviewpage ? "/pages/orden/list.xhtml" : "";
path = "";
return path;
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="deleteAll">
@Override
public String deleteAll() {
if (ordenRepository.deleteAll() != 0) {
JsfUtil.successMessage(rf.getAppMessage("info.delete"));
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="print">
@Override
public String print() {
try {
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("pageorden", page.toString());
List<Orden> list = new ArrayList<>();
list.add(orden);
String ruta = "/resources/reportes/orden/details.jasper";
HashMap parameters = new HashMap();
// parameters.put("P_parametro", "valor");
printer.imprimir(list, ruta, parameters);
} catch (Exception ex) {
JsfUtil.errorMessage("imprimir() " + ex.getLocalizedMessage());
}
return null;
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="printAll">
@Override
public String printAll() {
try {
List<Orden> list = new ArrayList<>();
list = ordenRepository.findAll(new Document("idorden", 1));
String ruta = "/resources/reportes/orden/all.jasper";
HashMap parameters = new HashMap();
// parameters.put("P_parametro", "valor");
printer.imprimir(list, ruta, parameters);
} catch (Exception ex) {
JsfUtil.errorMessage("imprimir() " + ex.getLocalizedMessage());
}
return null;
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="handleSelect">
public void handleSelect(SelectEvent event) {
try {
ordenList.removeAll(ordenList);
ordenList.add(ordenSelected);
ordenFiltered = ordenList;
ordenDataModel = new OrdenDataModel(ordenList);
loginController.put("searchorden", "_autocomplete");
} catch (Exception ex) {
JsfUtil.errorMessage("handleSelect() " + ex.getLocalizedMessage());
}
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="last">
@Override
public String last() {
try {
page = ordenRepository.sizeOfPage(rowPage);
move();
} catch (Exception e) {
JsfUtil.errorMessage("last() " + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="first">
@Override
public String first() {
try {
page = 1;
move();
} catch (Exception e) {
JsfUtil.errorMessage("first() " + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="next">
@Override
public String next() {
try {
if (page < (ordenRepository.sizeOfPage(rowPage))) {
page++;
}
move();
} catch (Exception e) {
JsfUtil.errorMessage("next() " + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="back">
@Override
public String back() {
try {
if (page > 1) {
page--;
}
move();
} catch (Exception e) {
JsfUtil.errorMessage("back() " + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="skip(Integer page)">
@Override
public String skip(Integer page) {
try {
this.page = page;
move();
} catch (Exception e) {
JsfUtil.errorMessage("skip() " + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="move">
@Override
public void move() {
try {
Document doc;
switch (loginController.get("searchorden")) {
case "_init":
ordenList = ordenRepository.findPagination(page, rowPage);
break;
case "_autocomplete":
//no se realiza ninguna accion
break;
case "idorden":
doc = new Document("idorden", orden.getIdorden());
ordenList = ordenRepository.findFilterPagination(doc, page, rowPage, new Document("idorden", -1));
break;
default:
ordenList = ordenRepository.findPagination(page, rowPage);
break;
}
ordenFiltered = ordenList;
ordenDataModel = new OrdenDataModel(ordenList);
} catch (Exception e) {
JsfUtil.errorMessage("move() " + e.getLocalizedMessage());
}
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="clear">
@Override
public String clear() {
try {
loginController.put("searchorden", "_init");
page = 1;
move();
} catch (Exception e) {
JsfUtil.errorMessage("clear()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="searchBy(String string, Boolean... blns)">
@Override
public String searchBy(String string) {
try {
loginController.put("searchorden", string);
writable = true;
move();
} catch (Exception e) {
JsfUtil.errorMessage("searchBy()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="addFila()">
public String addFila() {
try {
ordendetalle = new Ordendetalle();
ordendetalle.setCantidad(0);
ordendetalle.setCantidadanterioremisor(0);
ordendetalle.setCantidadanteriorreceptor(0);
ordendetalleList.add(ordendetalle);
ordendetalleFiltered = ordendetalleList;
ordendetalleDataModel = new OrdendetalleDataModel(ordendetalleList);
// showTotales();
} catch (Exception e) {
JsfUtil.errorMessage("addFila()" + e.getLocalizedMessage());
LOG.info("addFila()" + e.getLocalizedMessage());
}
return "";
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="List<Articulo> completeFilter(String query)">
public List<Articulo> completeFilter(String query) {
List<Articulo> suggestions = new ArrayList<>();
try {
query = query.trim();
if (query.length() < 1) {
return suggestions;
}
String field = (String) UIComponent.getCurrentComponent(FacesContext.getCurrentInstance()).getAttributes().get("field");
List<Inventario> list = new ArrayList<>();
switch (field) {
case "idarticulo":
list = inventarioRepository.findRegex("articulo.idarticulo", query, true, "id", bodegaSelected.getIdbodega(), "tipoid", "bodega", new Document(field, 1));
break;
case "descripcion":
// Buscar en la lista de articulos y luego verificar que este existe en inventario x idbodega, xid
list = inventarioRepository.findRegex("articulo.idarticulo", query, true, "id", bodegaSelected.getIdbodega(), "tipoid", "bodega", new Document(field, 1));
break;
default:
break;
}
if (!list.isEmpty()) {
Boolean found = false;
for (Inventario i : list) {
found = false;
if (!ordendetalleList.isEmpty()) {
for (Ordendetalle o : ordendetalleList) {
if (o.getArticulo() != null) {
if (i.getArticulo().getIdarticulo().equals(o.getArticulo().getIdarticulo())) {
found = true;
}
}
}
}
if (!found) {
// le colocamos la cna
i.getArticulo().setCantidad(i.getCantidad());
suggestions.add(i.getArticulo());
}
}
}
} catch (Exception e) {
JsfUtil.errorMessage("complete() " + e.getLocalizedMessage());
}
return suggestions;
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="List<Articulo> completeFilterFromProveedor(String query)">
public List<Articulo> completeFilterFromProveedor(String query) {
List<Articulo> suggestions = new ArrayList<>();
try {
query = query.trim();
if (query.length() < 1) {
return suggestions;
}
String field = (String) UIComponent.getCurrentComponent(FacesContext.getCurrentInstance()).getAttributes().get("field");
List<Articulo> list = new ArrayList<>();
list = articuloRepository.findRegex(field, query, true, "activo", "si", "proveedor.idproveedor", proveedorSelected.getIdproveedor(), new Document(field, 1));
if (!list.isEmpty()) {
Boolean found = false;
for (Articulo i : list) {
found = false;
if (!ordendetalleList.isEmpty()) {
for (Ordendetalle o : ordendetalleList) {
if (o.getArticulo() != null) {
if (i.getIdarticulo().equals(o.getArticulo().getIdarticulo())) {
found = true;
}
}
}
}
if (!found) {
suggestions.add(i);
}
}
}
} catch (Exception e) {
JsfUtil.errorMessage("completeFilterFromProveedor() " + e.getLocalizedMessage());
}
return suggestions;
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="List<Articulo> completeFilterFromBodega(String query)">
public List<Articulo> completeFilterFromBodega(String query) {
List<Articulo> suggestions = new ArrayList<>();
try {
query = query.trim();
if (query.length() < 1) {
return suggestions;
}
String field = (String) UIComponent.getCurrentComponent(FacesContext.getCurrentInstance()).getAttributes().get("field");
List<Inventario> list = new ArrayList<>();
switch (field) {
case "idarticulo":
list = inventarioRepository.findRegex("articulo.idarticulo", query, true, "id", bodegaSelected.getIdbodega(), "tipoid", "bodega", new Document(field, 1));
break;
case "descripcion":
list = inventarioServices.searchByDescripcion(field, query, bodegaSelected.getIdbodega(), "bodega");
break;
default:
break;
}
if (!list.isEmpty()) {
Boolean found = false;
for (Inventario i : list) {
found = false;
if (!ordendetalleList.isEmpty()) {
for (Ordendetalle o : ordendetalleList) {
if (o.getArticulo() != null) {
if (i.getArticulo().getIdarticulo().equals(o.getArticulo().getIdarticulo())) {
found = true;
}
}
}
}
if (!found) {
// le colocamos la cna
i.getArticulo().setCantidad(i.getCantidad());
suggestions.add(i.getArticulo());
}
}
}
} catch (Exception e) {
JsfUtil.errorMessage("completeFilterFromBodega() " + e.getLocalizedMessage());
}
return suggestions;
} // </editor-fold>
// <editor-fold defaultstate="collapsed" desc="List<Articulo> completeFilterFromTienda(String query)">
public List<Articulo> completeFilterFromTienda(String query) {
List<Articulo> suggestions = new ArrayList<>();
try {
query = query.trim();
if (query.length() < 1) {
return suggestions;
}
String field = (String) UIComponent.getCurrentComponent(FacesContext.getCurrentInstance()).getAttributes().get("field");
List<Inventario> list = new ArrayList<>();
switch (field) {
case "idarticulo":
list = inventarioRepository.findRegex("articulo.idarticulo", query, true, "id", tiendaSelected.getIdtienda(), "tipoid", "tienda", new Document(field, 1));
break;
case "descripcion":
list = inventarioServices.searchByDescripcion(field, query, tiendaSelected.getIdtienda(), "tienda");
break;
default:
break;
}
if (!list.isEmpty()) {
Boolean found = false;
for (Inventario i : list) {
found = false;
if (!ordendetalleList.isEmpty()) {
for (Ordendetalle o : ordendetalleList) {
if (o.getArticulo() != null) {
if (i.getArticulo().getIdarticulo().equals(o.getArticulo().getIdarticulo())) {
found = true;
}
}
}
}
if (!found) {
// le colocamos la cna
i.getArticulo().setCantidad(i.getCantidad());
suggestions.add(i.getArticulo());
}
}
}
} catch (Exception e) {
JsfUtil.errorMessage("completeFilterFromTienda() " + e.getLocalizedMessage());
}
return suggestions;
} // </editor-fold>
// <editor-fold defaultstate="collapsed" desc="List<Articulo> completeFilterFromGanga(String query)">
public List<Articulo> completeFilterFromGanga(String query) {
List<Articulo> suggestions = new ArrayList<>();
try {
query = query.trim();
if (query.length() < 1) {
return suggestions;
}
String field = (String) UIComponent.getCurrentComponent(FacesContext.getCurrentInstance()).getAttributes().get("field");
List<Inventario> list = new ArrayList<>();
switch (field) {
case "idarticulo":
list = inventarioRepository.findRegex("articulo.idarticulo", query, true, "id", gangaSelected.getIdganga(), "tipoid", "ganga", new Document(field, 1));
break;
case "descripcion":
list = inventarioServices.searchByDescripcion(field, query, gangaSelected.getIdganga(), "ganga");
break;
default:
break;
}
if (!list.isEmpty()) {
Boolean found = false;
for (Inventario i : list) {
found = false;
if (!ordendetalleList.isEmpty()) {
for (Ordendetalle o : ordendetalleList) {
if (o.getArticulo() != null) {
if (i.getArticulo().getIdarticulo().equals(o.getArticulo().getIdarticulo())) {
found = true;
}
}
}
}
if (!found) {
// le colocamos la cna
i.getArticulo().setCantidad(i.getCantidad());
suggestions.add(i.getArticulo());
}
}
}
} catch (Exception e) {
JsfUtil.errorMessage("completeFilterFromGanga() " + e.getLocalizedMessage());
}
return suggestions;
} // </editor-fold>
// <editor-fold defaultstate="collapsed" desc="List<Articulo> completeFilterFromGanga(String query)">
public List<Articulo> completeFilterFromInterno(String query) {
List<Articulo> suggestions = new ArrayList<>();
try {
query = query.trim();
if (query.length() < 1) {
return suggestions;
}
String field = (String) UIComponent.getCurrentComponent(FacesContext.getCurrentInstance()).getAttributes().get("field");
List<Inventario> list = new ArrayList<>();
switch (field) {
case "idarticulo":
list = inventarioRepository.findRegex("articulo.idarticulo", query, true, "id", internoSelected.getIdinterno(), "tipoid", "interno", new Document(field, 1));
break;
case "descripcion":
list = inventarioServices.searchByDescripcion(field, query, internoSelected.getIdinterno(), "interno");
break;
default:
break;
}
if (!list.isEmpty()) {
Boolean found = false;
for (Inventario i : list) {
found = false;
if (!ordendetalleList.isEmpty()) {
for (Ordendetalle o : ordendetalleList) {
if (o.getArticulo() != null) {
if (i.getArticulo().getIdarticulo().equals(o.getArticulo().getIdarticulo())) {
found = true;
}
}
}
}
if (!found) {
// le colocamos la cna
i.getArticulo().setCantidad(i.getCantidad());
suggestions.add(i.getArticulo());
}
}
}
} catch (Exception e) {
JsfUtil.errorMessage("completeFilterFromGanga() " + e.getLocalizedMessage());
}
return suggestions;
} // </editor-fold>
// <editor-fold defaultstate="collapsed" desc="onArticuloChange()">
public String onArticuloChange(int rowIndex, Ordendetalle ordendetalle, String subtipoorden) {
try {
// Articulo articulo = ordendetalle.getArticulo();
// List<Inventario> list = new ArrayList<>();
// Document doc;
Integer cantidademisor = 0;
Integer cantidadreceptor = 0;
switch (subtipoorden) {
//Entrada
case "proveedorabodega":
cantidadreceptor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), bodegaSelected.getIdbodega(), "bodega");
// no se hace nada
break;
case "tiendaabodega":
cantidademisor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), tiendaSelected.getIdtienda(), "tienda");
cantidadreceptor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), bodegaSelected.getIdbodega(), "bodega");
break;
case "gangaabodega":
cantidademisor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), gangaSelected.getIdganga(), "ganga");
cantidadreceptor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), bodegaSelected.getIdbodega(), "bodega");
break;
//Salida
case "bodegaatienda":
cantidademisor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), bodegaSelected.getIdbodega(), "bodega");
cantidadreceptor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), tiendaSelected.getIdtienda(), "tienda");
break;
case "bodegaaganga":
cantidademisor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), bodegaSelected.getIdbodega(), "bodega");
cantidadreceptor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), gangaSelected.getIdganga(), "ganga");
break;
//MovimientoInterno
case "internoabodega":
cantidademisor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), internoSelected.getIdinterno(), "interno");
cantidadreceptor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), bodegaSelected.getIdbodega(), "bodega");
break;
case "internoatienda":
cantidademisor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), internoSelected.getIdinterno(), "interno");
cantidadreceptor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), tiendaSelected.getIdtienda(), "tienda");
break;
case "internoaganga":
cantidademisor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), internoSelected.getIdinterno(), "interno");
cantidadreceptor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), gangaSelected.getIdganga(), "ganga");
break;
case "bodegaainterno":
cantidademisor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), bodegaSelected.getIdbodega(), "bodega");
cantidadreceptor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), internoSelected.getIdinterno(), "interno");
break;
case "tiendaainterno":
cantidademisor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), tiendaSelected.getIdtienda(), "tienda");
cantidadreceptor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), internoSelected.getIdinterno(), "interno");
break;
case "gangaainterno":
cantidademisor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), gangaSelected.getIdganga(), "ganga");
cantidadreceptor = inventarioServices.cantidadInventarioOf(ordendetalle.getArticulo(), internoSelected.getIdinterno(), "interno");
break;
default:
JsfUtil.warningDialog("subtipoorden","subtipoorden: " + subtipoorden + " no se ha contemplado onArticuloChange()");
break;
}
ordendetalleList.get(rowIndex).setCantidadanterioremisor(cantidademisor);
ordendetalleList.get(rowIndex).setCantidadanteriorreceptor(cantidadreceptor);
} catch (Exception e) {
JsfUtil.errorMessage("onArticuloChange() " + e.getLocalizedMessage());
}
return "";
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="calcularBalance">
public Integer calcularBalance(Integer cantidad, Integer anterior, Ordendetalle item, int rowIndex) {
Integer balance = 0;
try {
if (item.getArticulo() == null) {
ordendetalleList.get(rowIndex).setCantidad(0);
return balance;
}
if (cantidad > 0) {
balance = cantidad + anterior;
}
} catch (Exception e) {
JsfUtil.errorMessage("calcularBalance() " + e.getLocalizedMessage());
}
return balance;
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="refresh()">
public String refresh() {
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="onCellEdit(CellEditEvent event) ">
public void onCellEditFromProveedor(CellEditEvent event) {
try {
Object oldValue = event.getOldValue();
Object newValue = event.getNewValue();
Integer cantidad = ordendetalleList.get(event.getRowIndex()).getCantidad();
Integer cantidadanteriorreceptor = ordendetalleList.get(event.getRowIndex()).getCantidadanteriorreceptor();
Integer cantidadanterioremisor = ordendetalleList.get(event.getRowIndex()).getCantidadanterioremisor();
Integer nuevacantidad = cantidad + cantidadanteriorreceptor;
/// si la cantidad es mayor de cero pero no ha seleccionado un articulo
if (ordendetalleList.get(event.getRowIndex()).getArticulo() == null) {
ordendetalleList.get(event.getRowIndex()).setCantidad(0);
return;
}
} catch (Exception e) {
JsfUtil.errorMessage("onCellEdit() " + e.getLocalizedMessage());
}
} // </editor-fold>
// <editor-fold defaultstate="collapsed" desc="onCellEdit(CellEditEvent event) ">
public void onCellEditWithEmisor(CellEditEvent event) {
try {
Object oldValue = event.getOldValue();
Object newValue = event.getNewValue();
Integer cantidad = ordendetalleList.get(event.getRowIndex()).getCantidad();
Integer cantidadanteriorreceptor = ordendetalleList.get(event.getRowIndex()).getCantidadanteriorreceptor();
Integer cantidadanterioremisor = ordendetalleList.get(event.getRowIndex()).getCantidadanterioremisor();
Integer nuevacantidad = cantidad + cantidadanteriorreceptor;
/// si la cantidad es mayor de cero pero no ha seleccionado un articulo
if (ordendetalleList.get(event.getRowIndex()).getArticulo() == null) {
ordendetalleList.get(event.getRowIndex()).setCantidad(0);
return;
}
if (cantidad > cantidadanterioremisor) {
JsfUtil.warningMessage(rf.getMessage("warning.cantidadmayordisponible"));
ordendetalleList.get(event.getRowIndex()).setCantidad(0);
}
} catch (Exception e) {
JsfUtil.errorMessage("onCellEdit() " + e.getLocalizedMessage());
}
} // </editor-fold>
// <editor-fold defaultstate="collapsed" desc="onRowDelete(int rowIndex)">
public void onRowDelete(int rowIndex) {
try {
ordendetalleList.remove(rowIndex);
ordendetalleFiltered = ordendetalleList;
ordendetalleDataModel = new OrdendetalleDataModel(ordendetalleList);
} catch (Exception e) {
JsfUtil.errorMessage("onRowDelete() " + e.getLocalizedMessage());
}
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="valid()">
private Boolean valid() {
try {
if (ordendetalleList.isEmpty()) {
JsfUtil.warningMessage(rf.getMessage("warning.nohayregistrosordenes"));
return false;
}
Boolean foundArticuloEmpty = false;
Boolean foundCantidadEmpty = false;
for (Ordendetalle o : ordendetalleList) {
if (o.getArticulo() == null) {
foundArticuloEmpty = true;
} else {
if (o.getCantidad() == 0) {
foundCantidadEmpty = true;
}
}
}
if (foundArticuloEmpty) {
JsfUtil.warningMessage(rf.getMessage("warning.hayarticulosvacios"));
return false;
}
if (foundCantidadEmpty) {
JsfUtil.warningMessage(rf.getMessage("warning.haycantidadescero"));
return false;
}
return true;
} catch (Exception e) {
JsfUtil.errorMessage("valid() " + e.getLocalizedMessage());
}
return false;
}
// </editor-fold>
}
Last updated
Was this helpful?