package com.fp.frontend.controller.armas.solicitud; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; 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 org.primefaces.context.RequestContext; 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.query.SubQuery; 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.CargaController; import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; 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.MsgGeneral; import com.fp.persistence.parmas.fun.TarmCarga; import com.fp.persistence.parmas.inte.TarmColadeImpresion; 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.param.TarmTramite; import com.fp.persistence.parmas.soli.TarmAgenciaArma; import com.fp.persistence.parmas.soli.TarmArmaPruebas; import com.fp.persistence.parmas.soli.TarmArmas; import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; import com.fp.persistence.parmas.soli.TarmGuardias; import com.fp.persistence.parmas.soli.TarmSolicitud; import com.fp.persistence.parmas.soli.TarmSolicitudAgenciaSucursal; import com.fp.persistence.parmas.soli.TarmSolicitudArmas; import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; import com.fp.persistence.parmas.soli.TarmSolicitudGuardias; import com.fp.persistence.parmas.soli.TarmSolicitudTramite; 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.gene.TgeneParameters; import com.fp.persistence.pgeneral.safe.TsafeUserDetail; /** * Controlador principal que maneja la entidad TarmSolicitudArmas * @author Carlos Guzman * */ @SuppressWarnings("serial") @ManagedBean @ViewScoped public class RecepcionArmasController extends AbstractController { private TcustPersonDetail personaDetalle; private String provincia; private String canton; private String ciudad; private String direccion; private List lArmas = new ArrayList(); private List lSolicitudGuardias = new ArrayList(); private List lGuardias = new ArrayList(); private TgeneCatalogDetail detallecatalogo = new TgeneCatalogDetail(); private TgeneCatalogDetail detallecatalogoTipoTramite = new TgeneCatalogDetail(); private TgeneCatalogDetail usoActividad = new TgeneCatalogDetail(); private TgeneCatalogDetail tipoAutorizacion = new TgeneCatalogDetail(); private TgeneCatalogDetail categoria = new TgeneCatalogDetail(); private TgeneCatalogDetail identificacion = new TgeneCatalogDetail(); private TgeneCatalogDetail estadotramite = new TgeneCatalogDetail(); private TgeneCatalogDetail tipoArchivo = new TgeneCatalogDetail(); private TgeneCatalogDetail tipoCosto = new TgeneCatalogDetail(); private TgeneCatalogDetail vigencia = new TgeneCatalogDetail(); private TarmSolicitudTramite solicitudTramite=new TarmSolicitudTramite(); private TsafeUserDetail tsafeUserDetailUsuario = null; private TarmTramite tramite=new TarmTramite(); private TarmSolicitud solicitud = new TarmSolicitud(); private TarmTipoArmaExplosivo tipoArmaExplosivo = new TarmTipoArmaExplosivo(); private boolean controlPantallaEntregado; private boolean controlPantallaVisualizarTramiteFirmar; private boolean controlPantallaVerificarInformacionDevolucion; private String codigoSolicitud = ""; private String observacion; private String estado; private Date fec_actual; private String xpathflujo; private TcustPersonDetail responsableCentroControl= null; private TsafeUserDetail usuario; private Boolean btnFlujo; private Boolean btnGrabar; /** * lista del catalogo de las acciones (Aceptar o rechazar) */ private List laccion; private TarmCentroControl centroControl = new TarmCentroControl(); @ManagedProperty(value = "#{personAddressController}") private PersonAddressController personAddressController; @ManagedProperty(value = "#{solicitudGuardiasController}") private SolicitudGuardiasController solicitudGuardiasController; @ManagedProperty(value = "#{armasController}") private ArmasController armasController; @ManagedProperty(value = "#{documentoHabilitanteController}") private DocumentoHabilitanteController documentoHabilitanteController; @ManagedProperty(value = "#{colaImpresionController}") private ColaImpresionController colaImpresionController; @ManagedProperty(value = "#{documentoHabilitanteDetalleController}") private DocumentoHabilitanteDetalleController documentoHabilitanteDetalleController; @ManagedProperty(value="#{solicitudTramiteController}") private SolicitudTramiteController solicitudTramiteController; @ManagedProperty(value="#{solicitudController}") private SolicitudController solicitudController; @ManagedProperty(value = "#{reportController}") private ReportController reportController; @ManagedProperty(value = "#{alfrescoController}") private AlfrescoController alfrescoController; /** * Controlador que maneja cargas para previa importacion */ @ManagedProperty(value = "#{cargaController}") private CargaController cargaController; /** * controlador de la solicitud */ @ManagedProperty(value = "#{solicitudArmasController}") private SolicitudArmasController solicitudMP; /** * Controlador que maneja las armas asociadas a las agencias */ @ManagedProperty(value="#{agenciaArmaController}") private AgenciaArmaController agenciaArma; private String numeroTransaccion=""; private List solAgenciaSucursals; private List documentosList; private Boolean requiereNoSolAucpBln; /** *Nombre de la Institucion */ private String nombreInstitucion; public RecepcionArmasController() throws Exception { super(TarmSolicitudArmas.class); } @PostConstruct private void postconstruct() throws Exception { startQuery(); this.init(); querydatabase(); solicitudController= new SolicitudController(); Boolean aprobarFichaBLN = Boolean.FALSE; laccion = new ArrayList(); // Validamos en el caso de permisos TarmTramite tramite = TarmTramiteController.find(numeroTransaccion); TgeneCatalogDetail tipoAutorizacion = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); if(tipoAutorizacion!=null && tipoAutorizacion.getDescription().equalsIgnoreCase("PERMISO")){ ListarmaPruebaList = IngresoFichaTecnicaArmasController.buscarFichasPorSolicitud(codigoSolicitud); for(TarmArmaPruebas armaPruebaObj:armaPruebaList){ if(armaPruebaObj.getApruebaevaluacion().equalsIgnoreCase("Y")){ aprobarFichaBLN = Boolean.TRUE; break; } } if(aprobarFichaBLN){ laccion=CatalogDetailController.find("ACCION"); } else{ TgeneCatalogDetail catalogRechazar = CatalogDetailController.findCatalogo("ACCION","RECH"); laccion.add(catalogRechazar); } } else{ laccion=CatalogDetailController.find("ACCION"); } try { //consulta de agencias cargarAgencias(); //consulta de documentos cargarDocumentos(); } catch (Exception e) { e.printStackTrace(); } } /** * Método en el cual se cargan las agencias que corresponden a la solicitud * @throws Exception */ private void cargarAgencias() throws Exception{ if(codigoSolicitud!=null){ solAgenciaSucursals=SolicitudAgenciaSucursalController.findPorSolicitud(codigoSolicitud); } } /** * Método en el cual se cargan las agencias que corresponden a la solicitud * @throws Exception */ private void cargarDocumentos() throws Exception{ if(codigoSolicitud!=null){ documentosList=TarmSolicitudDocumentoController.findPorSolicitud(codigoSolicitud);//documentoHabilitanteController.lrecord } } public void startQuery() { try { this.pasteBpmScreenParameters(); //xpathflujo=super.getMfilters().get("xpath");//"cm:Decomiso/cm:A-2014/cm:M-10/cm:ENV-000000319/cm:ENV-000000319.pdf";// numeroTransaccion=super.getMfilters().get("numerotransaccion"); codigoSolicitud=super.getMfilters().get("csolicitud"); System.out.println("numeroTransaccion .."+numeroTransaccion); super.getMfilters().clear(); } catch (Exception e) { MessageHelper.setMessageError(e); } } private void init() { try { validarpantallaActual(); recperpage = 500; // Cambiar al # reg a mirar. lrecord = new ArrayList<>(); beanalias = "RECEPCIONARMAS"; this.responsableCentroControl = new TcustPersonDetail(); this.tsafeUserDetailUsuario = new TsafeUserDetail(); usuario=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); this.fec_actual = new Date(); btnFlujo=Boolean.FALSE; btnGrabar=Boolean.TRUE; } catch (Exception e) { MessageHelper.setMessageError(e); } } @SuppressWarnings("unchecked") @Override protected void querydatabase() { try { this.lArmas.clear(); this.lGuardias.clear(); if (codigoSolicitud==null){ return; } DtoQuery dto = super.getDtoQuery(true); dto.setOrderby("t.pk.csolicitud"); SubQuery subquerymodelo= new SubQuery("TarmArmas","modelo","modelo","i.pk=t.pk.carma"); dto.addSubQuery(subquerymodelo); SubQuery subqueryacrma= new SubQuery("TarmArmas","pk","carma","i.pk=t.pk.carma"); dto.addSubQuery(subqueryacrma); SubQuery subqueryserie= new SubQuery("TarmArmas","lote","lote","i.pk=t.pk.carma"); dto.addSubQuery(subqueryserie); SubQuery subqueryCantidad= new SubQuery("TarmArmas","cantidad","cantidad","i.pk=t.pk.carma"); dto.addSubQuery(subqueryCantidad); SubQuery subqueryPeso= new SubQuery("TarmArmas","peso","peso","i.pk=t.pk.carma"); dto.addSubQuery(subqueryPeso); SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=(select p.unidadmedidacantidad from TarmArmas p where p.pk=t.pk.carma) and" + " i.pk.catalogcode=(select p.unidadmedidacantidadcodigo from TarmArmas p where p.pk=t.pk.carma)"); dto.addSubQuery(subqueryUnidadMedida); SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog= (select o.marca from TarmArmas o where o.pk=t.pk.carma) " + " and i.pk.catalogcode=(select o.marcacodigo from TarmArmas o where o.pk=t.pk.carma)"); dto.addSubQuery(subqueryMarca); SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=(select o.color from TarmArmas o where o.pk=t.pk.carma)" + " and i.pk.catalogcode=(select o.colorcodigo from TarmArmas o where o.pk=t.pk.carma)"); dto.addSubQuery(subqueryColor); SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=(select o.estado from TarmArmas o where o.pk=t.pk.carma)" + " and i.pk.catalogcode=(select o.estadocodigo from TarmArmas o where o.pk=t.pk.carma)"); dto.addSubQuery(subqueryEstado); SubQuery subqueryClase= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog=(select o.clase from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" + " and i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); dto.addSubQuery(subqueryClase); SubQuery subqueryLongitud= new SubQuery("TgeneCatalogDetail","description","longitud","i.pk.catalog=(select o.longitud from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" + " and i.pk.catalogcode=(select o.longitudcodigo from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); dto.addSubQuery(subqueryLongitud); SubQuery subqueryCalibre= new SubQuery("TgeneCatalogDetail","description","calibre","i.pk.catalog=(select o.calibre from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" + " and i.pk.catalogcode=(select o.calibrecodigo from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); dto.addSubQuery(subqueryCalibre); SubQuery subqueryTipoArma= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog=(select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" + " and i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); dto.addSubQuery(subqueryTipoArma); Filter filtro = new Filter(); filtro.setField("pk.csolicitud"); filtro.setValue(codigoSolicitud); dto.addFiltro(filtro); HashMap mtables = new HashMap(); mtables.put(beanalias, dto); // permite adicionar mas de una tabla. Request request = this.callerhelper.getRequest(); request.setQueryTables(mtables); solicitudGuardiasController.addFilter("pk.csolicitud", codigoSolicitud); solicitudGuardiasController.findPorSolicitud(codigoSolicitud); solicitudGuardiasController.query(); Response resp = this.callerhelper.executeQuery(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { this.lrecord = new ArrayList(); MessageHelper.setMessageError(resp); } else { this.lrecord = (List) resp.get(beanalias); if ((this.lrecord != null) && !this.lrecord.isEmpty()) { } super.postQuery(this.lrecord); } solicitud = SolicitudArmasController.find(codigoSolicitud); if (solicitud!=null){ personaDetalle = PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); identificacion = (personaDetalle.getIdentificationcatalog()==null || personaDetalle.getIdentificationcatalogcode()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(personaDetalle.getIdentificationcatalog(), personaDetalle.getIdentificationcatalogcode()); if(identificacion!=null){ //personAddressController.findPersonaPorDireccionTipoCatalogo(String.valueOf(solicitud.getPersoncode()), tipoDireccion); TcustPersonAddress direccionCliente=personAddressController.findPrincipal(String.valueOf(solicitud.getPersoncode())) ; provincia = direccionCliente.modifiedData().get("provincia")==null?null: direccionCliente.modifiedData().get("provincia").toString(); //personAddressController.getLprovinces()==null || .getLprovinces().isEmpty()?null:personAddressController.getLprovinces().get(0); canton = direccionCliente.modifiedData().get("canton")==null?null: direccionCliente.modifiedData().get("canton").toString();//personAddressController.getLcantones()==null || personAddressController.getLcantones().isEmpty()?null:personAddressController.getLcantones().get(0); ciudad = direccionCliente.modifiedData().get("ciudad")==null?null: direccionCliente.modifiedData().get("ciudad").toString();//personAddressController.getLcities()==null || personAddressController.getLcities().isEmpty()?null:personAddressController.getLcities().get(0); direccion= direccionCliente.getAddress(); } } //Proceso de tramite solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(codigoSolicitud); if(solicitudTramite!=null && solicitudTramite.getPk().getCtramite()!=null){ tramite=TarmTramiteController.find(solicitudTramite.getPk().getCtramite().toString()); estadotramite = (solicitudTramite.getEstadotramite()==null || solicitudTramite.getEstadotramitecodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(solicitudTramite.getEstadotramite(), solicitudTramite.getEstadotramitecodigo()); } if(tramite!=null && tramite.getPk() != null){ detallecatalogo = (tramite.getCategoria()==null || tramite.getCategoriacodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); detallecatalogoTipoTramite = (tramite.getTipoautorizacion()==null || tramite.getTipoautorizacioncodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); vigencia = CatalogDetailController.findxCodigoCodcatalogo( tramite.getVigencia(), tramite.getVigenciacodigo()); tipoArchivo = CatalogDetailController.findxCodigoCodcatalogo( tramite.getTipoarchivo(), tramite.getTipoarchivocodigo()); tipoCosto = CatalogDetailController.findxCodigoCodcatalogo( tramite.getTipocosto(), tramite.getTipocostocodigo()); usoActividad = (tramite.getUsoactividad()==null || tramite.getUsoactividadcodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); tipoAutorizacion = (tramite.getTipoautorizacion()==null || tramite.getTipoautorizacioncodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); categoria = (tramite.getCategoria()==null || tramite.getCategoriacodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); // CATEGORIA 14 PREVIA IMPORTACION if(tramite!=null && tramite.getCategoria().equals("14")){ requiereNoSolAucpBln=Boolean.TRUE; nombreInstitucion = obtenerCentroControl(); }else{ requiereNoSolAucpBln=Boolean.FALSE; } } armasController.setRecperpage(500); //lArmas = armasController.findArmaRecep(lrecord.get(0).getPk().getCsolicitud()); for(TarmSolicitudArmas solicitudArmas:lrecord){ TarmArmas armas = new TarmArmas(); armas = armasController.find(solicitudArmas.getPk().getCarma(),null); lArmas.add(armas); } armasController.setLrecord(lArmas); actualizarArmas(); List listaCentroControl=null; if(solicitud!=null && solicitud.getCcentrocontrol()!=null){ listaCentroControl= CentroControlArmasController.find(solicitud.getCcentrocontrol()); } if(listaCentroControl!=null && !listaCentroControl.isEmpty() ){//&& listaCentroControl.get(0).getTramitespordia()!=null){ centroControl = listaCentroControl.get(0); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Metodo que usa para pasar el flujo al seleccionar el boton guardar */ public void guardar(){ } private void guardarcolaImpresionController() throws Throwable{ System.out.println("ACTUALIZA COLA DE IMPRESION"); TarmDocumentoHabilitante docHabilitante=DocumentoHabilitanteController.findPorSolicitud(codigoSolicitud); if(docHabilitante!=null && docHabilitante.getPk()!=null){ System.out.println("ACTUALIZA COLA DE IMPRESION 1"); ListlistaColaImprecion=ColaImpresionController.findByDocumentoCDoc(docHabilitante.getPk().toString()); if(listaColaImprecion!=null && listaColaImprecion.size()>0){ System.out.println("ACTUALIZA COLA DE IMPRESION 2"); for (TarmColadeImpresion item : listaColaImprecion) { item.setEstadoimpresion("PIMPR"); item.setEstadoimpresioncode("ESTADOIMPRESION"); colaImpresionController.update(item); } System.out.println("ACTUALIZA COLA DE IMPRESION 3"); registrarGuardadoColaImpresion(); System.out.println("ACTUALIZA COLA DE IMPRESION 4"); } } } private void registrarGuardadoColaImpresion() throws Throwable{ HashMap msave = new HashMap(); Request request = callerhelper.getRequest(); DtoSave dtosaveColaImpresion = this.colaImpresionController.getDtoSave(true); dtosaveColaImpresion.setReturnpk(true); dtosaveColaImpresion.setPosition(1); msave.put(colaImpresionController.getBeanalias(), dtosaveColaImpresion); request.setSaveTables(msave); Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.colaImpresionController.postCommit(resp); this.postCommit(resp); MessageHelper.setMessageInfo(resp); } else { MessageHelper.setMessageError(resp); throw new Exception(""+resp); } } /** * Metodo para guardar los documentos habilitantes * @throws Throwable */ public void guardarDocumentoHabilitante() throws Throwable{ HashMap msave = new HashMap(); Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, Integer.valueOf(vigencia.getDescription())); TarmSolicitudTramite solicitudtramite =TarmSolicitudTramiteController.findPorCSolicitud(codigoSolicitud); if("CARNET".equalsIgnoreCase(tipoArchivo.getDescription())){ if("TOTAL".equalsIgnoreCase(tipoCosto.getDescription())){ documentoHabilitanteController.create(); documentoHabilitanteController.getRecord().setIsnew(true); documentoHabilitanteController.getRecord().setCsolicitud(codigoSolicitud); documentoHabilitanteController.getRecord().setCentrocontrol(centroControl.getPk()); documentoHabilitanteController.getRecord().setCarma(null); documentoHabilitanteController.getRecord().setCuentareimpresion(0); documentoHabilitanteController.getRecord().setCtramite(solicitudtramite.getPk().getCtramite()); documentoHabilitanteController.getRecord().setFechaemision(new java.sql.Date((new Date()).getTime())); documentoHabilitanteController.getRecord().setFechaexpiracion(new java.sql.Date((cal.getTime()).getTime())); documentoHabilitanteController.getRecord().setPersoncode(solicitud.getPersoncode()); documentoHabilitanteController.getRecord().setEstado("APR"); documentoHabilitanteController.getRecord().setEstadocode("ESTADODOCUMENTO"); documentoHabilitanteController.update(); //Grabacion en la cola de impresion colaImpresionController.create(); colaImpresionController.getRecord().setIsnew(true); //colaImpresionController.getRecord().setEstadoimpresion("PIMPR"); //colaImpresionController.getRecord().setEstadoimpresioncode("ESTADOIMPRESION"); java.util.Date date = new java.util.Date(); colaImpresionController.getRecord().setFecharegistro(new java.sql.Date(date.getTime())); colaImpresionController.update(); } if("TOTAL".equalsIgnoreCase(tipoCosto.getDescription()) && (this.lrecord==null || this.lrecord.isEmpty())){ registrarGuardadoDocumentoHabilitante(msave); } for(TarmSolicitudArmas armaSolicitud:this.lrecord){ if("PARCIAL".equalsIgnoreCase(tipoCosto.getDescription())){ documentoHabilitanteController.create(); documentoHabilitanteController.getRecord().setIsnew(true); documentoHabilitanteController.getRecord().setCsolicitud(codigoSolicitud); documentoHabilitanteController.getRecord().setCentrocontrol(centroControl.getPk()); documentoHabilitanteController.getRecord().setCarma(armaSolicitud.getPk().getCarma()); documentoHabilitanteController.getRecord().setCodigoarma(ArmasController.findPorCodigo(armaSolicitud.getPk().getCarma()).getCodigoarma()); documentoHabilitanteController.getRecord().setCuentareimpresion(0); documentoHabilitanteController.getRecord().setCtramite(solicitudtramite.getPk().getCtramite()); documentoHabilitanteController.getRecord().setFechaemision(new java.sql.Date((new Date()).getTime())); documentoHabilitanteController.getRecord().setFechaexpiracion(new java.sql.Date((cal.getTime()).getTime())); documentoHabilitanteController.getRecord().setPersoncode(solicitud.getPersoncode()); documentoHabilitanteController.getRecord().setEstado("APR"); documentoHabilitanteController.getRecord().setEstadocode("ESTADODOCUMENTO"); documentoHabilitanteController.update(); //Grabacion en la cola de impresion colaImpresionController.create(); colaImpresionController.getRecord().setIsnew(true); //colaImpresionController.getRecord().setEstadoimpresion("PIMPR"); //colaImpresionController.getRecord().setEstadoimpresioncode("ESTADOIMPRESION"); java.util.Date date = new java.util.Date(); colaImpresionController.getRecord().setFecharegistro(new java.sql.Date(date.getTime())); colaImpresionController.update(); } documentoHabilitanteDetalleController.create(); documentoHabilitanteDetalleController.getRecord().setIsnew(true); documentoHabilitanteDetalleController.getRecord().setCarma(armaSolicitud.getPk().getCarma()); documentoHabilitanteDetalleController.getRecord().setCodigoarma(ArmasController.findPorCodigo(armaSolicitud.getPk().getCarma()).getCodigoarma()); documentoHabilitanteDetalleController.update(); if("PARCIAL".equalsIgnoreCase(tipoCosto.getDescription())){ registrarGuardadoDocumentoHabilitante(msave); } } if("TOTAL".equalsIgnoreCase(tipoCosto.getDescription()) && (this.lrecord!=null && !this.lrecord.isEmpty())){ registrarGuardadoDocumentoHabilitante(msave); return; } }else if("REPORTE".equalsIgnoreCase(tipoArchivo.getDescription())){ documentoHabilitanteController.create(); //TarmSolicitudTramite solicitudtramite =TarmSolicitudTramiteController.findPorCSolicitud(codigoSolicitud); documentoHabilitanteController.getRecord().setIsnew(true); documentoHabilitanteController.getRecord().setCsolicitud(codigoSolicitud); documentoHabilitanteController.getRecord().setCentrocontrol(centroControl.getPk()); documentoHabilitanteController.getRecord().setCuentareimpresion(0); documentoHabilitanteController.getRecord().setCtramite(solicitudtramite.getPk().getCtramite()); documentoHabilitanteController.getRecord().setFechaemision(new java.sql.Date((new Date()).getTime())); documentoHabilitanteController.getRecord().setFechaexpiracion(new java.sql.Date((cal.getTime()).getTime())); documentoHabilitanteController.getRecord().setPersoncode(solicitud.getPersoncode()); documentoHabilitanteController.getRecord().setEstado("APR"); documentoHabilitanteController.getRecord().setEstadocode("ESTADODOCUMENTO"); documentoHabilitanteController.update(); for(TarmSolicitudArmas armaSolicitud:this.lrecord){ documentoHabilitanteDetalleController.create(); documentoHabilitanteDetalleController.getRecord().setIsnew(true); documentoHabilitanteDetalleController.getRecord().setCarma(armaSolicitud.getPk().getCarma()); documentoHabilitanteDetalleController.getRecord().setCodigoarma(ArmasController.findPorCodigo(armaSolicitud.getPk().getCarma()).getCodigoarma()); documentoHabilitanteDetalleController.update(); } registrarGuardadoDocumentoHabilitante(msave); }else{ throw new Exception("TIPO DOCUMENTO DE INVALIDO: "+tipoArchivo.getDescription()); } } /** Metodo para realizar el guardado del documento habilitante * @param msave variable save * @throws Throwable */ private void registrarGuardadoDocumentoHabilitante(HashMap msave) throws Throwable{ Request request = callerhelper.getRequest(); DtoSave dtosaveDocumento = this.documentoHabilitanteController.getDtoSave(true); dtosaveDocumento.setReturnpk(true); dtosaveDocumento.setPosition(1); DtoSave dtosaveDocumentoDetalle = this.documentoHabilitanteDetalleController.getDtoSave(true); dtosaveDocumentoDetalle.setReturnpk(true); dtosaveDocumentoDetalle.setPosition(2); DtoSave dtosaveColaImpresion = this.colaImpresionController.getDtoSave(true); dtosaveColaImpresion.setReturnpk(true); dtosaveColaImpresion.setPosition(3); msave.put(documentoHabilitanteController.getBeanalias(), dtosaveDocumento); msave.put(documentoHabilitanteDetalleController.getBeanalias(), dtosaveDocumentoDetalle); msave.put(colaImpresionController.getBeanalias(), dtosaveColaImpresion); request.setSaveTables(msave); Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.documentoHabilitanteController.postCommit(resp); this.documentoHabilitanteDetalleController.postCommit(resp); this.colaImpresionController.postCommit(resp); this.postCommit(resp); MessageHelper.setMessageInfo(resp); } else { MessageHelper.setMessageError(resp); throw new Exception(""+resp); } } /** * Metodo que valida cual es la pantalla que se encuentra activa este controlador */ private void validarpantallaActual(){ if(this.getLoginController()!=null && 24 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ controlPantallaEntregado=true; } else{ controlPantallaEntregado=false; } if(this.getLoginController()!=null && 34 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ controlPantallaVisualizarTramiteFirmar = true; } else{ controlPantallaVisualizarTramiteFirmar = false; } if(this.getLoginController()!=null && 33 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ controlPantallaVerificarInformacionDevolucion = true; } else{ controlPantallaVerificarInformacionDevolucion = false; } } @Override public void query() throws Exception { MessageHelper.setMessageError("msg_notQuery"); super.query(); } @Override public void next() throws Exception { // TODO Auto-generated method stub super.next(); } /** * Metodo para enviar el documento habilitante por el flujo */ public void enviarDocumentoHabilitante(){ } @Override public void save() { try { if (!validarSeleccion()){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_validar_seleccion_armas")); return; } actualizarArmas(); actualizarSolicitudArmas(); TarmSolicitud sol = this.solicitudController.findSolicitudxcodsolicitud(this.codigoSolicitud); String ruta = this.getRutaDocumento()+"/cm:actaEntregaRecepcionArmas.pdf"; System.out.println("ruta : " + ruta); sol.setXpathacta(ruta); this.solicitudController.updateSolicitud(sol); DtoSave dtosave = super.getDtoSave(); dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. HashMap msave = new HashMap(); Request request = callerhelper.getRequest(); msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. request.setSaveTables(msave); Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.postCommit(resp); btnFlujo=Boolean.TRUE; btnGrabar=Boolean.FALSE; MessageHelper.setMessageInfo(resp); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Metodo que guarda el documento */ public void saveDocumentoHabilitante() { try { // validamos si cargamos los datos cuando apruebe Map datosmail = new HashMap(); Request request = callerhelper.getRequest(); TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); TcustPersonDetail persona = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); if (codigoAceptado().equals(estado)) { request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R } else { request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "D" : bpmDataStatus); // A,D,R datosmail.put("funcionario",persona ==null?"":((persona.getMilitarygrade()==null && persona.getMilitarygradecode()==null)?"":CatalogDetailController.findxCodigoCodcatalogo(persona.getMilitarygrade(),persona.getMilitarygradecode()).getDescription()) + " " + persona.getName()); datosmail.put("razons",(solicitud==null || solicitud.getModifiedData().get("nombre")==null)?"":solicitud.getModifiedData().get("nombre")); datosmail.put("sol", solicitud==null?"":solicitud.getPk()); datosmail.put("centrocontrol",(centroControl==null || centroControl.getNombreinstitucion()==null || centroControl.getNombreinstitucioncodigo()==null)?"":CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); } this.update(); HashMap msave = new HashMap(); request.modifiedData().put("datosmail", datosmail); request.modifiedData().put("csolicitud", codigoSolicitud); //request.modifiedData().put("numerotramite", "32"); request.modifiedData().put("TID", tid); request.modifiedData().put("BPMObs", "Analizar documento habilitante"); request.modifiedData().put("observacion", observacion); request.setSaveTables(msave); DtoSave dtosave = super.getDtoSave(); dtosave.setReturnpk(true); dtosave.setPosition(1); msave.put(beanalias, dtosave); request.setSaveTables(msave); Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.postCommit(resp); MessageHelper.setMessageInfo(resp); RequestContext.getCurrentInstance().execute( "Maia.refreshusertasks()"); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * M\u00e9todo que valida si todas las armas se encuentran seleccionadas * @return */ public boolean validarSeleccion(){ for(TarmSolicitudArmas armaSeleccionada:lrecord){ if(!armaSeleccionada.modifiedData().containsValue(Boolean.TRUE)){ return false; } } return true; } /** * Obtiene el centro de control segun usurio logeado. * @throws Exception * */ private String obtenerCentroControl() throws Exception { this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); PersonAddressController personAddressController = new PersonAddressController(); TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); if(tcustPersonAddres == null){ return null; } TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); } /** * Obtiene el responsable del Centro de Control */ public void obtenerResponsableCentroControl(){ Integer responsable = this.centroControl.getPersoncode(); this.responsableCentroControl = PersonDetailController.find(responsable.toString()); } /** * Metodo para armar la ruta del documento * @return */ public String getRutaDocumento() { Calendar calendar = Calendar.getInstance(); StringBuilder ruta = new StringBuilder("cm:Solicitudes"); 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)); ruta = ruta.append("/cm:D-").append( (calendar.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (calendar.get(Calendar.DAY_OF_MONTH)) : (calendar.get(Calendar.DAY_OF_MONTH))); TarmSolicitud solicitud = SolicitudArmasController.find(codigoSolicitud); ruta = ruta.append("/cm:").append(solicitud.getNumerosolicitud()); ruta = ruta.append("/cm:").append("armas"); return ruta.toString(); } /** * M\u00e9todo para imprimir */ public void imprimir(){ try { if (!validarSeleccion()){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_imprimir_recepcion_armas")); return; } this.reporteActaEntregaRecepArmas(); } catch (Exception ex) { MessageHelper.setMessageError(ex); } } /** * Obtiene el reporte de Acta de Entrega Recepción de Armas */ private void reporteActaEntregaRecepArmas() throws Exception{ try { //this.querydatabase(); //buttonAction(); Calendar fechaActualCldr = Calendar.getInstance(); Calendar fechaCorteCldr = Calendar.getInstance(); String gradoUsuario =""; TarmSolicitud sol = this.solicitudController.findSolicitudxcodsolicitud(this.codigoSolicitud); TarmSolicitudTramite soltra = SolicitudTramiteController.findByCSolicitud(this.codigoSolicitud); String path = "armas/reports/repo"; String filename="actaEntregaRecepcionArmas";//MsgControlArmas.getProperty("lbl_fichaTecnicaArmas"); String nombreUsuario; if(usuario.getPk().getPersoncode()!=null){ nombreUsuario = PersonDetailController.find(usuario.getPk().getPersoncode().toString()).getName(); } else{ nombreUsuario = ""; } //Fija parametros del report. HashMap parameters = new HashMap<>(); parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); parameters.put("usuario", nombreUsuario); //Centro de control parameters.put("centroControl", this.obtenerCentroControl()); //Fecha actual //Fecha de solicitud if(sol!=null && sol.getNumerosolicitud()!=null){ if(soltra != null && soltra.getNumerotramite()!=null){ parameters.put("numsolicitud", sol.getNumerosolicitud()); parameters.put("numtramite", soltra.getNumerotramite()); TcustPersonDetail persona = PersonDetailController.find(sol.getPersoncode().toString()); parameters.put("cliente", persona.getName()); } }else{ parameters.put("numsolicitud", " "); } //No tramite if(sol!=null && sol.getFregistro()!=null){ SimpleDateFormat sdf2=new SimpleDateFormat("dd/MM/yyyy"); parameters.put("fechaSolicitud", sdf2.format(sol.getFregistro())); }else{ parameters.put("fechaSolicitud", " "); } //codigo solicitud parameters.put("csolicitud", this.codigoSolicitud); parameters.put("personcode", usuario.getPk().getPersoncode()); 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("fecActual", fechaActualSB.toString()); //Grado del funcionario TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); if(grado != null){ gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); }else{ gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); } parameters.put("gradoUsuario", gradoUsuario); //parameters.put("usuario", this.tsafeUserDetailUsuario.getNickname()); //parameters.put("codResponsable", this.responsableCentroControl.getPk().getPersoncode().toString()); String format = "pdf"; parameters.put("tipotram", this.tipoAutorizacion.getDescription()+" - "+this.categoria.getDescription()+" - "+this.usoActividad.getDescription()); parameters.put("codResponsable",usuario.getPk().getPersoncode()); parameters.put("codigoQR",(sol!=null?sol.getNumerosolicitud():"")+" "+fechaActualSB.toString()+" "+ gradoUsuario); try { this.xpathflujo = this.getRutaDocumento(); InputStream report=this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); this.alfrescoController.uploadFile(report, filename+".pdf", this.xpathflujo); //this.record.setXpathfichatecarmas(this.xpathflujo + "/cm:" + filename+".pdf"); //this.record.getModifiedData().put("impresion",Boolean.TRUE); //this.reportController.execute(path, parameters, format, filename, this.getLoginController()); } catch (Exception ex) { MessageHelper.setMessageError(ex); } } catch (Exception ex) { MessageHelper.setMessageError(ex); } } /** * @return * @throws Exception */ public String codigoAceptado() throws Exception { TgeneParameters f = ParametersController.find("ACEPTADO", "1"); return f.getTextvalue(); } /** * M\u00e9todo para fimar documentos */ public void firmar(){ System.out.println("Firmar"); } /** * M\u00e9todo para actualizar las armas en la base de datos seg\u00fan la pantalla en que se encuentre * @throws Exception */ private void actualizarSolicitudArmas() throws Exception{ for(TarmSolicitudArmas armaSeleccionada:lrecord){ record = armaSeleccionada; if(armaSeleccionada.modifiedData().get("seleccion").equals(Boolean.TRUE)){ if(controlPantallaEntregado){ record.setEntregada("Y"); } else{ record.setAprobada("Y"); } } if(!armaSeleccionada.modifiedData().get("seleccion").equals(Boolean.TRUE)){ if(controlPantallaEntregado){ record.setEntregada("N"); } else{ record.setAprobada("N"); } } update(); } } /** * M\u00e9todo para leer las selecciones guardadas en la base y setearlas seg\u00fan la pantalla en la que se encuentre * @throws Exception */ private void actualizarArmas() throws Exception{ for(TarmSolicitudArmas solicitudArmas:lrecord){ if("Y".equals(solicitudArmas.getEntregada()) && controlPantallaEntregado){ solicitudArmas.modifiedData().put("seleccion", Boolean.TRUE); } if("Y".equals(solicitudArmas.getAprobada()) && !controlPantallaEntregado){ solicitudArmas.modifiedData().put("seleccion", Boolean.TRUE); } } } @SuppressWarnings("unchecked") protected void querydatabaseValidacionTransito() { try { DtoQuery dto = super.getDtoQuery(true); HashMap mtables = new HashMap(); mtables.put(beanalias, dto); // permite adicionar mas de una tabla. Request request = this.callerhelper.getRequest(); request.setQueryTables(mtables); Response resp = this.callerhelper.executeQuery(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { this.lrecord = new ArrayList(); MessageHelper.setMessageError(resp); } else { this.lrecord = (List) resp.get(beanalias); super.postQuery(this.lrecord); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Método para completar la tarea */ public void completarTareaAutorizarTramite() { try { Request request = callerhelper.getRequest(); super.cleanRequest(request); request.modifiedData().put("csolicitud", codigoSolicitud); request.modifiedData().put("numerotransaccion", numeroTransaccion); request.modifiedData().put("TID", tid); if(bpmDataStatus.equalsIgnoreCase("APR") || bpmDataStatus == null){ bpmDataStatus="A"; if(this.getLoginController()!=null && 30 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ guardarcolaImpresionController(); } }else{ bpmDataStatus="D"; } request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); Map datosmail = new HashMap(); TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); TcustPersonDetail persona = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); if (bpmDataStatus.equals("D")) { datosmail.put("funcionario",persona ==null?"":((persona.getMilitarygrade()==null && persona.getMilitarygradecode()==null)?"":CatalogDetailController.findxCodigoCodcatalogo(persona.getMilitarygrade(),persona.getMilitarygradecode()).getDescription()) + " " + persona.getName()); datosmail.put("razons",(solicitud==null || solicitud.getModifiedData().get("nombre")==null)?"":solicitud.getModifiedData().get("nombre")); datosmail.put("sol", solicitud==null?"":solicitud.getPk()); datosmail.put("observaciones", bpmDataComment); datosmail.put("centrocontrol",(centroControl==null || centroControl.getNombreinstitucion()==null || centroControl.getNombreinstitucioncodigo()==null)?"":CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); request.modifiedData().put("datosmail", datosmail); }else{ SimpleDateFormat sdf1 = new SimpleDateFormat(MsgGeneral.getProperty("dateformat")); datosmail.put("funcionario",persona ==null?"":((persona.getMilitarygrade()==null)?"":CatalogDetailController.findxCodigoCodcatalogo(persona.getMilitarygrade(),"MILITARYGRADE").getDescription()) + " " + persona.getName()); datosmail.put("razons",(solicitud==null || solicitud.getModifiedData().get("nombre")==null)?"":solicitud.getModifiedData().get("nombre")); datosmail.put("tramite",solicitudTramite.getNumerotramite()); datosmail.put("centrocontrol",(centroControl==null || centroControl.getNombreinstitucion()==null || centroControl.getNombreinstitucioncodigo()==null)?"":CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); datosmail.put("fechanotificacion",sdf1.format(new Date())); TarmTramite tramite =TarmTramiteController.find(String.valueOf(solicitud.getCtramite())); datosmail.put("tipoTramite",(tramite==null || tramite.getModifiedData().get("tipotramite")==null)?"":tramite.getModifiedData().get("tipotramite")); datosmail.put("tipoAutorizacion",(tramite==null || tramite.getModifiedData().get("tipoautorizacion")==null)?"":tramite.getModifiedData().get("tipoautorizacion")); datosmail.put("usoactividad",(tramite==null || tramite.getModifiedData().get("usoactividad")==null)?"":tramite.getModifiedData().get("usoactividad")); datosmail.put("categoria",(tramite==null || tramite.getModifiedData().get("categoria")==null)?"":tramite.getModifiedData().get("categoria")); request.modifiedData().put("datosmail", datosmail); } Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { MessageHelper.setMessageInfo(resp); if(bpmDataStatus.equals("D")){ saveAnularSolicitud(); } RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } public void saveAnularSolicitud() { try { TarmTramite tarmTramite = null; // CATEGORIA 14 PREVIA IMPORTACION if(this.getLoginController().getRequest().getTransactionCode()==33){ tarmTramite = TarmTramiteController.find(this.solicitud.getCtramite().toString()); }else if(this.getLoginController().getRequest().getTransactionCode()==30){ tarmTramite = TarmTramiteController.find(this.solicitudMP.getRecord().getCtramite().toString()); } if(tarmTramite!=null && tarmTramite.getCategoria().equals("14")){ desasociarCargaSolicitud(); } //Poner la solicitud en estado anulado solicitud.setEstado("ANU"); solicitudMP.setRecord(solicitud); solicitudMP.update(); DtoSave dtoSolicitud = solicitudMP.getDtoSave(); TarmSolicitudTramite solicitudTramiteObj = SolicitudTramiteController.findByCSolicitud(solicitud.getPk()); if(solicitudTramiteObj!=null){ solicitudTramiteObj.setIsnew(false); solicitudTramiteObj.setEstadotramite("ANU"); solicitudTramiteController.updateSolicitud(solicitudTramiteObj); } // DocumentoHabilitanteController documentoHabilitanteController TarmDocumentoHabilitante documentoHabilitanteTmp = DocumentoHabilitanteController.findPorSolicitud(codigoSolicitud); if(documentoHabilitanteTmp!=null){ documentoHabilitanteTmp.setFechaexpiracion(new java.sql.Date(new java.util.Date().getTime())); this.documentoHabilitanteController.setRecord(documentoHabilitanteTmp); this.documentoHabilitanteController.save(); } // if(documentoHabilitanteTmp!=null){ // TarmDocumentoHabilitanteDetall documentoHabilitanteDetTmp = DocumentoHabilitanteDetalleController.findPorCDocumento(documentoHabilitanteTmp.getPk().toString()); // if(documentoHabilitanteDetTmp!=null){ // this.documentoHabilitanteDetalleController.setRecord(documentoHabilitanteDetTmp); // this.documentoHabilitanteDetalleController.remove(); // this.documentoHabilitanteDetalleController.save(); // } // // this.documentoHabilitanteController.setRecord(documentoHabilitanteTmp); // this.documentoHabilitanteController.remove(); // this.documentoHabilitanteController.save(); // } //Desasociar las armas en apertura de agencias y apertura de sucursales if(solicitud.getCtramite()==44 || solicitud.getCtramite()==48){ List armasSolicitudList = RecepcionArmasController.findPorSolicitud(solicitud.getPk()); for(TarmSolicitudArmas armaObj:armasSolicitudList){ // Codigo agencia de la solicitud ListsolicitudAgenciaLst = SolicitudAgenciaSucursalController.findPorSolicitud(solicitud.getPk()); for(TarmSolicitudAgenciaSucursal solicitudAgenciaSucursalObj:solicitudAgenciaLst){ String cAgencia = solicitudAgenciaSucursalObj.getPk().getCagencia().toString(); TarmAgenciaArma agenciaArmaObj = AgenciaArmaController.findByCArma(armaObj.getPk().getCarma(), cAgencia); agenciaArma.setRecord(agenciaArmaObj); agenciaArma.remove(); } } } DtoSave dtoSolicitudTramite = solicitudTramiteController.getDtoSave(); DtoSave dtoAgenciaArma = agenciaArma.getDtoSave(); HashMap msave = new HashMap(); Request request = callerhelper.getRequest(); super.cleanRequest(request); msave.put(solicitudMP.getBeanalias(), dtoSolicitud); // adicionar metadata de mantenimiento para cada tabla. msave.put(solicitudTramiteController.getBeanalias(), dtoSolicitudTramite); msave.put(agenciaArma.getBeanalias(), dtoAgenciaArma); request.setSaveTables(msave); Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { solicitudMP.postCommit(resp); solicitudTramiteController.postCommit(resp); agenciaArma.postCommit(resp); MessageHelper.setMessageInfo(resp); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } public void desasociarCargaSolicitud(){ try{ TarmCarga carga =null; if(this.getLoginController().getRequest().getTransactionCode()==33){ carga = CargaController.findByAUCP(this.solicitud.getAucp()); }else if(this.getLoginController().getRequest().getTransactionCode()==30){ carga = CargaController.findByAUCP(solicitudMP.getRecord().getAucp()); } if(carga!=null){ carga.setCsolicitud(null); cargaController.update(carga); cargaController.save(); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Método para completar la tarea */ public void completarTarea() { try { Map datosmail = new HashMap(); Request request = callerhelper.getRequest(); TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); TcustPersonDetail persona = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); if (bpmDataStatus.equals("A")) { guardarDocumentoHabilitante(); request.modifiedData().put("BPMStatus",bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R } else { request.modifiedData().put("BPMStatus",bpmDataStatus == null ? "D" : bpmDataStatus); // A,D,R anularTramite(); datosmail.put("funcionario",persona ==null?"":((persona.getMilitarygrade()==null && persona.getMilitarygradecode()==null)?"":CatalogDetailController.findxCodigoCodcatalogo(persona.getMilitarygrade(),persona.getMilitarygradecode()).getDescription()) + " " + persona.getName()); datosmail.put("razons",(solicitud==null || solicitud.getModifiedData().get("nombre")==null)?"":solicitud.getModifiedData().get("nombre")); datosmail.put("sol", solicitud==null?"":solicitud.getPk()); datosmail.put("centrocontrol",(centroControl==null || centroControl.getNombreinstitucion()==null || centroControl.getNombreinstitucioncodigo()==null)?"":CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); } this.update(); HashMap msave = new HashMap(); request.modifiedData().put("datosmail", datosmail); request.modifiedData().put("csolicitud", codigoSolicitud); request.modifiedData().put("numerotransaccion", numeroTransaccion); //request.modifiedData().put("xpath", "c"); request.modifiedData().put("TID", tid); request.modifiedData().put("BPMObs", "Analizar documento habilitante"); request.modifiedData().put("observacion", observacion); request.setSaveTables(msave); DtoSave dtosave = super.getDtoSave(); dtosave.setReturnpk(true); dtosave.setPosition(1); msave.put(beanalias, dtosave); request.setSaveTables(msave); Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.postCommit(resp); if(bpmDataStatus.equals("D")){ saveAnularSolicitud(); } MessageHelper.setMessageInfo(resp); RequestContext.getCurrentInstance().execute( "Maia.refreshusertasks()"); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Metodo para anular el tramite * @throws Exception */ private void anularTramite() throws Exception { solicitudTramite=solicitudTramiteController.findByCSolicitud(codigoSolicitud); solicitudTramiteController.setRecord(solicitudTramite); solicitudTramiteController.getRecord().setEstadotramite("ANU"); solicitudTramiteController.getRecord().setEstadotramitecodigo("ESTADOSOLICITUD"); solicitudTramiteController.update(); solicitudTramiteController.save(); } /** * M\u00e9todo para encontrar por solicitud * @param solicitudCode * @return */ public static List findPorSolicitud(String solicitudCode) { try { RecepcionArmasController cc = new RecepcionArmasController(); cc.init(); cc.recperpage = 500; cc.addFilter("pk.csolicitud", solicitudCode); cc.querydatabaseValidacionTransito(); if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { return cc.lrecord; } return null; } catch (Throwable e) { MessageHelper.setMessageError(e); return null; } } /** * Método para encontrar un objeto de tipo TarmSolicitudArmas por código de solicitud * @param solicitudCode * @param cc * @return lrecord de tipo TarmSolicitudArmas */ public static List findPorSolicitudTodas(String solicitudCode) { try { // this.codigoSolicitud = solicitudCode; RecepcionArmasController cc = new RecepcionArmasController(); cc.init(); cc.recperpage = 10000; cc.addFilter("pk.csolicitud", solicitudCode); cc.querydatabaseSolicitudArmas(); if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { return cc.lrecord; } return null; } catch (Throwable e) { MessageHelper.setMessageError(e); return null; } } protected void querydatabaseSolicitudArmas() { try { this.lArmas.clear(); this.lGuardias.clear(); if (codigoSolicitud==null){ return; } DtoQuery dto = this.getDtoQuery(); HashMap mtables = new HashMap(); mtables.put(beanalias, dto); // permite adicionar mas de una tabla. Request request = this.callerhelper.getRequest(); request.setQueryTables(mtables); Response resp = this.callerhelper.executeQuery(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { this.lrecord = new ArrayList(); MessageHelper.setMessageError(resp); } else { this.lrecord = (List) resp.get(beanalias); super.postQuery(this.lrecord); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } public DtoQuery getDtoQuery() throws Exception{ DtoQuery dto = super.getDtoQuery(true); dto.setOrderby("t.pk.csolicitud"); dto.setOrderby("t.pk.csolicitud"); SubQuery subquerymodelo= new SubQuery("TarmArmas","modelo","modelo","i.pk=t.pk.carma"); dto.addSubQuery(subquerymodelo); SubQuery subqueryacrma= new SubQuery("TarmArmas","pk","carma","i.pk=t.pk.carma"); dto.addSubQuery(subqueryacrma); SubQuery subqueryserie= new SubQuery("TarmArmas","lote","lote","i.pk=t.pk.carma"); dto.addSubQuery(subqueryserie); SubQuery subqueryCantidad= new SubQuery("TarmArmas","cantidad","cantidad","i.pk=t.pk.carma"); dto.addSubQuery(subqueryCantidad); SubQuery subqueryPeso= new SubQuery("TarmArmas","peso","peso","i.pk=t.pk.carma"); dto.addSubQuery(subqueryPeso); SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=(select p.unidadmedidacantidad from TarmArmas p where p.pk=t.pk.carma) and" + " i.pk.catalogcode=(select p.unidadmedidacantidadcodigo from TarmArmas p where p.pk=t.pk.carma)"); dto.addSubQuery(subqueryUnidadMedida); SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog= (select o.marca from TarmArmas o where o.pk=t.pk.carma) " + " and i.pk.catalogcode=(select o.marcacodigo from TarmArmas o where o.pk=t.pk.carma)"); dto.addSubQuery(subqueryMarca); SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=(select o.color from TarmArmas o where o.pk=t.pk.carma)" + " and i.pk.catalogcode=(select o.colorcodigo from TarmArmas o where o.pk=t.pk.carma)"); dto.addSubQuery(subqueryColor); SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=(select o.estado from TarmArmas o where o.pk=t.pk.carma)" + " and i.pk.catalogcode=(select o.estadocodigo from TarmArmas o where o.pk=t.pk.carma)"); dto.addSubQuery(subqueryEstado); SubQuery subqueryClase= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog=(select o.clase from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" + " and i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); dto.addSubQuery(subqueryClase); SubQuery subqueryLongitud= new SubQuery("TgeneCatalogDetail","description","longitud","i.pk.catalog=(select o.longitud from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" + " and i.pk.catalogcode=(select o.longitudcodigo from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); dto.addSubQuery(subqueryLongitud); SubQuery subqueryCalibre= new SubQuery("TgeneCatalogDetail","description","calibre","i.pk.catalog=(select o.calibre from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" + " and i.pk.catalogcode=(select o.calibrecodigo from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); dto.addSubQuery(subqueryCalibre); SubQuery subqueryTipoArma= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog=(select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" + " and i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); dto.addSubQuery(subqueryTipoArma); return dto; } /** * Metodo para finalizar la tarea del flujo */ public void completarTareaReceptaArma() { try { if (!validarSeleccion()){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_validar_seleccion_armas")); return; } Request request = callerhelper.getRequest(); // limpiar request para finalizar la tarea. super.cleanRequest(request); request.modifiedData().put("csolicitud", codigoSolicitud); request.modifiedData().put("TID", tid); request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { MessageHelper.setMessageInfo(resp); btnFlujo=Boolean.FALSE; RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } public TcustPersonDetail getPersonaDetalle() { return personaDetalle; } public void setPersonaDetalle(TcustPersonDetail personaDetalle) { this.personaDetalle = personaDetalle; } public PersonAddressController getPersonAddressController() { return personAddressController; } public void setPersonAddressController( PersonAddressController personAddressController) { this.personAddressController = personAddressController; } public SolicitudTramiteController getSolicitudTramiteController() { return solicitudTramiteController; } public void setSolicitudTramiteController( SolicitudTramiteController solicitudTramiteController) { this.solicitudTramiteController = solicitudTramiteController; } public String getProvincia() { return provincia; } public void setProvincia(String provincia) { this.provincia = provincia; } public String getCanton() { return canton; } public void setCanton(String canton) { this.canton = canton; } public String getCiudad() { return ciudad; } public void setCiudad(String ciudad) { this.ciudad = ciudad; } public List getlArmas() { return lArmas; } public void setlArmas(List lArmas) { this.lArmas = lArmas; } public TarmSolicitudTramite getSolicitudTramite() { return solicitudTramite; } public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { this.solicitudTramite = solicitudTramite; } public TarmTramite getTramite() { return tramite; } public void setTramite(TarmTramite tramite) { this.tramite = tramite; } public TgeneCatalogDetail getEstadotramite() { return estadotramite; } public void setEstadotramite(TgeneCatalogDetail estadotramite) { this.estadotramite = estadotramite; } public TgeneCatalogDetail getDetallecatalogo() { return detallecatalogo; } public boolean isControlPantallaEntregado() { return controlPantallaEntregado; } public void setControlPantallaEntregado(boolean controlPantallaEntregado) { this.controlPantallaEntregado = controlPantallaEntregado; } public boolean isControlPantallaVisualizarTramiteFirmar() { return controlPantallaVisualizarTramiteFirmar; } public void setControlPantallaVisualizarTramiteFirmar( boolean controlPantallaVisualizarTramiteFirmar) { this.controlPantallaVisualizarTramiteFirmar = controlPantallaVisualizarTramiteFirmar; } public boolean isControlPantallaVerificarInformacionDevolucion() { return controlPantallaVerificarInformacionDevolucion; } public void setControlPantallaVerificarInformacionDevolucion( boolean controlPantallaVerificarInformacionDevolucion) { this.controlPantallaVerificarInformacionDevolucion = controlPantallaVerificarInformacionDevolucion; } public TgeneCatalogDetail getDetallecatalogoTipoTramite() { return detallecatalogoTipoTramite; } public void setDetallecatalogoTipoTramite( TgeneCatalogDetail detallecatalogoTipoTramite) { this.detallecatalogoTipoTramite = detallecatalogoTipoTramite; } public void setDetallecatalogo(TgeneCatalogDetail detallecatalogo) { this.detallecatalogo = detallecatalogo; } public TgeneCatalogDetail getUsoActividad() { return usoActividad; } public void setUsoActividad(TgeneCatalogDetail usoActividad) { this.usoActividad = usoActividad; } public TgeneCatalogDetail getIdentificacion() { return identificacion; } public void setIdentificacion(TgeneCatalogDetail identificacion) { this.identificacion = identificacion; } public TarmSolicitud getSolicitud() { return solicitud; } public void setSolicitud(TarmSolicitud solicitud) { this.solicitud = solicitud; } public TarmTipoArmaExplosivo getTipoArmaExplosivo() { return tipoArmaExplosivo; } public void setTipoArmaExplosivo(TarmTipoArmaExplosivo tipoArmaExplosivo) { this.tipoArmaExplosivo = tipoArmaExplosivo; } public String getCodigoSolicitud() { return codigoSolicitud; } public void setCodigoSolicitud(String codigoSolicitud) { this.codigoSolicitud = codigoSolicitud; } public SolicitudGuardiasController getSolicitudGuardiasController() { return solicitudGuardiasController; } public void setSolicitudGuardiasController( SolicitudGuardiasController solicitudGuardiasController) { this.solicitudGuardiasController = solicitudGuardiasController; } public DocumentoHabilitanteController getDocumentoHabilitanteController() { return documentoHabilitanteController; } public void setDocumentoHabilitanteController( DocumentoHabilitanteController documentoHabilitanteController) { this.documentoHabilitanteController = documentoHabilitanteController; } public ArmasController getArmasController() { return armasController; } public void setArmasController(ArmasController armasController) { this.armasController = armasController; } public List getlSolicitudGuardias() { return lSolicitudGuardias; } public List getLaccion() { return laccion; } public void setLaccion(List laccion) { this.laccion = laccion; } public void setlSolicitudGuardias(List lSolicitudGuardias) { this.lSolicitudGuardias = lSolicitudGuardias; } public List getlGuardias() { return lGuardias; } public void setlGuardias(List lGuardias) { this.lGuardias = lGuardias; } public String getObservacion() { return observacion; } public void setObservacion(String observacion) { this.observacion = observacion; } public String getEstado() { return estado; } public void setEstado(String estado) { this.estado = estado; } public TarmCentroControl getCentroControl() { return centroControl; } public void setCentroControl(TarmCentroControl centroControl) { this.centroControl = centroControl; } public DocumentoHabilitanteDetalleController getDocumentoHabilitanteDetalleController() { return documentoHabilitanteDetalleController; } public void setDocumentoHabilitanteDetalleController( DocumentoHabilitanteDetalleController documentoHabilitanteDetalleController) { this.documentoHabilitanteDetalleController = documentoHabilitanteDetalleController; } public Boolean getBtnFlujo() { return btnFlujo; } public void setBtnFlujo(Boolean btnFlujo) { this.btnFlujo = btnFlujo; } public String getDireccion() { return direccion; } public void setDireccion(String direccion) { this.direccion = direccion; } public SolicitudController getSolicitudController() { return solicitudController; } public void setSolicitudController(SolicitudController solicitudController) { this.solicitudController = solicitudController; } public ReportController getReportController() { return reportController; } public void setReportController(ReportController reportController) { this.reportController = reportController; } public AlfrescoController getAlfrescoController() { return alfrescoController; } public void setAlfrescoController(AlfrescoController alfrescoController) { this.alfrescoController = alfrescoController; } public ColaImpresionController getColaImpresionController() { return colaImpresionController; } public void setColaImpresionController( ColaImpresionController colaImpresionController) { this.colaImpresionController = colaImpresionController; } public Boolean getBtnGrabar() { return btnGrabar; } public void setBtnGrabar(Boolean btnGrabar) { this.btnGrabar = btnGrabar; } public List getSolAgenciaSucursals() { return solAgenciaSucursals; } public void setSolAgenciaSucursals( List solAgenciaSucursals) { this.solAgenciaSucursals = solAgenciaSucursals; } public List getDocumentosList() { return documentosList; } public void setDocumentosList(List documentosList) { this.documentosList = documentosList; } public AgenciaArmaController getAgenciaArma() { return agenciaArma; } public void setAgenciaArma(AgenciaArmaController agenciaArma) { this.agenciaArma = agenciaArma; } public SolicitudArmasController getSolicitudMP() { return solicitudMP; } public void setSolicitudMP(SolicitudArmasController solicitudMP) { this.solicitudMP = solicitudMP; } public CargaController getCargaController() { return cargaController; } public void setCargaController(CargaController cargaController) { this.cargaController = cargaController; } public Boolean getRequiereNoSolAucpBln() { return requiereNoSolAucpBln; } public void setRequiereNoSolAucpBln(Boolean requiereNoSolAucpBln) { this.requiereNoSolAucpBln = requiereNoSolAucpBln; } public String getNombreInstitucion() { return nombreInstitucion; } public String setNombreInstitucion(String nombreInstitucion) { if(nombreInstitucion!=null && !nombreInstitucion.isEmpty()){ this.nombreInstitucion = nombreInstitucion; }else{ this.nombreInstitucion = ""; } return nombreInstitucion; } }