/*
 * 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.Ajuste;
import com.cosmodas.EntCosmos.DetalleAjuste;
import com.cosmodas.EntCosmos.Generales;
import com.cosmodas.EntCosmos.Presult;
import com.cosmodas.EntCosmos.Productosucursal;
import com.cosmodas.EntCosmos.ProductosucursalPK;
import com.cosmodas.EntCosmos.Sucursales;
import com.cosmodas.EntCosmos.VAutoAjuste;
import com.cosmodas.EntCosmos.VDiferencias;
import com.cosmodas.EntCosmos.ZonasVsActual;

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

/**
 * @author obper
 */
@Stateless
public class daoAjustes implements daoAjustesLocal {

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

    @Override
    public Sucursales getSucurasal(String sucursalCodigo) {
        return em.find(Sucursales.class, sucursalCodigo);
    }

    @Override
    public void IngresarAjusteCabecera(Ajuste ajuste) {
        em.persist(ajuste);
    }

    @Override
    public Generales getGenerales() {
        return (Generales) em.createNamedQuery("Ajuste.findAll").getSingleResult();
    }

    @Override
    public List<VAutoAjuste> salida(String sucursalCodigo) {
        javax.persistence.Query Consulta = em.createNamedQuery("VAutoAjuste.salidas");
        Consulta.setParameter("sucursalCodigo", sucursalCodigo);
        List<VAutoAjuste> listas;
        listas = Consulta.getResultList();
        return listas;
    }

    @Override
    public List<VAutoAjuste> entrada(String sucursalCodigo) {
        javax.persistence.Query Consulta = em.createNamedQuery("VAutoAjuste.entradas");
        Consulta.setParameter("sucursalCodigo", sucursalCodigo);
        List<VAutoAjuste> listas;
        listas = Consulta.getResultList();
        return listas;
    }

    @Override
    public Ajuste busquedaAjuste(String ajusteCodigo) {

        Ajuste ajuste = new Ajuste();

        Query q = em.createNativeQuery("select * from ajuste where ajuste_codigo = ?", Ajuste.class);
        q.setParameter(1, ajusteCodigo);
        ajuste = (Ajuste) q.getResultList().get(0);

        return ajuste;
    }

    @Override
    public List<DetalleAjuste> busquedaAjusteDetalles(String ajusteCodigo) {

        List<DetalleAjuste> lista = new ArrayList<>();

        Query q = em.createNativeQuery("select * from detalle_ajuste where ajuste_codigo = ?", DetalleAjuste.class);
        q.setParameter(1, ajusteCodigo);
        lista = q.getResultList();

        return lista;
    }

    @Override
    public void addDetalleAjuste(DetalleAjuste detalleAjuste) {
        em.persist(detalleAjuste);
    }

    @Override
    public Productosucursal Obpro(ProductosucursalPK d) {
        return em.find(Productosucursal.class, d);
    }

    @Override
    public void updateSucursal(Productosucursal p) {
        em.merge(p);
    }

    @Override
    public List<VDiferencias> getDiferencias(String sucursalCodigo) {
        Query s = em.createNamedQuery("VDiferencias.Dsalas");
        s.setParameter("sucursalCodigo", sucursalCodigo);
        return s.getResultList();
    }

    @Override
    public void EditarDetalleAjuste(DetalleAjuste d){

        em.persist(d);
    }

    @Override
    public void EditarAjuste(Ajuste d){
        Query q = em.createNativeQuery("delete  from detalle_ajuste where ajuste_codigo = ?");
        q.setParameter(1, d.getAjusteCodigo());
        q.executeUpdate();
        em.merge (d);
      //  em.
    }
    @Override
    public List<Presult> ListPresult() {
        return em.createNamedQuery("Presult.findAll").getResultList();
    }

    @Override
    public List<ZonasVsActual> ListZonasVsActual(String sucursalCodigo) {
        Query q = em.createNamedQuery("ZonasVsActual.findBySucursalCodigo");
        q.setParameter("sucursalCodigo", sucursalCodigo);
        return q.getResultList();
    }


}
