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

import com.cosmodas.FacadeCosmos.ArticuloSalaFacadeLocal;
import com.cosmodas.FacadeCosmos.ConsultoresDatosFacadeLocal;
import com.cosmodas.FacadeCosmos.DetallePremioFacadeLocal;
import com.cosmodas.FacadeCosmos.GeneralesFacadeLocal;
import com.cosmodas.FacadeCosmos.PremiosFacadeLocal;
import com.cosmodas.FacadeCosmos.SucursalesFacadeLocal;
import com.cosmodas.EntCosmos.ArticuloSala;
import com.cosmodas.EntCosmos.ConsultoresDatos;
import com.cosmodas.EntCosmos.DetallePremio;
import com.cosmodas.EntCosmos.Premios;
import com.cosmodas.EntCosmos.proPremios;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.ejb.EJB;


/**
 *
 * @author obper
 */
public class validaPremios implements Serializable{
    
    @EJB
    GeneralesFacadeLocal generaDAO;
    @EJB
    SucursalesFacadeLocal sucursalDAO;  
    @EJB
    ConsultoresDatosFacadeLocal cosultorDAOS;
    @EJB
    PremiosFacadeLocal premiosDAO;
    @EJB
    DetallePremioFacadeLocal detallePremioDAO;
    @EJB
    ArticuloSalaFacadeLocal articuloSalaDAO;
    
    public List<FacturaCuerpo> verificaPremio(String consultorCodigo){
        FacturaCuerpo f = new FacturaCuerpo();
        Calendar c = Calendar.getInstance();
        List<FacturaCuerpo> premios  = new ArrayList<>();

        String dia = Integer.toString(c.get(Calendar.DATE));
        int mesAterior = c.get(Calendar.MONTH);
        String annio = Integer.toString(c.get(Calendar.YEAR));
        String ultimoDiaMes = Integer.toString(c.getActualMaximum(Calendar.DAY_OF_MONTH)); 
        
        String fechaInicio = annio+"-"+mesAterior+"-"+"01";
        String fechaUltimo = annio+"-"+mesAterior+"-"+ultimoDiaMes;
        proPremios premioConsultor = new proPremios();
        Premios premio = new Premios();
        
        obtenerPrograma objP = new obtenerPrograma();        
        
            try {
            premioConsultor = sucursalDAO.findCallProPremios(consultorCodigo, objP.ProgramaAnterior(mesAterior), fechaInicio, fechaUltimo).get(0); 
            System.out.println(premioConsultor.getNombrePremio());
                
            } catch (Exception e) {
                System.out.println("PREMIO ERROR");   
            }
        if (premioConsultor.getNombreConsultor().isEmpty()&&Integer.parseInt(premioConsultor.getDiasPago()) < generaDAO.ParametrosGenerales().getDiaspremio()) {
            
            premio = premiosDAO.busquedaPremio(premioConsultor.getNombrePremio(), premioConsultor.getProgramaCodigo());
            ConsultoresDatos cs = cosultorDAOS.DatosDeConsultor(consultorCodigo);
            List<DetallePremio> dtpl = detallePremioDAO.detallePremio(premio.getPremiosPK().getPremioCodigo());

            if (!cs.getPremioEntregado()&&cs.getAutorizado()) {
                for(DetallePremio d : dtpl){
                 ArticuloSala  art =  articuloSalaDAO.find(d.getDetallePremioPK().getArticuloCodigo());
                    if (art.getArticuloExistenciaActual() < 0) {
                        FacturaCuerpo fa = new FacturaCuerpo();
                        fa.setProductoCodigo(art.getArticulo().getArticuloCodigo());
                        fa.setProductoNombre(art.getArticulo().getArticuloNombre());
                        fa.setOferta("9999");
                        fa.setCantidadProducto((int) d.getDetallePremioCantidad());
                        fa.setTotalConDescuento(new BigDecimal(0.00));
                        fa.setTotalSinDescuento(new BigDecimal(0.00));
                        fa.setUnidadConDescuento(BigDecimal.ZERO);
                        fa.setUnidadSinDescuento(BigDecimal.ZERO);
                        
                        premios.add(fa);
                        
                    }
                }
                                
            }else{
            premios = new ArrayList<>();
            }
            
        }
   
    return premios;
    }
    
}
