<?php

/**
 * Created by Alexander.
 * User: Alexander
 * Date: 27/05/2017
 * Time: 9:09 AM
 */
@session_start();
require('../Conexion/ConexionPDO.php');
require('../funciones/funciones_mov.php');
$conexion = $_SESSION['conexion'];
$con = new conexionPDO();
$mov = $_REQUEST['mov'];
switch ($mov) {
    case 1:
        if (!empty($_REQUEST['id'])) {  //Validamos que el id no este vacio
            $id = $_REQUEST['id'];     //Capturamos el valor enviado por post
            echo "registrar_RF_MOVIMIENTO_ALMACEN.php?asociado=" . base64_encode($id); //Imprimimos la url con el id convertido en base64_encode
        }
        break;
    case 2:
        if (!empty($_REQUEST['tipo'])) {                                                        //Validamos que el valor enviado no este vacio
            $param  = $_SESSION['anno'];                                                    //Capturamos el valor de la session anno
            $compa  = $_SESSION['compania'];                                                //Capturamos el valor de la sesión compania
            $numero = 0;                                                                    //Inicializamos la variable numero
            $tipo   = $_REQUEST['tipo'];                                                       //Capturamos el valor enviado
            $row    = $con->Listar("SELECT MAX(cast(numero as unsigned)) 
                FROM gf_movimiento 
                WHERE tipomovimiento = $tipo 
                AND parametrizacionanno = $param"); //Consultamos el numero
            if (!empty($row[0][0])) {                                                           //Si los registros obtenidos son mayor que 0
                $numero = $row[0][0] + 1;                                                        //Sumamos uno al valor obtenido en la consulta
            } else {                                                                          //Si los registros son 0 o nulos
                $anno   = get_date_param($param);
                $numero = $anno . '000001';                                                   //Formateamos el valor 2017000001
            }
            echo $numero;                                                                   //Imprimimos el valor obtenido
        }
        break;
    case 3:
        if (!empty($_REQUEST['id'])) {                                                          //Validamos que la variable id no esté vacia
            $id = $_REQUEST['id'];                                                             //Capturamos el valor de la variable id
            echo "registrar_RF_MOVIMIENTO_ALMACEN.php?movimiento=" . base64_encode($id);                //Codificamos el valor retornando la url
        }
        break;
    case 4:
        if (!empty($_REQUEST['type'])) {                                                        //Validamos que la variable type no este vacia
            $type = $_REQUEST['type'];                                                         //Capturamos el valor de la variable type
            $newDate = explode("/", $_REQUEST['newDate']);                                      //Dividimos la variable enviada usando /
            $newDate = "$newDate[2]-$newDate[1]-$newDate[0]";                               //Formateamos la fecha YYYY-MM-DD
            $date = get_max_date($type);                                                    //Capturamos el valor de la ultima fecha relacionada al tipo
            if ($newDate < $date) {                                                          //Si la nueva fecha es menor que la fecha encontrada
                echo json_encode(true);
            } else {
                echo json_encode(false);
            }
        }
        break;
    case 5:
        if (!empty($_REQUEST['id'])) {                                                          //Validamos que la variable id no esté vacia
            $id = $_REQUEST['id'];                                                             //Capturamos el valor de la variable id
            echo "RF_REQUISICION_ALMACEN.php?movimiento=" . base64_encode($id);                //Codificamos el valor retornando la url
        }
        break;
    case 6:
        if (!empty($_REQUEST['id'])) {
            $id = $_REQUEST['id'];
            echo "registrar_RF_ORDEN_DE_COMPRA.php?movimiento=" . base64_encode($id);
        }
        break;
    case 7:
        if (!empty($_REQUEST['id'])) {
            $id = $_REQUEST['id'];
            echo "RF_ENTRADA_ALMACEN.php?movimiento=" . base64_encode($id);
        }
        break;
    case 8:
        if (!empty($_REQUEST['id'])) {
            $id = $_REQUEST['id'];
            echo "RF_ENTRADA_ALMACEN.php?asociado=" . base64_encode($id);
        }
        break;
    case 9:
        $html = "";
        if (!empty($_REQUEST['tipo'])) {
            $tipoA    = $_REQUEST['tipo'];
            $html .= '<option value="">Nro Asociado</option>';
            $dta   = $con->Listar("SELECT    mv.id_unico, mv.numero, mv.fecha, tpm.sigla FROM gf_movimiento mv
                      LEFT JOIN gf_tipo_movimiento tpm ON tpm.id_unico = mv.tipomovimiento
                      WHERE     (mv.tipomovimiento = $tipoA)");
            foreach ($dta as $row) {
                list($totalX, $totalV, $xxx) = array(0, 0, 0);
                $dta_ = $con->Listar("SELECT id_unico, (valor + iva) * cantidad FROM gf_detalle_movimiento WHERE movimiento = " . $row[0]); #toca validar si para el foreach es asi
                // $res_ = $mysqli->query($sql_);
                // $dta_ = $res_->fetch_all(MYSQLI_NUM);

                foreach ($dta_ as $row_) {

                    $totalX += $row_[1];

                    $dt_ = $con->Listar("SELECT (valor + iva) * cantidad FROM gf_detalle_movimiento WHERE detalleasociado = " . $row_[0]);

                    foreach ($dt_ as $row_) {
                        $totalV += $row_[0];
                    }
                }

                $xxx = $totalX - $totalV;
                if ($xxx > 0) {
                    $html .= "<option value=\"$row[0]\">$row[3] $row[1] $row[2] $" . number_format($xxx, 2, ',', '.') . "</option>";
                }
            }
        }
        echo $html;
        break;
    case 10:
        if (!empty($_REQUEST['id'])) {
            $id = $_REQUEST['id'];
            echo "registrar_GR_SALIDA_ALMACEN.php?movimiento=" . base64_encode($id);
        }
        break;
    case 11:
        if (!empty($_REQUEST['id'])) {
            $id = $_REQUEST['id'];
            echo "registrar_GR_SALIDA_ALMACEN.php?asociado=" . base64_encode($id);
        }
        break;
    case 12:
        if (!empty($_REQUEST['id_Dept'])) {
            $id_dept = $_REQUEST['id_Dept'];
            $compania = $_REQUEST['compania'];
            switch ($conexion) {
                case 1:
                    $row = $con->Listar("SELECT DISTINCT ter.id_unico,
                                    IF(CONCAT_WS(' ', ter.nombreuno, ter.nombredos, ter.apellidouno, ter.apellidodos) = '' OR CONCAT_WS(' ', ter.nombreuno, ter.nombredos, ter.apellidouno, ter.apellidodos) IS NULL, ter.razonsocial, CONCAT_WS(' ', ter.nombreuno, ter.nombredos, ter.apellidouno, ter.apellidodos)) AS 'NOMBRE_T',
                                    CONCAT_WS(' ',tpi.nombre, ' ', IF(ter.digitoverficacion = '' OR ter.digitoverficacion IS NULL, ter.numeroidentificacion, CONCAT_WS(' ', ter.numeroidentificacion, ' - ',ter.digitoverficacion))) AS 'NUM_IDENT'
                    FROM            gf_dependencia_responsable dpr
                    LEFT JOIN       gf_dependencia dpt          ON dpt.id_unico = dpr.dependencia
                    LEFT JOIN       gf_tercero ter              ON ter.id_unico = dpr.responsable
                    LEFT JOIN       gf_tipo_identificacion tpi  ON tpi.id_unico = ter.tipoidentificacion
                    WHERE           dpr.dependencia = $id_dept AND dpt.compania = $compania");
                    break;

                case 2:
                    $row = $con->Listar("SELECT DISTINCT ter.id_unico,
                   CASE WHEN ter.nombreuno || ' ' || ter.nombredos || ' ' || ter.apellidouno || ' ' || ter.apellidodos IS NULL
                             THEN ter.razonsocial
                             ELSE ter.nombreuno || ' ' || ter.nombredos || ' ' || ter.apellidouno || ' ' || ter.apellidodos
                   END AS NOMBRE_T,
                   tpi.nombre || ' ' || CASE WHEN ter.digitoverficacion IS NULL OR ter.digitoverficacion = ''
                                   THEN ter.numeroidentificacion
                                   ELSE ter.numeroidentificacion || ' ' || ter.digitoverficacion
                          END AS NUM_IDENT
              FROM gf_dependencia_responsable dpr
                   LEFT JOIN gf_dependencia dpt ON dpt.id_unico = dpr.dependencia
                   LEFT JOIN gf_tercero ter ON ter.id_unico = dpr.responsable
                   LEFT JOIN gf_tipo_identificacion tpi ON tpi.id_unico = ter.tipoidentificacion
                    WHERE           dpr.dependencia = $id_dept AND dpt.compania = $compania");
                    break;
            }

            for ($i = 0; $i < count($row); $i++) {
                echo "<option value=\"" . $row[0][0] . "\">" . ucwords(mb_strtolower($row[0][1])) . " (" . $row[0][2] . ")</option>";
            }
        }
        break;
    case 13:
        if (!empty($_REQUEST['markeds']) && !empty($_REQUEST['tipoT'])) {      #Validamos que las variables enviadas por post no esten vacias
            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// Capturamos los valores enviados por post, e inicializamos las variables de las cuales conocemos su valor para registrar en la tabla gf_movimiento
            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            $tipoT = $_REQUEST['tipoT'];
            $compania   = $_REQUEST['compania'];
            $param = $_REQUEST['paramA'];
            $numero     = get_max_number_type($tipoT);
            $dependencia = $_REQUEST['dependencia'];
            $responsable = $_REQUEST['responsable'];
            $centrocosto = "12";
            $proyecto = "2147483647";
            $estado = 2;
            $fecha = '"' . date('Y-m-d') . '"';

            #Consulta de insertado de valores en la tabla gf_movimiento
            $sql = "INSERT INTO gf_movimiento (numero, fecha,tipomovimiento, parametrizacionanno, compania, tercero, dependencia, centrocosto, proyecto, estado)
            VALUES  (:numero, :fecha, :tipoT, :parametrizacionanno, :compania, :responsable, :dependencia, :centrocosto, :proyecto, :estado)";
            $sql_dato1 = array(
                array(":numero", $numero),
                array(":fecha", $fecha),
                array(":tipoT", $tipoT),
                array(":param", $param),
                array(":compania", $compania),
                array(":responsable", $responsable),
                array(":dependencia", $dependencia),
                array(":centrocosto", $centrocosto),
                array(":proyecto", $proyecto),
                array(":estado", $estado),
            );
            $result = $con->InAcEl($sql, $sql_dato1);
            if (empty($result)) {
                $movimiento = get_max_mov($tipoT);                      #Obtenemos el ultimo id registrado en la tabla de movimiento
                $markeds = explode(",", $_REQUEST['markeds']);     //Dividimos el string convirtiendolo  en array usando como separador ,
                $objD = array();
                $objP = array();                       //Inicializamos dos arrays en vacio
                for ($a = 0; $a < count($markeds); $a++) {              //Desplegamos el array marcados
                    $obj = explode("-", $markeds[$a]);          //Dividimos el valor del array marcado usando como separador -
                    $dta = $obj[0];
                    $producto = $obj[1];                                //Inicializamos variables con los valores encontrados
                    $rowCD = $con->Listar("SELECT id_unico, valor, cantidad FROM gf_detalle_movimiento WHERE detalleasociado = $obj[0] AND movimiento = $movimiento");
                    $c = 0;
                    $porc = get_porcent_param_b();                      //Obtenemos el valor del porcentaje en el parametro basico con id 2
                    update_porce_mov($movimiento, $porc);                //Actulizamos el porcentaje en el movimiento
                    if (empty($rowCD[0][0])) {
                        $c++;
                        $values = get_values_detail($dta);              //Obtenemos los campos en la table gf_detalle_movimiento respecto al detalle enviado
                        $valI = (($c * $values[3]) * $porc) / 100;      //Calculamos el iva del producto con respecto a la cantidad y el porcentaje en el movimiento
                        #Insertamos en detalle movimiento
                        $sqlD = "INSERT INTO gf_detalle_movimiento (cantidad, valor, iva, movimiento, detalleasociado, planmovimiento)
                                                        VALUES (:cantidad, :valor, :iva, :movimiento, :detalleasociado, :planmovimiento)";
                        $sql_dato1 = array(
                            array(":cantidad", $c),
                            array(":valor", $values[3]),
                            array(":iva", $valI),
                            array(":movimiento", $movimiento),
                            array(":detalleasociado", $values[0]),
                            array(":planmovimiento", $values[1]),
                        );
                        $resultD = $con->InAcEl($sqlD, $sql_dato1);
                    } else {
                        $detalle = $rowCD[0][0];
                        $valor = $rowCD[0][1];
                        $cantidad = $rowCD[0][2] + 1;    //Inicializamos las variables para identificar los posibles valores a ingresar
                        $valI = (($cantidad * $values[3]) * $porc) / 100;    //Calculamos el iva del producto con respecto a la cantidad y el porcentaje en el movimiento
                        $sqlDD = "UPDATE gf_detalle_movimiento SET cantidad = :cantidad, iva = :valI WHERE id_unico = :detalle";
                        $sql_dato1 = array(
                            array(":cantidad", $cantidad),
                            array(":valI", $valI),
                            array(":detalle", $detalle),
                        );
                        $resultDD = $con->InAcEl($sqlDD, $sql_dato1);
                    }
                    $id_d = get_max_detail_mov($movimiento);    //Obtenemos el ultimo id del detalle registrado en el movimiento
                    insert_mov_pro($obj[1], $id_d);             //Insertamos en gf_movimiento_producto
                }
            }
            echo json_encode($result);
        }
        break;
    case 14:
        if (!empty($_REQUEST['seleccionados'])) {
            $markeds = explode(",", $_REQUEST['seleccionados']);
            $detalle = $_REQUEST['detalle'];
            $b = 0;
            $porcentaje = 0;
            for ($a = 0; $a < count($markeds); $a++) {
                $insert = insert_mov_pro($markeds[$a], $detalle);
                if ($insert == true) {
                    $b++;
                }
            }

            $row = $con->Listar("SELECT mov.porcivaglobal FROM gf_detalle_movimiento dtm LEFT JOIN gf_movimiento mov ON dtm.movimiento = mov.id_unico WHERE dtm.id_unico = $detalle");
            if ( count($row) > 0) {
                $porcentaje = $row[0][0];
            }

            $values = get_values_detail($detalle);
            $cantidad = get_n_products_detail($detalle);
            $valorI = (($values[3] * $cantidad) * $porcentaje) / 100;
            $update = update_values_i_c($detalle, $cantidad, $valorI);
            echo json_encode($update);
        }
        break;
    case 15:
        if (!empty($_REQUEST['id'])) {
            $id = $_REQUEST['id'];
            echo "RF_ENTRA_PRO.php?movimiento=" . base64_encode($id);
        }
        break;
}
