package com.mx.dla.dda.reporte.datosContrato.dtos;

import java.io.Serializable;
import java.lang.reflect.Field;

import org.apache.log4j.Logger;

public class DatosContratoDTO implements Serializable {

//	datos generales
	
	private static final long serialVersionUID = 1L;
	private static Logger log = Logger.getLogger(DatosContratoDTO.class);
	
	private String estudio;
	private String noContraroDDA;
	private String noContratoBV;
	private String fechaInicio;
	private String fechaFin;
	private String apartado;
	private String impuesto;
	private String categorias;
	private String servicios;
	private String territorios;
	private String atributos;
	private String filialesType;

//tcomerciales
	
	private String costoC;
	private String montoProgramado;
	private String anticipo;
	private String tipoPagos; 

	
//Titulos

    private String idBv;
    private String descTitulo;
    private String nombreUnico; 
    private String temporada;
    private String episodio; 
    private String fechaInicioTit; 
    private String fechasFinTit;
    private String vidaUtil;
    private String desCategoria;
    private String costo;
    private String precioAnual;


 //Amortizacion
    
    private String mes1;
    private String mes2;
    private String mes3;
    private String mes4;
    private String mes5;
    private String mes6;
    private String mes7;
    private String mes8;
    private String mes9;
    private String mes10;
    private String mes11;
    private String mes12;
    
    
    
	public String getEstudio() {
		return estudio;
	}



	public void setEstudio(String estudio) {
		this.estudio = estudio;
	}



	public String getNoContraroDDA() {
		return noContraroDDA;
	}



	public void setNoContraroDDA(String noContraroDDA) {
		this.noContraroDDA = noContraroDDA;
	}



	public String getNoContratoBV() {
		return noContratoBV;
	}



	public void setNoContratoBV(String noContratoBV) {
		this.noContratoBV = noContratoBV;
	}



	public String getFechaInicio() {
		return fechaInicio;
	}



	public void setFechaInicio(String fechaInicio) {
		this.fechaInicio = fechaInicio;
	}



	public String getFechaFin() {
		return fechaFin;
	}



	public void setFechaFin(String fechaFin) {
		this.fechaFin = fechaFin;
	}



	public String getApartado() {
		return apartado;
	}



	public void setApartado(String apartado) {
		this.apartado = apartado;
	}



	public String getImpuesto() {
		return impuesto;
	}



	public void setImpuesto(String impuesto) {
		this.impuesto = impuesto;
	}



	public String getCategorias() {
		return categorias;
	}



	public void setCategorias(String categorias) {
		this.categorias = categorias;
	}



	public String getServicios() {
		return servicios;
	}



	public void setServicios(String servicios) {
		this.servicios = servicios;
	}



	public String getTerritorios() {
		return territorios;
	}



	public void setTerritorios(String territorios) {
		this.territorios = territorios;
	}



	public String getAtributos() {
		return atributos;
	}



	public void setAtributos(String atributos) {
		this.atributos = atributos;
	}



	public String getFilialesType() {
		return filialesType;
	}



	public void setFilialesType(String filialesType) {
		this.filialesType = filialesType;
	}



	public String getIdBv() {
		return idBv;
	}



	public void setIdBv(String idBv) {
		this.idBv = idBv;
	}



	public String getDescTitulo() {
		return descTitulo;
	}



	public void setDescTitulo(String descTitulo) {
		this.descTitulo = descTitulo;
	}



	public String getNombreUnico() {
		return nombreUnico;
	}



	public void setNombreUnico(String nombreUnico) {
		this.nombreUnico = nombreUnico;
	}



	public String getTemporada() {
		return temporada;
	}



	public void setTemporada(String temporada) {
		this.temporada = temporada;
	}



	public String getEpisodio() {
		return episodio;
	}



	public void setEpisodio(String episodio) {
		this.episodio = episodio;
	}



	public String getFechaInicioTit() {
		return fechaInicioTit;
	}



	public void setFechaInicioTit(String fechaInicioTit) {
		this.fechaInicioTit = fechaInicioTit;
	}



	public String getFechasFinTit() {
		return fechasFinTit;
	}



	public void setFechasFinTit(String fechasFinTit) {
		this.fechasFinTit = fechasFinTit;
	}



	public String getVidaUtil() {
		return vidaUtil;
	}



	public void setVidaUtil(String vidaUtil) {
		this.vidaUtil = vidaUtil;
	}



	public String getDesCategoria() {
		return desCategoria;
	}



	public void setDesCategoria(String desCategoria) {
		this.desCategoria = desCategoria;
	}



	public String getCosto() {
		return costo;
	}



	public void setCosto(String costo) {
		this.costo = costo;
	}



	public String getPrecioAnual() {
		return precioAnual;
	}



	public void setPrecioAnual(String precioAnual) {
		this.precioAnual = precioAnual;
	}



	public String getCostoC() {
		return costoC;
	}



	public void setCostoC(String costoC) {
		this.costoC = costoC;
	}



	public String getMontoProgramado() {
		return montoProgramado;
	}



	public void setMontoProgramado(String montoProgramado) {
		this.montoProgramado = montoProgramado;
	}



	public String getAnticipo() {
		return anticipo;
	}



	public void setAnticipo(String anticipo) {
		this.anticipo = anticipo;
	}



	public String getTipoPagos() {
		return tipoPagos;
	}



	public void setTipoPagos(String tipoPagos) {
		this.tipoPagos = tipoPagos;
	}



	public void print() {
		log.info("BEGIN DatosContratoDTO.print()");
		for (Field field : this.getClass().getDeclaredFields())
			try {
				log.info(field.get(this));
			}
			catch (IllegalArgumentException | IllegalAccessException e) {
				log.error("Error: " + e.getMessage(), e.fillInStackTrace());
			}
		log.info("END DatosContratoDTO.print()");
	}
	
	

	public String[] getFieldsAsRow() throws IllegalArgumentException, IllegalAccessException {
		Field[] fields = this.getClass().getDeclaredFields();
		String[] row = new String[fields.length];

		for (int i = 0; i < fields.length; i++)
			row[i] = fields[i].get(this) != null ? fields[i].get(this).toString() : "--";

		return row;
	}
	
	public String[] getFieldsAsRow(String dg,String tc,String tt,String amr) throws IllegalArgumentException, IllegalAccessException {
		Field[] fields = this.getClass().getDeclaredFields();
		String[] row = new String[fields.length];
		
		
		
		
		for (int i = 0; i < fields.length; i++){

			//rango perteneciente a las columnas de datos generales
			if(dg.equals("YES") && i>=0  && i<=11){
				row[i] = fields[i].get(this) != null ? fields[i].get(this).toString() : "--";
			}
			if(tt.equals("YES") && i>=16  && i<=26){
				row[i] = fields[i].get(this) != null ? fields[i].get(this).toString() : "--";
			}
			if(tc.equals("YES") && i>=12  && i<=15){
				row[i] = fields[i].get(this) != null ? fields[i].get(this).toString() : "--";
			}
			if(amr.equals("YES") && i>=27  && i<=38){
				row[i] = fields[i].get(this) != null ? fields[i].get(this).toString() : "--";
				
			}
			if (dg.equals("NO") && tt.equals("NO") && tc.equals("NO") && amr.equals("YES")  && (i==0||i==18||i==1||i==20)){
				row[i] = fields[i].get(this) != null ? fields[i].get(this).toString() : "0";
			}
			
			
		}
		return row;
	}



	

	public String getMes1() {
		return mes1;
	}



	public void setMes1(String mes1) {
		this.mes1 = mes1;
	}



	public String getMes2() {
		return mes2;
	}



	public void setMes2(String mes2) {
		this.mes2 = mes2;
	}



	public String getMes3() {
		return mes3;
	}



	public void setMes3(String mes3) {
		this.mes3 = mes3;
	}



	public String getMes4() {
		return mes4;
	}



	public void setMes4(String mes4) {
		this.mes4 = mes4;
	}



	public String getMes5() {
		return mes5;
	}



	public void setMes5(String mes5) {
		this.mes5 = mes5;
	}



	public String getMes6() {
		return mes6;
	}



	public void setMes6(String mes6) {
		this.mes6 = mes6;
	}



	public String getMes7() {
		return mes7;
	}



	public void setMes7(String mes7) {
		this.mes7 = mes7;
	}



	public String getMes8() {
		return mes8;
	}



	public void setMes8(String mes8) {
		this.mes8 = mes8;
	}



	public String getMes9() {
		return mes9;
	}



	public void setMes9(String mes9) {
		this.mes9 = mes9;
	}



	public String getMes10() {
		return mes10;
	}



	public void setMes10(String mes10) {
		this.mes10 = mes10;
	}



	public String getMes11() {
		return mes11;
	}



	public void setMes11(String mes11) {
		this.mes11 = mes11;
	}



	public String getMes12() {
		return mes12;
	}



	public void setMes12(String mes12) {
		this.mes12 = mes12;
	}



	@Override
	public String toString() {
		return "DatosContratoDTO [estudio=" + estudio + ", noContraroDDA=" + noContraroDDA + ", noContratoBV="
				+ noContratoBV + ", fechaInicio=" + fechaInicio + ", fechaFin=" + fechaFin + ", apartado=" + apartado
				+ ", impuesto=" + impuesto + ", categorias=" + categorias + ", servicios=" + servicios
				+ ", territorios=" + territorios + ", atributos=" + atributos + ", filialesType=" + filialesType
				+ ", costoC=" + costoC + ", montoProgramado=" + montoProgramado + ", anticipo=" + anticipo
				+ ", tipoPagos=" + tipoPagos + ", idBv=" + idBv + ", descTitulo=" + descTitulo + ", nombreUnico="
				+ nombreUnico + ", temporada=" + temporada + ", episodio=" + episodio + ", fechaInicioTit="
				+ fechaInicioTit + ", fechasFinTit=" + fechasFinTit + ", vidaUtil=" + vidaUtil + ", desCategoria="
				+ desCategoria + ", costo=" + costo + ", precioAnual=" + precioAnual + ", mes1=" + mes1 + ", mes2="
				+ mes2 + ", mes3=" + mes3 + ", mes4=" + mes4 + ", mes5=" + mes5 + ", mes6=" + mes6 + ", mes7=" + mes7
				+ ", mes8=" + mes8 + ", mes9=" + mes9 + ", mes10=" + mes10 + ", mes11=" + mes11 + ", mes12=" + mes12
				+ "]";
	}


	

}
