package com.ejie.ab63.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.sql.DataSource;

import org.springframework.dao.support.DataAccessUtils;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.ejie.ab63.model.AgenciaData;
import com.ejie.ab63.model.Categoria;
import com.ejie.ab63.model.Especialidad;
import com.ejie.ab63.model.Establecimiento;
import com.ejie.ab63.model.EstablecimientoData;
import com.ejie.ab63.model.Grupo;
import com.ejie.ab63.model.Modalidad;
import com.ejie.ab63.model.Recurso;
import com.ejie.ab63.model.TercerosEstablecimiento;
import com.ejie.ab63.model.TipoEstablecimiento;
import com.ejie.ab63.model.terceros.DatosDirecciones;
import com.ejie.ab63.model.terceros.DatosTerceros;
import com.ejie.ab63.model.terceros.Sexo;
import com.ejie.ab63.model.terceros.TiposDireccion;
import com.ejie.ab63.model.terceros.TiposDocumento;
import com.ejie.ab63.model.terceros.TiposTercero;
import com.ejie.ab63.util.PermisosXLNETS;
import com.ejie.ab63.util.UtilDao;
import com.ejie.x38.dao.RowNumResultSetExtractor;
import com.ejie.x38.dto.JQGridManager;
import com.ejie.x38.dto.JQGridManagerJerarquia;
import com.ejie.x38.dto.JQGridRequestDto;
import com.ejie.x38.dto.JerarquiaDto;
import com.ejie.x38.dto.TableRowDto;

/**
 * Ab6339s00DaoImpl  
 * 
 *  
 */

@Repository
@Transactional
public class TercerosEstablecimientoDaoImpl implements TercerosEstablecimientoDao {

	public static final String[] ORDER_BY_WHITE_LIST = new String[] { "IDTERCEROSESTAB", "FECHAREGISTRO",
			"USUARIOREGISTRO", "FECHAULTMODIFICACION", "USUARIOULTMODIFICACION", "AB6301S00IDESTABLECIMIENTO",
			"AB6301S00IDENTIFICADORESTABLEC", "AB6301S00DESCNOMBRE", "AB6301S00VISIBLEWEB", "AB6301S00TEMPORADA",
			"AB6301S00URLWEB", "AB6301S00IDDEFECTOS", "AB6301S00NUMUNIDADESALOJ", "AB6301S00OBSERVACIONES",
			"AB6301S00FECHAAPERTURA", "AB6301S00FECHABAJA", "AB6301S00FECHAINICIERRETEMP",
			"AB6301S00FECHAFINCIERRETEMP", "AB6301S00FECHAVCTOCIERRE", "AB6301S00FECHAULTNOTIFICACION",
			"AB6301S00FECHAULTINSPECCION", "AB6301S00FECHAPROINSPECCION", "AB6301S00FECHAULTACTUALIZACION",
			"AB6301S00FECHACLAUSURA", "AB6301S00FECHAULTREFORMA", "AB6301S00ELIMINADO", "AB6301S00EXPEDIENTEB29",
			"AB6301S00IDPORTALS41", "AB6301S00URLPORTALS41", "AB6301S00FECHACONTROLS41", "AB6301S00NUMINSTALACIONANT",
			"AB6301S00FECHAINSCRIPCION", "AB6301S00NUMINSTALACIONWZ", "AB6301S00OBSERVACIONES2",
			"AB6301S00NOTASMIGRACION", "AB6301S00AGRUPACION", "AB6301S00REFCATASTRAL", "AB6301S00OBSSEGRESPCIVIL",
			"AB6301S00FECHAREGISTRO", "AB6301S00USUARIOREGISTRO", "AB6301S00FECHAULTMODIFICACION",
			"AB6301S00USUARIOULTMODIF", "AB6301S00IDRECURSO", "AB6301S00IDTIPOESTABLECIMIENTO", "AB6301S00IDGRUPO",
			"AB6301S00IDCATEGORIAS", "AB6301S00IDESPECIALIDAD", "AB6301S00IDMODALIDAD",
			"DESCRIPCION_CASTELLANO_TIPODOC", "DESCRIPCION_EUSKERA_TIPODOC", "FECHA_REGISTRO_TIPODOC",
			"USUARIO_REGISTRO_TIPODOC", "IDSEXO", "DESCRIPCION_CASTELLANO_SEX", "DESCRIPCION_EUSKERA_SEX",
			"FECHA_REGISTRO_SEX", "USUARIO_REGISTRO_SEX", "IDPAIS", "APELLIDO1", "APELLIDO2", "ID_TIPO_DIRECCION_DIR",
			"DESCRIPCION_CASTELLANO_DIR", "DESCRIPCION_EUSKERA_DIR", "FECHA_REGISTRO_DIR", "USUARIO_REGISTRO_DIR",
			"DESCRIPCIONPROVINCIAEXTR", "DESCRIPCIONCIUDADEXTR", "BAJATERCERO", "MUNICIPIODSO", "NOMBREINTERESADO",
			"DESCRIPCION_CASTELLANO", "DESCRIPCION_EUSKERA", "DIRECCION", "NIFINTERESADO" };

	private JdbcTemplate jdbcTemplate;

	/*
	 * ROW_MAPPERS
	 */
	private RowMapper<TercerosEstablecimiento> rwMap = new RowMapper<TercerosEstablecimiento>() {
		public TercerosEstablecimiento mapRow(ResultSet resultSet, int rowNum) throws SQLException {
			return new TercerosEstablecimiento(resultSet.getInt("IDTERCEROSESTAB"), resultSet.getDate("FECHAREGISTRO"),
					resultSet.getString("USUARIOREGISTRO"), resultSet.getDate("FECHAULTMODIFICACION"),
					resultSet.getString("USUARIOULTMODIFICACION"),
					new Establecimiento(resultSet.getInt("Ab6301s00IDESTABLECIMIENTO"),
							resultSet.getString("AB6301S00IDENTIFICADORESTABLEC"),
							resultSet.getString("Ab6301s00DESCNOMBRE"), resultSet.getString("Ab6301s00VISIBLEWEB"),
							resultSet.getString("Ab6301s00TEMPORADA"), resultSet.getString("Ab6301s00URLWEB"),
							resultSet.getString("Ab6301s00IDDEFECTOS"), resultSet.getInt("AB6301S00NUMUNIDADESALOJ"),
							resultSet.getString("Ab6301s00OBSERVACIONES"), resultSet.getDate("Ab6301s00FECHAAPERTURA"),
							resultSet.getDate("Ab6301s00FECHABAJA"), resultSet.getDate("Ab6301s00FECHAINICIERRETEMP"),
							resultSet.getDate("Ab6301s00FECHAFINCIERRETEMP"),
							resultSet.getDate("Ab6301s00FECHAVCTOCIERRE"),
							resultSet.getDate("Ab6301s00FECHAULTNOTIFICACION"),
							resultSet.getDate("Ab6301s00FECHAULTINSPECCION"),
							resultSet.getDate("Ab6301s00FECHAPROINSPECCION"),
							resultSet.getDate("Ab6301s00FECHAULTACTUALIZACION"),
							resultSet.getDate("Ab6301s00FECHACLAUSURA"), resultSet.getDate("Ab6301s00FECHAULTREFORMA"),
							resultSet.getString("Ab6301s00ELIMINADO"), resultSet.getString("Ab6301s00EXPEDIENTEB29"),
							resultSet.getLong("Ab6301s00IDPORTALS41"), resultSet.getString("Ab6301s00URLPORTALS41"),
							resultSet.getDate("Ab6301s00FECHACONTROLS41"),
							resultSet.getString("AB6301S00NUMINSTALACIONANT"),
							resultSet.getDate("Ab6301s00FECHAINSCRIPCION"),
							resultSet.getString("Ab6301s00NUMINSTALACIONWZ"),
							resultSet.getString("Ab6301s00OBSERVACIONES2"),
							resultSet.getString("Ab6301s00NOTASMIGRACION"), resultSet.getString("Ab6301s00AGRUPACION"),
							resultSet.getString("Ab6301s00REFCATASTRAL"),
							resultSet.getString("Ab6301s00OBSSEGRESPCIVIL"),
							resultSet.getDate("Ab6301s00FECHAREGISTRO"),
							resultSet.getString("Ab6301s00USUARIOREGISTRO"),
							resultSet.getDate("Ab6301s00FECHAULTMODIFICACION"),
							resultSet.getString("AB6301S00USUARIOULTMODIF"), resultSet.getString("TELEFONO"),
							resultSet.getString("CORREOELECTRONICO"), resultSet.getString("IDEXPEDIENTE"),
							resultSet.getString("IDESTABLECIMIENTOPADRE"), resultSet.getString("TIPO_REGISTRO"),
							resultSet.getString("IDESTABSOLIC"), null, null, null, null, null, null,
							new DatosTerceros(resultSet.getInt("AB6339S00IDTERCERO"),
									resultSet.getString("NIFINTERESADO"),
									new TiposDocumento(resultSet.getLong("ID_TIPO_DOCUMENTO"),
											resultSet.getString("DESCRIPCION_CASTELLANO_TIPODOC"),
											resultSet.getString("DESCRIPCION_EUSKERA_TIPODOC"),
											resultSet.getDate("FECHA_REGISTRO_TIPODOC"),
											resultSet.getString("USUARIO_REGISTRO_TIPODOC")),
									resultSet.getString("NOMBREINTERESADO"), resultSet.getString("APELLIDO1"),
									resultSet.getString("APELLIDO2"),
									new Sexo(resultSet.getLong("IDSEXO"),
											resultSet.getString("DESCRIPCION_CASTELLANO_SEX"),
											resultSet.getString("DESCRIPCION_EUSKERA_SEX"), null, null, null),
									resultSet.getLong("TELEFONOINTERESADO"), resultSet.getString("EMAILINTERESADO"),
									null, null, null, null, null, null),
							new DatosDirecciones(resultSet.getInt("ID_DIRECCION"), null,
									resultSet.getString("DIRECCION"), resultSet.getString("NUMERO"),
									resultSet.getString("ESCALERA"), resultSet.getString("PISO"),
									resultSet.getString("LETRA"), resultSet.getString("CODIGO_POSTAL"),
									resultSet.getLong("IDPAIS"), resultSet.getLong("ID_PROVINCIA"),
									resultSet.getLong("ID_MUNICIPIO"), resultSet.getLong("ID_LOCALIDAD"),
									resultSet.getString("DESCRIPCIONPROVINCIAEXTR"),
									resultSet.getString("DESCRIPCIONCIUDADEXTR"), null, null, null, null, null, null,
									new TiposDireccion(resultSet.getLong("ID_TIPO_DIRECCION_DIR"),
											resultSet.getString("DESCRIPCION_CASTELLANO_DIR"),
											resultSet.getString("DESCRIPCION_EUSKERA_DIR"),
											resultSet.getDate("FECHA_REGISTRO_DIR"),
											resultSet.getString("USUARIO_REGISTRO_DIR")),
									resultSet.getString("MUNICIPIODSO")),
							new Recurso(resultSet.getString("Ab6301s00IDRECURSO"), null, null, null, null, null, null,
									null, null, null),
							new TipoEstablecimiento(resultSet.getString("Ab6301s00IDTIPOESTABLECIMIENTO"), null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null),
							new Grupo(resultSet.getString("Ab6301s00IDGRUPO"), null, null, null, null, null, null, null,
									null, null, null, null),
							new Categoria(resultSet.getString("Ab6301s00IDCATEGORIAS"), null, null, null, null, null,
									null, null, null, null, null, null),
							new Especialidad(resultSet.getString("Ab6301s00IDESPECIALIDAD"), null, null, null, null,
									null, null, null, null, null, null, null),
							new Modalidad(resultSet.getString("Ab6301s00IDMODALIDAD"), null, null, null, null, null,
									null, null, null, null, null, null),
							new EstablecimientoData(resultSet.getInt("Ab6301s00IDESTABLECIMIENTO"), null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null, null, null),
							new AgenciaData(resultSet.getInt("Ab6301s00IDESTABLECIMIENTO"), null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null)),
					new TiposTercero(resultSet.getLong("ID_TIPO_TERCERO"),
							resultSet.getString("DESCRIPCION_CASTELLANO"), resultSet.getString("DESCRIPCION_EUSKERA"),
							resultSet.getDate("FECHA_REGISTRO"), resultSet.getString("USUARIO_REGISTRO"),
							resultSet.getString("ROLE")),
					resultSet.getInt("BAJATERCERO"));
		}
	};

	private RowMapper<TercerosEstablecimiento> rwMapDatosTercero = new RowMapper<TercerosEstablecimiento>() {
		public TercerosEstablecimiento mapRow(ResultSet resultSet, int rowNum) throws SQLException {
			return new TercerosEstablecimiento(resultSet.getInt("IDTERCEROSESTAB"), resultSet.getDate("FECHAREGISTRO"),
					resultSet.getString("USUARIOREGISTRO"), resultSet.getDate("FECHAULTMODIFICACION"),
					resultSet.getString("USUARIOULTMODIFICACION"),
					new Establecimiento(resultSet.getInt("Ab6301s00IDESTABLECIMIENTO"),
							resultSet.getString("AB6301S00IDENTIFICADORESTABLEC"),
							resultSet.getString("Ab6301s00DESCNOMBRE"), resultSet.getString("Ab6301s00VISIBLEWEB"),
							resultSet.getString("Ab6301s00TEMPORADA"), resultSet.getString("Ab6301s00URLWEB"),
							resultSet.getString("Ab6301s00IDDEFECTOS"), resultSet.getInt("AB6301S00NUMUNIDADESALOJ"),
							resultSet.getString("Ab6301s00OBSERVACIONES"), resultSet.getDate("Ab6301s00FECHAAPERTURA"),
							resultSet.getDate("Ab6301s00FECHABAJA"), resultSet.getDate("Ab6301s00FECHAINICIERRETEMP"),
							resultSet.getDate("Ab6301s00FECHAFINCIERRETEMP"),
							resultSet.getDate("Ab6301s00FECHAVCTOCIERRE"),
							resultSet.getDate("Ab6301s00FECHAULTNOTIFICACION"),
							resultSet.getDate("Ab6301s00FECHAULTINSPECCION"),
							resultSet.getDate("Ab6301s00FECHAPROINSPECCION"),
							resultSet.getDate("Ab6301s00FECHAULTACTUALIZACION"),
							resultSet.getDate("Ab6301s00FECHACLAUSURA"), resultSet.getDate("Ab6301s00FECHAULTREFORMA"),
							resultSet.getString("Ab6301s00ELIMINADO"), resultSet.getString("Ab6301s00EXPEDIENTEB29"),
							resultSet.getLong("Ab6301s00IDPORTALS41"), resultSet.getString("Ab6301s00URLPORTALS41"),
							resultSet.getDate("Ab6301s00FECHACONTROLS41"),
							resultSet.getString("AB6301S00NUMINSTALACIONANT"),
							resultSet.getDate("Ab6301s00FECHAINSCRIPCION"),
							resultSet.getString("Ab6301s00NUMINSTALACIONWZ"),
							resultSet.getString("Ab6301s00OBSERVACIONES2"),
							resultSet.getString("Ab6301s00NOTASMIGRACION"), resultSet.getString("Ab6301s00AGRUPACION"),
							resultSet.getString("Ab6301s00REFCATASTRAL"),
							resultSet.getString("Ab6301s00OBSSEGRESPCIVIL"),
							resultSet.getDate("Ab6301s00FECHAREGISTRO"),
							resultSet.getString("Ab6301s00USUARIOREGISTRO"),
							resultSet.getDate("Ab6301s00FECHAULTMODIFICACION"),
							resultSet.getString("AB6301S00USUARIOULTMODIF"), resultSet.getString("TELEFONO"),
							resultSet.getString("CORREOELECTRONICO"), resultSet.getString("IDEXPEDIENTE"),
							resultSet.getString("IDESTABLECIMIENTOPADRE"), resultSet.getString("TIPO_REGISTRO"),
							resultSet.getString("IDESTABSOLIC"), null, null, null, null, null, null, null,
							new DatosDirecciones(resultSet.getInt("ID_DIRECCION"), null,
									resultSet.getString("DIRECCION"), resultSet.getString("NUMERO"),
									resultSet.getString("ESCALERA"), resultSet.getString("PISO"),
									resultSet.getString("LETRA"), resultSet.getString("CODIGO_POSTAL"),
									resultSet.getLong("IDPAIS"), resultSet.getLong("ID_PROVINCIA"),
									resultSet.getLong("ID_MUNICIPIO"), resultSet.getLong("ID_LOCALIDAD"),
									resultSet.getString("DESCRIPCIONPROVINCIAEXTR"),
									resultSet.getString("DESCRIPCIONCIUDADEXTR"), null, null, null, null, null, null,
									new TiposDireccion(resultSet.getLong("ID_TIPO_DIRECCION_DIR"),
											resultSet.getString("DESCRIPCION_CASTELLANO_DIR"),
											resultSet.getString("DESCRIPCION_EUSKERA_DIR"),
											resultSet.getDate("FECHA_REGISTRO_DIR"),
											resultSet.getString("USUARIO_REGISTRO_DIR")),
									null),
							new Recurso(resultSet.getString("Ab6301s00IDRECURSO"), null, null, null, null, null, null,
									null, null, null),
							new TipoEstablecimiento(resultSet.getString("Ab6301s00IDTIPOESTABLECIMIENTO"), null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null),
							new Grupo(resultSet.getString("Ab6301s00IDGRUPO"), null, null, null, null, null, null, null,
									null, null, null, null),
							new Categoria(resultSet.getString("Ab6301s00IDCATEGORIAS"), null, null, null, null, null,
									null, null, null, null, null, null),
							new Especialidad(resultSet.getString("Ab6301s00IDESPECIALIDAD"), null, null, null, null,
									null, null, null, null, null, null, null),
							new Modalidad(resultSet.getString("Ab6301s00IDMODALIDAD"), null, null, null, null, null,
									null, null, null, null, null, null),
							new EstablecimientoData(resultSet.getInt("Ab6301s00IDESTABLECIMIENTO"), null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null, null, null),
							new AgenciaData(resultSet.getInt("Ab6301s00IDESTABLECIMIENTO"), null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null)),
					new TiposTercero(resultSet.getLong("ID_TIPO_TERCERO"),
							resultSet.getString("DESCRIPCION_CASTELLANO"), resultSet.getString("DESCRIPCION_EUSKERA"),
							resultSet.getDate("FECHA_REGISTRO"), resultSet.getString("USUARIO_REGISTRO"),
							resultSet.getString("ROLE")),
					new DatosTerceros(resultSet.getInt("AB6339S00IDTERCERO"), resultSet.getString("NIFINTERESADO"),
							new TiposDocumento(resultSet.getLong("ID_TIPO_DOCUMENTO"),
									resultSet.getString("DESCRIPCION_CASTELLANO_TIPODOC"),
									resultSet.getString("DESCRIPCION_EUSKERA_TIPODOC"),
									resultSet.getDate("FECHA_REGISTRO_TIPODOC"),
									resultSet.getString("USUARIO_REGISTRO_TIPODOC")),
							resultSet.getString("NOMBREINTERESADO"), resultSet.getString("APELLIDO1"),
							resultSet.getString("APELLIDO2"), new Sexo(resultSet.getLong("IDSEXO")),
							resultSet.getLong("TELEFONOINTERESADO"), resultSet.getString("EMAILINTERESADO"), null, null,
							null, null, null, null));
		}
	};
	private RowMapper<TercerosEstablecimiento> rwMapDatosTerceroSinDirec = new RowMapper<TercerosEstablecimiento>() {
		public TercerosEstablecimiento mapRow(ResultSet resultSet, int rowNum) throws SQLException {
			return new TercerosEstablecimiento(resultSet.getInt("IDTERCEROSESTAB"), resultSet.getDate("FECHAREGISTRO"),
					resultSet.getString("USUARIOREGISTRO"), resultSet.getDate("FECHAULTMODIFICACION"),
					resultSet.getString("USUARIOULTMODIFICACION"),
					new Establecimiento(resultSet.getInt("Ab6301s00IDESTABLECIMIENTO"),
							resultSet.getString("AB6301S00IDENTIFICADORESTABLEC"),
							resultSet.getString("Ab6301s00DESCNOMBRE"), resultSet.getString("Ab6301s00VISIBLEWEB"),
							resultSet.getString("Ab6301s00TEMPORADA"), resultSet.getString("Ab6301s00URLWEB"),
							resultSet.getString("Ab6301s00IDDEFECTOS"), resultSet.getInt("AB6301S00NUMUNIDADESALOJ"),
							resultSet.getString("Ab6301s00OBSERVACIONES"), resultSet.getDate("Ab6301s00FECHAAPERTURA"),
							resultSet.getDate("Ab6301s00FECHABAJA"), resultSet.getDate("Ab6301s00FECHAINICIERRETEMP"),
							resultSet.getDate("Ab6301s00FECHAFINCIERRETEMP"),
							resultSet.getDate("Ab6301s00FECHAVCTOCIERRE"),
							resultSet.getDate("Ab6301s00FECHAULTNOTIFICACION"),
							resultSet.getDate("Ab6301s00FECHAULTINSPECCION"),
							resultSet.getDate("Ab6301s00FECHAPROINSPECCION"),
							resultSet.getDate("Ab6301s00FECHAULTACTUALIZACION"),
							resultSet.getDate("Ab6301s00FECHACLAUSURA"), resultSet.getDate("Ab6301s00FECHAULTREFORMA"),
							resultSet.getString("Ab6301s00ELIMINADO"), resultSet.getString("Ab6301s00EXPEDIENTEB29"),
							resultSet.getLong("Ab6301s00IDPORTALS41"), resultSet.getString("Ab6301s00URLPORTALS41"),
							resultSet.getDate("Ab6301s00FECHACONTROLS41"),
							resultSet.getString("AB6301S00NUMINSTALACIONANT"),
							resultSet.getDate("Ab6301s00FECHAINSCRIPCION"),
							resultSet.getString("Ab6301s00NUMINSTALACIONWZ"),
							resultSet.getString("Ab6301s00OBSERVACIONES2"),
							resultSet.getString("Ab6301s00NOTASMIGRACION"), resultSet.getString("Ab6301s00AGRUPACION"),
							resultSet.getString("Ab6301s00REFCATASTRAL"),
							resultSet.getString("Ab6301s00OBSSEGRESPCIVIL"),
							resultSet.getDate("Ab6301s00FECHAREGISTRO"),
							resultSet.getString("Ab6301s00USUARIOREGISTRO"),
							resultSet.getDate("Ab6301s00FECHAULTMODIFICACION"),
							resultSet.getString("AB6301S00USUARIOULTMODIF"), resultSet.getString("TELEFONO"),
							resultSet.getString("CORREOELECTRONICO"), resultSet.getString("IDEXPEDIENTE"),
							resultSet.getString("IDESTABLECIMIENTOPADRE"), resultSet.getString("TIPO_REGISTRO"),
							resultSet.getString("IDESTABSOLIC"), null, null, null, null, null, null, null, null,
							new Recurso(resultSet.getString("Ab6301s00IDRECURSO"), null, null, null, null, null, null,
									null, null, null),
							new TipoEstablecimiento(resultSet.getString("Ab6301s00IDTIPOESTABLECIMIENTO"), null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null),
							new Grupo(resultSet.getString("Ab6301s00IDGRUPO"), null, null, null, null, null, null, null,
									null, null, null, null),
							new Categoria(resultSet.getString("Ab6301s00IDCATEGORIAS"), null, null, null, null, null,
									null, null, null, null, null, null),
							new Especialidad(resultSet.getString("Ab6301s00IDESPECIALIDAD"), null, null, null, null,
									null, null, null, null, null, null, null),
							new Modalidad(resultSet.getString("Ab6301s00IDMODALIDAD"), null, null, null, null, null,
									null, null, null, null, null, null),
							new EstablecimientoData(resultSet.getInt("Ab6301s00IDESTABLECIMIENTO"), null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null, null, null),
							new AgenciaData(resultSet.getInt("Ab6301s00IDESTABLECIMIENTO"), null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null)),
					new TiposTercero(resultSet.getLong("ID_TIPO_TERCERO"),
							resultSet.getString("DESCRIPCION_CASTELLANO"), resultSet.getString("DESCRIPCION_EUSKERA"),
							resultSet.getDate("FECHA_REGISTRO"), resultSet.getString("USUARIO_REGISTRO"),
							resultSet.getString("ROLE")),
					new DatosTerceros(resultSet.getInt("AB6339S00IDTERCERO"), resultSet.getString("NIFINTERESADO"),
							new TiposDocumento(resultSet.getLong("ID_TIPO_DOCUMENTO"),
									resultSet.getString("DESCRIPCION_CASTELLANO_TIPODOC"),
									resultSet.getString("DESCRIPCION_EUSKERA_TIPODOC"),
									resultSet.getDate("FECHA_REGISTRO_TIPODOC"),
									resultSet.getString("USUARIO_REGISTRO_TIPODOC")),
							resultSet.getString("NOMBREINTERESADO"), resultSet.getString("APELLIDO1"),
							resultSet.getString("APELLIDO2"),
							new Sexo(resultSet.getLong("IDSEXO"), resultSet.getString("DESCRIPCION_CASTELLANO_SEX"),
									resultSet.getString("DESCRIPCION_EUSKERA_SEX")),
							resultSet.getLong("TELEFONOINTERESADO"), resultSet.getString("EMAILINTERESADO"), null, null,
							null, null, null, null));
		}
	};
	private RowMapper<TercerosEstablecimiento> rwMapDatosTerceroConDirec = new RowMapper<TercerosEstablecimiento>() {
		public TercerosEstablecimiento mapRow(ResultSet resultSet, int rowNum) throws SQLException {
			return new TercerosEstablecimiento(resultSet.getInt("IDTERCEROSESTAB"), resultSet.getDate("FECHAREGISTRO"),
					resultSet.getString("USUARIOREGISTRO"), resultSet.getDate("FECHAULTMODIFICACION"),
					resultSet.getString("USUARIOULTMODIFICACION"),
					new Establecimiento(resultSet.getInt("Ab6301s00IDESTABLECIMIENTO"),
							resultSet.getString("AB6301S00IDENTIFICADORESTABLEC"),
							resultSet.getString("Ab6301s00DESCNOMBRE"), resultSet.getString("Ab6301s00VISIBLEWEB"),
							resultSet.getString("Ab6301s00TEMPORADA"), resultSet.getString("Ab6301s00URLWEB"),
							resultSet.getString("Ab6301s00IDDEFECTOS"), resultSet.getInt("AB6301S00NUMUNIDADESALOJ"),
							resultSet.getString("Ab6301s00OBSERVACIONES"), resultSet.getDate("Ab6301s00FECHAAPERTURA"),
							resultSet.getDate("Ab6301s00FECHABAJA"), resultSet.getDate("Ab6301s00FECHAINICIERRETEMP"),
							resultSet.getDate("Ab6301s00FECHAFINCIERRETEMP"),
							resultSet.getDate("Ab6301s00FECHAVCTOCIERRE"),
							resultSet.getDate("Ab6301s00FECHAULTNOTIFICACION"),
							resultSet.getDate("Ab6301s00FECHAULTINSPECCION"),
							resultSet.getDate("Ab6301s00FECHAPROINSPECCION"),
							resultSet.getDate("Ab6301s00FECHAULTACTUALIZACION"),
							resultSet.getDate("Ab6301s00FECHACLAUSURA"), resultSet.getDate("Ab6301s00FECHAULTREFORMA"),
							resultSet.getString("Ab6301s00ELIMINADO"), resultSet.getString("Ab6301s00EXPEDIENTEB29"),
							resultSet.getLong("Ab6301s00IDPORTALS41"), resultSet.getString("Ab6301s00URLPORTALS41"),
							resultSet.getDate("Ab6301s00FECHACONTROLS41"),
							resultSet.getString("AB6301S00NUMINSTALACIONANT"),
							resultSet.getDate("Ab6301s00FECHAINSCRIPCION"),
							resultSet.getString("Ab6301s00NUMINSTALACIONWZ"),
							resultSet.getString("Ab6301s00OBSERVACIONES2"),
							resultSet.getString("Ab6301s00NOTASMIGRACION"), resultSet.getString("Ab6301s00AGRUPACION"),
							resultSet.getString("Ab6301s00REFCATASTRAL"),
							resultSet.getString("Ab6301s00OBSSEGRESPCIVIL"),
							resultSet.getDate("Ab6301s00FECHAREGISTRO"),
							resultSet.getString("Ab6301s00USUARIOREGISTRO"),
							resultSet.getDate("Ab6301s00FECHAULTMODIFICACION"),
							resultSet.getString("AB6301S00USUARIOULTMODIF"), resultSet.getString("TELEFONO"),
							resultSet.getString("CORREOELECTRONICO"), resultSet.getString("IDEXPEDIENTE"),
							resultSet.getString("IDESTABLECIMIENTOPADRE"), resultSet.getString("TIPO_REGISTRO"),
							resultSet.getString("IDESTABSOLIC"), null, null, null, null, null, null, null, null,
							new Recurso(resultSet.getString("Ab6301s00IDRECURSO"), null, null, null, null, null, null,
									null, null, null),
							new TipoEstablecimiento(resultSet.getString("Ab6301s00IDTIPOESTABLECIMIENTO"), null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null),
							new Grupo(resultSet.getString("Ab6301s00IDGRUPO"), null, null, null, null, null, null, null,
									null, null, null, null),
							new Categoria(resultSet.getString("Ab6301s00IDCATEGORIAS"), null, null, null, null, null,
									null, null, null, null, null, null),
							new Especialidad(resultSet.getString("Ab6301s00IDESPECIALIDAD"), null, null, null, null,
									null, null, null, null, null, null, null),
							new Modalidad(resultSet.getString("Ab6301s00IDMODALIDAD"), null, null, null, null, null,
									null, null, null, null, null, null),
							new EstablecimientoData(resultSet.getInt("Ab6301s00IDESTABLECIMIENTO"), null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null, null, null),
							new AgenciaData(resultSet.getInt("Ab6301s00IDESTABLECIMIENTO"), null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null)),
					new TiposTercero(resultSet.getLong("ID_TIPO_TERCERO"),
							resultSet.getString("DESCRIPCION_CASTELLANO"), resultSet.getString("DESCRIPCION_EUSKERA"),
							resultSet.getDate("FECHA_REGISTRO"), resultSet.getString("USUARIO_REGISTRO"),
							resultSet.getString("ROLE")),
					new DatosTerceros(resultSet.getInt("AB6339S00IDTERCERO"), resultSet.getString("NIFINTERESADO"),
							new TiposDocumento(resultSet.getLong("ID_TIPO_DOCUMENTO"),
									resultSet.getString("DESCRIPCION_CASTELLANO_TIPODOC"),
									resultSet.getString("DESCRIPCION_EUSKERA_TIPODOC"),
									resultSet.getDate("FECHA_REGISTRO_TIPODOC"),
									resultSet.getString("USUARIO_REGISTRO_TIPODOC")),
							resultSet.getString("NOMBREINTERESADO"), resultSet.getString("APELLIDO1"),
							resultSet.getString("APELLIDO2"),
							new Sexo(resultSet.getLong("IDSEXO"), resultSet.getString("DESCRIPCION_CASTELLANO_SEX"),
									resultSet.getString("DESCRIPCION_EUSKERA_SEX")),
							resultSet.getLong("TELEFONOINTERESADO"), resultSet.getString("EMAILINTERESADO"), null, null,
							null, null, null, null),
					new DatosDirecciones(resultSet.getInt("iddireccion"), null, resultSet.getString("direccion"),
							resultSet.getString("numero"), resultSet.getString("escalera"), resultSet.getString("piso"),
							resultSet.getString("letra"), resultSet.getString("codigoPostal"),
							resultSet.getLong("idpais"), resultSet.getLong("provincia"), resultSet.getLong("municipio"),
							resultSet.getLong("localidad"), resultSet.getString("descripcionprovinciaextr"),
							resultSet.getString("descripcionciudadextr"), null, null, null, null, null, null, null,
							null));
		}
	};
	private RowMapper<TercerosEstablecimiento> rwMapPK = new RowMapper<TercerosEstablecimiento>() {
		public TercerosEstablecimiento mapRow(ResultSet resultSet, int rowNum) throws SQLException {
			return new TercerosEstablecimiento(resultSet.getInt("IDTERCEROSESTAB"));
		}
	};

	/**
	 * Rowmapper para Jerarquía
	 *
	 * @param dataSource
	 *            DataSource
	 * @return
	 */
	private RowMapper<JerarquiaDto<TercerosEstablecimiento>> rwMapJerarquia = new RowMapper<JerarquiaDto<TercerosEstablecimiento>>() {
		public JerarquiaDto<TercerosEstablecimiento> mapRow(ResultSet resultSet, int rowNum) throws SQLException {

			TercerosEstablecimiento ab6339s00 = new TercerosEstablecimiento(resultSet.getInt("IDTERCEROSESTAB"),
					resultSet.getDate("FECHAREGISTRO"), resultSet.getString("USUARIOREGISTRO"),
					resultSet.getDate("FECHAULTMODIFICACION"), resultSet.getString("USUARIOULTMODIFICACION"),
					new Establecimiento(resultSet.getInt("Ab6301s00IDESTABLECIMIENTO"),
							resultSet.getString("AB6301S00IDENTIFICADORESTABLEC"),
							resultSet.getString("Ab6301s00DESCNOMBRE"), resultSet.getString("Ab6301s00VISIBLEWEB"),
							resultSet.getString("Ab6301s00TEMPORADA"), resultSet.getString("Ab6301s00URLWEB"),
							resultSet.getString("Ab6301s00IDDEFECTOS"), resultSet.getInt("AB6301S00NUMUNIDADESALOJ"),
							resultSet.getString("Ab6301s00OBSERVACIONES"), resultSet.getDate("Ab6301s00FECHAAPERTURA"),
							resultSet.getDate("Ab6301s00FECHABAJA"), resultSet.getDate("Ab6301s00FECHAINICIERRETEMP"),
							resultSet.getDate("Ab6301s00FECHAFINCIERRETEMP"),
							resultSet.getDate("Ab6301s00FECHAVCTOCIERRE"),
							resultSet.getDate("Ab6301s00FECHAULTNOTIFICACION"),
							resultSet.getDate("Ab6301s00FECHAULTINSPECCION"),
							resultSet.getDate("Ab6301s00FECHAPROINSPECCION"),
							resultSet.getDate("Ab6301s00FECHAULTACTUALIZACION"),
							resultSet.getDate("Ab6301s00FECHACLAUSURA"), resultSet.getDate("Ab6301s00FECHAULTREFORMA"),
							resultSet.getString("Ab6301s00ELIMINADO"), resultSet.getString("Ab6301s00EXPEDIENTEB29"),
							resultSet.getLong("Ab6301s00IDPORTALS41"), resultSet.getString("Ab6301s00URLPORTALS41"),
							resultSet.getDate("Ab6301s00FECHACONTROLS41"),
							resultSet.getString("AB6301S00NUMINSTALACIONANT"),
							resultSet.getDate("Ab6301s00FECHAINSCRIPCION"),
							resultSet.getString("Ab6301s00NUMINSTALACIONWZ"),
							resultSet.getString("Ab6301s00OBSERVACIONES2"),
							resultSet.getString("Ab6301s00NOTASMIGRACION"), resultSet.getString("Ab6301s00AGRUPACION"),
							resultSet.getString("Ab6301s00REFCATASTRAL"),
							resultSet.getString("Ab6301s00OBSSEGRESPCIVIL"),
							resultSet.getDate("Ab6301s00FECHAREGISTRO"),
							resultSet.getString("Ab6301s00USUARIOREGISTRO"),
							resultSet.getDate("Ab6301s00FECHAULTMODIFICACION"),
							resultSet.getString("AB6301S00USUARIOULTMODIF"), resultSet.getString("TELEFONO"),
							resultSet.getString("CORREOELECTRONICO"), resultSet.getString("IDEXPEDIENTE"),
							resultSet.getString("IDESTABLECIMIENTOPADRE"), resultSet.getString("TIPO_REGISTRO"),
							resultSet.getString("IDESTABSOLIC"), null, null, null, null, null, null,
							new DatosTerceros(resultSet.getInt("AB6339S00IDTERCERO"),
									resultSet.getString("NIFINTERESADO"), null, resultSet.getString("NOMBREINTERESADO"),
									null, null, null, resultSet.getLong("TELEFONOINTERESADO"),
									resultSet.getString("EMAILINTERESADO"), null, null, null, null, null, null),
							new DatosDirecciones(resultSet.getInt("ID_DIRECCION"), null,
									resultSet.getString("DIRECCION"), resultSet.getString("NUMERO"),
									resultSet.getString("ESCALERA"), resultSet.getString("PISO"),
									resultSet.getString("LETRA"), resultSet.getString("CODIGO_POSTAL"),
									resultSet.getLong("IDPAIS"), resultSet.getLong("ID_PROVINCIA"),
									resultSet.getLong("ID_MUNICIPIO"), resultSet.getLong("ID_LOCALIDAD"),
									resultSet.getString("DESCRIPCIONPROVINCIAEXTR"),
									resultSet.getString("DESCRIPCIONCIUDADEXTR"), null, null, null, null, null, null,
									null, null),
							new Recurso(resultSet.getString("Ab6301s00IDRECURSO"), null, null, null, null, null, null,
									null, null, null),
							new TipoEstablecimiento(resultSet.getString("Ab6301s00IDTIPOESTABLECIMIENTO"), null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null),
							new Grupo(resultSet.getString("Ab6301s00IDGRUPO"), null, null, null, null, null, null, null,
									null, null, null, null),
							new Categoria(resultSet.getString("Ab6301s00IDCATEGORIAS"), null, null, null, null, null,
									null, null, null, null, null, null),
							new Especialidad(resultSet.getString("Ab6301s00IDESPECIALIDAD"), null, null, null, null,
									null, null, null, null, null, null, null),
							new Modalidad(resultSet.getString("Ab6301s00IDMODALIDAD"), null, null, null, null, null,
									null, null, null, null, null, null),
							new EstablecimientoData(resultSet.getInt("Ab6301s00IDESTABLECIMIENTO"), null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null, null, null),
							new AgenciaData(resultSet.getInt("Ab6301s00IDESTABLECIMIENTO"), null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null)),
					new TiposTercero(resultSet.getLong("ID_TIPO_TERCERO"),
							resultSet.getString("DESCRIPCION_CASTELLANO"), resultSet.getString("DESCRIPCION_EUSKERA"),
							resultSet.getDate("FECHA_REGISTRO"), resultSet.getString("USUARIO_REGISTRO"),
							resultSet.getString("ROLE")),
					resultSet.getInt("BAJATERCERO"));

			JerarquiaDto<TercerosEstablecimiento> jerarquia = new JerarquiaDto<TercerosEstablecimiento>();
			jerarquia.setModel(ab6339s00);
			jerarquia.setLevel(resultSet.getBigDecimal("LEVEL").intValue());
			jerarquia.setParentNodes(resultSet.getString("PARENTNODES"));
			jerarquia.setIsLeaf(Boolean.parseBoolean(resultSet.getString("ISLEAF")));
			jerarquia.setFilter(Boolean.parseBoolean(resultSet.getString("FILTER")));
			return jerarquia;
		}
	};

	private RowMapper<TercerosEstablecimiento> rwMapInteresadosAfectadosSucursalesPuntoVenta = new RowMapper<TercerosEstablecimiento>() {
		public TercerosEstablecimiento mapRow(ResultSet resultSet, int rowNum) throws SQLException {

			TercerosEstablecimiento tercero = new TercerosEstablecimiento();
			Establecimiento establecimiento = new Establecimiento();
			TiposTercero tiposTercero = new TiposTercero();
			DatosDirecciones datosDirecciones = new DatosDirecciones();

			establecimiento.setIdEstablecimiento(resultSet.getInt("ID_ESTABLECIMIENTO"));
			tercero.setEstablecimiento(establecimiento);

			tercero.setIdTercerosEstab(resultSet.getInt(("ID_TERCERO")));

			tiposTercero.setIdTipoTercero(resultSet.getLong("ID_TIPO_TERCERO"));
			tercero.setTiposTercero(tiposTercero);

			tercero.setBaja(resultSet.getInt("BAJA"));

			datosDirecciones.setIdDireccion(resultSet.getInt("ID_DIRECCION"));
			tercero.getEstablecimiento().setDatosDirecciones(datosDirecciones);

			return tercero;
		}
	};

	private RowMapper<TercerosEstablecimiento> rwMapGetTerceroByIdTerceroForDeleteAAVVCase = new RowMapper<TercerosEstablecimiento>() {
		public TercerosEstablecimiento mapRow(ResultSet resultSet, int rowNum) throws SQLException {

			TercerosEstablecimiento tercero = new TercerosEstablecimiento();
			Establecimiento establecimiento = new Establecimiento();
			TiposTercero tiposTercero = new TiposTercero();
			DatosTerceros datosTerceros = new DatosTerceros();
			Modalidad modalidad = new Modalidad();
			AgenciaData agenciaData = new AgenciaData();
			TipoEstablecimiento tipoEstablecimiento = new TipoEstablecimiento();

			establecimiento.setIdEstablecimiento(resultSet.getInt("ID_ESTABLECIMIENTO"));
			tercero.setEstablecimiento(establecimiento);

			tercero.setIdTercerosEstab(resultSet.getInt(("ID_TERCERO")));

			tiposTercero.setIdTipoTercero(resultSet.getLong("ID_TIPO_TERCERO"));
			tercero.setTiposTercero(tiposTercero);

			modalidad.setIdModalidad(resultSet.getString("ID_MODALIDAD"));
			tercero.getEstablecimiento().setModalidad(modalidad);

			tipoEstablecimiento.setIdTipoEstablecimiento(resultSet.getString("ID_TIPO_ESTABLECIMIENTO"));
			tercero.getEstablecimiento().setTipoEstablecimiento(tipoEstablecimiento);

			datosTerceros.setDocumento(resultSet.getString("DOCUMENTO"));
			tercero.getEstablecimiento().setDatosTerceros(datosTerceros);

			agenciaData.setNumCie(resultSet.getString("NUM_CIE"));
			tercero.getEstablecimiento().setAgenciaData(agenciaData);

			return tercero;
		}
	};

	private RowMapper<TercerosEstablecimiento> rwMapGetTerceroByIdTercero = new RowMapper<TercerosEstablecimiento>() {
		public TercerosEstablecimiento mapRow(ResultSet resultSet, int rowNum) throws SQLException {

			TercerosEstablecimiento tercero = new TercerosEstablecimiento();
			Establecimiento establecimiento = new Establecimiento();
			TiposTercero tiposTercero = new TiposTercero();
			DatosTerceros datosTerceros = new DatosTerceros();
			Modalidad modalidad = new Modalidad();
			AgenciaData agenciaData = new AgenciaData();
			TipoEstablecimiento tipoEstablecimiento = new TipoEstablecimiento();

			establecimiento.setIdEstablecimiento(resultSet.getInt("ID_ESTABLECIMIENTO"));
			tercero.setEstablecimiento(establecimiento);

			tercero.setIdTercerosEstab(resultSet.getInt(("ID_TERCERO")));

			tiposTercero.setIdTipoTercero(resultSet.getLong("ID_TIPO_TERCERO"));
			tercero.setTiposTercero(tiposTercero);

			modalidad.setIdModalidad(resultSet.getString("ID_MODALIDAD"));
			tercero.getEstablecimiento().setModalidad(modalidad);

			tipoEstablecimiento.setIdTipoEstablecimiento(resultSet.getString("ID_TIPO_ESTABLECIMIENTO"));
			tercero.getEstablecimiento().setTipoEstablecimiento(tipoEstablecimiento);

			datosTerceros.setDocumento(resultSet.getString("DOCUMENTO"));
			tercero.getEstablecimiento().setDatosTerceros(datosTerceros);

			return tercero;
		}
	};

	/**
	 * Method use to set the datasource.
	 *
	 * @param dataSource
	 *            DataSource
	 * @return
	 */
	@Resource
	public void setDataSource(DataSource dataSource) {
		this.jdbcTemplate = new JdbcTemplate(dataSource);
	}

	/*
	 * OPERACIONES CRUD
	 */

	/**
	 * Inserts a single row in the Ab6339s00 table.
	 *
	 * @param ab6339s00
	 *            Ab6339s00
	 * @return Ab6339s00
	 */
	public TercerosEstablecimiento add(TercerosEstablecimiento ab6339s00) {

		String query = "INSERT INTO AB6339S00 (ID_REL_EST_TER, ID_ESTABLECIMIENTO, ID_TERCERO, ID_TIPO_TERCERO, FECHA_REGISTRO, USUARIO_REGISTRO) VALUES (AB6339Q00.NEXTVAL,?,?,?,SYSDATE,?)";
		Object getAb6301s00IdEstablecimientoAux = null;
		if (ab6339s00.getEstablecimiento() != null && ab6339s00.getEstablecimiento().getIdEstablecimiento() != null) {
			getAb6301s00IdEstablecimientoAux = ab6339s00.getEstablecimiento().getIdEstablecimiento();
		}
		this.jdbcTemplate.update(query, getAb6301s00IdEstablecimientoAux, ab6339s00.getIdTercerosEstab(),
				ab6339s00.getTiposTercero().getIdTipoTercero(), PermisosXLNETS.getUserConnected());
		return ab6339s00;
	}

	@Override
	public TercerosEstablecimiento addDatosTercero(TercerosEstablecimiento tercerosEstablecimiento) {
		String query = "INSERT INTO DATOS_TERCERO (ID_TERCERO, DOCUMENTO, ID_TIPO_DOCUMENTO, ID_SEXO, NOMBRE, APELLIDO1, APELLIDO2, TELEFONO, EMAIL,FECHA_REGISTRO,USUARIO_REGISTRO) VALUES (?,?,?,?,?,?,?,?,?,CURRENT_DATE,?)";

		DatosTerceros datosTerceros = tercerosEstablecimiento.getDatosTerceros() != null
				? tercerosEstablecimiento.getDatosTerceros()
				: tercerosEstablecimiento.getEstablecimiento() != null
						&& tercerosEstablecimiento.getEstablecimiento().getDatosTerceros() != null
								? tercerosEstablecimiento.getEstablecimiento().getDatosTerceros() : null;
		Object idTipoDoc = null;
		if (null != datosTerceros && datosTerceros.getTiposDocumento() != null
				&& datosTerceros.getTiposDocumento().getIdTipoDocumento() != null
				&& datosTerceros.getTiposDocumento().getIdTipoDocumento() > 0) {
			idTipoDoc = datosTerceros.getTiposDocumento().getIdTipoDocumento();
		}
		Object idSexo = null;
		if (null != datosTerceros && datosTerceros.getSexo() != null && datosTerceros.getSexo().getIdSexo() != null
				&& datosTerceros.getSexo().getIdSexo() > 0) {
			idSexo = datosTerceros.getSexo().getIdSexo();
		}

		long idTercero = UtilDao.getNextId(jdbcTemplate, "AB61.S_AB6135T00");
		datosTerceros.setIdTercero((int) idTercero);
		tercerosEstablecimiento.setIdTercerosEstab((int) idTercero);
		this.jdbcTemplate.update(query, datosTerceros.getIdTercero(), datosTerceros.getDocumento(), idTipoDoc, idSexo,
				datosTerceros.getNombre(), datosTerceros.getApellido1(), datosTerceros.getApellido2(),
				datosTerceros.getTelefono(), datosTerceros.getEmail(), PermisosXLNETS.getUserConnected());
		return tercerosEstablecimiento;
	}

	@Override
	public DatosTerceros addDatosTercero(DatosTerceros datosTerceros) {
		String query = "INSERT INTO DATOS_TERCERO (ID_TERCERO, DOCUMENTO, ID_TIPO_DOCUMENTO, ID_SEXO, NOMBRE, APELLIDO1, APELLIDO2, TELEFONO, EMAIL,FECHA_REGISTRO,USUARIO_REGISTRO) VALUES (?,?,?,?,?,?,?,?,?,CURRENT_DATE,?)";

		Object idTipoDoc = null;
		if (datosTerceros.getTiposDocumento() != null && datosTerceros.getTiposDocumento().getIdTipoDocumento() != null
				&& datosTerceros.getTiposDocumento().getIdTipoDocumento() > 0) {
			idTipoDoc = datosTerceros.getTiposDocumento().getIdTipoDocumento();
		}
		Object idSexo = null;
		if (datosTerceros.getSexo() != null && datosTerceros.getSexo().getIdSexo() != null
				&& datosTerceros.getSexo().getIdSexo() > 0) {
			idSexo = datosTerceros.getSexo().getIdSexo();
		}

		long idTercero = UtilDao.getNextId(jdbcTemplate, "AB61.S_AB6135T00");
		datosTerceros.setIdTercero((int) idTercero);

		this.jdbcTemplate.update(query, datosTerceros.getIdTercero(), datosTerceros.getDocumento(), idTipoDoc, idSexo,
				datosTerceros.getNombre(), datosTerceros.getApellido1(), datosTerceros.getApellido2(),
				datosTerceros.getTelefono(), datosTerceros.getEmail(), PermisosXLNETS.getUserConnected());
		return datosTerceros;
	}

	@Override
	public TercerosEstablecimiento addDatosDireccionTercero(TercerosEstablecimiento ab6339s00) {
		String query = "INSERT INTO DATOS_DIRECCIONES (ID_DIRECCION, ID_TERCERO, ID_TIPO_DIRECCION, ID_PAIS, ID_PROVINCIA, ID_MUNICIPIO, ID_LOCALIDAD, DIRECCION,NUMERO,PISO,LETRA,ESCALERA,CODIGO_POSTAL,FECHA_REGISTRO,USUARIO_REGISTRO) VALUES (AB61.S_AB6136T00.NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,SYSDATE,?)";
		// Object getAb6301s00IdEstablecimientoAux = null;
		// if (ab6339s00.getEstablecimiento() != null &&
		// ab6339s00.getEstablecimiento().getIdEstablecimiento() != null) {
		// getAb6301s00IdEstablecimientoAux =
		// ab6339s00.getEstablecimiento().getIdEstablecimiento();
		// }
		this.jdbcTemplate.update(query, ab6339s00.getEstablecimiento().getDatosTerceros().getIdTercero(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getTiposDireccion().getIdTipoDireccion(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getIdPais(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getIdProvincia(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getIdMunicipio(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getIdLocalidad(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getDireccion(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getNumero(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getPiso(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getLetra(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getEscalera(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getCodigoPostal(),
				PermisosXLNETS.getUserConnected());
		return ab6339s00;
	}

	/**
	 * Updates a single row in the Ab6339s00 table.
	 *
	 * @param ab6339s00
	 *            Ab6339s00
	 * @return Ab6339s00
	 */
	public TercerosEstablecimiento update(TercerosEstablecimiento ab6339s00) {

		String query = "UPDATE AB6339S00 SET ID_TIPO_TERCERO=?, BAJA=?,FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_TERCERO=?";

		this.jdbcTemplate.update(query, ab6339s00.getTiposTercero().getIdTipoTercero(), ab6339s00.getBaja(),
				PermisosXLNETS.getUserConnected(), ab6339s00.getIdTercerosEstab());
		return ab6339s00;
	}

	// snts

	/**
	 * Updates a single row in the Ab6339s00 table.
	 *
	 * @param ab6339s00
	 *            Ab6339s00
	 * @return Ab6339s00
	 */
	public TercerosEstablecimiento updateDatosTercero(TercerosEstablecimiento ab6339s00) {

		String query = "UPDATE DATOS_TERCERO SET DOCUMENTO=?, ID_TIPO_DOCUMENTO=?, NOMBRE=?, APELLIDO1=?, APELLIDO2=?, TELEFONO=?, EMAIL=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=?, ID_SEXO=? WHERE ID_TERCERO=?";

		Object idSexo = null;
		if (ab6339s00.getDatosTerceros() != null && ab6339s00.getDatosTerceros().getSexo() != null) {
			idSexo = ab6339s00.getDatosTerceros().getSexo().getIdSexo();
		}

		this.jdbcTemplate.update(query, ab6339s00.getEstablecimiento().getDatosTerceros().getDocumento(),
				ab6339s00.getEstablecimiento().getDatosTerceros().getTiposDocumento().getIdTipoDocumento(),
				ab6339s00.getEstablecimiento().getDatosTerceros().getNombre(),
				ab6339s00.getEstablecimiento().getDatosTerceros().getApellido1(),
				ab6339s00.getEstablecimiento().getDatosTerceros().getApellido2(),
				ab6339s00.getEstablecimiento().getDatosTerceros().getTelefono(),
				ab6339s00.getEstablecimiento().getDatosTerceros().getEmail(), PermisosXLNETS.getUserConnected(), idSexo,
				ab6339s00.getEstablecimiento().getDatosTerceros().getIdTercero());
		return ab6339s00;
	}

	/**
	 * Updates a single row in the Ab6339s00 table.
	 *
	 * @param ab6339s00
	 *            Ab6339s00
	 * @return Ab6339s00
	 */
	public TercerosEstablecimiento updateDatosDireccionTercero(TercerosEstablecimiento ab6339s00) {

		String query = "UPDATE DATOS_DIRECCIONES SET ID_PAIS=?, ID_PROVINCIA=?, ID_MUNICIPIO=?, ID_LOCALIDAD=?, DIRECCION=?, NUMERO=?, PISO=?, LETRA=?, ESCALERA=?, CODIGO_POSTAL=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_TERCERO=? AND ID_DIRECCION=? ";

		this.jdbcTemplate.update(query, ab6339s00.getEstablecimiento().getDatosDirecciones().getIdPais(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getIdProvincia(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getIdMunicipio(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getIdLocalidad(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getDireccion(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getNumero(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getPiso(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getLetra(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getEscalera(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getCodigoPostal(),
				PermisosXLNETS.getUserConnected(), ab6339s00.getEstablecimiento().getDatosTerceros().getIdTercero(),
				ab6339s00.getEstablecimiento().getDatosDirecciones().getIdDireccion());
		return ab6339s00;
	}

	// snts

	/**
	 * Finds a single row in the Ab6339s00 table.
	 *
	 * @param ab6339s00
	 *            Ab6339s00
	 * @return Ab6339s00
	 */
	@Transactional(readOnly = true)
	public TercerosEstablecimiento find(TercerosEstablecimiento ab6339s00) {
		String query = "SELECT t1.ID_TERCERO IDTERCEROSESTAB, t1.FECHA_REGISTRO FECHAREGISTRO, t1.USUARIO_REGISTRO USUARIOREGISTRO, t1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION, t1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION, t1.BAJA BAJATERCERO, t2.ID_ESTABLECIMIENTO AB6301S00IDESTABLECIMIENTO, t2.IDENTIFICADOR_ESTABLECIMIENTO AB6301S00IDENTIFICADORESTABLEC, t2.DESC_NOMBRE AB6301S00DESCNOMBRE, t2.VISIBLEWEB AB6301S00VISIBLEWEB, t2.TEMPORADA AB6301S00TEMPORADA, t2.URLWEB AB6301S00URLWEB, t2.ID_DEFECTOS AB6301S00IDDEFECTOS, t2.NUM_UNIDADES_ALOJAMIENTO AB6301S00NUMUNIDADESALOJ, t2.OBSERVACIONES AB6301S00OBSERVACIONES, t2.FECHA_APERTURA AB6301S00FECHAAPERTURA, t2.FECHA_BAJA AB6301S00FECHABAJA, t2.FECHA_INICIERRETEMP AB6301S00FECHAINICIERRETEMP, t2.FECHA_FINCIERRETEMP AB6301S00FECHAFINCIERRETEMP, t2.FECHA_VCTO_CIERRE AB6301S00FECHAVCTOCIERRE, t2.FECHA_ULT_NOTIFICACION AB6301S00FECHAULTNOTIFICACION, t2.FECHA_ULT_INSPECCION AB6301S00FECHAULTINSPECCION, t2.FECHA_PRO_INSPECCION AB6301S00FECHAPROINSPECCION, t2.FECHA_ULT_ACTUALIZACION AB6301S00FECHAULTACTUALIZACION, t2.FECHA_CLAUSURA AB6301S00FECHACLAUSURA, t2.FECHA_ULT_REFORMA AB6301S00FECHAULTREFORMA, t2.ELIMINADO AB6301S00ELIMINADO, t2.EXPEDIENTEB29 AB6301S00EXPEDIENTEB29, t2.ID_PORTAL_S41 AB6301S00IDPORTALS41, t2.URL_PORTAL_S41 AB6301S00URLPORTALS41, t2.FECHA_CONTROL_S41 AB6301S00FECHACONTROLS41, t2.NUM_INSTALACION_ANTERIOR AB6301S00NUMINSTALACIONANT, t2.FECHA_INSCRIPCION AB6301S00FECHAINSCRIPCION, t2.NUM_INSTALACION_WZ AB6301S00NUMINSTALACIONWZ, t2.OBSERVACIONES2 AB6301S00OBSERVACIONES2, t2.NOTAS_MIGRACION AB6301S00NOTASMIGRACION, t2.AGRUPACION AB6301S00AGRUPACION, t2.REF_CATASTRAL AB6301S00REFCATASTRAL, t2.OBS_SEGRESPCIVIL AB6301S00OBSSEGRESPCIVIL, t2.FECHA_REGISTRO AB6301S00FECHAREGISTRO, t2.USUARIO_REGISTRO AB6301S00USUARIOREGISTRO, t2.FECHA_ULTMODIFICACION AB6301S00FECHAULTMODIFICACION, t2.USUARIO_ULTMODIFICACION AB6301S00USUARIOULTMODIF, t2.TELEFONO TELEFONO, T2.EMAIL CORREOELECTRONICO, t2.ID_EXPEDIENTE IDEXPEDIENTE, t2.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, t2.TIPO_REGISTRO, t2.IDESTAB_SOLIC IDESTABSOLIC,t2.ID_RECURSO AB6301S00IDRECURSO,t2.ID_TIPO_ESTABLECIMIENTO AB6301S00IDTIPOESTABLECIMIENTO,t2.ID_GRUPO AB6301S00IDGRUPO,t2.ID_CATEGORIAS AB6301S00IDCATEGORIAS,t2.ID_ESPECIALIDAD AB6301S00IDESPECIALIDAD,t2.ID_MODALIDAD AB6301S00IDMODALIDAD, t3.ID_TERCERO AB6339S00IDTERCERO, t3.DOCUMENTO NIFINTERESADO, t3.NOMBRE NOMBREINTERESADO, t3.APELLIDO1 APELLIDO1, t3.APELLIDO2 APELLIDO2, t3.TELEFONO TELEFONOINTERESADO, t3.EMAIL EMAILINTERESADO, t4.ID_DIRECCION, t4.DIRECCION, t4.NUMERO, t4.ESCALERA, t4.PISO, t4.LETRA, t4.CODIGO_POSTAL, t4.ID_PAIS IDPAIS, t4.ID_PROVINCIA, t4.ID_MUNICIPIO, t4.ID_LOCALIDAD, T4.DESCRIPCION_PROVINCIA DESCRIPCIONPROVINCIAEXTR, T4.DESCRIPCION_CIUDAD DESCRIPCIONCIUDADEXTR, t5.ID_TIPO_TERCERO, t5.DESCRIPCION_CASTELLANO, t5.DESCRIPCION_EUSKERA, t5.FECHA_REGISTRO, t5.USUARIO_REGISTRO, t5.ROLE, t6.ID_TIPO_DOCUMENTO,t6.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_TIPODOC,t6.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_TIPODOC,t6.FECHA_REGISTRO FECHA_REGISTRO_TIPODOC ,t6.USUARIO_REGISTRO USUARIO_REGISTRO_TIPODOC, t7.ID_SEXO IDSEXO, t7.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_SEX,t7.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_SEX,t7.FECHA_REGISTRO FECHA_REGISTRO_SEX,t7.USUARIO_REGISTRO USUARIO_REGISTRO_SEX, t8.ID_TIPO_DIRECCION ID_TIPO_DIRECCION_DIR, t8.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_DIR, t8.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_DIR, t8.FECHA_REGISTRO FECHA_REGISTRO_DIR, t8.USUARIO_REGISTRO USUARIO_REGISTRO_DIR FROM AB6339S00 t1 ,AB6301S00 t2, DATOS_TERCERO t3, DATOS_DIRECCIONES t4, AB61.AB6106T00 t5, TIPOS_DOCUMENTO t6,SEXO t7, TIPO_DIRECCION t8 WHERE t1.ID_TERCERO = ? AND t4.ID_TIPO_DIRECCION = t8.ID_TIPO_DIRECCION AND t3.ID_TIPO_DOCUMENTO=t6.ID_TIPO_DOCUMENTO(+) AND t3.ID_SEXO = t7.ID_SEXO(+) AND t1.ID_TIPO_TERCERO = t5.ID_TIPO_TERCERO AND t1.ID_TERCERO=t4.ID_TERCERO AND t1.id_tercero = t3.id_tercero AND t1.ID_ESTABLECIMIENTO= t2.ID_ESTABLECIMIENTO(+) ";

		List<TercerosEstablecimiento> ab6339s00List = this.jdbcTemplate.query(query, this.rwMap,
				ab6339s00.getIdTercerosEstab());
		return (TercerosEstablecimiento) DataAccessUtils.uniqueResult(ab6339s00List);
	}

	/**
	 * Removes a single row in the Ab6339s00 table.
	 *
	 * @param ab6339s00
	 *            Ab6339s00
	 * @return
	 */
	public void remove(TercerosEstablecimiento ab6339s00) {

		String query = "UPDATE AB6339S00 SET BAJA=1, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_TERCERO=?";
		this.jdbcTemplate.update(query, PermisosXLNETS.getUserConnected(), ab6339s00.getIdTercerosEstab());
	}

	/**
	 * Removes a single row in the Ab6339s00 table.
	 *
	 * @param ab6339s00
	 *            Ab6339s00
	 * @return
	 */
	public void removeByEst(TercerosEstablecimiento ab6339s00) {

		String query = "UPDATE AB6339S00 SET BAJA=1, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_ESTABLECIMIENTO=? AND ID_TIPO_TERCERO = ? ";
		this.jdbcTemplate.update(query, PermisosXLNETS.getUserConnected(),
				ab6339s00.getEstablecimiento().getIdEstablecimiento(), ab6339s00.getTiposTercero().getIdTipoTercero());
	}

	/**
	 * Finds a list of rows in the Ab6339s00 table.
	 *
	 * @param ab6339s00
	 *            Ab6339s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @return List<Ab6339s00>
	 */
	@Transactional(readOnly = true)
	public List<TercerosEstablecimiento> findAllByEstablecimiento(Establecimiento establecimiento) {
		StringBuilder query = new StringBuilder(
				"SELECT T1.ID_TERCERO IDTERCEROSESTAB, T1.FECHA_REGISTRO FECHAREGISTRO, T1.USUARIO_REGISTRO USUARIOREGISTRO, T1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION, T1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION, T2.ID_ESTABLECIMIENTO AB6301S00IDESTABLECIMIENTO, T2.IDENTIFICADOR_ESTABLECIMIENTO AB6301S00IDENTIFICADORESTABLEC, T2.DESC_NOMBRE AB6301S00DESCNOMBRE, T2.VISIBLEWEB AB6301S00VISIBLEWEB, T2.TEMPORADA AB6301S00TEMPORADA, T2.URLWEB AB6301S00URLWEB, T2.ID_DEFECTOS AB6301S00IDDEFECTOS, T2.NUM_UNIDADES_ALOJAMIENTO AB6301S00NUMUNIDADESALOJ, T2.OBSERVACIONES AB6301S00OBSERVACIONES, T2.FECHA_APERTURA AB6301S00FECHAAPERTURA, T2.FECHA_BAJA AB6301S00FECHABAJA, T2.FECHA_INICIERRETEMP AB6301S00FECHAINICIERRETEMP, T2.FECHA_FINCIERRETEMP AB6301S00FECHAFINCIERRETEMP, T2.FECHA_VCTO_CIERRE AB6301S00FECHAVCTOCIERRE, T2.FECHA_ULT_NOTIFICACION AB6301S00FECHAULTNOTIFICACION, T2.FECHA_ULT_INSPECCION AB6301S00FECHAULTINSPECCION, T2.FECHA_PRO_INSPECCION AB6301S00FECHAPROINSPECCION, T2.FECHA_ULT_ACTUALIZACION AB6301S00FECHAULTACTUALIZACION, T2.FECHA_CLAUSURA AB6301S00FECHACLAUSURA, T2.FECHA_ULT_REFORMA AB6301S00FECHAULTREFORMA, T2.ELIMINADO AB6301S00ELIMINADO, T2.EXPEDIENTEB29 AB6301S00EXPEDIENTEB29, T2.ID_PORTAL_S41 AB6301S00IDPORTALS41, T2.URL_PORTAL_S41 AB6301S00URLPORTALS41, T2.FECHA_CONTROL_S41 AB6301S00FECHACONTROLS41, T2.NUM_INSTALACION_ANTERIOR AB6301S00NUMINSTALACIONANT, T2.FECHA_INSCRIPCION AB6301S00FECHAINSCRIPCION, T2.NUM_INSTALACION_WZ AB6301S00NUMINSTALACIONWZ, T2.OBSERVACIONES2 AB6301S00OBSERVACIONES2, T2.NOTAS_MIGRACION AB6301S00NOTASMIGRACION, T2.AGRUPACION AB6301S00AGRUPACION, T2.REF_CATASTRAL AB6301S00REFCATASTRAL, T2.OBS_SEGRESPCIVIL AB6301S00OBSSEGRESPCIVIL, T2.FECHA_REGISTRO AB6301S00FECHAREGISTRO, T2.USUARIO_REGISTRO AB6301S00USUARIOREGISTRO, T2.FECHA_ULTMODIFICACION AB6301S00FECHAULTMODIFICACION, T2.USUARIO_ULTMODIFICACION AB6301S00USUARIOULTMODIF, T2.TELEFONO TELEFONO, T2.EMAIL CORREOELECTRONICO, T2.ID_EXPEDIENTE IDEXPEDIENTE, T2.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, T2.TIPO_REGISTRO, T2.IDESTAB_SOLIC IDESTABSOLIC, T2.ID_RECURSO AB6301S00IDRECURSO, T2.ID_TIPO_ESTABLECIMIENTO AB6301S00IDTIPOESTABLECIMIENTO, T2.ID_GRUPO AB6301S00IDGRUPO, T2.ID_CATEGORIAS AB6301S00IDCATEGORIAS, T2.ID_ESPECIALIDAD AB6301S00IDESPECIALIDAD, T2.ID_MODALIDAD AB6301S00IDMODALIDAD, T3.ID_TERCERO AB6339S00IDTERCERO, T3.DOCUMENTO NIFINTERESADO, T3.NOMBRE NOMBREINTERESADO, T3.APELLIDO1 APELLIDO1, T3.APELLIDO2 APELLIDO2, T3.TELEFONO TELEFONOINTERESADO, T3.EMAIL EMAILINTERESADO, T3.ID_SEXO IDSEXO, T5.ID_TIPO_TERCERO, T5.DESCRIPCION_CASTELLANO, T5.DESCRIPCION_EUSKERA, T5.FECHA_REGISTRO, T5.USUARIO_REGISTRO, T5.ROLE, T6.ID_TIPO_DOCUMENTO, T6.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_TIPODOC, T6.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_TIPODOC, T6.FECHA_REGISTRO FECHA_REGISTRO_TIPODOC, T6.USUARIO_REGISTRO USUARIO_REGISTRO_TIPODOC, T7.ID_SEXO, T7.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_SEX, T7.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_SEX, T7.FECHA_REGISTRO FECHA_REGISTRO_SEX, T7.USUARIO_REGISTRO USUARIO_REGISTRO_SEX ");
		query.append(
				" FROM AB6339S00 T1, AB6301S00 T2, DATOS_TERCERO T3, AB61.AB6106T00 T5, TIPOS_DOCUMENTO T6, SEXO T7 ");

		// Where clause & Params

		StringBuilder where = new StringBuilder(
				" WHERE 1 = 1 AND T1.ID_TERCERO = T3.ID_TERCERO AND T3.ID_TIPO_DOCUMENTO = T6.ID_TIPO_DOCUMENTO (+) AND T3.ID_SEXO = T7.ID_SEXO (+) AND T1.ID_TIPO_TERCERO = T5.ID_TIPO_TERCERO(+) AND T1.ID_ESTABLECIMIENTO = T2.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = ? ");
		if (establecimiento.istOnlyTerActivos()) {
			where.append(" AND T1.baja = 0");
		}
		query.append(where);

		return (List<TercerosEstablecimiento>) this.jdbcTemplate.query(query.toString(), this.rwMapDatosTerceroSinDirec,
				establecimiento.getIdEstablecimiento());
	}

	@Transactional(readOnly = true)
	public List<TercerosEstablecimiento> findAllByEstablecimientoConDireccion(Establecimiento establecimiento) {
		StringBuilder query = new StringBuilder(
				"SELECT T1.ID_TERCERO IDTERCEROSESTAB, T1.FECHA_REGISTRO FECHAREGISTRO, T1.USUARIO_REGISTRO USUARIOREGISTRO, T1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION, T1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION, T2.ID_ESTABLECIMIENTO AB6301S00IDESTABLECIMIENTO, T2.IDENTIFICADOR_ESTABLECIMIENTO AB6301S00IDENTIFICADORESTABLEC, T2.DESC_NOMBRE AB6301S00DESCNOMBRE, T2.VISIBLEWEB AB6301S00VISIBLEWEB, T2.TEMPORADA AB6301S00TEMPORADA, T2.URLWEB AB6301S00URLWEB, T2.ID_DEFECTOS AB6301S00IDDEFECTOS, T2.NUM_UNIDADES_ALOJAMIENTO AB6301S00NUMUNIDADESALOJ, T2.OBSERVACIONES AB6301S00OBSERVACIONES, T2.FECHA_APERTURA AB6301S00FECHAAPERTURA, T2.FECHA_BAJA AB6301S00FECHABAJA, T2.FECHA_INICIERRETEMP AB6301S00FECHAINICIERRETEMP, T2.FECHA_FINCIERRETEMP AB6301S00FECHAFINCIERRETEMP, T2.FECHA_VCTO_CIERRE AB6301S00FECHAVCTOCIERRE, T2.FECHA_ULT_NOTIFICACION AB6301S00FECHAULTNOTIFICACION, T2.FECHA_ULT_INSPECCION AB6301S00FECHAULTINSPECCION, T2.FECHA_PRO_INSPECCION AB6301S00FECHAPROINSPECCION, T2.FECHA_ULT_ACTUALIZACION AB6301S00FECHAULTACTUALIZACION, T2.FECHA_CLAUSURA AB6301S00FECHACLAUSURA, T2.FECHA_ULT_REFORMA AB6301S00FECHAULTREFORMA, T2.ELIMINADO AB6301S00ELIMINADO, T2.EXPEDIENTEB29 AB6301S00EXPEDIENTEB29, T2.ID_PORTAL_S41 AB6301S00IDPORTALS41, T2.URL_PORTAL_S41 AB6301S00URLPORTALS41, T2.FECHA_CONTROL_S41 AB6301S00FECHACONTROLS41, T2.NUM_INSTALACION_ANTERIOR AB6301S00NUMINSTALACIONANT, T2.FECHA_INSCRIPCION AB6301S00FECHAINSCRIPCION, T2.NUM_INSTALACION_WZ AB6301S00NUMINSTALACIONWZ, T2.OBSERVACIONES2 AB6301S00OBSERVACIONES2, T2.NOTAS_MIGRACION AB6301S00NOTASMIGRACION, T2.AGRUPACION AB6301S00AGRUPACION, T2.REF_CATASTRAL AB6301S00REFCATASTRAL, T2.OBS_SEGRESPCIVIL AB6301S00OBSSEGRESPCIVIL, T2.FECHA_REGISTRO AB6301S00FECHAREGISTRO, T2.USUARIO_REGISTRO AB6301S00USUARIOREGISTRO, T2.FECHA_ULTMODIFICACION AB6301S00FECHAULTMODIFICACION, T2.USUARIO_ULTMODIFICACION AB6301S00USUARIOULTMODIF, T2.TELEFONO TELEFONO, T2.EMAIL CORREOELECTRONICO, T2.ID_EXPEDIENTE IDEXPEDIENTE, T2.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, T2.TIPO_REGISTRO, T2.IDESTAB_SOLIC IDESTABSOLIC, T2.ID_RECURSO AB6301S00IDRECURSO, T2.ID_TIPO_ESTABLECIMIENTO AB6301S00IDTIPOESTABLECIMIENTO, T2.ID_GRUPO AB6301S00IDGRUPO, T2.ID_CATEGORIAS AB6301S00IDCATEGORIAS, T2.ID_ESPECIALIDAD AB6301S00IDESPECIALIDAD, T2.ID_MODALIDAD AB6301S00IDMODALIDAD, T3.ID_TERCERO AB6339S00IDTERCERO, T3.DOCUMENTO NIFINTERESADO, T3.NOMBRE NOMBREINTERESADO, T3.APELLIDO1 APELLIDO1, T3.APELLIDO2 APELLIDO2, T3.TELEFONO TELEFONOINTERESADO, T3.EMAIL EMAILINTERESADO, T3.ID_SEXO IDSEXO, T5.ID_TIPO_TERCERO, T5.DESCRIPCION_CASTELLANO, T5.DESCRIPCION_EUSKERA, T5.FECHA_REGISTRO, T5.USUARIO_REGISTRO, T5.ROLE, T6.ID_TIPO_DOCUMENTO, T6.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_TIPODOC, T6.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_TIPODOC, T6.FECHA_REGISTRO FECHA_REGISTRO_TIPODOC, T6.USUARIO_REGISTRO USUARIO_REGISTRO_TIPODOC, T7.ID_SEXO, T7.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_SEX, T7.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_SEX, T7.FECHA_REGISTRO FECHA_REGISTRO_SEX, T7.USUARIO_REGISTRO USUARIO_REGISTRO_SEX, t4.id_direccion iddireccion,t4.direccion direccion,t4.numero numero,t4.escalera escalera,t4.piso piso,t4.letra letra,t4.codigo_postal codigoPostal,t4.id_pais idpais,t4.id_provincia provincia,t4.id_municipio municipio,t4.id_localidad localidad,t4.descripcion_provincia descripcionprovinciaextr,t4.descripcion_ciudad descripcionciudadextr ");
		query.append(
				" FROM AB6339S00 T1, AB6301S00 T2, DATOS_TERCERO T3,datos_direcciones t4, AB61.AB6106T00 T5, TIPOS_DOCUMENTO T6, SEXO T7 ");

		// Where clause & Params

		StringBuilder where = new StringBuilder(
				" WHERE 1 = 1 AND T1.ID_TERCERO = T3.ID_TERCERO AND t3.id_tercero = t4.id_tercero AND T3.ID_TIPO_DOCUMENTO = T6.ID_TIPO_DOCUMENTO (+) AND T3.ID_SEXO = T7.ID_SEXO (+) AND T1.ID_TIPO_TERCERO = T5.ID_TIPO_TERCERO(+) AND T1.ID_ESTABLECIMIENTO = T2.ID_ESTABLECIMIENTO (+) AND T1.ID_ESTABLECIMIENTO = ? ");
		if (establecimiento.istOnlyTerActivos()) {
			where.append(" AND T1.baja = 0");
		}
		query.append(where);

		return (List<TercerosEstablecimiento>) this.jdbcTemplate.query(query.toString(), this.rwMapDatosTerceroConDirec,
				establecimiento.getIdEstablecimiento());
	}

	/**
	 * Finds a list of rows in the Ab6339s00 table.
	 *
	 * @param ab6339s00
	 *            Ab6339s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @return List<Ab6339s00>
	 */
	@Transactional(readOnly = true)
	public List<TercerosEstablecimiento> findAll(TercerosEstablecimiento ab6339s00, JQGridRequestDto jqGridRequestDto) {
		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_TERCERO IDTERCEROSESTAB,t1.FECHA_REGISTRO FECHAREGISTRO,t1.USUARIO_REGISTRO USUARIOREGISTRO,t1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION,t1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION,t2.ID_ESTABLECIMIENTO AB6301S00IDESTABLECIMIENTO,t2.IDENTIFICADOR_ESTABLECIMIENTO AB6301S00IDENTIFICADORESTABLEC,t2.DESC_NOMBRE AB6301S00DESCNOMBRE,t2.VISIBLEWEB AB6301S00VISIBLEWEB,t2.TEMPORADA AB6301S00TEMPORADA,t2.URLWEB AB6301S00URLWEB,t2.ID_DEFECTOS AB6301S00IDDEFECTOS,t2.NUM_UNIDADES_ALOJAMIENTO AB6301S00NUMUNIDADESALOJ,t2.OBSERVACIONES AB6301S00OBSERVACIONES,t2.FECHA_APERTURA AB6301S00FECHAAPERTURA,t2.FECHA_BAJA AB6301S00FECHABAJA,t2.FECHA_INICIERRETEMP AB6301S00FECHAINICIERRETEMP,t2.FECHA_FINCIERRETEMP AB6301S00FECHAFINCIERRETEMP,t2.FECHA_VCTO_CIERRE AB6301S00FECHAVCTOCIERRE,t2.FECHA_ULT_NOTIFICACION AB6301S00FECHAULTNOTIFICACION,t2.FECHA_ULT_INSPECCION AB6301S00FECHAULTINSPECCION,t2.FECHA_PRO_INSPECCION AB6301S00FECHAPROINSPECCION,t2.FECHA_ULT_ACTUALIZACION AB6301S00FECHAULTACTUALIZACION,t2.FECHA_CLAUSURA AB6301S00FECHACLAUSURA,t2.FECHA_ULT_REFORMA AB6301S00FECHAULTREFORMA,t2.ELIMINADO AB6301S00ELIMINADO,t2.EXPEDIENTEB29 AB6301S00EXPEDIENTEB29,t2.ID_PORTAL_S41 AB6301S00IDPORTALS41,t2.URL_PORTAL_S41 AB6301S00URLPORTALS41,t2.FECHA_CONTROL_S41 AB6301S00FECHACONTROLS41,t2.NUM_INSTALACION_ANTERIOR AB6301S00NUMINSTALACIONANT,t2.FECHA_INSCRIPCION AB6301S00FECHAINSCRIPCION,t2.NUM_INSTALACION_WZ AB6301S00NUMINSTALACIONWZ,t2.OBSERVACIONES2 AB6301S00OBSERVACIONES2,t2.NOTAS_MIGRACION AB6301S00NOTASMIGRACION,t2.AGRUPACION AB6301S00AGRUPACION,t2.REF_CATASTRAL AB6301S00REFCATASTRAL,t2.OBS_SEGRESPCIVIL AB6301S00OBSSEGRESPCIVIL,t2.FECHA_REGISTRO AB6301S00FECHAREGISTRO,t2.USUARIO_REGISTRO AB6301S00USUARIOREGISTRO,t2.FECHA_ULTMODIFICACION AB6301S00FECHAULTMODIFICACION,t2.USUARIO_ULTMODIFICACION AB6301S00USUARIOULTMODIF,t2.TELEFONO TELEFONO, T2.EMAIL CORREOELECTRONICO, t2.ID_EXPEDIENTE IDEXPEDIENTE, t2.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, t2.TIPO_REGISTRO, t2.IDESTAB_SOLIC IDESTABSOLIC,t2.ID_RECURSO AB6301S00IDRECURSO,t2.ID_TIPO_ESTABLECIMIENTO AB6301S00IDTIPOESTABLECIMIENTO,t2.ID_GRUPO AB6301S00IDGRUPO,t2.ID_CATEGORIAS AB6301S00IDCATEGORIAS,t2.ID_ESPECIALIDAD AB6301S00IDESPECIALIDAD,t2.ID_MODALIDAD AB6301S00IDMODALIDAD, t3.ID_TERCERO AB6339S00IDTERCERO, t3.DOCUMENTO NIFINTERESADO, t3.NOMBRE NOMBREINTERESADO, t3.APELLIDO1 APELLIDO1, t3.APELLIDO2 APELLIDO2, t3.TELEFONO TELEFONOINTERESADO, t3.EMAIL EMAILINTERESADO, t4.ID_DIRECCION, t4.DIRECCION, t4.NUMERO, t4.ESCALERA, t4.PISO, t4.LETRA, t4.CODIGO_POSTAL, t4.ID_PAIS IDPAIS, t4.ID_PROVINCIA, t4.ID_MUNICIPIO, t4.ID_LOCALIDAD, T4.DESCRIPCION_PROVINCIA DESCRIPCIONPROVINCIAEXTR, T4.DESCRIPCION_CIUDAD DESCRIPCIONCIUDADEXTR, t5.ID_TIPO_TERCERO, t5.DESCRIPCION_CASTELLANO, t5.DESCRIPCION_EUSKERA, t5.FECHA_REGISTRO, t5.USUARIO_REGISTRO, t5.ROLE, t6.ID_TIPO_DOCUMENTO,t6.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_TIPODOC,t6.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_TIPODOC,t6.FECHA_REGISTRO FECHA_REGISTRO_TIPODOC,t6.USUARIO_REGISTRO USUARIO_REGISTRO_TIPODOC, t7.ID_SEXO IDSEXO, t7.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_SEX,t7.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_SEX,t7.FECHA_REGISTRO FECHA_REGISTRO_SEX,t7.USUARIO_REGISTRO USUARIO_REGISTRO_SEX, t8.ID_TIPO_DIRECCION ID_TIPO_DIRECCION_DIR, t8.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_DIR, t8.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_DIR, t8.FECHA_REGISTRO FECHA_REGISTRO_DIR, t8.USUARIO_REGISTRO USUARIO_REGISTRO_DIR ");
		query.append(
				"FROM AB6339S00 t1 ,AB6301S00 t2, DATOS_TERCERO t3, DATOS_DIRECCIONES t4, AB61.AB6106T00 t5, TIPOS_DOCUMENTO t6,SEXO t7, TIPO_DIRECCION t8 ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereMap(ab6339s00);
		StringBuilder where = new StringBuilder(
				" WHERE 1=1 AND t4.ID_TIPO_DIRECCION = t8.ID_TIPO_DIRECCION AND t3.ID_TIPO_DOCUMENTO=t6.ID_TIPO_DOCUMENTO(+) AND t3.ID_SEXO = t7.ID_SEXO(+) AND t1.ID_TIPO_TERCERO = t5.ID_TIPO_TERCERO AND t1.ID_TERCERO=t4.ID_TERCERO AND t1.id_tercero = t3.id_tercero AND t1.ID_ESTABLECIMIENTO= t2.ID_ESTABLECIMIENTO(+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		List<?> params = (List<?>) mapaWhere.get("params");

		if (jqGridRequestDto != null) {
			query = JQGridManager.getPaginationQuery(jqGridRequestDto, query,
					TercerosEstablecimientoDaoImpl.ORDER_BY_WHITE_LIST);
		}

		return (List<TercerosEstablecimiento>) this.jdbcTemplate.query(query.toString(), this.rwMap, params.toArray());
	}

	/**
	 * Finds rows in the Ab6339s00 table using like.
	 *
	 * @param ab6339s00
	 *            Ab6339s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @param startsWith
	 *            Boolean
	 * @return List<Ab6339s00>
	 */
	@Transactional(readOnly = true)
	public List<TercerosEstablecimiento> findAllLike(TercerosEstablecimiento ab6339s00,
			JQGridRequestDto jqGridRequestDto, Boolean startsWith) {
		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_TERCERO IDTERCEROSESTAB,t1.FECHA_REGISTRO FECHAREGISTRO,t1.USUARIO_REGISTRO USUARIOREGISTRO,t1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION,t1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION, t1.BAJA BAJATERCERO, t2.ID_ESTABLECIMIENTO AB6301S00IDESTABLECIMIENTO,t2.IDENTIFICADOR_ESTABLECIMIENTO AB6301S00IDENTIFICADORESTABLEC,t2.DESC_NOMBRE AB6301S00DESCNOMBRE,t2.VISIBLEWEB AB6301S00VISIBLEWEB,t2.TEMPORADA AB6301S00TEMPORADA,t2.URLWEB AB6301S00URLWEB,t2.ID_DEFECTOS AB6301S00IDDEFECTOS,t2.NUM_UNIDADES_ALOJAMIENTO AB6301S00NUMUNIDADESALOJ,t2.OBSERVACIONES AB6301S00OBSERVACIONES,t2.FECHA_APERTURA AB6301S00FECHAAPERTURA,t2.FECHA_BAJA AB6301S00FECHABAJA,t2.FECHA_INICIERRETEMP AB6301S00FECHAINICIERRETEMP,t2.FECHA_FINCIERRETEMP AB6301S00FECHAFINCIERRETEMP,t2.FECHA_VCTO_CIERRE AB6301S00FECHAVCTOCIERRE,t2.FECHA_ULT_NOTIFICACION AB6301S00FECHAULTNOTIFICACION,t2.FECHA_ULT_INSPECCION AB6301S00FECHAULTINSPECCION,t2.FECHA_PRO_INSPECCION AB6301S00FECHAPROINSPECCION,t2.FECHA_ULT_ACTUALIZACION AB6301S00FECHAULTACTUALIZACION,t2.FECHA_CLAUSURA AB6301S00FECHACLAUSURA,t2.FECHA_ULT_REFORMA AB6301S00FECHAULTREFORMA,t2.ELIMINADO AB6301S00ELIMINADO,t2.EXPEDIENTEB29 AB6301S00EXPEDIENTEB29,t2.ID_PORTAL_S41 AB6301S00IDPORTALS41,t2.URL_PORTAL_S41 AB6301S00URLPORTALS41,t2.FECHA_CONTROL_S41 AB6301S00FECHACONTROLS41,t2.NUM_INSTALACION_ANTERIOR AB6301S00NUMINSTALACIONANT,t2.FECHA_INSCRIPCION AB6301S00FECHAINSCRIPCION,t2.NUM_INSTALACION_WZ AB6301S00NUMINSTALACIONWZ,t2.OBSERVACIONES2 AB6301S00OBSERVACIONES2,t2.NOTAS_MIGRACION AB6301S00NOTASMIGRACION,t2.AGRUPACION AB6301S00AGRUPACION,t2.REF_CATASTRAL AB6301S00REFCATASTRAL,t2.OBS_SEGRESPCIVIL AB6301S00OBSSEGRESPCIVIL,t2.FECHA_REGISTRO AB6301S00FECHAREGISTRO,t2.USUARIO_REGISTRO AB6301S00USUARIOREGISTRO,t2.FECHA_ULTMODIFICACION AB6301S00FECHAULTMODIFICACION,t2.USUARIO_ULTMODIFICACION AB6301S00USUARIOULTMODIF,t2.TELEFONO TELEFONO, T2.EMAIL CORREOELECTRONICO, t2.ID_EXPEDIENTE IDEXPEDIENTE, t2.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, t2.TIPO_REGISTRO, t2.IDESTAB_SOLIC IDESTABSOLIC,t2.ID_RECURSO AB6301S00IDRECURSO,t2.ID_TIPO_ESTABLECIMIENTO AB6301S00IDTIPOESTABLECIMIENTO,t2.ID_GRUPO AB6301S00IDGRUPO,t2.ID_CATEGORIAS AB6301S00IDCATEGORIAS,t2.ID_ESPECIALIDAD AB6301S00IDESPECIALIDAD,t2.ID_MODALIDAD AB6301S00IDMODALIDAD, t3.ID_TERCERO AB6339S00IDTERCERO, t3.DOCUMENTO NIFINTERESADO, t3.NOMBRE NOMBREINTERESADO, t3.APELLIDO1 APELLIDO1, t3.APELLIDO2 APELLIDO2, t3.TELEFONO TELEFONOINTERESADO, t3.EMAIL EMAILINTERESADO, t4.ID_DIRECCION, t4.DIRECCION, t4.NUMERO, t4.ESCALERA, t4.PISO, t4.LETRA, t4.CODIGO_POSTAL, t4.ID_PAIS IDPAIS, t4.ID_PROVINCIA, t4.ID_MUNICIPIO, t4.ID_LOCALIDAD, T4.DESCRIPCION_PROVINCIA DESCRIPCIONPROVINCIAEXTR, T4.DESCRIPCION_CIUDAD DESCRIPCIONCIUDADEXTR, t5.ID_TIPO_TERCERO, t5.DESCRIPCION_CASTELLANO, t5.DESCRIPCION_EUSKERA, t5.FECHA_REGISTRO, t5.USUARIO_REGISTRO, t5.ROLE, t6.ID_TIPO_DOCUMENTO,t6.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_TIPODOC,t6.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_TIPODOC,t6.FECHA_REGISTRO FECHA_REGISTRO_TIPODOC,t6.USUARIO_REGISTRO USUARIO_REGISTRO_TIPODOC, t7.ID_SEXO IDSEXO, t7.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_SEX,t7.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_SEX,t7.FECHA_REGISTRO FECHA_REGISTRO_SEX,t7.USUARIO_REGISTRO USUARIO_REGISTRO_SEX, t8.ID_TIPO_DIRECCION ID_TIPO_DIRECCION_DIR, t8.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_DIR, t8.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_DIR, t8.FECHA_REGISTRO FECHA_REGISTRO_DIR, t8.USUARIO_REGISTRO USUARIO_REGISTRO_DIR ");
		query.append(
				"FROM AB6339S00 t1 ,AB6301S00 t2, DATOS_TERCERO t3, DATOS_DIRECCIONES t4, AB61.AB6106T00 t5, TIPOS_DOCUMENTO t6,SEXO t7, TIPO_DIRECCION t8 ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(ab6339s00, startsWith);
		StringBuilder where = new StringBuilder(
				" WHERE 1=1  AND t4.ID_TIPO_DIRECCION = t8.ID_TIPO_DIRECCION AND t3.ID_TIPO_DOCUMENTO=t6.ID_TIPO_DOCUMENTO(+) AND t3.ID_SEXO = t7.ID_SEXO(+) AND t1.ID_TIPO_TERCERO = t5.ID_TIPO_TERCERO AND t1.ID_TERCERO=t4.ID_TERCERO AND t1.id_tercero = t3.id_tercero AND t1.ID_ESTABLECIMIENTO= t2.ID_ESTABLECIMIENTO(+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		List<?> params = (List<?>) mapaWhere.get("params");

		if (jqGridRequestDto != null) {
			query = JQGridManager.getPaginationQuery(jqGridRequestDto, query,
					TercerosEstablecimientoDaoImpl.ORDER_BY_WHITE_LIST);
		}

		return (List<TercerosEstablecimiento>) this.jdbcTemplate.query(query.toString(), this.rwMap, params.toArray());
	}

	/*
	 * OPERACIONES RUP_TABLE
	 */

	/**
	 * Counts rows in the Ab6339s00 table.
	 *
	 * @param ab6339s00
	 *            Ab6339s00
	 * @return Long
	 */
	@Transactional(readOnly = true)
	public Long findAllCount(TercerosEstablecimiento ab6339s00) {
		StringBuilder query = new StringBuilder("SELECT COUNT(1) FROM AB6339S00 t1 , AB6301S00 t2 ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereMap(ab6339s00);
		StringBuilder where = new StringBuilder(" WHERE 1=1 AND t1.ID_ESTABLECIMIENTO= t2.ID_ESTABLECIMIENTO(+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		List<?> params = (List<?>) mapaWhere.get("params");

		return this.jdbcTemplate.queryForObject(query.toString(), Long.class, params.toArray());
	}

	/**
	 * Counts rows in the Ab6339s00 table using like.
	 *
	 * @param ab6339s00
	 *            Ab6339s00
	 * @param startsWith
	 *            Boolean
	 * @return Long
	 */
	@Transactional(readOnly = true)
	public Long findAllLikeCount(TercerosEstablecimiento ab6339s00, Boolean startsWith) {
		StringBuilder query = new StringBuilder(
				"SELECT COUNT(1) FROM AB6339S00 t1 ,AB6301S00 t2, DATOS_TERCERO t3, DATOS_DIRECCIONES t4, AB61.AB6106T00 t5, TIPOS_DOCUMENTO t6,SEXO t7, TIPO_DIRECCION t8 ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(ab6339s00, startsWith);
		StringBuilder where = new StringBuilder(
				" WHERE 1=1  AND t4.ID_TIPO_DIRECCION = t8.ID_TIPO_DIRECCION AND t3.ID_TIPO_DOCUMENTO=t6.ID_TIPO_DOCUMENTO(+) AND t3.ID_SEXO = t7.ID_SEXO(+) AND t1.ID_TIPO_TERCERO = t5.ID_TIPO_TERCERO AND t1.ID_TERCERO=t4.ID_TERCERO AND t1.id_tercero = t3.id_tercero AND t1.ID_ESTABLECIMIENTO= t2.ID_ESTABLECIMIENTO(+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		List<?> params = (List<?>) mapaWhere.get("params");

		return this.jdbcTemplate.queryForObject(query.toString(), Long.class, params.toArray());
	}

	/**
	 * Reorder the data list of Ab6339s00 selected for rup_table
	 *
	 * @param ab6339s00
	 *            Ab6339s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @param startsWith
	 *            Boolean
	 * @return List<TableRowDto<Ab6339s00>>
	 */
	@Override
	public List<TableRowDto<TercerosEstablecimiento>> reorderSelection(TercerosEstablecimiento ab6339s00,
			JQGridRequestDto jqGridRequestDto, Boolean startsWith) {
		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_TERCERO IDTERCEROSESTAB,t1.FECHA_REGISTRO FECHAREGISTRO,t1.USUARIO_REGISTRO USUARIOREGISTRO,t1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION,t1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION, t1.BAJA BAJATERCERO, t2.ID_ESTABLECIMIENTO AB6301S00IDESTABLECIMIENTO,t2.IDENTIFICADOR_ESTABLECIMIENTO AB6301S00IDENTIFICADORESTABLEC,t2.DESC_NOMBRE AB6301S00DESCNOMBRE,t2.VISIBLEWEB AB6301S00VISIBLEWEB,t2.TEMPORADA AB6301S00TEMPORADA,t2.URLWEB AB6301S00URLWEB,t2.ID_DEFECTOS AB6301S00IDDEFECTOS,t2.NUM_UNIDADES_ALOJAMIENTO AB6301S00NUMUNIDADESALOJ,t2.OBSERVACIONES AB6301S00OBSERVACIONES,t2.FECHA_APERTURA AB6301S00FECHAAPERTURA,t2.FECHA_BAJA AB6301S00FECHABAJA,t2.FECHA_INICIERRETEMP AB6301S00FECHAINICIERRETEMP,t2.FECHA_FINCIERRETEMP AB6301S00FECHAFINCIERRETEMP,t2.FECHA_VCTO_CIERRE AB6301S00FECHAVCTOCIERRE,t2.FECHA_ULT_NOTIFICACION AB6301S00FECHAULTNOTIFICACION,t2.FECHA_ULT_INSPECCION AB6301S00FECHAULTINSPECCION,t2.FECHA_PRO_INSPECCION AB6301S00FECHAPROINSPECCION,t2.FECHA_ULT_ACTUALIZACION AB6301S00FECHAULTACTUALIZACION,t2.FECHA_CLAUSURA AB6301S00FECHACLAUSURA,t2.FECHA_ULT_REFORMA AB6301S00FECHAULTREFORMA,t2.ELIMINADO AB6301S00ELIMINADO,t2.EXPEDIENTEB29 AB6301S00EXPEDIENTEB29,t2.ID_PORTAL_S41 AB6301S00IDPORTALS41,t2.URL_PORTAL_S41 AB6301S00URLPORTALS41,t2.FECHA_CONTROL_S41 AB6301S00FECHACONTROLS41,t2.NUM_INSTALACION_ANTERIOR AB6301S00NUMINSTALACIONANT,t2.FECHA_INSCRIPCION AB6301S00FECHAINSCRIPCION,t2.NUM_INSTALACION_WZ AB6301S00NUMINSTALACIONWZ,t2.OBSERVACIONES2 AB6301S00OBSERVACIONES2,t2.NOTAS_MIGRACION AB6301S00NOTASMIGRACION,t2.AGRUPACION AB6301S00AGRUPACION,t2.REF_CATASTRAL AB6301S00REFCATASTRAL,t2.OBS_SEGRESPCIVIL AB6301S00OBSSEGRESPCIVIL,t2.FECHA_REGISTRO AB6301S00FECHAREGISTRO,t2.USUARIO_REGISTRO AB6301S00USUARIOREGISTRO,t2.FECHA_ULTMODIFICACION AB6301S00FECHAULTMODIFICACION,t2.USUARIO_ULTMODIFICACION AB6301S00USUARIOULTMODIF,t2.TELEFONO TELEFONO, T2.EMAIL CORREOELECTRONICO, t2.ID_EXPEDIENTE IDEXPEDIENTE, t2.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, t2.TIPO_REGISTRO, t2.IDESTAB_SOLIC IDESTABSOLIC,t2.ID_RECURSO AB6301S00IDRECURSO,t2.ID_TIPO_ESTABLECIMIENTO AB6301S00IDTIPOESTABLECIMIENTO,t2.ID_GRUPO AB6301S00IDGRUPO,t2.ID_CATEGORIAS AB6301S00IDCATEGORIAS,t2.ID_ESPECIALIDAD AB6301S00IDESPECIALIDAD,t2.ID_MODALIDAD AB6301S00IDMODALIDAD, t3.ID_TERCERO AB6339S00IDTERCERO, t3.DOCUMENTO NIFINTERESADO, t3.NOMBRE NOMBREINTERESADO, t3.APELLIDO1 APELLIDO1, t3.APELLIDO2 APELLIDO2, t3.TELEFONO TELEFONOINTERESADO, t3.EMAIL EMAILINTERESADO, t4.ID_DIRECCION, t4.DIRECCION, t4.NUMERO, t4.ESCALERA, t4.PISO, t4.LETRA, t4.CODIGO_POSTAL, t4.ID_PAIS IDPAIS, t4.ID_PROVINCIA, t4.ID_MUNICIPIO, t4.ID_LOCALIDAD, T4.DESCRIPCION_PROVINCIA DESCRIPCIONPROVINCIAEXTR, T4.DESCRIPCION_CIUDAD DESCRIPCIONCIUDADEXTR, t5.ID_TIPO_TERCERO, t5.DESCRIPCION_CASTELLANO, t5.DESCRIPCION_EUSKERA, t5.FECHA_REGISTRO, t5.USUARIO_REGISTRO, t5.ROLE, t6.ID_TIPO_DOCUMENTO,t6.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_TIPODOC,t6.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_TIPODOC,t6.FECHA_REGISTRO FECHA_REGISTRO_TIPODOC,t6.USUARIO_REGISTRO USUARIO_REGISTRO_TIPODOC, t7.ID_SEXO, t7.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_SEX,t7.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_SEX,t7.FECHA_REGISTRO FECHA_REGISTRO_SEX,t7.USUARIO_REGISTRO USUARIO_REGISTRO_SEX, t8.ID_TIPO_DIRECCION ID_TIPO_DIRECCION_DIR, t8.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_DIR, t8.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_DIR, t8.FECHA_REGISTRO FECHA_REGISTRO_DIR, t8.USUARIO_REGISTRO USUARIO_REGISTRO_DIR ");
		query.append(
				"FROM AB6339S00 t1 ,AB6301S00 t2, DATOS_TERCERO t3, DATOS_DIRECCIONES t4, AB61.AB6106T00 t5, TIPOS_DOCUMENTO t6,SEXO t7, TIPO_DIRECCION t8 ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(ab6339s00, startsWith);
		StringBuilder where = new StringBuilder(
				" WHERE 1=1 AND t1.BAJA IN(0) AND t4.ID_TIPO_DIRECCION = t8.ID_TIPO_DIRECCION AND t3.ID_TIPO_DOCUMENTO=t6.ID_TIPO_DOCUMENTO(+) AND t3.ID_SEXO = t7.ID_SEXO(+) AND t1.ID_TIPO_TERCERO = t5.ID_TIPO_TERCERO AND t1.ID_TERCERO=t4.ID_TERCERO AND t1.id_tercero = t3.id_tercero AND t1.ID_ESTABLECIMIENTO= t2.ID_ESTABLECIMIENTO(+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		// Parámetros de filtrado
		@SuppressWarnings("unchecked")
		List<Object> filterParamList = (List<Object>) mapaWhere.get("params");

		// SQL para la reordenación
		StringBuilder sbReorderSelectionSQL = JQGridManager.getReorderQuery(query, jqGridRequestDto,
				TercerosEstablecimiento.class, filterParamList, "ID_TERCERO");

		return this.jdbcTemplate.query(sbReorderSelectionSQL.toString(),
				new RowNumResultSetExtractor<TercerosEstablecimiento>(this.rwMapPK, jqGridRequestDto),
				filterParamList.toArray());
	}

	/**
	 * Search method for rup_table
	 *
	 * @param filterParams
	 *            Ab6339s00
	 * @param searchParams
	 *            Ab6339s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @param startsWith
	 *            Boolean
	 * @return List<TableRowDto<Ab6339s00>>
	 */
	@Override
	public List<TableRowDto<TercerosEstablecimiento>> search(TercerosEstablecimiento filterParams,
			TercerosEstablecimiento searchParams, JQGridRequestDto jqGridRequestDto, Boolean startsWith) {
		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT t1.ID_TERCERO IDTERCEROSESTAB,t1.FECHA_REGISTRO FECHAREGISTRO,t1.USUARIO_REGISTRO USUARIOREGISTRO,t1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION,t1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION,t2.ID_ESTABLECIMIENTO AB6301S00IDESTABLECIMIENTO,t2.IDENTIFICADOR_ESTABLECIMIENTO AB6301S00IDENTIFICADORESTABLEC,t2.DESC_NOMBRE AB6301S00DESCNOMBRE,t2.VISIBLEWEB AB6301S00VISIBLEWEB,t2.TEMPORADA AB6301S00TEMPORADA,t2.URLWEB AB6301S00URLWEB,t2.ID_DEFECTOS AB6301S00IDDEFECTOS,t2.NUM_UNIDADES_ALOJAMIENTO AB6301S00NUMUNIDADESALOJ,t2.OBSERVACIONES AB6301S00OBSERVACIONES,t2.FECHA_APERTURA AB6301S00FECHAAPERTURA,t2.FECHA_BAJA AB6301S00FECHABAJA,t2.FECHA_INICIERRETEMP AB6301S00FECHAINICIERRETEMP,t2.FECHA_FINCIERRETEMP AB6301S00FECHAFINCIERRETEMP,t2.FECHA_VCTO_CIERRE AB6301S00FECHAVCTOCIERRE,t2.FECHA_ULT_NOTIFICACION AB6301S00FECHAULTNOTIFICACION,t2.FECHA_ULT_INSPECCION AB6301S00FECHAULTINSPECCION,t2.FECHA_PRO_INSPECCION AB6301S00FECHAPROINSPECCION,t2.FECHA_ULT_ACTUALIZACION AB6301S00FECHAULTACTUALIZACION,t2.FECHA_CLAUSURA AB6301S00FECHACLAUSURA,t2.FECHA_ULT_REFORMA AB6301S00FECHAULTREFORMA,t2.ELIMINADO AB6301S00ELIMINADO,t2.EXPEDIENTEB29 AB6301S00EXPEDIENTEB29,t2.ID_PORTAL_S41 AB6301S00IDPORTALS41,t2.URL_PORTAL_S41 AB6301S00URLPORTALS41,t2.FECHA_CONTROL_S41 AB6301S00FECHACONTROLS41,t2.NUM_INSTALACION_ANTERIOR AB6301S00NUMINSTALACIONANT,t2.FECHA_INSCRIPCION AB6301S00FECHAINSCRIPCION,t2.NUM_INSTALACION_WZ AB6301S00NUMINSTALACIONWZ,t2.OBSERVACIONES2 AB6301S00OBSERVACIONES2,t2.NOTAS_MIGRACION AB6301S00NOTASMIGRACION,t2.AGRUPACION AB6301S00AGRUPACION,t2.REF_CATASTRAL AB6301S00REFCATASTRAL,t2.OBS_SEGRESPCIVIL AB6301S00OBSSEGRESPCIVIL,t2.FECHA_REGISTRO AB6301S00FECHAREGISTRO,t2.USUARIO_REGISTRO AB6301S00USUARIOREGISTRO,t2.FECHA_ULTMODIFICACION AB6301S00FECHAULTMODIFICACION,t2.USUARIO_ULTMODIFICACION AB6301S00USUARIOULTMODIF,t2.ID_RECURSO AB6301S00IDRECURSO,t2.ID_TIPO_ESTABLECIMIENTO AB6301S00IDTIPOESTABLECIMIENTO,t2.ID_GRUPO AB6301S00IDGRUPO,t2.ID_CATEGORIAS AB6301S00IDCATEGORIAS,t2.ID_ESPECIALIDAD AB6301S00IDESPECIALIDAD,t2.ID_MODALIDAD AB6301S00IDMODALIDAD ");
		// FROM
		query.append("FROM AB6339S00 t1 ,AB6301S00 t2 ");
		// TABLAS_ALIAS
		List<String> from_alias = new ArrayList<String>();
		from_alias.add(" t1 ");
		from_alias.add(" t2 ");

		// FILTRADO
		Map<String, ?> mapaWhereFilter = this.getWhereLikeMap(filterParams, startsWith);
		StringBuilder where = new StringBuilder(" WHERE 1=1 AND t1.ID_ESTABLECIMIENTO= t2.ID_ESTABLECIMIENTO(+) ");
		where.append(mapaWhereFilter.get("query"));
		query.append(where);
		// Filter params
		@SuppressWarnings("unchecked")
		List<Object> filterParamList = (List<Object>) mapaWhereFilter.get("params");

		// BUSQUEDA
		Map<String, Object> mapaWhereSearch = this.getWhereLikeMap(searchParams, startsWith);
		String searchSQL = ((StringBuilder) mapaWhereSearch.get("query")).toString();
		// Search params
		@SuppressWarnings("unchecked")
		List<Object> searchParamList = (List<Object>) mapaWhereSearch.get("params");

		// SQL
		StringBuilder sbReorderSelectionSQL = JQGridManager.getSearchQuery(query, jqGridRequestDto,
				TercerosEstablecimiento.class, filterParamList, searchSQL, searchParamList, from_alias, "ID_TERCERO");

		return this.jdbcTemplate.query(sbReorderSelectionSQL.toString(),
				new RowNumResultSetExtractor<TercerosEstablecimiento>(this.rwMapPK, jqGridRequestDto),
				filterParamList.toArray());
	}

	/**
	 * Remove multiple method for rup_table
	 *
	 * @param filterab6339s00
	 *            Ab6339s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @param startsWith
	 *            Boolean
	 */
	@Override
	public void removeMultiple(TercerosEstablecimiento filterab6339s00, JQGridRequestDto jqGridRequestDto,
			Boolean startsWith) {
		// SELECT
		/** TODO: select por clave */
		StringBuilder query = new StringBuilder(
				"SELECT t1.ID_TERCERO IDTERCEROSESTAB,t1.FECHA_REGISTRO FECHAREGISTRO,t1.USUARIO_REGISTRO USUARIOREGISTRO,t1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION,t1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION,t2.ID_ESTABLECIMIENTO AB6301S00IDESTABLECIMIENTO,t2.IDENTIFICADOR_ESTABLECIMIENTO AB6301S00IDENTIFICADORESTABLEC,t2.DESC_NOMBRE AB6301S00DESCNOMBRE,t2.VISIBLEWEB AB6301S00VISIBLEWEB,t2.TEMPORADA AB6301S00TEMPORADA,t2.URLWEB AB6301S00URLWEB,t2.ID_DEFECTOS AB6301S00IDDEFECTOS,t2.NUM_UNIDADES_ALOJAMIENTO AB6301S00NUMUNIDADESALOJ,t2.OBSERVACIONES AB6301S00OBSERVACIONES,t2.FECHA_APERTURA AB6301S00FECHAAPERTURA,t2.FECHA_BAJA AB6301S00FECHABAJA,t2.FECHA_INICIERRETEMP AB6301S00FECHAINICIERRETEMP,t2.FECHA_FINCIERRETEMP AB6301S00FECHAFINCIERRETEMP,t2.FECHA_VCTO_CIERRE AB6301S00FECHAVCTOCIERRE,t2.FECHA_ULT_NOTIFICACION AB6301S00FECHAULTNOTIFICACION,t2.FECHA_ULT_INSPECCION AB6301S00FECHAULTINSPECCION,t2.FECHA_PRO_INSPECCION AB6301S00FECHAPROINSPECCION,t2.FECHA_ULT_ACTUALIZACION AB6301S00FECHAULTACTUALIZACION,t2.FECHA_CLAUSURA AB6301S00FECHACLAUSURA,t2.FECHA_ULT_REFORMA AB6301S00FECHAULTREFORMA,t2.ELIMINADO AB6301S00ELIMINADO,t2.EXPEDIENTEB29 AB6301S00EXPEDIENTEB29,t2.ID_PORTAL_S41 AB6301S00IDPORTALS41,t2.URL_PORTAL_S41 AB6301S00URLPORTALS41,t2.FECHA_CONTROL_S41 AB6301S00FECHACONTROLS41,t2.NUM_INSTALACION_ANTERIOR AB6301S00NUMINSTALACIONANT,t2.FECHA_INSCRIPCION AB6301S00FECHAINSCRIPCION,t2.NUM_INSTALACION_WZ AB6301S00NUMINSTALACIONWZ,t2.OBSERVACIONES2 AB6301S00OBSERVACIONES2,t2.NOTAS_MIGRACION AB6301S00NOTASMIGRACION,t2.AGRUPACION AB6301S00AGRUPACION,t2.REF_CATASTRAL AB6301S00REFCATASTRAL,t2.OBS_SEGRESPCIVIL AB6301S00OBSSEGRESPCIVIL,t2.FECHA_REGISTRO AB6301S00FECHAREGISTRO,t2.USUARIO_REGISTRO AB6301S00USUARIOREGISTRO,t2.FECHA_ULTMODIFICACION AB6301S00FECHAULTMODIFICACION,t2.USUARIO_ULTMODIFICACION AB6301S00USUARIOULTMODIF,t2.ID_RECURSO AB6301S00IDRECURSO,t2.ID_TIPO_ESTABLECIMIENTO AB6301S00IDTIPOESTABLECIMIENTO,t2.ID_GRUPO AB6301S00IDGRUPO,t2.ID_CATEGORIAS AB6301S00IDCATEGORIAS,t2.ID_ESPECIALIDAD AB6301S00IDESPECIALIDAD,t2.ID_MODALIDAD AB6301S00IDMODALIDAD ");
		// FROM
		query.append("FROM AB6339S00 t1 ,AB6301S00 t2 ");

		// WHERE
		Map<String, Object> mapaWhere = this.getWhereLikeMap(filterab6339s00, startsWith);
		StringBuilder where = new StringBuilder(" WHERE 1=1 ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		@SuppressWarnings("unchecked")
		List<Object> params = (List<Object>) mapaWhere.get("params");

		StringBuilder sbRemoveMultipleSQL = JQGridManager.getRemoveMultipleQuery(jqGridRequestDto,
				TercerosEstablecimiento.class, query, params, "ID_TERCERO");
		this.jdbcTemplate.update(sbRemoveMultipleSQL.toString(), params.toArray());
	}

	/**
	 * Filter in the hierarchical Ab6339s00 table.
	 *
	 * @param filterAb6339s00
	 *            Ab6339s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @return List<JerarquiaDto<Ab6339s00>>
	 */
	@Override
	public List<JerarquiaDto<TercerosEstablecimiento>> findAllLikeJerarquia(TercerosEstablecimiento filterAb6339s00,
			JQGridRequestDto jqGridRequestDto) {
		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT t1.ID_TERCERO IDTERCEROSESTAB,t1.FECHA_REGISTRO FECHAREGISTRO,t1.USUARIO_REGISTRO USUARIOREGISTRO,t1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION,t1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION,t2.ID_ESTABLECIMIENTO AB6301S00IDESTABLECIMIENTO,t2.IDENTIFICADOR_ESTABLECIMIENTO AB6301S00IDENTIFICADORESTABLEC,t2.DESC_NOMBRE AB6301S00DESCNOMBRE,t2.VISIBLEWEB AB6301S00VISIBLEWEB,t2.TEMPORADA AB6301S00TEMPORADA,t2.URLWEB AB6301S00URLWEB,t2.ID_DEFECTOS AB6301S00IDDEFECTOS,t2.NUM_UNIDADES_ALOJAMIENTO AB6301S00NUMUNIDADESALOJ,t2.OBSERVACIONES AB6301S00OBSERVACIONES,t2.FECHA_APERTURA AB6301S00FECHAAPERTURA,t2.FECHA_BAJA AB6301S00FECHABAJA,t2.FECHA_INICIERRETEMP AB6301S00FECHAINICIERRETEMP,t2.FECHA_FINCIERRETEMP AB6301S00FECHAFINCIERRETEMP,t2.FECHA_VCTO_CIERRE AB6301S00FECHAVCTOCIERRE,t2.FECHA_ULT_NOTIFICACION AB6301S00FECHAULTNOTIFICACION,t2.FECHA_ULT_INSPECCION AB6301S00FECHAULTINSPECCION,t2.FECHA_PRO_INSPECCION AB6301S00FECHAPROINSPECCION,t2.FECHA_ULT_ACTUALIZACION AB6301S00FECHAULTACTUALIZACION,t2.FECHA_CLAUSURA AB6301S00FECHACLAUSURA,t2.FECHA_ULT_REFORMA AB6301S00FECHAULTREFORMA,t2.ELIMINADO AB6301S00ELIMINADO,t2.EXPEDIENTEB29 AB6301S00EXPEDIENTEB29,t2.ID_PORTAL_S41 AB6301S00IDPORTALS41,t2.URL_PORTAL_S41 AB6301S00URLPORTALS41,t2.FECHA_CONTROL_S41 AB6301S00FECHACONTROLS41,t2.NUM_INSTALACION_ANTERIOR AB6301S00NUMINSTALACIONANT,t2.FECHA_INSCRIPCION AB6301S00FECHAINSCRIPCION,t2.NUM_INSTALACION_WZ AB6301S00NUMINSTALACIONWZ,t2.OBSERVACIONES2 AB6301S00OBSERVACIONES2,t2.NOTAS_MIGRACION AB6301S00NOTASMIGRACION,t2.AGRUPACION AB6301S00AGRUPACION,t2.REF_CATASTRAL AB6301S00REFCATASTRAL,t2.OBS_SEGRESPCIVIL AB6301S00OBSSEGRESPCIVIL,t2.FECHA_REGISTRO AB6301S00FECHAREGISTRO,t2.USUARIO_REGISTRO AB6301S00USUARIOREGISTRO,t2.FECHA_ULTMODIFICACION AB6301S00FECHAULTMODIFICACION,t2.USUARIO_ULTMODIFICACION AB6301S00USUARIOULTMODIF,t2.ID_RECURSO AB6301S00IDRECURSO,t2.ID_TIPO_ESTABLECIMIENTO AB6301S00IDTIPOESTABLECIMIENTO,t2.ID_GRUPO AB6301S00IDGRUPO,t2.ID_CATEGORIAS AB6301S00IDCATEGORIAS,t2.ID_ESPECIALIDAD AB6301S00IDESPECIALIDAD,t2.ID_MODALIDAD AB6301S00IDMODALIDAD ");
		// FROM
		// StringBuilder from = new StringBuilder("FROM AB6339S00 t1 ,AB6301S00
		// t2 ");
		List<String> from = new ArrayList<String>();
		from.add("AB6339S00");
		from.add("AB6301S00");
		// TABLAS_ALIAS
		List<String> from_alias = new ArrayList<String>();
		from_alias.add(" t1 ");
		from_alias.add(" t2 ");

		// JOINS TABLAS
		/*
		 * Ejemplo de como indicar joins entre las tablas de la query
		 */
		/*
		 * StringBuilder joins = new StringBuilder("");
		 * joins.append("AND T1.ID=T2.ID_T1");
		 */

		// CONDICIONES (negocio)
		/*
		 * Ejemplo de como incluir condiciones de negocio en la consulta de la
		 * jerarquía
		 */
		/*
		 * StringBuilder businessFilters = new StringBuilder(); List<Object>
		 * businessParams = new ArrayList<Object>();
		 * businessFilters.append("   AND t1.EJIE = ?  ");
		 * businessParams.add("1");
		 */

		// FILTRO
		Map<String, ?> mapaWhere = this.getWhereLikeMap(filterAb6339s00, false);

		// JERARQUIA
		// Especificar la columna padre correspondiente en lugar de la generada
		// por defecto (ID_PADRE)
		query = JQGridManagerJerarquia.getQuery(jqGridRequestDto, query, mapaWhere, "ID_TERCERO", "ID_PADRE", "NOMBRE",
				from, from_alias);

		/*
		 * Ejemplo de llamada en caso de indicar joins entre tablas y
		 * condiciones de negocio
		 */
		// query = JQGridManagerJerarquia.getQuery(jqGridRequestDto, query,
		// mapaWhere, "ID", "ID_PADRE", "NOMBRE", from, from_alias, joins,
		// businessFilters, businessParams);

		// PAGINACION
		if (jqGridRequestDto != null) {
			query = JQGridManagerJerarquia.getPaginationQuery(jqGridRequestDto, query,
					TercerosEstablecimientoDaoImpl.ORDER_BY_WHITE_LIST);
		}

		List<?> params = (List<?>) mapaWhere.get("params");
		return this.jdbcTemplate.query(query.toString(), this.rwMapJerarquia, params.toArray());
	}

	/**
	 * Count rows in hierarchy
	 *
	 * @param filterAb6339s00
	 *            Ab6339s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @return Long
	 */
	@Override
	public Long findAllLikeCountJerarquia(TercerosEstablecimiento filterAb6339s00, JQGridRequestDto jqGridRequestDto) {
		// FROM
		// StringBuilder from = new StringBuilder("FROM AB6339S00 t1 ,AB6301S00
		// t2 ");
		List<String> from = new ArrayList<String>();
		from.add("AB6339S00");
		from.add("AB6301S00");

		// TABLAS_ALIAS
		List<String> from_alias = new ArrayList<String>();
		from_alias.add(" t1 ");
		from_alias.add(" t2 ");

		// JOINS TABLAS
		/*
		 * Ejemplo de como indicar joins entre las tablas de la query
		 */
		/*
		 * StringBuilder joins = new StringBuilder("");
		 * joins.append("AND T1.ID=T2.ID_T1");
		 */

		// CONDICIONES (negocio)
		/*
		 * Ejemplo de como incluir condiciones de negocio en la consulta de la
		 * jerarquía
		 */
		/*
		 * StringBuilder businessFilters = new StringBuilder(); List<Object>
		 * businessParams = new ArrayList<Object>();
		 * businessFilters.append("   AND t1.EJIE = ?  ");
		 * businessParams.add("1");
		 */

		// FILTRO
		Map<String, ?> mapaWhere = this.getWhereLikeMap(filterAb6339s00, false);

		// JERARQUIA
		// Especificar la columna padre correspondiente en lugar de la generada
		// por defecto (ID_PADRE)
		StringBuilder query = JQGridManagerJerarquia.getQueryCount(jqGridRequestDto, mapaWhere, "ID_TERCERO",
				"ID_PADRE", from, from_alias);

		/*
		 * Ejemplo de llamada en caso de indicar joins entre tablas y
		 * condiciones de negocio
		 */
		// StringBuilder query =
		// JQGridManagerJerarquia.getQueryCount(jqGridRequestDto, mapaWhere,
		// "ID", "ID_PADRE", from, from_alias, joins, businessFilters,
		// businessParams);

		List<?> params = (List<?>) mapaWhere.get("params");
		return this.jdbcTemplate.queryForObject(query.toString(), Long.class, params.toArray());
	}

	/**
	 * Find dependent hierarchical rows
	 *
	 * @param filterAb6339s00
	 *            Ab6339s00
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @return List<TableRowDto<Ab6339s00>>
	 */
	@Override
	public List<TableRowDto<TercerosEstablecimiento>> findAllChild(TercerosEstablecimiento filterAb6339s00,
			JQGridRequestDto jqGridRequestDto) {

		// FROM
		// StringBuilder from = new StringBuilder("FROM AB6339S00 t1 ,AB6301S00
		// t2 ");
		List<String> from = new ArrayList<String>();
		from.add("AB6339S00");
		from.add("AB6301S00");

		// TABLAS_ALIAS
		List<String> from_alias = new ArrayList<String>();
		from_alias.add(" t1 ");
		from_alias.add(" t2 ");

		// JOINS TABLAS
		/*
		 * Ejemplo de como indicar joins entre las tablas de la query
		 */
		/*
		 * StringBuilder joins = new StringBuilder("");
		 * joins.append("AND T1.ID=T2.ID_T1");
		 */

		// CONDICIONES (negocio)
		/*
		 * Ejemplo de como incluir condiciones de negocio en la consulta de la
		 * jerarquía
		 */
		/*
		 * StringBuilder businessFilters = new StringBuilder(); List<Object>
		 * businessParams = new ArrayList<Object>();
		 * businessFilters.append("   AND t1.EJIE = ?  ");
		 * businessParams.add("1");
		 */

		// FILTRO
		Map<String, ?> mapaWhere = this.getWhereLikeMap(filterAb6339s00, false);

		// MULTISELECCION
		// Especificar la columna padre correspondiente en lugar de la generada
		// por defecto (ID_PADRE)
		StringBuilder query = JQGridManagerJerarquia.getQueryChildren(jqGridRequestDto, mapaWhere, "ID_TERCERO",
				"ID_PADRE", from, from_alias);

		/*
		 * Ejemplo de llamada en caso de indicar joins entre tablas y
		 * condiciones de negocio
		 */
		// StringBuilder query =
		// JQGridManagerJerarquia.getQueryChildren(jqGridRequestDto, mapaWhere,
		// "ID", "ID_PADRE", from, from_alias, joins, businessFilters,
		// businessParams);

		List<?> params = (List<?>) mapaWhere.get("params");

		return this.jdbcTemplate.query(query.toString(),
				new RowNumResultSetExtractor<TercerosEstablecimiento>(this.rwMapPK, "ID_TERCERO"), params.toArray());
	}

	/*
	 * MÉTODOS PRIVADOS
	 */

	/**
	 * Returns a map with the needed value to create the conditions to filter by
	 * the Ab6339s00 entity
	 *
	 * @param ab6339s00
	 *            Ab6339s00 Bean with the criteria values to filter by.
	 * @return Map created with two keys key query stores the sql query syntax
	 *         key params stores the parameter values to be used in the
	 *         condition sentence.
	 */
	// CHECKSTYLE:OFF CyclomaticComplexity - Generación de código de UDA
	private Map<String, ?> getWhereMap(TercerosEstablecimiento ab6339s00) {

		StringBuilder where = new StringBuilder(TercerosEstablecimientoDaoImpl.STRING_BUILDER_INIT);
		List<Object> params = new ArrayList<Object>();

		if (ab6339s00 != null && ab6339s00.getIdTercerosEstab() != null) {
			where.append(" AND t1.ID_TERCERO = ?");
			params.add(ab6339s00.getIdTercerosEstab());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getIdEstablecimiento() != null) {
			where.append(" AND t2.ID_ESTABLECIMIENTO = ?");
			params.add(ab6339s00.getEstablecimiento().getIdEstablecimiento());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getRecurso() != null
				&& ab6339s00.getEstablecimiento().getRecurso().getIdRecurso() != null) {
			where.append(" AND t2.ID_RECURSO = ?");
			params.add(ab6339s00.getEstablecimiento().getRecurso().getIdRecurso());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getTipoEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getTipoEstablecimiento().getIdTipoEstablecimiento() != null) {
			where.append(" AND t2.ID_TIPO_ESTABLECIMIENTO = ?");
			params.add(ab6339s00.getEstablecimiento().getTipoEstablecimiento().getIdTipoEstablecimiento());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getGrupo() != null
				&& ab6339s00.getEstablecimiento().getGrupo().getIdGrupo() != null) {
			where.append(" AND t2.ID_GRUPO = ?");
			params.add(ab6339s00.getEstablecimiento().getGrupo().getIdGrupo());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getCategoria() != null
				&& ab6339s00.getEstablecimiento().getCategoria().getIdCategorias() != null) {
			where.append(" AND t2.ID_CATEGORIAS = ?");
			params.add(ab6339s00.getEstablecimiento().getCategoria().getIdCategorias());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getEspecialidad() != null
				&& ab6339s00.getEstablecimiento().getEspecialidad().getIdEspecialidad() != null) {
			where.append(" AND t2.ID_ESPECIALIDAD = ?");
			params.add(ab6339s00.getEstablecimiento().getEspecialidad().getIdEspecialidad());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getModalidad() != null
				&& ab6339s00.getEstablecimiento().getModalidad().getIdModalidad() != null) {
			where.append(" AND t2.ID_MODALIDAD = ?");
			params.add(ab6339s00.getEstablecimiento().getModalidad().getIdModalidad());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getIdentificadorEstablecimiento() != null) {
			where.append(" AND t2.IDENTIFICADOR_ESTABLECIMIENTO = ?");
			params.add(ab6339s00.getEstablecimiento().getIdentificadorEstablecimiento());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getDescrNombre() != null) {
			where.append(" AND t2.DESC_NOMBRE = ?");
			params.add(ab6339s00.getEstablecimiento().getDescrNombre());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getVisibleweb() != null) {
			where.append(" AND t2.VISIBLEWEB = ?");
			params.add(ab6339s00.getEstablecimiento().getVisibleweb());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getTemporada() != null) {
			where.append(" AND t2.TEMPORADA = ?");
			params.add(ab6339s00.getEstablecimiento().getTemporada());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getUrlweb() != null) {
			where.append(" AND t2.URLWEB = ?");
			params.add(ab6339s00.getEstablecimiento().getUrlweb());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getIdDefectos() != null) {
			where.append(" AND t2.ID_DEFECTOS = ?");
			params.add(ab6339s00.getEstablecimiento().getIdDefectos());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getNumUnidadesAlojamiento() != null) {
			where.append(" AND t2.NUM_UNIDADES_ALOJAMIENTO = ?");
			params.add(ab6339s00.getEstablecimiento().getNumUnidadesAlojamiento());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getObservaciones() != null) {
			where.append(" AND t2.OBSERVACIONES = ?");
			params.add(ab6339s00.getEstablecimiento().getObservaciones());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaApertura() != null) {
			where.append(" AND t2.FECHA_APERTURA = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaApertura());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaBaja() != null) {
			where.append(" AND t2.FECHA_BAJA = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaBaja());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaInicierretemp() != null) {
			where.append(" AND t2.FECHA_INICIERRETEMP = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaInicierretemp());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaFincierretemp() != null) {
			where.append(" AND t2.FECHA_FINCIERRETEMP = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaFincierretemp());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaVctoCierre() != null) {
			where.append(" AND t2.FECHA_VCTO_CIERRE = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaVctoCierre());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaUltNotificacion() != null) {
			where.append(" AND t2.FECHA_ULT_NOTIFICACION = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaUltNotificacion());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaUltInspeccion() != null) {
			where.append(" AND t2.FECHA_ULT_INSPECCION = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaUltInspeccion());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaProInspeccion() != null) {
			where.append(" AND t2.FECHA_PRO_INSPECCION = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaProInspeccion());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaUltActualizacion() != null) {
			where.append(" AND t2.FECHA_ULT_ACTUALIZACION = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaUltActualizacion());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaClausura() != null) {
			where.append(" AND t2.FECHA_CLAUSURA = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaClausura());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaUltReforma() != null) {
			where.append(" AND t2.FECHA_ULT_REFORMA = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaUltReforma());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getEliminado() != null) {
			where.append(" AND t2.ELIMINADO = ?");
			params.add(ab6339s00.getEstablecimiento().getEliminado());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getExpedienteb29() != null) {
			where.append(" AND t2.EXPEDIENTEB29 = ?");
			params.add(ab6339s00.getEstablecimiento().getExpedienteb29());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getIdPortalS41() != null) {
			where.append(" AND t2.ID_PORTAL_S41 = ?");
			params.add(ab6339s00.getEstablecimiento().getIdPortalS41());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getUrlPortalS41() != null) {
			where.append(" AND t2.URL_PORTAL_S41 = ?");
			params.add(ab6339s00.getEstablecimiento().getUrlPortalS41());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaControlS41() != null) {
			where.append(" AND t2.FECHA_CONTROL_S41 = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaControlS41());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getNumInstalacionAnterior() != null) {
			where.append(" AND t2.NUM_INSTALACION_ANTERIOR = ?");
			params.add(ab6339s00.getEstablecimiento().getNumInstalacionAnterior());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaInscripcion() != null) {
			where.append(" AND t2.FECHA_INSCRIPCION = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaInscripcion());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getNumInstalacionWz() != null) {
			where.append(" AND t2.NUM_INSTALACION_WZ = ?");
			params.add(ab6339s00.getEstablecimiento().getNumInstalacionWz());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getObservaciones2() != null) {
			where.append(" AND t2.OBSERVACIONES2 = ?");
			params.add(ab6339s00.getEstablecimiento().getObservaciones2());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getNotasMigracion() != null) {
			where.append(" AND t2.NOTAS_MIGRACION = ?");
			params.add(ab6339s00.getEstablecimiento().getNotasMigracion());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getAgrupacion() != null) {
			where.append(" AND t2.AGRUPACION = ?");
			params.add(ab6339s00.getEstablecimiento().getAgrupacion());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getRefCatastral() != null) {
			where.append(" AND t2.REF_CATASTRAL = ?");
			params.add(ab6339s00.getEstablecimiento().getRefCatastral());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getObsSegrespcivil() != null) {
			where.append(" AND t2.OBS_SEGRESPCIVIL = ?");
			params.add(ab6339s00.getEstablecimiento().getObsSegrespcivil());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaRegistro() != null) {
			where.append(" AND t2.FECHA_REGISTRO = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaRegistro());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getUsuarioRegistro() != null) {
			where.append(" AND t2.USUARIO_REGISTRO = ?");
			params.add(ab6339s00.getEstablecimiento().getUsuarioRegistro());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaUltmodificacion() != null) {
			where.append(" AND t2.FECHA_ULTMODIFICACION = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaUltmodificacion());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getUsuarioUltmodificacion() != null) {
			where.append(" AND t2.USUARIO_ULTMODIFICACION = ?");
			params.add(ab6339s00.getEstablecimiento().getUsuarioUltmodificacion());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getEstablecimientoData() != null
				&& ab6339s00.getEstablecimiento().getEstablecimientoData().getIdEstablecimiento() != null) {
			where.append(" AND t2.ID_ESTABLECIMIENTO = ?");
			params.add(ab6339s00.getEstablecimiento().getEstablecimientoData().getIdEstablecimiento());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFranquicia() != null
				&& ab6339s00.getEstablecimiento().getFranquicia().getIdEstablecimiento() != null) {
			where.append(" AND t2.ID_ESTABLECIMIENTO = ?");
			params.add(ab6339s00.getEstablecimiento().getFranquicia().getIdEstablecimiento());
		}
		if (ab6339s00 != null && ab6339s00.getFechaRegistro() != null) {
			where.append(" AND t1.FECHA_REGISTRO = ?");
			params.add(ab6339s00.getFechaRegistro());
		}
		if (ab6339s00 != null && ab6339s00.getUsuarioRegistro() != null) {
			where.append(" AND t1.USUARIO_REGISTRO = ?");
			params.add(ab6339s00.getUsuarioRegistro());
		}
		if (ab6339s00 != null && ab6339s00.getFechaUltmodificacion() != null) {
			where.append(" AND t1.FECHA_ULTMODIFICACION = ?");
			params.add(ab6339s00.getFechaUltmodificacion());
		}
		if (ab6339s00 != null && ab6339s00.getUsuarioUltmodificacion() != null) {
			where.append(" AND t1.USUARIO_ULTMODIFICACION = ?");
			params.add(ab6339s00.getUsuarioUltmodificacion());
		}

		Map<String, Object> mapWhere = new HashMap<String, Object>();
		mapWhere.put("query", where);
		mapWhere.put("params", params);

		return mapWhere;
	}
	// CHECKSTYLE:ON CyclomaticComplexity - Generación de código de UDA

	/**
	 * Returns a map with the needed value to create the conditions to filter by
	 * the Ab6339s00 entity
	 *
	 * @param ab6339s00
	 *            Ab6339s00 Bean with the criteria values to filter by.
	 * @param startsWith
	 *            Boolean
	 * @return Map created with two keys key query stores the sql query syntax
	 *         key params stores the parameter values to be used in the
	 *         condition sentence.
	 */
	// CHECKSTYLE:OFF CyclomaticComplexity - Generación de código de UDA
	private Map<String, Object> getWhereLikeMap(TercerosEstablecimiento ab6339s00, Boolean startsWith) {

		StringBuilder where = new StringBuilder(TercerosEstablecimientoDaoImpl.STRING_BUILDER_INIT);
		List<Object> params = new ArrayList<Object>();

		if (ab6339s00 != null && ab6339s00.getIdTercerosEstab() != null) {
			where.append(" AND t1.ID_TERCERO = ?");
			params.add(ab6339s00.getIdTercerosEstab());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getIdEstablecimiento() != null) {
			where.append(" AND t2.ID_ESTABLECIMIENTO = ?");
			params.add(ab6339s00.getEstablecimiento().getIdEstablecimiento());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getRecurso() != null
				&& ab6339s00.getEstablecimiento().getRecurso().getIdRecurso() != null) {
			where.append(" AND UPPER(t2.ID_RECURSO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getRecurso().getIdRecurso().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getRecurso().getIdRecurso().toUpperCase() + "%");
			}
			where.append(" AND t2.ID_RECURSO IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getTipoEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getTipoEstablecimiento().getIdTipoEstablecimiento() != null) {
			where.append(" AND UPPER(t2.ID_TIPO_ESTABLECIMIENTO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(
						ab6339s00.getEstablecimiento().getTipoEstablecimiento().getIdTipoEstablecimiento().toUpperCase()
								+ "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getTipoEstablecimiento().getIdTipoEstablecimiento()
						.toUpperCase() + "%");
			}
			where.append(" AND t2.ID_TIPO_ESTABLECIMIENTO IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getGrupo() != null
				&& ab6339s00.getEstablecimiento().getGrupo().getIdGrupo() != null) {
			where.append(" AND UPPER(t2.ID_GRUPO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getGrupo().getIdGrupo().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getGrupo().getIdGrupo().toUpperCase() + "%");
			}
			where.append(" AND t2.ID_GRUPO IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getCategoria() != null
				&& ab6339s00.getEstablecimiento().getCategoria().getIdCategorias() != null) {
			where.append(" AND UPPER(t2.ID_CATEGORIAS) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getCategoria().getIdCategorias().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getCategoria().getIdCategorias().toUpperCase() + "%");
			}
			where.append(" AND t2.ID_CATEGORIAS IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getEspecialidad() != null
				&& ab6339s00.getEstablecimiento().getEspecialidad().getIdEspecialidad() != null) {
			where.append(" AND UPPER(t2.ID_ESPECIALIDAD) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getEspecialidad().getIdEspecialidad().toUpperCase() + "%");
			} else {
				params.add(
						"%" + ab6339s00.getEstablecimiento().getEspecialidad().getIdEspecialidad().toUpperCase() + "%");
			}
			where.append(" AND t2.ID_ESPECIALIDAD IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getModalidad() != null
				&& ab6339s00.getEstablecimiento().getModalidad().getIdModalidad() != null) {
			where.append(" AND UPPER(t2.ID_MODALIDAD) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getModalidad().getIdModalidad().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getModalidad().getIdModalidad().toUpperCase() + "%");
			}
			where.append(" AND t2.ID_MODALIDAD IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getIdentificadorEstablecimiento() != null) {
			where.append(" AND UPPER(t2.IDENTIFICADOR_ESTABLECIMIENTO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getIdentificadorEstablecimiento().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getIdentificadorEstablecimiento().toUpperCase() + "%");
			}
			where.append(" AND t2.IDENTIFICADOR_ESTABLECIMIENTO IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getDescrNombre() != null) {
			where.append(" AND UPPER(t2.DESC_NOMBRE) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getDescrNombre().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getDescrNombre().toUpperCase() + "%");
			}
			where.append(" AND t2.DESC_NOMBRE IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getVisibleweb() != null) {
			where.append(" AND UPPER(t2.VISIBLEWEB) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getVisibleweb().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getVisibleweb().toUpperCase() + "%");
			}
			where.append(" AND t2.VISIBLEWEB IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getTemporada() != null) {
			where.append(" AND UPPER(t2.TEMPORADA) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getTemporada().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getTemporada().toUpperCase() + "%");
			}
			where.append(" AND t2.TEMPORADA IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getUrlweb() != null) {
			where.append(" AND UPPER(t2.URLWEB) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getUrlweb().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getUrlweb().toUpperCase() + "%");
			}
			where.append(" AND t2.URLWEB IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getIdDefectos() != null) {
			where.append(" AND UPPER(t2.ID_DEFECTOS) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getIdDefectos().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getIdDefectos().toUpperCase() + "%");
			}
			where.append(" AND t2.ID_DEFECTOS IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getNumUnidadesAlojamiento() != null) {
			where.append(" AND t2.NUM_UNIDADES_ALOJAMIENTO = ?");
			params.add(ab6339s00.getEstablecimiento().getNumUnidadesAlojamiento());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getObservaciones() != null) {
			where.append(" AND UPPER(t2.OBSERVACIONES) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getObservaciones().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getObservaciones().toUpperCase() + "%");
			}
			where.append(" AND t2.OBSERVACIONES IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaApertura() != null) {
			where.append(" AND t2.FECHA_APERTURA = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaApertura());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaBaja() != null) {
			where.append(" AND t2.FECHA_BAJA = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaBaja());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaInicierretemp() != null) {
			where.append(" AND t2.FECHA_INICIERRETEMP = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaInicierretemp());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaFincierretemp() != null) {
			where.append(" AND t2.FECHA_FINCIERRETEMP = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaFincierretemp());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaVctoCierre() != null) {
			where.append(" AND t2.FECHA_VCTO_CIERRE = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaVctoCierre());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaUltNotificacion() != null) {
			where.append(" AND t2.FECHA_ULT_NOTIFICACION = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaUltNotificacion());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaUltInspeccion() != null) {
			where.append(" AND t2.FECHA_ULT_INSPECCION = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaUltInspeccion());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaProInspeccion() != null) {
			where.append(" AND t2.FECHA_PRO_INSPECCION = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaProInspeccion());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaUltActualizacion() != null) {
			where.append(" AND t2.FECHA_ULT_ACTUALIZACION = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaUltActualizacion());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaClausura() != null) {
			where.append(" AND t2.FECHA_CLAUSURA = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaClausura());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaUltReforma() != null) {
			where.append(" AND t2.FECHA_ULT_REFORMA = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaUltReforma());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getEliminado() != null) {
			where.append(" AND UPPER(t2.ELIMINADO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getEliminado().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getEliminado().toUpperCase() + "%");
			}
			where.append(" AND t2.ELIMINADO IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getExpedienteb29() != null) {
			where.append(" AND UPPER(t2.EXPEDIENTEB29) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getExpedienteb29().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getExpedienteb29().toUpperCase() + "%");
			}
			where.append(" AND t2.EXPEDIENTEB29 IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getIdPortalS41() != null) {
			where.append(" AND t2.ID_PORTAL_S41 = ?");
			params.add(ab6339s00.getEstablecimiento().getIdPortalS41());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getUrlPortalS41() != null) {
			where.append(" AND UPPER(t2.URL_PORTAL_S41) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getUrlPortalS41().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getUrlPortalS41().toUpperCase() + "%");
			}
			where.append(" AND t2.URL_PORTAL_S41 IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaControlS41() != null) {
			where.append(" AND t2.FECHA_CONTROL_S41 = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaControlS41());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getNumInstalacionAnterior() != null) {
			where.append(" AND UPPER(t2.NUM_INSTALACION_ANTERIOR) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getNumInstalacionAnterior().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getNumInstalacionAnterior().toUpperCase() + "%");
			}
			where.append(" AND t2.NUM_INSTALACION_ANTERIOR IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaInscripcion() != null) {
			where.append(" AND t2.FECHA_INSCRIPCION = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaInscripcion());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getNumInstalacionWz() != null) {
			where.append(" AND UPPER(t2.NUM_INSTALACION_WZ) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getNumInstalacionWz().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getNumInstalacionWz().toUpperCase() + "%");
			}
			where.append(" AND t2.NUM_INSTALACION_WZ IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getObservaciones2() != null) {
			where.append(" AND UPPER(t2.OBSERVACIONES2) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getObservaciones2().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getObservaciones2().toUpperCase() + "%");
			}
			where.append(" AND t2.OBSERVACIONES2 IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getNotasMigracion() != null) {
			where.append(" AND UPPER(t2.NOTAS_MIGRACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getNotasMigracion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getNotasMigracion().toUpperCase() + "%");
			}
			where.append(" AND t2.NOTAS_MIGRACION IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getAgrupacion() != null) {
			where.append(" AND UPPER(t2.AGRUPACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getAgrupacion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getAgrupacion().toUpperCase() + "%");
			}
			where.append(" AND t2.AGRUPACION IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getRefCatastral() != null) {
			where.append(" AND UPPER(t2.REF_CATASTRAL) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getRefCatastral().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getRefCatastral().toUpperCase() + "%");
			}
			where.append(" AND t2.REF_CATASTRAL IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getObsSegrespcivil() != null) {
			where.append(" AND UPPER(t2.OBS_SEGRESPCIVIL) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getObsSegrespcivil().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getObsSegrespcivil().toUpperCase() + "%");
			}
			where.append(" AND t2.OBS_SEGRESPCIVIL IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaRegistro() != null) {
			where.append(" AND t2.FECHA_REGISTRO = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaRegistro());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getUsuarioRegistro() != null) {
			where.append(" AND UPPER(t2.USUARIO_REGISTRO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getUsuarioRegistro().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getUsuarioRegistro().toUpperCase() + "%");
			}
			where.append(" AND t2.USUARIO_REGISTRO IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFechaUltmodificacion() != null) {
			where.append(" AND t2.FECHA_ULTMODIFICACION = ?");
			params.add(ab6339s00.getEstablecimiento().getFechaUltmodificacion());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getUsuarioUltmodificacion() != null) {
			where.append(" AND UPPER(t2.USUARIO_ULTMODIFICACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getEstablecimiento().getUsuarioUltmodificacion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getEstablecimiento().getUsuarioUltmodificacion().toUpperCase() + "%");
			}
			where.append(" AND t2.USUARIO_ULTMODIFICACION IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getEstablecimientoData() != null
				&& ab6339s00.getEstablecimiento().getEstablecimientoData().getIdEstablecimiento() != null) {
			where.append(" AND t2.ID_ESTABLECIMIENTO = ?");
			params.add(ab6339s00.getEstablecimiento().getEstablecimientoData().getIdEstablecimiento());
		}
		if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null
				&& ab6339s00.getEstablecimiento().getFranquicia() != null
				&& ab6339s00.getEstablecimiento().getFranquicia().getIdEstablecimiento() != null) {
			where.append(" AND t2.ID_ESTABLECIMIENTO = ?");
			params.add(ab6339s00.getEstablecimiento().getFranquicia().getIdEstablecimiento());
		}
		if (ab6339s00 != null && ab6339s00.getFechaRegistro() != null) {
			where.append(" AND t1.FECHA_REGISTRO = ?");
			params.add(ab6339s00.getFechaRegistro());
		}
		if (ab6339s00 != null && ab6339s00.getUsuarioRegistro() != null) {
			where.append(" AND UPPER(t1.USUARIO_REGISTRO) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getUsuarioRegistro().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getUsuarioRegistro().toUpperCase() + "%");
			}
			where.append(" AND t1.USUARIO_REGISTRO IS NOT NULL");
		}
		if (ab6339s00 != null && ab6339s00.getFechaUltmodificacion() != null) {
			where.append(" AND t1.FECHA_ULTMODIFICACION = ?");
			params.add(ab6339s00.getFechaUltmodificacion());
		}
		if (ab6339s00 != null && ab6339s00.getUsuarioUltmodificacion() != null) {
			where.append(" AND UPPER(t1.USUARIO_ULTMODIFICACION) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(ab6339s00.getUsuarioUltmodificacion().toUpperCase() + "%");
			} else {
				params.add("%" + ab6339s00.getUsuarioUltmodificacion().toUpperCase() + "%");
			}
			where.append(" AND t1.USUARIO_ULTMODIFICACION IS NOT NULL");
		}
		/*
		 * if (ab6339s00 != null && ab6339s00.getEstablecimiento() != null &&
		 * ab6339s00.getEstablecimiento().getDatosDirecciones() != null &&
		 * ab6339s00.getEstablecimiento().getDatosDirecciones().
		 * getTiposDireccion() != null) {
		 * where.append(" AND t4.ID_TIPO_DIRECCION = ?");
		 * params.add(ab6339s00.getEstablecimiento().getDatosDirecciones().
		 * getTiposDireccion().getIdTipoDireccion()); }
		 */

		Map<String, Object> mapWhere = new HashMap<String, Object>();
		mapWhere.put("query", where);
		mapWhere.put("params", params);

		return mapWhere;
	}
	// CHECKSTYLE:ON CyclomaticComplexity - Generación de código de UDA

	/**
	 * StringBuilder initilization value
	 */
	public static final int STRING_BUILDER_INIT = 4096;

	@Override
	public List<TercerosEstablecimiento> findAllLikeByTipoDireccion(TercerosEstablecimiento ab6339s00,
			JQGridRequestDto jqGridRequestDto, Boolean startsWith) {
		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_TERCERO IDTERCEROSESTAB,t1.FECHA_REGISTRO FECHAREGISTRO,t1.USUARIO_REGISTRO USUARIOREGISTRO,t1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION,t1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION, t1.BAJA BAJATERCERO, t2.ID_ESTABLECIMIENTO AB6301S00IDESTABLECIMIENTO,t2.IDENTIFICADOR_ESTABLECIMIENTO AB6301S00IDENTIFICADORESTABLEC,t2.DESC_NOMBRE AB6301S00DESCNOMBRE,t2.VISIBLEWEB AB6301S00VISIBLEWEB,t2.TEMPORADA AB6301S00TEMPORADA,t2.URLWEB AB6301S00URLWEB,t2.ID_DEFECTOS AB6301S00IDDEFECTOS,t2.NUM_UNIDADES_ALOJAMIENTO AB6301S00NUMUNIDADESALOJ,t2.OBSERVACIONES AB6301S00OBSERVACIONES,t2.FECHA_APERTURA AB6301S00FECHAAPERTURA,t2.FECHA_BAJA AB6301S00FECHABAJA,t2.FECHA_INICIERRETEMP AB6301S00FECHAINICIERRETEMP,t2.FECHA_FINCIERRETEMP AB6301S00FECHAFINCIERRETEMP,t2.FECHA_VCTO_CIERRE AB6301S00FECHAVCTOCIERRE,t2.FECHA_ULT_NOTIFICACION AB6301S00FECHAULTNOTIFICACION,t2.FECHA_ULT_INSPECCION AB6301S00FECHAULTINSPECCION,t2.FECHA_PRO_INSPECCION AB6301S00FECHAPROINSPECCION,t2.FECHA_ULT_ACTUALIZACION AB6301S00FECHAULTACTUALIZACION,t2.FECHA_CLAUSURA AB6301S00FECHACLAUSURA,t2.FECHA_ULT_REFORMA AB6301S00FECHAULTREFORMA,t2.ELIMINADO AB6301S00ELIMINADO,t2.EXPEDIENTEB29 AB6301S00EXPEDIENTEB29,t2.ID_PORTAL_S41 AB6301S00IDPORTALS41,t2.URL_PORTAL_S41 AB6301S00URLPORTALS41,t2.FECHA_CONTROL_S41 AB6301S00FECHACONTROLS41,t2.NUM_INSTALACION_ANTERIOR AB6301S00NUMINSTALACIONANT,t2.FECHA_INSCRIPCION AB6301S00FECHAINSCRIPCION,t2.NUM_INSTALACION_WZ AB6301S00NUMINSTALACIONWZ,t2.OBSERVACIONES2 AB6301S00OBSERVACIONES2,t2.NOTAS_MIGRACION AB6301S00NOTASMIGRACION,t2.AGRUPACION AB6301S00AGRUPACION,t2.REF_CATASTRAL AB6301S00REFCATASTRAL,t2.OBS_SEGRESPCIVIL AB6301S00OBSSEGRESPCIVIL,t2.FECHA_REGISTRO AB6301S00FECHAREGISTRO,t2.USUARIO_REGISTRO AB6301S00USUARIOREGISTRO,t2.FECHA_ULTMODIFICACION AB6301S00FECHAULTMODIFICACION,t2.USUARIO_ULTMODIFICACION AB6301S00USUARIOULTMODIF,t2.TELEFONO TELEFONO, T2.EMAIL CORREOELECTRONICO, t2.ID_EXPEDIENTE IDEXPEDIENTE, t2.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, t2.TIPO_REGISTRO, t2.IDESTAB_SOLIC IDESTABSOLIC,t2.ID_RECURSO AB6301S00IDRECURSO,t2.ID_TIPO_ESTABLECIMIENTO AB6301S00IDTIPOESTABLECIMIENTO,t2.ID_GRUPO AB6301S00IDGRUPO,t2.ID_CATEGORIAS AB6301S00IDCATEGORIAS,t2.ID_ESPECIALIDAD AB6301S00IDESPECIALIDAD,t2.ID_MODALIDAD AB6301S00IDMODALIDAD, t3.ID_TERCERO AB6339S00IDTERCERO, t3.DOCUMENTO NIFINTERESADO, t3.NOMBRE NOMBREINTERESADO, t3.APELLIDO1 APELLIDO1, t3.APELLIDO2 APELLIDO2, t3.TELEFONO TELEFONOINTERESADO, t3.EMAIL EMAILINTERESADO, t4.ID_DIRECCION, t4.DIRECCION, t4.NUMERO, t4.ESCALERA, t4.PISO, t4.LETRA, t4.CODIGO_POSTAL, t4.ID_PAIS IDPAIS, t4.ID_PROVINCIA, t4.ID_MUNICIPIO, t4.ID_LOCALIDAD, T4.DESCRIPCION_PROVINCIA DESCRIPCIONPROVINCIAEXTR, T4.DESCRIPCION_CIUDAD DESCRIPCIONCIUDADEXTR, t5.ID_TIPO_TERCERO, t5.DESCRIPCION_CASTELLANO, t5.DESCRIPCION_EUSKERA, t5.FECHA_REGISTRO, t5.USUARIO_REGISTRO, t5.ROLE, t6.ID_TIPO_DOCUMENTO,t6.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_TIPODOC,t6.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_TIPODOC,t6.FECHA_REGISTRO FECHA_REGISTRO_TIPODOC,t6.USUARIO_REGISTRO USUARIO_REGISTRO_TIPODOC, t7.ID_SEXO IDSEXO, t7.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_SEX,t7.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_SEX,t7.FECHA_REGISTRO FECHA_REGISTRO_SEX,t7.USUARIO_REGISTRO USUARIO_REGISTRO_SEX, t8.ID_TIPO_DIRECCION ID_TIPO_DIRECCION_DIR, t8.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_DIR, t8.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_DIR, t8.FECHA_REGISTRO FECHA_REGISTRO_DIR, t8.USUARIO_REGISTRO USUARIO_REGISTRO_DIR, t17.DS_O MUNICIPIODSO ");
		query.append(
				"FROM AB6339S00 t1 ,AB6301S00 t2, AB61.AB6135T00 t3, (select * from AB61.AB6136T00 WHERE ID_TIPO_DIRECCION  = 4 ) t4, AB61.AB6106T00 t5, AB61.AB6107T00 t6,AB61.AB6120T00 t7, AB61.AB6137T00 t8, MUNICIPIOS t17 ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(ab6339s00, startsWith);
		StringBuilder where = new StringBuilder(
				" WHERE 1=1 AND t4.ID_TIPO_DIRECCION = t8.ID_TIPO_DIRECCION(+) AND t3.ID_TIPO_DOCUMENTO=t6.ID_TIPO_DOCUMENTO(+) AND t3.ID_SEXO = t7.ID_SEXO(+) AND t1.ID_TIPO_TERCERO = t5.ID_TIPO_TERCERO AND t1.ID_TERCERO=t4.ID_TERCERO(+) AND t1.id_tercero = t3.id_tercero AND t1.ID_ESTABLECIMIENTO= t2.ID_ESTABLECIMIENTO(+) AND t4.ID_PROVINCIA = t17.PROVINCIA_ID(+) AND t4.ID_MUNICIPIO = t17.ID(+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		List<?> params = (List<?>) mapaWhere.get("params");

		if (jqGridRequestDto != null) {
			query = JQGridManager.getPaginationQuery(jqGridRequestDto, query,
					TercerosEstablecimientoDaoImpl.ORDER_BY_WHITE_LIST);
		}

		return (List<TercerosEstablecimiento>) this.jdbcTemplate.query(query.toString(), this.rwMap, params.toArray());
	}

	@Override
	public TercerosEstablecimiento findByTipoDireccionFilter(TercerosEstablecimiento ab6339s00) {
		String query = "SELECT t1.ID_TERCERO IDTERCEROSESTAB, t1.FECHA_REGISTRO FECHAREGISTRO, t1.USUARIO_REGISTRO USUARIOREGISTRO, t1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION, t1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION, t1.BAJA BAJATERCERO, t2.ID_ESTABLECIMIENTO AB6301S00IDESTABLECIMIENTO, t2.IDENTIFICADOR_ESTABLECIMIENTO AB6301S00IDENTIFICADORESTABLEC, t2.DESC_NOMBRE AB6301S00DESCNOMBRE, t2.VISIBLEWEB AB6301S00VISIBLEWEB, t2.TEMPORADA AB6301S00TEMPORADA, t2.URLWEB AB6301S00URLWEB, t2.ID_DEFECTOS AB6301S00IDDEFECTOS, t2.NUM_UNIDADES_ALOJAMIENTO AB6301S00NUMUNIDADESALOJ, t2.OBSERVACIONES AB6301S00OBSERVACIONES, t2.FECHA_APERTURA AB6301S00FECHAAPERTURA, t2.FECHA_BAJA AB6301S00FECHABAJA, t2.FECHA_INICIERRETEMP AB6301S00FECHAINICIERRETEMP, t2.FECHA_FINCIERRETEMP AB6301S00FECHAFINCIERRETEMP, t2.FECHA_VCTO_CIERRE AB6301S00FECHAVCTOCIERRE, t2.FECHA_ULT_NOTIFICACION AB6301S00FECHAULTNOTIFICACION, t2.FECHA_ULT_INSPECCION AB6301S00FECHAULTINSPECCION, t2.FECHA_PRO_INSPECCION AB6301S00FECHAPROINSPECCION, t2.FECHA_ULT_ACTUALIZACION AB6301S00FECHAULTACTUALIZACION, t2.FECHA_CLAUSURA AB6301S00FECHACLAUSURA, t2.FECHA_ULT_REFORMA AB6301S00FECHAULTREFORMA, t2.ELIMINADO AB6301S00ELIMINADO, t2.EXPEDIENTEB29 AB6301S00EXPEDIENTEB29, t2.ID_PORTAL_S41 AB6301S00IDPORTALS41, t2.URL_PORTAL_S41 AB6301S00URLPORTALS41, t2.FECHA_CONTROL_S41 AB6301S00FECHACONTROLS41, t2.NUM_INSTALACION_ANTERIOR AB6301S00NUMINSTALACIONANT, t2.FECHA_INSCRIPCION AB6301S00FECHAINSCRIPCION, t2.NUM_INSTALACION_WZ AB6301S00NUMINSTALACIONWZ, t2.OBSERVACIONES2 AB6301S00OBSERVACIONES2, t2.NOTAS_MIGRACION AB6301S00NOTASMIGRACION, t2.AGRUPACION AB6301S00AGRUPACION, t2.REF_CATASTRAL AB6301S00REFCATASTRAL, t2.OBS_SEGRESPCIVIL AB6301S00OBSSEGRESPCIVIL, t2.FECHA_REGISTRO AB6301S00FECHAREGISTRO, t2.USUARIO_REGISTRO AB6301S00USUARIOREGISTRO, t2.FECHA_ULTMODIFICACION AB6301S00FECHAULTMODIFICACION, t2.USUARIO_ULTMODIFICACION AB6301S00USUARIOULTMODIF, t2.TELEFONO TELEFONO, T2.EMAIL CORREOELECTRONICO, t2.ID_EXPEDIENTE IDEXPEDIENTE, t2.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, t2.TIPO_REGISTRO, t2.IDESTAB_SOLIC IDESTABSOLIC,t2.ID_RECURSO AB6301S00IDRECURSO,t2.ID_TIPO_ESTABLECIMIENTO AB6301S00IDTIPOESTABLECIMIENTO,t2.ID_GRUPO AB6301S00IDGRUPO,t2.ID_CATEGORIAS AB6301S00IDCATEGORIAS,t2.ID_ESPECIALIDAD AB6301S00IDESPECIALIDAD,t2.ID_MODALIDAD AB6301S00IDMODALIDAD, t3.ID_TERCERO AB6339S00IDTERCERO, t3.DOCUMENTO NIFINTERESADO, t3.NOMBRE NOMBREINTERESADO, t3.APELLIDO1 APELLIDO1, t3.APELLIDO2 APELLIDO2, t3.TELEFONO TELEFONOINTERESADO, t3.EMAIL EMAILINTERESADO, t4.ID_DIRECCION, t4.DIRECCION, t4.NUMERO, t4.ESCALERA, t4.PISO, t4.LETRA, t4.CODIGO_POSTAL, t4.ID_PAIS IDPAIS, t4.ID_PROVINCIA, t4.ID_MUNICIPIO, t4.ID_LOCALIDAD, T4.DESCRIPCION_PROVINCIA DESCRIPCIONPROVINCIAEXTR, T4.DESCRIPCION_CIUDAD DESCRIPCIONCIUDADEXTR, t5.ID_TIPO_TERCERO, t5.DESCRIPCION_CASTELLANO, t5.DESCRIPCION_EUSKERA, t5.FECHA_REGISTRO, t5.USUARIO_REGISTRO, t5.ROLE, t6.ID_TIPO_DOCUMENTO,t6.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_TIPODOC,t6.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_TIPODOC,t6.FECHA_REGISTRO FECHA_REGISTRO_TIPODOC ,t6.USUARIO_REGISTRO USUARIO_REGISTRO_TIPODOC, t7.ID_SEXO IDSEXO, t7.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_SEX,t7.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_SEX,t7.FECHA_REGISTRO FECHA_REGISTRO_SEX,t7.USUARIO_REGISTRO USUARIO_REGISTRO_SEX, t8.ID_TIPO_DIRECCION ID_TIPO_DIRECCION_DIR, t8.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_DIR, t8.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_DIR, t8.FECHA_REGISTRO FECHA_REGISTRO_DIR, t8.USUARIO_REGISTRO USUARIO_REGISTRO_DIR, t17.DS_O MUNICIPIODSO FROM AB6339S00 t1 ,AB6301S00 t2, AB61.AB6135T00 t3, (select * from AB61.AB6136T00 WHERE ID_TIPO_DIRECCION  = ? ) t4, AB61.AB6106T00 t5, AB61.AB6107T00 t6,AB61.AB6120T00 t7, AB61.AB6137T00 t8, MUNICIPIOS t17 WHERE t1.ID_TERCERO = ? AND t4.ID_TIPO_DIRECCION = t8.ID_TIPO_DIRECCION(+) AND t3.ID_TIPO_DOCUMENTO=t6.ID_TIPO_DOCUMENTO(+) AND t3.ID_SEXO = t7.ID_SEXO(+) AND t1.ID_TIPO_TERCERO = t5.ID_TIPO_TERCERO AND t1.ID_TERCERO=t4.ID_TERCERO(+) AND t1.id_tercero = t3.id_tercero AND t1.ID_ESTABLECIMIENTO= t2.ID_ESTABLECIMIENTO(+) AND t4.ID_PROVINCIA = t17.PROVINCIA_ID(+) AND t4.ID_MUNICIPIO = t17.ID(+) ";

		List<TercerosEstablecimiento> ab6339s00List = this.jdbcTemplate.query(query, this.rwMap,
				ab6339s00.getEstablecimiento().getDatosDirecciones().getTiposDireccion().getIdTipoDireccion(),
				ab6339s00.getIdTercerosEstab());
		return (TercerosEstablecimiento) DataAccessUtils.uniqueResult(ab6339s00List);
	}

	@Override
	public Long findAllLikeCountByTipoDireccion(TercerosEstablecimiento ab6339s00, Boolean startsWith) {
		StringBuilder query = new StringBuilder(
				"SELECT COUNT(1) FROM AB6339S00 t1 ,AB6301S00 t2, AB61.AB6135T00 t3, (select * from AB61.AB6136T00 WHERE ID_TIPO_DIRECCION  = 4 ) t4, AB61.AB6106T00 t5, AB61.AB6107T00 t6,AB61.AB6120T00 t7, AB61.AB6137T00 t8, MUNICIPIOS t17  ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(ab6339s00, startsWith);
		StringBuilder where = new StringBuilder(
				" WHERE 1=1 AND t4.ID_TIPO_DIRECCION = t8.ID_TIPO_DIRECCION(+) AND t3.ID_TIPO_DOCUMENTO=t6.ID_TIPO_DOCUMENTO(+) AND t3.ID_SEXO = t7.ID_SEXO(+) AND t1.ID_TIPO_TERCERO = t5.ID_TIPO_TERCERO AND t1.ID_TERCERO=t4.ID_TERCERO(+) AND t1.id_tercero = t3.id_tercero AND t1.ID_ESTABLECIMIENTO= t2.ID_ESTABLECIMIENTO(+) AND t4.ID_PROVINCIA = t17.PROVINCIA_ID(+) AND t4.ID_MUNICIPIO = t17.ID(+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		List<?> params = (List<?>) mapaWhere.get("params");

		return this.jdbcTemplate.queryForObject(query.toString(), Long.class, params.toArray());
	}

	@Override
	public List<TableRowDto<TercerosEstablecimiento>> reorderSelectionByTipoDireccion(TercerosEstablecimiento ab6339s00,
			JQGridRequestDto jqGridRequestDto, Boolean startsWith) {
		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_TERCERO IDTERCEROSESTAB,t1.FECHA_REGISTRO FECHAREGISTRO,t1.USUARIO_REGISTRO USUARIOREGISTRO,t1.FECHA_ULTMODIFICACION FECHAULTMODIFICACION,t1.USUARIO_ULTMODIFICACION USUARIOULTMODIFICACION, t1.BAJA BAJATERCERO, t2.ID_ESTABLECIMIENTO AB6301S00IDESTABLECIMIENTO,t2.IDENTIFICADOR_ESTABLECIMIENTO AB6301S00IDENTIFICADORESTABLEC,t2.DESC_NOMBRE AB6301S00DESCNOMBRE,t2.VISIBLEWEB AB6301S00VISIBLEWEB,t2.TEMPORADA AB6301S00TEMPORADA,t2.URLWEB AB6301S00URLWEB,t2.ID_DEFECTOS AB6301S00IDDEFECTOS,t2.NUM_UNIDADES_ALOJAMIENTO AB6301S00NUMUNIDADESALOJ,t2.OBSERVACIONES AB6301S00OBSERVACIONES,t2.FECHA_APERTURA AB6301S00FECHAAPERTURA,t2.FECHA_BAJA AB6301S00FECHABAJA,t2.FECHA_INICIERRETEMP AB6301S00FECHAINICIERRETEMP,t2.FECHA_FINCIERRETEMP AB6301S00FECHAFINCIERRETEMP,t2.FECHA_VCTO_CIERRE AB6301S00FECHAVCTOCIERRE,t2.FECHA_ULT_NOTIFICACION AB6301S00FECHAULTNOTIFICACION,t2.FECHA_ULT_INSPECCION AB6301S00FECHAULTINSPECCION,t2.FECHA_PRO_INSPECCION AB6301S00FECHAPROINSPECCION,t2.FECHA_ULT_ACTUALIZACION AB6301S00FECHAULTACTUALIZACION,t2.FECHA_CLAUSURA AB6301S00FECHACLAUSURA,t2.FECHA_ULT_REFORMA AB6301S00FECHAULTREFORMA,t2.ELIMINADO AB6301S00ELIMINADO,t2.EXPEDIENTEB29 AB6301S00EXPEDIENTEB29,t2.ID_PORTAL_S41 AB6301S00IDPORTALS41,t2.URL_PORTAL_S41 AB6301S00URLPORTALS41,t2.FECHA_CONTROL_S41 AB6301S00FECHACONTROLS41,t2.NUM_INSTALACION_ANTERIOR AB6301S00NUMINSTALACIONANT,t2.FECHA_INSCRIPCION AB6301S00FECHAINSCRIPCION,t2.NUM_INSTALACION_WZ AB6301S00NUMINSTALACIONWZ,t2.OBSERVACIONES2 AB6301S00OBSERVACIONES2,t2.NOTAS_MIGRACION AB6301S00NOTASMIGRACION,t2.AGRUPACION AB6301S00AGRUPACION,t2.REF_CATASTRAL AB6301S00REFCATASTRAL,t2.OBS_SEGRESPCIVIL AB6301S00OBSSEGRESPCIVIL,t2.FECHA_REGISTRO AB6301S00FECHAREGISTRO,t2.USUARIO_REGISTRO AB6301S00USUARIOREGISTRO,t2.FECHA_ULTMODIFICACION AB6301S00FECHAULTMODIFICACION,t2.USUARIO_ULTMODIFICACION AB6301S00USUARIOULTMODIF,t2.TELEFONO TELEFONO, T2.EMAIL CORREOELECTRONICO, t2.ID_EXPEDIENTE IDEXPEDIENTE, t2.ID_ESTABLECIMIENTO_PADRE IDESTABLECIMIENTOPADRE, t2.TIPO_REGISTRO, t2.IDESTAB_SOLIC IDESTABSOLIC,t2.ID_RECURSO AB6301S00IDRECURSO,t2.ID_TIPO_ESTABLECIMIENTO AB6301S00IDTIPOESTABLECIMIENTO,t2.ID_GRUPO AB6301S00IDGRUPO,t2.ID_CATEGORIAS AB6301S00IDCATEGORIAS,t2.ID_ESPECIALIDAD AB6301S00IDESPECIALIDAD,t2.ID_MODALIDAD AB6301S00IDMODALIDAD, t3.ID_TERCERO AB6339S00IDTERCERO, t3.DOCUMENTO NIFINTERESADO, t3.NOMBRE NOMBREINTERESADO, t3.APELLIDO1 APELLIDO1, t3.APELLIDO2 APELLIDO2, t3.TELEFONO TELEFONOINTERESADO, t3.EMAIL EMAILINTERESADO, t4.ID_DIRECCION, t4.DIRECCION, t4.NUMERO, t4.ESCALERA, t4.PISO, t4.LETRA, t4.CODIGO_POSTAL, t4.ID_PAIS IDPAIS, t4.ID_PROVINCIA, t4.ID_MUNICIPIO, t4.ID_LOCALIDAD, T4.DESCRIPCION_PROVINCIA DESCRIPCIONPROVINCIAEXTR, T4.DESCRIPCION_CIUDAD DESCRIPCIONCIUDADEXTR, t5.ID_TIPO_TERCERO, t5.DESCRIPCION_CASTELLANO, t5.DESCRIPCION_EUSKERA, t5.FECHA_REGISTRO, t5.USUARIO_REGISTRO, t5.ROLE, t6.ID_TIPO_DOCUMENTO,t6.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_TIPODOC,t6.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_TIPODOC,t6.FECHA_REGISTRO FECHA_REGISTRO_TIPODOC,t6.USUARIO_REGISTRO USUARIO_REGISTRO_TIPODOC, t7.ID_SEXO, t7.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_SEX,t7.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_SEX,t7.FECHA_REGISTRO FECHA_REGISTRO_SEX,t7.USUARIO_REGISTRO USUARIO_REGISTRO_SEX, t8.ID_TIPO_DIRECCION ID_TIPO_DIRECCION_DIR, t8.DESCRIPCION_CASTELLANO DESCRIPCION_CASTELLANO_DIR, t8.DESCRIPCION_EUSKERA DESCRIPCION_EUSKERA_DIR, t8.FECHA_REGISTRO FECHA_REGISTRO_DIR, t8.USUARIO_REGISTRO USUARIO_REGISTRO_DIR, t17.DS_O MUNICIPIODSO ");
		query.append(
				"FROM AB6339S00 t1 ,AB6301S00 t2, AB61.AB6135T00 t3, (select * from AB61.AB6136T00 WHERE ID_TIPO_DIRECCION  = 4 ) t4, AB61.AB6106T00 t5, AB61.AB6107T00 t6,AB61.AB6120T00 t7, AB61.AB6137T00 t8, MUNICIPIOS t17 ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(ab6339s00, startsWith);
		StringBuilder where = new StringBuilder(
				" WHERE 1=1 AND t1.BAJA IN(0) AND t4.ID_TIPO_DIRECCION = t8.ID_TIPO_DIRECCION(+) AND t3.ID_TIPO_DOCUMENTO=t6.ID_TIPO_DOCUMENTO(+) AND t3.ID_SEXO = t7.ID_SEXO(+) AND t1.ID_TIPO_TERCERO = t5.ID_TIPO_TERCERO AND t1.ID_TERCERO=t4.ID_TERCERO(+) AND t1.id_tercero = t3.id_tercero AND t1.ID_ESTABLECIMIENTO= t2.ID_ESTABLECIMIENTO(+) AND t4.ID_PROVINCIA = t17.PROVINCIA_ID(+) AND t4.ID_MUNICIPIO = t17.ID(+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		// Parámetros de filtrado
		@SuppressWarnings("unchecked")
		List<Object> filterParamList = (List<Object>) mapaWhere.get("params");

		// SQL para la reordenación
		StringBuilder sbReorderSelectionSQL = JQGridManager.getReorderQuery(query, jqGridRequestDto,
				TercerosEstablecimiento.class, filterParamList, "ID_TERCERO");

		return this.jdbcTemplate.query(sbReorderSelectionSQL.toString(),
				new RowNumResultSetExtractor<TercerosEstablecimiento>(this.rwMapPK, jqGridRequestDto),
				filterParamList.toArray());
	}

	@Override
	public TercerosEstablecimiento busquedaInteresadosAfectadosSucursalesPuntosVenta(TercerosEstablecimiento tercero) {

		String query = "SELECT REL_EST_TER.ID_ESTABLECIMIENTO, REL_EST_TER.ID_TERCERO, REL_EST_TER.ID_TIPO_TERCERO, REL_EST_TER.BAJA, DIR.ID_DIRECCION FROM AB6339T00 REL_EST_TER, AB61.AB6135T00 TERCEROS, AB61.AB6136T00 DIR WHERE REL_EST_TER.ID_TERCERO = TERCEROS.ID_TERCERO AND REL_EST_TER.ID_TERCERO = DIR.ID_TERCERO(+) AND (DIR.ID_DIRECCION IS NOT NULL AND DIR.ID_TIPO_DIRECCION = 4) AND TERCEROS.DOCUMENTO = ? AND REL_EST_TER.ID_TIPO_TERCERO = ? AND REL_EST_TER.ID_ESTABLECIMIENTO = ?";

		Object documento = null;
		if (tercero.getEstablecimiento() != null && tercero.getEstablecimiento().getDatosTerceros() != null
				&& tercero.getEstablecimiento().getDatosTerceros().getDocumento() != null) {
			documento = tercero.getEstablecimiento().getDatosTerceros().getDocumento();
		}

		Object tipoTercero = null;
		if (tercero.getTiposTercero() != null && tercero.getTiposTercero().getIdTipoTercero() != null) {
			tipoTercero = tercero.getTiposTercero().getIdTipoTercero();
		}

		Object idEstablecimiento = null;
		if (tercero.getEstablecimiento() != null && tercero.getEstablecimiento().getIdEstablecimiento() != null) {
			idEstablecimiento = tercero.getEstablecimiento().getIdEstablecimiento();
		}

		List<TercerosEstablecimiento> ab6339s00List = this.jdbcTemplate.query(query,
				this.rwMapInteresadosAfectadosSucursalesPuntoVenta, documento, tipoTercero, idEstablecimiento);

		return (TercerosEstablecimiento) DataAccessUtils.uniqueResult(ab6339s00List);
	}

	@Override
	public TercerosEstablecimiento getTerceroByIdTerceroAAVV(TercerosEstablecimiento tercero) {

		String query = "SELECT REL_EST_TER.ID_ESTABLECIMIENTO, REL_EST_TER.ID_TERCERO, REL_EST_TER.ID_TIPO_TERCERO, EST.ID_MODALIDAD, EST.ID_TIPO_ESTABLECIMIENTO, TERCEROS.DOCUMENTO, AGENCIA.NUM_CIE FROM AB6301T00 EST, AB6339T00 REL_EST_TER, AB61.AB6135T00 TERCEROS, AB6335T00 AGENCIA WHERE EST.ID_ESTABLECIMIENTO = AGENCIA.ID_ESTABLECIMIENTO AND EST.ID_ESTABLECIMIENTO = REL_EST_TER.ID_ESTABLECIMIENTO AND REL_EST_TER.ID_TERCERO = TERCEROS.ID_TERCERO AND REL_EST_TER.ID_ESTABLECIMIENTO = ? AND REL_EST_TER.ID_TERCERO = ?";

		Object idEstablecimiento = null;
		if (tercero.getEstablecimiento() != null && tercero.getEstablecimiento().getIdEstablecimiento() != null) {
			idEstablecimiento = tercero.getEstablecimiento().getIdEstablecimiento();
		}

		List<TercerosEstablecimiento> ab6339s00List = this.jdbcTemplate.query(query,
				this.rwMapGetTerceroByIdTerceroForDeleteAAVVCase, idEstablecimiento, tercero.getIdTercerosEstab());

		return (TercerosEstablecimiento) DataAccessUtils.uniqueResult(ab6339s00List);
	}

	@Override
	public TercerosEstablecimiento getTerceroByIdTercero(TercerosEstablecimiento tercero) {
		String query = "SELECT REL_EST_TER.ID_ESTABLECIMIENTO, REL_EST_TER.ID_TERCERO, REL_EST_TER.ID_TIPO_TERCERO, EST.ID_MODALIDAD, EST.ID_TIPO_ESTABLECIMIENTO, TERCEROS.DOCUMENTO FROM AB6301T00 EST, AB6339T00 REL_EST_TER, AB61.AB6135T00 TERCEROS WHERE EST.ID_ESTABLECIMIENTO = REL_EST_TER.ID_ESTABLECIMIENTO AND REL_EST_TER.ID_TERCERO = TERCEROS.ID_TERCERO AND REL_EST_TER.ID_ESTABLECIMIENTO = ? AND REL_EST_TER.ID_TERCERO = ?";

		Object idEstablecimiento = null;
		if (tercero.getEstablecimiento() != null && tercero.getEstablecimiento().getIdEstablecimiento() != null) {
			idEstablecimiento = tercero.getEstablecimiento().getIdEstablecimiento();
		}

		List<TercerosEstablecimiento> ab6339s00List = this.jdbcTemplate.query(query, this.rwMapGetTerceroByIdTercero,
				idEstablecimiento, tercero.getIdTercerosEstab());

		return (TercerosEstablecimiento) DataAccessUtils.uniqueResult(ab6339s00List);
	}

	@Override
	public TercerosEstablecimiento findTerceroCensado(TercerosEstablecimiento tercero) {
		String query = "SELECT REL_EST_TER.ID_ESTABLECIMIENTO, REL_EST_TER.ID_TERCERO, REL_EST_TER.ID_TIPO_TERCERO, EST.ID_MODALIDAD, EST.ID_TIPO_ESTABLECIMIENTO, TERCEROS.DOCUMENTO FROM AB6301T00 EST, AB6339T00 REL_EST_TER, AB61.AB6135T00 TERCEROS WHERE EST.ID_ESTABLECIMIENTO = REL_EST_TER.ID_ESTABLECIMIENTO AND REL_EST_TER.ID_TERCERO = TERCEROS.ID_TERCERO AND REL_EST_TER.ID_TERCERO = ?";

		List<TercerosEstablecimiento> listRelTercerosCensados = this.jdbcTemplate.query(query,
				this.rwMapGetTerceroByIdTercero, tercero.getIdTercerosEstab());

		return (TercerosEstablecimiento) DataAccessUtils.uniqueResult(listRelTercerosCensados);
	}

	@Override
	public void updateTipoTercero(Integer idTercero, Long tipoTerceroNuevo) {
		String query = "UPDATE AB6339S00 SET ID_TIPO_TERCERO=?, FECHA_ULTMODIFICACION=SYSDATE, USUARIO_ULTMODIFICACION=? WHERE ID_TERCERO=?";
		this.jdbcTemplate.update(query, tipoTerceroNuevo, PermisosXLNETS.getUserConnected(), idTercero);
	}

}
