/*
 * 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.FacadeCosmos;

import com.cosmodas.EntCosmos.VCompra;
import com.cosmodas.EntCosmos.VInventa;
import com.cosmodas.EntCosmos.VRemisi;
import com.cosmodas.EntCosmos.VlistAjuste;

import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 * @author obper
 */
@Stateless
public class VInventaFacade extends AbstractFacade<VInventa> implements VInventaFacadeLocal {

    @PersistenceContext(unitName = "wcosmodasPersistent")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public VInventaFacade() {
        super(VInventa.class);
    }

    @Override
    public List<VInventa> pvInventario(String programaCodigo, String sucursalCodigo, boolean premios) {

        List<VInventa> lsR = em.createNativeQuery("{CALL v_inventario_f(?,?,?)}",
                VInventa.class)
                .setParameter(1, programaCodigo)
                .setParameter(2, sucursalCodigo)
                .setParameter(3, premios).getResultList();
        return lsR;
    }


    @Override
    public List<VInventa> pvInventariod(String sucursalCodigo, boolean discontinuado) {

        List<VInventa> lsR = em.createNativeQuery("{CALL v_inventario_full_d(?,?)}",
                        VInventa.class)
                .setParameter(1, sucursalCodigo)
                .setParameter(2, discontinuado).getResultList();
        return lsR;
    }

    @Override
    public List<VInventa> pvInventario(String sucursalCodigo, boolean premio) {

        List<VInventa> lsR = em.createNativeQuery("{CALL v_inventario_full(?,?)}",
                        VInventa.class)
                .setParameter(1, sucursalCodigo)
                .setParameter(2, premio).getResultList();
        return lsR;
    }

    @Override
    public List<VCompra> busquedaCompra(String productoCodigo, String programaCodigo) {
        List<VCompra> lsR = em.createNativeQuery("{CALL findCompras(?,?)}",
                VCompra.class)
                .setParameter(1, productoCodigo)
                .setParameter(2, programaCodigo).getResultList();

        return lsR;
    }

    @Override
    public List<VRemisi> busquedaRemision(String productoCodigo, String programaCodigo, String sucursalCodigo, String tipoRemision) {
        List<VRemisi> lsR = em.createNativeQuery("{CALL findRemicion(?,?,?,?)}",
                VRemisi.class)
                .setParameter(1, productoCodigo)
                .setParameter(2, programaCodigo)
                .setParameter(3, sucursalCodigo)
                .setParameter(4, tipoRemision).getResultList();
        return lsR;
    }

    @Override
    public List<VlistAjuste> busquedaAjuste(String programaCodigo, String sucursalCodigo, String tipo, String productoCodigo) {
        List<VlistAjuste> lsR = em.createNativeQuery("{CALL findAjuste(?,?,?,?)}",
                VlistAjuste.class)
                .setParameter(1, programaCodigo)
                .setParameter(2, sucursalCodigo)
                .setParameter(3, tipo)
                .setParameter(4, productoCodigo).getResultList();
        return lsR;
    }


}
