/*
* Copyright 2021 E.J.I.E., S.A.
*
* Licencia con arreglo a la EUPL, Versión 1.1 exclusivamente (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en
*
* http://ec.europa.eu/idabc/eupl.html
*
* Salvo cuando lo exija la legislación aplicable o se acuerde por escrito,
* el programa distribuido con arreglo a la Licencia se distribuye «TAL CUAL»,
* SIN GARANT�?AS NI CONDICIONES DE NINGÚN TIPO, ni expresas ni implícitas.
* Véase la Licencia en el idioma concreto que rige los permisos y limitaciones
* que establece la Licencia.
*/
package com.ejie.ad74a.dao.ae01b;

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.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.ejie.ad74a.model.Cuentas;
import com.ejie.ad74a.model.Mensualidades;
import com.ejie.ad74a.model.Solicitantes;
import com.ejie.ad74a.model.ae01b.Liquidaciones;
import com.ejie.ad74a.model.ae01b.TiposIngreso;
import com.ejie.ad74a.util.UtilSQL;
import com.ejie.ad74a.util.comun.Utilidades;
import com.ejie.x38.dao.RowNumResultSetExtractor;
import com.ejie.x38.dto.TableManager;
import com.ejie.x38.dto.TableRequestDto;
import com.ejie.x38.dto.TableRowDto;

/**
 * LiquidacionesDaoImpl generated by UDA, 27-jun-2023 9:31:04.
 * 
 * @author UDA
 */

@Repository
@Transactional
public class LiquidacionesDaoImpl implements LiquidacionesDao {

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

	protected static final String[] ORDER_BY_WHITE_LIST = new String[] { "IDLIQUIDACION00", "EJERCICIO00",
			"NUMLIQUIDACION00", "CODORIGEN00", "IMPORTE00", "FEMISION00", "FLIMITEPAGO00", "REFERENCIALIQ00",
			"DIGITOCONTROL00", "IDTERRITORIO00", "EXPEDIENTE00", "CONCEPTO00", "TIPOTERCERO00", "TERCERO00",
			"NOMRACSOC00", "APELLIDO100", "APELLIDO200", "RESIDENTE00", "CODPAIS00", "LOCALIDAD00", "CODPROVINCIA00",
			"CODMUNICIPIO00", "CODLOCALIDAD00", "TIPOVIA00", "NOMBREVIA00", "PORTAL00", "LETRAPORTAL00", "ESCALERA00",
			"PISO00", "PUERTA00", "CODPOSTAL00", "INDDOMIC00", "IBAN00", "FMANDATO00", "FENVSIPCA00", "IDFICHEROENV00",
			"FCOBROPROV00", "FCOBRODEF00", "FANUCOBRO00", "MOTIVOANUCOBRO00", "IDFICHEROCSB1900", "FCARGO00",
			"IDPAGOPASARELA00", "ESTADOLIQ00", "BIC00", "USUALTA00", "FALTA00", "USUMODIF00", "FMODIF00", "MANDATO00",
			"TIPOSINGRESOIDTIPOINGRESO30", "TIPOSINGRESOTIPOINGRESO30", "TIPOSINGRESODESCRIPCIONES30",
			"TIPOSINGRESODESCRIPCIONEU30", "TIPOSINGRESOIDAPLICACION30", "TIPOSINGRESODIASLIMPAG30",
			"TIPOSINGRESOFICHTERRITORIO30", "TIPOSINGRESOUSUALTA30", "TIPOSINGRESOFALTA30", "TIPOSINGRESOUSUMODIF30",
			"TIPOSINGRESOFMODIF30" };

	private JdbcTemplate jdbcTemplate;

	public static final String SEQUENCE_LIQUIDACIONES = "SEQ_LIQUIDACIONES";

	/*
	 * ROW_MAPPERS
	 */
	private RowMapper<Liquidaciones> rwMap = new RowMapper<Liquidaciones>() {
		public Liquidaciones mapRow(ResultSet resultSet, int rowNum) throws SQLException {
			return new Liquidaciones(UtilSQL.getLong(resultSet, "IDLIQUIDACION00"), resultSet.getLong("EJERCICIO00"),
					UtilSQL.getInt(resultSet, "NUMLIQUIDACION00"), resultSet.getString("CODORIGEN00"),
					resultSet.getBigDecimal("IMPORTE00"), resultSet.getDate("FEMISION00"),
					resultSet.getDate("FLIMITEPAGO00"), resultSet.getString("REFERENCIALIQ00"),
					resultSet.getString("DIGITOCONTROL00"), UtilSQL.getInt(resultSet, "IDTERRITORIO00"),
					resultSet.getString("EXPEDIENTE00"), resultSet.getString("CONCEPTO00"),
					UtilSQL.getInt(resultSet, "TIPOTERCERO00"), resultSet.getString("TERCERO00"),
					resultSet.getString("NOMRACSOC00"), resultSet.getString("APELLIDO100"),
					resultSet.getString("APELLIDO200"), UtilSQL.getInt(resultSet, "RESIDENTE00"),
					UtilSQL.getLong(resultSet, "CODPAIS00"), resultSet.getString("LOCALIDAD00"),
					UtilSQL.getLong(resultSet, "CODPROVINCIA00"), UtilSQL.getLong(resultSet, "CODMUNICIPIO00"),
					UtilSQL.getLong(resultSet, "CODLOCALIDAD00"), resultSet.getString("TIPOVIA00"),
					resultSet.getString("NOMBREVIA00"), resultSet.getString("PORTAL00"),
					resultSet.getString("LETRAPORTAL00"), resultSet.getString("ESCALERA00"),
					resultSet.getString("PISO00"), resultSet.getString("PUERTA00"), resultSet.getString("CODPOSTAL00"),
					UtilSQL.getInt(resultSet, "INDDOMIC00"), resultSet.getString("IBAN00"),
					resultSet.getDate("FMANDATO00"), resultSet.getDate("FENVSIPCA00"),
					UtilSQL.getInt(resultSet, "IDFICHEROENV00"), resultSet.getDate("FCOBROPROV00"),
					resultSet.getDate("FCOBRODEF00"), resultSet.getDate("FANUCOBRO00"),
					resultSet.getString("MOTIVOANUCOBRO00"), UtilSQL.getInt(resultSet, "IDFICHEROCSB1900"),
					resultSet.getDate("FCARGO00"), resultSet.getString("IDPAGOPASARELA00"),
					UtilSQL.getLong(resultSet, "ESTADOLIQ00"), resultSet.getString("BIC00"),
					resultSet.getString("USUALTA00"), resultSet.getDate("FALTA00"), resultSet.getString("USUMODIF00"),
					resultSet.getDate("FMODIF00"), resultSet.getString("MANDATO00"),
					new TiposIngreso(UtilSQL.getLong(resultSet, "TiposIngresoIDTIPOINGRESO30"),
							resultSet.getString("TiposIngresoTIPOINGRESO30"),
							resultSet.getString("TiposIngresoDESCRIPCIONES30"),
							resultSet.getString("TiposIngresoDESCRIPCIONEU30"),
							UtilSQL.getLong(resultSet, "TiposIngresoIDAPLICACION30"),
							UtilSQL.getLong(resultSet, "TiposIngresoDIASLIMPAG30"),
							UtilSQL.getInt(resultSet, "TiposIngresoFICHTERRITORIO30"),
							resultSet.getString("TiposIngresoUSUALTA30"), resultSet.getDate("TiposIngresoFALTA30"),
							resultSet.getString("TiposIngresoUSUMODIF30"), resultSet.getDate("TiposIngresoFMODIF30")));
		}
	};

	private RowMapper<Liquidaciones> rwMapPK = new RowMapper<Liquidaciones>() {
		public Liquidaciones mapRow(ResultSet resultSet, int rowNum) throws SQLException {
			return new Liquidaciones(UtilSQL.getLong(resultSet, "IDLIQUIDACION00"));
		}
	};

	/**
	 * 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 Liquidaciones table.
	 *
	 * @param liquidaciones Liquidaciones
	 *
	 * @return Liquidaciones
	 */
	public Liquidaciones add(Liquidaciones liquidaciones) {

		GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder();

		String query = "INSERT INTO AE01B.LIQUIDACIONES (ID_LIQUIDACION_00, ID_TIPO_INGRESO_00, EJERCICIO_00, NUM_LIQUIDACION_00, COD_ORIGEN_00, IMPORTE_00, F_EMISION_00, F_LIMITE_PAGO_00, REFERENCIA_LIQ_00, DIGITO_CONTROL_00, ID_TERRITORIO_00, EXPEDIENTE_00, CONCEPTO_00, TIPO_TERCERO_00, TERCERO_00, NOM_RAC_SOC_00, APELLIDO1_00, APELLIDO2_00, RESIDENTE_00, COD_PAIS_00, LOCALIDAD_00, COD_PROVINCIA_00, COD_MUNICIPIO_00, COD_LOCALIDAD_00, TIPO_VIA_00, NOMBRE_VIA_00, PORTAL_00, LETRA_PORTAL_00, ESCALERA_00, PISO_00, PUERTA_00, COD_POSTAL_00, IND_DOMIC_00, IBAN_00, F_MANDATO_00, F_ENV_SIPCA_00, ID_FICHERO_ENV_00, F_COBRO_PROV_00, F_COBRO_DEF_00, F_ANU_COBRO_00, MOTIVO_ANU_COBRO_00, ID_FICHEROCSB19_00, F_CARGO_00, ID_PAGO_PASARELA_00, ESTADO_LIQ_00, BIC_00, USU_ALTA_00, F_ALTA_00, USU_MODIF_00, F_MODIF_00, MANDATO_00) "
				+ "VALUES (" + SEQUENCE_LIQUIDACIONES
				+ ".NEXTVAL,:idTipoIngreso00,:ejercicio00,:numLiquidacion00,:codOrigen00,:importe00,sysdate,:fLimitePago00,:referenciaLiq00,:digitoControl00,:idTerritorio00,:expediente00,:concepto00,:tipoTercero00,:tercero00,:nomRacSoc00,:apellido100,:apellido200,:residente00,:codPais00,:localidad00,:codProvincia00,:codMunicipio00,:codLocalidad00,:tipoVia00,:nombreVia00,:portal00,:letraPortal00,:escalera00,:piso00,:puerta00,:codPostal00,:indDomic00,:iban00,:fMandato00,:fEnvSipca00,:idFicheroEnv00,:fCobroProv00,:fCobroDef00,:fAnuCobro00,:motivoAnuCobro00,:idFicheroCsb1900,:fCargo00,:idPagoPasarela00,:estadoLiq00,:bic00,:usuAlta00, :fAlta00, :usuModif00, :fModif00, :mandato00)";

		Object getTiposIngresoIdTipoIngreso30Aux = null;
		if (liquidaciones.getTiposIngreso() != null && liquidaciones.getTiposIngreso().getIdTipoIngreso30() != null) {
			getTiposIngresoIdTipoIngreso30Aux = liquidaciones.getTiposIngreso().getIdTipoIngreso30();
		}

		MapSqlParameterSource parameters = new MapSqlParameterSource()
				.addValue("idTipoIngreso00", getTiposIngresoIdTipoIngreso30Aux)
				.addValue("ejercicio00", liquidaciones.getEjercicio00())
				.addValue("numLiquidacion00", liquidaciones.getNumLiquidacion00())
				.addValue("codOrigen00", liquidaciones.getCodOrigen00())
				.addValue("importe00", liquidaciones.getImporte00())
				.addValue("fLimitePago00", liquidaciones.getfLimitePago00())
				.addValue("referenciaLiq00", liquidaciones.getReferenciaLiq00())
				.addValue("digitoControl00", liquidaciones.getDigitoControl00())
				.addValue("idTerritorio00", liquidaciones.getIdTerritorio00())
				.addValue("expediente00", liquidaciones.getExpediente00())
				.addValue("concepto00", liquidaciones.getConcepto00())
				.addValue("tipoTercero00", liquidaciones.getTipoTercero00())
				.addValue("tercero00", liquidaciones.getTercero00())
				.addValue("nomRacSoc00", liquidaciones.getNomRacSoc00())
				.addValue("apellido100", liquidaciones.getApellido100())
				.addValue("apellido200", liquidaciones.getApellido200())
				.addValue("residente00", liquidaciones.getResidente00())
				.addValue("codPais00", liquidaciones.getCodPais00())
				.addValue("localidad00", liquidaciones.getLocalidad00())
				.addValue("codProvincia00", liquidaciones.getCodProvincia00())
				.addValue("codMunicipio00", liquidaciones.getCodMunicipio00())
				.addValue("codLocalidad00", liquidaciones.getCodLocalidad00())
				.addValue("tipoVia00", liquidaciones.getTipoVia00())
				.addValue("nombreVia00", liquidaciones.getNombreVia00())
				.addValue("portal00", liquidaciones.getPortal00())
				.addValue("letraPortal00", liquidaciones.getLetraPortal00())
				.addValue("escalera00", liquidaciones.getEscalera00()).addValue("piso00", liquidaciones.getPiso00())
				.addValue("puerta00", liquidaciones.getPuerta00())
				.addValue("codPostal00", liquidaciones.getCodPostal00())
				.addValue("indDomic00", liquidaciones.getIndDomic00()).addValue("iban00", liquidaciones.getIban00())
				.addValue("fMandato00", liquidaciones.getfMandato00())
				.addValue("fEnvSipca00", liquidaciones.getfEnvSipca00())
				.addValue("idFicheroEnv00", liquidaciones.getIdFicheroEnv00())
				.addValue("fCobroProv00", liquidaciones.getfCobroProv00())
				.addValue("fCobroDef00", liquidaciones.getfCobroDef00())
				.addValue("fAnuCobro00", liquidaciones.getfAnuCobro00())
				.addValue("motivoAnuCobro00", liquidaciones.getMotivoAnuCobro00())
				.addValue("idFicheroCsb1900", liquidaciones.getIdFicherocsb1900())
				.addValue("fCargo00", liquidaciones.getfCargo00())
				.addValue("idPagoPasarela00", liquidaciones.getIdPagoPasarela00())
				.addValue("estadoLiq00", liquidaciones.getEstadoLiq00()).addValue("bic00", liquidaciones.getBic00())
				.addValue("usuAlta00", liquidaciones.getUsuAlta00()).addValue("fAlta00", liquidaciones.getfAlta00())
				.addValue("usuModif00", liquidaciones.getUsuModif00()).addValue("fModif00", liquidaciones.getfModif00())
				.addValue("mandato00", liquidaciones.getMandato00());

		NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
		namedParameterJdbcTemplate.update(query, parameters, generatedKeyHolder, new String[] { "ID_LIQUIDACION_00" });
		liquidaciones.setIdLiquidacion00(generatedKeyHolder.getKey().longValue());

		return liquidaciones;
	}

	/**
	 * Updates a single row in the Liquidaciones table.
	 *
	 * @param liquidaciones Liquidaciones
	 *
	 * @return Liquidaciones
	 */
	public Liquidaciones update(Liquidaciones liquidaciones) {
		String query = "UPDATE AE01B.LIQUIDACIONES SET ID_TIPO_INGRESO_00=?, EJERCICIO_00=?, NUM_LIQUIDACION_00=?, COD_ORIGEN_00=?, IMPORTE_00=?, F_EMISION_00=?, F_LIMITE_PAGO_00=?, REFERENCIA_LIQ_00=?, DIGITO_CONTROL_00=?, ID_TERRITORIO_00=?, EXPEDIENTE_00=?, CONCEPTO_00=?, TIPO_TERCERO_00=?, TERCERO_00=?, NOM_RAC_SOC_00=?, APELLIDO1_00=?, APELLIDO2_00=?, RESIDENTE_00=?, COD_PAIS_00=?, LOCALIDAD_00=?, COD_PROVINCIA_00=?, COD_MUNICIPIO_00=?, COD_LOCALIDAD_00=?, TIPO_VIA_00=?, NOMBRE_VIA_00=?, PORTAL_00=?, LETRA_PORTAL_00=?, ESCALERA_00=?, PISO_00=?, PUERTA_00=?, COD_POSTAL_00=?, IND_DOMIC_00=?, IBAN_00=?, F_MANDATO_00=?, F_ENV_SIPCA_00=?, ID_FICHERO_ENV_00=?, F_COBRO_PROV_00=?, F_COBRO_DEF_00=?, F_ANU_COBRO_00=?, MOTIVO_ANU_COBRO_00=?, ID_FICHEROCSB19_00=?, F_CARGO_00=?, ID_PAGO_PASARELA_00=?, ESTADO_LIQ_00=?, BIC_00=?, USU_MODIF_00=?, F_MODIF_00=?, MANDATO_00=? WHERE ID_LIQUIDACION_00=?";
		Object getTiposIngresoIdTipoIngreso30Aux = null;
		if (liquidaciones.getTiposIngreso() != null && liquidaciones.getTiposIngreso().getIdTipoIngreso30() != null) {
			getTiposIngresoIdTipoIngreso30Aux = liquidaciones.getTiposIngreso().getIdTipoIngreso30();
		}
		this.jdbcTemplate.update(query, getTiposIngresoIdTipoIngreso30Aux, liquidaciones.getEjercicio00(),
				liquidaciones.getNumLiquidacion00(), liquidaciones.getCodOrigen00(), liquidaciones.getImporte00(),
				liquidaciones.getfEmision00(), liquidaciones.getfLimitePago00(), liquidaciones.getReferenciaLiq00(),
				liquidaciones.getDigitoControl00(), liquidaciones.getIdTerritorio00(), liquidaciones.getExpediente00(),
				liquidaciones.getConcepto00(), liquidaciones.getTipoTercero00(), liquidaciones.getTercero00(),
				liquidaciones.getNomRacSoc00(), liquidaciones.getApellido100(), liquidaciones.getApellido200(),
				liquidaciones.getResidente00(), liquidaciones.getCodPais00(), liquidaciones.getLocalidad00(),
				liquidaciones.getCodProvincia00(), liquidaciones.getCodMunicipio00(), liquidaciones.getCodLocalidad00(),
				liquidaciones.getTipoVia00(), liquidaciones.getNombreVia00(), liquidaciones.getPortal00(),
				liquidaciones.getLetraPortal00(), liquidaciones.getEscalera00(), liquidaciones.getPiso00(),
				liquidaciones.getPuerta00(), liquidaciones.getCodPostal00(), liquidaciones.getIndDomic00(),
				liquidaciones.getIban00(), liquidaciones.getfMandato00(), liquidaciones.getfEnvSipca00(),
				liquidaciones.getIdFicheroEnv00(), liquidaciones.getfCobroProv00(), liquidaciones.getfCobroDef00(),
				liquidaciones.getfAnuCobro00(), liquidaciones.getMotivoAnuCobro00(),
				liquidaciones.getIdFicherocsb1900(), liquidaciones.getfCargo00(), liquidaciones.getIdPagoPasarela00(),
				liquidaciones.getEstadoLiq00(), liquidaciones.getBic00(), liquidaciones.getUsuModif00(),
				liquidaciones.getfModif00(), liquidaciones.getMandato00(), liquidaciones.getIdLiquidacion00());
		return liquidaciones;
	}

	/**
	 * Finds a single row in the Liquidaciones table.
	 *
	 * @param liquidaciones Liquidaciones
	 *
	 * @return Liquidaciones
	 */
	@Transactional(readOnly = true)
	public Liquidaciones find(Liquidaciones liquidaciones) {
		String query = "SELECT t1.ID_LIQUIDACION_00 IDLIQUIDACION00, t1.EJERCICIO_00 EJERCICIO00, t1.NUM_LIQUIDACION_00 NUMLIQUIDACION00, t1.COD_ORIGEN_00 CODORIGEN00, t1.IMPORTE_00 IMPORTE00, t1.F_EMISION_00 FEMISION00, t1.F_LIMITE_PAGO_00 FLIMITEPAGO00, t1.REFERENCIA_LIQ_00 REFERENCIALIQ00, t1.DIGITO_CONTROL_00 DIGITOCONTROL00, t1.ID_TERRITORIO_00 IDTERRITORIO00, t1.EXPEDIENTE_00 EXPEDIENTE00, t1.CONCEPTO_00 CONCEPTO00, t1.TIPO_TERCERO_00 TIPOTERCERO00, t1.TERCERO_00 TERCERO00, t1.NOM_RAC_SOC_00 NOMRACSOC00, t1.APELLIDO1_00 APELLIDO100, t1.APELLIDO2_00 APELLIDO200, t1.RESIDENTE_00 RESIDENTE00, t1.COD_PAIS_00 CODPAIS00, t1.LOCALIDAD_00 LOCALIDAD00, t1.COD_PROVINCIA_00 CODPROVINCIA00, t1.COD_MUNICIPIO_00 CODMUNICIPIO00, t1.COD_LOCALIDAD_00 CODLOCALIDAD00, t1.TIPO_VIA_00 TIPOVIA00, t1.NOMBRE_VIA_00 NOMBREVIA00, t1.PORTAL_00 PORTAL00, t1.LETRA_PORTAL_00 LETRAPORTAL00, t1.ESCALERA_00 ESCALERA00, t1.PISO_00 PISO00, t1.PUERTA_00 PUERTA00, t1.COD_POSTAL_00 CODPOSTAL00, t1.IND_DOMIC_00 INDDOMIC00, t1.IBAN_00 IBAN00, t1.F_MANDATO_00 FMANDATO00, t1.F_ENV_SIPCA_00 FENVSIPCA00, t1.ID_FICHERO_ENV_00 IDFICHEROENV00, t1.F_COBRO_PROV_00 FCOBROPROV00, t1.F_COBRO_DEF_00 FCOBRODEF00, t1.F_ANU_COBRO_00 FANUCOBRO00, t1.MOTIVO_ANU_COBRO_00 MOTIVOANUCOBRO00, t1.ID_FICHEROCSB19_00 IDFICHEROCSB1900, t1.F_CARGO_00 FCARGO00, t1.ID_PAGO_PASARELA_00 IDPAGOPASARELA00, t1.ESTADO_LIQ_00 ESTADOLIQ00, t1.BIC_00 BIC00, t1.USU_ALTA_00 USUALTA00, t1.F_ALTA_00 FALTA00, t1.USU_MODIF_00 USUMODIF00, t1.F_MODIF_00 FMODIF00, t1.MANDATO_00 MANDATO00, t2.ID_TIPO_INGRESO_30 TIPOSINGRESOIDTIPOINGRESO30, t2.TIPO_INGRESO_30 TIPOSINGRESOTIPOINGRESO30, t2.DESCRIPCION_ES_30 TIPOSINGRESODESCRIPCIONES30, t2.DESCRIPCION_EU_30 TIPOSINGRESODESCRIPCIONEU30, t2.ID_APLICACION_30 TIPOSINGRESOIDAPLICACION30, t2.DIAS_LIM_PAG_30 TIPOSINGRESODIASLIMPAG30, t2.FICH_TERRITORIO_30 TIPOSINGRESOFICHTERRITORIO30, t2.USU_ALTA_30 TIPOSINGRESOUSUALTA30, t2.F_ALTA_30 TIPOSINGRESOFALTA30, t2.USU_MODIF_30 TIPOSINGRESOUSUMODIF30, t2.F_MODIF_30 TIPOSINGRESOFMODIF30 FROM AE01B.LIQUIDACIONES t1 , AE01B.TIPOS_INGRESO t2  WHERE t1.ID_LIQUIDACION_00 = ?   AND t1.ID_TIPO_INGRESO_00= t2.ID_TIPO_INGRESO_30(+)";

		List<Liquidaciones> liquidacionesList = this.jdbcTemplate.query(query, this.rwMap,
				liquidaciones.getIdLiquidacion00());
		return DataAccessUtils.uniqueResult(liquidacionesList);
	}

	/**
	 * Removes a single row in the Liquidaciones table.
	 *
	 * @param liquidaciones Liquidaciones
	 */
	public void remove(Liquidaciones liquidaciones) {
		String query = "DELETE FROM AE01B.LIQUIDACIONES WHERE ID_LIQUIDACION_00=?";
		this.jdbcTemplate.update(query, liquidaciones.getIdLiquidacion00());
	}

	public List<Liquidaciones> getMultiple(Liquidaciones filterLiquidaciones, TableRequestDto tableRequestDto,
			Boolean startsWith) {
		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT t1.ID_LIQUIDACION_00 IDLIQUIDACION00, t1.EJERCICIO_00 EJERCICIO00, t1.NUM_LIQUIDACION_00 NUMLIQUIDACION00, t1.COD_ORIGEN_00 CODORIGEN00, t1.IMPORTE_00 IMPORTE00, t1.F_EMISION_00 FEMISION00, t1.F_LIMITE_PAGO_00 FLIMITEPAGO00, t1.REFERENCIA_LIQ_00 REFERENCIALIQ00, t1.DIGITO_CONTROL_00 DIGITOCONTROL00, t1.ID_TERRITORIO_00 IDTERRITORIO00, t1.EXPEDIENTE_00 EXPEDIENTE00, t1.CONCEPTO_00 CONCEPTO00, t1.TIPO_TERCERO_00 TIPOTERCERO00, t1.TERCERO_00 TERCERO00, t1.NOM_RAC_SOC_00 NOMRACSOC00, t1.APELLIDO1_00 APELLIDO100, t1.APELLIDO2_00 APELLIDO200, t1.RESIDENTE_00 RESIDENTE00, t1.COD_PAIS_00 CODPAIS00, t1.LOCALIDAD_00 LOCALIDAD00, t1.COD_PROVINCIA_00 CODPROVINCIA00, t1.COD_MUNICIPIO_00 CODMUNICIPIO00, t1.COD_LOCALIDAD_00 CODLOCALIDAD00, t1.TIPO_VIA_00 TIPOVIA00, t1.NOMBRE_VIA_00 NOMBREVIA00, t1.PORTAL_00 PORTAL00, t1.LETRA_PORTAL_00 LETRAPORTAL00, t1.ESCALERA_00 ESCALERA00, t1.PISO_00 PISO00, t1.PUERTA_00 PUERTA00, t1.COD_POSTAL_00 CODPOSTAL00, t1.IND_DOMIC_00 INDDOMIC00, t1.IBAN_00 IBAN00, t1.F_MANDATO_00 FMANDATO00, t1.F_ENV_SIPCA_00 FENVSIPCA00, t1.ID_FICHERO_ENV_00 IDFICHEROENV00, t1.F_COBRO_PROV_00 FCOBROPROV00, t1.F_COBRO_DEF_00 FCOBRODEF00, t1.F_ANU_COBRO_00 FANUCOBRO00, t1.MOTIVO_ANU_COBRO_00 MOTIVOANUCOBRO00, t1.ID_FICHEROCSB19_00 IDFICHEROCSB1900, t1.F_CARGO_00 FCARGO00, t1.ID_PAGO_PASARELA_00 IDPAGOPASARELA00, t1.ESTADO_LIQ_00 ESTADOLIQ00, t1.BIC_00 BIC00, t1.USU_ALTA_00 USUALTA00, t1.F_ALTA_00 FALTA00, t1.USU_MODIF_00 USUMODIF00, t1.F_MODIF_00 FMODIF00, t1.MANDATO_00 MANDATO00, t2.ID_TIPO_INGRESO_30 TIPOSINGRESOIDTIPOINGRESO30, t2.TIPO_INGRESO_30 TIPOSINGRESOTIPOINGRESO30, t2.DESCRIPCION_ES_30 TIPOSINGRESODESCRIPCIONES30, t2.DESCRIPCION_EU_30 TIPOSINGRESODESCRIPCIONEU30, t2.ID_APLICACION_30 TIPOSINGRESOIDAPLICACION30, t2.DIAS_LIM_PAG_30 TIPOSINGRESODIASLIMPAG30, t2.FICH_TERRITORIO_30 TIPOSINGRESOFICHTERRITORIO30, t2.USU_ALTA_30 TIPOSINGRESOUSUALTA30, t2.F_ALTA_30 TIPOSINGRESOFALTA30, t2.USU_MODIF_30 TIPOSINGRESOUSUMODIF30, t2.F_MODIF_30 TIPOSINGRESOFMODIF30 ");
		// FROM
		query.append("FROM AE01B.LIQUIDACIONES t1 , AE01B.TIPOS_INGRESO t2 ");
		// WHERE clause & Params
		Map<String, Object> mapaWhere = this.getWhereLikeMap(filterLiquidaciones, 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 sbMultipleSQL = query.append(
				TableManager.getSelectMultipleQuery(tableRequestDto, Liquidaciones.class, params, "id_liquidacion_00"));

		return this.jdbcTemplate.query(sbMultipleSQL.toString(), this.rwMap, params.toArray());
	}

	/**
	 * Finds a list of rows in the Liquidaciones table.
	 *
	 * @param liquidaciones   Liquidaciones
	 * @param tableRequestDto TableRequestDto
	 *
	 * @return List<Liquidaciones>
	 */
	@Transactional(readOnly = true)
	public List<Liquidaciones> findAll(Liquidaciones liquidaciones, TableRequestDto tableRequestDto) {
		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_LIQUIDACION_00 IDLIQUIDACION00,t1.EJERCICIO_00 EJERCICIO00,t1.NUM_LIQUIDACION_00 NUMLIQUIDACION00,t1.COD_ORIGEN_00 CODORIGEN00,t1.IMPORTE_00 IMPORTE00,t1.F_EMISION_00 FEMISION00,t1.F_LIMITE_PAGO_00 FLIMITEPAGO00,t1.REFERENCIA_LIQ_00 REFERENCIALIQ00,t1.DIGITO_CONTROL_00 DIGITOCONTROL00,t1.ID_TERRITORIO_00 IDTERRITORIO00,t1.EXPEDIENTE_00 EXPEDIENTE00,t1.CONCEPTO_00 CONCEPTO00,t1.TIPO_TERCERO_00 TIPOTERCERO00,t1.TERCERO_00 TERCERO00,t1.NOM_RAC_SOC_00 NOMRACSOC00,t1.APELLIDO1_00 APELLIDO100,t1.APELLIDO2_00 APELLIDO200,t1.RESIDENTE_00 RESIDENTE00,t1.COD_PAIS_00 CODPAIS00,t1.LOCALIDAD_00 LOCALIDAD00,t1.COD_PROVINCIA_00 CODPROVINCIA00,t1.COD_MUNICIPIO_00 CODMUNICIPIO00,t1.COD_LOCALIDAD_00 CODLOCALIDAD00,t1.TIPO_VIA_00 TIPOVIA00,t1.NOMBRE_VIA_00 NOMBREVIA00,t1.PORTAL_00 PORTAL00,t1.LETRA_PORTAL_00 LETRAPORTAL00,t1.ESCALERA_00 ESCALERA00,t1.PISO_00 PISO00,t1.PUERTA_00 PUERTA00,t1.COD_POSTAL_00 CODPOSTAL00,t1.IND_DOMIC_00 INDDOMIC00,t1.IBAN_00 IBAN00,t1.F_MANDATO_00 FMANDATO00,t1.F_ENV_SIPCA_00 FENVSIPCA00,t1.ID_FICHERO_ENV_00 IDFICHEROENV00,t1.F_COBRO_PROV_00 FCOBROPROV00,t1.F_COBRO_DEF_00 FCOBRODEF00,t1.F_ANU_COBRO_00 FANUCOBRO00,t1.MOTIVO_ANU_COBRO_00 MOTIVOANUCOBRO00,t1.ID_FICHEROCSB19_00 IDFICHEROCSB1900,t1.F_CARGO_00 FCARGO00,t1.ID_PAGO_PASARELA_00 IDPAGOPASARELA00,t1.ESTADO_LIQ_00 ESTADOLIQ00,t1.BIC_00 BIC00, t1.USU_ALTA_00 USUALTA00, t1.F_ALTA_00 FALTA00, t1.USU_MODIF_00 USUMODIF00, t1.F_MODIF_00 FMODIF00, t1.MANDATO_00 MANDATO00, t2.ID_TIPO_INGRESO_30 TIPOSINGRESOIDTIPOINGRESO30,t2.TIPO_INGRESO_30 TIPOSINGRESOTIPOINGRESO30,t2.DESCRIPCION_ES_30 TIPOSINGRESODESCRIPCIONES30,t2.DESCRIPCION_EU_30 TIPOSINGRESODESCRIPCIONEU30,t2.ID_APLICACION_30 TIPOSINGRESOIDAPLICACION30,t2.DIAS_LIM_PAG_30 TIPOSINGRESODIASLIMPAG30,t2.FICH_TERRITORIO_30 TIPOSINGRESOFICHTERRITORIO30, t2.USU_ALTA_30 TIPOSINGRESOUSUALTA30, t2.F_ALTA_30 TIPOSINGRESOFALTA30, t2.USU_MODIF_30 TIPOSINGRESOUSUMODIF30, t2.F_MODIF_30 TIPOSINGRESOFMODIF30 ");

		// FROM
		query.append("FROM AE01B.LIQUIDACIONES t1 ,AE01B.TIPOS_INGRESO t2 ");

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

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

		if (tableRequestDto != null) {
			query = TableManager.getPaginationQuery(tableRequestDto, query, LiquidacionesDaoImpl.ORDER_BY_WHITE_LIST);
		}

		return this.jdbcTemplate.query(query.toString(), this.rwMap, params.toArray());
	}

	/**
	 * Finds rows in the Liquidaciones table using like.
	 *
	 * @param liquidaciones   Liquidaciones
	 * @param tableRequestDto TableRequestDto
	 * @param startsWith      Boolean
	 *
	 * @return List<Liquidaciones>
	 */
	@Transactional(readOnly = true)
	public List<Liquidaciones> findAllLike(Liquidaciones liquidaciones, TableRequestDto tableRequestDto,
			Boolean startsWith) {
		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_LIQUIDACION_00 IDLIQUIDACION00,t1.EJERCICIO_00 EJERCICIO00,t1.NUM_LIQUIDACION_00 NUMLIQUIDACION00,t1.COD_ORIGEN_00 CODORIGEN00,t1.IMPORTE_00 IMPORTE00,t1.F_EMISION_00 FEMISION00,t1.F_LIMITE_PAGO_00 FLIMITEPAGO00,t1.REFERENCIA_LIQ_00 REFERENCIALIQ00,t1.DIGITO_CONTROL_00 DIGITOCONTROL00,t1.ID_TERRITORIO_00 IDTERRITORIO00,t1.EXPEDIENTE_00 EXPEDIENTE00,t1.CONCEPTO_00 CONCEPTO00,t1.TIPO_TERCERO_00 TIPOTERCERO00,t1.TERCERO_00 TERCERO00,t1.NOM_RAC_SOC_00 NOMRACSOC00,t1.APELLIDO1_00 APELLIDO100,t1.APELLIDO2_00 APELLIDO200,t1.RESIDENTE_00 RESIDENTE00,t1.COD_PAIS_00 CODPAIS00,t1.LOCALIDAD_00 LOCALIDAD00,t1.COD_PROVINCIA_00 CODPROVINCIA00,t1.COD_MUNICIPIO_00 CODMUNICIPIO00,t1.COD_LOCALIDAD_00 CODLOCALIDAD00,t1.TIPO_VIA_00 TIPOVIA00,t1.NOMBRE_VIA_00 NOMBREVIA00,t1.PORTAL_00 PORTAL00,t1.LETRA_PORTAL_00 LETRAPORTAL00,t1.ESCALERA_00 ESCALERA00,t1.PISO_00 PISO00,t1.PUERTA_00 PUERTA00,t1.COD_POSTAL_00 CODPOSTAL00,t1.IND_DOMIC_00 INDDOMIC00,t1.IBAN_00 IBAN00,t1.F_MANDATO_00 FMANDATO00,t1.F_ENV_SIPCA_00 FENVSIPCA00,t1.ID_FICHERO_ENV_00 IDFICHEROENV00,t1.F_COBRO_PROV_00 FCOBROPROV00,t1.F_COBRO_DEF_00 FCOBRODEF00,t1.F_ANU_COBRO_00 FANUCOBRO00,t1.MOTIVO_ANU_COBRO_00 MOTIVOANUCOBRO00,t1.ID_FICHEROCSB19_00 IDFICHEROCSB1900,t1.F_CARGO_00 FCARGO00,t1.ID_PAGO_PASARELA_00 IDPAGOPASARELA00,t1.ESTADO_LIQ_00 ESTADOLIQ00,t1.BIC_00 BIC00, t1.USU_ALTA_00 USUALTA00, t1.F_ALTA_00 FALTA00, t1.USU_MODIF_00 USUMODIF00, t1.F_MODIF_00 FMODIF00, t1.MANDATO_00 MANDATO00, t2.ID_TIPO_INGRESO_30 TIPOSINGRESOIDTIPOINGRESO30,t2.TIPO_INGRESO_30 TIPOSINGRESOTIPOINGRESO30,t2.DESCRIPCION_ES_30 TIPOSINGRESODESCRIPCIONES30,t2.DESCRIPCION_EU_30 TIPOSINGRESODESCRIPCIONEU30,t2.ID_APLICACION_30 TIPOSINGRESOIDAPLICACION30,t2.DIAS_LIM_PAG_30 TIPOSINGRESODIASLIMPAG30,t2.FICH_TERRITORIO_30 TIPOSINGRESOFICHTERRITORIO30, t2.USU_ALTA_30 TIPOSINGRESOUSUALTA30, t2.F_ALTA_30 TIPOSINGRESOFALTA30, t2.USU_MODIF_30 TIPOSINGRESOUSUMODIF30, t2.F_MODIF_30 TIPOSINGRESOFMODIF30 ");

		// FROM
		query.append("FROM AE01B.LIQUIDACIONES t1 ,AE01B.TIPOS_INGRESO t2 ");

		// WHERE clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(liquidaciones, startsWith);
		StringBuilder where = new StringBuilder(" WHERE 1=1 AND t1.ID_TIPO_INGRESO_00= t2.ID_TIPO_INGRESO_30(+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

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

		if (tableRequestDto != null) {
			query = TableManager.getPaginationQuery(tableRequestDto, query, LiquidacionesDaoImpl.ORDER_BY_WHITE_LIST);
		}

		return this.jdbcTemplate.query(query.toString(), this.rwMap, params.toArray());
	}

	/*
	 * OPERACIONES RUP_TABLE
	 */

	/**
	 * Counts rows in the Liquidaciones table.
	 *
	 * @param liquidaciones Liquidaciones
	 *
	 * @return Long
	 */
	@Transactional(readOnly = true)
	public Long findAllCount(Liquidaciones liquidaciones) {
		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT COUNT(1) FROM AE01B.LIQUIDACIONES t1 , AE01B.TIPOS_INGRESO t2 ");

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

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

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

	/**
	 * Counts rows in the Liquidaciones table using like.
	 *
	 * @param liquidaciones Liquidaciones
	 * @param startsWith    Boolean
	 *
	 * @return Long
	 */
	@Transactional(readOnly = true)
	public Long findAllLikeCount(Liquidaciones liquidaciones, Boolean startsWith) {
		// SELECT
		StringBuilder query = new StringBuilder("SELECT COUNT(1) FROM AE01B.LIQUIDACIONES t1 ,AE01B.TIPOS_INGRESO t2 ");

		// WHERE clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(liquidaciones, startsWith);
		StringBuilder where = new StringBuilder(" WHERE 1=1 AND t1.ID_TIPO_INGRESO_00= t2.ID_TIPO_INGRESO_30(+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

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

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

	/**
	 * Reorder the data list of Liquidaciones selected for rup_table
	 *
	 * @param liquidaciones   Liquidaciones
	 * @param tableRequestDto TableRequestDto
	 * @param startsWith      Boolean
	 *
	 * @return List<TableRowDto<Liquidaciones>>
	 */
	@Override
	public List<TableRowDto<Liquidaciones>> reorderSelection(Liquidaciones liquidaciones,
			TableRequestDto tableRequestDto, Boolean startsWith) {
		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT t1.ID_LIQUIDACION_00 IDLIQUIDACION00,t1.EJERCICIO_00 EJERCICIO00,t1.NUM_LIQUIDACION_00 NUMLIQUIDACION00,t1.COD_ORIGEN_00 CODORIGEN00,t1.IMPORTE_00 IMPORTE00,t1.F_EMISION_00 FEMISION00,t1.F_LIMITE_PAGO_00 FLIMITEPAGO00,t1.REFERENCIA_LIQ_00 REFERENCIALIQ00,t1.DIGITO_CONTROL_00 DIGITOCONTROL00,t1.ID_TERRITORIO_00 IDTERRITORIO00,t1.EXPEDIENTE_00 EXPEDIENTE00,t1.CONCEPTO_00 CONCEPTO00,t1.TIPO_TERCERO_00 TIPOTERCERO00,t1.TERCERO_00 TERCERO00,t1.NOM_RAC_SOC_00 NOMRACSOC00,t1.APELLIDO1_00 APELLIDO100,t1.APELLIDO2_00 APELLIDO200,t1.RESIDENTE_00 RESIDENTE00,t1.COD_PAIS_00 CODPAIS00,t1.LOCALIDAD_00 LOCALIDAD00,t1.COD_PROVINCIA_00 CODPROVINCIA00,t1.COD_MUNICIPIO_00 CODMUNICIPIO00,t1.COD_LOCALIDAD_00 CODLOCALIDAD00,t1.TIPO_VIA_00 TIPOVIA00,t1.NOMBRE_VIA_00 NOMBREVIA00,t1.PORTAL_00 PORTAL00,t1.LETRA_PORTAL_00 LETRAPORTAL00,t1.ESCALERA_00 ESCALERA00,t1.PISO_00 PISO00,t1.PUERTA_00 PUERTA00,t1.COD_POSTAL_00 CODPOSTAL00,t1.IND_DOMIC_00 INDDOMIC00,t1.IBAN_00 IBAN00,t1.F_MANDATO_00 FMANDATO00,t1.F_ENV_SIPCA_00 FENVSIPCA00,t1.ID_FICHERO_ENV_00 IDFICHEROENV00,t1.F_COBRO_PROV_00 FCOBROPROV00,t1.F_COBRO_DEF_00 FCOBRODEF00,t1.F_ANU_COBRO_00 FANUCOBRO00,t1.MOTIVO_ANU_COBRO_00 MOTIVOANUCOBRO00,t1.ID_FICHEROCSB19_00 IDFICHEROCSB1900,t1.F_CARGO_00 FCARGO00,t1.ID_PAGO_PASARELA_00 IDPAGOPASARELA00,t1.ESTADO_LIQ_00 ESTADOLIQ00,t1.BIC_00 BIC00, t1.USU_ALTA_00 USUALTA00, t1.F_ALTA_00 FALTA00, t1.USU_MODIF_00 USUMODIF00, t1.F_MODIF_00 FMODIF00, t1.MANDATO_00 MANDATO00, t2.ID_TIPO_INGRESO_30 TIPOSINGRESOIDTIPOINGRESO30,t2.TIPO_INGRESO_30 TIPOSINGRESOTIPOINGRESO30,t2.DESCRIPCION_ES_30 TIPOSINGRESODESCRIPCIONES30,t2.DESCRIPCION_EU_30 TIPOSINGRESODESCRIPCIONEU30,t2.ID_APLICACION_30 TIPOSINGRESOIDAPLICACION30,t2.DIAS_LIM_PAG_30 TIPOSINGRESODIASLIMPAG30,t2.FICH_TERRITORIO_30 TIPOSINGRESOFICHTERRITORIO30, t2.USU_ALTA_30 TIPOSINGRESOUSUALTA30, t2.F_ALTA_30 TIPOSINGRESOFALTA30, t2.USU_MODIF_30 TIPOSINGRESOUSUMODIF30, t2.F_MODIF_30 TIPOSINGRESOFMODIF30 ");
		// FROM
		query.append("FROM AE01B.LIQUIDACIONES t1 ,AE01B.TIPOS_INGRESO t2 ");
		// FILTRADO
		// WHERE clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(liquidaciones, startsWith);
		StringBuilder where = new StringBuilder(" WHERE 1=1 AND t1.ID_TIPO_INGRESO_00= t2.ID_TIPO_INGRESO_30(+) ");
		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 = TableManager.getReorderQuery(query, tableRequestDto, Liquidaciones.class,
				filterParamList, "idliquidacion00");

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

	/**
	 * Search method for rup_table
	 *
	 * @param filterParams    Liquidaciones
	 * @param searchParams    Liquidaciones
	 * @param tableRequestDto TableRequestDto
	 * @param startsWith      Boolean
	 *
	 * @return List<TableRowDto<Liquidaciones>>
	 */
	@Override
	public List<TableRowDto<Liquidaciones>> search(Liquidaciones filterParams, Liquidaciones searchParams,
			TableRequestDto tableRequestDto, Boolean startsWith) {
		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT t1.ID_LIQUIDACION_00 IDLIQUIDACION00,t1.EJERCICIO_00 EJERCICIO00,t1.NUM_LIQUIDACION_00 NUMLIQUIDACION00,t1.COD_ORIGEN_00 CODORIGEN00,t1.IMPORTE_00 IMPORTE00,t1.F_EMISION_00 FEMISION00,t1.F_LIMITE_PAGO_00 FLIMITEPAGO00,t1.REFERENCIA_LIQ_00 REFERENCIALIQ00,t1.DIGITO_CONTROL_00 DIGITOCONTROL00,t1.ID_TERRITORIO_00 IDTERRITORIO00,t1.EXPEDIENTE_00 EXPEDIENTE00,t1.CONCEPTO_00 CONCEPTO00,t1.TIPO_TERCERO_00 TIPOTERCERO00,t1.TERCERO_00 TERCERO00,t1.NOM_RAC_SOC_00 NOMRACSOC00,t1.APELLIDO1_00 APELLIDO100,t1.APELLIDO2_00 APELLIDO200,t1.RESIDENTE_00 RESIDENTE00,t1.COD_PAIS_00 CODPAIS00,t1.LOCALIDAD_00 LOCALIDAD00,t1.COD_PROVINCIA_00 CODPROVINCIA00,t1.COD_MUNICIPIO_00 CODMUNICIPIO00,t1.COD_LOCALIDAD_00 CODLOCALIDAD00,t1.TIPO_VIA_00 TIPOVIA00,t1.NOMBRE_VIA_00 NOMBREVIA00,t1.PORTAL_00 PORTAL00,t1.LETRA_PORTAL_00 LETRAPORTAL00,t1.ESCALERA_00 ESCALERA00,t1.PISO_00 PISO00,t1.PUERTA_00 PUERTA00,t1.COD_POSTAL_00 CODPOSTAL00,t1.IND_DOMIC_00 INDDOMIC00,t1.IBAN_00 IBAN00,t1.F_MANDATO_00 FMANDATO00,t1.F_ENV_SIPCA_00 FENVSIPCA00,t1.ID_FICHERO_ENV_00 IDFICHEROENV00,t1.F_COBRO_PROV_00 FCOBROPROV00,t1.F_COBRO_DEF_00 FCOBRODEF00,t1.F_ANU_COBRO_00 FANUCOBRO00,t1.MOTIVO_ANU_COBRO_00 MOTIVOANUCOBRO00,t1.ID_FICHEROCSB19_00 IDFICHEROCSB1900,t1.F_CARGO_00 FCARGO00,t1.ID_PAGO_PASARELA_00 IDPAGOPASARELA00,t1.ESTADO_LIQ_00 ESTADOLIQ00,t1.BIC_00 BIC00, t1.USU_ALTA_00 USUALTA00, t1.F_ALTA_00 FALTA00, t1.USU_MODIF_00 USUMODIF00, t1.F_MODIF_00 FMODIF00, t1.MANDATO_00 MANDATO00, t2.ID_TIPO_INGRESO_30 TIPOSINGRESOIDTIPOINGRESO30,t2.TIPO_INGRESO_30 TIPOSINGRESOTIPOINGRESO30,t2.DESCRIPCION_ES_30 TIPOSINGRESODESCRIPCIONES30,t2.DESCRIPCION_EU_30 TIPOSINGRESODESCRIPCIONEU30,t2.ID_APLICACION_30 TIPOSINGRESOIDAPLICACION30,t2.DIAS_LIM_PAG_30 TIPOSINGRESODIASLIMPAG30,t2.FICH_TERRITORIO_30 TIPOSINGRESOFICHTERRITORIO30, t2.USU_ALTA_30 TIPOSINGRESOUSUALTA30, t2.F_ALTA_30 TIPOSINGRESOFALTA30, t2.USU_MODIF_30 TIPOSINGRESOUSUMODIF30, t2.F_MODIF_30 TIPOSINGRESOFMODIF30 ");
		// FROM
		query.append("FROM AE01B.LIQUIDACIONES t1 ,AE01B.TIPOS_INGRESO 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_TIPO_INGRESO_00= t2.ID_TIPO_INGRESO_30(+) ");
		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 = TableManager.getSearchQuery(query, tableRequestDto, Liquidaciones.class,
				filterParamList, searchSQL, searchParamList, from_alias, "IDLIQUIDACION00");

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

	/**
	 * Remove multiple method for rup_table
	 *
	 * @param tableRequestDto TableRequestDto
	 */
	@Override
	public void removeMultiple(TableRequestDto tableRequestDto) {
		StringBuilder sbRemoveMultipleSQL = TableManager.getRemoveMultipleQuery(null, tableRequestDto,
				Liquidaciones.class, "AE01B.LIQUIDACIONES", "t1", new String[] { "IDLIQUIDACION00" });

		List<String> params = tableRequestDto.getMultiselection().getSelectedIds();

		this.jdbcTemplate.update(sbRemoveMultipleSQL.toString(), params.toArray());
	}

	/**
	 * Operacion de consultar liquidacion.
	 *
	 * @param liquidaciones Liquidaciones
	 *
	 * @return Liquidaciones
	 */
	@Transactional(readOnly = true)
	public Liquidaciones consultarLiquidacion(Liquidaciones liquidaciones) {
		String query = "SELECT t1.ID_LIQUIDACION_00 IDLIQUIDACION00, t1.EJERCICIO_00 EJERCICIO00, t1.NUM_LIQUIDACION_00 NUMLIQUIDACION00, t1.COD_ORIGEN_00 CODORIGEN00, t1.IMPORTE_00 IMPORTE00, t1.F_EMISION_00 FEMISION00, t1.F_LIMITE_PAGO_00 FLIMITEPAGO00, t1.REFERENCIA_LIQ_00 REFERENCIALIQ00, t1.DIGITO_CONTROL_00 DIGITOCONTROL00, t1.ID_TERRITORIO_00 IDTERRITORIO00, t1.EXPEDIENTE_00 EXPEDIENTE00, t1.CONCEPTO_00 CONCEPTO00, t1.TIPO_TERCERO_00 TIPOTERCERO00, t1.TERCERO_00 TERCERO00, t1.NOM_RAC_SOC_00 NOMRACSOC00, t1.APELLIDO1_00 APELLIDO100, t1.APELLIDO2_00 APELLIDO200, t1.RESIDENTE_00 RESIDENTE00, t1.COD_PAIS_00 CODPAIS00, t1.LOCALIDAD_00 LOCALIDAD00, t1.COD_PROVINCIA_00 CODPROVINCIA00, t1.COD_MUNICIPIO_00 CODMUNICIPIO00, t1.COD_LOCALIDAD_00 CODLOCALIDAD00, t1.TIPO_VIA_00 TIPOVIA00, t1.NOMBRE_VIA_00 NOMBREVIA00, t1.PORTAL_00 PORTAL00, t1.LETRA_PORTAL_00 LETRAPORTAL00, t1.ESCALERA_00 ESCALERA00, t1.PISO_00 PISO00, t1.PUERTA_00 PUERTA00, t1.COD_POSTAL_00 CODPOSTAL00, t1.IND_DOMIC_00 INDDOMIC00, t1.IBAN_00 IBAN00, t1.F_MANDATO_00 FMANDATO00, t1.F_ENV_SIPCA_00 FENVSIPCA00, t1.ID_FICHERO_ENV_00 IDFICHEROENV00, t1.F_COBRO_PROV_00 FCOBROPROV00, t1.F_COBRO_DEF_00 FCOBRODEF00, t1.F_ANU_COBRO_00 FANUCOBRO00, t1.MOTIVO_ANU_COBRO_00 MOTIVOANUCOBRO00, t1.ID_FICHEROCSB19_00 IDFICHEROCSB1900, t1.F_CARGO_00 FCARGO00, t1.ID_PAGO_PASARELA_00 IDPAGOPASARELA00, t1.ESTADO_LIQ_00 ESTADOLIQ00, t1.BIC_00 BIC00, t1.USU_ALTA_00 USUALTA00, t1.F_ALTA_00 FALTA00, t1.USU_MODIF_00 USUMODIF00, t1.F_MODIF_00 FMODIF00, t1.MANDATO_00 MANDATO00, t2.ID_TIPO_INGRESO_30 TIPOSINGRESOIDTIPOINGRESO30, t2.TIPO_INGRESO_30 TIPOSINGRESOTIPOINGRESO30, t2.DESCRIPCION_ES_30 TIPOSINGRESODESCRIPCIONES30, t2.DESCRIPCION_EU_30 TIPOSINGRESODESCRIPCIONEU30, t2.ID_APLICACION_30 TIPOSINGRESOIDAPLICACION30, t2.DIAS_LIM_PAG_30 TIPOSINGRESODIASLIMPAG30, t2.FICH_TERRITORIO_30 TIPOSINGRESOFICHTERRITORIO30, t2.USU_ALTA_30 TIPOSINGRESOUSUALTA30, t2.F_ALTA_30 TIPOSINGRESOFALTA30, t2.USU_MODIF_30 TIPOSINGRESOUSUMODIF30, t2.F_MODIF_30 TIPOSINGRESOFMODIF30 FROM AE01B.LIQUIDACIONES t1 , AE01B.TIPOS_INGRESO t2  WHERE t1.ID_LIQUIDACION_00 = ?   AND t1.ID_TIPO_INGRESO_00= t2.ID_TIPO_INGRESO_30(+)";

		List<Liquidaciones> liquidacionesList = this.jdbcTemplate.query(query, this.rwMap,
				liquidaciones.getIdLiquidacion00());
		return DataAccessUtils.uniqueResult(liquidacionesList);
	}

	/**
	 * Operacion de anular liquidacion.
	 *
	 * @param liquidaciones Liquidaciones
	 *
	 * @return Liquidaciones
	 */
	public Liquidaciones anularLiquidacion(Liquidaciones liquidaciones) {
		String query = "UPDATE AE01B.LIQUIDACIONES SET ESTADO_LIQ_00=?, F_ANU_COBRO_00=?, MOTIVO_ANU_COBRO_00=?, USU_MODIF_00=?, F_MODIF_00=? WHERE ID_LIQUIDACION_00=?";
		this.jdbcTemplate.update(query, liquidaciones.getEstadoLiq00(), liquidaciones.getfAnuCobro00(),
				liquidaciones.getMotivoAnuCobro00(), liquidaciones.getUsuModif00(), liquidaciones.getfModif00(),
				liquidaciones.getIdLiquidacion00());
		return liquidaciones;
	}

	/**
	 * Operacion de devolver liquidacion.
	 *
	 * @param liquidaciones Liquidaciones
	 *
	 * @return Liquidaciones
	 */
	public Liquidaciones devolverLiquidacion(Liquidaciones liquidaciones) {
		String query = "UPDATE AE01B.LIQUIDACIONES SET ESTADO_LIQ_00=?, IMPORTE_00=?, USU_MODIF_00=?, F_MODIF_00=? WHERE ID_LIQUIDACION_00=?";
		this.jdbcTemplate.update(query, liquidaciones.getEstadoLiq00(), liquidaciones.getImporte00(),
				liquidaciones.getUsuModif00(), liquidaciones.getfModif00(), liquidaciones.getIdLiquidacion00());
		return liquidaciones;
	}

	/**
	 * Operacion de paso a via de apremio liquidacion.
	 *
	 * @param liquidaciones Liquidaciones
	 *
	 * @return Liquidaciones
	 */
	public Liquidaciones pasoApremioLiquidacion(Liquidaciones liquidaciones) {
		String query = "UPDATE AE01B.LIQUIDACIONES SET ID_TERRITORIO_00=?, TIPO_TERCERO_00=?, TERCERO_00=?, NOM_RAC_SOC_00=?, APELLIDO1_00=?, APELLIDO2_00=?, RESIDENTE_00=?, COD_PAIS_00=?, LOCALIDAD_00=?, COD_PROVINCIA_00=?, COD_MUNICIPIO_00=?, COD_LOCALIDAD_00=?, TIPO_VIA_00=?, NOMBRE_VIA_00=?, PORTAL_00=?, LETRA_PORTAL_00=?, ESCALERA_00=?, PISO_00=?, PUERTA_00=?, COD_POSTAL_00=?, ESTADO_LIQ_00=?, USU_MODIF_00=?, F_MODIF_00=? WHERE ID_LIQUIDACION_00=?";
		this.jdbcTemplate.update(query, liquidaciones.getIdTerritorio00(), liquidaciones.getTipoTercero00(),
				liquidaciones.getTercero00(), liquidaciones.getNomRacSoc00(), liquidaciones.getApellido100(),
				liquidaciones.getApellido200(), liquidaciones.getResidente00(), liquidaciones.getCodPais00(),
				liquidaciones.getLocalidad00(), liquidaciones.getCodProvincia00(), liquidaciones.getCodMunicipio00(),
				liquidaciones.getCodLocalidad00(), liquidaciones.getTipoVia00(), liquidaciones.getNombreVia00(),
				liquidaciones.getPortal00(), liquidaciones.getLetraPortal00(), liquidaciones.getEscalera00(),
				liquidaciones.getPiso00(), liquidaciones.getPuerta00(), liquidaciones.getCodPostal00(),
				liquidaciones.getEstadoLiq00(), liquidaciones.getUsuModif00(), liquidaciones.getfModif00(),
				liquidaciones.getIdLiquidacion00());
		return liquidaciones;
	}

	public Liquidaciones updatePagoPasarela(Liquidaciones liquidaciones) {
		String query = "UPDATE AE01B.LIQUIDACIONES SET ID_PAGO_PASARELA_00 = ?, USU_MODIF_00=?, F_MODIF_00=? WHERE ID_LIQUIDACION_00=?";
		this.jdbcTemplate.update(query, liquidaciones.getIdPagoPasarela00(), liquidaciones.getUsuModif00(),
				liquidaciones.getfModif00(), liquidaciones.getIdLiquidacion00());
		return liquidaciones;
	}

	/*
	 * MÃ‰TODOS PRIVADOS
	 */

	/**
	 * Returns a map with the needed value to create the conditions to filter by the
	 * Liquidaciones entity
	 *
	 * @param liquidaciones Liquidaciones 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.
	 */
	private Map<String, ?> getWhereMap(Liquidaciones liquidaciones) {
		StringBuilder where = new StringBuilder(LiquidacionesDaoImpl.STRING_BUILDER_INIT);
		List<Object> params = new ArrayList<Object>();

		if (liquidaciones != null && liquidaciones.getIdLiquidacion00() != null) {
			where.append(" AND t1.ID_LIQUIDACION_00 = ?");
			params.add(liquidaciones.getIdLiquidacion00());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getIdTipoIngreso30() != null) {
			where.append(" AND t2.ID_TIPO_INGRESO_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getIdTipoIngreso30());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getTipoIngreso30() != null) {
			where.append(" AND t2.TIPO_INGRESO_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getTipoIngreso30());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getDescripcionEs30() != null) {
			where.append(" AND t2.DESCRIPCION_ES_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getDescripcionEs30());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getDescripcionEu30() != null) {
			where.append(" AND t2.DESCRIPCION_EU_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getDescripcionEu30());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getIdAplicacion30() != null) {
			where.append(" AND t2.ID_APLICACION_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getIdAplicacion30());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getDiasLimPag30() != null) {
			where.append(" AND t2.DIAS_LIM_PAG_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getDiasLimPag30());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getFichTerritorio30() != null) {
			where.append(" AND t2.FICH_TERRITORIO_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getFichTerritorio30());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getUsuAlta30() != null) {
			where.append(" AND t2.USU_ALTA_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getUsuAlta30());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getfAlta30() != null) {
			where.append(" AND t2.F_ALTA_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getfAlta30());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getUsuModif30() != null) {
			where.append(" AND t2.USU_MODIF_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getUsuModif30());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getfModif30() != null) {
			where.append(" AND t2.F_MODIF_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getfModif30());
		}
		if (liquidaciones != null && liquidaciones.getEjercicio00() != null) {
			where.append(" AND t1.EJERCICIO_00 = ?");
			params.add(liquidaciones.getEjercicio00());
		}
		if (liquidaciones != null && liquidaciones.getNumLiquidacion00() != null) {
			where.append(" AND t1.NUM_LIQUIDACION_00 = ?");
			params.add(liquidaciones.getNumLiquidacion00());
		}
		if (liquidaciones != null && liquidaciones.getCodOrigen00() != null) {
			where.append(" AND t1.COD_ORIGEN_00 = ?");
			params.add(liquidaciones.getCodOrigen00());
		}
		if (liquidaciones != null && liquidaciones.getImporte00() != null) {
			where.append(" AND t1.IMPORTE_00 = ?");
			params.add(liquidaciones.getImporte00());
		}
		if (liquidaciones != null && liquidaciones.getfEmision00() != null) {
			where.append(" AND t1.F_EMISION_00 = ?");
			params.add(liquidaciones.getfEmision00());
		}
		if (liquidaciones != null && liquidaciones.getfLimitePago00() != null) {
			where.append(" AND t1.F_LIMITE_PAGO_00 = ?");
			params.add(liquidaciones.getfLimitePago00());
		}
		if (liquidaciones != null && liquidaciones.getReferenciaLiq00() != null) {
			where.append(" AND t1.REFERENCIA_LIQ_00 = ?");
			params.add(liquidaciones.getReferenciaLiq00());
		}
		if (liquidaciones != null && liquidaciones.getDigitoControl00() != null) {
			where.append(" AND t1.DIGITO_CONTROL_00 = ?");
			params.add(liquidaciones.getDigitoControl00());
		}
		if (liquidaciones != null && liquidaciones.getIdTerritorio00() != null) {
			where.append(" AND t1.ID_TERRITORIO_00 = ?");
			params.add(liquidaciones.getIdTerritorio00());
		}
		if (liquidaciones != null && liquidaciones.getExpediente00() != null) {
			where.append(" AND t1.EXPEDIENTE_00 = ?");
			params.add(liquidaciones.getExpediente00());
		}
		if (liquidaciones != null && liquidaciones.getConcepto00() != null) {
			where.append(" AND t1.CONCEPTO_00 = ?");
			params.add(liquidaciones.getConcepto00());
		}
		if (liquidaciones != null && liquidaciones.getTipoTercero00() != null) {
			where.append(" AND t1.TIPO_TERCERO_00 = ?");
			params.add(liquidaciones.getTipoTercero00());
		}
		if (liquidaciones != null && liquidaciones.getTercero00() != null) {
			where.append(" AND t1.TERCERO_00 = ?");
			params.add(liquidaciones.getTercero00());
		}
		if (liquidaciones != null && liquidaciones.getNomRacSoc00() != null) {
			where.append(" AND t1.NOM_RAC_SOC_00 = ?");
			params.add(liquidaciones.getNomRacSoc00());
		}
		if (liquidaciones != null && liquidaciones.getApellido100() != null) {
			where.append(" AND t1.APELLIDO1_00 = ?");
			params.add(liquidaciones.getApellido100());
		}
		if (liquidaciones != null && liquidaciones.getApellido200() != null) {
			where.append(" AND t1.APELLIDO2_00 = ?");
			params.add(liquidaciones.getApellido200());
		}
		if (liquidaciones != null && liquidaciones.getResidente00() != null) {
			where.append(" AND t1.RESIDENTE_00 = ?");
			params.add(liquidaciones.getResidente00());
		}
		if (liquidaciones != null && liquidaciones.getCodPais00() != null) {
			where.append(" AND t1.COD_PAIS_00 = ?");
			params.add(liquidaciones.getCodPais00());
		}
		if (liquidaciones != null && liquidaciones.getLocalidad00() != null) {
			where.append(" AND t1.LOCALIDAD_00 = ?");
			params.add(liquidaciones.getLocalidad00());
		}
		if (liquidaciones != null && liquidaciones.getCodProvincia00() != null) {
			where.append(" AND t1.COD_PROVINCIA_00 = ?");
			params.add(liquidaciones.getCodProvincia00());
		}
		if (liquidaciones != null && liquidaciones.getCodMunicipio00() != null) {
			where.append(" AND t1.COD_MUNICIPIO_00 = ?");
			params.add(liquidaciones.getCodMunicipio00());
		}
		if (liquidaciones != null && liquidaciones.getCodLocalidad00() != null) {
			where.append(" AND t1.COD_LOCALIDAD_00 = ?");
			params.add(liquidaciones.getCodLocalidad00());
		}
		if (liquidaciones != null && liquidaciones.getTipoVia00() != null) {
			where.append(" AND t1.TIPO_VIA_00 = ?");
			params.add(liquidaciones.getTipoVia00());
		}
		if (liquidaciones != null && liquidaciones.getNombreVia00() != null) {
			where.append(" AND t1.NOMBRE_VIA_00 = ?");
			params.add(liquidaciones.getNombreVia00());
		}
		if (liquidaciones != null && liquidaciones.getPortal00() != null) {
			where.append(" AND t1.PORTAL_00 = ?");
			params.add(liquidaciones.getPortal00());
		}
		if (liquidaciones != null && liquidaciones.getLetraPortal00() != null) {
			where.append(" AND t1.LETRA_PORTAL_00 = ?");
			params.add(liquidaciones.getLetraPortal00());
		}
		if (liquidaciones != null && liquidaciones.getEscalera00() != null) {
			where.append(" AND t1.ESCALERA_00 = ?");
			params.add(liquidaciones.getEscalera00());
		}
		if (liquidaciones != null && liquidaciones.getPiso00() != null) {
			where.append(" AND t1.PISO_00 = ?");
			params.add(liquidaciones.getPiso00());
		}
		if (liquidaciones != null && liquidaciones.getPuerta00() != null) {
			where.append(" AND t1.PUERTA_00 = ?");
			params.add(liquidaciones.getPuerta00());
		}
		if (liquidaciones != null && liquidaciones.getCodPostal00() != null) {
			where.append(" AND t1.COD_POSTAL_00 = ?");
			params.add(liquidaciones.getCodPostal00());
		}
		if (liquidaciones != null && liquidaciones.getIndDomic00() != null) {
			where.append(" AND t1.IND_DOMIC_00 = ?");
			params.add(liquidaciones.getIndDomic00());
		}
		if (liquidaciones != null && liquidaciones.getIban00() != null) {
			where.append(" AND t1.IBAN_00 = ?");
			params.add(liquidaciones.getIban00());
		}
		if (liquidaciones != null && liquidaciones.getfMandato00() != null) {
			where.append(" AND t1.F_MANDATO_00 = ?");
			params.add(liquidaciones.getfMandato00());
		}
		if (liquidaciones != null && liquidaciones.getMandato00() != null) {
			where.append(" AND t1.MANDATO_00 = ?");
			params.add(liquidaciones.getMandato00());
		}
		if (liquidaciones != null && liquidaciones.getfEnvSipca00() != null) {
			where.append(" AND t1.F_ENV_SIPCA_00 = ?");
			params.add(liquidaciones.getfEnvSipca00());
		}
		if (liquidaciones != null && liquidaciones.getIdFicheroEnv00() != null) {
			where.append(" AND t1.ID_FICHERO_ENV_00 = ?");
			params.add(liquidaciones.getIdFicheroEnv00());
		}
		if (liquidaciones != null && liquidaciones.getfCobroProv00() != null) {
			where.append(" AND t1.F_COBRO_PROV_00 = ?");
			params.add(liquidaciones.getfCobroProv00());
		}
		if (liquidaciones != null && liquidaciones.getfCobroDef00() != null) {
			where.append(" AND t1.F_COBRO_DEF_00 = ?");
			params.add(liquidaciones.getfCobroDef00());
		}
		if (liquidaciones != null && liquidaciones.getfAnuCobro00() != null) {
			where.append(" AND t1.F_ANU_COBRO_00 = ?");
			params.add(liquidaciones.getfAnuCobro00());
		}
		if (liquidaciones != null && liquidaciones.getMotivoAnuCobro00() != null) {
			where.append(" AND t1.MOTIVO_ANU_COBRO_00 = ?");
			params.add(liquidaciones.getMotivoAnuCobro00());
		}
		if (liquidaciones != null && liquidaciones.getIdFicherocsb1900() != null) {
			where.append(" AND t1.ID_FICHEROCSB19_00 = ?");
			params.add(liquidaciones.getIdFicherocsb1900());
		}
		if (liquidaciones != null && liquidaciones.getfCargo00() != null) {
			where.append(" AND t1.F_CARGO_00 = ?");
			params.add(liquidaciones.getfCargo00());
		}
		if (liquidaciones != null && liquidaciones.getIdPagoPasarela00() != null) {
			where.append(" AND t1.ID_PAGO_PASARELA_00 = ?");
			params.add(liquidaciones.getIdPagoPasarela00());
		}
		if (liquidaciones != null && liquidaciones.getEstadoLiq00() != null) {
			where.append(" AND t1.ESTADO_LIQ_00 = ?");
			params.add(liquidaciones.getEstadoLiq00());
		}
		if (liquidaciones != null && liquidaciones.getBic00() != null) {
			where.append(" AND t1.BIC_00 = ?");
			params.add(liquidaciones.getBic00());
		}
		if (liquidaciones != null && liquidaciones.getUsuAlta00() != null) {
			where.append(" AND t1.USU_ALTA_00 = ?");
			params.add(liquidaciones.getUsuAlta00());
		}
		if (liquidaciones != null && liquidaciones.getfAlta00() != null) {
			where.append(" AND t1.F_ALTA_00 = ?");
			params.add(liquidaciones.getfAlta00());
		}
		if (liquidaciones != null && liquidaciones.getUsuModif00() != null) {
			where.append(" AND t1.USU_MODIF_00 = ?");
			params.add(liquidaciones.getUsuModif00());
		}
		if (liquidaciones != null && liquidaciones.getfModif00() != null) {
			where.append(" AND t1.F_MODIF_00 = ?");
			params.add(liquidaciones.getfModif00());
		}

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

		return mapWhere;
	}

	/**
	 * Returns a map with the needed value to create the conditions to filter by the
	 * Liquidaciones entity
	 *
	 * @param liquidaciones Liquidaciones 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.
	 */
	private Map<String, Object> getWhereLikeMap(Liquidaciones liquidaciones, Boolean startsWith) {
		StringBuilder where = new StringBuilder(LiquidacionesDaoImpl.STRING_BUILDER_INIT);
		List<Object> params = new ArrayList<Object>();

		if (liquidaciones != null && liquidaciones.getIdLiquidacion00() != null) {
			where.append(" AND t1.ID_LIQUIDACION_00 = ?");
			params.add(liquidaciones.getIdLiquidacion00());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getIdTipoIngreso30() != null) {
			where.append(" AND t2.ID_TIPO_INGRESO_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getIdTipoIngreso30());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getTipoIngreso30() != null) {
			where.append(" AND UPPER(t2.TIPO_INGRESO_30) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getTiposIngreso().getTipoIngreso30().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getTiposIngreso().getTipoIngreso30().toUpperCase() + "%");
			}
			where.append(" AND t2.TIPO_INGRESO_30 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getDescripcionEs30() != null) {
			where.append(" AND UPPER(t2.DESCRIPCION_ES_30) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getTiposIngreso().getDescripcionEs30().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getTiposIngreso().getDescripcionEs30().toUpperCase() + "%");
			}
			where.append(" AND t2.DESCRIPCION_ES_30 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getDescripcionEu30() != null) {
			where.append(" AND UPPER(t2.DESCRIPCION_EU_30) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getTiposIngreso().getDescripcionEu30().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getTiposIngreso().getDescripcionEu30().toUpperCase() + "%");
			}
			where.append(" AND t2.DESCRIPCION_EU_30 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getIdAplicacion30() != null) {
			where.append(" AND t2.ID_APLICACION_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getIdAplicacion30());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getDiasLimPag30() != null) {
			where.append(" AND t2.DIAS_LIM_PAG_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getDiasLimPag30());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getFichTerritorio30() != null) {
			where.append(" AND t2.FICH_TERRITORIO_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getFichTerritorio30());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getUsuAlta30() != null) {
			where.append(" AND UPPER(t2.USU_ALTA_30) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getTiposIngreso().getUsuAlta30().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getTiposIngreso().getUsuAlta30().toUpperCase() + "%");
			}
			where.append(" AND t2.USU_ALTA_30 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getfAlta30() != null) {
			where.append(" AND t2.F_ALTA_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getfAlta30());
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getUsuModif30() != null) {
			where.append(" AND UPPER(t2.USU_MODIF_30) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getTiposIngreso().getUsuModif30().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getTiposIngreso().getUsuModif30().toUpperCase() + "%");
			}
			where.append(" AND t2.USU_MODIF_30 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getTiposIngreso() != null
				&& liquidaciones.getTiposIngreso().getfModif30() != null) {
			where.append(" AND t2.F_MODIF_30 = ?");
			params.add(liquidaciones.getTiposIngreso().getfModif30());
		}

		if (liquidaciones != null && liquidaciones.getEjercicio00() != null) {
			where.append(" AND t1.EJERCICIO_00 = ?");
			params.add(liquidaciones.getEjercicio00());
		}
		if (liquidaciones != null && liquidaciones.getNumLiquidacion00() != null) {
			where.append(" AND t1.NUM_LIQUIDACION_00 = ?");
			params.add(liquidaciones.getNumLiquidacion00());
		}
		if (liquidaciones != null && liquidaciones.getCodOrigen00() != null) {
			where.append(" AND UPPER(t1.COD_ORIGEN_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getCodOrigen00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getCodOrigen00().toUpperCase() + "%");
			}
			where.append(" AND t1.COD_ORIGEN_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getImporte00() != null) {
			where.append(" AND t1.IMPORTE_00 = ?");
			params.add(liquidaciones.getImporte00());
		}
		if (liquidaciones != null && liquidaciones.getfEmision00() != null) {
			where.append(" AND t1.F_EMISION_00 = ?");
			params.add(liquidaciones.getfEmision00());
		}
		if (liquidaciones != null && liquidaciones.getfLimitePago00() != null) {
			where.append(" AND t1.F_LIMITE_PAGO_00 = ?");
			params.add(liquidaciones.getfLimitePago00());
		}
		if (liquidaciones != null && liquidaciones.getReferenciaLiq00() != null) {
			where.append(" AND UPPER(t1.REFERENCIA_LIQ_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getReferenciaLiq00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getReferenciaLiq00().toUpperCase() + "%");
			}
			where.append(" AND t1.REFERENCIA_LIQ_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getDigitoControl00() != null) {
			where.append(" AND UPPER(t1.DIGITO_CONTROL_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getDigitoControl00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getDigitoControl00().toUpperCase() + "%");
			}
			where.append(" AND t1.DIGITO_CONTROL_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getIdTerritorio00() != null) {
			where.append(" AND t1.ID_TERRITORIO_00 = ?");
			params.add(liquidaciones.getIdTerritorio00());
		}
		if (liquidaciones != null && liquidaciones.getExpediente00() != null) {
			where.append(" AND UPPER(t1.EXPEDIENTE_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getExpediente00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getExpediente00().toUpperCase() + "%");
			}
			where.append(" AND t1.EXPEDIENTE_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getConcepto00() != null) {
			where.append(" AND UPPER(t1.CONCEPTO_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getConcepto00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getConcepto00().toUpperCase() + "%");
			}
			where.append(" AND t1.CONCEPTO_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getTipoTercero00() != null) {
			where.append(" AND t1.TIPO_TERCERO_00 = ?");
			params.add(liquidaciones.getTipoTercero00());
		}
		if (liquidaciones != null && liquidaciones.getTercero00() != null) {
			where.append(" AND UPPER(t1.TERCERO_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getTercero00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getTercero00().toUpperCase() + "%");
			}
			where.append(" AND t1.TERCERO_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getNomRacSoc00() != null) {
			where.append(" AND UPPER(t1.NOM_RAC_SOC_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getNomRacSoc00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getNomRacSoc00().toUpperCase() + "%");
			}
			where.append(" AND t1.NOM_RAC_SOC_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getApellido100() != null) {
			where.append(" AND UPPER(t1.APELLIDO1_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getApellido100().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getApellido100().toUpperCase() + "%");
			}
			where.append(" AND t1.APELLIDO1_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getApellido200() != null) {
			where.append(" AND UPPER(t1.APELLIDO2_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getApellido200().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getApellido200().toUpperCase() + "%");
			}
			where.append(" AND t1.APELLIDO2_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getResidente00() != null) {
			where.append(" AND t1.RESIDENTE_00 = ?");
			params.add(liquidaciones.getResidente00());
		}
		if (liquidaciones != null && liquidaciones.getCodPais00() != null) {
			where.append(" AND t1.COD_PAIS_00 = ?");
			params.add(liquidaciones.getCodPais00());
		}
		if (liquidaciones != null && liquidaciones.getLocalidad00() != null) {
			where.append(" AND UPPER(t1.LOCALIDAD_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getLocalidad00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getLocalidad00().toUpperCase() + "%");
			}
			where.append(" AND t1.LOCALIDAD_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getCodProvincia00() != null) {
			where.append(" AND t1.COD_PROVINCIA_00 = ?");
			params.add(liquidaciones.getCodProvincia00());
		}
		if (liquidaciones != null && liquidaciones.getCodMunicipio00() != null) {
			where.append(" AND t1.COD_MUNICIPIO_00 = ?");
			params.add(liquidaciones.getCodMunicipio00());
		}
		if (liquidaciones != null && liquidaciones.getCodLocalidad00() != null) {
			where.append(" AND t1.COD_LOCALIDAD_00 = ?");
			params.add(liquidaciones.getCodLocalidad00());
		}
		if (liquidaciones != null && liquidaciones.getTipoVia00() != null) {
			where.append(" AND UPPER(t1.TIPO_VIA_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getTipoVia00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getTipoVia00().toUpperCase() + "%");
			}
			where.append(" AND t1.TIPO_VIA_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getNombreVia00() != null) {
			where.append(" AND UPPER(t1.NOMBRE_VIA_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getNombreVia00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getNombreVia00().toUpperCase() + "%");
			}
			where.append(" AND t1.NOMBRE_VIA_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getPortal00() != null) {
			where.append(" AND UPPER(t1.PORTAL_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getPortal00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getPortal00().toUpperCase() + "%");
			}
			where.append(" AND t1.PORTAL_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getLetraPortal00() != null) {
			where.append(" AND UPPER(t1.LETRA_PORTAL_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getLetraPortal00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getLetraPortal00().toUpperCase() + "%");
			}
			where.append(" AND t1.LETRA_PORTAL_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getEscalera00() != null) {
			where.append(" AND UPPER(t1.ESCALERA_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getEscalera00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getEscalera00().toUpperCase() + "%");
			}
			where.append(" AND t1.ESCALERA_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getPiso00() != null) {
			where.append(" AND UPPER(t1.PISO_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getPiso00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getPiso00().toUpperCase() + "%");
			}
			where.append(" AND t1.PISO_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getPuerta00() != null) {
			where.append(" AND UPPER(t1.PUERTA_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getPuerta00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getPuerta00().toUpperCase() + "%");
			}
			where.append(" AND t1.PUERTA_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getCodPostal00() != null) {
			where.append(" AND UPPER(t1.COD_POSTAL_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getCodPostal00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getCodPostal00().toUpperCase() + "%");
			}
			where.append(" AND t1.COD_POSTAL_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getIndDomic00() != null) {
			where.append(" AND t1.IND_DOMIC_00 = ?");
			params.add(liquidaciones.getIndDomic00());
		}
		if (liquidaciones != null && liquidaciones.getIban00() != null) {
			where.append(" AND UPPER(t1.IBAN_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getIban00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getIban00().toUpperCase() + "%");
			}
			where.append(" AND t1.IBAN_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getfMandato00() != null) {
			where.append(" AND t1.F_MANDATO_00 = ?");
			params.add(liquidaciones.getfMandato00());
		}
		if (liquidaciones != null && liquidaciones.getMandato00() != null) {
			where.append(" AND UPPER(t1.MANDATO_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getMandato00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getMandato00().toUpperCase() + "%");
			}
			where.append(" AND t1.MANDATO_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getfEnvSipca00() != null) {
			where.append(" AND t1.F_ENV_SIPCA_00 = ?");
			params.add(liquidaciones.getfEnvSipca00());
		}
		if (liquidaciones != null && liquidaciones.getIdFicheroEnv00() != null) {
			where.append(" AND t1.ID_FICHERO_ENV_00 = ?");
			params.add(liquidaciones.getIdFicheroEnv00());
		}
		if (liquidaciones != null && liquidaciones.getfCobroProv00() != null) {
			where.append(" AND t1.F_COBRO_PROV_00 = ?");
			params.add(liquidaciones.getfCobroProv00());
		}
		if (liquidaciones != null && liquidaciones.getfCobroDef00() != null) {
			where.append(" AND t1.F_COBRO_DEF_00 = ?");
			params.add(liquidaciones.getfCobroDef00());
		}
		if (liquidaciones != null && liquidaciones.getfAnuCobro00() != null) {
			where.append(" AND t1.F_ANU_COBRO_00 = ?");
			params.add(liquidaciones.getfAnuCobro00());
		}
		if (liquidaciones != null && liquidaciones.getMotivoAnuCobro00() != null) {
			where.append(" AND UPPER(t1.MOTIVO_ANU_COBRO_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getMotivoAnuCobro00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getMotivoAnuCobro00().toUpperCase() + "%");
			}
			where.append(" AND t1.MOTIVO_ANU_COBRO_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getIdFicherocsb1900() != null) {
			where.append(" AND t1.ID_FICHEROCSB19_00 = ?");
			params.add(liquidaciones.getIdFicherocsb1900());
		}
		if (liquidaciones != null && liquidaciones.getfCargo00() != null) {
			where.append(" AND t1.F_CARGO_00 = ?");
			params.add(liquidaciones.getfCargo00());
		}
		if (liquidaciones != null && liquidaciones.getIdPagoPasarela00() != null) {
			where.append(" AND UPPER(t1.ID_PAGO_PASARELA_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getIdPagoPasarela00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getIdPagoPasarela00().toUpperCase() + "%");
			}
			where.append(" AND t1.ID_PAGO_PASARELA_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getEstadoLiq00() != null) {
			where.append(" AND t1.ESTADO_LIQ_00 = ?");
			params.add(liquidaciones.getEstadoLiq00());
		}
		if (liquidaciones != null && liquidaciones.getBic00() != null) {
			where.append(" AND UPPER(t1.BIC_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getBic00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getBic00().toUpperCase() + "%");
			}
			where.append(" AND t1.BIC_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getUsuAlta00() != null) {
			where.append(" AND UPPER(t1.USU_ALTA_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getUsuAlta00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getUsuAlta00().toUpperCase() + "%");
			}
			where.append(" AND t1.USU_ALTA_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getfAlta00() != null) {
			where.append(" AND t1.F_ALTA_00 = ?");
			params.add(liquidaciones.getfAlta00());
		}
		if (liquidaciones != null && liquidaciones.getUsuModif00() != null) {
			where.append(" AND UPPER(t1.USU_MODIF_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(liquidaciones.getUsuModif00().toUpperCase() + "%");
			} else {
				params.add("%" + liquidaciones.getUsuModif00().toUpperCase() + "%");
			}
			where.append(" AND t1.USU_MODIF_00 IS NOT NULL");
		}
		if (liquidaciones != null && liquidaciones.getfModif00() != null) {
			where.append(" AND t1.F_MODIF_00 = ?");
			params.add(liquidaciones.getfModif00());
		}

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

		return mapWhere;
	}

	public Integer getNumLiquidacionSequence(Long ejercicio) {
		StringBuilder query = new StringBuilder(
				"SELECT MAX(NUM_LIQUIDACION_00) FROM AE01B.LIQUIDACIONES t1 WHERE EJERCICIO_00 = ?");
		List<Object> params = new ArrayList<Object>();
		params.add(ejercicio);
		String numLiq = this.jdbcTemplate.queryForObject(query.toString(), params.toArray(), String.class);
		if (Utilidades.esBlancoNulo(numLiq)) {
			numLiq = "0";
		}
		Integer result = Integer.valueOf(numLiq) + 1;
		return result;
	}

	/**
	 * La liquidacion ha sido notificada por inicio de oficio, se pone la fecha de
	 * inicio de oficio. Ademas del usuario y la fecha de modificado.
	 *
	 * @param liquidaciones Liquidaciones
	 *
	 * @return Liquidaciones
	 */
	public Liquidaciones notificadaPorInicioOficio(Liquidaciones liquidaciones) {
		String query = "UPDATE AE01B.LIQUIDACIONES SET F_INICIO_OFICIO_00=?, USU_MODIF_00=?, F_MODIF_00=? WHERE ID_LIQUIDACION_00=?";
		this.jdbcTemplate.update(query, liquidaciones.getfInicioOficio00(), liquidaciones.getUsuModif00(),
				liquidaciones.getfModif00(), liquidaciones.getIdLiquidacion00());
		return liquidaciones;
	}

	/**
	 * Finds a single row in the Liquidaciones table.
	 *
	 * @param idExpediente Long
	 *
	 * @return Liquidaciones
	 */
	@Transactional(readOnly = true)
	public List<Liquidaciones> getDatosCarta(Long idExpediente) {

		StringBuilder query = new StringBuilder("SELECT t2.nombre_01 NOMBRE01,");
		query.append("t2.apellido1_01 APELLIDO101,t2.apellido2_01 APELLIDO201,");
		query.append("t2.f_inicio_01 FINICIO01,t3.num_cuenta_05 NUM_CUENTA05,");
		query.append("t4.mes_89 MES89,t4.anyo_89 ANYO89");

		query.append(" from  AD74A00T00 t1,AD74A01T00 t2,AD74A05T00 t3, AD74A89T00 t4,AE01B.LIQUIDACIONES t5");

		query.append(" where t1.id_solicitante_00=t2.id_solicitante_01");
		query.append(" and t1.id_solicitante_00=t4.id_solicitante_89");
		query.append(" and t2.id_cuenta_01=t3.id_cuenta_05");
		query.append(" and TO_CHAR(t4.grupo_impago_89)=t5.cod_origen_00");
		query.append(" and t1.id_expediente_00=?");

		query.append(" order by ANYO89,MES89 ASC");

//		List<Liquidaciones> liquidacionesList = this.jdbcTemplate.query(query.toString(), this.rwMapCartaPago,
//				idExpediente);
		// return DataAccessUtils.uniqueResult(liquidacionesList);
		return this.jdbcTemplate.query(query.toString(), this.rwMapCartaPago, idExpediente);
	}

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

			Mensualidades mes = new Mensualidades();
			mes.setAnyo89(resultSet.getLong("ANYO89"));
			mes.setMes89(resultSet.getLong("MES89"));

			Cuentas cuenta = new Cuentas();
			cuenta.setNumCuenta05(resultSet.getString("NUM_CUENTA05"));

			Solicitantes sol = new Solicitantes();
			sol.setCuentas(cuenta);
			sol.setNombre01(resultSet.getString("NOMBRE01"));
			sol.setApellido101(resultSet.getString("APELLIDO101"));
			sol.setApellido201(resultSet.getString("APELLIDO201"));
			sol.setfInicio01(resultSet.getDate("FINICIO01"));

			Liquidaciones pre = new Liquidaciones();
			pre.setSolicitante(sol);
			pre.setMensualidad(mes);

			return pre;
		}
	};

}
