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
16,267 sites
59
drupal.org

Install

Drupal 11, 10, 9 v8.x-2.15
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
Envío /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.

Métodos de envío /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.

Añadir método de 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.

Tipos de envío /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.

Añadir tipo de envío /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.

Tipos de paquete /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.

Añadir tipo de paquete /admin/commerce/config/package-types/add

Formulario para definir un nuevo tipo de paquete con dimensiones y peso vacío.

Envíos /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.

Añadir envío /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
Administrar métodos de envío

Crear, editar y eliminar métodos de envío. Permiso de acceso restringido.

Administrar envíos

Crear, editar, eliminar envíos y gestionar las transiciones de estado de envío. Permiso de acceso restringido.

Administrar tipos de envío

Crear, editar y eliminar paquetes de tipos de envío. Permiso de acceso restringido.

Administrar tipos de paquete

Crear, editar y eliminar tipos de paquete. Permiso de acceso restringido.

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
Las opciones de envío no aparecen en el proceso de pago

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.

Las tarifas de envío no se recalculan cuando cambia la dirección

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.

Los correos de confirmación de envío no se envían

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.

No se puede eliminar un tipo de envío

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.

Las condiciones del método de envío no funcionan

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 paquete parece incorrecto

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.