package danielcortes.xyz.models.estado_resultado;

import java.time.YearMonth;
import java.util.Objects;

public class EstadoResultado {

  public static final EstadoResultado EMPTY;

  static {
    EMPTY = new EstadoResultado();
    EMPTY.setMes(YearMonth.of(0,1));
  }

  private int id;
  private YearMonth mes;
  private int costoVenta;
  private int cuentaCorrienteFactura;
  private int cuentaCorrienteBoleta;
  private int cuentaCorrienteSinRespaldo;
  private int remuneraciones;
  private int finiquitos;
  private int aguinaldo;
  private int bonosPersonal;
  private int honorariosContador;
  private int arriendo;
  private int agua;
  private int luz;
  private int gas;
  private int telefono;
  private int otroServicio;
  private double ppm;
  private int ivaFavor;

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public YearMonth getMes() {
    return mes;
  }

  public void setMes(YearMonth mes) {
    this.mes = mes;
  }

  public int getCostoVenta() {
    return costoVenta;
  }

  public void setCostoVenta(int costoVenta) {
    this.costoVenta = costoVenta;
  }

  public int getCuentaCorrienteFactura() {
    return cuentaCorrienteFactura;
  }

  public void setCuentaCorrienteFactura(int cuentaCorrienteFactura) {
    this.cuentaCorrienteFactura = cuentaCorrienteFactura;
  }

  public int getCuentaCorrienteBoleta() {
    return cuentaCorrienteBoleta;
  }

  public void setCuentaCorrienteBoleta(int cuentaCorrienteBoleta) {
    this.cuentaCorrienteBoleta = cuentaCorrienteBoleta;
  }

  public int getCuentaCorrienteSinRespaldo() {
    return cuentaCorrienteSinRespaldo;
  }

  public void setCuentaCorrienteSinRespaldo(int cuentaCorrienteSinRespaldo) {
    this.cuentaCorrienteSinRespaldo = cuentaCorrienteSinRespaldo;
  }

  public int getRemuneraciones() {
    return remuneraciones;
  }

  public void setRemuneraciones(int remuneraciones) {
    this.remuneraciones = remuneraciones;
  }

  public int getFiniquitos() {
    return finiquitos;
  }

  public void setFiniquitos(int finiquitos) {
    this.finiquitos = finiquitos;
  }

  public int getAguinaldo() {
    return aguinaldo;
  }

  public void setAguinaldo(int aguinaldo) {
    this.aguinaldo = aguinaldo;
  }

  public int getBonosPersonal() {
    return bonosPersonal;
  }

  public void setBonosPersonal(int bonosPersonal) {
    this.bonosPersonal = bonosPersonal;
  }

  public int getHonorariosContador() {
    return honorariosContador;
  }

  public void setHonorariosContador(int honorariosContador) {
    this.honorariosContador = honorariosContador;
  }

  public int getArriendo() {
    return arriendo;
  }

  public void setArriendo(int arriendo) {
    this.arriendo = arriendo;
  }

  public int getAgua() {
    return agua;
  }

  public void setAgua(int agua) {
    this.agua = agua;
  }

  public int getLuz() {
    return luz;
  }

  public void setLuz(int luz) {
    this.luz = luz;
  }

  public int getGas() {
    return gas;
  }

  public void setGas(int gas) {
    this.gas = gas;
  }

  public int getTelefono() {
    return telefono;
  }

  public void setTelefono(int telefono) {
    this.telefono = telefono;
  }

  public int getOtroServicio() {
    return otroServicio;
  }

  public void setOtroServicio(int otroServicio) {
    this.otroServicio = otroServicio;
  }

  public double getPpm() {
    return ppm;
  }

  public void setPpm(double ppm) {
    this.ppm = ppm;
  }

  public int getIvaFavor() {
    return ivaFavor;
  }

  public void setIvaFavor(int ivaFavor) {
    this.ivaFavor = ivaFavor;
  }

  @Override
  public String toString() {
    return "EstadoResultado{" +
        "id=" + id +
        ", mes=" + mes +
        ", costoVenta=" + costoVenta +
        ", cuentaCorrienteFactura=" + cuentaCorrienteFactura +
        ", cuentaCorrienteBoleta=" + cuentaCorrienteBoleta +
        ", cuentaCorrienteSinRespaldo=" + cuentaCorrienteSinRespaldo +
        ", remuneraciones=" + remuneraciones +
        ", finiquitos=" + finiquitos +
        ", aguinaldo=" + aguinaldo +
        ", bonosPersonal=" + bonosPersonal +
        ", honorariosContador=" + honorariosContador +
        ", arriendo=" + arriendo +
        ", agua=" + agua +
        ", luz=" + luz +
        ", gas=" + gas +
        ", telefono=" + telefono +
        ", otroServicio=" + otroServicio +
        ", ppm=" + ppm +
        ", ivaFavor=" + ivaFavor +
        '}';
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (!(o instanceof EstadoResultado)) {
      return false;
    }
    EstadoResultado that = (EstadoResultado) o;
    return id == that.id &&
        costoVenta == that.costoVenta &&
        cuentaCorrienteFactura == that.cuentaCorrienteFactura &&
        cuentaCorrienteBoleta == that.cuentaCorrienteBoleta &&
        cuentaCorrienteSinRespaldo == that.cuentaCorrienteSinRespaldo &&
        remuneraciones == that.remuneraciones &&
        finiquitos == that.finiquitos &&
        aguinaldo == that.aguinaldo &&
        bonosPersonal == that.bonosPersonal &&
        honorariosContador == that.honorariosContador &&
        arriendo == that.arriendo &&
        agua == that.agua &&
        luz == that.luz &&
        gas == that.gas &&
        telefono == that.telefono &&
        otroServicio == that.otroServicio &&
        Double.compare(that.ppm, ppm) == 0 &&
        ivaFavor == that.ivaFavor &&
        Objects.equals(mes, that.mes);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, mes, costoVenta, cuentaCorrienteFactura, cuentaCorrienteBoleta,
        cuentaCorrienteSinRespaldo, remuneraciones, finiquitos, aguinaldo, bonosPersonal,
        honorariosContador, arriendo, agua, luz, gas, telefono, otroServicio, ppm, ivaFavor);
  }
}

