maia_modificado/.svn/pristine/03/03ec91dd6497592553d5234addc...

785 lines
33 KiB
Plaintext
Executable File

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<TarmDecomisoArma> {
/**
* 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&aacute;metros el n&uacute;mero de d&iacute;as en decomiso previo a la destrucci&oacute;n del arma
* */
private Integer diasParaDestruirArma;
/**
* Catalogcode de la tabla Cat&aacute;logos que funciona como bandera para indicar si un arma ya se encuentra en alg&uacute;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<TarmDecomisoArma>();
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<String, DtoQuery> mtables = new HashMap<String, DtoQuery>();
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<TarmDecomisoArma>();
MessageHelper.setMessageError(resp);
} else {
lrecord = (List<TarmDecomisoArma>) 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<TarmDecomisoArma>();
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<String, Object> 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&aacute; 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&eacute;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<String, DtoSave> msave = new HashMap<String, DtoSave>();
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<String> actualizarArmasSeleccionadas (){
List<String>armasSeleccionadasLst = 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;
}
}