package com.fp.frontend.controller.armas.parametros;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
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.ViewScoped;

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.SubQuery;
import com.fp.dto.save.DtoSave;
import com.fp.frontend.controller.AbstractController;
import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController;
import com.fp.frontend.helper.MessageHelper;
import com.fp.persistence.parmas.param.TarmTramite;
import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail;

@SuppressWarnings("serial")
@ManagedBean
@ViewScoped
public class IngresoDatosTipoTramite extends AbstractController<TarmTramite> {

    /**
     * Variable auxiliar para bloquerar los campos al crear o editar
     */
    private String editarReg;
    /**
     * Variables de tipo boolean para selecionar si registroGuardia
     */
    private boolean registroGuardia;
    /**
     * Variables de tipo boolean para selecionar si tiene logo
     */
    private boolean logo;
    /**
     * Variables de tipo boolean para selecionar si registroArmas
     */
    private boolean registroArmas;
    /**
     * Variables de tipo boolean para selecionar si registroAgenciasSucursales
     */
    private boolean registroAgenciasSucursales;
    /**
     * Variables de tipo boolean para selecionar si requiereEvaluacion
     */
    private boolean requiereEvaluacion;
    /**
     * Variables de tipo boolean para selecionar si requiereInspeccion
     */
    private boolean requiereInspeccion;
    /**
     * Variables de tipo boolean para selecionar documentosHabilitantes
     */
    private boolean documentosHabilitantes;
    /**
     * Variables de tipo boolean para selecionar reimpresion
     */
    private boolean reimpresion;
    /**
     * Variables de tipo boolean para selecionar si la transaccion es
     * sancionable
     */
    private boolean sancionable;
    /**
     * Valida caducidad tramite padre
     */
    private boolean caducidadTramitePadreBln;
    /**
     * Valida caducidad tramite padre alterno
     */
    private boolean caducidadTramitePadreAltBln;
    /**
     * Valida si visualiza la fecha de expiracion
     */
    private boolean visualizaFechaExpiracionBln;
    /**
     * Variables de tipo boolean para selecionar si requiereJurisdiccion
     */
    private boolean requiereJurisdiccion;
    /**
     * Catalogo de tipos de tramites
     */
    private List<TgeneCatalogDetail> ltipoTramite;
    /**
     * Catalogo de Autorizacion
     */
    private List<TgeneCatalogDetail> ltipoAutorizacion;
    /**
     * Catalogo de categoria
     */
    private List<TgeneCatalogDetail> lcategoria;
    /**
     * Catalogo de tipos de Uso actividad
     */
    private List<TgeneCatalogDetail> lusoActividad;
    /**
     * Catalogo de tipos de Costo
     */
    private List<TgeneCatalogDetail> ltipoCosto;
    /**
     * Catalogo de Vigencia de meses
     */
    private List<TgeneCatalogDetail> lvigenciaMeses;
    /**
     * Catalogo de tipos de archivo
     */
    private List<TgeneCatalogDetail> ltipoArchivo;
    /**
     * Catalogo de tipos de caminos para el flujo
     */
    private List<TgeneCatalogDetail> lflujoTramite;
    /**
     * Catalogo de tipos de archivo
     */
    private List<TgeneCatalogDetail> lestadosarma;
    /**
     * Catalogo de tipos de fabricacion
     */
    private List<TgeneCatalogDetail> ltipofabricacionarma;
    /**
     * Catalogo de tipos de archivo
     */
    private List<TgeneCatalogDetail> ltipoPersona;
    /**
     * Catalogo de tipos de archivo
     */
    private List<TgeneCatalogDetail> ljurisdiccion;
    /**
     * Arreglo de los estados seleccionados
     */
    private String[] selectedEstados;
    /**
     * Arreglo de los tipos de fabricacion seleccionados
     */
    private String[] selectedTipoFabric;

    private String descripcionTrmitePadre;

    private String descripcionTrmitePadreAlt;

    public IngresoDatosTipoTramite() throws Exception {
        super(TarmTramite.class);
    }

    @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 {
            this.recperpage = 15; // Cambiar al # reg a mirar.
            this.lrecord = new ArrayList<>();
            this.beanalias = "TRAMITE";
            //CARGA DE CATALOGOS
            ltipoTramite = CatalogDetailController.find("TIPOTRAMITE");
            ltipoAutorizacion = CatalogDetailController.find("TIPOAUTORIZACION");
            lcategoria = CatalogDetailController.find("CATEGORIA");
            lusoActividad = CatalogDetailController.find("USOACTIVIDAD");
            ltipoCosto = CatalogDetailController.find("TIPOCOSTO");
            lvigenciaMeses = CatalogDetailController.find("VIGENCIAMESES");
            //ordena la lista lvigenciaMeses
            Collections.sort(lvigenciaMeses, new Comparator<TgeneCatalogDetail>() {
                public int compare(TgeneCatalogDetail p1, TgeneCatalogDetail p2) {
                    return new Integer(p1.getDescription()).compareTo(new Integer(p2.getDescription()));
                }
            });

            ltipoArchivo = CatalogDetailController.find("TIPOARCHIVO");
            lflujoTramite = CatalogDetailController.find("FLUJOTRAMITE");
            lestadosarma = CatalogDetailController.find("ESTADOARMA");
            setLtipofabricacionarma(CatalogDetailController.find("TIPOFABRICACION"));
            ltipoPersona = CatalogDetailController.find("PERSONTYPE");
            ljurisdiccion = CatalogDetailController.find("JURISDICCION");
            Collections.swap(ljurisdiccion, 0, 2);
        } catch (Exception e) {
            MessageHelper.setMessageError(e);
        }
    }

    @SuppressWarnings("unchecked")
    @Override
    protected void querydatabase() {
        try {
            Request request = this.callerhelper.getRequest();
            DtoQuery dto = super.getDtoQuery(true);
            SubQuery stipoTramite = new SubQuery("TgeneCatalogDetail", "description", "destipoTramite", "i.pk.catalog = t.tipotramite and  i.pk.catalogcode=t.tipotramitecodigo");
            SubQuery stipoAutorizacion = new SubQuery("TgeneCatalogDetail", "description", "destipoAutorizacion", "i.pk.catalog = t.tipoautorizacion and  i.pk.catalogcode=t.tipoautorizacioncodigo");
            SubQuery scategoria = new SubQuery("TgeneCatalogDetail", "description", "descategoria", "i.pk.catalog = t.categoria and  i.pk.catalogcode=t.categoriacodigo");
            SubQuery susoactividad = new SubQuery("TgeneCatalogDetail", "description", "desusoactividad", "i.pk.catalog = t.usoactividad and  i.pk.catalogcode=t.usoactividadcodigo");
            SubQuery stipocosto = new SubQuery("TgeneCatalogDetail", "description", "destipocosto", "i.pk.catalog = t.tipocosto and  i.pk.catalogcode=t.tipocostocodigo");
            SubQuery svigencia = new SubQuery("TgeneCatalogDetail", "description", "desvigencia", "i.pk.catalog = t.vigencia and  i.pk.catalogcode=t.vigenciacodigo");
            SubQuery stipoarchivo = new SubQuery("TgeneCatalogDetail", "description", "destipoarchivo", "i.pk.catalog = t.tipoarchivo and  i.pk.catalogcode=t.tipoarchivocodigo");
            SubQuery sjurisdiccion = new SubQuery("TgeneCatalogDetail", "description", "desjurisdiccion", "i.pk.catalog = t.jurisdiccion and  i.pk.catalogcode=t.jurisdiccioncode");
            dto.addSubQuery(stipoTramite);
            dto.addSubQuery(stipoAutorizacion);
            dto.addSubQuery(scategoria);
            dto.addSubQuery(susoactividad);
            dto.addSubQuery(stipocosto);
            dto.addSubQuery(svigencia);
            dto.addSubQuery(stipoarchivo);
            dto.addSubQuery(sjurisdiccion);
            dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk,  t.nombre, t.cpais").
            HashMap<String, DtoQuery> mtables = new HashMap<String, DtoQuery>();
            mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla.
            request.setQueryTables(mtables);
            Response resp = this.callerhelper.executeQuery(request);
            if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) {
                this.lrecord = new ArrayList<TarmTramite>();
                MessageHelper.setMessageError(resp);
            } else {
                this.lrecord = (List<TarmTramite>) resp.get(this.beanalias);
                super.postQuery(this.lrecord);
            }

        } catch (Throwable e) {
            MessageHelper.setMessageError(e);
        }
    }

    @Override
    public void save() {
        try {
            Request request = this.callerhelper.getRequest();
            DtoSave dtosave = super.getDtoSave();
            dtosave.setReturnpk(true);
            if (!dtosave.pendingProcess()) {
                return;
            }

            HashMap<String, DtoSave> msave = new HashMap<String, DtoSave>();
            msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla.

            request.setSaveTables(msave);
            Response resp = this.callerhelper.executeSave(request);
            if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) {
                this.postCommit(resp);
                MessageHelper.setMessageInfo(resp);
            } else {
                MessageHelper.setMessageError(resp);
            }

        } catch (Throwable e) {
            MessageHelper.setMessageError(e);
        }
    }

    /**
     * Metodo para cargar las variables para editar
     */
    public void loadEdit() {
        System.out.println("cargar");
        editarReg = "SI";
        registroGuardia = ((record.getRegistroguardia() != null) && record.getRegistroguardia().equals("Y") ? true : false);
        registroArmas = ((record.getRegistroarmas() != null) && record.getRegistroarmas().equals("Y") ? true : false);
        registroAgenciasSucursales = ((record.getRegistroagenciasucursal() != null) && record.getRegistroagenciasucursal().equals("Y") ? true : false);
        requiereEvaluacion = ((record.getRequiereevaluacion() != null) && record.getRequiereevaluacion().equals("Y") ? true : false);
        requiereInspeccion = ((record.getRequiereinspeccion() != null) && record.getRequiereinspeccion().equals("Y") ? true : false);
        documentosHabilitantes = ((record.getDocumentohabilitante() != null) && record.getDocumentohabilitante().equals("Y") ? true : false);
        reimpresion = ((record.getReimpresion() != null) && record.getReimpresion().equals("Y") ? true : false);
        logo = ((record.getLogo() != null) && record.getLogo().equals("Y") ? true : false);
        sancionable = ((record.getSancionable() != null) && record.getSancionable().equals("Y") ? true : false);
        caducidadTramitePadreBln = ((record.getValidacaducidadpadre() != null) && record.getValidacaducidadpadre().equals("Y") ? true : false);
        caducidadTramitePadreAltBln = ((record.getValidacaducidadpadrealt() != null) && record.getValidacaducidadpadrealt().equals("Y") ? true : false);
        visualizaFechaExpiracionBln = ((record.getValidaFechaExpiracion() != null) && record.getValidaFechaExpiracion().equals("Y") ? true : false);
        requiereJurisdiccion = ((record.getTipoautorizacion() != null) && record.getTipoautorizacion().equals("6") ? true : false);

        if (record.getEstados() != null) {
            selectedEstados = record.getEstados().split(",");
        } else {
            selectedEstados = null;
        }

        if (record.getTipofabricacion() != null) {
            selectedTipoFabric = record.getTipofabricacion().split(",");

        } else {
            selectedTipoFabric = null;
        }

        if (record.getCtramitepadre() != null) {
            TarmTramite tarmTramite = find(record.getCtramitepadre().toString());
            descripcionTrmitePadre = tarmTramite.getPk().toString() + ": " + tarmTramite.getModifiedData().get("destipoTramite") + " "
                    + tarmTramite.getModifiedData().get("destipoAutorizacion") + " " + tarmTramite.getModifiedData().get("descategoria") + " "
                    + tarmTramite.getModifiedData().get("desusoactividad");
        } else {
            descripcionTrmitePadre = null;
        }
        if (record.getCtramitepadrealt() != null) {
            TarmTramite tarmTramite = find(record.getCtramitepadrealt().toString());
            descripcionTrmitePadreAlt = tarmTramite.getPk().toString() + ": " + tarmTramite.getModifiedData().get("destipoTramite") + " "
                    + tarmTramite.getModifiedData().get("destipoAutorizacion") + " " + tarmTramite.getModifiedData().get("descategoria") + " "
                    + tarmTramite.getModifiedData().get("desusoactividad");
        } else {
            descripcionTrmitePadreAlt = null;
        }
    }

    @Override
    public void create() throws Exception {
        System.out.println("create");
        editarReg = null;

        super.create();
        registroGuardia = Boolean.FALSE;
        registroArmas = Boolean.FALSE;
        registroAgenciasSucursales = Boolean.FALSE;
        requiereEvaluacion = Boolean.FALSE;
        requiereInspeccion = Boolean.FALSE;
        documentosHabilitantes = Boolean.FALSE;
        reimpresion = Boolean.FALSE;
        logo = Boolean.FALSE;
        sancionable = Boolean.FALSE;
        selectedEstados = null;
        setSelectedTipoFabric(null);
        descripcionTrmitePadre = null;
        descripcionTrmitePadreAlt = null;
        caducidadTramitePadreBln = Boolean.FALSE;
        caducidadTramitePadreAltBln = Boolean.FALSE;
        visualizaFechaExpiracionBln = Boolean.TRUE;
        requiereJurisdiccion = Boolean.FALSE;

    }

    @Override
    public void update() throws Exception {
        this.record.setTipotramitecodigo("TIPOTRAMITE");
        this.record.setTipoautorizacioncodigo("TIPOAUTORIZACION");
        this.record.setCategoriacodigo("CATEGORIA");
        this.record.setUsoactividadcodigo("USOACTIVIDAD");
        this.record.setTipocostocodigo("TIPOCOSTO");
        this.record.setVigenciacodigo("VIGENCIAMESES");
        this.record.setTipoarchivocodigo("TIPOARCHIVO");
        this.record.setFlujotramitecode("FLUJOTRAMITE");
        this.record.setTipopersonacode("PERSONTYPE");
        this.record.setJurisdiccioncode("JURISDICCION");

        //validaciones para la vista
        if (editarReg == null || !editarReg.equals("SI")) {
            catalogos(ltipoTramite, record.getTipotramite(), "destipoTramite");
            catalogos(ltipoAutorizacion, record.getTipoautorizacion(), "destipoAutorizacion");
            catalogos(lcategoria, record.getCategoria(), "descategoria");
            catalogos(lusoActividad, record.getUsoactividad(), "desusoactividad");
        }
        catalogos(ltipoCosto, record.getTipocosto(), "destipocosto");
        catalogos(lvigenciaMeses, record.getVigencia(), "desvigencia");
        catalogos(ltipoArchivo, record.getTipoarchivo(), "destipoarchivo");
        if (record.getJurisdiccion() == null || record.getJurisdiccion().equals("")) {
            record.setJurisdiccion("JURECU");
        }
        
        catalogos(ljurisdiccion, record.getJurisdiccion(), "desjurisdiccion");

        onChangeRegistroArmas();
        onChangeRegistroGuardia();
        onChangeRegistroAgenciaSucursal();
        onChangeRequiereEvaluacion();
        onChangeRequiereInspeccion();
        onChangeDocumentosHabilitantes();
        onChangeReimpresion();
        onChangeLogo();
        onChangeSancionable();
        onChangeCaducidadTramPadre();
        onChangeCaducidadTramPadreAlt();

        //recorre la lsita de estado
        this.record.setEstados(null);
        for (String estado : selectedEstados) {
            if (this.record.getEstados() == null || this.record.getEstados().trim().length() == 0) {
                this.record.setEstados(estado);
            }
            this.record.setEstados(record.getEstados() + "," + estado);
        }
        //recorre la lsita de tipoFabricacion
        this.record.setTipofabricacion(null);
        for (String tipoFac : selectedTipoFabric) {
            if (this.record.getTipofabricacion() == null || this.record.getTipofabricacion().trim().length() == 0) {
                this.record.setTipofabricacion(tipoFac);
            }
            this.record.setTipofabricacion(record.getTipofabricacion() + "," + tipoFac);
        }

        if (record.getNumeromaxarmas() != null && record.getNumeromaxarmas() == 0l) {
            record.setNumeromaxarmas(null);
        }
        super.update();
    }

    /**
     * Metodo para recorreer los combos y setear las descripciones de lo q se
     * escoge para la vista
     *
     * @param list
     * @param codigo
     * @param pk
     */
    public void catalogos(List<TgeneCatalogDetail> list, String codigo, String pk) {
        for (TgeneCatalogDetail item : list) {
            if (codigo.equals(item.getPk().getCatalog())) {
                record.modifiedData.put(pk, item.getDescription());
                break;
            }
        }
    }

    /**
     * M&eacute;todo para manejar el evento change en el CheckBox
     */
    public void onChangeRegistroArmas() {
        if (registroArmas) {
            record.setRegistroarmas("Y");
        } else {
            record.setRegistroarmas("N");
        }
    }

    /**
     * M&eacute;todo para manejar el evento change en el CheckBox
     */
    public void onChangeRegistroGuardia() {
        if (registroGuardia) {
            record.setRegistroguardia("Y");
        } else {
            record.setRegistroguardia("N");
        }
    }

    /**
     * M&eacute;todo para manejar el evento change en el CheckBox
     */
    public void onChangeRegistroAgenciaSucursal() {
        if (registroAgenciasSucursales) {
            record.setRegistroagenciasucursal("Y");
        } else {
            record.setRegistroagenciasucursal("N");
        }
    }

    /**
     * M&eacute;todo para manejar el evento change en el CheckBox
     */
    public void onChangeRequiereEvaluacion() {
        if (requiereEvaluacion) {
            record.setRequiereevaluacion("Y");
        } else {
            record.setRequiereevaluacion("N");
        }
    }

    /**
     * M&eacute;todo para manejar el evento change en el CheckBox
     */
    public void onChangeRequiereInspeccion() {
        if (requiereInspeccion) {
            record.setRequiereinspeccion("Y");
        } else {
            record.setRequiereinspeccion("N");
        }
    }

    /**
     * M&eacute;todo para manejar el evento change en el CheckBox
     */
    public void onChangeDocumentosHabilitantes() {
        if (documentosHabilitantes) {
            record.setDocumentohabilitante("Y");
        } else {
            record.setDocumentohabilitante("N");
        }
    }

    /**
     * M&eacute;todo para manejar el evento change en el CheckBox
     */
    public void onChangeReimpresion() {
        if (reimpresion) {
            record.setReimpresion("Y");
        } else {
            record.setReimpresion("N");
        }
    }

    /**
     * M&eacute;todo para manejar el evento change en el CheckBox
     */
    public void onChangeLogo() {
        if (logo) {
            record.setLogo("Y");
        } else {
            record.setLogo("N");
        }
    }

    /**
     * M&eacute;todo para manejar el evento change en el CheckBox sancionable
     */
    public void onChangeCaducidadTramPadre() {
        if (caducidadTramitePadreBln) {
            record.setValidacaducidadpadre("Y");
        } else {
            record.setValidacaducidadpadre("N");
        }
    }

    public void onChangeCaducidadTramPadreAlt() {
        if (caducidadTramitePadreAltBln) {
            record.setValidacaducidadpadrealt("Y");
        } else {
            record.setValidacaducidadpadrealt("N");
        }
    }

    public void onChangeVisualizaFechaExpiracion() {
        if (visualizaFechaExpiracionBln) {
            record.setValidaFechaExpiracion("Y");
            record.setVisualizarPorFechaExpiracion("");
        } else {
            record.setValidaFechaExpiracion("N");
            if (record.getVisualizarPorFechaExpiracion() == null || record.getVisualizarPorFechaExpiracion().isEmpty()) {
                record.setVisualizarPorFechaExpiracion("AL CANJEAR ARMA");
            }

        }
    }

    /**
     * M&eacute;todo para manejar el evento change en el CheckBox sancionable
     */
    public void onChangeSancionable() {
        if (sancionable) {
            record.setSancionable("Y");
        } else {
            record.setSancionable("N");
        }
    }

    /**
     * M&eacute;todo para manejar el render en el ComboBox jurisdiccion
     */
    public void onChangeJurisdiccion() {
        requiereJurisdiccion = ((record.getTipoautorizacion() != null) && record.getTipoautorizacion().equals("6") ? true : false);
    }

    public static TarmTramite find(String ctramite) {
        try {
            IngresoDatosTipoTramite cc = new IngresoDatosTipoTramite();
            cc.init();
            cc.recperpage = 300;
            cc.addFilter("pk", ctramite);
            cc.querydatabase();
            if (cc.lrecord != null) {
                return cc.lrecord.get(0);
            }
            return null;
        } catch (Throwable e) {
            MessageHelper.setMessageError(e);
            return null;
        }
    }

    public static List<TarmTramite> find(String tipoTramite, String tipoAutorizacion, String categria, String usoActividad) {
        try {
            IngresoDatosTipoTramite cc = new IngresoDatosTipoTramite();
            cc.init();
            cc.recperpage = 300;
            cc.addFilter("tipotramite", tipoTramite);
            cc.addFilter("tipoautorizacion", tipoTramite);
            cc.addFilter("categoria", tipoTramite);
            cc.addFilter("usoActividad", tipoTramite);
            cc.querydatabase();
            if (cc.lrecord != null) {
                return cc.lrecord;
            }
            return null;
        } catch (Throwable e) {
            MessageHelper.setMessageError(e);
            return null;
        }
    }

    /**
     * Abre el LOV de la clase del arma
     */
    public void openArmaTramiteLov() {
        Map<String, List<String>> params = new HashMap<>();
        List<String> pa = new ArrayList<>();
        if (record.getPk() != null) {
            pa.add(record.getPk().toString());
        }
        params.put("ctramitepadre", pa);
        BuscarTramiteLovController.openLov(params);
    }

    /**
     * Regresa del LOV de tramite
     *
     * @param event
     */
    public void onReturnTramite(SelectEvent event) {
        TarmTramite tarmTramite = (TarmTramite) event.getObject();
        record.setCtramitepadre(tarmTramite.getPk());
        descripcionTrmitePadre = tarmTramite.getPk().toString() + ": " + tarmTramite.getModifiedData().get("destipoTramite") + " "
                + tarmTramite.getModifiedData().get("destipoAutorizacion") + " " + tarmTramite.getModifiedData().get("descategoria") + " "
                + tarmTramite.getModifiedData().get("desusoactividad");
    }

    /**
     * Regresa del LOV de tramiteAlt
     *
     * @param event
     */
    public void onReturnTramiteAlt(SelectEvent event) {
        TarmTramite tarmTramite = (TarmTramite) event.getObject();
        record.setCtramitepadrealt(tarmTramite.getPk());
        descripcionTrmitePadreAlt = tarmTramite.getPk().toString() + ": " + tarmTramite.getModifiedData().get("destipoTramite") + " "
                + tarmTramite.getModifiedData().get("destipoAutorizacion") + " " + tarmTramite.getModifiedData().get("descategoria") + " "
                + tarmTramite.getModifiedData().get("desusoactividad");
    }

    /**
     * Limpia el tramite padre
     *
     * @param event
     */
    public void eliminarTramitePadre() {
        record.setCtramitepadre(null);
        descripcionTrmitePadre = null;
    }

    /**
     * Limpia el tramite padre alterno
     *
     * @param event
     */
    public void eliminarTramitePadreAlt() {
        record.setCtramitepadrealt(null);
        descripcionTrmitePadreAlt = null;
    }

    public boolean isRegistroGuardia() {
        return registroGuardia;
    }

    public void setRegistroGuardia(boolean registroGuardia) {
        this.registroGuardia = registroGuardia;
    }

    public boolean isRegistroArmas() {
        return registroArmas;
    }

    public void setRegistroArmas(boolean registroArmas) {
        this.registroArmas = registroArmas;
    }

    public boolean isRegistroAgenciasSucursales() {
        return registroAgenciasSucursales;
    }

    public void setRegistroAgenciasSucursales(boolean registroAgenciasSucursales) {
        this.registroAgenciasSucursales = registroAgenciasSucursales;
    }

    public boolean isRequiereEvaluacion() {
        return requiereEvaluacion;
    }

    public void setRequiereEvaluacion(boolean requiereEvaluacion) {
        this.requiereEvaluacion = requiereEvaluacion;
    }

    public boolean isRequiereInspeccion() {
        return requiereInspeccion;
    }

    public void setRequiereInspeccion(boolean requiereInspeccion) {
        this.requiereInspeccion = requiereInspeccion;
    }

    public boolean isDocumentosHabilitantes() {
        return documentosHabilitantes;
    }

    public void setDocumentosHabilitantes(boolean documentosHabilitantes) {
        this.documentosHabilitantes = documentosHabilitantes;
    }

    public List<TgeneCatalogDetail> getLtipoTramite() {
        return ltipoTramite;
    }

    public void setLtipoTramite(List<TgeneCatalogDetail> ltipoTramite) {
        this.ltipoTramite = ltipoTramite;
    }

    public List<TgeneCatalogDetail> getLcategoria() {
        return lcategoria;
    }

    public void setLcategoria(List<TgeneCatalogDetail> lcategoria) {
        this.lcategoria = lcategoria;
    }

    public List<TgeneCatalogDetail> getLusoActividad() {
        return lusoActividad;
    }

    public void setLusoActividad(List<TgeneCatalogDetail> lusoActividad) {
        this.lusoActividad = lusoActividad;
    }

    public List<TgeneCatalogDetail> getLtipoCosto() {
        return ltipoCosto;
    }

    public void setLtipoCosto(List<TgeneCatalogDetail> ltipoCosto) {
        this.ltipoCosto = ltipoCosto;
    }

    public List<TgeneCatalogDetail> getLvigenciaMeses() {
        return lvigenciaMeses;
    }

    public void setLvigenciaMeses(List<TgeneCatalogDetail> lvigenciaMeses) {
        this.lvigenciaMeses = lvigenciaMeses;
    }

    public List<TgeneCatalogDetail> getLtipoArchivo() {
        return ltipoArchivo;
    }

    public void setLtipoArchivo(List<TgeneCatalogDetail> ltipoArchivo) {
        this.ltipoArchivo = ltipoArchivo;
    }

    public List<TgeneCatalogDetail> getLtipoAutorizacion() {
        return ltipoAutorizacion;
    }

    public void setLtipoAutorizacion(List<TgeneCatalogDetail> ltipoAutorizacion) {
        this.ltipoAutorizacion = ltipoAutorizacion;
    }

    public String getEditarReg() {
        return editarReg;
    }

    public void setEditarReg(String editarReg) {
        this.editarReg = editarReg;
    }

    public List<TgeneCatalogDetail> getLflujoTramite() {
        return lflujoTramite;
    }

    public void setLflujoTramite(List<TgeneCatalogDetail> lflujoTramite) {
        this.lflujoTramite = lflujoTramite;
    }

    public boolean isReimpresion() {
        return reimpresion;
    }

    public void setReimpresion(boolean reimpresion) {
        this.reimpresion = reimpresion;
    }

    public String[] getSelectedEstados() {
        return selectedEstados;
    }

    public void setSelectedEstados(String[] selectedEstados) {
        this.selectedEstados = selectedEstados;
    }

    public List<TgeneCatalogDetail> getLestadosarma() {
        return lestadosarma;
    }

    public void setLestadosarma(List<TgeneCatalogDetail> lestadosarma) {
        this.lestadosarma = lestadosarma;
    }

    public String getDescripcionTrmitePadre() {
        return descripcionTrmitePadre;
    }

    public void setDescripcionTrmitePadre(String descripcionTrmitePadre) {
        this.descripcionTrmitePadre = descripcionTrmitePadre;
    }

    public String getDescripcionTrmitePadreAlt() {
        return descripcionTrmitePadreAlt;
    }

    public void setDescripcionTrmitePadreAlt(String descripcionTrmitePadreAlt) {
        this.descripcionTrmitePadreAlt = descripcionTrmitePadreAlt;
    }

    public List<TgeneCatalogDetail> getLtipoPersona() {
        return ltipoPersona;
    }

    public void setLtipoPersona(List<TgeneCatalogDetail> ltipoPersona) {
        this.ltipoPersona = ltipoPersona;
    }

    public List<TgeneCatalogDetail> getLjurisdiccion() {
        return ljurisdiccion;
    }

    public void setLjurisdiccion(List<TgeneCatalogDetail> ljurisdiccion) {
        this.ljurisdiccion = ljurisdiccion;
    }

    public boolean isLogo() {
        return logo;
    }

    public void setLogo(boolean logo) {
        this.logo = logo;
    }

    public boolean isSancionable() {
        return sancionable;
    }

    public void setSancionable(boolean sancionable) {
        this.sancionable = sancionable;
    }

    public boolean isCaducidadTramitePadreBln() {
        return caducidadTramitePadreBln;
    }

    public void setCaducidadTramitePadreBln(boolean caducidadTramitePadreBln) {
        this.caducidadTramitePadreBln = caducidadTramitePadreBln;
    }

    public boolean isCaducidadTramitePadreAltBln() {
        return caducidadTramitePadreAltBln;
    }

    public void setCaducidadTramitePadreAltBln(boolean caducidadTramitePadreAltBln) {
        this.caducidadTramitePadreAltBln = caducidadTramitePadreAltBln;
    }

    public boolean isVisualizaFechaExpiracionBln() {
        return visualizaFechaExpiracionBln;
    }

    public void setVisualizaFechaExpiracionBln(boolean visualizaFechaExpiracionBln) {
        this.visualizaFechaExpiracionBln = visualizaFechaExpiracionBln;
    }

    public boolean isRequiereJurisdiccion() {
        return requiereJurisdiccion;
    }

    public void setRequiereJurisdiccion(boolean requiereJurisdiccion) {
        this.requiereJurisdiccion = requiereJurisdiccion;
    }

    public List<TgeneCatalogDetail> getLtipofabricacionarma() {
        return ltipofabricacionarma;
    }

    public void setLtipofabricacionarma(List<TgeneCatalogDetail> ltipofabricacionarma) {
        this.ltipofabricacionarma = ltipofabricacionarma;
    }

    public String[] getSelectedTipoFabric() {
        return selectedTipoFabric;
    }

    public void setSelectedTipoFabric(String[] selectedTipoFabric) {
        this.selectedTipoFabric = selectedTipoFabric;
    }

}
