<?php $r="../";
require_once($r."inc/funciones.php");
validNotSession($r);
$spe=$_SESSION['perfil'];
$iduser=$_SESSION['userid'];
$mysqli = connectDB($r);
/* FORMULARIO NUEVO */
if(isset($_POST["aprobar"])){
    $code=$_POST["aprobar"];
    $mpago = $_POST['mpagos'];
    $fecha = date("Y-m-d H:i:s"); 
    $subtotal = 0;
    foreach($_POST as $key => $item){
        $param_name = 'id';
        if(substr($key, 0, strlen($param_name)) == $param_name) {
            $id=$item;
            $bono=$_POST['bono'.$item];
            $por= $_POST['por'.$item];
            $pre= $_POST['pre'.$item];
            $mysqli->query("UPDATE z_pedido SET bono='$bono',descuento='$por',precio='$pre' WHERE codigopedido='$code' AND idproducto='$id'");
        }
    }
    if(isset($_POST['aprobar'])){$mysqli->query("UPDATE z_pedidos SET estado='1' WHERE codigopedido='$code'");}
    if(isset($_POST['adicional'])){$adicional=$_POST['adicional']; $mysqli->query("UPDATE z_pedidos SET adicional='$adicional' WHERE codigopedido='$code'");}
    if($_POST['remesa']=='SI'){$mysqli->query("UPDATE z_pedidos SET remesa='0', estado='6' WHERE codigopedido='$code'");}
    if(isset($_POST['abono'])){$abono=$_POST['adicional']; $mysqli->query("UPDATE z_pedidos SET abono='$abono' WHERE codigopedido='$code'");}
    if(isset($_POST['rutero'])){
        if(empty($_POST['rutero'])){ 
            echo '<div class="alert alert-danger  alert-dismissible text-center"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a><h6>FALTA RUTERO</h6></div>';
            exit();
        }
        $idrutero = $_POST['rutero'];
        $mysqli->query("UPDATE z_pedidos SET idrutero='$idrutero' WHERE codigopedido='$code'");
    }
    
    
    if(isset($_POST['vendedor'])){
        if(empty($_POST['vendedor'])){ 
            echo '<div class="alert alert-danger  alert-dismissible text-center"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a><h6>FALTA VENDEDOR</h6></div>';
            exit();
        }
        $idvendedor = $_POST['vendedor'];
        $mysqli->query("UPDATE z_pedidos SET idvendedor='$idvendedor' WHERE codigopedido='$code'");
    }
    
    if(isset($_POST['pago'])){
        $estapago = $_POST['pago'];
        $mysqli->query("UPDATE z_pedidos SET pago='$estapago' WHERE codigopedido='$code'");
        if($_POST['pago']==2){
            $mysqli->query("INSERT INTO z_caja (iduser, codigopedido, pago, estado) VALUES ('$iduser','$code','$total','2')");
            $mysqli->query("INSERT INTO z_pagos (`idpedido`, `idmedio`, `monto`) VALUES ('$code','$mpago','$total')");
        }
    }
    $total = 0;
    $sqlpedido=$mysqli->query("SELECT cantidad, precio FROM z_pedido WHERE codigopedido='$code'");
    while($rowpedido = $sqlpedido->fetch_assoc()){
        $precio = $rowpedido['cantidad']*$rowpedido['precio'];
        $total = $total+$precio;
    }
    $mysqli->query("UPDATE z_pedidos SET idapro='$iduser', total='$total', fechaaprovacion='$fecha' WHERE codigopedido='$code'");
    setcookie("codigopedido", $code, time()+5, "/");
    setcookie("celular", $celular3, time()+5, "/");
    setcookie("mensaje", "Favor entregar el pedido No. $code", time()+5, "/");
    
   /* $sqlcliente=$mysqli->query("SELECT p.*, c.nombre AS cliente_nombre, c.direccion AS cliente_direccion, c.celular AS cliente_celular, c.telefono1 AS cliente_telefono FROM z_pedidos p INNER JOIN z_clientes c ON c.id=p.idcliente WHERE p.codigopedido=$code LIMIT 1");
    $rowcliente = $sqlcliente->fetch_assoc();
    
    $nombre    = $rowcliente['cliente_nombre'] ?? '';
    $direccion = $rowcliente['cliente_direccion'] ?? '';
    
    $celular  = preg_replace('/\D/','',$rowcliente['cliente_celular'] ?? '');
    $telefono = preg_replace('/\D/','',$rowcliente['cliente_telefono'] ?? '');
    
    $numero = '';
    
    if(strlen($celular) >= 10){
        $numero = $celular;
    }elseif(strlen($telefono) >= 7){
        $numero = $telefono;
    }
    
    if($numero){
        if(substr($numero,0,2) != '57'){
            $numero = '57'.$numero;
        }
    }
    
    $mensaje  = "¡Hola! {$nombre}👋\n\n";
    $mensaje .= "Te escribimos de QUIMIFOREN 🚚.\n\n";
    $mensaje .= "Tu pedido saldrá de nuestra bodega a más tardar HOY.\n\n";
    $mensaje .= "📍 La dirección de entrega es: $direccion 📦.\n\n";
    $mensaje .= "Te avisaremos nuevamente cuando el pedido esté en camino hacia ti.\n\n";
    $mensaje .= "Si tienes dudas: contacta a QUIMIFOREN SOPORTE al +57 322 2111895 📲 📞.\n\n";
    $mensaje .= "⚠️ Canal oficial de QUIMIFOREN SAS. No solicitamos pagos extra ni datos fuera de tu compra. Evita fraudes.";
    

    
    $url = "https://tracking.quimiforen.com/api/tracking/wasender.php?number={$numero}&message=" . urlencode($message);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);

    $response = curl_exec($ch);
    $error    = curl_error($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    curl_close($ch);

    if($error){
        throw new Exception("Error enviando WhatsApp: ".$error);
    }

    if($httpCode != 200 && $httpCode != 201){
        throw new Exception("Error API WhatsApp");
    }
*/
    echo '../caja/prints.php?code='.$code.'&msn=El Pedido N°'.$code.' fue aprobado, se ha enviado a bodega';
    exit();
}

/* FORMULARIO EDITAR */
if(isset($_POST["editar"])){
    $code=$_POST["editar"];
                $co=0;
    foreach($_POST as $key => $item){
            $param_name = 'iden';
            if(substr($key, 0, strlen($param_name)) == $param_name) {
                $idpro=$item;
                if($si==""){$si=$idpro;}
                $idpro=$item;
                $idkpro= $_POST['cod'.$idpro];
                $capro= $_POST['cant'.$idpro];
                $prpro= $_POST['prec'.$idpro];
                $tpro= $_POST['tipo'.$idpro];
                $iva= $_POST['iva'.$idpro];
                $ya = '1';
             }
            if($ya==1){
                $row20=$mysqli->query("SELECT * FROM z_pedido WHERE idproducto='$idpro' AND codigopedido='$code'");
                $row21=$row20->fetch_assoc();
                $cantidad=$row21['cantidad'];
                if($co==0){$mysqli->query("DELETE FROM z_pedido WHERE codigopedido=$code");$co++;}
                $mysqli->query("INSERT INTO z_pedido (idproducto, cantidad, idpresentacion, precio, iva, codigopedido) VALUE ('$idkpro','$capro','$tpro','$prpro','$iva','$code')");
                $prod=sprod($idpro);
                $producto=$prod['producto'];
                $mensaje   .= $producto.' : '.$capro. "\r\n";
                
                $row7=$mysqli->query("SELECT * FROM z_inventario WHERE idproducto='$idpro' ORDER BY id DESC");
                $row8=$row7->fetch_assoc();
                $icant=$row8['cantidad'];
                $iid=$row8['id'];
                $icant=$icant-$capro+$cantidad;
                $mysqli->query("UPDATE z_inventario SET cantidad='$icant' WHERE id='$iid'");
                    $subtotal=$capro*$prpro;
                    $total=$total+$subtotal;
                $ya = '0';
            }
        }
        
    $tipopedido=$_POST["tipopedido"];
    $fecha=$_POST["fecha"];
    $idcliente=$_POST["cliente"];
    $nota=$_POST["nota"];
    $adicional=$_POST["otros"];
    if($adicional==""){$adicional=0;}
    $mysqli->query("UPDATE z_pedidos SET idcliente='$idcliente', fechaentrega='$fecha', tipopedido='$tipopedido', adicional='$adicional', nota='$nota', revisar='0' WHERE codigopedido='$code'");
    $row11=$mysqli->query("SELECT * FROM z_clientes WHERE id='$idcliente' ORDER BY id DESC");
        $row12=$row11->fetch_assoc();
        $perfil=$row12['perfil'];
        if($perfil=='1'){
            if($tipopedido=="F"){
            $municipiocliente=$row12[municipio];
            if($municipiocliente==$municipiosucursal){
                $sql = $mysqli->query("SELECT * FROM z_ica ORDER BY id DESC LIMIT 1");
                $ica = $sql->fetch_assoc();
                $reteica=$ica[base];
                $porcentajeica=$ica[porcentaje]/100;
                $totalica=$total*$porcentajeica;
                $mysqli->query("UPDATE z_pedidos SET ica='$totalica' WHERE codigopedido='$code'");
            }else{$mysqli->query("UPDATE z_pedidos SET ica='0' WHERE codigopedido='$code'");}
            
            $sql = $mysqli->query("SELECT * FROM z_retefuente ORDER BY id DESC LIMIT 1");
            $fuente = $sql->fetch_assoc();
            $retefuente=$fuente[base];
            if($total>=$retefuente){
                $porcentajefuente=$fuente[porcentaje]/100;
                
                $totalfuente=$total*$porcentajefuente;
                $mysqli->query("UPDATE z_pedidos SET fuente='$totalfuente' WHERE codigopedido='$code'");
                
            }else{$mysqli->query("UPDATE z_pedidos SET fuente='0' WHERE codigopedido='$code'");}
        }
            
        }
        
    echo 'mis-pedidos.php?code='.$code.'&msn=El Pedido N°'.$code.$reteica.$porcentajeica.$total.' fue aprobado, se ha enviado a bodega!';
    exit();
}
/* FORMULARIO REASIGNAR */
if(isset($_POST["reasignar"])){
    $code=$_POST["reasignar"];
    foreach($_POST as $key => $item){
        if($key=='rutero'){if($item==""){ echo '<div class="alert alert-danger  alert-dismissible text-center"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a><h6>FALTA RUTERO</h6></div>';exit();}
        $mysqli->query("UPDATE z_pedidos SET idrutero='$item' WHERE codigopedido='$code'");}
    }
    
    echo '../caja/prints.php?code='.$code.'&msn=El Pedido N°'.$code.' fue aprobado, Reasignado!';
    exit();
}



/* FORMULARIO CARREGIR */
if(isset($_POST["corregir"])){
    $code=$_POST["corregir"];
    $mysqli->query("UPDATE z_pedidos SET revisar='1' WHERE codigopedido='$code'");
    $mysqli->query("INSERT INTO z_corregir (`codigopedido`, `nota`) VALUES ('$code','$_POST[nota]')");
    $t=strtotime("+10 second");
    $msn=base64_encode($code);
    setcookie("codigopedido", $code, time()+5, "/");
    setcookie("celular", $celular2, time()+5, "/");
    setcookie("mensaje", "Corregir el pedido No. $code", time()+5, "/");
    echo 'aprobar-pedido.php?code='.$code.'&msn=El Pedido N°'.$code.' Paso a Ser Corregido';
    exit();
}


if(isset($_POST["actPedido"])){
    $code=$_POST["code"];
    foreach($_POST as $key => $item){
        $param_name = 'id';
        if(substr($key, 0, strlen($param_name)) == $param_name) {
          $id= $item;
        }
        $param_name = 'can';
        if(substr($key, 0, strlen($param_name)) == $param_name) {
            $can=$item;
            if($can!=""){
                $row7=$mysqli->query("SELECT * FROM z_inventario WHERE idproducto='$id' ORDER BY id DESC");
                $row8=$row7->fetch_assoc();
                $icant=$row8['cantidad'];
                if($icant>$can){
                    $mysqli->query("UPDATE z_pedido SET cantidad='$can' WHERE codigopedido='$code' AND idproducto='$id'");
                }else{$npro=sprod($id);$e.='</br>El Producto '.$npro['producto'].'No fue actualizado, solo hay '.$icant.'en existencia, ';}
            
            }
        }
        $param_name = 'cann';
        if(substr($key, 0, strlen($param_name)) == $param_name) {
            $cann=$item;
            if($cann!=""){  
            $producto=sprod($id);
            $mysqli->query("INSERT INTO z_pedido(`idproducto`, `cantidad`, `precio`, `iva`,`codigopedido`) VALUES ('$id','$item','".$producto["salsamentaria"]."','".$producto["iva"]."','$code')");
            }
        }
        if($key=='fecha'){$mysqli->query("UPDATE z_pedidos SET fechaentrega='$item' WHERE codigopedido='$code'");}    
    }
    echo 'mis-pedidos.php?msn=El Pedido de N°'.$code.' Fue Actualizado'.$e; 
    exit();
}
if(isset($_GET["pago"])){

    $code = $_GET["code"];
    $pago = $_GET["pago"];

    $mysqli->query("UPDATE z_pedidos SET idcobro='$iduser', pago='2', estado='3', fechacobro=NOW() WHERE codigopedido='$code'");
    $mysqli->query("INSERT INTO z_caja (iduser, codigopedido, pago, estado) VALUES ('$iduser','$code','$pago','2')");
    header("Location: ".$r."pedido/cobrar.php?msn=El Pedido de N° $code Fue Pagado");
    exit;
}


if(isset($_POST["revertirpago"])){

    $code   = $mysqli->real_escape_string($_POST["code"]);
    $code = substr("000$code", -6, 6);
    $motivo = $mysqli->real_escape_string($_POST["motivo"]);
    $idrev  = strtotime("now");

    // Buscar el último registro en caja relacionado
    $q1  = $mysqli->query("SELECT * FROM z_caja WHERE codigopedido='$code' ORDER BY id DESC LIMIT 1");
    if(!$q1 || $q1->num_rows == 0){
        echo "cobrados.php?msn=No se encontró registro en caja para el pedido N° $code";
        exit;
    }

    $row = $q1->fetch_assoc();
    $ultimo_pago = $row['pago'];
    $iduserpago  = $row['iduser'];
    $caja_id     = $row['id'];

    // Iniciar transacción para mantener consistencia
    $mysqli->begin_transaction();

    try {
        // 1) Marcar el registro original en z_caja como reversado (actualizar pago y estado)
        //    además concatenamos la nota para dejar registro del motivo
        $nota_actual = isset($row['nota']) ? $row['nota'] : '';
        $nota_reversion = "REVERSADO: $motivo";
        $nueva_nota = trim($nota_actual . ($nota_actual ? ' | ' : '') . $nota_reversion);
        $mysqli->query("UPDATE z_caja SET pago='0', estado='9', nota='".$mysqli->real_escape_string($nueva_nota)."' WHERE id='$caja_id'");

        // 2) Actualizar el pedido: marcar como no cobrado y limpiar idcobro / fechacobro
        $mysqli->query("UPDATE z_pedidos 
                        SET pago='0',
                            estado='1',
                            idcobro=NULL,
                            fechacobro=NULL
                        WHERE codigopedido='$code'");
/*
        // 3) Insertar en z_caja un nuevo registro que represente la reversión (opcional,
        //    pero queda claro en el historial: pago negativo + estado 9)
        $mysqli->query("INSERT INTO z_caja (iduser, codigopedido, pago, estado, nota) 
                        VALUES ('$iduserpago','$code','-".abs($ultimo_pago)."','9','".$mysqli->real_escape_string("REVERSIÓN: $motivo")."')");

        // 4) Registrar en z_abonos el movimiento de reversión (abono negativo)
        $mysqli->query("INSERT INTO z_abonos (idabono, iduser, codigopedido, idmedio, abono, total, nota) 
                        VALUES ('$idrev','$iduserpago','$code','0','-".abs($ultimo_pago)."','$ultimo_pago','".$mysqli->real_escape_string("REVERSIÓN: $motivo")."')");
*/
        // Confirmar transacción
        $mysqli->commit();

        echo "cobrados.php?msn=Reversión aplicada al Pedido N° $code";
        exit;

    } catch (Exception $e) {
        // Revertir en caso de error
        $mysqli->rollback();
        // Devolver mensaje de error para debugging básico
        echo "cobrados.php?msn=Error al aplicar reversión: " . urlencode($e->getMessage());
        exit;
    }
}



if(isset($_POST["pagos"])){

    $idabono = strtotime("now");
    $iabono  = $_POST['abono'];
    $abono   = $_POST['abono'];
    $abonos  = $_POST['abonos'];
    $nota    = $_POST['nota'];
    $mpago   = $_POST['mpago'];

    if($abonos < 0){
        echo '<div class="alert alert-danger" role="alert">El saldo Abonado es mayor a los pedidos selecionados</div>'; 
        exit();
    }

    if (empty($_POST['to'])) {
        echo '<div class="alert alert-danger" role="alert">Falta seleccionar algun pedido</div>'; 
        exit();
    }

    foreach($_POST['to'] as $key => $item){

        $code = $key;
        $pago = $item;

        if($abono >= $pago){

            $abono = $abono - $pago;

            $mysqli->query("UPDATE z_pedidos 
                            SET pago='2', 
                                estado='3', 
                                idcobro='$iduser',
                                fechacobro=NOW() 
                            WHERE codigopedido='$code'");

            $mysqli->query("INSERT INTO z_caja (iduser, codigopedido, pago, estado) 
                            VALUES ('$iduser','$code','$pago','2')");

            $mysqli->query("INSERT INTO z_abonos (idabono, iduser, codigopedido, idmedio, abono, total, nota) 
                            VALUES ('$idabono','$iduser','$code','$mpago','$pago','$iabono','$nota')");

        }else{

            $row7        = $mysqli->query("SELECT abono FROM z_pedidos WHERE codigopedido='$code'");
            $row8        = $row7->fetch_assoc();
            $abonoactual = $row8['abono'];
            $sumaabonos  = $abonoactual + $abono;

            $mysqli->query("UPDATE z_pedidos 
                            SET abono='$sumaabonos',
                                idcobro='$iduser',
                                fechacobro=NOW()
                            WHERE codigopedido='$code'");

            $mysqli->query("INSERT INTO z_abonos (idabono, iduser, codigopedido, idmedio, abono, total, nota) 
                            VALUES ('$idabono','$iduser','$code','$mpago','$abono','$iabono','$nota')");

            $mysqli->query("INSERT INTO z_caja (iduser, codigopedido, pago, estado) 
                            VALUES ('$iduser','$code','$abono','1')");

            $abono = 0; 
            echo $_SERVER['HTTP_REFERER']."&msn=El Pedido de N°$code ha Finalizado";
            exit();
        }

        $code = "";
        $pago = "";
    } 

    echo $_SERVER['HTTP_REFERER']."&msn=El Pedido de N°$code ha Finalizado";
    exit();
}



if(isset($_POST["eliminar"])){
    $code=$_POST["eliminar"];
    $motivo=$_POST["motivo"];
    $fecha=date("Y-m-d H:i:s");
    $mysqli->query("UPDATE z_pedidos SET estado='4' WHERE codigopedido='$code'");
    $mysqli->query("INSERT INTO z_pedidoseliminados (iduser, codigopedido, motivo, fecha) VALUES ('$iduser','$code','$motivo','$fecha')");
    echo "mis-pedidos.php?msn=El Pedido de N°'.$code.' Fue eliminado";
}

if(isset($_POST["coderemesa"])){
    $code=$_POST["coderemesa"];
    $nota=$_POST["notaremesa"];
    $mysqli->query("UPDATE z_pedidos SET remesa='$nota', estado='3' WHERE codigopedido='$code'");
    if(isset($_POST['pag'])){
        $mysqli->query("UPDATE z_pedidos SET pago='2' WHERE codigopedido='$code'");
    }
    exit(header("location: por-remesa.php?msn=El Pedido de N°'.$code.' a Finalizado"));
}

if(isset($_POST["idrestauracion"])){
    $code=$_POST["idrestauracion"];
    $mysqli->query("UPDATE z_pedidos SET estado='0' WHERE codigopedido='$code'");
    $response = array('success' => true);
    echo json_encode($response);
} else {
    // Si falta el parámetro, devuelve un error
    $response = array('success' => false, 'message' => 'Falta el parámetro idrestauracion.');
    echo json_encode($response);
}
?>