/*
 * 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 java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
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.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 * @author obper
 */
@Entity
@Table(name = "wc_requisicion_producto")
@XmlRootElement
@NamedQueries({
        @NamedQuery(name = "WcRequisicionProducto.findAll", query = "SELECT w FROM WcRequisicionProducto w"),
        @NamedQuery(name = "WcRequisicionProducto.findByIdReq", query = "SELECT w FROM WcRequisicionProducto w WHERE w.idReq = :idReq"),
        @NamedQuery(name = "WcRequisicionProducto.findBySalaOrigen", query = "SELECT w FROM WcRequisicionProducto w WHERE w.salaOrigen = :salaOrigen"),
        @NamedQuery(name = "WcRequisicionProducto.findByIngresada", query = "SELECT w FROM WcRequisicionProducto w WHERE w.ingresada = :ingresada"),
        @NamedQuery(name = "WcRequisicionProducto.findByProgramaRequisicion", query = "SELECT w FROM WcRequisicionProducto w WHERE w.programaRequisicion = :programaRequisicion"),
        @NamedQuery(name = "WcRequisicionProducto.findByNumeroRemision", query = "SELECT w FROM WcRequisicionProducto w WHERE w.numeroRemision = :numeroRemision"),
        @NamedQuery(name = "WcRequisicionProducto.findByFechaRemision", query = "SELECT w FROM WcRequisicionProducto w WHERE w.fechaRemision = :fechaRemision"),
        @NamedQuery(name = "WcRequisicionProducto.findByLeidaB", query = "SELECT w FROM WcRequisicionProducto w WHERE w.leidaB = :leidaB"),
        @NamedQuery(name = "WcRequisicionProducto.findByLeidaF", query = "SELECT w FROM WcRequisicionProducto w WHERE w.leidaF = :leidaF"),
        @NamedQuery(name = "WcRequisicionProducto.findByDespachadaB", query = "SELECT w FROM WcRequisicionProducto w WHERE w.despachadaB = :despachadaB"),
        @NamedQuery(name = "WcRequisicionProducto.findByDespachadaBFalseSalas", query = "SELECT w FROM WcRequisicionProducto w WHERE w.despachadaB = false"),
        @NamedQuery(name = "WcRequisicionProducto.findByDespachadaBfalse", query = "SELECT w FROM WcRequisicionProducto w WHERE  w.salaOrigen = :salaOrigen AND w.programaRequisicion = :programaRequisicion"),
        @NamedQuery(name = "WcRequisicionProducto.findByDespachadaBtrue", query = "SELECT w FROM WcRequisicionProducto w WHERE w.despachadaB = true AND w.salaOrigen = :salaOrigen AND w.programaRequisicion = :programaRequisicion"),
        @NamedQuery(name = "WcRequisicionProducto.findByDespachadaF", query = "SELECT w FROM WcRequisicionProducto w WHERE w.despachadaF = :despachadaF"),
        @NamedQuery(name = "WcRequisicionProducto.findByCajas", query = "SELECT w FROM WcRequisicionProducto w WHERE w.cajas = :cajas")})
public class WcRequisicionProducto implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id_req")
    private Integer idReq;
    @Size(max = 2)
    @Column(name = "sala_origen")
    private String salaOrigen;
    @Column(name = "ingresada")
    @Temporal(TemporalType.TIMESTAMP)
    private Date ingresada;
    @Size(max = 3)
    @Column(name = "programa_requisicion")
    private String programaRequisicion;
    @Lob
    @Size(max = 65535)
    @Column(name = "observaciones")
    private String observaciones;
    @Size(max = 6)
    @Column(name = "numero_remision")
    private String numeroRemision;
    @Column(name = "fecha_remision")
    @Temporal(TemporalType.DATE)
    private Date fechaRemision;
    @Column(name = "leida_b")
    private Boolean leidaB;
    @Column(name = "leida_f")
    @Temporal(TemporalType.TIMESTAMP)
    private Date leidaF;
    @Column(name = "despachada_b")
    private Boolean despachadaB;
    @Column(name = "despachada_f")
    @Temporal(TemporalType.TIMESTAMP)
    private Date despachadaF;
    @Column(name = "cajas")
    private Integer cajas;
    @Size(max = 6)
    @Column(name = "user_requiere")
    private String userRequiere;
    @Size(max = 6)
    @Column(name = "user_remite")
    private String userRemite;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "wcRequisicionProducto")
    private List<WcDetalleRequisicionProducto> wcDetalleRequisicionProductoList;



    public WcRequisicionProducto() {
    }

    public WcRequisicionProducto(Integer idReq) {
        this.idReq = idReq;
    }

    public Integer getIdReq() {
        return idReq;
    }

    public void setIdReq(Integer idReq) {
        this.idReq = idReq;
    }

    public String getSalaOrigen() {
        return salaOrigen;
    }

    public void setSalaOrigen(String salaOrigen) {
        this.salaOrigen = salaOrigen;
    }

    public Date getIngresada() {
        return ingresada;
    }

    public void setIngresada(Date ingresada) {
        this.ingresada = ingresada;
    }

    public String getProgramaRequisicion() {
        return programaRequisicion;
    }

    public void setProgramaRequisicion(String programaRequisicion) {
        this.programaRequisicion = programaRequisicion;
    }

    public String getObservaciones() {
        return observaciones;
    }

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

    public String getNumeroRemision() {
        return numeroRemision;
    }

    public void setNumeroRemision(String numeroRemision) {
        this.numeroRemision = numeroRemision;
    }

    public Date getFechaRemision() {
        return fechaRemision;
    }

    public void setFechaRemision(Date fechaRemision) {
        this.fechaRemision = fechaRemision;
    }

    public Boolean getLeidaB() {
        return leidaB;
    }

    public void setLeidaB(Boolean leidaB) {
        this.leidaB = leidaB;
    }

    public Date getLeidaF() {
        return leidaF;
    }

    public void setLeidaF(Date leidaF) {
        this.leidaF = leidaF;
    }

    public Boolean getDespachadaB() {
        return despachadaB;
    }

    public void setDespachadaB(Boolean despachadaB) {
        this.despachadaB = despachadaB;
    }

    public Date getDespachadaF() {
        return despachadaF;
    }

    public void setDespachadaF(Date despachadaF) {
        this.despachadaF = despachadaF;
    }

    public Integer getCajas() {
        return cajas;
    }

    public void setCajas(Integer cajas) {
        this.cajas = cajas;
    }

    public String getUserRequiere() {
        return userRequiere;
    }

    public void setUserRequiere(String userRequiere) {
        this.userRequiere = userRequiere;
    }

    public String getUserRemite() {
        return userRemite;
    }

    public void setUserRemite(String userRemite) {
        this.userRemite = userRemite;
    }

    @XmlTransient
    public List<WcDetalleRequisicionProducto> getWcDetalleRequisicionProductoList() {
        return wcDetalleRequisicionProductoList;
    }

    public void setWcDetalleRequisicionProductoList(List<WcDetalleRequisicionProducto> wcDetalleRequisicionProductoList) {
        this.wcDetalleRequisicionProductoList = wcDetalleRequisicionProductoList;
    }

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

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

}
