diff --git a/add_column.php b/add_column.php
deleted file mode 100644
index b070ae8..0000000
--- a/add_column.php
+++ /dev/null
@@ -1,65 +0,0 @@
-Acceso denegado.";
- require_once 'layout_footer.php';
- exit();
-}
-
-$message = '';
-
-if ($_SERVER['REQUEST_METHOD'] === 'POST') {
- $nombre = trim($_POST['nombre'] ?? '');
-
- if (!empty($nombre)) {
- try {
- $pdo = db();
-
- // Find the current max order value
- $stmt_max_order = $pdo->query('SELECT MAX(orden) AS max_orden FROM kanban_columns');
- $max_orden = $stmt_max_order->fetchColumn();
- $new_orden = ($max_orden === null) ? 0 : $max_orden + 1;
-
- $stmt = $pdo->prepare('INSERT INTO kanban_columns (nombre, orden) VALUES (?, ?)');
-
- if ($stmt->execute([$nombre, $new_orden])) {
- // Usar una variable de sesión para mostrar el mensaje en la página de configuración
- $_SESSION['success_message'] = "Columna '" . htmlspecialchars($nombre) . "' añadida correctamente.";
- header('Location: configuracion.php');
- exit;
- } else {
- $message = "
Error al añadir la columna.
";
- }
- } catch (PDOException $e) {
- $message = "Error de base de datos: " . $e->getMessage() . "
";
- }
- } else {
- $message = "El nombre de la columna no puede estar vacío.
";
- }
-}
-?>
-
-
-
-
\ No newline at end of file
diff --git a/db/migrations/058_add_fecha_entrega_to_pedidos.sql b/db/migrations/058_add_fecha_entrega_to_pedidos.sql
new file mode 100644
index 0000000..b7ab6ce
--- /dev/null
+++ b/db/migrations/058_add_fecha_entrega_to_pedidos.sql
@@ -0,0 +1 @@
+ALTER TABLE pedidos ADD COLUMN fecha_entrega DATE DEFAULT NULL;
diff --git a/db/migrations/059_add_coordenadas_to_pedidos.sql b/db/migrations/059_add_coordenadas_to_pedidos.sql
new file mode 100644
index 0000000..4b4f598
--- /dev/null
+++ b/db/migrations/059_add_coordenadas_to_pedidos.sql
@@ -0,0 +1 @@
+ALTER TABLE pedidos ADD COLUMN coordenadas VARCHAR(255) DEFAULT NULL;
diff --git a/pedido_form.php b/pedido_form.php
index 4ec51ba..c99500c 100644
--- a/pedido_form.php
+++ b/pedido_form.php
@@ -147,10 +147,6 @@ include 'layout_header.php';
-
-
-
-
diff --git a/pedidos_contraentrega.php b/pedidos_contraentrega.php
index 538495d..7a8cc53 100644
--- a/pedidos_contraentrega.php
+++ b/pedidos_contraentrega.php
@@ -143,8 +143,19 @@ include 'layout_header.php';
-
-
+
+
+
+
+
+
diff --git a/ruta_contraentrega.php b/ruta_contraentrega.php
index 57267d2..283bacc 100644
--- a/ruta_contraentrega.php
+++ b/ruta_contraentrega.php
@@ -37,6 +37,17 @@ function getStatusStyle($status) {
return "background-color: {$bgColor} !important; {$style}";
}
+function getFechaEntregaStyle($fecha) {
+ if (empty($fecha) || $fecha === '0000-00-00') {
+ return 'background-color: #f8f9fa; color: #6c757d;'; // Light grey for N/A
+ }
+ // Check if the date is in the past
+ if (strtotime($fecha) < time()) {
+ return 'background-color: #f8d7da; color: #721c24;'; // Light red for past dates
+ }
+ return 'background-color: #e0f7fa; color: black;'; // Light cyan background for upcoming dates
+}
+
$pdo = db();
$user_id = $_SESSION['user_id'];
@@ -163,6 +174,7 @@ include 'layout_header.php';
Monto Total |
Monto Debe |
Estado |
+ Fecha de Entrega |
Asesor |
Fecha Creación |
Acciones |
@@ -175,16 +187,36 @@ include 'layout_header.php';
|
|
- |
+
+ ';
+ echo '';
+ echo '';
+ } else {
+ echo 'N/A';
+ }
+ ?>
+ |
|
|
|
- |
- |
+ |
+ |
|
|
|
|
+ |
|
|
@@ -215,7 +247,7 @@ $(document).ready(function() {
"language": {
"url": "//cdn.datatables.net/plug-ins/1.10.25/i18n/Spanish.json"
},
- "order": [[ , "desc" ]],
+ "order": [[ , "desc" ]],
"paging": false,
"lengthChange": false,
"info": false
diff --git a/save_pedido.php b/save_pedido.php
index d31e93c..9484acb 100644
--- a/save_pedido.php
+++ b/save_pedido.php
@@ -51,7 +51,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$codigo_rastreo = trim($_POST['codigo_rastreo'] ?? '');
$codigo_tracking = trim($_POST['codigo_tracking'] ?? '');
$clave = trim($_POST['clave'] ?? '');
- $seguimiento = trim($_POST['seguimiento'] ?? '');
+
// --- Manejo de multiples productos ---
$productos_post = $_POST['productos'] ?? [];
@@ -108,7 +108,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
'codigo_rastreo' => $codigo_rastreo,
'codigo_tracking' => $codigo_tracking,
'clave' => $clave,
- 'seguimiento' => $seguimiento,
+
'producto' => $producto,
'cantidad' => $cantidad,
'monto_total' => $monto_total,
@@ -133,7 +133,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
"codigo_rastreo = :codigo_rastreo",
"codigo_tracking = :codigo_tracking",
"clave = :clave",
- "seguimiento = :seguimiento",
+
"producto = :producto",
"cantidad = :cantidad",
"monto_total = :monto_total",
@@ -173,8 +173,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// INSERT: The advisor is the user creating the order.
$params['asesor_id'] = $_SESSION['user_id'];
- $columns_sql = "dni_cliente, nombre_completo, celular, sede_envio, codigo_rastreo, codigo_tracking, clave, seguimiento, producto, cantidad, monto_total, monto_adelantado, numero_operacion, monto_debe, estado, asesor_id, notas, voucher_adelanto_path, voucher_restante_path";
- $values_sql = ":dni_cliente, :nombre_completo, :celular, :sede_envio, :codigo_rastreo, :codigo_tracking, :clave, :seguimiento, :producto, :cantidad, :monto_total, :monto_adelantado, :numero_operacion, :monto_debe, :estado, :asesor_id, :notas, :voucher_adelanto_path, :voucher_restante_path";
+ $columns_sql = "dni_cliente, nombre_completo, celular, sede_envio, codigo_rastreo, codigo_tracking, clave, producto, cantidad, monto_total, monto_adelantado, numero_operacion, monto_debe, estado, asesor_id, notas, voucher_adelanto_path, voucher_restante_path";
+ $values_sql = ":dni_cliente, :nombre_completo, :celular, :sede_envio, :codigo_rastreo, :codigo_tracking, :clave, :producto, :cantidad, :monto_total, :monto_adelantado, :numero_operacion, :monto_debe, :estado, :asesor_id, :notas, :voucher_adelanto_path, :voucher_restante_path";
$completed_states = ['Completado', 'COMPLETADO ✅'];
if (in_array($estado, $completed_states)) {
diff --git a/save_pedido_contraentrega.php b/save_pedido_contraentrega.php
index 0aae7bf..1daa83e 100644
--- a/save_pedido_contraentrega.php
+++ b/save_pedido_contraentrega.php
@@ -20,6 +20,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$codigo_tracking = trim($_POST['codigo_tracking'] ?? '');
$direccion_exacta = trim($_POST['direccion_exacta'] ?? '');
$referencia_domicilio = trim($_POST['referencia_domicilio'] ?? '');
+ $coordenadas = trim($_POST['coordenadas'] ?? '');
+ $seguimiento = trim($_POST['seguimiento'] ?? '');
+ $fecha_entrega = trim($_POST['fecha_entrega'] ?? null);
// --- Manejo de multiples productos ---
$productos_post = $_POST['productos'] ?? [];
@@ -51,8 +54,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$notas .= "\n\n" . $notas_adicionales;
}
- if (empty($dni) || empty($nombre_completo) || empty($celular) || empty($sede_envio) || empty($producto) || $cantidad === false || $monto_total === false) {
- die('Por favor, complete todos los campos obligatorios.');
+ if (empty($dni) || empty($nombre_completo) || empty($celular) || empty($sede_envio) || empty($producto) || $cantidad === false || $monto_total === false || empty($coordenadas)) {
+ $error_message = urlencode('Por favor, complete todos los campos obligatorios, incluyendo las coordenadas.');
+ $id_param = $id ? '&id=' . $id : '';
+ header('Location: pedidos_contraentrega.php?error=' . $error_message . $id_param);
+ exit;
}
$monto_debe = $monto_total - $monto_adelantado;
@@ -64,6 +70,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
'sede_envio' => $sede_envio,
'direccion_exacta' => $direccion_exacta,
'referencia_domicilio' => $referencia_domicilio,
+ 'coordenadas' => $coordenadas,
'codigo_rastreo' => $codigo_rastreo,
'codigo_tracking' => $codigo_tracking,
'producto' => $producto,
@@ -73,6 +80,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
'numero_operacion' => $numero_operacion,
'monto_debe' => $monto_debe,
'notas' => $notas,
+ 'seguimiento' => $seguimiento,
+ 'fecha_entrega' => $fecha_entrega,
];
if ($id) {
@@ -86,6 +95,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
"sede_envio = :sede_envio",
"direccion_exacta = :direccion_exacta",
"referencia_domicilio = :referencia_domicilio",
+ "coordenadas = :coordenadas",
"codigo_rastreo = :codigo_rastreo",
"codigo_tracking = :codigo_tracking",
"producto = :producto",
@@ -95,6 +105,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
"numero_operacion = :numero_operacion",
"monto_debe = :monto_debe",
"notas = :notas",
+ "seguimiento = :seguimiento",
+ "fecha_entrega = :fecha_entrega",
];
// Conditionally add asesor_id
@@ -113,8 +125,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$params['asesor_id'] = $_SESSION['user_id'];
$params['estado'] = 'RUTA_CONTRAENTREGA';
- $columns_sql = "dni_cliente, nombre_completo, celular, sede_envio, direccion_exacta, referencia_domicilio, codigo_rastreo, codigo_tracking, producto, cantidad, monto_total, monto_adelantado, numero_operacion, monto_debe, asesor_id, notas, estado";
- $values_sql = ":dni_cliente, :nombre_completo, :celular, :sede_envio, :direccion_exacta, :referencia_domicilio, :codigo_rastreo, :codigo_tracking, :producto, :cantidad, :monto_total, :monto_adelantado, :numero_operacion, :monto_debe, :asesor_id, :notas, :estado";
+ $columns_sql = "dni_cliente, nombre_completo, celular, sede_envio, direccion_exacta, referencia_domicilio, coordenadas, codigo_rastreo, codigo_tracking, producto, cantidad, monto_total, monto_adelantado, numero_operacion, monto_debe, asesor_id, notas, estado, seguimiento, fecha_entrega";
+ $values_sql = ":dni_cliente, :nombre_completo, :celular, :sede_envio, :direccion_exacta, :referencia_domicilio, :coordenadas, :codigo_rastreo, :codigo_tracking, :producto, :cantidad, :monto_total, :monto_adelantado, :numero_operacion, :monto_debe, :asesor_id, :notas, :estado, :seguimiento, :fecha_entrega";
$sql = "INSERT INTO pedidos ($columns_sql) VALUES ($values_sql)";
$stmt = $pdo->prepare($sql);
|