<?php
class reporte_model3{

    private $db;
    private $consulta;
    private $listado;

    public function __construct(){
        $this->db=database::conexion();
        $this->listado=array();
    }

    public function get_reporte_excel($productos){
        error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE & ~E_WARNING);
        require_once("./model/phpExcel/PHPExcel.php");
        require_once("./model/gestion_model.php");
        require_once("./model/gestion_model2.php");
        $ges = new gestion_model();
		$ges2 = new gestion_model2();
        date_default_timezone_set("America/Lima");
        $fecha_hoy = date("Y-m-d");

        $this->listado = "";

        /* while($filas=$consulta->fetch_assoc()){
            $this->listado[]=$filas;
        } */
        date_default_timezone_set("America/Lima");
        $Fecha_Reporte = date('dmY');
        $Nombre = "./reportes/reporte_tecnicos".$Fecha_Reporte.".xls";

        PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_AdvancedValueBinder() );

        $objPHPExcel = new PHPExcel();
        $objPHPExcel->getProperties()->setCreator("BIO SAC")
            ->setLastModifiedBy("BIO SAC")
            ->setTitle("REPORTE")
            ->setSubject("REPORTE")
            ->setDescription("REPORTE")
            ->setKeywords("REPORTE BIO SAC")
            ->setCategory("REPORTES BIO SAC");

        $objPHPExcel->getDefaultStyle()->getFont()->setName('Calibri')->setSize(11);


        $objPHPExcel->getActiveSheet()->setCellValue('A1', 'SKU');
        $objPHPExcel->getActiveSheet()->setCellValue('B1', 'PRODUCTO');
        $objPHPExcel->getActiveSheet()->setCellValue('C1', 'CANTIDAD');
        $objPHPExcel->getActiveSheet()->setCellValue('D1', 'FECHA INGRESO ALMACEN');
        $objPHPExcel->getActiveSheet()->setCellValue('E1', 'NUMERO DE GUIA');
        $objPHPExcel->getActiveSheet()->setCellValue('F1', 'SERIE');
        $objPHPExcel->getActiveSheet()->setCellValue('G1', 'UBICACION (TECNICO ASIGNADO)');
        $objPHPExcel->getActiveSheet()->setCellValue('H1', 'FECHA ASIGNACION');

        $columnas = array('A','B','C','D','E','F','G','H');

        foreach ( $columnas as $dato ):
            $objPHPExcel->getActiveSheet()->getstyle($dato.'1')->getFont()->getcolor()->setRGB('FFFFF');
            $objPHPExcel->getActiveSheet()->getstyle($dato.'1')->applyFromArray(
                array(
                    'fill' => array(
                        'type' => PHPExcel_Style_Fill::FILL_SOLID,
                        'color' => array('rgb' => '666699')
                    )
                )
            );
            $objPHPExcel->getActiveSheet()->getColumnDimension($dato)->setAutoSize(true);
        endforeach;

        $Fila = 2;


        foreach ( $productos as $producto ){

            $productos_tecnico = $ges->get_productos_tecnico_u($producto['codigo_usuario']);
            $nombre = $ges2->get_usuario_documento($producto['codigo_usuario']);


            foreach ($productos_tecnico as $productos_tec){

                if($productos_tec['id_catalogo_serializado'] == 1){

                    $series = $ges->get_series_stock_tecnico($productos_tec['id_producto'],$productos_tec['id_tecnico']);

                    foreach($series as $serie){
                        
                        $carga = $ges->get_carga_serie($serie['serie']);
                        $asignacion = $ges->get_ultima_asignacion_serie($serie['serie']);
                        if($productos_tec['bio'] == 1){
                            $objPHPExcel->getActiveSheet()->setCellValueExplicit('A'.$Fila, $productos_tec['sku']);
                        }else{
                            $objPHPExcel->getActiveSheet()->setCellValueExplicit('A'.$Fila, $productos_tec['sku_cliente']);
                        }
                        $objPHPExcel->getActiveSheet()->setCellValueExplicit('B'.$Fila, $productos_tec['nombre_producto']);
                        $objPHPExcel->getActiveSheet()->setCellValueExplicit('C'.$Fila, '1');
                        $objPHPExcel->getActiveSheet()->setCellValueExplicit('D'.$Fila, date_format($serie['fecha_creacion'], 'Y-m-d'));
                        $objPHPExcel->getActiveSheet()->setCellValueExplicit('E'.$Fila, $carga['guia']);
                        $objPHPExcel->getActiveSheet()->setCellValueExplicit('F'.$Fila, $serie['serie']);
                        $objPHPExcel->getActiveSheet()->setCellValueExplicit('G'.$Fila, $nombre['NOMBRES']);
                        $objPHPExcel->getActiveSheet()->setCellValueExplicit('H'.$Fila, date_format($asignacion['fecha_creacion'], 'Y-m-d'));

                        $Fila++;
                    }

                }else{

                    if($productos_tec['bio'] == 1){
                        $objPHPExcel->getActiveSheet()->setCellValueExplicit('A'.$Fila, $productos_tec['sku']);
                    }else{
                        $objPHPExcel->getActiveSheet()->setCellValueExplicit('A'.$Fila, $productos_tec['sku_cliente']);
                    }
                    $objPHPExcel->getActiveSheet()->setCellValueExplicit('B'.$Fila, $productos_tec['nombre_producto']);
                    $objPHPExcel->getActiveSheet()->setCellValueExplicit('C'.$Fila, $productos_tec['disponible']);
                    $objPHPExcel->getActiveSheet()->setCellValue('D'.$Fila, '');
                    $objPHPExcel->getActiveSheet()->setCellValueExplicit('E'.$Fila, '');
                    $objPHPExcel->getActiveSheet()->setCellValueExplicit('F'.$Fila, '');
                    $objPHPExcel->getActiveSheet()->setCellValueExplicit('G'.$Fila, $nombre['NOMBRES']);
                    $objPHPExcel->getActiveSheet()->setCellValueExplicit('H'.$Fila, '');

                    $Fila++;
                }


            }
            
        }
        $objPHPExcel->getActiveSheet()->getStyle('V2:V'.$Fila)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00);
        $objPHPExcel->getActiveSheet()->getStyle('X2:X'.$Fila)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00);
        $objPHPExcel->getActiveSheet()->setTitle('REPORTE_BIO');
        $objPHPExcel->setActiveSheetIndex(0);
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        $objWriter->save($Nombre);
        return $Nombre;
    }

    public function DescargarArchivo($productos){
        $fichero = $this->get_reporte_excel($productos);
        /* $basefichero = basename($fichero);
        header("Content-Type: application/octet-stream");
        header("Content-Length: ".filesize($fichero));
        header("Content-Disposition:attachment;filename=".$basefichero.""); */
        $arch = $fichero;     
        return $arch;
    }
}