package com.ejie.m62fb.model;

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

import org.codehaus.jackson.map.annotate.JsonDeserialize;
import org.codehaus.jackson.map.annotate.JsonSerialize;

import com.ejie.m62fb.utils.serializers.JsonBigDecimalDeserializer;
import com.ejie.m62fb.utils.serializers.JsonBigDecimalSerializer;
import com.ejie.m62fb.model.base.AbstractM62FBModel;
import com.ejie.m62fb.model.direccion.Direccion;
import com.ejie.m62fb.model.persona.Persona;
import com.ejie.m62fb.model.tipos.TipoContratoAlquiler;
import com.ejie.m62fb.model.tipos.TipoSiNo;
import com.ejie.x38.serialization.JsonDateDeserializer;
import com.ejie.x38.serialization.JsonDateSerializer;

/**
 * M62r05t0- Table BD reference
 * 
XXXX
 */

public class ContratoAlquiler extends AbstractM62FBModel implements
		java.io.Serializable {

	private static final long serialVersionUID = 1L;

	// Clave compuesta
	private Vivienda vivienda;
	private Inquilino inquilino;

	private ExpedienteVivienda expedienteVivienda;

	private Date fecInicio;
	private Date fecFin;
	private Direccion direccion;

	private BigDecimal impPrecioRenta;
	private BigDecimal imcPrecioRenta;
	private Date fecEnvContrato;
	private Date fecEnvFinContrato;
	private BigDecimal impFianza;
	private BigDecimal imcFianza;

	private CuentaBancaria cuentaBancaria;

	private String nifPagadorRenta;
	private String numCorrelPag;
	private TipoSiNo indVisado;
	private Date fecVisado;
	private Integer idContrato;
	private Date fecEntContrato;
	private Date fecEmpadron;

	private String texObservaciones;
	private TipoContratoAlquiler tipoContratoAlquiler;
	private Persona pagadorRenta;
	private Date fecIniFac;
	private TipoSiNo indSolicitaAyuda;
	private TipoSiNo indVivAdaptada;
	private Date fecEscritura;
	private Date fecContrato;
	private TipoSiNo indRenuncia;
	private Date fecRenuncia;
	private TipoSiNo indDenegacion;
	private Date fecDenegacion;

	private Date fecFinForzosa;

	/**
	 * Method 'ContratoAlquiler'.
	 */
	public ContratoAlquiler() {
		super();
	}

	/**
	 * Method 'ContratoAlquiler'.
	 * 
	 * @param vivienda
	 *            Vivienda
	 * @param inquilino
	 *            Inquilino
	 */
	public ContratoAlquiler(Vivienda vivienda, Inquilino inquilino) {
		super();
		this.vivienda = vivienda;
		this.inquilino = inquilino;
	}

	/**
	 * Method 'ContratoAlquiler'.
	 * 
	 * @param numVivienda
	 *            BigDecimal
	 * @param numInquilino
	 *            BigDecimal
	 */
	public ContratoAlquiler(BigDecimal numVivienda, BigDecimal numInquilino) {
		super();
		this.vivienda = new Vivienda(numVivienda);
		this.inquilino = new Inquilino(numInquilino);
	}
	
	
	/**
	 * @param idContrato
	 */
	public ContratoAlquiler(Integer idContrato) {
		super();
		this.idContrato = idContrato;
	}

	/**
	 * Method 'getVivienda'
	 * 
	 * @return vivienda
	 */
	public Vivienda getVivienda() {
		return this.vivienda;
	}

	/**
	 * Method 'setVivienda'
	 * 
	 * @param vivienda
	 *            Vivienda
	 */
	public void setVivienda(Vivienda vivienda) {
		this.vivienda = vivienda;
	}

	/**
	 * Method 'getInquilino'
	 * 
	 * @return inquilino
	 */
	public Inquilino getInquilino() {
		return this.inquilino;
	}

	/**
	 * Method 'setInquilino'
	 * 
	 * @param inquilino
	 *            Inquilino
	 */
	public void setInquilino(Inquilino inquilino) {
		this.inquilino = inquilino;
	}

	/**
	 * Method 'getExpedienteVivienda'
	 * 
	 * @return expedienteVivienda
	 */
	public ExpedienteVivienda getExpedienteVivienda() {
		return this.expedienteVivienda;
	}

	/**
	 * Method 'setExpedienteVivienda'
	 * 
	 * @param expedienteVivienda
	 *            ExpedienteVivienda
	 */
	public void setExpedienteVivienda(ExpedienteVivienda expedienteVivienda) {
		this.expedienteVivienda = expedienteVivienda;
	}

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

	/**
	 * Method 'setFecInicio'
	 * 
	 * @param fecInicio
	 *            Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecInicio(Date fecInicio) {
		this.fecInicio = fecInicio;
	}

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

	/**
	 * Method 'setFecFin'
	 * 
	 * @param fecFin
	 *            Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecFin(Date fecFin) {
		this.fecFin = fecFin;
	}

	/**
	 * Method 'getDireccion'
	 * 
	 * @return direccion
	 */
	public Direccion getDireccion() {
		return this.direccion;
	}

	/**
	 * Method 'setDireccion'
	 * 
	 * @param direccion
	 *            Direccion
	 */
	public void setDireccion(Direccion direccion) {
		this.direccion = direccion;
	}

	/**
	 * Method 'getImpPrecioRenta'
	 * 
	 * @return impPrecioRenta
	 */
	@JsonSerialize(using = JsonBigDecimalSerializer.class)
	public BigDecimal getImpPrecioRenta() {
		return this.impPrecioRenta;
	}

	/**
	 * Method 'setImpPrecioRenta'
	 * 
	 * @param impPrecioRenta
	 *            BigDecimal
	 */
	@JsonDeserialize(using = JsonBigDecimalDeserializer.class)
	public void setImpPrecioRenta(BigDecimal impPrecioRenta) {
		this.impPrecioRenta = impPrecioRenta;
	}

	/**
	 * Method 'getImcPrecioRenta'
	 * 
	 * @return imcPrecioRenta
	 */
	@JsonSerialize(using = JsonBigDecimalSerializer.class)
	public BigDecimal getImcPrecioRenta() {
		return this.imcPrecioRenta;
	}

	/**
	 * Method 'setImcPrecioRenta'
	 * 
	 * @param imcPrecioRenta
	 *            BigDecimal
	 */
	@JsonDeserialize(using = JsonBigDecimalDeserializer.class)
	public void setImcPrecioRenta(BigDecimal imcPrecioRenta) {
		this.imcPrecioRenta = imcPrecioRenta;
	}

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

	/**
	 * Method 'setFecEnvContrato'
	 * 
	 * @param fecEnvContrato
	 *            Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecEnvContrato(Date fecEnvContrato) {
		this.fecEnvContrato = fecEnvContrato;
	}

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

	/**
	 * Method 'setFecEnvFinContrato'
	 * 
	 * @param fecEnvFinContrato
	 *            Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecEnvFinContrato(Date fecEnvFinContrato) {
		this.fecEnvFinContrato = fecEnvFinContrato;
	}

	/**
	 * Method 'getImpFianza'
	 * 
	 * @return impFianza
	 */
	public BigDecimal getImpFianza() {
		return this.impFianza;
	}

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

	/**
	 * Method 'getImcFianza'
	 * 
	 * @return imcFianza
	 */
	public BigDecimal getImcFianza() {
		return this.imcFianza;
	}

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

	/**
	 * Method 'getCuentaBancaria'
	 * 
	 * @return cuentaBancaria
	 */
	public CuentaBancaria getCuentaBancaria() {
		return this.cuentaBancaria;
	}

	/**
	 * Method 'setCuentaBancaria'
	 * 
	 * @param cuentaBancaria
	 *            CuentaBancaria
	 */
	public void setCuentaBancaria(CuentaBancaria cuentaBancaria) {
		this.cuentaBancaria = cuentaBancaria;
	}

	/**
	 * Method 'getNifPagadorRenta'
	 * 
	 * @return nifPagadorRenta
	 */
	public String getNifPagadorRenta() {
		return this.nifPagadorRenta;
	}

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

	/**
	 * Method 'getNumCorrelPag'
	 * 
	 * @return numCorrelPag
	 */
	public String getNumCorrelPag() {
		return this.numCorrelPag;
	}

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

	/**
	 * Method 'getIndVisado'
	 * 
	 * @return indVisado
	 */
	public TipoSiNo getIndVisado() {
		return this.indVisado;
	}

	/**
	 * Method 'setIndVisado'
	 * 
	 * @param indVisado
	 *            TipoSiNo
	 */
	public void setIndVisado(TipoSiNo indVisado) {
		this.indVisado = indVisado;
	}

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

	/**
	 * Method 'setFecVisado'
	 * 
	 * @param fecVisado
	 *            Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecVisado(Date fecVisado) {
		this.fecVisado = fecVisado;
	}

	/**
	 * Method 'getIdContrato'
	 * 
	 * @return idContrato
	 */
	public Integer getIdContrato() {
		return this.idContrato;
	}

	/**
	 * Method 'setIdContrato'
	 * 
	 * @param idContrato
	 *            Integer
	 */
	public void setIdContrato(Integer idContrato) {
		this.idContrato = idContrato;
	}

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

	/**
	 * Method 'setFecEntContrato'
	 * 
	 * @param fecEntContrato
	 *            Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecEntContrato(Date fecEntContrato) {
		this.fecEntContrato = fecEntContrato;
	}

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

	/**
	 * Method 'setFecEmpadron'
	 * 
	 * @param fecEmpadron
	 *            Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecEmpadron(Date fecEmpadron) {
		this.fecEmpadron = fecEmpadron;
	}

	/**
	 * Method 'getTexObservaciones'
	 * 
	 * @return texObservaciones
	 */
	public String getTexObservaciones() {
		return this.texObservaciones;
	}

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

	/**
	 * Method 'getTipoContratoAlquiler'
	 * 
	 * @return tipoContratoAlquiler
	 */
	public TipoContratoAlquiler getTipoContratoAlquiler() {
		return this.tipoContratoAlquiler;
	}

	/**
	 * Method 'setTipoContratoAlquiler'
	 * 
	 * @param tipoContratoAlquiler
	 *            TipoContratoAlquiler
	 */
	public void setTipoContratoAlquiler(
			TipoContratoAlquiler tipoContratoAlquiler) {
		this.tipoContratoAlquiler = tipoContratoAlquiler;
	}

	/**
	 * Method 'getPagadorRenta'
	 * 
	 * @return pagadorRenta
	 */
	public Persona getPagadorRenta() {
		return this.pagadorRenta;
	}

	/**
	 * Method 'setPagadorRenta'
	 * 
	 * @param pagadorRenta
	 *            Persona
	 */
	public void setPagadorRenta(Persona pagadorRenta) {
		this.pagadorRenta = pagadorRenta;
	}

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

	/**
	 * Method 'setFecIniFac'
	 * 
	 * @param fecIniFac
	 *            Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecIniFac(Date fecIniFac) {
		this.fecIniFac = fecIniFac;
	}

	/**
	 * Method 'getIndSolicitaAyuda'
	 * 
	 * @return indSolicitaAyuda
	 */
	public TipoSiNo getIndSolicitaAyuda() {
		return this.indSolicitaAyuda;
	}

	/**
	 * Method 'setIndSolicitaAyuda'
	 * 
	 * @param indSolicitaAyuda
	 *            TipoSiNo
	 */
	public void setIndSolicitaAyuda(TipoSiNo indSolicitaAyuda) {
		this.indSolicitaAyuda = indSolicitaAyuda;
	}

	/**
	 * Method 'getIndVivAdaptada'
	 * 
	 * @return indVivAdaptada
	 */
	public TipoSiNo getIndVivAdaptada() {
		return this.indVivAdaptada;
	}

	/**
	 * Method 'setIndVivAdaptada'
	 * 
	 * @param indVivAdaptada
	 *            TipoSiNo
	 */
	public void setIndVivAdaptada(TipoSiNo indVivAdaptada) {
		this.indVivAdaptada = indVivAdaptada;
	}

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

	/**
	 * Method 'setFecEscritura'
	 * 
	 * @param fecEscritura
	 *            Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecEscritura(Date fecEscritura) {
		this.fecEscritura = fecEscritura;
	}

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

	/**
	 * Method 'setFecContrato'
	 * 
	 * @param fecContrato
	 *            Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecContrato(Date fecContrato) {
		this.fecContrato = fecContrato;
	}

	/**
	 * Method 'getIndRenuncia'
	 * 
	 * @return indRenuncia
	 */
	public TipoSiNo getIndRenuncia() {
		return this.indRenuncia;
	}

	/**
	 * Method 'setIndRenuncia'
	 * 
	 * @param indRenuncia
	 *            TipoSiNo
	 */
	public void setIndRenuncia(TipoSiNo indRenuncia) {
		this.indRenuncia = indRenuncia;
	}

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

	/**
	 * Method 'setFecRenuncia'
	 * 
	 * @param fecRenuncia
	 *            Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecRenuncia(Date fecRenuncia) {
		this.fecRenuncia = fecRenuncia;
	}

	/**
	 * Method 'getIndDenegacion'
	 * 
	 * @return indDenegacion
	 */
	public TipoSiNo getIndDenegacion() {
		return this.indDenegacion;
	}

	/**
	 * Method 'setIndDenegacion'
	 * 
	 * @param indDenegacion
	 *            TipoSiNo
	 */
	public void setIndDenegacion(TipoSiNo indDenegacion) {
		this.indDenegacion = indDenegacion;
	}

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

	/**
	 * Method 'setFecDenegacion'
	 * 
	 * @param fecDenegacion
	 *            Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecDenegacion(Date fecDenegacion) {
		this.fecDenegacion = fecDenegacion;
	}

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

	/**
	 * Method 'setFecFinForzosa'
	 * 
	 * @param fecFinForzosa
	 *            Date
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecFinForzosa(Date fecFinForzosa) {
		this.fecFinForzosa = fecFinForzosa;
	}
}