Rotozoom Sell & Ship — Manual
Transportistas, finalización de compra y facturas en un solo plugin. Sell & Ship sustituye el formulario de dirección estándar de WooCommerce por un selector de transportista, cotiza el precio real desde la propia API del transportista, imprime albaranes desde la pantalla del pedido, sigue el paquete hasta su entrega y emite los documentos de venta que tu contabilidad necesita.
- Versión gratuita: todas las integraciones de transportistas, el selector en la finalización de compra, albaranes y seguimiento, estados de entrega, facturación y la exportación fiscal de tu propio país, y el historial de reputación de clientes propio de la tienda.
- Versión Pro: la capa multidivisa y multiidioma, y el tratamiento fiscal transfronterizo (internacional). Los transportistas son gratuitos en todos los países.
Novedades de la versión 1.9.2
- El pedido siempre va en la divisa de la tienda. Cuando un comprador navega en otra divisa, la finalización de compra, el pago, los correos y todos los documentos se mantienen en la divisa base de la tienda, y el importe extranjero viaja como referencia: dos filas, "Currency for reference:" y "To be paid only in EUR:" (con el código de tu propia divisa), en el resumen de la compra, la página de agradecimiento, Mi cuenta, todos los correos del pedido y los documentos PDF. Antes, una divisa cambiada podía llegar a la pasarela como un número en divisa base bajo un código extranjero.
- Entrega paletizada de Speedy. En Ajustes → Speedy → "Pallet delivery": "Pallet service" (vacío — "— Do not offer pallets —" — significa desactivado, y desactivado significa exactamente el comportamiento anterior a esta función), "Default pallet height (cm)" (180) y "Pallet sender (contract address)". Se usa un palé para envíos de más de 50 kg o cuyo volumen supere lo que el servicio estándar admite en un solo bulto, solo a dirección — Speedy no permite entregar un palé en una oficina. En la rama de volumen se cotizan ambos servicios y se cobra el más barato.
- Comprobación previa de reputación. Cuando se reconoce a un cliente señalado, el contra reembolso desaparece ahora 2 segundos después de completar el formulario de compra (los dos nombres, el teléfono y un correo válido), en lugar de solo al enviar el pedido. El nuevo ajuste "Do not tell the customer why cash on delivery is unavailable" está activado por defecto — el método simplemente no está. Un envío rechazado siempre lleva su motivo.
- Un acusador nombrado puede eliminar el contra reembolso. Una fuente de la clase "acusación" que hayas armado explícitamente con block se respeta ahora en la finalización de compra; el valor por defecto para tal fuente sigue siendo notify.
- Econt: la lista de contenido para un acuerdo de pago departamental. Cuando tu acuerdo de contra reembolso con Econt es un acuerdo departamental, el albarán lleva ahora una lista de contenido digital — Econt rechaza tal albarán sin ella, y su paso de validación no lo detecta.
- Econt: solicitar un mensajero vuelve a enviar ahora el albarán completo, porque la llamada de actualización de Econt reemplaza la etiqueta en lugar de parchearla.
- Costuras para otros plugins: los eventos
rotozoom_ss/shipment_deliveredyrotozoom_ss/shipment_returned,window.rotozoomSSBlocksApplySaved()para aplicar una dirección guardada en la finalización de compra por bloques, y un selector de transportista independiente que puede renderizarse fuera de la finalización de compra. B2B Manager 1.2.0 es el primer consumidor de los cuatro.
Para principiantes: qué hace este plugin
Una finalización de compra de WooCommerce pide una dirección de calle. Un transportista quiere algo más preciso: qué oficina, qué taquilla, qué identificador de ciudad en su registro, cuánto pesa el paquete y quién paga la entrega. Sell & Ship une ambos mundos:
- El comprador elige un transportista y un tipo de entrega (a oficina, a dirección, a taquilla) y busca en la lista real de ubicaciones del transportista, en una lista o en un mapa.
- El precio mostrado es la cotización propia del transportista para esa cesta y ese destino, no una tarifa plana que hayas supuesto.
- Cuando llega el pedido, imprimes el albarán desde la pantalla del pedido y el número de seguimiento llega al cliente.
- La venta queda documentada — factura o ticket fiscal — con la numeración que exige tu ley.
Configuración
1. Elige el país de tu tienda
Ajustes → General → "Store country" decide qué funciones de transportista y fiscales se muestran. Las pestañas búlgaras de transportistas y fiscalidad (Econt, Speedy, BoxNow, NRA H-18, Customer reputation) aparecen cuando la tienda opera en Bulgaria.
2. Conecta los transportistas que usas
Cada transportista tiene su propia pestaña — "Econt", "Speedy", "BoxNow" — donde introduces las credenciales de tu contrato y eliges el remitente (la dirección contractual desde la que se recoge un envío). Usa los botones de sincronización para traer tus direcciones contractuales y los servicios que tu contrato permite realmente; el plugin nunca supone un servicio que no tienes.
3. Añade los métodos de transportista a una zona de envío
Los métodos de transportista son métodos de envío normales de WooCommerce. Añade los que ofrezcas a la zona de envío de tu país y el selector de la finalización de compra los presentará.
4. Configura los documentos
La pestaña "Invoices" contiene los datos de tu empresa, las series de numeración y los ajustes de documentos; "NRA H-18" contiene la exportación fiscal para Bulgaria. Los documentos se emiten en el pago: un pedido con tarjeta cuando se captura, un pedido por transferencia bancaria cuando se marca como en proceso, un pedido contra reembolso cuando se confirma la entrega. Un pedido sin pagar nunca consume un número.
Referencia de funciones
El selector en la finalización de compra
Para un pedido nacional, los campos de dirección estándar se sustituyen por:
- botones de transportista (Econt / Speedy / BoxNow) con sus logotipos,
- tarjetas de tipo de entrega (a oficina, a dirección, a taquilla) con el precio de cada una,
- un formulario de ubicación — busca una oficina por localidad o por nombre, elígela de la lista o del mapa, o rellena una dirección de calle.
El selector se sirve desde una copia local de la nomenclatura del transportista, así que la búsqueda es instantánea; la lista y el mapa leen las mismas filas y nunca pueden contradecirse. Funciona en la finalización de compra clásica y, en su propio formulario, en el bloque Finalizar compra de WooCommerce.
Precios reales del transportista
La tarifa mostrada para un método de transportista es la cotización propia del transportista para esa cesta, cacheada brevemente y recurriendo a tu tarifa plana solo cuando la API falla. El peso y las dimensiones vienen de los productos; un envío de varios bultos se divide y se declara como paquetes separados.
Albaranes y la pantalla del pedido
Cada pedido recibe un panel "Delivery" con la pestaña del transportista:
- previsualizar y crear el albarán, imprimir la etiqueta en el tamaño que quiera tu impresora,
- anular una etiqueta,
- ver el estado actual del envío,
- cambiar el remitente solo para este pedido,
- "Request a courier" cuando el paquete se recoge en una dirección.
Seguimiento, estados de entrega y devoluciones
El plugin sigue el envío y registra cuándo confirmó el transportista la entrega, y cuándo un paquete se rechaza o vuelve. El estado "Unclaimed" existe para un paquete que el cliente nunca recogió, con su propio flujo de liquidación. Los eventos de envío se publican para otros plugins como rotozoom_ss/label_created, label_voided, rotozoom_ss/shipment_delivered y rotozoom_ss/shipment_returned.
Entrega paletizada (Speedy)
Una cesta de más de 50 kg, o lo bastante voluminosa como para que su peso volumétrico supere lo que el servicio estándar transporta en un solo bulto, se cotiza como palé — un palé EUR de 80 × 120 cm, con la altura tomada de los productos o de "Default pallet height (cm)", solo a dirección.
Conviene saber tres cosas antes de activarlo:
- La tarifa del palé depende de la dirección contractual desde la que se cotiza — medido en un envío de 153 kg: 29,36 € desde una dirección contractual frente a 167,46 € desde otra, mientras que el servicio estándar de paquetería cuesta lo mismo desde todas ellas. Por eso "Pallet sender (contract address)" es un control aparte.
- Un palé no es automáticamente más barato. En la rama volumétrica el plugin cotiza ambos servicios y cobra el más barato; en la rama de "más de 50 kg" no hay alternativa de paquetería.
- Dejar "Pallet service" vacío es un interruptor de apagado real. El plugin se comporta entonces exactamente como antes de la función: un envío de más de 50 kg simplemente no obtiene tarifa de Speedy. Una opción ausente cuenta como desactivada, así que una actualización nunca activa la función en una tienda que no la eligió.
Reputación de clientes
Una capa opcional que puede retirar el contra reembolso a un cliente cuyo historial de entregas lo justifique.
- El historial de entregas propio de la tienda está siempre disponible y siempre es gratuito — es de primera mano, corregible y tuyo.
- Los registros externos pueden conectarse con tu propia clave de API. Un registro de tipo "estadístico" necesita una muestra mínima antes de contar siquiera; un registro de tipo "acusación" solo elimina un método de pago si lo armas explícitamente para ello.
- Desde la 1.9.2 la comprobación se ejecuta 2 segundos después de completar el formulario de compra, así que el método desaparece antes de que el comprador llegue a Realizar el pedido; la comprobación al enviar se mantiene como respaldo. "Do not tell the customer why cash on delivery is unavailable" (activado por defecto) lo mantiene en silencio; un rechazo al enviar siempre se explica.
- El bloqueo está deliberadamente protegido tras una constante de servidor que identifica tu proxy, de modo que el limitador de peticiones no puede alimentarse con un valor elegido por el visitante.
Facturas y documentos fiscales
Los documentos se emiten en el pago y se fechan por él. La factura de un pedido contra reembolso se fecha por la entrega que confirmó el transportista. Un archivo mensual exporta las facturas emitidas en un mes elegido, y la pestaña NRA H-18 produce el fichero de auditoría para la agencia tributaria búlgara.
La facturación local (del propio país), el IVA y la exportación fiscal son gratuitos. El tratamiento fiscal transfronterizo es Pro, y se restringe según el país del pedido en la capa de datos, no en la interfaz.
Direcciones guardadas
Un cliente con sesión iniciada puede guardar el punto al que va un paquete — pero solo si marca "Save this address" y le pone nombre, de modo que la libreta nunca se llena sola de direcciones puntuales. Los registros de entrega y de facturación se mantienen como dos listas separadas, porque una empresa que envía a cinco oficinas debería seguir introduciendo su CIF una sola vez. Los puntos guardados se aplican exactamente por la misma vía que la lista y el mapa, así que no pueden desacompasarse del selector.
Localización: divisa e idioma (Pro)
Un widget de dos pestañas permite a los visitantes navegar en su propio idioma y divisa, con los tipos de cambio actualizados a diario desde el BCE.
Cómo se gestiona el dinero (desde la 1.9.2): la conversión es una comodidad de navegación. El pedido, el pago y todos los documentos van siempre en la divisa base de la tienda, y la divisa elegida aparece como un par de referencia — "Currency for reference:" y "To be paid only in
Multisitio
En una red de WordPress cada subsitio puede fijarse a su propio idioma y divisa mediante un mapa a nivel de red, en lugar de detectarse desde la IP del visitante.
Free vs Pro de un vistazo
| Función | Free | Pro |
|---|---|---|
| Integraciones de transportistas, selector en la compra, cotizaciones reales | ✓ | ✓ |
| Albaranes, etiquetas, seguimiento y estados de entrega | ✓ | ✓ |
| Entrega paletizada (Speedy) | ✓ | ✓ |
| Direcciones de entrega guardadas | ✓ | ✓ |
| Facturas y exportación fiscal de tu propio país | ✓ | ✓ |
| Reputación de clientes: tu propio historial de entregas | ✓ | ✓ |
| Reputación de clientes: un registro externo nacional | ✓ | ✓ |
| Reputación de clientes: varios registros, registros extranjeros, comprobaciones masivas, panel de uso | — | ✓ |
| Capa multidivisa y multiidioma | — | ✓ |
| Tratamiento fiscal transfronterizo (internacional) | — | ✓ |
Notas avanzadas
- Que un transportista rechace un albarán es casi siempre un campo obligatorio ausente, y cada transportista informa solo del primero. Lee el error completo, incluida la respuesta en bruto que imprime el plugin, antes de cambiar nada más.
- Las llamadas de solo lectura se reintentan; un albarán nunca se reintenta. Una llamada de albarán repetida sería un segundo paquete.
- La actualización de la nomenclatura reemplaza una lista solo contra su propia respuesta correcta — una actualización a medias queda registrada y visible en lugar de vaciar el selector en silencio.
- Integrar otro plugin: escucha
rotozoom_ss/shipment_deliveredyrotozoom_ss/shipment_returned(deduplica por tu cuenta — el trabajo horario vuelve a leer), aplica un destino guardado en la finalización de compra por bloques conwindow.rotozoomSSBlocksApplySaved(record), y renderiza el selector fuera de la finalización de compra con el modo independiente, que informa de su resultado como un evento DOMrotozoom-ss:destination. - Limitación conocida: en la finalización de compra por bloques no se emite una proforma para un pedido por transferencia bancaria, porque la Store API de WooCommerce no dispara el hook que escucha el motor de documentos.
Solución de problemas
- No hay oficinas en el selector — la nomenclatura local está vacía para ese transportista; ejecuta la actualización desde la pestaña del transportista y revisa la pestaña de estado por si hay una actualización a medias.
- "There are no shipping options" — la cesta puede superar el límite legal de efectivo para el contra reembolso, o ser más pesada de lo que acepta el servicio seleccionado; revisa la pestaña del transportista y el peso del pedido.
- Falta el contra reembolso para un cliente — la capa de reputación lo retiró. El registro de auditoría de la pestaña de reputación nombra la fuente y el motivo.
- Un palé se cotiza carísimo — compara una cotización real desde cada dirección contractual y ajusta "Pallet sender (contract address)" en consecuencia; la tarifa difiere según la dirección.
- Al cliente se le cobró en la divisa equivocada — actualiza a la 1.9.2 o posterior: los pedidos van ahora siempre en la divisa base de la tienda, con el importe extranjero mostrado solo como referencia.
- Un PDF de etiqueta vacío — reimprime desde la pantalla del pedido; un fichero de cero bytes significa que la llamada de impresión se construyó con la forma equivocada y la llamada propia del plugin es la que hay que usar.
Para conectar una licencia Pro, consulta Instalar y actualizar plugins.