package com.ejie.m62fb.model;

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

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

import com.ejie.m62fb.utils.format.FormatUtils;
import com.ejie.m62fb.utils.serializers.JsonBigDecimalDeserializer;
import com.ejie.m62fb.utils.serializers.JsonBigDecimalSerializer;
import com.ejie.m62fb.model.base.AbstractM62FBModel;
import com.ejie.x38.serialization.JsonDateDeserializer;
import com.ejie.x38.serialization.JsonDateSerializer;

/**
 * AcuerdoVivienda.
 * 
XXXX
 */
public class AcuerdoVivienda extends AbstractM62FBModel implements
		java.io.Serializable {

	private static final long serialVersionUID = 1L;

	private Integer idM62r41t0;
	private SolicitudReserva solicitudReserva;
	private Date fecAcuerdo;
	private String desEntidadRecep;
	private String desDptoRecep;
	private String indModifSinDoc;

	// Campos calculados de la vista
	private Integer numVivReservadas;
	private BigDecimal imcPvpTotal;

	private List<ViviendaReservada> vivReservadas = new ArrayList<ViviendaReservada>();

	/**
	 * Method 'getVivReservadas'
	 * 
	 * @return vivReservadas
	 */
	public List<ViviendaReservada> getVivReservadas() {
		return this.vivReservadas;
	}

	/**
	 * Method 'setVivReservadas'.
	 * 
	 * @param vivReservadas
	 *            List<ViviendaReservada>
	 */
	public void setVivReservadas(List<ViviendaReservada> vivReservadas) {
		this.vivReservadas = vivReservadas;
	}

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

	/**
	 * Method 'AcuerdoVivienda'.
	 * 
	 * @param idM62r41t0
	 *            Integer
	 */
	public AcuerdoVivienda(Integer idM62r41t0) {
		this.idM62r41t0 = idM62r41t0;
	}

	/**
	 * Method 'getIdM62r41t0'.
	 * 
	 * @return Integer
	 */
	public Integer getIdM62r41t0() {
		return this.idM62r41t0;
	}

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

	/**
	 * Method 'getSolicitudReserva'
	 * 
	 * @return solicitudReserva
	 */
	public SolicitudReserva getSolicitudReserva() {
		return this.solicitudReserva;
	}

	/**
	 * Method 'setSolicitudReserva'
	 * 
	 * @param solicitudReserva
	 *            SolicitudReserva
	 */
	public void setSolicitudReserva(SolicitudReserva solicitudReserva) {
		this.solicitudReserva = solicitudReserva;
	}

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

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

	/**
	 * Method 'getDesEntidadRecep'.
	 * 
	 * @return String
	 */
	public String getDesEntidadRecep() {
		return this.desEntidadRecep;
	}

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

	/**
	 * Method 'getDesDptoRecep'.
	 * 
	 * @return String
	 */
	public String getDesDptoRecep() {
		return this.desDptoRecep;
	}

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

	/**
	 * Method 'getIndModifSinDoc'.
	 * 
	 * @return String
	 */
	public String getIndModifSinDoc() {
		return this.indModifSinDoc;
	}

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

	/**
	 * Method 'getNumVivReservadas'.
	 * 
	 * @return Integer
	 */
	public Integer getNumVivReservadas() {
		return this.numVivReservadas;
	}

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

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

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

	/**
	 * Method 'getImcPvpTotalStr'
	 * 
	 * @return String, imcPvpTotal formateado
	 */
	public String getImcPvpTotalStr() {
		return FormatUtils.bigDecimalToString(this.getImcPvpTotal(), 2);
	}
}