Commerce Shipping
Proporciona funcionalidad básica de envío para Drupal Commerce, incluyendo gestión de envíos, cálculo de tarifas y configuración de métodos de envío.
commerce_shipping
Install
composer require 'drupal/commerce_shipping:8.x-2.15'
Overview
Commerce Shipping es el módulo de envío oficial para Drupal Commerce que proporciona funcionalidad integral de envío para tiendas de comercio electrónico. Permite a los propietarios de tiendas definir métodos de envío, calcular tarifas de envío y gestionar envíos a lo largo del proceso de cumplimiento de pedidos.
El módulo introduce cuatro tipos principales de Entity: Shipments (Entity de contenido que rastrea los artículos enviados y su estado), Shipping Methods (Entity de contenido que define cómo se calculan las tarifas de envío), Shipment Types (configuración de bundle para envíos) y Package Types (Entity de configuración que define las dimensiones y peso de las cajas).
Commerce Shipping se integra perfectamente con el flujo de checkout de Commerce a través de un panel de checkout dedicado que recopila direcciones de envío y muestra las tarifas de envío disponibles. Soporta múltiples envíos por pedido, permitiendo que los artículos se dividan en diferentes paquetes o se envíen a diferentes direcciones.
El módulo proporciona una arquitectura extensible para métodos de envío, permitiendo integraciones de terceros con transportistas como UPS, FedEx y USPS. Los métodos de envío integrados incluyen Flat Rate y Flat Rate Per Item para cálculos simples de costos de envío.
Features
- Gestión de Entity Shipment con estados de workflow (Draft, Ready, Shipped, Canceled)
- Múltiples métodos de envío con aplicabilidad basada en condiciones
- Plugins de métodos de envío Flat Rate y Flat Rate Per Item incluidos
- Configuración de Package Type para definir dimensiones y peso de cajas
- Panel de checkout para recopilación de direcciones de envío y selección de tarifas
- Cálculo automático de tarifas de envío y recálculo ante cambios de dirección
- Correos electrónicos de confirmación de envío con información de seguimiento
- Integración con Commerce Promotions para descuentos de envío (monto fijo de descuento, porcentaje de descuento)
- Integración con Commerce Tax para cálculo de impuestos de envío con múltiples estrategias
- Soporte para múltiples envíos por pedido
- Traits de variación de producto para productos enviables (peso y dimensiones)
- Sistema Packer para organizar artículos del pedido en envíos
- Sistema completo de eventos de ciclo de vida para personalización
- Integración con Views para administración de envíos
- Protección de acceso a Field de JSON API para datos sensibles de envío
Use Cases
Envío con Tarifa Plana Simple
Configure un único método de envío con tarifa plana para todos los pedidos. Cree un método de envío con el plugin 'Flat rate', establezca un monto de tarifa fija (por ejemplo, $5.00) y habilítelo para sus tiendas. Todos los pedidos con productos enviables mostrarán esta tarifa en el proceso de pago.
Envío Gratuito por Encima de un Umbral
Ofrezca envío gratuito para pedidos que superen cierto monto. Cree dos métodos de envío: uno con tarifa plana y condiciones que lo restrinjan a pedidos por debajo del umbral, y otro con monto de $0 y condiciones para pedidos iguales o superiores al umbral.
Niveles de Envío Basados en Peso
Cobre tarifas diferentes según el peso del envío. Cree múltiples métodos de envío con condiciones shipment_weight usando operadores de rango. Por ejemplo: $5 para 0-1kg, $10 para 1-5kg, $20 para 5-10kg.
Tarifas de Envío Regionales
Cobre tarifas diferentes por región geográfica. Cree métodos de envío con condiciones shipment_address usando zonas de dirección. Configure zonas para envío doméstico, regional e internacional con las tarifas apropiadas.
Envío por Artículo para Productos Pesados
Cobre envío por artículo para productos que no pueden combinarse. Use el plugin de método de envío 'Flat rate per item'. Establezca una tarifa por unidad que se multiplique por la cantidad total.
Múltiples Envíos para Pedidos Divididos
Gestione pedidos que requieren múltiples envíos a diferentes direcciones o con diferentes fuentes de cumplimiento. El sistema packer crea automáticamente envíos separados según la configuración, y el proceso de pago muestra la selección de tarifa para cada envío.
Cálculo de Impuestos de Envío
Aplique impuestos a los costos de envío según el destino. Cree un tipo de impuesto 'Shipping' y seleccione una estrategia: 'proportional' aplica la tasa de impuesto de cada artículo al envío proporcionalmente, 'highest' usa la tasa más alta encontrada en el pedido.
Promociones de Envío
Ejecute promociones de envío como códigos de envío gratuito o envío con descuento. Cree promociones con ofertas 'Fixed amount off the shipment amount' o 'Percentage off the shipment amount'. Opcionalmente, restrinja a métodos de envío específicos.
Integración de Seguimiento de Envíos
Proporcione información de seguimiento a los clientes. Al enviar un envío, ingrese el código de seguimiento. Si su plugin de método de envío admite URLs de seguimiento (común con integraciones de transportistas como los módulos UPS/FedEx), los clientes verán enlaces de seguimiento clicables.
Lógica de Empaquetado Personalizada
Implemente lógica personalizada para organizar artículos en envíos. Cree un servicio packer personalizado implementando PackerInterface, etiquételo con 'commerce_shipping.packer' y establezca la prioridad. Su packer puede agrupar artículos por vendedor, límites de peso u otros criterios.
Tips
- Habilite el trait 'Shippable' en los tipos de variación de producto antes de agregar productos, ya que las variaciones existentes no obtendrán automáticamente valores de peso.
- Use zonas de dirección en las condiciones del método de envío para variaciones de tarifa basadas en geografía en lugar de crear muchas condiciones individuales.
- La función de recálculo automático del panel de pago proporciona la mejor experiencia de usuario pero aumenta la carga del servidor. Deshabilítela para sitios de alto tráfico si es necesario.
- Configure múltiples tipos de paquete si tiene diferentes tamaños de caja. El formulario de envío mostrará un selector de tipo de paquete cuando existan múltiples opciones.
- El BCC de confirmación de envío es útil para notificaciones al equipo de cumplimiento sin requerir código personalizado.
- La estrategia de impuestos 'proportional' es la más precisa para pedidos con tasas de impuesto mixtas pero requiere configuración de Commerce Tax.
- Los plugins de método de envío personalizados pueden implementar getTrackingUrl() para proporcionar enlaces de seguimiento del transportista.
- Use el evento SHIPPING_RATES para modificar las tarifas calculadas, como agregar tarifas de manejo o aplicar descuentos dinámicos.
Technical Details
Admin Pages 9
/admin/commerce/config/shipping
Página principal de configuración de envíos que proporciona acceso a toda la configuración relacionada con envíos, incluyendo métodos de envío, tipos de envío y tipos de paquete.
/admin/commerce/shipping-methods
Lista y gestiona todos los métodos de envío. Los métodos de envío definen cómo se calculan las tarifas de envío y a qué tiendas se aplican. Los métodos pueden tener condiciones que controlan su disponibilidad según las propiedades del pedido o del envío.
/admin/commerce/shipping-methods/add
Formulario para crear un nuevo método de envío con selección de plugin, asignación de tienda y configuración de condiciones.
/admin/commerce/config/shipment-types
Gestionar los paquetes de tipos de envío. Cada tipo de envío puede tener diferentes tipos de perfil y configuraciones de correo electrónico de confirmación.
/admin/commerce/config/shipment-types/add
Formulario para crear un nuevo tipo de envío con selección de tipo de perfil y configuración de correo electrónico de confirmación.
/admin/commerce/config/package-types
Definir tipos de paquete/caja reutilizables con dimensiones y peso específicos. Los tipos de paquete se utilizan durante la creación del envío para calcular el peso total del envío.
/admin/commerce/config/package-types/add
Formulario para definir un nuevo tipo de paquete con dimensiones y peso vacío.
/admin/commerce/orders/{commerce_order}/shipments
Ver y gestionar los envíos de un pedido específico. Muestra todos los envíos con sus artículos, estado y permite transiciones de estado.
/admin/commerce/orders/{commerce_order}/shipments/add/{commerce_shipment_type}
Formulario para crear un nuevo envío dentro de un pedido, seleccionando artículos, tipo de paquete, método de envío e ingresando información de seguimiento.
Permissions 4
Hooks 2
hook_commerce_shipping_methods_alter
Modificar los métodos de envío cargados para el cálculo de tarifas
commerce_shipping.filter_shipping_methods event
Alternativa basada en eventos al hook para filtrar métodos de envío
Troubleshooting 6
Verifique: 1) El tipo de pedido tiene el envío habilitado y un tipo de envío seleccionado, 2) Las variaciones de producto tienen el trait 'Shippable' habilitado y valores de peso establecidos, 3) Al menos un método de envío existe y está habilitado, 4) El flujo de pago incluye el panel 'Shipping information', 5) Las condiciones del método de envío (si las hay) coinciden con el pedido.
Habilite 'Auto recalculate shipping costs when the shipping address changes' en la configuración del panel de pago Shipping information. También asegúrese de que 'Hide shipping costs until an address is entered' esté habilitado para que esto funcione.
Edite el tipo de envío y habilite 'Send customer an email confirmation when shipped'. Los correos se envían cuando los envíos transicionan al estado 'Shipped' a través de la transición ship.
Los tipos de envío no pueden eliminarse mientras existan envíos de ese tipo. Elimine primero todos los envíos asociados, o reasígnelos a un tipo de envío diferente.
Verifique la configuración del operador de condición (AND vs OR). Con AND, todas las condiciones deben cumplirse. Verifique que los valores de configuración de las condiciones coincidan con los datos reales del pedido/envío. Use depuración para inspeccionar la evaluación de condiciones.
El peso del envío incluye tanto los pesos de los artículos como el peso vacío del tipo de paquete. Verifique que los pesos de las variaciones de producto estén configurados correctamente y que el tipo de paquete seleccionado tenga el peso vacío correcto.
Security Notes 4
- Todos los permisos de administración de envío están marcados como 'restrict access' y solo deben otorgarse a roles de confianza.
- El servicio commerce_shipping.field_access protege los campos sensibles del envío (amount, adjustments, shipping_method) del acceso no autorizado a través de JSON API.
- Los datos del perfil de envío contienen direcciones de clientes - asegure controles de acceso adecuados en las entidades shipment y profile.
- Los correos de confirmación de envío deben revisarse para asegurar que no se exponga inapropiadamente información sensible del pedido.