/*
* 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.model.ae01b;

import java.math.BigDecimal;
import java.util.Date;

import com.ejie.ad74a.util.comun.Utilidades;
import com.ejie.ad74a.util.constantes.TerritoriosEnum;
import com.ejie.x38.serialization.JsonDateDeserializer;
import com.ejie.x38.serialization.JsonDateSerializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

/**
 * CopagosGestionImpagos generated by UDA, 28-jun-2023 10:59:26.
 * 
 * @author UDA
 */

public class CopagosGestionImpagos implements java.io.Serializable {

	private static final long serialVersionUID = 1L;

	private Long idLiquidacion;
	private String idSolicitante;
	private String tipoIdentificador;
	private Long idTipoIngreso;
	private String identificador;
	private String nombre;
	private String apellido1;
	private String apellido2;
	private String territorio;
	private Date fecDeAlta;
	private Date fecDeBaja;
	private Integer cantidadMensualidades;
	private BigDecimal deuda;
	private String motivoExoneracion;

	// Campos para el filtro
	private Date fecInstalacionDesde;
	private Date fecInstalacionHasta;
	private Date fecBajaDesde;
	private Date fecBajaHasta;
	private Integer activo;

	private Integer minAnyo;
	private Integer minMes;
	private Integer maxAnyo;
	private Integer maxMes;

	/**
	 * Method 'CopagosGestionImpagos'.
	 */
	public CopagosGestionImpagos() {
	}

	/**
	 * Method 'CopagosGestionImpagos'.
	 * 
	 * @param idLiquidacion     Long
	 * @param idBeneficiario    Long
	 * @param numIdentificacion String
	 * @param nombre            String
	 * @param apellido1         String
	 * @param apellido2         String
	 * @param idTerritorio      Integer
	 * @param fecInstalacion    Date
	 * @param fecBaja           Date
	 * @param numMesesPendPago  Integer
	 * @param deuda             BigDecimal
	 */
	public CopagosGestionImpagos(String idSolicitante, String identificador, String nombre, String apellido1,
			String apellido2, String territorio, Date fecAlta, Date fecBaja, Integer cantidadMensualidades,
			BigDecimal deuda) {
		this.idSolicitante = idSolicitante;
		this.identificador = identificador;
		this.nombre = nombre;
		this.apellido1 = apellido1;
		this.apellido2 = apellido2;
		this.territorio = territorio;
		this.fecDeAlta = fecAlta;
		this.fecDeBaja = fecBaja;
		this.cantidadMensualidades = cantidadMensualidades;
		this.deuda = deuda;
	}

	/**
	 * Method 'CopagosGestionImpagos'.
	 * 
	 * @param idLiquidacion  Long
	 * @param idBeneficiario Long
	 */
	public CopagosGestionImpagos(String idBeneficiario) {
		this.idSolicitante = idBeneficiario;
	}

	/**
	 * Method 'getIdBeneficiario'.
	 *
	 * @return Long
	 */
	public String getIdSolicitante() {
		return this.idSolicitante;
	}

	public Long getIdLiquidacion() {
		return this.idLiquidacion;
	}

	public void setIdLiquidacion(Long idLiquidacion) {
		this.idLiquidacion = idLiquidacion;
	}

	/**
	 * Method 'setIdBeneficiario'.
	 *
	 * @param idBeneficiario Long
	 */
	public void setIdSolicitante(String idSolicitante) {
		this.idSolicitante = idSolicitante;
	}

	public Date getFecDeAlta() {
		return fecDeAlta;
	}

	public Date getFecDeBaja() {
		return fecDeBaja;
	}

	/**
	 * Method 'getNumIdentificacion'.
	 *
	 * @return String
	 */
	public String getIdentificador() {
		return this.identificador;
	}

	/**
	 * Method 'setNumIdentificacion'.
	 *
	 * @param numIdentificacion String
	 */
	public void setIdentificador(String identificador) {
		this.identificador = identificador;
	}

	/**
	 * Method 'getNombre'.
	 *
	 * @return String
	 */
	public String getNombre() {
		return this.nombre;
	}

	/**
	 * Method 'setNombre'.
	 *
	 * @param nombre String
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	/**
	 * Method 'getApellido1'.
	 *
	 * @return String
	 */
	public String getApellido1() {
		return this.apellido1;
	}

	/**
	 * Method 'setApellido1'.
	 *
	 * @param apellido1 String
	 */
	public void setApellido1(String apellido1) {
		this.apellido1 = apellido1;
	}

	/**
	 * Method 'getApellido2'.
	 *
	 * @return String
	 */
	public String getApellido2() {
		return this.apellido2;
	}

	/**
	 * Method 'setApellido2'.
	 *
	 * @param apellido2 String
	 */
	public void setApellido2(String apellido2) {
		this.apellido2 = apellido2;
	}

	/**
	 * Method 'getIdTerritorio'.
	 *
	 * @return Integer
	 */
	public String getTerritorio() {
		return this.territorio;
	}

	/**
	 * Method 'setIdTerritorio'.
	 *
	 * @param idTerritorio Integer
	 */
	public void setTerritorio(String territorio) {
		this.territorio = territorio;
	}

	/**
	 * Method 'getFecInstalacion'.
	 *
	 * @return Date
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getFecAlta() {
		return this.fecDeAlta;
	}

	/**
	 * Method 'setFecInstalacion'.
	 *
	 * @param fecInstalacion Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecDeAlta(Date fecAlta) {
		this.fecDeAlta = fecAlta;
	}

	/**
	 * Method 'getFecBaja'.
	 *
	 * @return Date
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getFecBaja() {
		return this.fecDeBaja;
	}

	/**
	 * Method 'setFecBaja'.
	 *
	 * @param fecBaja Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecDeBaja(Date fecBaja) {
		this.fecDeBaja = fecBaja;
	}

	/**
	 * Method 'getNumMesesPendPago'.
	 *
	 * @return Integer
	 */
	public Integer getCantidadMensualidades() {
		return this.cantidadMensualidades;
	}

	/**
	 * Method 'setNumMesesPendPago'.
	 *
	 * @param numMesesPendPago Integer
	 */
	public void setCantidadMensualidades(Integer cantidadMensualidades) {
		this.cantidadMensualidades = cantidadMensualidades;
	}

	/**
	 * Method 'getDeuda'.
	 *
	 * @return BigDecimal
	 */
	public BigDecimal getDeuda() {
		return this.deuda;
	}

	/**
	 * Method 'setDeuda'.
	 *
	 * @param deuda BigDecimal
	 */
	public void setDeuda(BigDecimal deuda) {
		this.deuda = deuda;
	}

	/**
	 * Intended only for logging and debugging.
	 * 
	 * Here, the contents of every main field are placed into the result.
	 * 
	 * @return String
	 */
	@Override
	public String toString() {
		StringBuilder result = new StringBuilder();
		result.append(this.getClass().getName()).append(" Object { ");
		result.append(" [ idLiquidacion: ").append(this.idLiquidacion).append(" ]");
		result.append(", [ idBeneficiario: ").append(this.idSolicitante).append(" ]");
		result.append(", [ numIdentificacion: ").append(this.identificador).append(" ]");
		result.append(", [ nombre: ").append(this.nombre).append(" ]");
		result.append(", [ apellido1: ").append(this.apellido1).append(" ]");
		result.append(", [ apellido2: ").append(this.apellido2).append(" ]");
		result.append(", [ idTerritorio: ").append(this.territorio).append(" ]");
		result.append(", [ fecInstalacion: ").append(this.fecDeAlta).append(" ]");
		result.append(", [ fecBaja: ").append(this.fecDeBaja).append(" ]");
		result.append(", [ numMesesPendPago: ").append(this.cantidadMensualidades).append(" ]");
		result.append(", [ deuda: ").append(this.deuda).append(" ]");
		result.append("}");
		return result.toString();
	}

	/**
	 * Method 'getNombreCompleto'.
	 *
	 * @return String
	 */
	public String getNombreCompleto() {
		StringBuilder s = new StringBuilder();
		if (!Utilidades.esBlancoNulo(this.getNombre())) {
			s.append(this.getNombre());
			s.append(" ");
		}

		if (!Utilidades.esBlancoNulo(this.getApellido1())) {
			s.append(this.getApellido1());
			s.append(" ");
		}

		if (!Utilidades.esBlancoNulo(this.getApellido2())) {
			s.append(this.getApellido2());
		}
		return s.toString().trim();
	}

	/**
	 * Method 'getfInstalacionDesde'.
	 * 
	 * @return Date
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getFecInstalacionDesde() {
		return fecInstalacionDesde;
	}

	/**
	 * Method 'setfInstalacionDesde'.
	 *
	 * @param fInstalacionDesde Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecInstalacionDesde(Date fInstalacionDesde) {
		this.fecInstalacionDesde = fInstalacionDesde;
	}

	/**
	 * Method 'getfInstalacionHasta'.
	 * 
	 * @return Date
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getFecInstalacionHasta() {
		return fecInstalacionHasta;
	}

	/**
	 * Method 'setfInstalacionHasta'.
	 *
	 * @param fInstalacionHasta Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecInstalacionHasta(Date fInstalacionHasta) {
		this.fecInstalacionHasta = fInstalacionHasta;
	}

	/**
	 * Method 'getfBajaDesde'.
	 * 
	 * @return Date
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getFecBajaDesde() {
		return fecBajaDesde;
	}

	/**
	 * Method 'setfBajaDesde'.
	 *
	 * @param fBajaDesde Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecBajaDesde(Date fBajaDesde) {
		this.fecBajaDesde = fBajaDesde;
	}

	/**
	 * Method 'getfBajaHasta'.
	 * 
	 * @return Date
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getFecBajaHasta() {
		return fecBajaHasta;
	}

	/**
	 * Method 'setfBajaHasta'.
	 *
	 * @param fBajaHasta Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecBajaHasta(Date fBajaHasta) {
		this.fecBajaHasta = fBajaHasta;
	}

	/**
	 * Method 'getDeudaStr'.
	 *
	 * @return String
	 */
	public String getDeudaStr() {
		return Utilidades.BDtoMoneda(this.deuda);
	}

	public void setDeudaStr() {

	}

	public String getTipoIdentificador() {
		return tipoIdentificador;
	}

	public void setTipoIdentificador(String tipoIdentificador) {
		this.tipoIdentificador = tipoIdentificador;
	}

	public Long getIdTipoIngreso() {
		return idTipoIngreso;
	}

	public void setIdTipoIngreso(Long idTipoIngreso) {
		this.idTipoIngreso = idTipoIngreso;
	}

	public Integer getMinAnyo() {
		return minAnyo;
	}

	public void setMinAnyo(Integer minAnyo) {
		this.minAnyo = minAnyo;
	}

	public Integer getMaxAnyo() {
		return maxAnyo;
	}

	public void setMaxAnyo(Integer maxAnyo) {
		this.maxAnyo = maxAnyo;
	}

	public Integer getMaxMes() {
		return maxMes;
	}

	public void setMaxMes(Integer maxMes) {
		this.maxMes = maxMes;
	}

	public Integer getMinMes() {
		return minMes;
	}

	public void setMinMes(Integer minMes) {
		this.minMes = minMes;
	}

	public Integer getActivo() {
		return activo;
	}

	public void setActivo(Integer activo) {
		this.activo = activo;
	}

	/**
	 * @return the motivoExoneracion
	 */
	public String getMotivoExoneracion() {
		return motivoExoneracion;
	}

	/**
	 * @param observaciones the motivoExoneracion to set
	 */
	public void setMotivoExoneracion(String motivoExoneracion) {
		this.motivoExoneracion = motivoExoneracion;
	}

	public String getTerritorioStr() {
		if (null != this.territorio) {
			if (this.territorio.equals(TerritoriosEnum.ARABA.getId())) {
				return TerritoriosEnum.ARABA.getLabelDesc();
			} else if (this.territorio.equals(TerritoriosEnum.GIPUZKOA.getId())) {
				return TerritoriosEnum.GIPUZKOA.getLabelDesc();
			} else if (this.territorio.equals(TerritoriosEnum.BIZKAIA.getId())) {
				return TerritoriosEnum.BIZKAIA.getLabelDesc();
			}
		}
		return "";

	}

}
