/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.cosmodas.EntCosmos;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * @author obper
 */
@Entity
@Table(name = "proceso_de_pedidos")
@XmlRootElement
@NamedQueries({
        @NamedQuery(name = "ProcesoDePedidos.findAll", query = "SELECT p FROM ProcesoDePedidos p")
        , @NamedQuery(name = "ProcesoDePedidos.findById", query = "SELECT p FROM ProcesoDePedidos p WHERE p.id = :id")
        , @NamedQuery(name = "ProcesoDePedidos.findByNumeroPedido", query = "SELECT p FROM ProcesoDePedidos p WHERE p.numeroPedido = :numeroPedido")
        , @NamedQuery(name = "ProcesoDePedidos.findByTerritorio", query = "SELECT p FROM ProcesoDePedidos p WHERE p.territorio = :territorio")
        , @NamedQuery(name = "ProcesoDePedidos.findByIngresoPedido", query = "SELECT p FROM ProcesoDePedidos p WHERE p.ingresoPedido = :ingresoPedido")
        , @NamedQuery(name = "ProcesoDePedidos.findByAprobado", query = "SELECT p FROM ProcesoDePedidos p WHERE p.aprobado = :aprobado")
        , @NamedQuery(name = "ProcesoDePedidos.findByTiempoAprobado", query = "SELECT p FROM ProcesoDePedidos p WHERE p.tiempoAprobado = :tiempoAprobado")
        , @NamedQuery(name = "ProcesoDePedidos.findByLeePedido", query = "SELECT p FROM ProcesoDePedidos p WHERE p.leePedido = :leePedido")
        , @NamedQuery(name = "ProcesoDePedidos.findByLeePedidoB", query = "SELECT p FROM ProcesoDePedidos p WHERE p.leePedidoB = :leePedidoB")
        , @NamedQuery(name = "ProcesoDePedidos.findByFinSacado", query = "SELECT p FROM ProcesoDePedidos p WHERE p.finSacado = :finSacado")
        , @NamedQuery(name = "ProcesoDePedidos.findByFinSacadoB", query = "SELECT p FROM ProcesoDePedidos p WHERE p.finSacadoB = :finSacadoB")
        , @NamedQuery(name = "ProcesoDePedidos.findByInicioFacturacion", query = "SELECT p FROM ProcesoDePedidos p WHERE p.inicioFacturacion = :inicioFacturacion")
        , @NamedQuery(name = "ProcesoDePedidos.findByInicioFacturacionB", query = "SELECT p FROM ProcesoDePedidos p WHERE p.inicioFacturacionB = :inicioFacturacionB")
        , @NamedQuery(name = "ProcesoDePedidos.findByDespachado", query = "SELECT p FROM ProcesoDePedidos p WHERE p.despachado = :despachado")
        , @NamedQuery(name = "ProcesoDePedidos.findByDespachadoB", query = "SELECT p FROM ProcesoDePedidos p WHERE p.despachadoB = :despachadoB")
        , @NamedQuery(name = "ProcesoDePedidos.findByAnulado", query = "SELECT p FROM ProcesoDePedidos p WHERE p.anulado = :anulado")
        , @NamedQuery(name = "ProcesoDePedidos.findByNumeracionDiaria", query = "SELECT p FROM ProcesoDePedidos p WHERE p.numeracionDiaria = :numeracionDiaria")
        , @NamedQuery(name = "ProcesoDePedidos.findByUsuarioApruebaPed", query = "SELECT p FROM ProcesoDePedidos p WHERE p.usuarioApruebaPed = :usuarioApruebaPed")

//manuales y updates
        , @NamedQuery(name = "ProcesoDePedidos.acutalizaImpreso", query = "UPDATE ProcesoDePedidos p SET p.inicioFacturacion = :inicioFacturacion, p.inicioFacturacionB = TRUE WHERE p.numeroPedido = :numeroPedido AND p.territorio = :territorio")
        , @NamedQuery(name = "ProcesoDePedidos.acutalizaFacturado", query = "UPDATE ProcesoDePedidos p SET p.despachado = :despachado, p.despachadoB = TRUE WHERE p.numeroPedido = :numeroPedido AND p.territorio = :territorio")
        , @NamedQuery(name = "ProcesoDePedidos.acutalizaLee", query = "UPDATE ProcesoDePedidos p SET p.leePedido = :leePedido, p.leePedidoB = TRUE WHERE p.numeroPedido = :numeroPedido AND p.territorio = :territorio")
        , @NamedQuery(name = "ProcesoDePedidos.acutalizaAprobado", query = "UPDATE ProcesoDePedidos p SET p.aprobado = :aprobado, p.tiempoAprobado = :tiempoAprobado, p.usuarioApruebaPed = :usuarioApruebaPed, p.numeracionDiaria = :numeracionDiaria WHERE p.numeroPedido = :numeroPedido AND p.territorio = :territorio")
        , @NamedQuery(name = "ProcesoDePedidos.acutalizaAnulado", query = "UPDATE ProcesoDePedidos p SET p.anulado = TRUE WHERE p.numeroPedido = :numeroPedido AND p.territorio = :territorio")})
public class ProcesoDePedidos implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Size(max = 8)
    @Column(name = "numero_pedido")
    private String numeroPedido;
    @Size(max = 2)
    @Column(name = "territorio")
    private String territorio;
    @Column(name = "ingreso_pedido")
    @Temporal(TemporalType.TIMESTAMP)
    private Date ingresoPedido;
    @Column(name = "aprobado")
    private Integer aprobado;
    @Column(name = "tiempo_aprobado")
    @Temporal(TemporalType.TIMESTAMP)
    private Date tiempoAprobado;
    @Column(name = "lee_pedido")
    @Temporal(TemporalType.TIMESTAMP)
    private Date leePedido;
    @Column(name = "lee_pedido_b")
    private Boolean leePedidoB;
    @Column(name = "fin_sacado")
    @Temporal(TemporalType.TIMESTAMP)
    private Date finSacado;
    @Column(name = "fin_sacado_b")
    private Boolean finSacadoB;
    @Column(name = "inicio_facturacion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date inicioFacturacion;
    @Column(name = "inicio_facturacion_b")
    private Boolean inicioFacturacionB;
    @Column(name = "despachado")
    @Temporal(TemporalType.TIMESTAMP)
    private Date despachado;
    @Column(name = "despachado_b")
    private Boolean despachadoB;
    @Lob
    @Size(max = 65535)
    @Column(name = "observacion")
    private String observacion;
    @Column(name = "anulado")
    private Boolean anulado;
    @Column(name = "numeracion_diaria")
    private Integer numeracionDiaria;
    @Size(max = 45)
    @Column(name = "usuario_aprueba_ped")
    private String usuarioApruebaPed;

    public ProcesoDePedidos() {
    }

    public ProcesoDePedidos(Integer id) {
        this.id = id;
    }

    public Integer getId() {
        return id;
    }

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

    public String getNumeroPedido() {
        return numeroPedido;
    }

    public void setNumeroPedido(String numeroPedido) {
        this.numeroPedido = numeroPedido;
    }

    public String getTerritorio() {
        return territorio;
    }

    public void setTerritorio(String territorio) {
        this.territorio = territorio;
    }

    public Date getIngresoPedido() {
        return ingresoPedido;
    }

    public void setIngresoPedido(Date ingresoPedido) {
        this.ingresoPedido = ingresoPedido;
    }

    public Integer getAprobado() {
        return aprobado;
    }

    public void setAprobado(Integer aprobado) {
        this.aprobado = aprobado;
    }

    public Date getTiempoAprobado() {
        return tiempoAprobado;
    }

    public void setTiempoAprobado(Date tiempoAprobado) {
        this.tiempoAprobado = tiempoAprobado;
    }

    public Date getLeePedido() {
        return leePedido;
    }

    public void setLeePedido(Date leePedido) {
        this.leePedido = leePedido;
    }

    public Boolean getLeePedidoB() {
        return leePedidoB;
    }

    public void setLeePedidoB(Boolean leePedidoB) {
        this.leePedidoB = leePedidoB;
    }

    public Date getFinSacado() {
        return finSacado;
    }

    public void setFinSacado(Date finSacado) {
        this.finSacado = finSacado;
    }

    public Boolean getFinSacadoB() {
        return finSacadoB;
    }

    public void setFinSacadoB(Boolean finSacadoB) {
        this.finSacadoB = finSacadoB;
    }

    public Date getInicioFacturacion() {
        return inicioFacturacion;
    }

    public void setInicioFacturacion(Date inicioFacturacion) {
        this.inicioFacturacion = inicioFacturacion;
    }

    public Boolean getInicioFacturacionB() {
        return inicioFacturacionB;
    }

    public void setInicioFacturacionB(Boolean inicioFacturacionB) {
        this.inicioFacturacionB = inicioFacturacionB;
    }

    public Date getDespachado() {
        return despachado;
    }

    public void setDespachado(Date despachado) {
        this.despachado = despachado;
    }

    public Boolean getDespachadoB() {
        return despachadoB;
    }

    public void setDespachadoB(Boolean despachadoB) {
        this.despachadoB = despachadoB;
    }

    public String getObservacion() {
        return observacion;
    }

    public void setObservacion(String observacion) {
        this.observacion = observacion;
    }

    public Boolean getAnulado() {
        return anulado;
    }

    public void setAnulado(Boolean anulado) {
        this.anulado = anulado;
    }

    public Integer getNumeracionDiaria() {
        return numeracionDiaria;
    }

    public void setNumeracionDiaria(Integer numeracionDiaria) {
        this.numeracionDiaria = numeracionDiaria;
    }

    public String getUsuarioApruebaPed() {
        return usuarioApruebaPed;
    }

    public void setUsuarioApruebaPed(String usuarioApruebaPed) {
        this.usuarioApruebaPed = usuarioApruebaPed;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ProcesoDePedidos)) {
            return false;
        }
        ProcesoDePedidos other = (ProcesoDePedidos) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.cosmodas.dbcon.ProcesoDePedidos[ id=" + id + " ]";
    }

}
