diff --git a/assets/uploads/vouchers/6a11abf1d82a5-066.png b/assets/uploads/vouchers/6a11abf1d82a5-066.png
new file mode 100644
index 00000000..38f1d2e9
Binary files /dev/null and b/assets/uploads/vouchers/6a11abf1d82a5-066.png differ
diff --git a/assets/uploads/vouchers/6a11acdda4cb9-090.png b/assets/uploads/vouchers/6a11acdda4cb9-090.png
new file mode 100644
index 00000000..b4c247f3
Binary files /dev/null and b/assets/uploads/vouchers/6a11acdda4cb9-090.png differ
diff --git a/assets/uploads/vouchers/6a11adff3ab3f-859.png b/assets/uploads/vouchers/6a11adff3ab3f-859.png
new file mode 100644
index 00000000..28cf79a5
Binary files /dev/null and b/assets/uploads/vouchers/6a11adff3ab3f-859.png differ
diff --git a/assets/uploads/vouchers/6a11b6cc6e69e-Screenshot_363.png b/assets/uploads/vouchers/6a11b6cc6e69e-Screenshot_363.png
new file mode 100644
index 00000000..577879bb
Binary files /dev/null and b/assets/uploads/vouchers/6a11b6cc6e69e-Screenshot_363.png differ
diff --git a/assets/uploads/vouchers/6a11ca92830ee-513.png b/assets/uploads/vouchers/6a11ca92830ee-513.png
new file mode 100644
index 00000000..39f3375d
Binary files /dev/null and b/assets/uploads/vouchers/6a11ca92830ee-513.png differ
diff --git a/gestiones.php b/gestiones.php
index 919a3055..87f3464f 100644
--- a/gestiones.php
+++ b/gestiones.php
@@ -240,7 +240,7 @@ $(document).ready(function() {
"language": {
"url": "//cdn.datatables.net/plug-ins/1.10.25/i18n/Spanish.json"
},
- "order": [[ , "desc" ]],
+ "order": [[ 0, "desc" ]],
"paging": false,
"lengthChange": false,
"info": false
diff --git a/pedidos_contraentrega.php b/pedidos_contraentrega.php
index d13001b8..dca6b252 100644
--- a/pedidos_contraentrega.php
+++ b/pedidos_contraentrega.php
@@ -147,7 +147,7 @@ include 'layout_header.php';
-
+
diff --git a/ruta_contraentrega.php b/ruta_contraentrega.php
index 04bd3ed2..33874c35 100644
--- a/ruta_contraentrega.php
+++ b/ruta_contraentrega.php
@@ -345,11 +345,7 @@ $(document).ready(function() {
"language": {
"url": "//cdn.datatables.net/plug-ins/1.10.25/i18n/Spanish.json"
},
- "order": [[ , "desc" ]],
+ "order": [[ 0, "desc" ]],
"paging": false,
"lengthChange": false,
"info": false
@@ -375,7 +371,6 @@ document.addEventListener('DOMContentLoaded', function() {
const options = [
{val: '', text: 'Seleccionar'},
{val: 'RUTA', text: 'RUTA'},
- {val: 'CONTRAENTREGA', text: 'CONTRAENTREGA'},
{val: 'NO CONTESTA, VOLVER A LLAMAR', text: 'NO CONTESTA, VOLVER A LLAMAR'},
{val: 'PENDIENTE A RETORNO', text: 'PENDIENTE A RETORNO'},
{val: 'COMPLETADO', text: 'COMPLETADO'}
diff --git a/save_pedido_contraentrega.php b/save_pedido_contraentrega.php
index e2a5d614..f778b53d 100644
--- a/save_pedido_contraentrega.php
+++ b/save_pedido_contraentrega.php
@@ -1,4 +1,8 @@
$fecha_entrega,
];
- if ($id) {
- // UPDATE: Explicit and safe query
- $user_role = $_SESSION['user_role'] ?? '';
+ try {
+ if ($id) {
+ // UPDATE: Explicit and safe query
+ $user_role = $_SESSION['user_role'] ?? '';
- $sql_parts = [
- "dni_cliente = :dni_cliente",
- "nombre_completo = :nombre_completo",
- "celular = :celular",
- "agencia = :agencia",
- "sede_envio = :sede_envio",
- "direccion_exacta = :direccion_exacta",
- "referencia_domicilio = :referencia_domicilio",
- "coordenadas = :coordenadas",
- "codigo_rastreo = :codigo_rastreo",
- "codigo_tracking = :codigo_tracking",
- "producto = :producto",
- "cantidad = :cantidad",
- "monto_total = :monto_total",
- "monto_adelantado = :monto_adelantado",
- "numero_operacion = :numero_operacion",
- "banco = :banco",
- "monto_debe = :monto_debe",
- "notas = :notas",
- "seguimiento = :seguimiento",
- "fecha_entrega = :fecha_entrega",
- "estado = :estado",
- ];
- $params['estado'] = $_POST['estado'] ?? 'RUTA_CONTRAENTREGA';
+ $sql_parts = [
+ "dni_cliente = :dni_cliente",
+ "nombre_completo = :nombre_completo",
+ "celular = :celular",
+ "agencia = :agencia",
+ "sede_envio = :sede_envio",
+ "direccion_exacta = :direccion_exacta",
+ "referencia_domicilio = :referencia_domicilio",
+ "coordenadas = :coordenadas",
+ "codigo_rastreo = :codigo_rastreo",
+ "codigo_tracking = :codigo_tracking",
+ "producto = :producto",
+ "cantidad = :cantidad",
+ "monto_total = :monto_total",
+ "monto_adelantado = :monto_adelantado",
+ "numero_operacion = :numero_operacion",
+ "banco = :banco",
+ "monto_debe = :monto_debe",
+ "notas = :notas",
+ "seguimiento = :seguimiento",
+ "fecha_entrega = :fecha_entrega",
+ "estado = :estado",
+ ];
+ $params['estado'] = $_POST['estado'] ?? 'RUTA_CONTRAENTREGA';
- // Conditionally add asesor_id
- if ($user_role === 'Administrador' && !empty($_POST['asesor_id'])) {
- $sql_parts[] = "asesor_id = :asesor_id";
- $params['asesor_id'] = $_POST['asesor_id'];
+ // Conditionally add asesor_id
+ if ($user_role === 'Administrador' && !empty($_POST['asesor_id'])) {
+ $sql_parts[] = "asesor_id = :asesor_id";
+ $params['asesor_id'] = $_POST['asesor_id'];
+ }
+
+ $sql = "UPDATE pedidos SET " . implode(", ", $sql_parts) . " WHERE id = :id";
+
+ $params['id'] = $id;
+ $stmt = $pdo->prepare($sql);
+ $stmt->execute($params);
+ } else {
+ // INSERT: The advisor is the user creating the order.
+ $params['asesor_id'] = $_SESSION['user_id'];
+ $params['estado'] = $_POST['estado'] ?? 'RUTA_CONTRAENTREGA';
+
+ $columns_sql = "dni_cliente, nombre_completo, celular, agencia, sede_envio, direccion_exacta, referencia_domicilio, coordenadas, codigo_rastreo, codigo_tracking, producto, cantidad, monto_total, monto_adelantado, numero_operacion, banco, monto_debe, asesor_id, notas, estado, seguimiento, fecha_entrega";
+ $values_sql = ":dni_cliente, :nombre_completo, :celular, :agencia, :sede_envio, :direccion_exacta, :referencia_domicilio, :coordenadas, :codigo_rastreo, :codigo_tracking, :producto, :cantidad, :monto_total, :monto_adelantado, :numero_operacion, :banco, :monto_debe, :asesor_id, :notas, :estado, :seguimiento, :fecha_entrega";
+
+ $sql = "INSERT INTO pedidos ($columns_sql) VALUES ($values_sql)";
+ $stmt = $pdo->prepare($sql);
+ $stmt->execute($params);
}
-
- $sql = "UPDATE pedidos SET " . implode(", ", $sql_parts) . " WHERE id = :id";
-
- $params['id'] = $id;
- $stmt = $pdo->prepare($sql);
- $stmt->execute($params);
- } else {
- // INSERT: The advisor is the user creating the order.
- $params['asesor_id'] = $_SESSION['user_id'];
- $params['estado'] = $_POST['estado'] ?? 'RUTA_CONTRAENTREGA';
-
- $columns_sql = "dni_cliente, nombre_completo, celular, agencia, sede_envio, direccion_exacta, referencia_domicilio, coordenadas, codigo_rastreo, codigo_tracking, producto, cantidad, monto_total, monto_adelantado, numero_operacion, banco, monto_debe, asesor_id, notas, estado, seguimiento, fecha_entrega";
- $values_sql = ":dni_cliente, :nombre_completo, :celular, :agencia, :sede_envio, :direccion_exacta, :referencia_domicilio, :coordenadas, :codigo_rastreo, :codigo_tracking, :producto, :cantidad, :monto_total, :monto_adelantado, :numero_operacion, :banco, :monto_debe, :asesor_id, :notas, :estado, :seguimiento, :fecha_entrega";
-
- $sql = "INSERT INTO pedidos ($columns_sql) VALUES ($values_sql)";
- $stmt = $pdo->prepare($sql);
- $stmt->execute($params);
+ } catch (PDOException $e) {
+ die("Error en la base de datos: " . $e->getMessage());
}
if (isset($_POST['id']) && !empty($_POST['id'])) {