/*
 * 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 javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * @author obper
 */
@Entity
@Table(name = "detalle_factura")
@XmlRootElement
@NamedQueries({
        @NamedQuery(name = "DetalleFactura.findAll", query = "SELECT d FROM DetalleFactura d"),
        @NamedQuery(name = "DetalleFactura.findByFacturaSerie", query = "SELECT d FROM DetalleFactura d WHERE d.detalleFacturaPK.facturaSerie = :facturaSerie"),
        @NamedQuery(name = "DetalleFactura.findByFacturaSerieAndFacturaCodigo", query = "SELECT d FROM DetalleFactura d WHERE d.detalleFacturaPK.facturaSerie = :facturaSerie AND d.detalleFacturaPK.facturaCodigo = :facturaCodigo"),
        @NamedQuery(name = "DetalleFactura.findByFacturaCodigo", query = "SELECT d FROM DetalleFactura d WHERE d.detalleFacturaPK.facturaCodigo = :facturaCodigo"),
        @NamedQuery(name = "DetalleFactura.findByProductoCodigo", query = "SELECT d FROM DetalleFactura d WHERE d.detalleFacturaPK.productoCodigo = :productoCodigo"),
        @NamedQuery(name = "DetalleFactura.findByDetalleFacturaOferta", query = "SELECT d FROM DetalleFactura d WHERE d.detalleFacturaPK.detalleFacturaOferta = :detalleFacturaOferta"),
        @NamedQuery(name = "DetalleFactura.findByDetalleFacturaCantidad", query = "SELECT d FROM DetalleFactura d WHERE d.detalleFacturaCantidad = :detalleFacturaCantidad"),
        @NamedQuery(name = "DetalleFactura.findByDetalleFacturaEntregado", query = "SELECT d FROM DetalleFactura d WHERE d.detalleFacturaEntregado = :detalleFacturaEntregado"),
        @NamedQuery(name = "DetalleFactura.findByDetalleFacturaSinDescuento", query = "SELECT d FROM DetalleFactura d WHERE d.detalleFacturaSinDescuento = :detalleFacturaSinDescuento"),
        @NamedQuery(name = "DetalleFactura.findByDetalleFacturaConDescuento", query = "SELECT d FROM DetalleFactura d WHERE d.detalleFacturaConDescuento = :detalleFacturaConDescuento")})
public class DetalleFactura implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected DetalleFacturaPK detalleFacturaPK;
    @Basic(optional = false)
    @NotNull
    @Column(name = "detalle_factura_cantidad")
    private short detalleFacturaCantidad;
    @Basic(optional = false)
    @NotNull
    @Column(name = "detalle_factura_entregado")
    private boolean detalleFacturaEntregado;
    // @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 = "detalle_factura_sin_descuento")
    private BigDecimal detalleFacturaSinDescuento;
    @Basic(optional = false)
    @NotNull
    @Column(name = "detalle_factura_con_descuento")
    private BigDecimal detalleFacturaConDescuento;

    public DetalleFactura() {
    }

    public DetalleFactura(DetalleFacturaPK detalleFacturaPK) {
        this.detalleFacturaPK = detalleFacturaPK;
    }

    public DetalleFactura(DetalleFacturaPK detalleFacturaPK, short detalleFacturaCantidad, boolean detalleFacturaEntregado, BigDecimal detalleFacturaSinDescuento, BigDecimal detalleFacturaConDescuento) {
        this.detalleFacturaPK = detalleFacturaPK;
        this.detalleFacturaCantidad = detalleFacturaCantidad;
        this.detalleFacturaEntregado = detalleFacturaEntregado;
        this.detalleFacturaSinDescuento = detalleFacturaSinDescuento;
        this.detalleFacturaConDescuento = detalleFacturaConDescuento;
    }

    public DetalleFactura(String facturaSerie, String facturaCodigo, String productoCodigo, String detalleFacturaOferta) {
        this.detalleFacturaPK = new DetalleFacturaPK(facturaSerie, facturaCodigo, productoCodigo, detalleFacturaOferta);
    }

    public DetalleFacturaPK getDetalleFacturaPK() {
        return detalleFacturaPK;
    }

    public void setDetalleFacturaPK(DetalleFacturaPK detalleFacturaPK) {
        this.detalleFacturaPK = detalleFacturaPK;
    }

    public short getDetalleFacturaCantidad() {
        return detalleFacturaCantidad;
    }

    public void setDetalleFacturaCantidad(short detalleFacturaCantidad) {
        this.detalleFacturaCantidad = detalleFacturaCantidad;
    }

    public boolean getDetalleFacturaEntregado() {
        return detalleFacturaEntregado;
    }

    public void setDetalleFacturaEntregado(boolean detalleFacturaEntregado) {
        this.detalleFacturaEntregado = detalleFacturaEntregado;
    }

    public BigDecimal getDetalleFacturaSinDescuento() {
        return detalleFacturaSinDescuento;
    }

    public void setDetalleFacturaSinDescuento(BigDecimal detalleFacturaSinDescuento) {
        this.detalleFacturaSinDescuento = detalleFacturaSinDescuento;
    }

    public BigDecimal getDetalleFacturaConDescuento() {
        return detalleFacturaConDescuento;
    }

    public void setDetalleFacturaConDescuento(BigDecimal detalleFacturaConDescuento) {
        this.detalleFacturaConDescuento = detalleFacturaConDescuento;
    }

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

    @Override
    public String toString() {
        return "com.conector.cosmodas.DetalleFactura[ detalleFacturaPK=" + detalleFacturaPK + " ]";
    }

}
