<?php
// ajax/guardar_cobro_mesa.php
ini_set('display_errors', 1);
error_reporting(E_ALL);

require '../conexion.php';
date_default_timezone_set('America/Argentina/Buenos_Aires');

$mesa_id       = intval($_POST['mesa_id'] ?? 0);
$monto         = floatval($_POST['monto'] ?? 0);
$cliente       = trim($_POST['cliente'] ?? '');
$comentario    = trim($_POST['comentario'] ?? '');
$forma_pago    = $_POST['forma_pago'] ?? '';
$efectivo      = floatval($_POST['efectivo'] ?? 0);
$transferencia = floatval($_POST['transferencia'] ?? 0);
$descuento     = floatval($_POST['descuento'] ?? 0);

// Ajustar efectivo / transferencia según forma de pago
if ($forma_pago === 'efectivo') {
  $efectivo = $monto;
  $transferencia = 0;
} elseif ($forma_pago === 'transferencia') {
  $transferencia = $monto;
  $efectivo = 0;
} elseif ($forma_pago === 'dividido') {
  if (($efectivo + $transferencia) != $monto) {
    // Podés loguear esto si querés
  }
}

$productos_json = $_POST['productos_json'] ?? ($_POST['productos'] ?? '[]');
$productos      = json_decode($productos_json, true);

if ($mesa_id <= 0 || $monto <= 0 || !in_array($forma_pago, ['efectivo','transferencia','dividido'])) {
  echo json_encode(['error' => 'Datos inválidos']);
  exit;
}

$fecha = date('Y-m-d');
$hora  = date('H:i:s');

file_put_contents(__DIR__ . "/debug_mesa.txt", print_r([
  'POST' => $_POST,
  'productos_decodificados' => $productos
], true));

// 1. Registrar en caja_mesa
$stmt = $con->prepare("INSERT INTO caja_mesa
  (mesa_id, cliente, comentario, monto_total, efectivo, transferencia, forma_pago, fecha, hora)
  VALUES (?,?,?,?,?,?,?,?,?)");
if(!$stmt){ echo json_encode(['error'=>$con->error]); exit; }
$stmt->bind_param("issdddsss", $mesa_id, $cliente, $comentario, $monto, $efectivo, $transferencia, $forma_pago, $fecha, $hora);
$stmt->execute();
$caja_id = $stmt->insert_id;
$stmt->close();

// Construir detalles_json y actualizar en caja_mesa
$detalles = [
  'productos' => $productos,
  'descuento' => $descuento
];
$detalles_json = json_encode($detalles, JSON_UNESCAPED_UNICODE);

$stmt_json = $con->prepare("UPDATE caja_mesa SET detalles_json = ? WHERE id = ?");
$stmt_json->bind_param("si", $detalles_json, $caja_id);
$stmt_json->execute();
$stmt_json->close();

// 2. Registrar ticket principal
$stmt2 = $con->prepare("INSERT INTO tickets_mesa
  (mesa_id, cliente, comentario, total, efectivo, transferencia, forma_pago, descuento, fecha)
  VALUES (?,?,?,?,?,?,?, ?, NOW())");
if(!$stmt2){ echo json_encode(['error'=>$con->error]); exit; }
$stmt2->bind_param("issdddsd", $mesa_id, $cliente, $comentario, $monto, $efectivo, $transferencia, $forma_pago, $descuento);
$stmt2->execute();
$ticket_id = $stmt2->insert_id;
$stmt2->close();


// 3. Guardar detalle de productos
if ($ticket_id && is_array($productos)) {
  $stmt3 = $con->prepare("INSERT INTO tickets_mesa_detalle (ticket_id, producto_id, precio) VALUES (?,?,?)");

  foreach($productos as $p){
    $pid = intval($p['id'] ?? 0);
    $precio = floatval($p['precio'] ?? 0);
    $cantidad = intval($p['cantidad'] ?? 1);

    if($pid > 0){
      // Insertar detalle N veces
      for ($i = 0; $i < $cantidad; $i++) {
        $stmt3->bind_param("iid", $ticket_id, $pid, $precio);
        $stmt3->execute();
      }

      // Descontar stock o sumar usados
      $res = mysqli_query($con, "SELECT stock FROM productos_mesas WHERE id = $pid");
      if ($res && mysqli_num_rows($res) > 0) {
        $row = mysqli_fetch_assoc($res);
        if (!is_null($row['stock'])) {
          
$res = mysqli_query($con, "UPDATE productos_mesas SET stock = stock - $cantidad WHERE id = $pid");
if (!$res) {
    error_log("ERROR SQL: " . mysqli_error($con));
} else {
    error_log("OK: Descontado $cantidad del producto ID $pid");
}

        } else {
          
$res = mysqli_query($con, "UPDATE productos_mesas SET usados = usados + $cantidad WHERE id = $pid");
if (!$res) {
    error_log("ERROR SQL (usados): " . mysqli_error($con));
} else {
    error_log("OK: Sumado $cantidad a usados del producto ID $pid");
}

        }
      }
    }
  }

  $stmt3->close();
}


echo json_encode(['success' => true, 'ticket_id' => $ticket_id]);
?>
