/*
 * 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.math.BigDecimal;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
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.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * @author obper
 */
@Entity
@Table(name = "pedidos")
@XmlRootElement
@NamedQueries({
        @NamedQuery(name = "Pedidos.findAll", query = "SELECT p FROM Pedidos p")
        , @NamedQuery(name = "Pedidos.findByNumeroPedido", query = "SELECT p FROM Pedidos p WHERE p.pedidosPK.numeroPedido = :numeroPedido")
        , @NamedQuery(name = "Pedidos.findByTerritorio", query = "SELECT p FROM Pedidos p WHERE p.pedidosPK.territorio = :territorio")
        , @NamedQuery(name = "Pedidos.findByConsultorCodigo", query = "SELECT p FROM Pedidos p WHERE p.consultorCodigo = :consultorCodigo")
        , @NamedQuery(name = "Pedidos.findByProgramaCodigo", query = "SELECT p FROM Pedidos p WHERE p.programaCodigo = :programaCodigo")
        , @NamedQuery(name = "Pedidos.findByPedidoAnulado", query = "SELECT p FROM Pedidos p WHERE p.pedidoAnulado = :pedidoAnulado")
        , @NamedQuery(name = "Pedidos.findBySucursal", query = "SELECT p FROM Pedidos p WHERE p.sucursal = :sucursal")
        , @NamedQuery(name = "Pedidos.findByPedidoFecha", query = "SELECT p FROM Pedidos p WHERE p.pedidoFecha = :pedidoFecha")
        , @NamedQuery(name = "Pedidos.findByFacturaTotalSinDescuento", query = "SELECT p FROM Pedidos p WHERE p.facturaTotalSinDescuento = :facturaTotalSinDescuento")
        , @NamedQuery(name = "Pedidos.findByFacturaTotalConDescuento", query = "SELECT p FROM Pedidos p WHERE p.facturaTotalConDescuento = :facturaTotalConDescuento")
        , @NamedQuery(name = "Pedidos.findByPedidoCredito", query = "SELECT p FROM Pedidos p WHERE p.pedidoCredito = :pedidoCredito")
        , @NamedQuery(name = "Pedidos.findByPedidoReparto", query = "SELECT p FROM Pedidos p WHERE p.pedidoReparto = :pedidoReparto")
        , @NamedQuery(name = "Pedidos.anulapedido", query = "update Pedidos p set p.pedidoAnulado = 1 WHERE p.pedidosPK.territorio = :territorio and p.pedidosPK.numeroPedido = :numeroPedido")
        , @NamedQuery(name = "Pedidos.findByPedidoCorrelativoReparto", query = "SELECT p FROM Pedidos p WHERE p.pedidoCorrelativoReparto = :pedidoCorrelativoReparto")})
public class Pedidos implements Serializable {

    @Lob
    @Size(max = 65535)
    @Column(name = "observaciones")
    private String observaciones;
    @Size(max = 100)
    @Column(name = "observaciones_reparto")
    private String observacionesReparto;

    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected PedidosPK pedidosPK;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 6)
    @Column(name = "consultor_codigo")
    private String consultorCodigo;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 3)
    @Column(name = "programa_codigo")
    private String programaCodigo;
    @Basic(optional = false)
    @NotNull
    @Column(name = "pedido_anulado")
    private boolean pedidoAnulado;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 2)
    @Column(name = "sucursal")
    private String sucursal;
    @Basic(optional = false)
    @NotNull
    @Column(name = "pedido_fecha")
    @Temporal(TemporalType.DATE)
    private Date pedidoFecha;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Basic(optional = false)
    @NotNull
    @Column(name = "factura_total_sin_descuento")
    private BigDecimal facturaTotalSinDescuento;
    @Basic(optional = false)
    @NotNull
    @Column(name = "factura_total_con_descuento")
    private BigDecimal facturaTotalConDescuento;
    @Basic(optional = false)
    @NotNull
    @Column(name = "pedido_credito")
    private boolean pedidoCredito;
    @Basic(optional = false)
    @NotNull
    @Column(name = "pedido_reparto")
    private boolean pedidoReparto;
    @Size(max = 4)
    @Column(name = "pedido_correlativo_reparto")
    private String pedidoCorrelativoReparto;
    @Size(max = 45)
    @Column(name = "usuario_pedido")
    private String usuarioPedido;
    @Size(max = 45)
    @Column(name = "tipo_pedido")
    private String tipoPedido;
    @Column(name = "tipo_reparto")
    private Integer tipoReparto;
    @Basic(optional = false)
    @NotNull
    @Column(name = "fecha_hora_retira")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaHoraRetira;

    public Pedidos() {
    }

    public Pedidos(PedidosPK pedidosPK) {
        this.pedidosPK = pedidosPK;
    }

    public Pedidos(PedidosPK pedidosPK, String consultorCodigo, String territorio, String programaCodigo, boolean pedidoAnulado, String sucursal, Date pedidoFecha, BigDecimal facturaTotalSinDescuento, BigDecimal facturaTotalConDescuento, boolean pedidoCredito, boolean pedidoReparto) {
        this.pedidosPK = pedidosPK;
        this.consultorCodigo = consultorCodigo;
        this.programaCodigo = programaCodigo;
        this.pedidoAnulado = pedidoAnulado;
        this.sucursal = sucursal;
        this.pedidoFecha = pedidoFecha;
        this.facturaTotalSinDescuento = facturaTotalSinDescuento;
        this.facturaTotalConDescuento = facturaTotalConDescuento;
        this.pedidoCredito = pedidoCredito;
        this.pedidoReparto = pedidoReparto;
    }

    public Pedidos(String numeroPedido, String territorioe) {
        this.pedidosPK = new PedidosPK(numeroPedido, territorioe);
    }

    public Integer getTipoReparto() {
        return tipoReparto;
    }

    public void setTipoReparto(Integer tipoReparto) {
        this.tipoReparto = tipoReparto;
    }

    public PedidosPK getPedidosPK() {
        return pedidosPK;
    }

    public void setPedidosPK(PedidosPK pedidosPK) {
        this.pedidosPK = pedidosPK;
    }

    public String getConsultorCodigo() {
        return consultorCodigo;
    }

    public void setConsultorCodigo(String consultorCodigo) {
        this.consultorCodigo = consultorCodigo;
    }

    public String getProgramaCodigo() {
        return programaCodigo;
    }

    public void setProgramaCodigo(String programaCodigo) {
        this.programaCodigo = programaCodigo;
    }

    public boolean getPedidoAnulado() {
        return pedidoAnulado;
    }

    public void setPedidoAnulado(boolean pedidoAnulado) {
        this.pedidoAnulado = pedidoAnulado;
    }

    public String getSucursal() {
        return sucursal;
    }

    public void setSucursal(String sucursal) {
        this.sucursal = sucursal;
    }

    public Date getPedidoFecha() {
        return pedidoFecha;
    }

    public void setPedidoFecha(Date pedidoFecha) {
        this.pedidoFecha = pedidoFecha;
    }

    public BigDecimal getFacturaTotalSinDescuento() {
        return facturaTotalSinDescuento;
    }

    public void setFacturaTotalSinDescuento(BigDecimal facturaTotalSinDescuento) {
        this.facturaTotalSinDescuento = facturaTotalSinDescuento;
    }

    public BigDecimal getFacturaTotalConDescuento() {
        return facturaTotalConDescuento;
    }

    public void setFacturaTotalConDescuento(BigDecimal facturaTotalConDescuento) {
        this.facturaTotalConDescuento = facturaTotalConDescuento;
    }

    public boolean getPedidoCredito() {
        return pedidoCredito;
    }

    public void setPedidoCredito(boolean pedidoCredito) {
        this.pedidoCredito = pedidoCredito;
    }

    public boolean getPedidoReparto() {
        return pedidoReparto;
    }

    public void setPedidoReparto(boolean pedidoReparto) {
        this.pedidoReparto = pedidoReparto;
    }

    public String getPedidoCorrelativoReparto() {
        return pedidoCorrelativoReparto;
    }

    public void setPedidoCorrelativoReparto(String pedidoCorrelativoReparto) {
        this.pedidoCorrelativoReparto = pedidoCorrelativoReparto;
    }

    public String getUsuarioPedido() {
        return usuarioPedido;
    }

    public void setUsuarioPedido(String usuarioPedido) {
        this.usuarioPedido = usuarioPedido;
    }

    public String getObservacionesReparto() {
        return observacionesReparto;
    }

    public void setObservacionesReparto(String observacionesReparto) {
        this.observacionesReparto = observacionesReparto;
    }

    public String getTipoPedido() {
        return tipoPedido;
    }

    public void setTipoPedido(String tipoPedido) {
        this.tipoPedido = tipoPedido;
    }

    public Date getFechaHoraRetira() {
        return fechaHoraRetira;
    }

    public void setFechaHoraRetira(Date fechaHoraRetira) {
        this.fechaHoraRetira = fechaHoraRetira;
    }


    @Override
    public int hashCode() {
        int hash = 0;
        hash += (pedidosPK != null ? pedidosPK.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 Pedidos)) {
            return false;
        }
        Pedidos other = (Pedidos) object;
        if ((this.pedidosPK == null && other.pedidosPK != null) || (this.pedidosPK != null && !this.pedidosPK.equals(other.pedidosPK))) {
            return false;
        }
        return true;
    }

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

    public String getObservaciones() {
        return observaciones;
    }

    public void setObservaciones(String observaciones) {
        this.observaciones = observaciones;
    }

}
