package com.ejie.ad74a.model;

import com.ejie.ad74a.util.comun.Utilidades;
import com.ejie.ad74a.util.constantes.MesesEnum;
import com.ejie.ad74a.util.constantes.ae01b.EstadoLiqEnum;
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;

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

/**
 * FacturacionAyuntamientos generated by UDA, 18-jul-2024 14:25:16.
 * 
 * @author UDA
 */

public class FacturacionAyuntamientos implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	private Integer idFacturacion90;
	private Integer idAyuntamiento90;
	private Long anyoDesde90;
	private Long mesDesde90;
	private Long anyoHasta90;
	private Long mesHasta90;
	private Date fecEmision90;
	private BigDecimal importeFacturado90;
	private String referenciaRecibo90;
	private Integer procesado90;
	private Blob informe90;
	private Ayuntamientos ayuntamientos;
	private String descProvincia;
	private String descMunicipio;
	private Direcciones direcciones;
	private String numLiquidacion;
	private String estadoLiq;
	private String indDomic;
	private String idLiquidacion;
	private Integer tieneInforme;

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

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

	/**
	 * Method 'FacturacionAyuntamientos'.
	 * 
	 * @param idFacturacion90    Integer
	 * @param idAyuntamiento90   Integer
	 * @param anyoDesde90        Long
	 * @param mesDesde90         Long
	 * @param anyoHasta90        Long
	 * @param mesHasta90         Long
	 * @param FEmision90         Date
	 * @param importeFacturado90 Integer
	 * @param referenciaRecibo90 String
	 * @param procesado90        Integer
	 * @param informe90          Blob
	 */
	public FacturacionAyuntamientos(Integer idFacturacion90, Integer idAyuntamiento90, Long anyoDesde90,
			Long mesDesde90, Long anyoHasta90, Long mesHasta90, Date FEmision90, BigDecimal importeFacturado90,
			String referenciaRecibo90, Integer procesado90, Blob informe90) {

		this.idFacturacion90 = idFacturacion90;
		this.idAyuntamiento90 = idAyuntamiento90;
		this.anyoDesde90 = anyoDesde90;
		this.mesDesde90 = mesDesde90;
		this.anyoHasta90 = anyoHasta90;
		this.mesHasta90 = mesHasta90;
		this.fecEmision90 = FEmision90;
		this.importeFacturado90 = importeFacturado90;
		this.referenciaRecibo90 = referenciaRecibo90;
		this.procesado90 = procesado90;
		this.informe90 = informe90;
	}

	/**
	 * Method 'getIdFacturacion90'.
	 *
	 * @return Integer
	 */

	public Integer getIdFacturacion90() {
		return this.idFacturacion90;
	}

	/**
	 * Method 'setIdFacturacion90'.
	 *
	 * @param idFacturacion90 Integer
	 * @return
	 */

	public void setIdFacturacion90(Integer idFacturacion90) {
		this.idFacturacion90 = idFacturacion90;
	}

	/**
	 * Method 'getIdAyuntamiento90'.
	 *
	 * @return Integer
	 */

	public Integer getIdAyuntamiento90() {
		return this.idAyuntamiento90;
	}

	/**
	 * Method 'setIdAyuntamiento90'.
	 *
	 * @param idAyuntamiento90 Integer
	 * @return
	 */

	public void setIdAyuntamiento90(Integer idAyuntamiento90) {
		this.idAyuntamiento90 = idAyuntamiento90;
	}

	/**
	 * Method 'getAnyoDesde90'.
	 *
	 * @return Long
	 */

	public Long getAnyoDesde90() {
		return this.anyoDesde90;
	}

	/**
	 * Method 'setAnyoDesde90'.
	 *
	 * @param anyoDesde90 Long
	 * @return
	 */

	public void setAnyoDesde90(Long anyoDesde90) {
		this.anyoDesde90 = anyoDesde90;
	}

	/**
	 * Method 'getMesDesde90'.
	 *
	 * @return Long
	 */

	public Long getMesDesde90() {
		return this.mesDesde90;
	}

	/**
	 * Method 'setMesDesde90'.
	 *
	 * @param mesDesde90 Long
	 * @return
	 */

	public void setMesDesde90(Long mesDesde90) {
		this.mesDesde90 = mesDesde90;
	}

	/**
	 * Method 'getAnyoHasta90'.
	 *
	 * @return Long
	 */

	public Long getAnyoHasta90() {
		return this.anyoHasta90;
	}

	/**
	 * Method 'setAnyoHasta90'.
	 *
	 * @param anyoHasta90 Long
	 * @return
	 */

	public void setAnyoHasta90(Long anyoHasta90) {
		this.anyoHasta90 = anyoHasta90;
	}

	/**
	 * Method 'getMesHasta90'.
	 *
	 * @return Long
	 */

	public Long getMesHasta90() {
		return this.mesHasta90;
	}

	/**
	 * Method 'setMesHasta90'.
	 *
	 * @param mesHasta90 Long
	 * @return
	 */

	public void setMesHasta90(Long mesHasta90) {
		this.mesHasta90 = mesHasta90;
	}

	/**
	 * Method 'getFEmision90'.
	 *
	 * @return java.util.Date
	 */

	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getFecEmision90() {
		return this.fecEmision90;
	}

	/**
	 * Method 'setFEmision90'.
	 *
	 * @param FEmision90 java.util.Date
	 * @return
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecEmision90(Date FEmision90) {
		this.fecEmision90 = FEmision90;
	}

	/**
	 * Method 'getImporteFacturado90'.
	 *
	 * @return Integer
	 */

	public BigDecimal getImporteFacturado90() {
		return this.importeFacturado90;
	}

	/**
	 * Method 'setImporteFacturado90'.
	 *
	 * @param importeFacturado90 Integer
	 * @return
	 */

	public void setImporteFacturado90(BigDecimal importeFacturado90) {
		this.importeFacturado90 = importeFacturado90;
	}

	/**
	 * Method 'getReferenciaRecibo90'.
	 *
	 * @return String
	 */

	public String getReferenciaRecibo90() {
		return this.referenciaRecibo90;
	}

	/**
	 * Method 'setReferenciaRecibo90'.
	 *
	 * @param referenciaRecibo90 String
	 * @return
	 */

	public void setReferenciaRecibo90(String referenciaRecibo90) {
		this.referenciaRecibo90 = referenciaRecibo90;
	}

	/**
	 * Method 'getProcesado90'.
	 *
	 * @return Integer
	 */

	public Integer getProcesado90() {
		return this.procesado90;
	}

	/**
	 * Method 'setProcesado90'.
	 *
	 * @param procesado90 Integer
	 * @return
	 */

	public void setProcesado90(Integer procesado90) {
		this.procesado90 = procesado90;
	}

	/**
	 * Method 'getInforme90'.
	 *
	 * @return Blob
	 */
	@JsonIgnore

	public Blob getInforme90() {
		return this.informe90;
	}

	/**
	 * Method 'setInforme90'.
	 *
	 * @param informe90 Blob
	 * @return
	 */

	public void setInforme90(Blob informe90) {
		this.informe90 = informe90;
	}

	/**
	 * 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(" [ idFacturacion90: ").append(this.idFacturacion90).append(" ]");
		result.append(", [ idAyuntamiento90: ").append(this.idAyuntamiento90).append(" ]");
		result.append(", [ anyoDesde90: ").append(this.anyoDesde90).append(" ]");
		result.append(", [ mesDesde90: ").append(this.mesDesde90).append(" ]");
		result.append(", [ anyoHasta90: ").append(this.anyoHasta90).append(" ]");
		result.append(", [ mesHasta90: ").append(this.mesHasta90).append(" ]");
		result.append(", [ FEmision90: ").append(this.fecEmision90).append(" ]");
		result.append(", [ importeFacturado90: ").append(this.importeFacturado90).append(" ]");
		result.append(", [ referenciaRecibo90: ").append(this.referenciaRecibo90).append(" ]");
		result.append(", [ procesado90: ").append(this.procesado90).append(" ]");
		result.append("}");
		return result.toString();
	}

	public Ayuntamientos getAyuntamientos() {
		return ayuntamientos;
	}

	public void setAyuntamientos(Ayuntamientos ayuntamientos) {
		this.ayuntamientos = ayuntamientos;
	}

	public String getDescProvincia() {
		return descProvincia;
	}

	public void setDescProvincia(String descProvincia) {
		this.descProvincia = descProvincia;
	}

	public String getDescMunicipio() {
		return descMunicipio;
	}

	public void setDescMunicipio(String descMunicipio) {
		this.descMunicipio = descMunicipio;
	}

	public Direcciones getDirecciones() {
		return direcciones;
	}

	public void setDirecciones(Direcciones direcciones) {
		this.direcciones = direcciones;
	}

	public String getNumLiquidacion() {
		return numLiquidacion;
	}

	public void setNumLiquidacion(String numLiquidacion) {
		this.numLiquidacion = numLiquidacion;
	}

	public String getEstadoLiq() {
		return estadoLiq;
	}

	public void setEstadoLiq(String estadoLiq) {
		this.estadoLiq = estadoLiq;
	}

	public String getIndDomic() {
		return indDomic;
	}

	public void setIndDomic(String indDomic) {
		this.indDomic = indDomic;
	}

	public String getImporteFacturado90Str() {
		return Utilidades.BDtoMoneda(this.importeFacturado90);
	}

	public void setIdLiquidacion(String idLiquidacion) {
		this.idLiquidacion = idLiquidacion;

	}

	public String getIdLiquidacion() {
		return idLiquidacion;
	}

	public String getDescAyuntamiento() {
		if (this.ayuntamientos.getCif31() != null && this.ayuntamientos.getDesc() != null) {
			return this.ayuntamientos.getCif31() + " - " + this.ayuntamientos.getDesc();
		}
		return "";

	}

	public String getPeriodoFacturacion() {
		String mesDesdeDesc = "";
		String mesDesde = this.getMesDesde90().toString();

		if (mesDesde.equals(MesesEnum.ENERO.getId())) {
			mesDesdeDesc = MesesEnum.ENERO.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.FEBRERO.getId())) {
			mesDesdeDesc = MesesEnum.FEBRERO.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.MARZO.getId())) {
			mesDesdeDesc = MesesEnum.MARZO.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.ABRIL.getId())) {
			mesDesdeDesc = MesesEnum.ABRIL.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.MAYO.getId())) {
			mesDesdeDesc = MesesEnum.MAYO.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.JUNIO.getId())) {
			mesDesdeDesc = MesesEnum.JUNIO.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.JULIO.getId())) {
			mesDesdeDesc = MesesEnum.JULIO.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.AGOSTO.getId())) {
			mesDesdeDesc = MesesEnum.AGOSTO.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.SEPTIEMBRE.getId())) {
			mesDesdeDesc = MesesEnum.SEPTIEMBRE.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.OCTUBRE.getId())) {
			mesDesdeDesc = MesesEnum.OCTUBRE.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.NOVIEMBRE.getId())) {
			mesDesdeDesc = MesesEnum.NOVIEMBRE.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.DICIEMBRE.getId())) {
			mesDesdeDesc = MesesEnum.DICIEMBRE.getLabelDesc();
		}

		String mesHastaDesc = "";
		String mesHasta = this.getMesHasta90().toString();

		if (mesHasta.equals(MesesEnum.ENERO.getId())) {
			mesHastaDesc = MesesEnum.ENERO.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.FEBRERO.getId())) {
			mesHastaDesc = MesesEnum.FEBRERO.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.MARZO.getId())) {
			mesHastaDesc = MesesEnum.MARZO.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.ABRIL.getId())) {
			mesHastaDesc = MesesEnum.ABRIL.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.MAYO.getId())) {
			mesHastaDesc = MesesEnum.MAYO.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.JUNIO.getId())) {
			mesHastaDesc = MesesEnum.JUNIO.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.JULIO.getId())) {
			mesHastaDesc = MesesEnum.JULIO.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.AGOSTO.getId())) {
			mesHastaDesc = MesesEnum.AGOSTO.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.SEPTIEMBRE.getId())) {
			mesHastaDesc = MesesEnum.SEPTIEMBRE.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.OCTUBRE.getId())) {
			mesHastaDesc = MesesEnum.OCTUBRE.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.NOVIEMBRE.getId())) {
			mesHastaDesc = MesesEnum.NOVIEMBRE.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.DICIEMBRE.getId())) {
			mesHastaDesc = MesesEnum.DICIEMBRE.getLabelDesc();
		}

		if (this.getAnyoDesde90() != null && this.getMesDesde90() != null && this.getAnyoHasta90() != null
				&& this.getMesHasta90() != null) {
			if (this.getAnyoDesde90() != this.getAnyoHasta90()) {
				return mesDesdeDesc + " " + this.getAnyoDesde90() + " - " + mesHastaDesc + " " + this.getAnyoHasta90();
			} else {
				return mesDesdeDesc + " - " + mesHastaDesc + " " + this.getAnyoHasta90();
			}

		}
		return "";

	}

	public String getEstadoStr() {
		if (null != this.estadoLiq) {
			String estado = this.estadoLiq;
			if (estado.equals(EstadoLiqEnum.PENDIENTE_COBRO.getId())) {
				return EstadoLiqEnum.PENDIENTE_COBRO.getLabelDesc();
			} else if (estado.equals(EstadoLiqEnum.ANULADA.getId())) {
				return EstadoLiqEnum.ANULADA.getLabelDesc();
			} else if (estado.equals(EstadoLiqEnum.COBRO_PROVISIONAL.getId())) {
				return EstadoLiqEnum.COBRO_PROVISIONAL.getLabelDesc();
			} else if (estado.equals(EstadoLiqEnum.COBRO_DEFINITIVO.getId())) {
				return EstadoLiqEnum.COBRO_DEFINITIVO.getLabelDesc();
			} else if (estado.equals(EstadoLiqEnum.VIA_APREMIO.getId())) {
				return EstadoLiqEnum.VIA_APREMIO.getLabelDesc();
			}
		}
		return "";
	}

	public String getInformesStrExcel() {
		return "";
	}

	public String getPeriodoFacturacionDesde() {
		String mesDesdeDesc = "";
		String mesDesde = this.mesDesde90.toString();

		if (mesDesde.equals(MesesEnum.ENERO.getId())) {
			mesDesdeDesc = MesesEnum.ENERO.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.FEBRERO.getId())) {
			mesDesdeDesc = MesesEnum.FEBRERO.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.MARZO.getId())) {
			mesDesdeDesc = MesesEnum.MARZO.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.ABRIL.getId())) {
			mesDesdeDesc = MesesEnum.ABRIL.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.MAYO.getId())) {
			mesDesdeDesc = MesesEnum.MAYO.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.JUNIO.getId())) {
			mesDesdeDesc = MesesEnum.JUNIO.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.JULIO.getId())) {
			mesDesdeDesc = MesesEnum.JULIO.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.AGOSTO.getId())) {
			mesDesdeDesc = MesesEnum.AGOSTO.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.SEPTIEMBRE.getId())) {
			mesDesdeDesc = MesesEnum.SEPTIEMBRE.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.OCTUBRE.getId())) {
			mesDesdeDesc = MesesEnum.OCTUBRE.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.NOVIEMBRE.getId())) {
			mesDesdeDesc = MesesEnum.NOVIEMBRE.getLabelDesc();
		} else if (mesDesde.equals(MesesEnum.DICIEMBRE.getId())) {
			mesDesdeDesc = MesesEnum.DICIEMBRE.getLabelDesc();
		}

		if (this.anyoDesde90 != null && this.mesDesde90 != null) {
			return mesDesdeDesc + " " + this.anyoDesde90;

		}
		return "";

	}

	public String getPeriodoFacturacionHasta() {
		String mesHastaDesc = "";
		String mesHasta = this.mesHasta90.toString();

		if (mesHasta.equals(MesesEnum.ENERO.getId())) {
			mesHastaDesc = MesesEnum.ENERO.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.FEBRERO.getId())) {
			mesHastaDesc = MesesEnum.FEBRERO.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.MARZO.getId())) {
			mesHastaDesc = MesesEnum.MARZO.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.ABRIL.getId())) {
			mesHastaDesc = MesesEnum.ABRIL.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.MAYO.getId())) {
			mesHastaDesc = MesesEnum.MAYO.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.JUNIO.getId())) {
			mesHastaDesc = MesesEnum.JUNIO.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.JULIO.getId())) {
			mesHastaDesc = MesesEnum.JULIO.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.AGOSTO.getId())) {
			mesHastaDesc = MesesEnum.AGOSTO.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.SEPTIEMBRE.getId())) {
			mesHastaDesc = MesesEnum.SEPTIEMBRE.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.OCTUBRE.getId())) {
			mesHastaDesc = MesesEnum.OCTUBRE.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.NOVIEMBRE.getId())) {
			mesHastaDesc = MesesEnum.NOVIEMBRE.getLabelDesc();
		} else if (mesHasta.equals(MesesEnum.DICIEMBRE.getId())) {
			mesHastaDesc = MesesEnum.DICIEMBRE.getLabelDesc();
		}

		if (this.anyoHasta90 != null && this.mesHasta90 != null) {
			return mesHastaDesc + " " + this.anyoHasta90;

		}
		return "";

	}

	public Integer getTieneInforme() {
		return tieneInforme;
	}

	public void setTieneInforme(Integer tieneInforme) {
		this.tieneInforme = tieneInforme;
	}

}
