<?php
include 'is_logged.php'; //Archivo verifica que el usario que intenta acceder a la URL esta logueado
$session_id = session_id();
$sucursal_users = $_SESSION['sucursal_users'];
/*Inicia validacion del lado del servidor*/
if (empty($_POST['id_proveedor'])) {
    $errors[] = "ID VACIO";
} else if (!empty($_POST['id_proveedor'])) {
    /* Connect To Database*/
    require_once "../db.php";
    require_once "../php_conexion.php";
    //Archivo de funciones PHP
    require_once "../funciones.php";
    $simbolo_moneda = get_row('perfil', 'moneda', 'id_perfil', 1);
    //Comprobamos si hay archivos en la tabla temporal
    $sql_count = mysqli_query($conexion, "select * from tmp_compra where session_id='" . $session_id . "' and sucursal_tmp = '$sucursal_users'");
    $count     = mysqli_num_rows($sql_count);
    if ($count == 0) {
        echo "<script>
  swal('NO HAY PRODUCTOS AGREGADOS EN LA FACTURA', 'INTENTAR DE NUEVO', 'error')
  </script>";
        exit;
    }
    // escaping, additionally removing everything that could be (html/javascript-) code
    $id_proveedor = intval($_POST['id_proveedor']);
    $id_vendedor  = intval($_SESSION['id_users']);
    $users        = intval($_SESSION['id_users']);
    $condiciones  = intval($_POST['condiciones']);
    $factura      = mysqli_real_escape_string($conexion, (strip_tags($_REQUEST["factura"], ENT_QUOTES)));
    $referencia   = mysqli_real_escape_string($conexion, (strip_tags($_REQUEST["ref"], ENT_QUOTES)));
    $resibido     = floatval($_POST['resibido']);
    $iva     = floatval($_POST['iva']);
    $tipo_factura   = mysqli_real_escape_string($conexion, (strip_tags($_REQUEST["tipo_factura"], ENT_QUOTES)));
    $fecha        = $_POST["fecha"];
    //Operacion de Creditos
    if ($condiciones == 4) {
        $estado = 2;
    } else {
        $estado = 1;
    }
    // check if numero_factura already exists
    $sql                   = "SELECT * FROM facturas_compras WHERE numero_factura ='" . $factura . "';";
    $query_check_user_name = mysqli_query($conexion, $sql);
    $query_check_factura   = mysqli_num_rows($query_check_user_name);
    if ($query_check_factura == true) {
        echo "<script>
      swal('NUMERO DE FACTURA YA ESTA REGISTRADO', 'Inténtalo de nuevo!', 'error')
  </script>";
        exit;
    }
    //Seleccionamos el ultimo compo numero_fatura y aumentamos una
    $sql        = mysqli_query($conexion, "select MAX(id_factura) as last from facturas_compras");
    $rw         = mysqli_fetch_array($sql);
    $id_factura = $rw['last'] + 1;
    // Control de Caja
    $caja = mysqli_query($conexion, "SELECT LAST_INSERT_ID(caja_id) as last_id, estado_caja FROM detalle_caja WHERE estado_caja = 0");
    $rw = mysqli_fetch_array($caja);
    $id_caja = $rw['last_id'];
    // consulta principal
    $nums          = 1;
    $sumador_total = 0;
    $sql           = mysqli_query($conexion, "select * from productos, tmp_compra where productos.id_producto=tmp_compra.id_producto and tmp_compra.session_id='" . $session_id . "' and tmp_compra.sucursal_tmp='" . $sucursal_users . "'");
    while ($row = mysqli_fetch_array($sql)) {
        $id_tmp          = $row["id_tmp"];
        $id_producto     = $row["id_producto"];
        $codigo_producto = $row['codigo_producto'];
        $cantidad        = $row['cantidad_tmp'];
        $nombre_producto = $row['nombre_producto'];

        $costo   = $row['costo_tmp'];
        $precio_venta_f = number_format($costo, 2); //Formateo variables
        $precio_venta_r = str_replace(",", "", $precio_venta_f); //Reemplazo las comas
        $precio_total   = $precio_venta_r * $cantidad;
        $precio_total_f = number_format($precio_total, 2); //Precio total formateado
        $precio_total_r = str_replace(",", "", $precio_total_f); //Reemplazo las comas
        $sumador_total += $precio_total_r; //Sumador

        //Insert en la tabla detalle_factura
        $insert_detail = mysqli_query($conexion, "INSERT INTO detalle_fact_compra VALUES (NULL,'$id_factura','$factura','$id_producto','$cantidad','$precio_venta_r','$sucursal_users')");
        //GURDAMOS LAS ENTRADAS EN EL KARDEX
        $saldo_total = $cantidad * $costo;
        $sql_kardex  = mysqli_query($conexion, "select * from kardex where producto_kardex='" . $id_producto . "' order by id_kardex DESC LIMIT 1");
        $rww         = mysqli_fetch_array($sql_kardex);
        $cant_saldo = $rww['cant_saldo'] + $cantidad;
        $total_saldo = $rww['total_saldo'];
        $saldo_full     = ($total_saldo + $saldo_total);
        $costo_promedio = ($total_saldo + $saldo_total) / $cant_saldo;
        $tipo           = 1;

        guardar_entradas($fecha, $id_producto, $cantidad, $costo, $saldo_total, $cant_saldo, $costo_promedio, $saldo_full, $fecha, $users, $tipo);
        //ACTUALIZA EN EL STOCK
        $sql2    = mysqli_query($conexion, "select * from productos where id_producto='" . $id_producto . "'");
        $rw      = mysqli_fetch_array($sql2);
        $old_qty = $rw['stock_producto']; //Cantidad encontrada en el inventario
        $new_qty = $old_qty + $cantidad; //Nueva cantidad en el inventario
        $update  = mysqli_query($conexion, "UPDATE productos SET stock_producto='" . $new_qty . "' WHERE id_producto='" . $id_producto . "' and sucursal_id='" . $sucursal_users . "'"); //Actualizo la nueva cantidad en el inventario
        $update  = mysqli_query($conexion, "UPDATE productos SET costo_producto='" . $costo . "' WHERE id_producto='" . $id_producto . "' and sucursal_id='" . $sucursal_users . "'"); //Actualizo el nuevo costo de producto

        $nums++;
    }
    $impuesto         = get_row('perfil', 'impuesto', 'id_perfil', 1);
    $subtotal         = number_format($sumador_total, 2, '.', '');
    $total_iva        = ($subtotal * $impuesto) / 100;
    $total_iva        = number_format($total_iva, 2, '.', '');
    $total_factura    = $subtotal+$iva; //+ $total_iva
    $saldo_credito    = $total_factura - $resibido;
    $resibido_formato = number_format($resibido, 2);
    $date             = date("Y-m-d H:i:s");

    if ($condiciones == 4) {
        $insert_prima = mysqli_query($conexion, "INSERT INTO credito_proveedor VALUES (NULL,'$factura','$date','$id_proveedor','$total_factura','$saldo_credito','1','$users','$sucursal_users')");
        $insert_abono = mysqli_query($conexion, "INSERT INTO creditos_abonos_prov VALUES (NULL,'$factura','$date','$id_proveedor','$total_factura','$resibido','$saldo_credito','$users','$sucursal_users','CREDITO INICAL')");
    }

    $insert = mysqli_query($conexion, "INSERT INTO facturas_compras VALUES (NULL,'$factura','$fecha','$id_proveedor','$id_vendedor','$condiciones','$total_factura','$estado','$users','$sucursal_users','$referencia','$iva','$tipo_factura','$id_caja')");
    $delete = mysqli_query($conexion, "DELETE FROM tmp_compra WHERE session_id='" . $session_id . "'");
    // SI TODO ESTA CORRECTO
    if ($condiciones == 4) {
        echo "<script>
       swal('COMPRA GUARDADA AL CREDITO CON ATICIPO DE: $simbolo_moneda $resibido_formato', 'Factura: $factura', 'success')
  </script>";
        exit;
    }
    if ($insert_detail) {
        $messages[] = "Compra  ha sido Guardada satisfactoriamente.";
    } else {
        $errors[] = "Lo siento algo ha salido mal intenta nuevamente." . mysqli_error($conexion);
    }
} else {
    $errors[] = "Error desconocido.";
}

if (isset($errors)) {

?>
    <div class="alert alert-danger" role="alert">
        <button type="button" class="close" data-dismiss="alert">&times;</button>
        <strong>Error!</strong>
        <?php
        foreach ($errors as $error) {
            echo $error;
        }
        ?>
    </div>
<?php
}
if (isset($messages)) {

?>
    <div class="alert alert-success" role="alert">
        <button type="button" class="close" data-dismiss="alert">&times;</button>
        <strong>¡Bien hecho!</strong>
        <?php
        foreach ($messages as $message) {
            echo $message;
        }
        ?>
    </div>
<?php
}

?>