/*
* 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.io.IOException;
import java.math.BigDecimal;
import java.util.Date;

import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.context.i18n.LocaleContextHolder;

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

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

public class Cobros implements java.io.Serializable {

	private static final long serialVersionUID = 1L;

	private Long idLiquidacion;
	private String referenciaLiq;
	private String numLiquidacion;
	private String concepto;
	private Date fecEmision;
	private BigDecimal importe;
	private Long estado;
	private Long idSolicitante;
	private String motAnulacion;
	private Solicitantes solicitante;
	private String motAnulacionEs;
	private String motAnulacionEu;

	// Campos para el filtro
	private Boolean ultimaLiquidacion;
	private Date fEmisionDesde;
	private Date fEmisionHasta;

	private String descMotAnulacionEs;
	private String descMotAnulacionEu;

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

	/**
	 * Method 'Cobros'.
	 * 
	 * @param idLiquidacion  Long
	 * @param numLiquidacion Integer
	 * @param concepto       String
	 * @param fecEmision     Date
	 * @param importe        BigDecimal
	 * @param estado         Long
	 * @param idSolicitante  Long
	 * @param motAnulacion   String
	 */
	public Cobros(Long idLiquidacion, String numLiquidacion, String concepto, Date fecEmision, BigDecimal importe,
			Long estado, Long idSolicitante, String motAnulacion) {
		this.idLiquidacion = idLiquidacion;
		this.numLiquidacion = numLiquidacion;
		this.concepto = concepto;
		this.fecEmision = fecEmision;
		this.importe = importe;
		this.estado = estado;
		this.idSolicitante = idSolicitante;
		this.motAnulacion = motAnulacion;
	}

	/**
	 * Method 'Cobros'.
	 * 
	 * @param idLiquidacion Long
	 */
	public Cobros(Long idLiquidacion) {
		this.idLiquidacion = idLiquidacion;
	}

	/**
	 * Method 'getIdLiquidacion'.
	 *
	 * @return Long
	 */
	public Long getIdLiquidacion() {
		return this.idLiquidacion;
	}

	/**
	 * Method 'setIdLiquidacion'.
	 *
	 * @param idLiquidacion Long
	 */
	public void setIdLiquidacion(Long idLiquidacion) {
		this.idLiquidacion = idLiquidacion;
	}

	/**
	 * Method 'getNumLiquidacion'.
	 *
	 * @return Integer
	 */
	public String getNumLiquidacion() {
		return this.numLiquidacion;
	}

	/**
	 * Method 'setNumLiquidacion'.
	 *
	 * @param numLiquidacion Integer
	 */
	public void setNumLiquidacion(String numLiquidacion) {
		this.numLiquidacion = numLiquidacion;
	}

	/**
	 * Method 'getConcepto'.
	 *
	 * @return String
	 */
	public String getConcepto() {
		return this.concepto;
	}

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

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

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

	/**
	 * Method 'getImporte'.
	 *
	 * @return BigDecimal
	 */
	public BigDecimal getImporte() {
		return this.importe;
	}

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

	/**
	 * Method 'getEstado'.
	 *
	 * @return Long
	 */
	public Long getEstado() {
		return this.estado;
	}

	/**
	 * Method 'setEstado'.
	 *
	 * @param estado Long
	 */
	public void setEstado(Long estado) {
		this.estado = estado;
	}

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

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

	/**
	 * Method 'getMotAnulacion'.
	 *
	 * @return String
	 */
	public String getMotAnulacion() {
		return this.motAnulacion;
	}

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

	/**
	 * 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(", [ numLiquidacion: ").append(this.numLiquidacion).append(" ]");
		result.append(", [ concepto: ").append(this.concepto).append(" ]");
		result.append(", [ fecEmision: ").append(this.fecEmision).append(" ]");
		result.append(", [ importe: ").append(this.importe).append(" ]");
		result.append(", [ estado: ").append(this.estado).append(" ]");
		result.append(", [ idSolicitante: ").append(this.idSolicitante).append(" ]");
		result.append(", [ motAnulacion: ").append(this.motAnulacion).append(" ]");
		result.append("}");
		return result.toString();
	}

	/**
	 * Method 'getUltimaLiquidacion'.
	 *
	 * @return Boolean
	 */
	public Boolean getUltimaLiquidacion() {
		return ultimaLiquidacion;
	}

	/**
	 * Method 'setUltimaLiquidacion'.
	 *
	 * @param ultimaLiquidacion Boolean
	 */
	public void setUltimaLiquidacion(Boolean ultimaLiquidacion) {
		this.ultimaLiquidacion = ultimaLiquidacion;
	}

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

	/**
	 * Method 'getfEmisionDesde'.
	 * 
	 * @return Date
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfEmisionDesde() {
		return fEmisionDesde;
	}

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

	/**
	 * Method 'getfEmisionHasta'.
	 * 
	 * @return Date
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfEmisionHasta() {
		return fEmisionHasta;
	}

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

	public Solicitantes getSolicitante() {
		return solicitante;
	}

	public void setSolicitante(Solicitantes solicitante) {
		this.solicitante = solicitante;
	}

	public String getDescMotAnulacionEs() {
		return descMotAnulacionEs;
	}

	public void setDescMotAnulacionEs(String descMotAnulacionEs) {
		this.descMotAnulacionEs = descMotAnulacionEs;
	}

	public String getDescMotAnulacionEu() {
		return descMotAnulacionEu;
	}

	public void setDescMotAnulacionEu(String descMotAnulacionEu) {
		this.descMotAnulacionEu = descMotAnulacionEu;
	}

	public String getDescMotAnulacion() {
		if (LocaleContextHolder.getLocale().getLanguage().equalsIgnoreCase(Constantes.LOCALE_ES.getLanguage())) {
			return this.getDescMotAnulacionEs();
		} else if (LocaleContextHolder.getLocale().getLanguage().equalsIgnoreCase(Constantes.LOCALE_EU.getLanguage())) {
			return this.getDescMotAnulacionEu();
		}
		return "";
	}

	public String getReferenciaLiq() {
		return referenciaLiq;
	}

	public void setReferenciaLiq(String referenciaLiq) {
		this.referenciaLiq = referenciaLiq;
	}

	public String getMotAnulacionEs() {
		return motAnulacionEs;
	}

	public void setMotAnulacionEs(String motAnulacionEs) {
		this.motAnulacionEs = motAnulacionEs;
	}

	public String getMotAnulacionEu() {
		return motAnulacionEu;
	}

	public void setMotAnulacionEu(String motAnulacionEu) {
		this.motAnulacionEu = motAnulacionEu;
	}

//	@JsonIgnore
//	public String obtenerJSON() {
//
//		ObjectMapper mapper = new ObjectMapper();
//
//		// Object to JSON in String
//		try {
//			return mapper.writeValueAsString(this);
//		} catch (IOException e) {
//			return "";
//		}
//	}
}
