'', 'dni_cliente' => '', 'nombre_completo' => '', 'celular' => '', 'agencia' => 'CONTRAENTREGA', 'sede_envio' => '', 'codigo_rastreo' => '', 'codigo_tracking' => '', 'producto' => '', 'cantidad' => 1, 'monto_total' => '', 'monto_adelantado' => 0, 'numero_operacion' => '', 'banco' => '', 'fecha_recojo' => '', 'asesor_id' => $user_id, // Default to current user 'notas' => '', ]; $page_title = 'Agregar Pedido Contraentrega'; if (isset($_GET['id'])) { $page_title = 'Editar Pedido Contraentrega'; $stmt = $pdo->prepare('SELECT * FROM pedidos WHERE id = ?'); $stmt->execute([$_GET['id']]); $pedido = $stmt->fetch(); if (!$pedido) { die('Pedido no encontrado.'); } // Security check: Asesora can only edit their own pedidos if ($user_role === 'Asesor' && $pedido['asesor_id'] != $user_id) { die('Acceso denegado. No tienes permiso para editar este pedido.'); } } else { // Security check: Only Administradors and asesores can create new pedidos if ($user_role !== 'Administrador' && $user_role !== 'Asesor') { die('Acceso denegado. No tienes permiso para crear nuevos pedidos.'); } } // Fetch asesores or the current asesor's name $asesores = []; $current_asesor_nombre = ''; if ($user_role === 'Administrador') { $stmt_asesores = $pdo->query("SELECT id, nombre_asesor FROM users WHERE role = 'Asesor' ORDER BY nombre_asesor"); $asesores = $stmt_asesores->fetchAll(); } else if ($user_role === 'Asesor') { $stmt_current_asesor = $pdo->prepare("SELECT nombre_asesor FROM users WHERE id = ?"); $stmt_current_asesor->execute([$user_id]); $current_asesor_nombre = $stmt_current_asesor->fetchColumn(); } // Fetch products $stmt_products = $pdo->query("SELECT id, nombre FROM products ORDER BY nombre ASC"); $products = $stmt_products->fetchAll(); // Parse products for editing $display_products = []; if (!empty($pedido['id'])) { // Try to parse from notas first as it has quantities if (preg_match_all('/Detalle de productos: (.*)$/m', $pedido['notas'], $matches)) { // Take the last match $last_match = end($matches[1]); $details = explode(', ', $last_match); foreach ($details as $detail) { if (preg_match('/(.*) \(x(\d+)\)/', $detail, $d_matches)) { $display_products[] = [ 'nombre' => trim($d_matches[1]), 'cantidad' => (int)$d_matches[2] ]; } } } // Fallback if parsing failed or no details in notas if (empty($display_products) && !empty($pedido['producto'])) { $names = explode(', ', $pedido['producto']); foreach ($names as $name) { $display_products[] = [ 'nombre' => trim($name), 'cantidad' => count($names) == 1 ? $pedido['cantidad'] : 1 ]; } } } if (empty($display_products)) { $display_products[] = ['nombre' => '', 'cantidad' => 1]; } ?>