package com.cosmodas.Inventario;

import com.cosmodas.EntCosmos.*;
import com.cosmodas.FacadeCosmos.*;
import com.cosmodas.opin.CuerpoInventario;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

@ManagedBean
@ViewScoped
public class bpremios implements Serializable {

    @EJB
    PrecioprogramaFacadeLocal ppfl;
    @EJB
    ProductosucursalFacadeLocal psfl;
    @EJB
    TremiEFacadeLocal trefl;
    @EJB
    TcomprasFacadeLocal tcfl;
    @EJB
    TajusteEFacadeLocal tjefl;
    @EJB
    TnabonoFacadeLocal tnafl;
    @EJB
    TventasFacadeLocal tvfl;
    @EJB
    TajusteSFacadeLocal tasfl;
    @EJB
    TremiSFacadeLocal trsfl;
    @EJB
    VInventaFacadeLocal vifl;
    @EJB
    GeneralesFacadeLocal gfl;

    private String programa;
    private String sala;
    private List<CuerpoInventario> inventario;
    private List<VCompra> compras;
    private List<VRemisi> remisionIn;
    private List<VRemisi> remisionOut;
    private List<VlistAjuste> listAjsIn;
    private List<VlistAjuste> listAjsOut;

    @Inject
    private Sucursales sucursal;
    @Inject
    private WcUsuarios usuario;
    private ExternalContext exc;

    public List<VlistAjuste> getListAjsIn() {
        return listAjsIn;
    }

    public void setListAjsIn(List<VlistAjuste> listAjsIn) {
        this.listAjsIn = listAjsIn;
    }

    public List<VlistAjuste> getListAjsOut() {
        return listAjsOut;
    }

    public void setListAjsOut(List<VlistAjuste> listAjsOut) {
        this.listAjsOut = listAjsOut;
    }

    public String getPrograma() {
        return programa;
    }

    public void setPrograma(String programa) {
        this.programa = programa;
    }

    public String getSala() {
        return sala;
    }

    public void setSala(String sala) {
        this.sala = sala;
    }

    public List<CuerpoInventario> getInventario() {
        return inventario;
    }

    public void setInventario(List<CuerpoInventario> inventario) {
        this.inventario = inventario;
    }

    public List<VCompra> getCompras() {
        return compras;
    }

    public void setCompras(List<VCompra> compras) {
        this.compras = compras;
    }

    public List<VRemisi> getRemisionIn() {
        return remisionIn;
    }

    public void setRemisionIn(List<VRemisi> remisionIn) {
        this.remisionIn = remisionIn;
    }

    public List<VRemisi> getRemisionOut() {
        return remisionOut;
    }

    public void setRemisionOut(List<VRemisi> remisionOut) {
        this.remisionOut = remisionOut;
    }

    public Sucursales getSucursal() {
        return sucursal;
    }

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



    @PostConstruct
    public void init() {
        Generales g = gfl.findAll().get(0);
        exc = FacesContext.getCurrentInstance().getExternalContext();
        usuario = (WcUsuarios) exc.getSessionMap().get("usuario");
        programa = g.getPrograma();
        sucursal = (Sucursales) exc.getSessionMap().get("sucursal");
        //     ompp = exc.getSessionMap().get("ompp").toString();
        inventario = new ArrayList<>();

        busqueda();
    }

    public void busqueda() {
        this.inventario = new ArrayList<>();

        List<Precioprograma> ppl = new ArrayList<>();
        List<Productosucursal> psl = new ArrayList<>();

        String pro = getPrograma();
        String sal = getSala();
        ppl = ppfl.ProductoPorPrograma(pro);


        System.out.println("total" + psl.size());

    }

    public void zonasProductos() {

        System.out.println("perfecto");

    }

    public void fvCompras(String producto) {

        setCompras(vifl.busquedaCompra(producto, programa));

    }

    public void fvRemi(String producto, String tipo) {

        if (tipo.equals("IN")) {
            setRemisionIn(vifl.busquedaRemision(producto, programa, sucursal.getSucursalCodigo(), "1"));
        } else {
            setRemisionOut(vifl.busquedaRemision(producto, programa, sucursal.getSucursalCodigo(), "0"));
        }
    }

    public void fvAjus(String producto, String tipo) {

        setListAjsIn(vifl.busquedaAjuste(programa, sucursal.getSucursalCodigo(), tipo, producto));

    }

    public bpremios() {
    }
}
