Autosave: 20260528-165045
This commit is contained in:
parent
93b3a0f69d
commit
f244f447ec
@ -105,7 +105,7 @@ $navItems = [
|
|||||||
'pedidos_rotulados_list' => [
|
'pedidos_rotulados_list' => [
|
||||||
'url' => 'pedidos.php',
|
'url' => 'pedidos.php',
|
||||||
'icon' => 'fa-clipboard-list',
|
'icon' => 'fa-clipboard-list',
|
||||||
'text' => 'Ver Pedidos Rotulados',
|
'text' => 'Pedidos Rotulados',
|
||||||
'roles' => ['Administrador', 'admin', 'Asesor', 'Control Logistico', 'Logistica']
|
'roles' => ['Administrador', 'admin', 'Asesor', 'Control Logistico', 'Logistica']
|
||||||
],
|
],
|
||||||
'agregar_pedido' => [
|
'agregar_pedido' => [
|
||||||
@ -117,17 +117,24 @@ $navItems = [
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
|
||||||
'agregar_pedidos_contraentrega' => [
|
|
||||||
'url' => 'pedidos_contraentrega.php',
|
|
||||||
'icon' => 'fa-hand-holding-usd',
|
|
||||||
'text' => 'Agregar Pedidos Contraentrega',
|
|
||||||
'roles' => ['Administrador', 'admin', 'Asesor', 'Control Logistico', 'Soporte Logistico']
|
|
||||||
],
|
|
||||||
'ruta_contraentrega' => [
|
'ruta_contraentrega' => [
|
||||||
'url' => 'ruta_contraentrega.php',
|
|
||||||
'icon' => 'fa-route',
|
'icon' => 'fa-route',
|
||||||
'text' => 'Ruta Contraentrega',
|
'text' => 'Ruta Contraentrega',
|
||||||
'roles' => ['Administrador', 'admin', 'Asesor', 'Control Logistico', 'Logistica', 'Soporte Logistico']
|
'roles' => ['Administrador', 'admin', 'Asesor', 'Control Logistico', 'Logistica', 'Soporte Logistico'],
|
||||||
|
'submenu' => [
|
||||||
|
'ruta_contraentrega_list' => [
|
||||||
|
'url' => 'ruta_contraentrega.php',
|
||||||
|
'icon' => 'fa-route',
|
||||||
|
'text' => 'Ruta Contraentrega',
|
||||||
|
'roles' => ['Administrador', 'admin', 'Asesor', 'Control Logistico', 'Logistica', 'Soporte Logistico']
|
||||||
|
],
|
||||||
|
'agregar_pedidos_contraentrega' => [
|
||||||
|
'url' => 'pedidos_contraentrega.php',
|
||||||
|
'icon' => 'fa-plus-circle',
|
||||||
|
'text' => 'Agregar Pedidos Contraentrega',
|
||||||
|
'roles' => ['Administrador', 'admin']
|
||||||
|
]
|
||||||
|
]
|
||||||
],
|
],
|
||||||
'inventario_group' => [
|
'inventario_group' => [
|
||||||
'icon' => 'fa-warehouse',
|
'icon' => 'fa-warehouse',
|
||||||
|
|||||||
@ -52,7 +52,7 @@ if (isset($_GET['id'])) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Security check: Only Administradors and asesores can create new pedidos
|
// Security check: Only Administradors and asesores can create new pedidos
|
||||||
if ($user_role !== 'Administrador' && $user_role !== 'Asesor') {
|
if ($user_role !== 'Administrador' && $user_role !== 'admin' && $user_role !== 'Asesor') {
|
||||||
die('Acceso denegado. No tienes permiso para crear nuevos pedidos.');
|
die('Acceso denegado. No tienes permiso para crear nuevos pedidos.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -116,6 +116,14 @@ $pageTitle = 'Agregar Pedidos Contraentrega';
|
|||||||
include 'layout_header.php';
|
include 'layout_header.php';
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
<?php if (($_GET['embed'] ?? '') === '1'): ?>
|
||||||
|
<style>
|
||||||
|
.sidebar, .sidebar-toggle { display: none !important; }
|
||||||
|
.content { margin-left: 0 !important; width: 100% !important; padding: 16px !important; }
|
||||||
|
.content .container-fluid > h1 { display: none !important; }
|
||||||
|
</style>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
<?php if (isset($_GET['error'])):
|
<?php if (isset($_GET['error'])):
|
||||||
$error_message = htmlspecialchars($_GET['error']);
|
$error_message = htmlspecialchars($_GET['error']);
|
||||||
?>
|
?>
|
||||||
@ -129,6 +137,7 @@ include 'layout_header.php';
|
|||||||
<form action="save_pedido_contraentrega.php" method="POST" enctype="multipart/form-data">
|
<form action="save_pedido_contraentrega.php" method="POST" enctype="multipart/form-data">
|
||||||
<input type="hidden" name="id" value="<?php echo htmlspecialchars($pedido['id']); ?>">
|
<input type="hidden" name="id" value="<?php echo htmlspecialchars($pedido['id']); ?>">
|
||||||
<input type="hidden" name="referer" value="<?php echo htmlspecialchars($_SERVER['HTTP_REFERER'] ?? 'pedidos.php'); ?>">
|
<input type="hidden" name="referer" value="<?php echo htmlspecialchars($_SERVER['HTTP_REFERER'] ?? 'pedidos.php'); ?>">
|
||||||
|
<input type="hidden" name="embed" value="<?php echo (($_GET['embed'] ?? '') === '1') ? '1' : '0'; ?>">
|
||||||
|
|
||||||
<!-- Asesor ID handling -->
|
<!-- Asesor ID handling -->
|
||||||
<?php if ($user_role === 'Administrador'): ?>
|
<?php if ($user_role === 'Administrador'): ?>
|
||||||
@ -226,7 +235,8 @@ include 'layout_header.php';
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-6 mb-3">
|
<div class="col-md-6 mb-3">
|
||||||
<label for="coordenadas" class="form-label">Coordenadas</label>
|
<label for="coordenadas" class="form-label">Coordenadas</label>
|
||||||
<input type="text" class="form-control" id="coordenadas" name="coordenadas" value="<?php echo htmlspecialchars($pedido['coordenadas'] ?? ''); ?>" required>
|
<input type="text" class="form-control" id="coordenadas" name="coordenadas" value="<?php echo htmlspecialchars($pedido['coordenadas'] ?? ''); ?>" required inputmode="decimal" autocomplete="off" spellcheck="false" placeholder="-12.082029, -77.069024" pattern="-?[0-9]{1,2}\.[0-9]{6,}\s*,\s*-?[0-9]{1,3}\.[0-9]{6,}" title="Ingrese coordenadas válidas, por ejemplo: -12.082029, -77.069024">
|
||||||
|
<div class="form-text">Formato esperado: <strong>-12.082029, -77.069024</strong>. Solo números, coma, signo negativo y al menos 6 decimales por cada coordenada.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -343,6 +353,63 @@ include 'layout_header.php';
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
const pedidoForm = document.querySelector('form[action="save_pedido_contraentrega.php"]');
|
||||||
|
const coordenadasInput = document.getElementById('coordenadas');
|
||||||
|
|
||||||
|
if (!pedidoForm || !coordenadasInput) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const coordenadasRegex = /^\s*(-?\d{1,2}\.\d{6,})\s*,\s*(-?\d{1,3}\.\d{6,})\s*$/;
|
||||||
|
|
||||||
|
function validarCoordenadas() {
|
||||||
|
const value = coordenadasInput.value.trim();
|
||||||
|
|
||||||
|
if (value === '') {
|
||||||
|
coordenadasInput.setCustomValidity('Ingrese las coordenadas del pedido.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const matches = value.match(coordenadasRegex);
|
||||||
|
if (!matches) {
|
||||||
|
coordenadasInput.setCustomValidity('Use el formato -12.082029, -77.069024, solo números y mínimo 6 decimales por valor.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const latitud = parseFloat(matches[1]);
|
||||||
|
const longitud = parseFloat(matches[2]);
|
||||||
|
|
||||||
|
if (latitud < -90 || latitud > 90 || longitud < -180 || longitud > 180) {
|
||||||
|
coordenadasInput.setCustomValidity('Las coordenadas están fuera del rango permitido.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
coordenadasInput.setCustomValidity('');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
coordenadasInput.addEventListener('input', function() {
|
||||||
|
const sanitizedValue = coordenadasInput.value.replace(/[^0-9,\.\-\s]/g, '');
|
||||||
|
if (sanitizedValue !== coordenadasInput.value) {
|
||||||
|
coordenadasInput.value = sanitizedValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
validarCoordenadas();
|
||||||
|
});
|
||||||
|
|
||||||
|
coordenadasInput.addEventListener('blur', validarCoordenadas);
|
||||||
|
pedidoForm.addEventListener('submit', function(event) {
|
||||||
|
if (!validarCoordenadas()) {
|
||||||
|
event.preventDefault();
|
||||||
|
coordenadasInput.reportValidity();
|
||||||
|
coordenadasInput.focus();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
const provinciasPorDepartamento = <?php echo json_encode($provinciasPorDepartamentoContraentrega, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); ?>;
|
const provinciasPorDepartamento = <?php echo json_encode($provinciasPorDepartamentoContraentrega, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); ?>;
|
||||||
@ -566,8 +633,25 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
const urlParams = new URLSearchParams(window.location.search);
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
|
|
||||||
|
let inIframe = false;
|
||||||
|
try {
|
||||||
|
inIframe = window.self !== window.top;
|
||||||
|
} catch (e) {
|
||||||
|
inIframe = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (urlParams.has('success')) {
|
if (urlParams.has('success')) {
|
||||||
alert('SE AGREGO CORRECTAMENTE ✅');
|
if (!inIframe) {
|
||||||
|
alert('SE AGREGO CORRECTAMENTE ✅');
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
window.parent.postMessage({ type: "pedido_contraentrega_form_success" }, "*");
|
||||||
|
} catch (e) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Remove the success parameter from the URL without reloading the page
|
// Remove the success parameter from the URL without reloading the page
|
||||||
const newUrl = window.location.pathname + window.location.hash;
|
const newUrl = window.location.pathname + window.location.hash;
|
||||||
window.history.replaceState({}, document.title, newUrl);
|
window.history.replaceState({}, document.title, newUrl);
|
||||||
|
|||||||
@ -240,6 +240,11 @@ include 'layout_header.php';
|
|||||||
<div class="col-auto mt-4">
|
<div class="col-auto mt-4">
|
||||||
<button type="submit" class="btn btn-info">Filtrar</button>
|
<button type="submit" class="btn btn-info">Filtrar</button>
|
||||||
<a href="ruta_contraentrega.php" class="btn btn-secondary">Limpiar</a>
|
<a href="ruta_contraentrega.php" class="btn btn-secondary">Limpiar</a>
|
||||||
|
<?php if (in_array($user_role, ['Administrador', 'admin', 'Asesor'], true)): ?>
|
||||||
|
<button type="button" class="btn btn-primary ms-2" data-bs-toggle="modal" data-bs-target="#nuevoPedidoContraentregaModal">
|
||||||
|
AGREGAR PEDIDOS CONTRAENTREGA
|
||||||
|
</button>
|
||||||
|
<?php endif; ?>
|
||||||
<?php
|
<?php
|
||||||
$excelParams = array_filter([
|
$excelParams = array_filter([
|
||||||
'q' => $search_query,
|
'q' => $search_query,
|
||||||
@ -376,6 +381,68 @@ include 'layout_header.php';
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<?php if (in_array($user_role, ['Administrador', 'admin', 'Asesor'], true)): ?>
|
||||||
|
<div class="modal fade" id="nuevoPedidoContraentregaModal" tabindex="-1" aria-labelledby="nuevoPedidoContraentregaModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-xl modal-dialog-scrollable" style="max-width: 95vw;">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="nuevoPedidoContraentregaModalLabel">Agregar Pedidos Contraentrega</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Cerrar"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body p-0">
|
||||||
|
<iframe id="nuevoPedidoContraentregaIframe" title="Formulario de pedidos contraentrega" src="about:blank" style="width:100%; height:90vh; border:0;"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
const nuevoPedidoModalEl = document.getElementById('nuevoPedidoContraentregaModal');
|
||||||
|
if (!nuevoPedidoModalEl) return;
|
||||||
|
|
||||||
|
const nuevoPedidoIframe = document.getElementById('nuevoPedidoContraentregaIframe');
|
||||||
|
let nuevoPedidoModalReloadGuard = false;
|
||||||
|
|
||||||
|
window.addEventListener('message', function(event) {
|
||||||
|
const data = event.data;
|
||||||
|
if (!data || typeof data !== 'object') return;
|
||||||
|
if (data.type === 'pedido_contraentrega_form_success') {
|
||||||
|
if (nuevoPedidoModalReloadGuard) return;
|
||||||
|
nuevoPedidoModalReloadGuard = true;
|
||||||
|
|
||||||
|
const modalInstance = bootstrap.Modal.getInstance(nuevoPedidoModalEl) || new bootstrap.Modal(nuevoPedidoModalEl);
|
||||||
|
modalInstance.hide();
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
nuevoPedidoModalEl.addEventListener('show.bs.modal', function() {
|
||||||
|
nuevoPedidoModalReloadGuard = false;
|
||||||
|
if (nuevoPedidoIframe) {
|
||||||
|
nuevoPedidoIframe.src = 'pedidos_contraentrega.php?embed=1&t=' + Date.now();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (nuevoPedidoIframe) {
|
||||||
|
nuevoPedidoIframe.addEventListener('load', function() {
|
||||||
|
if (nuevoPedidoModalReloadGuard) return;
|
||||||
|
|
||||||
|
const src = nuevoPedidoIframe.src || '';
|
||||||
|
if (src.includes('success=1')) {
|
||||||
|
nuevoPedidoModalReloadGuard = true;
|
||||||
|
const modalInstance = bootstrap.Modal.getInstance(nuevoPedidoModalEl) || new bootstrap.Modal(nuevoPedidoModalEl);
|
||||||
|
modalInstance.hide();
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
<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;';
|
||||||
|
|||||||
@ -12,10 +12,43 @@ if (!isset($_SESSION['user_id'])) {
|
|||||||
require_once 'db/config.php';
|
require_once 'db/config.php';
|
||||||
require_once __DIR__ . '/includes/contraentrega_cobertura.php';
|
require_once __DIR__ . '/includes/contraentrega_cobertura.php';
|
||||||
|
|
||||||
|
function redirectPedidoContraentregaWithError(string $message, $id = null, bool $embed = false): void
|
||||||
|
{
|
||||||
|
$params = ['error' => $message];
|
||||||
|
|
||||||
|
if (!empty($id)) {
|
||||||
|
$params['id'] = $id;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($embed) {
|
||||||
|
$params['embed'] = '1';
|
||||||
|
}
|
||||||
|
|
||||||
|
header('Location: pedidos_contraentrega.php?' . http_build_query($params));
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
function normalizeContraentregaCoordinates(string $value): ?string
|
||||||
|
{
|
||||||
|
if (!preg_match('/^\s*(-?\d{1,2}\.\d{6,})\s*,\s*(-?\d{1,3}\.\d{6,})\s*$/', $value, $matches)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$latitud = (float) $matches[1];
|
||||||
|
$longitud = (float) $matches[2];
|
||||||
|
|
||||||
|
if ($latitud < -90 || $latitud > 90 || $longitud < -180 || $longitud > 180) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $matches[1] . ', ' . $matches[2];
|
||||||
|
}
|
||||||
|
|
||||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
$pdo = db();
|
$pdo = db();
|
||||||
|
|
||||||
$id = $_POST['id'] ?? null;
|
$id = $_POST['id'] ?? null;
|
||||||
|
$embed_mode = !empty($_POST['embed']) && $_POST['embed'] === '1';
|
||||||
|
|
||||||
$dni = trim($_POST['dni'] ?? '');
|
$dni = trim($_POST['dni'] ?? '');
|
||||||
$nombre_completo = trim($_POST['nombre_completo'] ?? '');
|
$nombre_completo = trim($_POST['nombre_completo'] ?? '');
|
||||||
@ -76,10 +109,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
}
|
}
|
||||||
$tipos_paquete_validos = ['RUTA', 'CONTRAENTREGA', 'NO CONTESTA, VOLVER A LLAMAR', 'PENDIENTE A RETORNO', 'COMPLETADO', 'RETORNADO', 'ANULADO'];
|
$tipos_paquete_validos = ['RUTA', 'CONTRAENTREGA', 'NO CONTESTA, VOLVER A LLAMAR', 'PENDIENTE A RETORNO', 'COMPLETADO', 'RETORNADO', 'ANULADO'];
|
||||||
if ($tipo_paquete !== null && !in_array($tipo_paquete, $tipos_paquete_validos, true)) {
|
if ($tipo_paquete !== null && !in_array($tipo_paquete, $tipos_paquete_validos, true)) {
|
||||||
$error_message = urlencode('El paquete seleccionado no es válido. Seleccione una opción de la lista.');
|
redirectPedidoContraentregaWithError('El paquete seleccionado no es válido. Seleccione una opción de la lista.', $id, $embed_mode);
|
||||||
$id_param = $id ? '&id=' . $id : '';
|
|
||||||
header('Location: pedidos_contraentrega.php?error=' . $error_message . $id_param);
|
|
||||||
exit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($productos_detalle)) {
|
if (!empty($productos_detalle)) {
|
||||||
@ -87,39 +117,30 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!in_array($sede_envio, $departamentosContraentrega, true)) {
|
if (!in_array($sede_envio, $departamentosContraentrega, true)) {
|
||||||
$error_message = urlencode('Seleccione un departamento válido para el pedido contra entrega.');
|
redirectPedidoContraentregaWithError('Seleccione un departamento válido para el pedido contra entrega.', $id, $embed_mode);
|
||||||
$id_param = $id ? '&id=' . $id : '';
|
|
||||||
header('Location: pedidos_contraentrega.php?error=' . $error_message . $id_param);
|
|
||||||
exit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($provincia !== '' && !in_array($provincia, $provinciasPorDepartamentoContraentrega[$sede_envio] ?? [], true)) {
|
if ($provincia !== '' && !in_array($provincia, $provinciasPorDepartamentoContraentrega[$sede_envio] ?? [], true)) {
|
||||||
$error_message = urlencode('Seleccione una provincia válida para el departamento elegido.');
|
redirectPedidoContraentregaWithError('Seleccione una provincia válida para el departamento elegido.', $id, $embed_mode);
|
||||||
$id_param = $id ? '&id=' . $id : '';
|
|
||||||
header('Location: pedidos_contraentrega.php?error=' . $error_message . $id_param);
|
|
||||||
exit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($distrito !== '' && isset($distritosPorProvinciaContraentrega[$provincia]) && !in_array($distrito, $distritosPorProvinciaContraentrega[$provincia], true)) {
|
if ($distrito !== '' && isset($distritosPorProvinciaContraentrega[$provincia]) && !in_array($distrito, $distritosPorProvinciaContraentrega[$provincia], true)) {
|
||||||
$error_message = urlencode('Seleccione un distrito válido para la provincia elegida.');
|
redirectPedidoContraentregaWithError('Seleccione un distrito válido para la provincia elegida.', $id, $embed_mode);
|
||||||
$id_param = $id ? '&id=' . $id : '';
|
|
||||||
header('Location: pedidos_contraentrega.php?error=' . $error_message . $id_param);
|
|
||||||
exit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($nombre_completo) || empty($celular) || empty($sede_envio) || empty($provincia) || empty($distrito) || empty($producto) || $cantidad === false || $monto_total === false || empty($coordenadas)) {
|
if (empty($nombre_completo) || empty($celular) || empty($sede_envio) || empty($provincia) || empty($distrito) || empty($producto) || $cantidad === false || $monto_total === false || empty($coordenadas)) {
|
||||||
$error_message = urlencode('Por favor, complete todos los campos obligatorios: departamento, provincia, distrito y coordenadas.');
|
redirectPedidoContraentregaWithError('Por favor, complete todos los campos obligatorios: departamento, provincia, distrito y coordenadas.', $id, $embed_mode);
|
||||||
$id_param = $id ? '&id=' . $id : '';
|
|
||||||
header('Location: pedidos_contraentrega.php?error=' . $error_message . $id_param);
|
|
||||||
exit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$coordenadasNormalizadas = normalizeContraentregaCoordinates($coordenadas);
|
||||||
|
if ($coordenadasNormalizadas === null) {
|
||||||
|
redirectPedidoContraentregaWithError('Ingrese coordenadas válidas con el formato -12.082029, -77.069024. No se aceptan letras ni coordenadas con pocos decimales.', $id, $embed_mode);
|
||||||
|
}
|
||||||
|
$coordenadas = $coordenadasNormalizadas;
|
||||||
|
|
||||||
// Check for minimum length of operation number
|
// Check for minimum length of operation number
|
||||||
if (!empty($numero_operacion) && strlen($numero_operacion) < 6) {
|
if (!empty($numero_operacion) && strlen($numero_operacion) < 6) {
|
||||||
$error_message = urlencode("El número de operación debe tener al menos 6 dígitos.");
|
redirectPedidoContraentregaWithError('El número de operación debe tener al menos 6 dígitos.', $id, $embed_mode);
|
||||||
$id_param = $id ? '&id=' . $id : '';
|
|
||||||
header('Location: pedidos_contraentrega.php?error=' . $error_message . $id_param);
|
|
||||||
exit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for duplicate operation number
|
// Check for duplicate operation number
|
||||||
@ -129,10 +150,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$check_stmt->execute([$numero_operacion, $id ?? 0]);
|
$check_stmt->execute([$numero_operacion, $id ?? 0]);
|
||||||
$duplicate = $check_stmt->fetch();
|
$duplicate = $check_stmt->fetch();
|
||||||
if ($duplicate) {
|
if ($duplicate) {
|
||||||
$error_message = urlencode("El número de operación ya existe en el pedido #" . $duplicate['id']);
|
redirectPedidoContraentregaWithError('El número de operación ya existe en el pedido #' . $duplicate['id'], $id, $embed_mode);
|
||||||
$id_param = $id ? '&id=' . $id : '';
|
|
||||||
header('Location: pedidos_contraentrega.php?error=' . $error_message . $id_param);
|
|
||||||
exit;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -226,6 +244,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
} else {
|
} else {
|
||||||
// Si se está creando un nuevo pedido, redirigir al formulario con un mensaje de éxito.
|
// Si se está creando un nuevo pedido, redirigir al formulario con un mensaje de éxito.
|
||||||
$redirect_url = 'pedidos_contraentrega.php?success=1';
|
$redirect_url = 'pedidos_contraentrega.php?success=1';
|
||||||
|
if (!empty($_POST['embed']) && $_POST['embed'] === '1') {
|
||||||
|
$redirect_url .= '&embed=1';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
header('Location: ' . $redirect_url);
|
header('Location: ' . $redirect_url);
|
||||||
exit;
|
exit;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user