rodrigohax

Fecha Envio v2 - Liquid

Jul 28th, 2025
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 2.78 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="es">
  3. <head>
  4.   <meta charset="UTF-8">
  5.   <title>Entrega dinámica por región</title>
  6.   <style>
  7.     .custom-text {
  8.       font-family: Arial, sans-serif;
  9.       font-size: 16px;
  10.     }
  11.     .date-color {
  12.       color: #2e7d32;
  13.     }
  14.     .region-name {
  15.       font-weight: bold;
  16.     }
  17.   </style>
  18. </head>
  19. <body>
  20.  
  21.   <p class="custom-text">
  22.     <strong>🇨🇱 Compra Ahora y Recibe entre el</strong><br>
  23.  
  24.     <!-- Opción de Santiago -->
  25.     <span id="entregaSantiago" style="display:none;"></span>
  26.  
  27.     <!-- Opción de Regiones (Aquí se mostrará la región específica del usuario) -->
  28.     <span id="entregaRegiones" style="display:none;"></span>
  29.   </p>
  30.  
  31.   <script>
  32.     document.addEventListener('DOMContentLoaded', function () {
  33.       fetch('https://ipapi.co/json/')
  34.         .then(response => response.json())
  35.         .then(data => {
  36.           const region = data.region;
  37.           ajustarTiemposDeEntrega(region);
  38.         })
  39.         .catch(err => {
  40.           console.log('Error al obtener la ubicación:', err);
  41.         });
  42.     });
  43.  
  44.     function esFinDeSemana(fecha) {
  45.       const dia = new Date(fecha).getDay();
  46.       return dia === 6 || dia === 0;
  47.     }
  48.  
  49.     function sumarDiasHabiles(fecha, dias) {
  50.       let count = 0;
  51.       let resultado = new Date(fecha);
  52.  
  53.       while (count < dias) {
  54.        resultado.setDate(resultado.getDate() + 1);
  55.        if (!esFinDeSemana(resultado)) {
  56.          count++;
  57.        }
  58.      }
  59.  
  60.      return resultado;
  61.    }
  62.  
  63.    function formatearRango(fechaInicio, fechaFin) {
  64.      const diaInicio = new Date(fechaInicio).getDate();
  65.      const diaFin = new Date(fechaFin).getDate();
  66.      const mesFin = new Intl.DateTimeFormat('es-ES', { month: 'long' }).format(fechaFin);
  67.      return `${diaInicio} a ${diaFin} de ${mesFin}`;
  68.    }
  69.  
  70.    function ajustarTiemposDeEntrega(region) {
  71.      const fechaActual = new Date();
  72.      const unDiaHabil = sumarDiasHabiles(fechaActual, 1);
  73.      const tresDiasHabiles = sumarDiasHabiles(fechaActual, 3);
  74.      const seisDiasHabiles = sumarDiasHabiles(fechaActual, 6);
  75.  
  76.      if (region === 'Región Metropolitana de Santiago' || region === 'Santiago Metropolitan') {
  77.        const el = document.getElementById('entregaSantiago');
  78.        el.style.display = 'inline';
  79.        el.innerHTML = `<span class="date-color"><strong>${formatearRango(unDiaHabil, tresDiasHabiles)}</strong></span> para Santiago/Región Metropolitana`;
  80.       } else {
  81.         const el = document.getElementById('entregaRegiones');
  82.         el.style.display = 'inline';
  83.         el.innerHTML = `<span class="date-color"><strong>${formatearRango(tresDiasHabiles, seisDiasHabiles)}</strong></span> para <strong class="region-name">${region}</strong>`;
  84.       }
  85.     }
  86.   </script>
  87.  
  88. </body>
  89. </html>
Advertisement
Add Comment
Please, Sign In to add comment