Autosave: 20260523-193336
This commit is contained in:
parent
37cd8f837c
commit
6800ed2d90
@ -292,7 +292,7 @@ h1, .h1 {
|
|||||||
z-index: 15;
|
z-index: 15;
|
||||||
background-color: #f8f9fa !important;
|
background-color: #f8f9fa !important;
|
||||||
box-shadow: inset -1px 0 0 #dee2e6;
|
box-shadow: inset -1px 0 0 #dee2e6;
|
||||||
width: 60px; /* Ancho fijo para el ID */
|
width: 35px; /* Ancho fijo para el ID */
|
||||||
}
|
}
|
||||||
.excel-container th:first-child {
|
.excel-container th:first-child {
|
||||||
z-index: 30; /* Esquina superior izquierda */
|
z-index: 30; /* Esquina superior izquierda */
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 242 KiB |
BIN
assets/uploads/vouchers/6a11ffb4deab7-Screenshot_365.png
Normal file
BIN
assets/uploads/vouchers/6a11ffb4deab7-Screenshot_365.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 233 KiB |
22
pedidos.php
22
pedidos.php
@ -13,14 +13,17 @@ function getStatusStyle($status) {
|
|||||||
|
|
||||||
switch (strtoupper(trim($status))) {
|
switch (strtoupper(trim($status))) {
|
||||||
case 'ROTULADO':
|
case 'ROTULADO':
|
||||||
|
case 'ROTULADO 📦':
|
||||||
$bgColor = '#ffc107'; // yellow
|
$bgColor = '#ffc107'; // yellow
|
||||||
$style = 'color: black;';
|
$style = 'color: black;';
|
||||||
break;
|
break;
|
||||||
case 'EN TRANSITO':
|
case 'EN TRANSITO':
|
||||||
|
case 'EN TRANSITO 🚛':
|
||||||
$bgColor = '#90EE90'; // light green
|
$bgColor = '#90EE90'; // light green
|
||||||
$style = 'color: black;';
|
$style = 'color: black;';
|
||||||
break;
|
break;
|
||||||
case 'EN DESTINO':
|
case 'EN DESTINO':
|
||||||
|
case 'EN DESTINO 🏬':
|
||||||
$bgColor = '#800080'; // purple
|
$bgColor = '#800080'; // purple
|
||||||
break;
|
break;
|
||||||
case 'COMPLETADO':
|
case 'COMPLETADO':
|
||||||
@ -30,6 +33,25 @@ function getStatusStyle($status) {
|
|||||||
case 'GESTION':
|
case 'GESTION':
|
||||||
$bgColor = '#6c757d'; // secondary grey
|
$bgColor = '#6c757d'; // secondary grey
|
||||||
break;
|
break;
|
||||||
|
case 'RUTA_CONTRAENTREGA':
|
||||||
|
$bgColor = '#007bff'; // primary blue
|
||||||
|
break;
|
||||||
|
case 'ENTREGA EXITOSA':
|
||||||
|
$bgColor = '#198754'; // dark green
|
||||||
|
break;
|
||||||
|
case 'RETORNADO':
|
||||||
|
$bgColor = '#dc3545'; // red
|
||||||
|
break;
|
||||||
|
case 'NO CONTESTO, DEVOLVER LLAMADA':
|
||||||
|
case 'NO CONTESTO, VOLVER A LLAMAR':
|
||||||
|
$bgColor = '#fd7e14'; // orange
|
||||||
|
break;
|
||||||
|
case 'CANCELADO':
|
||||||
|
$bgColor = '#6c757d'; // grey
|
||||||
|
break;
|
||||||
|
case 'REPROGRAMADO':
|
||||||
|
$bgColor = '#6f42c1'; // indigo/purple
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return "background-color: {$bgColor} !important; {$style}";
|
return "background-color: {$bgColor} !important; {$style}";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -266,12 +266,26 @@ include 'layout_header.php';
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
<div class="col-md-4 mb-3">
|
||||||
|
<label for="tipo_paquete" class="form-label">Paquete</label>
|
||||||
|
<select class="form-select" id="tipo_paquete" name="tipo_paquete">
|
||||||
|
<option value="">Seleccionar</option>
|
||||||
|
<?php
|
||||||
|
$current_paquete = $pedido['tipo_paquete'] ?? '';
|
||||||
|
$paquetes = ['RUTA', 'ANULADO', 'PENDIENTE A RETORNO', 'RETORNADO'];
|
||||||
|
foreach ($paquetes as $paquete) {
|
||||||
|
$selected = ($current_paquete == $paquete) ? 'selected' : '';
|
||||||
|
echo "<option value='{$paquete}' {$selected}>" . htmlspecialchars($paquete) . "</option>";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
<div class="col-md-4 mb-3">
|
<div class="col-md-4 mb-3">
|
||||||
<label for="estado" class="form-label">Estado del Pedido</label>
|
<label for="estado" class="form-label">Estado del Pedido</label>
|
||||||
<select class="form-select" id="estado" name="estado" required>
|
<select class="form-select" id="estado" name="estado" required>
|
||||||
<?php
|
<?php
|
||||||
$current_status = $pedido['estado'] ?? 'RUTA_CONTRAENTREGA';
|
$current_status = $pedido['estado'] ?? 'RUTA_CONTRAENTREGA';
|
||||||
$statuses = ['RUTA_CONTRAENTREGA', 'ENTREGA EXITOSA', 'RETORNADO'];
|
$statuses = ['RUTA_CONTRAENTREGA', 'NO CONTESTO, VOLVER A LLAMAR', 'CANCELADO', 'REPROGRAMADO', 'ENTREGA EXITOSA'];
|
||||||
foreach ($statuses as $status) {
|
foreach ($statuses as $status) {
|
||||||
$selected = ($current_status == $status) ? 'selected' : '';
|
$selected = ($current_status == $status) ? 'selected' : '';
|
||||||
echo "<option value='{$status}' {$selected}>" . htmlspecialchars($status) . "</option>";
|
echo "<option value='{$status}' {$selected}>" . htmlspecialchars($status) . "</option>";
|
||||||
|
|||||||
@ -39,6 +39,16 @@ function getStatusStyle($status) {
|
|||||||
case 'RETORNADO':
|
case 'RETORNADO':
|
||||||
$bgColor = '#dc3545'; // red
|
$bgColor = '#dc3545'; // red
|
||||||
break;
|
break;
|
||||||
|
case 'NO CONTESTO, DEVOLVER LLAMADA':
|
||||||
|
case 'NO CONTESTO, VOLVER A LLAMAR':
|
||||||
|
$bgColor = '#fd7e14'; // orange
|
||||||
|
break;
|
||||||
|
case 'CANCELADO':
|
||||||
|
$bgColor = '#6c757d'; // grey
|
||||||
|
break;
|
||||||
|
case 'REPROGRAMADO':
|
||||||
|
$bgColor = '#6f42c1'; // indigo/purple
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return "background-color: {$bgColor} !important; {$style}";
|
return "background-color: {$bgColor} !important; {$style}";
|
||||||
}
|
}
|
||||||
@ -49,6 +59,8 @@ function getPaqueteStyle($paquete) {
|
|||||||
if ($paquete === 'NO CONTESTA, VOLVER A LLAMAR') return 'background-color: #fd7e14; color: white;'; // Orange
|
if ($paquete === 'NO CONTESTA, VOLVER A LLAMAR') return 'background-color: #fd7e14; color: white;'; // Orange
|
||||||
if ($paquete === 'PENDIENTE A RETORNO') return 'background-color: #dc3545; color: white;'; // Red
|
if ($paquete === 'PENDIENTE A RETORNO') return 'background-color: #dc3545; color: white;'; // Red
|
||||||
if ($paquete === 'COMPLETADO') return 'background-color: #198754; color: white;'; // Success green
|
if ($paquete === 'COMPLETADO') return 'background-color: #198754; color: white;'; // Success green
|
||||||
|
if ($paquete === 'RETORNADO') return 'background-color: #6c757d; color: white;'; // Grey
|
||||||
|
if ($paquete === 'ANULADO') return 'background-color: #212529; color: white;'; // Dark
|
||||||
return 'background-color: #6c757d; color: white;'; // Secondary grey
|
return 'background-color: #6c757d; color: white;'; // Secondary grey
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,7 +97,7 @@ $selected_month = $_GET['mes'] ?? '';
|
|||||||
$selected_year = $_GET['año'] ?? '';
|
$selected_year = $_GET['año'] ?? '';
|
||||||
$search_query = $_GET['q'] ?? '';
|
$search_query = $_GET['q'] ?? '';
|
||||||
|
|
||||||
$sql = "SELECT p.*, u.nombre_asesor as asesor_nombre FROM pedidos p LEFT JOIN users u ON p.asesor_id = u.id WHERE p.estado IN ('RUTA_CONTRAENTREGA', 'ENTREGA EXITOSA', 'RETORNADO')";
|
$sql = "SELECT p.*, u.nombre_asesor as asesor_nombre FROM pedidos p LEFT JOIN users u ON p.asesor_id = u.id WHERE p.estado IN ('RUTA_CONTRAENTREGA', 'NO CONTESTO, VOLVER A LLAMAR', 'CANCELADO', 'REPROGRAMADO', 'ENTREGA EXITOSA')";
|
||||||
$params = [];
|
$params = [];
|
||||||
|
|
||||||
if ($user_role === 'Asesor') {
|
if ($user_role === 'Asesor') {
|
||||||
@ -184,10 +196,10 @@ include 'layout_header.php';
|
|||||||
<table id="pedidos-table" class="table table-striped table-hover">
|
<table id="pedidos-table" class="table table-striped table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th style="width: 60px;">ID</th>
|
<th style="width: 35px;">ID</th>
|
||||||
<th style="width: 120px;">Seguimiento</th>
|
<th style="width: 120px;">Seguimiento</th>
|
||||||
<th style="width: 130px;">Paquete</th>
|
<th style="width: 130px;">Paquete</th>
|
||||||
<th style="width: 150px;">Estado</th>
|
<th style="width: 180px;">Estado</th>
|
||||||
<th style="width: 180px;">Cliente</th>
|
<th style="width: 180px;">Cliente</th>
|
||||||
|
|
||||||
<th style="width: 120px;">Celular</th>
|
<th style="width: 120px;">Celular</th>
|
||||||
@ -296,10 +308,9 @@ include 'layout_header.php';
|
|||||||
<script>
|
<script>
|
||||||
function getPaqueteStyleJS(paquete) {
|
function getPaqueteStyleJS(paquete) {
|
||||||
if (paquete === 'RUTA') return 'background-color: #0dcaf0; color: black;';
|
if (paquete === 'RUTA') return 'background-color: #0dcaf0; color: black;';
|
||||||
if (paquete === 'CONTRAENTREGA') return 'background-color: #ffc107; color: black;';
|
if (paquete === 'ANULADO') return 'background-color: #212529; color: white;';
|
||||||
if (paquete === 'NO CONTESTA, VOLVER A LLAMAR') return 'background-color: #fd7e14; color: white;';
|
|
||||||
if (paquete === 'PENDIENTE A RETORNO') return 'background-color: #dc3545; color: white;';
|
if (paquete === 'PENDIENTE A RETORNO') return 'background-color: #dc3545; color: white;';
|
||||||
if (paquete === 'COMPLETADO') return 'background-color: #198754; color: white;';
|
if (paquete === 'RETORNADO') return 'background-color: #6c757d; color: white;';
|
||||||
return 'background-color: #6c757d; color: white;';
|
return 'background-color: #6c757d; color: white;';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -308,33 +319,23 @@ function getStatusStyleJS(status) {
|
|||||||
let style = 'color: white;';
|
let style = 'color: white;';
|
||||||
|
|
||||||
switch (status.toUpperCase().trim()) {
|
switch (status.toUpperCase().trim()) {
|
||||||
case 'ROTULADO':
|
|
||||||
bgColor = '#ffc107';
|
|
||||||
style = 'color: black;';
|
|
||||||
break;
|
|
||||||
case 'EN TRANSITO':
|
|
||||||
bgColor = '#90EE90';
|
|
||||||
style = 'color: black;';
|
|
||||||
break;
|
|
||||||
case 'EN DESTINO':
|
|
||||||
bgColor = '#800080';
|
|
||||||
break;
|
|
||||||
case 'COMPLETADO':
|
|
||||||
case 'COMPLETADO ✅':
|
|
||||||
bgColor = '#198754';
|
|
||||||
break;
|
|
||||||
case 'GESTION':
|
|
||||||
bgColor = '#6c757d';
|
|
||||||
break;
|
|
||||||
case 'RUTA_CONTRAENTREGA':
|
case 'RUTA_CONTRAENTREGA':
|
||||||
bgColor = '#007bff';
|
bgColor = '#007bff';
|
||||||
break;
|
break;
|
||||||
|
case 'NO CONTESTO, VOLVER A LLAMAR':
|
||||||
|
bgColor = '#fd7e14';
|
||||||
|
break;
|
||||||
|
case 'CANCELADO':
|
||||||
|
bgColor = '#6c757d';
|
||||||
|
break;
|
||||||
|
case 'REPROGRAMADO':
|
||||||
|
bgColor = '#6f42c1';
|
||||||
|
break;
|
||||||
case 'ENTREGA EXITOSA':
|
case 'ENTREGA EXITOSA':
|
||||||
bgColor = '#198754';
|
bgColor = '#198754';
|
||||||
break;
|
break;
|
||||||
case 'RETORNADO':
|
default:
|
||||||
bgColor = '#dc3545';
|
bgColor = '#6c757d';
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return `background-color: ${bgColor} !important; ${style}`;
|
return `background-color: ${bgColor} !important; ${style}`;
|
||||||
}
|
}
|
||||||
@ -371,9 +372,9 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
const options = [
|
const options = [
|
||||||
{val: '', text: 'Seleccionar'},
|
{val: '', text: 'Seleccionar'},
|
||||||
{val: 'RUTA', text: 'RUTA'},
|
{val: 'RUTA', text: 'RUTA'},
|
||||||
{val: 'NO CONTESTA, VOLVER A LLAMAR', text: 'NO CONTESTA, VOLVER A LLAMAR'},
|
{val: 'ANULADO', text: 'ANULADO'},
|
||||||
{val: 'PENDIENTE A RETORNO', text: 'PENDIENTE A RETORNO'},
|
{val: 'PENDIENTE A RETORNO', text: 'PENDIENTE A RETORNO'},
|
||||||
{val: 'COMPLETADO', text: 'COMPLETADO'}
|
{val: 'RETORNADO', text: 'RETORNADO'}
|
||||||
];
|
];
|
||||||
|
|
||||||
options.forEach(opt => {
|
options.forEach(opt => {
|
||||||
@ -443,8 +444,10 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
|
|
||||||
const options = [
|
const options = [
|
||||||
{val: 'RUTA_CONTRAENTREGA', text: 'RUTA_CONTRAENTREGA'},
|
{val: 'RUTA_CONTRAENTREGA', text: 'RUTA_CONTRAENTREGA'},
|
||||||
{val: 'ENTREGA EXITOSA', text: 'ENTREGA EXITOSA'},
|
{val: 'NO CONTESTO, VOLVER A LLAMAR', text: 'NO CONTESTO, VOLVER A LLAMAR'},
|
||||||
{val: 'RETORNADO', text: 'RETORNADO'}
|
{val: 'CANCELADO', text: 'CANCELADO'},
|
||||||
|
{val: 'REPROGRAMADO', text: 'REPROGRAMADO'},
|
||||||
|
{val: 'ENTREGA EXITOSA', text: 'ENTREGA EXITOSA'}
|
||||||
];
|
];
|
||||||
|
|
||||||
options.forEach(opt => {
|
options.forEach(opt => {
|
||||||
|
|||||||
@ -115,6 +115,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
'notas' => $notas,
|
'notas' => $notas,
|
||||||
'seguimiento' => $seguimiento,
|
'seguimiento' => $seguimiento,
|
||||||
'fecha_entrega' => $fecha_entrega,
|
'fecha_entrega' => $fecha_entrega,
|
||||||
|
'tipo_paquete' => $_POST['tipo_paquete'] ?? null,
|
||||||
];
|
];
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -144,6 +145,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
"seguimiento = :seguimiento",
|
"seguimiento = :seguimiento",
|
||||||
"fecha_entrega = :fecha_entrega",
|
"fecha_entrega = :fecha_entrega",
|
||||||
"estado = :estado",
|
"estado = :estado",
|
||||||
|
"tipo_paquete = :tipo_paquete",
|
||||||
];
|
];
|
||||||
$params['estado'] = $_POST['estado'] ?? 'RUTA_CONTRAENTREGA';
|
$params['estado'] = $_POST['estado'] ?? 'RUTA_CONTRAENTREGA';
|
||||||
|
|
||||||
@ -163,8 +165,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$params['asesor_id'] = $_SESSION['user_id'];
|
$params['asesor_id'] = $_SESSION['user_id'];
|
||||||
$params['estado'] = $_POST['estado'] ?? 'RUTA_CONTRAENTREGA';
|
$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";
|
$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, tipo_paquete";
|
||||||
$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";
|
$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, :tipo_paquete";
|
||||||
|
|
||||||
$sql = "INSERT INTO pedidos ($columns_sql) VALUES ($values_sql)";
|
$sql = "INSERT INTO pedidos ($columns_sql) VALUES ($values_sql)";
|
||||||
$stmt = $pdo->prepare($sql);
|
$stmt = $pdo->prepare($sql);
|
||||||
|
|||||||
@ -21,7 +21,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
try {
|
try {
|
||||||
$pdo = db();
|
$pdo = db();
|
||||||
|
|
||||||
$valid_states = ['RUTA_CONTRAENTREGA', 'ENTREGA EXITOSA', 'RETORNADO'];
|
$valid_states = ['RUTA_CONTRAENTREGA', 'NO CONTESTO, VOLVER A LLAMAR', 'CANCELADO', 'REPROGRAMADO', 'ENTREGA EXITOSA', 'RETORNADO', 'NO CONTESTO, DEVOLVER LLAMADA'];
|
||||||
if (!in_array($estado, $valid_states)) {
|
if (!in_array($estado, $valid_states)) {
|
||||||
echo json_encode(['success' => false, 'message' => 'Estado inválido']);
|
echo json_encode(['success' => false, 'message' => 'Estado inválido']);
|
||||||
exit;
|
exit;
|
||||||
|
|||||||
@ -26,7 +26,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$stmt = $pdo->prepare("UPDATE pedidos SET tipo_paquete = NULL WHERE id = ?");
|
$stmt = $pdo->prepare("UPDATE pedidos SET tipo_paquete = NULL WHERE id = ?");
|
||||||
$result = $stmt->execute([$pedido_id]);
|
$result = $stmt->execute([$pedido_id]);
|
||||||
} else {
|
} else {
|
||||||
$valid_types = ['RUTA', 'CONTRAENTREGA', 'NO CONTESTA, VOLVER A LLAMAR', 'PENDIENTE A RETORNO', 'COMPLETADO'];
|
$valid_types = ['RUTA', 'ANULADO', 'PENDIENTE A RETORNO', 'RETORNADO', 'CONTRAENTREGA', 'NO CONTESTA, VOLVER A LLAMAR', 'COMPLETADO'];
|
||||||
if (!in_array($tipo_paquete, $valid_types)) {
|
if (!in_array($tipo_paquete, $valid_types)) {
|
||||||
echo json_encode(['success' => false, 'message' => 'Tipo inválido']);
|
echo json_encode(['success' => false, 'message' => 'Tipo inválido']);
|
||||||
exit;
|
exit;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user