<?php
class carga_model {
    private $db;

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

    public function set_base($archivo,$id_asignacion) {
        error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE & ~E_WARNING);
        require_once("./model/phpExcel/PHPExcel.php");
        require_once("./model/gestion_model.php");
        date_default_timezone_set("America/Lima");
        $fecha_hoy = date("Y-m-d");

        $subidos = 0;


        $objReader = new PHPExcel_Reader_Excel2007();
        $objPHPExcel = $objReader->load($archivo);
        $objFecha = new PHPExcel_Shared_Date();
        $objPHPExcel->setActiveSheetIndex(0);

        $columnas = $objPHPExcel->setActiveSheetIndex(0)->getHighestColumn();
        $filas = $objPHPExcel->setActiveSheetIndex(0)->getHighestRow();

        $ok = 0;
        $errores = 0;

        $mensaje_error = 'ALERTA:';

        $series_array = array();

        for($i=2;$i<=$filas;$i++){

            

                $_DATOS_EXCEL[$i]['sku'] = str_replace(' ', '',$objPHPExcel->getActiveSheet()->getCell('A'.$i)->getFormattedValue());
                $_DATOS_EXCEL[$i]['nro_guia'] = str_replace(' ', '',utf8_decode($objPHPExcel->getActiveSheet()->getCell('B'.$i)->getFormattedValue()));
                $_DATOS_EXCEL[$i]['fecha_ingreso'] = str_replace(' ', '',utf8_decode($objPHPExcel->getActiveSheet()->getCell('C'.$i)->getFormattedValue()));
                $_DATOS_EXCEL[$i]['cantidad'] = str_replace(' ', '',$objPHPExcel->getActiveSheet()->getCell('D'.$i)->getFormattedValue());
                $_DATOS_EXCEL[$i]['serie'] = str_replace(' ', '',$objPHPExcel->getActiveSheet()->getCell('E'.$i)->getFormattedValue());

                if($_DATOS_EXCEL[$i]['sku'] == '' && $_DATOS_EXCEL[$i]['nro_guia'] == '' && $_DATOS_EXCEL[$i]['fecha_ingreso'] == '' && $_DATOS_EXCEL[$i]['cantidad'] == ''){

                    

                    $i = $filas + 1;
                    /* $ok = 1; */

                }else{

                    if($_DATOS_EXCEL[$i]['sku'] == '' || $_DATOS_EXCEL[$i]['nro_guia'] == '' || $_DATOS_EXCEL[$i]['fecha_ingreso'] == '' || $_DATOS_EXCEL[$i]['cantidad'] == ''){

                            $mensaje_error = $mensaje_error.'\nERROR ENCONTRADO EN LA FILA '.$i.' [VACÍO(S)]';
                            /* $i = $filas + 1; */
                            $errores = $errores + 1;

                    }else{

                        if($_DATOS_EXCEL[$i]['cantidad'] >= 1){

                            $conv1 = "select count(*) as total from producto_servicio where sku_cliente = '".$_DATOS_EXCEL[$i]['sku']."';";
                            $stmtv1 = sqlsrv_query($this->db, $conv1);
                            $tmpv1 = sqlsrv_fetch_array($stmtv1, SQLSRV_FETCH_ASSOC);

                            if($tmpv1['total'] >= 1){

                                $conv = "select * from producto_servicio where sku_cliente = '".$_DATOS_EXCEL[$i]['sku']."';";
                                $stmtv = sqlsrv_query($this->db, $conv);
                                $tmpv = sqlsrv_fetch_array($stmtv, SQLSRV_FETCH_ASSOC);

                                $con15 = "select count(*) as total from stock_almacen where id_asignacion = '".$id_asignacion."' and id_producto = '".$tmpv['id_producto_servicio']."';";
                                $stmt15 = sqlsrv_query($this->db, $con15);
                                $tmp15 = sqlsrv_fetch_array($stmt15, SQLSRV_FETCH_ASSOC);

                                if($tmp15['total'] == 0){

                                    $con16 = "insert into stock_almacen (id_producto,id_asignacion,disponible,malogrado,merma,sin_estado,id_usuario_interactua) values ('".$tmpv['id_producto_servicio']."','".$id_asignacion."',0,0,0,0,482);";
                                    $stmt16 = sqlsrv_query($this->db, $con16);
                                    $tmp16 = sqlsrv_fetch_array($stmt16, SQLSRV_FETCH_ASSOC);

                                }

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

                                    if($_DATOS_EXCEL[$i]['cantidad'] == 1){

                                        $convs = "select count(*) as total from serie where serie like '".$_DATOS_EXCEL[$i]['serie']."' and id_producto = '".$tmpv['id_producto_servicio']."';";
                                        $stmtvs = sqlsrv_query($this->db, $convs);
                                        $tmpvs = sqlsrv_fetch_array($stmtvs, SQLSRV_FETCH_ASSOC);

                                        if($tmpvs['total'] == 0){

                                            $conteo_series = 0;

                                            for($ii = 0; $ii <= var_dump(count($series_array)); $ii++){

                                                if($_DATOS_EXCEL[$i]['serie'] == $series_array[$ii]){

                                                    $conteo_series = $conteo_series + 1;

                                                }

                                            }

                                            array_push($series_array, $_DATOS_EXCEL[$i]['serie']);

                                            if($conteo_series == 0){

                                                $serie_validacion = 1;

                                            }else{

                                                $mensaje_error = $mensaje_error.'\nERROR ENCONTRADO EN LA FILA '.$i.' [SERIE REPETIDA - ERROR EJEMPLO]';
                                                $serie_validacion = 0;
                                                /* $i = $filas + 1; */
                                                $errores = $errores + 1;

                                            }


                                        }else{

                                            $mensaje_error = $mensaje_error.'\nERROR ENCONTRADO EN LA FILA '.$i.' [SERIE REPETIDA EN BASE DE DATOS]';
                                            $serie_validacion = 0;
                                            /* $i = $filas + 1; */
                                            $errores = $errores + 1;

                                        }

                                        $serie_validacion = 1;

                                    }else{

                                        $mensaje_error = $mensaje_error.'\nERROR ENCONTRADO EN LA FILA '.$i.' [CANTIDAD DIFERENTE A 1]';
                                        $serie_validacion = 0;
                                        /* $i = $filas + 1; */
                                        $errores = $errores + 1;

                                    }

                                }else{

                                    if($tmpv['id_catalogo_serializado'] == 2){

                                        if($_DATOS_EXCEL[$i]['cantidad'] >= 1){

                                            $serie_validacion = 1;
        
                                        }else{
        
                                            $mensaje_error = $mensaje_error.'\nERROR ENCONTRADO EN LA FILA '.$i.' [CANTIDAD MENOR A 1]';
                                            $serie_validacion = 0;
                                            /* $i = $filas + 1; */
                                            $errores = $errores + 1;
        
                                        }

                                    }else{

                                        $mensaje_error = $mensaje_error.'\nERROR ENCONTRADO EN LA FILA '.$i.' [ERROR TIPO DE PRODUCTO]';
                                        $serie_validacion = 0;
                                        /* $i = $filas + 1; */
                                        $errores = $errores + 1;

                                    }

                                }

                                if($serie_validacion == 1){

                                    /* $ok = 1; */

                                }else{

                                    $mensaje_error = $mensaje_error.'\nERROR ENCONTRADO EN LA FILA '.$i.' [ERROR EN CANTIDAD]';
                                    /* $i = $filas + 1; */
                                    $errores = $errores + 1;

                                }

                            }else{

                                $mensaje_error = $mensaje_error.'\nERROR ENCONTRADO EN LA FILA '.$i.' [NO EXISTE EL SKU DEL CLIENTE]';
                                /* $i = $filas + 1; */
                                $errores = $errores + 1;

                            }



                        }else{

                            $mensaje_error = $mensaje_error.'\nERROR ENCONTRADO EN LA FILA '.$i.' [ERROR EN CANTIDADES]';
                            /* $i = $filas + 1; */
                            $errores = $errores + 1;

                        }

                    }

                    

                }


        }

        if($errores == 0){

            for ($i=2;$i<=$filas;$i++){
                $_DATOS_EXCEL[$i]['sku'] = $objPHPExcel->getActiveSheet()->getCell('A'.$i)->getFormattedValue();
                $_DATOS_EXCEL[$i]['nro_guia'] = utf8_decode($objPHPExcel->getActiveSheet()->getCell('B'.$i)->getFormattedValue());
                $_DATOS_EXCEL[$i]['fecha_ingreso'] = utf8_decode($objPHPExcel->getActiveSheet()->getCell('C'.$i)->getFormattedValue());
                $_DATOS_EXCEL[$i]['cantidad'] = $objPHPExcel->getActiveSheet()->getCell('D'.$i)->getFormattedValue();
                $_DATOS_EXCEL[$i]['serie'] = str_replace(' ', '',$objPHPExcel->getActiveSheet()->getCell('E'.$i)->getFormattedValue());



                    if($_DATOS_EXCEL[$i]['sku'] != ''){
                        if($_DATOS_EXCEL[$i]['sku'] != ' '){
                            if($_DATOS_EXCEL[$i]['cantidad'] != ''){
                                if($_DATOS_EXCEL[$i]['cantidad'] != ' '){
                                    if($_DATOS_EXCEL[$i]['cantidad'] > 0){

                                        $con1 = "select count(*) as total from producto_servicio where sku_cliente = '".$_DATOS_EXCEL[$i]['sku']."';";
                                        $stmt1 = sqlsrv_query($this->db, $con1);
                                        $tmp1 = sqlsrv_fetch_array($stmt1, SQLSRV_FETCH_ASSOC);

                                        if($tmp1['total']>0){

                                            

                                                $con0 = "select top 1 * from producto_servicio where sku_cliente = '".$_DATOS_EXCEL[$i]['sku']."';";
                                                $stmt0 = sqlsrv_query($this->db, $con0);
                                                $tmp0 = sqlsrv_fetch_array($stmt0, SQLSRV_FETCH_ASSOC);

                                                $con = "insert into carga(id_producto,guia,fecha,cantidad,serie,id_asignacion,archivo,id_usuario_interactua) values ('".$tmp0['id_producto_servicio']."','".$_DATOS_EXCEL[$i]['nro_guia']."','".$_DATOS_EXCEL[$i]['fecha_ingreso']."','".$_DATOS_EXCEL[$i]['cantidad']."','".$_DATOS_EXCEL[$i]['serie']."','".$id_asignacion."','".$archivo."','".$_SESSION['id_usuario_almacen']."');";
                                                $stmt = sqlsrv_query($this->db, $con);
                                                $tmp = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);

                                                $conmov = "insert into movimientos_almacen(id_producto,id_asignacion_destino,cantidad,serie,id_tipo_movimiento,id_usuario_interactua,estado_estado) values ('".$tmp0['id_producto_servicio']."','".$id_asignacion."','".$_DATOS_EXCEL[$i]['cantidad']."','".$_DATOS_EXCEL[$i]['serie']."','1','".$_SESSION['id_usuario_almacen']."','1');";
                                                $stmtmov = sqlsrv_query($this->db, $conmov);
                                                $tmpmov = sqlsrv_fetch_array($stmtmov, SQLSRV_FETCH_ASSOC);

                                                if($tmp0['id_catalogo_serializado'] == 2){

                                                    $con2 = "select count(*) as total from stock_almacen where id_producto = '".$tmp0['id_producto_servicio']."' and id_asignacion = '".$id_asignacion."';";
                                                    $stmt2 = sqlsrv_query($this->db, $con2);
                                                    $tmp2 = sqlsrv_fetch_array($stmt2, SQLSRV_FETCH_ASSOC);

                                                    if($tmp2['total']>0){

                                                        $cons = "select * from stock_almacen where id_producto = '".$tmp0['id_producto_servicio']."' and id_asignacion = '".$id_asignacion."';";
                                                        $stmts = sqlsrv_query($this->db, $cons);
                                                        $tmps = sqlsrv_fetch_array($stmts, SQLSRV_FETCH_ASSOC);

                                                        $cantidad_total = $tmps['disponible'] + $_DATOS_EXCEL[$i]['cantidad'];

                                                        $con3 = "update stock_almacen set disponible = '".$cantidad_total."' where id_producto = '".$tmp0['id_producto_servicio']."' and id_asignacion = '".$id_asignacion."';";
                                                        $stmt3 = sqlsrv_query($this->db, $con3);
                                                        $tmp3 = sqlsrv_fetch_array($stmt3, SQLSRV_FETCH_ASSOC);

                                                    }else{

                                                        $con3 = "insert into stock_almacen (id_producto,disponible,id_asignacion,malogrado,merma,sin_estado) values ('".$tmp0['id_producto_servicio']."','".$_DATOS_EXCEL[$i]['cantidad']."','".$id_asignacion."',0,0,0);";
                                                        $stmt3 = sqlsrv_query($this->db, $con3);
                                                        $tmp3 = sqlsrv_fetch_array($stmt3, SQLSRV_FETCH_ASSOC);

                                                    }


                                                }else{

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

                                                        $con2 = "select count(*) as total from stock_almacen where id_producto = '".$tmp0['id_producto_servicio']."' and id_asignacion = '".$id_asignacion."';";
                                                        $stmt2 = sqlsrv_query($this->db, $con2);
                                                        $tmp2 = sqlsrv_fetch_array($stmt2, SQLSRV_FETCH_ASSOC);


                                                        if($tmp2['total']>0){

                                                            $cons = "select * from stock_almacen where id_producto = '".$tmp0['id_producto_servicio']."' and id_asignacion = '".$id_asignacion."';";
                                                            $stmts = sqlsrv_query($this->db, $cons);
                                                            $tmps = sqlsrv_fetch_array($stmts, SQLSRV_FETCH_ASSOC);
        
                                                            $cantidad_total = $tmps['disponible'] + $_DATOS_EXCEL[$i]['cantidad'];
        
                                                            $con3 = "update stock_almacen set disponible = '".$cantidad_total."' where id_producto = '".$tmp0['id_producto_servicio']."' and id_asignacion = '".$id_asignacion."';";
                                                            $stmt3 = sqlsrv_query($this->db, $con3);
                                                            $tmp3 = sqlsrv_fetch_array($stmt3, SQLSRV_FETCH_ASSOC);
        
                                                        }else{
        
                                                            $con3 = "insert into stock_almacen (id_producto,disponible,id_asignacion,malogrado,merma,sin_estado) values ('".$tmp0['id_producto_servicio']."','".$_DATOS_EXCEL[$i]['cantidad']."','".$id_asignacion."',0,0,0);";
                                                            $stmt3 = sqlsrv_query($this->db, $con3);
                                                            $tmp3 = sqlsrv_fetch_array($stmt3, SQLSRV_FETCH_ASSOC);
        
                                                        }
        
                                                        if($_DATOS_EXCEL[$i]['serie']!='' || $_DATOS_EXCEL[$i]['serie']!="" || $_DATOS_EXCEL[$i]['serie']!=null){
                                                            
                                                            

                                                            $con4 = "insert into serie (id_producto,cantidad,serie,id_asignacion,id_usuario_interactua,estado_estado) values ('".$tmp0['id_producto_servicio']."',1,'".$_DATOS_EXCEL[$i]['serie']."','".$id_asignacion."','".$_SESSION['id_usuario_almacen']."',1);";
                                                            $stmt4 = sqlsrv_query($this->db, $con4);
                                                            $tmp4 = sqlsrv_fetch_array($stmt4, SQLSRV_FETCH_ASSOC);

                                                        }
                                                        

                                                    }

                                                }



                                        }

                                    }else{
                                        
                                        return $subidos;
                                    }
                                }else{
                                    
                                    return $subidos;
                                }
                            }else{
                                
                                return $subidos;
                            }
                        }else{
                            
                            return $subidos;
                        }
                    }else{
                        
                        return $subidos;
                    }

                $subidos++;

            }

        }else{

            $subidos = $mensaje_error;

        }
        
        return $subidos;
        
    }

}
?>