<?php
include 'is_logged.php'; //Archivo verifica que el usario que intenta acceder a la URL esta logueado
/*Inicia validacion del lado del servidor*/
if (empty($_POST['id_cliente'])) {
    $errors[] = "ID VACIO";
} else if (!empty($_POST['id_cliente'])) {
    /* Connect To Database*/
    require_once "../db.php";
    require_once "../php_conexion.php";
    //Archivo de funciones PHP
    require_once "../funciones.php";
    $session_id     = session_id();
    $simbolo_moneda = get_row('perfil', 'moneda', 'id_perfil', 1);

    // escaping, additionally removing everything that could be (html/javascript-) code
    $id_cliente        = intval($_POST['id_cliente']);
    $id_vendedor       = intval($_SESSION['id_users']);
    $users             = intval($_SESSION['id_users']);
    $condiciones       = mysqli_real_escape_string($conexion, (strip_tags($_POST['condiciones'], ENT_QUOTES)));
    $numero_cotizacion = mysqli_real_escape_string($conexion, (strip_tags($_POST["cotizacion"], ENT_QUOTES)));
    $numero_factura    = mysqli_real_escape_string($conexion, (strip_tags($_POST["factura"], ENT_QUOTES)));
    $fact              = $numero_factura;
    $id_comp           = mysqli_real_escape_string($conexion, (strip_tags($_REQUEST["id_comp"], ENT_QUOTES)));
    $tip_doc           = intval($_POST['tip_doc']);
    $trans             = mysqli_real_escape_string($conexion, (strip_tags($_POST["trans"], ENT_QUOTES)));
    $resibido          = floatval($_POST['resibido']);
    $date_added        = $_POST["fecha"];
    //$date_added        = date("Y-m-d H:i:s");
    $tipo_venta        = $_POST["tipoventa"];

    
    $sql_verif_orden  = mysqli_query($conexion, "select count(*) as no_fact from facturas_ventas where numero_orden='" . $numero_cotizacion . "'");
    $rw_no_fact       = mysqli_fetch_array($sql_verif_orden);
    $no_fact          = $rw_no_fact['no_fact'];

    if ($no_fact > 0) {
        echo "<script>
        swal({
        title: 'La orden ya fue facturada.',
        text: 'Consultar al administrador',
        type: 'error',
        confirmButtonText: 'ok'
    })</script>";
        exit;
    }

    /*
     //validamos monto limite y no de transacciones al credito por cliente en este mes ++++++++++++++++++
     if ($condiciones==4)
     {
         $sql_monto        = mysqli_query($conexion, "select sum(cantidad*precio_venta) monto from detalle_fact_orden where numero_factura='" . $numero_cotizacion . "'");
         $rw_monto         = mysqli_fetch_array($sql_monto);
         $monto_venta      = $rw_monto['monto'];
 
         $monto            = monto_venta_credito_cliente_mes($id_cliente);
         $monto            += $monto_venta;
         $no_transacciones = no_transacciones_venta_credito_cliente_mes($id_cliente);
         $no_transacciones += 1;
 
         $limite_cliente   = get_row('clientes', 'limite_cliente', 'id_cliente', $id_cliente);
         $limite_no_transacciones_cliente   = get_row('clientes', 'no_transa_cliente', 'id_cliente', $id_cliente);
 
         if (($monto > $limite_cliente) or ($no_transacciones > $limite_no_transacciones_cliente)) {
             echo "<script>
             swal({
             title: 'Límite de crédito o No. de transacciones al crédito superada por el cliente en este mes.',
             text: 'Consultar al administrador',
             type: 'error',
             confirmButtonText: 'ok'
         })</script>";
             exit;
         }
     }*/
     //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

      //Comprobamos que el dinero Resibido no sea menor al Total de la factura
      $sql_monto        = mysqli_query($conexion, "select round(sum(cantidad*precio_venta),2) monto from detalle_fact_orden where numero_factura='" . $numero_cotizacion . "'");
      $rw_monto         = mysqli_fetch_array($sql_monto);
      $monto_venta      = $rw_monto['monto'];
      
      if ($resibido < $monto_venta and $condiciones != 4) {
         echo "<script>
         swal({
           title: 'PAGO RECIBIDO ES MENOR AL MONTO TOTAL',
           text: 'Intentar Nuevamente',
           type: 'error',
           confirmButtonText: 'ok'
       })</script>";
         exit;
     }

    //evaluó si el cliente aplica para retención o exento.
    $sql_cliente    = mysqli_query($conexion, "select * from clientes where id_cliente='" . $id_cliente . "'");
    $count          = mysqli_num_rows($sql_cliente);
    if ($count == 1) {    
        $rw_cliente       = mysqli_fetch_array($sql_cliente);
        $aplica_reten      = $rw_cliente['ret_cliente'];
        $aplica_exe        = $rw_cliente['exe_cliente'];
    }
    
    if ($id_comp != 'C'){$aplica_reten = 0; $aplica_exe = 0;}

    //Operacion de Creditos
    if ($condiciones == 4) {
        $estado = 2;
    } else {
        $estado = 1;
    }
//Seleccionamos el ultimo campo numero_fatura y aumentamos una
    $sql        = mysqli_query($conexion, "select LAST_INSERT_ID(id_factura) as last from facturas_ventas order by id_factura desc limit 0,1 ");
    $rw         = mysqli_fetch_array($sql);
    $id_factura = $rw['last'] + 1;

    $sql_        = mysqli_query($conexion, "select id_sucursal, id_vendedor from facturas_orden where numero_factura='" . $numero_cotizacion . "'");
    $rw_         = mysqli_fetch_array($sql_);
    $id_empresa  = $rw_['id_sucursal'];
    $id_vendedor = intval($rw_['id_vendedor']);
    $users       = intval($rw_['id_vendedor']);

    // consulta principal
    $nums          = 1;
    $impuesto      = get_row('perfil', 'impuesto', 'id_perfil', 1);
    $sumador_total = 0;
    $sum_total     = 0;
    $t_iva         = 0;
    $sql           = mysqli_query($conexion, "select * from detalle_fact_orden where detalle_fact_orden.numero_factura='$numero_cotizacion'");
    
    //extraigo correlativo de factura para insert.
    $numero_factura = next_id_factura($id_comp,$id_empresa);

    if ($numero_factura =="FALTA CORRELATIVO") {
        echo "<script>
        swal({
        title: 'Ocurrió un error con el correlativo de factura. Vuelva a intentarlo',
        text: 'Consultar al administrador',
        type: 'error',
        confirmButtonText: 'ok'
    })</script>";
        exit;
    }

    $numero_factura = $fact;

    while ($row = mysqli_fetch_array($sql)) {
        $id_detalle      = $row["id_detalle"];
        $id_producto     = $row["id_producto"];
        $codigo_producto = $row['id_producto'];
        $cantidad        = $row['cantidad'];
        $desc_tmp        = $row['desc_venta'];
        $nombre_producto = $row['descripcion'];
        $precio_venta    = $row['precio_venta'];
    
        if ($nombre_producto==''){
            $nombre_producto = get_row('productos', 'nombre_producto', 'id_producto', $id_producto);
            $codigo_producto = get_row('productos', 'codigo_producto', 'id_producto', $id_producto);
        }

        $costo_producto = costo_producto_sucursal($id_producto,$id_empresa);

        $precio_total   = $precio_venta * $cantidad;
    
        if ($id_comp == 'C'){
            $aux = ($precio_total) / ($impuesto/100+1);
            $pv += $aux; 
            $precio_total_f = number_format($aux, 4); //Precio total formateado
        }
        else {
            $aux = $precio_total;
            $pv += $aux;
            $precio_total_f = number_format($aux, 4); //Precio total formateado
        }
    
        $sumador_total += $precio_total_f; //Sumador
        $sumador_total_ += $precio_total; //Sumador
        $sumadortotal = number_format($sumador_total_, 2, '.', '');
        
        $subtotal = number_format($sumador_total, 4, '.', '');
    
        $total_iva = iva($precio_total);
    
        if ($aplica_exe=='1') {$exento=$subtotal; $total_iva=0;} else {$exento=0;}
    
        $total_impuesto += $total_iva;
        $total_exento += $exento;

        /*
        //Comprobamos que el dinero Resibido no sea menor al Totalde la factura
        if ($resibido < $sumadortotal and $condiciones != 4) {
            echo "<script>
            swal({
              title: 'PAGO RECIBIDO ES MENOR AL MONTO TOTAL',
              text: 'Intentar Nuevamente',
              type: 'error',
              confirmButtonText: 'ok'
          })</script>";
            exit;
        }*/

        //Insert en la tabla detalle_factura
        $insert_detail = mysqli_query($conexion, "INSERT INTO detalle_fact_ventas VALUES (NULL,'$id_factura','$numero_factura','$id_producto','$cantidad','$desc_tmp','$precio_venta','$precio_total','$costo_producto','$nombre_producto')");
        //GURDAMOS LAS EN EL KARDEX
        $saldo_total = $cantidad * $costo_producto;
        $costo_saldo = $costo_producto;

        //extraigo saldo en la sucursal.
        $stockSucursal = stock_sucursal($id_producto,$id_empresa);

        $cant_saldo  = $stockSucursal - $cantidad;
        $nuevo_saldo = $cant_saldo * $costo_producto;
        $tipo        = 2;

        guardar_salidas($date_added, $id_producto, $cantidad, $costo_producto, $saldo_total, $cant_saldo, $costo_saldo, $nuevo_saldo, $date_added, $users, $tipo, $numero_factura, $id_empresa);
        
        // 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 inv_producto=0"); //Actualizo la nueva cantidad en el inventario
        $update_ = mysqli_query($conexion, "UPDATE stock SET cantidad_stock=cantidad_stock-'" . $cantidad . "' WHERE id_producto_stock='" . $id_producto . "' and id_sucursal_stock='" . $id_empresa . "'"); //Actualizo la nueva cantidad en el inventario

        $nums++;
    }
   
    //calculos de iva, retencion, exento-----------------------------------------
    $reten         = get_row('perfil', 'retencion', 'id_perfil', 1);
    $monto_reten   = get_row('perfil', 'monto_retencion', 'id_perfil', 1);
    
    $pv = number_format($pv, 2, '.', '');
    $total_impuesto = number_format($total_impuesto, 2, '.', '');
    
    //si aplica retencion.
    $subtotal = $pv;
    if (($aplica_reten=='1') and ($subtotal >= $monto_reten)) {$total_retencion = $subtotal * ($reten/100);} else {$total_retencion=0;}
    
    //si aplica iva, sino es cliente exento.
    if ($aplica_exe!='1') {$subtotal = $subtotal / ($impuesto/100+1);}
    else {$pv = $sumador_total_; $total_exento = $pv; $total_retencion = 0;}
    
    //si es comprobante, sino otro.
    if ($id_comp == 'C'){$total_factura = $pv + $total_impuesto + $total_retencion;}
    else{$total_factura = $pv;}
    
    if ($id_comp != 'C'){$total_impuesto=0;}
    //fin de calculos------------------------------------------------------------

    $cambio           = $resibido - $total_factura;
    $saldo_credito    = $total_factura - $resibido;
    $camb             = number_format($cambio, 2);
    $resibido_formato = number_format($resibido, 2);

    if ($condiciones == 4) {
        $insert_prima = mysqli_query($conexion, "INSERT INTO creditos VALUES (NULL,'$factura','$date_added','$id_cliente','$id_vendedor','$total_factura','$saldo_credito','1','$users','1')");
        $insert_abono = mysqli_query($conexion, "INSERT INTO creditos_abonos VALUES (NULL,'$factura','$date_added','$id_cliente','$total_factura','$resibido','$saldo_credito','$users','1','CREDITO INICAL','0')");
    }

    $insert = mysqli_query($conexion, "INSERT INTO facturas_ventas VALUES (NULL,'$numero_factura','$date_added','$id_cliente','$id_vendedor','$condiciones','$total_factura','$estado','$users','$resibido','$id_empresa','$id_comp','$trans','$impuesto','$tipo_venta','$numero_cotizacion')");
    $insert_= mysqli_query($conexion, "update facturas_orden set numero_factura_venta='$numero_factura' where numero_factura='" . $numero_cotizacion . "'");
    $insert_Histo = mysqli_query($conexion, "INSERT INTO facturas_orden_historico VALUES (NULL,'$numero_cotizacion','$date_added','$id_vendedor','$total_factura')");

    $date_ = date("Y-m-d H:i:s");   
    guardar_historial_fact($id_factura, $numero_factura, $date_, 2, $users, $condiciones, $estado, $total_factura);
    
    // SI TODO ESTA CORRECTO
    if ($condiciones == 4) {
        echo "<script>
        swal({
          title: 'VENTA AL CREDITO GUARDADA CON EXITO CON ANTICIPO DE: $simbolo_moneda $resibido_formato',
          text: 'Factura: $factura',
          type: 'success',
          confirmButtonText: 'ok'
      })
  </script>";
        exit;
    }
    if ($insert_detail) {
        echo "<script>
        $('#outer_comprobante').load('../ajax/carga_correlativos.php');
        $('#resultados5').load('../ajax/carga_num_trans.php')
        $('#modal_vuelto').modal('show');
        </script>";
        #$messages[] = "Venta  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">
        <strong>Error!</strong>
        <?php
foreach ($errors as $error) {
        echo $error;
    }
    ?>
    </div>
    <?php
}
if (isset($messages)) {

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

?>
<!-- Modal -->
<div class="modal fade" id="modal_vuelto" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title" id="myModalLabel"><i class='fa fa-edit'></i> FACTURA: <?php echo $numero_factura; ?></h4>
            </div>
            <div class="modal-body" align="center">
                <strong><h3>CAMBIO</h3></strong>
                <div class="alert alert-info" align="center">
                    <strong><h1>
                        <?php echo $simbolo_moneda . ' ' . $camb; ?>

                    </h1></strong>
                </div>

            </div>
            <div class="modal-footer">
            <?php if ($id_comp=='T')  {?>
                <button type="button" id="imprimir" class="btn btn-primary btn-block btn-lg waves-effect waves-light" onclick="printOrder('1');" accesskey="t" ><span class="fa fa-print"></span> Ticket</button><br>
            <?php } if ($id_comp=='F')  {?>
                <button type="button" id="imprimir2" class="btn btn-success btn-block btn-lg waves-effect waves-light" onclick="printFactura('1');" accesskey="p"><span class="fa fa-print"></span> Factura</button>
            <?php } if ($id_comp=='C')  {?>
                <button type="button" id="imprimir3" class="btn btn-success btn-block btn-lg waves-effect waves-light" onclick="printComprobante('1');" accesskey="c"><span class="fa fa-print"></span> Comprobante</button>
                <?php } ?>
            </div>
        </div>
    </div>
</div>