package com.fp.frontend.controller.armas.solicitud; import java.io.InputStream; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.List; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import javax.faces.event.AjaxBehaviorEvent; import org.primefaces.component.selectbooleancheckbox.SelectBooleanCheckbox; import org.primefaces.event.SelectEvent; import com.fp.dto.Request; import com.fp.dto.Response; import com.fp.dto.query.DtoQuery; import com.fp.dto.query.Filter; import com.fp.dto.save.DtoSave; import com.fp.frontend.controller.AbstractController; import com.fp.frontend.controller.ReportController; import com.fp.frontend.controller.alfresco.AlfrescoController; import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; import com.fp.frontend.controller.pcustomer.PersonAddressController; import com.fp.frontend.controller.pcustomer.PersonDetailController; import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; import com.fp.frontend.controller.pgeneral.gene.ParametersController; import com.fp.frontend.helper.MessageHelper; import com.fp.frontend.utility.MsgControlArmas; import com.fp.frontend.utility.Utilidades; import com.fp.persistence.parmas.fun.TarmRegistroArmas; import com.fp.persistence.parmas.param.TarmCentroControl; import com.fp.persistence.parmas.param.TarmCentroControlJur; import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; import com.fp.persistence.parmas.soli.TarmArmas; import com.fp.persistence.parmas.soli.TarmCabRepDestruirArmas; import com.fp.persistence.parmas.soli.TarmDecomiso; import com.fp.persistence.parmas.soli.TarmDecomisoArma; import com.fp.persistence.parmas.soli.TarmDetRepDestruirArmas; import com.fp.persistence.pcustomer.gene.TcustPersonAddress; import com.fp.persistence.pcustomer.gene.TcustPersonDetail; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; import com.fp.persistence.pgeneral.safe.TsafeUserDetail; /** * Clase controladora de la generación de reporte de armas a destruirse * * @author Christian Pazmino. * @version 2.1 */ @SuppressWarnings("serial") @ManagedBean @ViewScoped public class ReporteDestruccionDeArmasController extends AbstractController { /** * Fecha de corte a la que se generara el reporte * */ private Date fechaCorte; /** * Formato de reporte que se va a generar * */ private String format = "pdf"; /** * Usuario actual loogueado en el sistema * */ private TsafeUserDetail userDetail; /** * Variable de tipo entero que lee de la tabla parámetros el número de días en decomiso previo a la destrucción del arma * */ private Integer diasParaDestruirArma; /** * Catalogcode de la tabla Catálogos que funciona como bandera para indicar si un arma ya se encuentra en algún reporte previo. * */ private final String CATALOGCODEADESTRUIRSE = "ADESTRUIRSE"; /** * Ruta base del reporte generado en el Alfresco * */ private String xPathLocation; /** * Ubicacion completa del reporte generado en el Alfresco * */ private String xPath; /** * Nombre del reporte generado en el Alfresco * */ private String nombreReporte; /** * Codigo de cabecera del reporte generado en base de datos * */ private String creporte; /** * Bandera de tipo booleano para indicar si se genero o no el reporte * */ private Boolean seGeneroReporte; /** * Bandera de tipo booleano para indicar si se ha grabado el reporte generado * */ private Boolean isEnableGrabar; /** * Bandera de tipo booleano para indicar que se debe deshabilitar el boton iniciar flujo * */ private Boolean isEnableEnviar; /** * Variable del tipo TgeneCatalogDetail(Esta en reporte de armas a destruirse) */ private TgeneCatalogDetail aDestruirseCatalog; /** * Clase controladora de reportes */ @ManagedProperty(value = "#{reportController}") private ReportController reportController; /** * Clase controladora de cabecera de reporte de armas a destruir */ @ManagedProperty(value = "#{cabRepDestruirArmasController}") private CabRepDestruirArmasController cabRepDestruirArmasController; /** * Clase controladora de detalle de reporte de armas a destruir */ @ManagedProperty(value = "#{detRepDestruirArmasController}") private DetRepDestruirArmasController detRepDestruirArmasController; /** * Clase controladora de funcionalidad del Alfresco */ @ManagedProperty(value="#{alfrescoController}") private AlfrescoController alfrescoController; /** * codigo de la provincia del usuario logeado */ private String cprovincia; public ReporteDestruccionDeArmasController() throws Exception { super(TarmDecomisoArma.class); // TODO Auto-generated constructor stub } @PostConstruct private void postconstruct() { this.init(); // Inicializa autoconsulta super.startQuery(); } /** * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. */ private void init() { try { userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); diasParaDestruirArma = ParametersController.find("DIASENBODEGA.DESTRUIRARMAS", "1").getNumbervalue().intValue(); aDestruirseCatalog = CatalogDetailController.findxCodigoCodcatalogo("1", CATALOGCODEADESTRUIRSE); recperpage = 10000; // Cambiar al # reg a mirar. lrecord = new ArrayList(); beanalias = "RPRTEDESTRUCCIONDEARMAS"; seGeneroReporte = Boolean.FALSE; isEnableGrabar = Boolean.TRUE; isEnableEnviar = Boolean.FALSE; TarmCentroControl centroControl=Utilidades.obtenerCentroControl(); cprovincia=centroControl.getProvincecode(); querydatabase(); } catch (Exception e) { MessageHelper.setMessageError(e); } } /** * Obtiene el centro de control segun usurio logeado. * @throws Exception * */ /** * Metodo que se debe ejecutar cuando es una transaccion de tipo verificar armas * @throws Exception */ // private void provinciaUsuario() throws Exception { // PersonAddressController personAddressController = new PersonAddressController(); // TcustPersonAddress tcustPersonAddres= personAddressController.findPrincipal(userDetail.getPk().getPersoncode().toString()); // cprovincia=tcustPersonAddres.getProvincecode(); // } /** * Crea una instancia y marca el registro como nuevo. * * @throws Exception */ @Override public void create() throws Exception { super.create(); } /** * Seleccionado todos los registros de la tabla */ public void seleccionarTodos(AjaxBehaviorEvent event) { try { Boolean valorColocar = Boolean.FALSE; if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ valorColocar = Boolean.TRUE; } for (TarmDecomisoArma decomisoArmaObj : lrecord) { decomisoArmaObj.getModifiedData().put("isSelect", valorColocar); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } @SuppressWarnings("unchecked") @Override protected void querydatabase() { try { if(fechaCorte!=null){ Calendar fechaActualCldr = Calendar.getInstance(); Calendar fechaCorteCldr = Calendar.getInstance(); fechaCorteCldr.setTime(fechaCorte); if(fechaActualCldr.compareTo(fechaCorteCldr)>=0){ DtoQuery dto = super.getDtoQuery(true); dto.setOrderby("t.fdecomiso"); Calendar fechaReferenciaReporteCldr = Calendar.getInstance(); fechaReferenciaReporteCldr.setTime(fechaCorte); fechaReferenciaReporteCldr.add(Calendar.DAY_OF_MONTH, -diasParaDestruirArma); StringBuilder fechaReferenciaSB = new StringBuilder(); fechaReferenciaSB = fechaReferenciaSB.append((fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) : (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH))); fechaReferenciaSB = fechaReferenciaSB.append("-").append((fechaReferenciaReporteCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.MONTH) + 1) : (fechaReferenciaReporteCldr.get(Calendar.MONTH)+1)); fechaReferenciaSB = fechaReferenciaSB.append("-").append(fechaReferenciaReporteCldr.get(Calendar.YEAR)); Filter fechaFiltro= new Filter(); fechaFiltro.setSql("(t.estado='DEC' or t.estado='INC' or t.estado='ABA' or t.estado='ENTR') and t.adestruirse is null and t.adestruirsecode is null and t.fdecomiso < " + "TO_DATE('" + fechaReferenciaSB.toString() + "','dd-mm-yyyy') and not exists(select 1 from TarmArmas ta where ta.estado = 'SUSP' and t.carma = (select max(tax.pk) from TarmArmas tax where ta.pk = tax.pk))"); dto.addFiltro(fechaFiltro); HashMap mtables = new HashMap(); mtables.put(beanalias, dto); // permite adicionar mas de una tabla. Request request = callerhelper.getRequest(); request.setQueryTables(mtables); Response resp = callerhelper.executeQuery(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { lrecord = new ArrayList(); MessageHelper.setMessageError(resp); } else { lrecord = (List) resp.get(beanalias); for(TarmDecomisoArma decomisoArma:lrecord){ if(decomisoArma.getCdecomiso()!=null){ decomisoArma.getModifiedData().put("isSelect",Boolean.FALSE); TarmArmas arma = ArmasController.findByPK(decomisoArma.getCarma()); TarmTipoArmaExplosivo tipoArmaExplosivo = TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); decomisoArma.getModifiedData().put("ntipo", arma.getModifiedData().get("tipo")); decomisoArma.getModifiedData().put("nclase", arma.getModifiedData().get("clase")); if(tipoArmaExplosivo.getLongitud()!=null){ decomisoArma.getModifiedData().put("nlongitud", CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getLongitud(), tipoArmaExplosivo.getLongitudcodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getLongitud(), tipoArmaExplosivo.getLongitudcodigo()).getDescription():""); } else{ decomisoArma.getModifiedData().put("nlongitud", ""); } if(tipoArmaExplosivo.getCalibre()!=null){ decomisoArma.getModifiedData().put("ncalibre", CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getCalibre(), tipoArmaExplosivo.getCalibrecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getCalibre(), tipoArmaExplosivo.getCalibrecodigo()).getDescription():""); } else{ decomisoArma.getModifiedData().put("ncalibre", ""); } decomisoArma.getModifiedData().put("nmarca", CatalogDetailController.findxCodigoCodcatalogo( arma.getMarca(), arma.getMarcacodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo( arma.getMarca(), arma.getMarcacodigo()).getDescription():""); decomisoArma.getModifiedData().put("nserie", arma.getLote()); decomisoArma.getModifiedData().put("nunidad", CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getUnidadmedida(), decomisoArma.getUnidadmedidacode())!=null?CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getUnidadmedida(), decomisoArma.getUnidadmedidacode()).getDescription():""); TarmRegistroArmas registroArma = RegistroArmController.findByCodigo(arma.getCregistro().toString()); if(registroArma!=null && registroArma.getPersoncode()!=null){ Integer personCodePropietario = registroArma.getPersoncode(); decomisoArma.getModifiedData().put("npropietario", PersonDetailController.find(personCodePropietario.toString()).getName()); } else{ decomisoArma.getModifiedData().put("npropietario", ""); } TarmDecomiso decomiso = DecomisoController.findByCodigo(decomisoArma.getCdecomiso().toString()); if(decomiso!=null && decomiso.getNumerodocumento()!=null){ decomisoArma.getModifiedData().put("nrecibo", decomiso.getNumerorecibo()); } else{ decomisoArma.getModifiedData().put("nrecibo", ""); } } else{ lrecord.remove(decomisoArma); } } super.postQuery(lrecord); } } else{ lrecord = new ArrayList(); MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_fechaCorteMayorAFechaActual")); } } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Metodo para reconsultar en base a una nueva fecha de corte seleccionada */ public void cambioFechaDeCorte(SelectEvent event){ querydatabase(); } @Override public void postCommit(Response response) throws Exception { super.postCommitGeneric(response, beanalias); cabRepDestruirArmasController.postCommit(response); detRepDestruirArmasController.postCommit(response); } /** * Genera un reporte de armas a destruir * */ public void generateReport() { if(fechaCorte!=null){ if(existeArmasSeleccionadas()){ Calendar fechaActualCldr = Calendar.getInstance(); Calendar fechaCorteCldr = Calendar.getInstance(); fechaCorteCldr.setTime(fechaCorte); if(fechaActualCldr.compareTo(fechaCorteCldr)>=0){ String path = "armas/reports/bajaDestruccion"; String filename="ArmasADestruirse"; // Fija parametros del report. HashMap parameters = new HashMap<>(); parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); // Datos del supervisor militar String CISupervisorMilitar = ParametersController.find("IDSUPERMILITDPTOARMSPICH", "1").getTextvalue(); TcustPersonDetail supervisorMilitarObj = PersonDetailController.findxidentification(CISupervisorMilitar, "CED"); String gradoSupMilitar = supervisorMilitarObj.getMilitarygrade()==null?"": supervisorMilitarObj.getMilitarygrade() + " - "; parameters.put("nombreSupMilitar", gradoSupMilitar + supervisorMilitarObj.getName()==null?"":supervisorMilitarObj.getName()); parameters.put("personCodeSupMilitar", supervisorMilitarObj.getPk().getPersoncode()==null?"1001":supervisorMilitarObj.getPk().getPersoncode()); // Datos del coordinador militar String CICoordinadorMilitar = ParametersController.find("IDCOORDMILITDPTOARMSPICH", "1").getTextvalue(); TcustPersonDetail coordinadorMilitarObj = PersonDetailController.findxidentification(CICoordinadorMilitar, "CED"); String gradoCoordMilitar = coordinadorMilitarObj.getMilitarygrade()==null?"":coordinadorMilitarObj.getMilitarygrade() + " - "; parameters.put("nombreCoordMilitar", gradoCoordMilitar + coordinadorMilitarObj.getName()==null?"":coordinadorMilitarObj.getName()); parameters.put("personCodeCoordMilitar", coordinadorMilitarObj.getPk().getPersoncode()==null?"1001":coordinadorMilitarObj.getPk().getPersoncode()); try { //Usuario logueado en la aplicacion String nombreUsuario; if(userDetail.getPk().getPersoncode()!=null){ nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); } else{ nombreUsuario = ""; } parameters.put("usuario", nombreUsuario); //Fecha de corte StringBuilder fechaCorteSB= new StringBuilder(); fechaCorteSB = fechaCorteSB.append((fechaCorteCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCorteCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCorteCldr.get(Calendar.DAY_OF_MONTH))); fechaCorteSB = fechaCorteSB.append("-").append((fechaCorteCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCorteCldr.get(Calendar.MONTH) + 1) : (fechaCorteCldr.get(Calendar.MONTH)+1)); fechaCorteSB = fechaCorteSB.append("-").append(fechaCorteCldr.get(Calendar.YEAR)); parameters.put("fechaCorte", fechaCorteSB.toString()); parameters.put("codArmasDecomisadasLst", actualizarArmasSeleccionadas()); //Fecha actual StringBuilder fechaActualSB = new StringBuilder(); fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); parameters.put("lugarFecha", fechaActualSB.toString()); //Fecha de referencia Calendar fechaReferenciaReporteCldr = Calendar.getInstance(); fechaReferenciaReporteCldr.setTime(fechaCorte); fechaReferenciaReporteCldr.add(Calendar.DAY_OF_MONTH, -diasParaDestruirArma); StringBuilder fechaReferenciaSB = new StringBuilder(); fechaReferenciaSB = fechaReferenciaSB.append((fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) : (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH))); fechaReferenciaSB = fechaReferenciaSB.append("-").append((fechaReferenciaReporteCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.MONTH) + 1) : (fechaReferenciaReporteCldr.get(Calendar.MONTH)+1)); fechaReferenciaSB = fechaReferenciaSB.append("-").append(fechaReferenciaReporteCldr.get(Calendar.YEAR)); parameters.put("fechaReferenciaReporte", fechaReferenciaSB.toString()); // Verifico si el reporte fue enviado en el flujo y debe subirse al Alfresco // if(isDenied){ InputStream file =this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); alfrescoController.uploadFile(file, nombreReporte, this.xPathLocation); seGeneroReporte = Boolean.TRUE; // }else{ // this.reportController.execute(path, parameters, format, filename, this.getLoginController()); // } } catch (Exception ex) { MessageHelper.setMessageError(ex); } } else{ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_fechaCorteMayorAFechaActual")); } }else{ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccioneAlmenosUnArma")); } } } /** * Retorna la ruta de documento base en donde se almacenará el reporte * * @return */ public String getRutaDocumentoRepBase() { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); StringBuilder ruta = new StringBuilder("cm:Decomiso"); ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); return ruta.toString(); } public String getxPath() { return xPath; } public void setxPath(String xPath) { this.xPath = xPath; } /** * Método para el inicio de flujo. Guardar el reporte creado para su posterior aprobacion en otras instancias del flujo */ @Override public void save(){ try { if(lrecord!=null && lrecord.size()>0){ if(validaSiExisteArmasSeleccionadas()){ TarmCabRepDestruirArmas cabeceraReporteObj = new TarmCabRepDestruirArmas(); cabeceraReporteObj.setFreporte((java.sql.Date)fechaCorte); xPathLocation= getRutaDocumentoRepBase() + "/cm:BAJA"; cabeceraReporteObj.setXpath(xPathLocation); cabeceraReporteObj.setIsnew(Boolean.TRUE); //Guarda la ruta donde se almacenara el reporte cabRepDestruirArmasController.update(cabeceraReporteObj); Boolean existArmasEnReporte = Boolean.FALSE; for(TarmDecomisoArma decomisoArmaObj:lrecord){ if(decomisoArmaObj.getAdestruirse()==null){ if(decomisoArmaObj.getModifiedData().get("isSelect")==null || decomisoArmaObj.getModifiedData().get("isSelect").equals(Boolean.FALSE)){ continue; } TarmDetRepDestruirArmas detalleReporteObj = new TarmDetRepDestruirArmas(); detalleReporteObj.setIsnew(Boolean.TRUE); if(decomisoArmaObj.getCdecomiso()!=null){ detalleReporteObj.setCdecomisoarma(decomisoArmaObj.getPk()); } if(decomisoArmaObj.getModifiedData().get("nclase")!=null){ detalleReporteObj.setClase(decomisoArmaObj.getModifiedData().get("nclase").toString()); } if(decomisoArmaObj.getModifiedData().get("ntipo")!=null){ detalleReporteObj.setTipo(decomisoArmaObj.getModifiedData().get("ntipo").toString()); } if(decomisoArmaObj.getModifiedData().get("ncalibre")!=null){ detalleReporteObj.setCalibre(decomisoArmaObj.getModifiedData().get("ncalibre").toString()); } if(decomisoArmaObj.getModifiedData().get("nmarca")!=null){ detalleReporteObj.setMarca(decomisoArmaObj.getModifiedData().get("nmarca").toString()); } if(decomisoArmaObj.getModifiedData().get("nserie")!=null){ detalleReporteObj.setSerie(decomisoArmaObj.getModifiedData().get("nserie").toString()); } if(decomisoArmaObj.getCantidad()!=null){ detalleReporteObj.setCantidad(decomisoArmaObj.getCantidad().toString()); } if(decomisoArmaObj.getModifiedData().get("nunidad")!=null){ detalleReporteObj.setUnidad(decomisoArmaObj.getModifiedData().get("nunidad").toString()); } if(decomisoArmaObj.getFdecomiso()!=null){ java.sql.Date date =new java.sql.Date(decomisoArmaObj.getFdecomiso().getTime()); detalleReporteObj.setFdecomiso(date); } if(decomisoArmaObj.getModifiedData().get("npropietario")!=null){ detalleReporteObj.setPropietario(decomisoArmaObj.getModifiedData().get("npropietario").toString()); } if(decomisoArmaObj.getModifiedData().get("nrecibo")!=null){ detalleReporteObj.setNrecibo(decomisoArmaObj.getModifiedData().get("nrecibo").toString()); } if(!existArmasEnReporte){ existArmasEnReporte = Boolean.TRUE; } // Marca que indica que el arma decomisada ya se encuentra dentro de un reporte de armas a destruir decomisoArmaObj.setAdestruirse(aDestruirseCatalog.getPk().getCatalog()); decomisoArmaObj.setAdestruirsecode(aDestruirseCatalog.getPk().getCatalogcode()); record = decomisoArmaObj; super.update(); detRepDestruirArmasController.update(detalleReporteObj); } } if(existArmasEnReporte){ Request request = this.callerhelper.getRequest(); DtoSave dtosave = super.getDtoSave(); dtosave.setPosition(1); DtoSave dtoSaveCabecera = cabRepDestruirArmasController.getDtoSave(); dtoSaveCabecera.setIsForm(Boolean.TRUE); dtoSaveCabecera.setReturnpk(Boolean.TRUE); dtoSaveCabecera.setPosition(2); DtoSave dtoSaveDetalle = detRepDestruirArmasController.getDtoSave(); dtoSaveDetalle.setReturnpk(Boolean.TRUE); dtoSaveDetalle.setPosition(3); HashMap msave = new HashMap(); msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. msave.put(cabRepDestruirArmasController.getBeanalias(),dtoSaveCabecera); msave.put(detRepDestruirArmasController.getBeanalias(),dtoSaveDetalle); request.setSaveTables(msave); Response resp = this.callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.postCommit(resp); this.cabRepDestruirArmasController.postCommit(resp); this.detRepDestruirArmasController.postCommit(resp); isEnableGrabar = Boolean.FALSE; isEnableEnviar = Boolean.TRUE; MessageHelper.setMessageInfo(resp); this.nombreReporte = resp.get("nombreReporte").toString(); this.creporte = resp.get("creporte").toString(); this.xPath = resp.get("xpath").toString(); } else { MessageHelper.setMessageError(resp); } } else{ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccioneAlmenosUnArma")); } } else{ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccioneAlmenosUnArma")); } } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Metodo usado para validar si existen armas seleccionadas por el usuario */ public Boolean validaSiExisteArmasSeleccionadas() { Boolean bandera = Boolean.FALSE; if(lrecord!=null && lrecord.size()>0){ for(TarmDecomisoArma decomisoArmaObj:lrecord){ if(decomisoArmaObj.getModifiedData().get("isSelect")!=null && decomisoArmaObj.getModifiedData().get("isSelect").equals(Boolean.TRUE)){ bandera = Boolean.TRUE; } } } return bandera; } /** * Metodo que inicia el flujo de baja y destruccion de armas */ public void iniciarFlujo() { try { if(seGeneroReporte){ Request request = this.callerhelper.getRequest(); super.cleanRequest(request); request.modifiedData().put("isnew", "Y"); request.modifiedData().put("xpath", this.xPath); request.modifiedData().put("creporte", this.creporte); request.modifiedData().put("cprovincia", cprovincia); request.setLogsolicitude(this.creporte); Response resp = this.callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { MessageHelper.setMessageInfo(resp); isEnableEnviar = Boolean.FALSE; // RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); } else { MessageHelper.setMessageError(resp); } } else{ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generarReporteRequerido")); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } public Date getFechaCorte() { return fechaCorte; } public void setFechaCorte(Date fechaCorte) { this.fechaCorte = fechaCorte; } public String getFormat() { return format; } public void setFormat(String format) { this.format = format; } public ReportController getReportController() { return reportController; } public void setReportController(ReportController reportController) { this.reportController = reportController; } public TsafeUserDetail getUserDetail() { return userDetail; } public void setUserDetail(TsafeUserDetail userDetail) { this.userDetail = userDetail; } public Integer getDiasParaDestruirArma() { return diasParaDestruirArma; } public void setDiasParaDestruirArma(Integer diasParaDestruirArma) { this.diasParaDestruirArma = diasParaDestruirArma; } public CabRepDestruirArmasController getCabRepDestruirArmasController() { return cabRepDestruirArmasController; } public void setCabRepDestruirArmasController( CabRepDestruirArmasController cabRepDestruirArmasController) { this.cabRepDestruirArmasController = cabRepDestruirArmasController; } public DetRepDestruirArmasController getDetRepDestruirArmasController() { return detRepDestruirArmasController; } public void setDetRepDestruirArmasController( DetRepDestruirArmasController detRepDestruirArmasController) { this.detRepDestruirArmasController = detRepDestruirArmasController; } public TgeneCatalogDetail getaDestruirseCatalog() { return aDestruirseCatalog; } public void setaDestruirseCatalog(TgeneCatalogDetail aDestruirseCatalog) { this.aDestruirseCatalog = aDestruirseCatalog; } public String getxPathLocation() { return xPathLocation; } public void setxPathLocation(String xPathLocation) { this.xPathLocation = xPathLocation; } public String getNombreReporte() { return nombreReporte; } public void setNombreReporte(String nombreReporte) { this.nombreReporte = nombreReporte; } public AlfrescoController getAlfrescoController() { return alfrescoController; } public void setAlfrescoController(AlfrescoController alfrescoController) { this.alfrescoController = alfrescoController; } public String getCreporte() { return creporte; } public void setCreporte(String creporte) { this.creporte = creporte; } public Boolean getSeGeneroReporte() { return seGeneroReporte; } public void setSeGeneroReporte(Boolean seGeneroReporte) { this.seGeneroReporte = seGeneroReporte; } public Boolean getIsEnableGrabar() { return isEnableGrabar; } public void setIsEnableGrabar(Boolean isEnableGrabar) { this.isEnableGrabar = isEnableGrabar; } public Boolean getIsEnableEnviar() { return isEnableEnviar; } public void setIsEnableEnviar(Boolean isEnableEnviar) { this.isEnableEnviar = isEnableEnviar; } /** * Metodo encargado de marcar un registro de la tabla como seleccionado */ public void seleccionarArma(AjaxBehaviorEvent event){ try { SelectBooleanCheckbox booleanCheckbox = (SelectBooleanCheckbox) event.getComponent(); record = (TarmDecomisoArma) booleanCheckbox.getAttributes().get("armaDecomisadaObj"); boolean checked = (Boolean) booleanCheckbox.getValue(); if (checked) { record.getModifiedData().put("isSelect",Boolean.TRUE); }else{ record.getModifiedData().put("isSelect",Boolean.FALSE); this.getMfilelds().put("seleccionarTodos", Boolean.FALSE); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * Metodo encargado de obtener todas las claves primarias de los elementos seleccionados en la tabla */ public Collection actualizarArmasSeleccionadas (){ ListarmasSeleccionadasLst = new ArrayList<>(); for(TarmDecomisoArma decomisoArmaObj:lrecord){ if(decomisoArmaObj.getModifiedData().get("isSelect").equals(Boolean.TRUE)){ armasSeleccionadasLst.add(decomisoArmaObj.getPk()); } } return armasSeleccionadasLst; } /** * Metodo encargado de verificar si existe al menos un registro seleccionado en la tabla */ public Boolean existeArmasSeleccionadas(){ Boolean flag = Boolean.FALSE; for(TarmDecomisoArma decomisoArmaObj:lrecord){ if(decomisoArmaObj.getModifiedData().get("isSelect").equals(Boolean.TRUE)){ flag = Boolean.TRUE; break; } } return flag; } }