=== Plugin Name: Sendu WooCommerce Integration === Contributors: pabloskog Tags: woocommerce, logística, integración, sendu, chile Requires at least: 5.0 Tested up to: 6.5 Stable tag: 4.5 Version: 4.5 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html == Descripción == Plugin oficial para integrar Sendu con WooCommerce. Permite la creación y gestión de órdenes logísticas directamente desde el panel de administración de WooCommerce, con soporte para generación manual y automática, validaciones y feedback visual. == Changelog == = 4.5.1 = 03-12-2025 * Fix: corrige la fache de entrega cuando es un día festivo. = 4.5 = 26-11-2025 * Mejora: Reutilización de cotizaciones en sesión cuando la comuna y el hash del carrito no cambian (reduce llamadas a la API y evita generar quotation_id innecesarios). = 4.4 = 02-10-2025 * Fix: Evita que quotation_id "se quede pegado" en la sesión mediante reset condicionado por fingerprint (city/state/postcode/peso/total), previniendo uso de cotizaciones obsoletas. * Fix: En modo de una sola tarifa (un courier) ahora se persiste correctamente el quotation_id en el pedido (antes no se guardaba al no tener sufijo 'sendu:ID'). * Mejora: Logs más explícitos para detectar mismatches y flujos de tarifa única. * Mejora: Guardado robusto de metadatos (_sendu_quotation_id, _sendu_courier_id, _sendu_transit_days) sólo cuando existen datos válidos. = 4.3 = 22-09-2025 * Se ajusta el responsive el contenedor padre y todo se alinea por la derecha. * Se ajusta el ancho de los contenedores. Ahora deberá ser de 70% no de 50%. * Cuando hay una sola opción de envío ésta queda marcada por defecto. = 4.2.4 = * Fix: se corrige el JS dentro de admin-order-columns.php para extender el tiempo del spinner "generando..." hasta que aparezca el numero de OT. = 4.2.3 = * Mejora: Unificación del render de columnas "Orden Sendu" y "Comentarios Sendu" para compatibilidad legacy y nuevo listado wc-orders. * Mejora: Actualización parcial vía AJAX solo de las columnas tras crear OT (sin recargar página completa). * Mejora: Internacionalización (i18n) de textos en columnas y botones. * Limpieza: Eliminado JS/CSS embebido redundante y lógica duplicada de hooks. * Robustez: Endpoint seguro para refrescar fragmentos con nonce. = 4.2.2 = * Fix: Evita duplicidad en renderizado de columnas "Orden Sendu" y "Comentarios Sendu" en pedidos, compatible con ambos hooks de WooCommerce. = 4.2.1 = * Columna 'Comentarios Sendu' renombrada para evitar conflictos con otros plugins. * Lógica de activación de columnas robustecida para aceptar 'yes', '1' y 'on'. * Prioridad alta en el hook de columnas para máxima compatibilidad. = 4.2 = * Complemento de dirección ahora solo usa shipping_address_2 (WooCommerce nativo). * Eliminada toda lógica y configuración de campo complemento personalizado. * Validación de email y teléfono mejorada: prioridad shipping_phone, luego billing_phone, luego valor por defecto. * Logs de payload y respuesta API en una sola línea para mejor visualización. * Corrección de error por uso de métodos inexistentes en WooCommerce (get_shipping_email). * Mejoras menores de robustez y limpieza de código. == Upgrade Notice == = 4.1 = Actualiza para obtener integración más robusta, sin campos personalizados de complemento, y mejor compatibilidad con WooCommerce. = 4.0 = Actualiza para obtener mejoras visuales, robustez y nuevas validaciones en la integración Sendu-WooCommerce. • Compatibilidad con diferentes formatos de tabla de WooCommerce • Debug mejorado con console.log para identificar problemas • Búsqueda por contenido como fallback final • Actualización garantizada después de crear orden manual [3.10] – 01-08-2025 - Optimización de altura para diseño más compacto: • Altura contenedores: 80px → 65px (desktop), 70px → 60px (móvil) • Logo transportista: 40px → 35px (desktop), 36px → 32px (móvil) • Padding vertical reducido: mejor aprovechamiento del espacio • Min-height etiquetas: 70px → 55px (desktop), 60px → 50px (móvil) • Mantener ancho optimizado para palabras largas [3.9] – 01-08-2025 - Ajuste de anchos para mejor presentación visual: • Ancho mínimo de contenedores: 180px (acomoda "miércoles" y "septiembre") • Fecha con white-space: nowrap para evitar cortes • Padding horizontal mejorado: 12px en contenedor principal • Responsive optimizado: 160px móviles, 140px pantallas muy pequeñas • Media query adicional para pantallas <480px con texto adaptativo [3.8] – 01-08-2025 - Diseño profesional y layout mejorado para checkout multicourier: • Layout vertical: logo centrado arriba, fecha de entrega debajo • Corrección del mapeo de courier_id según diccionario oficial • Fix Blueexpress: ID 1 = Blueexpress, ID 2 = Chilexpress • Estilos profesionales: logos 40px con sombra sutil y borde • Responsive optimizado: logos 36px en móviles • Altura de contenedores ajustada para mejor presentación [3.7] – 01-08-2025 - Integración de logos oficiales de transportistas: • Reemplazo de iconos emoji por imágenes PNG oficiales • Logos desde includes/logos/: chilexpress.png, starken.png, correos.png, etc. • Diseño limpio: solo logo + fecha de entrega (sin texto redundante) • Estilos optimizados para logos: altura 32px, fondo blanco, sombra sutil • Responsive mejorado para logos en móviles (28px altura) • Eliminada opción "otros couriers" - solo transportistas con logo oficial [3.6] – 01-08-2025 - Mejoras visuales significativas para el checkout multicourier: • Estilos modernos con bordes redondeados y efectos hover • Radio buttons personalizados con mejor UX • Iconos emoji para cada transportista (🚛 Chilexpress, 📦 Starken, etc.) • JavaScript para mejorar la interactividad y selección visual • Formato HTML mejorado con spans semánticos para courier, fecha y servicio • Responsive design optimizado para móviles • Corrección del archivo CSS que se carga en checkout [3.5] – 01-08-2025 - Nueva configuración "Habilitar creación manual desde el admin": • Opción para activar/desactivar columnas manuales de Sendu en la lista de órdenes • Por defecto viene desactivado para evitar interferir con tiendas automáticas • Se encuentra en Sendu > Configuración, bajo "Estado para creación de orden en Sendu" • Incluye validación de seguridad en endpoint AJAX [3.4] – 01-08-2025 - UI/UX profesional y sobria para columnas admin: • Columna "Comentarios" simplificada con íconos simples (✓, 🗸, ⚠, ✗) • Mensajes concisos: "Orden Creada", "Datos Correctos para crear Orden" • Errores específicos: "Comuna inválida: [nombre_comuna]", "Email del cliente inválido" • Botón "Generar Orden" inteligente: desactivado para datos críticos faltantes - Validación previa completa antes de llamadas API: • Verificación de configuración, datos cliente, dirección y productos • Respuestas rápidas sin sobrecargar API de Sendu - Captura completa de respuesta Sendu: • Almacenar _sendu_work_order_id, _sendu_courier_info, _sendu_work_order_data • Manejo de múltiples formatos de respuesta de API • Consistencia con sendu-create-order.php [3.3] – 31-07-2025 - Refactor completo del flujo de etiquetas: cambio de "Imprimir Etiqueta" a "Generar Orden" - Eliminar sendu-label-action.php y crear sendu-generate-order.php - Implementar endpoint /work_orders.json para crear órdenes en Sendu sin quotation_id - Botones unificados: ambos casos (con/sin work_order_id) muestran "Generar Orden" - Validaciones completas con notificaciones mejoradas para el usuario - Mapeo automático de comunas/regiones reutilizando lógica existente [3.2] – 18-07-2025 Se añaden campos configurables en el panel de administración para definir: - El campo de RUT (_billing_rut por defecto) - El campo de complemento de dirección (shipping_city por defecto) - Opción para activar lectura desde metadatos para cada uno - Archivos modificados: method.php: se agregan los nuevos campos en init_form_fields() sendu-create-order.php: se modifica sendu_create_order_in_sendu() para interpretar las nuevas opciones [3.1] – 17-07-2025 - Se ajusta la lógica para mostrar la fecha de entrega estimada en checkout según lo definido por el administrador Archivos modificados: method.php: ajuste en calculate_shipping() para la opción show_delivery_date [3.0] – 14-07-2025 Se implementa el modo Multicourier, permitiendo mostrar múltiples opciones de transporte al cliente Archivos modificados: method.php: se añade campo sendu_enable_multicourier en init_form_fields() y nueva lógica en calculate_shipping() para usar get_shipping_options_multicourier() - Se almacena el quotation_id en sesión - Se corrige el cálculo de los días de entrega con los días de preparación configurados. Archivos modificados: method.php: se usa WC()->session->set() y se corrige cálculo de tránsito - Se elimina bug donde la etiqueta personalizada se mostraba como opción de envío en modo multicourier Archivos modificados: method.php: en calculate_shipping(), se omite custom_label si está activo sendu_enable_multicourier [2.3] – 28-04-2025 Sanitiza el email antes de armar el POST. $customer_email en sendu_create_order.php No se pasan los pedidos que no son seleccionados Sendu. Se agrega validación en class-sendu-save-quotation.php y en el archivo sendu-create-order.php se crea una validación que Obtener método de envío y validar si es Sendu Se incluyen todos los feriados 2025 y 2026. [2.2.7] – 28-03-2025 Optimización del código mediante la incorporación de admin-menu.php. Asignación automática de document_number = order_id exclusivamente para courier_id = 4 (Starken). Refactorización en plugin-loader.php delegando la creación del menú a admin-menu.php, activado condicionalmente. [2.2.6] – 27-03-2025 Deprecada [2.2.5] – 24-03-2025 Mejora de rendimiento mediante validación previa: omite solicitudes de cotización si no se ha seleccionado comuna. [2.2.4] – 24-03-2025 Se agrega opción de desactivar el seguro embebido del courier. [2.2.3] – 24-03-2025 Eliminación de la validación de "pagado" para el traspaso de órdenes en estado "on-hold". Se incorpora texto explicativo en method.php y se modifica la validación en la función sendu_create_order_in_sendu (líneas 35-48). Eliminación de logs innecesarios. [2.2.2] – 13-03-2025 Corrección de bug en los selectores del admin (estado del pedido y checkbox de creación de orden). Asignación de document_number con valor order_id. Inclusión de detalles del producto: SKU y precio unitario. [2.2.1] – 13-03-2025 Corrección del Hook 3: eliminación de mensaje cuando no existe WO. Solución a bug que impedía almacenar el WO tras actualizar el pedido (order_save()). [2.2.0] – 13-03-2025 Incorporación de WO al Hook 3. Registro detallado en logs durante el proceso de creación de órdenes. Correcciones pendientes: número de documento, SKU del producto y variantes. Redondeo de dimensiones. [2.1.0] – 12-03-2025 Inclusión de funciones sendu_enable_order_transfer y sendu_order_creation_status en init e init_from_field del archivo method.php. Nuevo archivo sendu-create-order.php para la creación de órdenes. Inclusión del Hook 3. [2.0.0] – 31-02-2025 Almacenamiento del quotation_id en sesión de WooCommerce desde method.php. Inclusión de nuevo archivo para manejo de quotation_id y logging correspondiente. [1.5.1] – 31-02-2025 Actualización del hook wp_enqueue_scripts para activar Hook 1. Corrección de bug asociado. [1.5.0] – 31-01-2025 Inclusión de etiqueta "Gratis" cuando customer_cost === 0. Nuevo archivo custom-hooks.php con: Hook 1: actualiza método de envío al cambiar comuna. Hook 2: añade peso y dimensiones a pedidos en webhooks. [1.4.0] – 13-01-2025 Mejora en sendu_display_shipping_in_checkout(): verificación del método Sendu. Validación de peso y dimensiones en get_cost_from_api(), con valores por defecto si faltan. Formateo de fecha en español usando funciones nativas de WooCommerce/WordPress. Limitación de logs visibles a 2 días y limpieza automática de históricos mayores a 5 días. [1.3.0] – 29-12-2024 Inclusión de días de preparación. Visualización del nombre del transporte en el checkout (couriers.json). [1.2.0] – 27-12-2024 Nueva opción en el menú de ajustes para mostrar el nombre del transportista o ingresar un valor fijo. [1.1.0] – 26-12-2024 Reorganización de la estructura de carpetas y archivos para mejorar escalabilidad. Refactorización y optimización de hooks. Mejora en el sistema de logging. [1.0.0] – 24-12-2024 Inclusión de la fecha de entrega en el checkout. Registro de logs cuando no se encuentra la comuna.