package com.cosmodas.FacadeCosmos;

import com.cosmodas.EntCosmos.VCargos;
import com.cosmodas.EntCosmos.VAbonos;
import com.cosmodas.EntCosmos.VDetalleAbonos;

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

@Stateless
public class VCargosFacade extends AbstractFacade<VCargos> implements VCargosFacadeLocal {

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

    public VCargosFacade() {
        super(VCargos.class);
    }

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


    @Override
    public List<VCargos> obtenerConCargos(String consultorCodigo){

        Query q = em.createNamedQuery("VCargos.fCargosPedienes");
        q.setParameter("consultorCodigo", consultorCodigo);

        return  q.getResultList();

    }

    @Override
    public void ingresarCabAbono(VAbonos ab){

        Query q = em.createNativeQuery("insert into abonos  (abono_codigo, abono_tipo, consultor_codigo, sucursal_codigo, abono_fecha, abono_valor, abono_comentario, abono_fecha_valor, abono_inventario, abono_anulado, abono_saldo_anterior, banco, abono_envio) values (?,?,?,?,?,?,?,?,?,?,?,?,?)");

        q.setParameter(1, ab.getAbonoCodigo());
        q.setParameter(2, ab.getAbonoTipo());
        q.setParameter(3, ab.getConsultorCodigo());
        q.setParameter(4, ab.getSucursalCodigo());
        q.setParameter(5, ab.getAbonoFecha());
        q.setParameter(6, ab.getAbonoValor());
        q.setParameter(7, ab.getAbonoComentario());
        q.setParameter(8, ab.getAbonoFechaValor());
        q.setParameter(9, ab.isAbonoInventario());
        q.setParameter(10, ab.getAbonoAnulado());
        q.setParameter(11, ab.getAbonoSaldoAnterior());
        q.setParameter(12, ab.getBanco());
        q.setParameter(13, ab.getAbonoEnvio());

        q.executeUpdate();

    }

    @Override
    public void ingresarDetalleAbono(VDetalleAbonos vd){

        Query q = em.createNativeQuery("insert into detalle_abonos  (abono_anulado, abono_codigo, abono_tipo, factura_codigo, factura_serie, documento_codigo, programa_codigo, detalle_abono_fecha, detalle_abono_cantidad) values (?,?,?,?,?,?,?,?,?)");
        q.setParameter(1, vd.getAbonoAnulado());
        q.setParameter(2, vd.getAbonoCodigo());
        q.setParameter(3, vd.getAbonoTipo());
        q.setParameter(4, vd.getFacturaCodigo());
        q.setParameter(5, vd.getFacturaSerie());
        q.setParameter(6, vd.getDocumentoCodigo());
        q.setParameter(7, vd.getProgramaCodigo());
        q.setParameter(8, vd.getDetalleAbonoFecha());
        q.setParameter(9, vd.getDetalleAbonoCantidad());

        q.executeUpdate();

    }

    @Override
    public  void actualizarCargos(Double cargoPendiente, String facturaCodigo, String facturaSerie){

        Query q = em.createNativeQuery("update cargos c set c.cargo_pendiente = ? where c.factura_codigo = ? and factura_serie = ? ");

        q.setParameter(1, cargoPendiente);
        q.setParameter(2, facturaCodigo);
        q.setParameter(3, facturaSerie);

        q.executeUpdate();

    }


    @Override
    public VAbonos obtenerCodigoAbono(String abo){

        VAbonos rs = new VAbonos();//select * from vAbonos where id
        Query q = em.createNativeQuery("SELECT * from vAbonos where id = ?", VAbonos.class);
        q.setParameter(1,abo);

        List<VAbonos> dx = q.getResultList();

        rs = dx.get(0);

        return rs;

    }



}
