Odoo PrestaShop connector jobs and errors
This reference is only available in Spanish for now.
Documentation
- Odoo PrestaShop connector manual
- Odoo PrestaShop connector settings
- Odoo PrestaShop connector jobs and errors
On this page
La cola
bk.prestashop.job: acción (importar pedido, enviar producto, comprobar el catálogo, enviar las reglas de precios, subir documento, stock, seguimiento, cambiar estado, decir el pedido de venta, poner al día el portal de clientes, buscar posibles vínculos, importar desde la tienda), registro, backend, estado, intentos, próxima ejecución, y resultado o error.- Importar desde la tienda (
import.run, uno por lote de una importación inicial): lo encola «Importar» y cada lote encola el siguiente al acabar, primero los productos (de 40 en 40) y después los clientes (de 100 en 100). Cada elemento va en su punto de guardado: lo que Odoo rechaza de uno se queda en su fila de la importación y los demás siguen, así que el job termina «Hecho» aunque alguna fila tenga problema. Si la tienda no responde, el job se reintenta con lo que falta y lo ya importado se queda (importación inicial). - Enviar el stock (
stock.sync, uno por conexión, con Inventario y Odoo en el stock): lo encolan los cambios de stock de los productos enlazados (con «En cada cambio»), «Enviar el stock ahora», la tarea de cada hora y los cambios de la configuración del stock; lo que se encola mientras espera se suma a lo suyo, sin esperar más. Su resultado dice cuántos cambiaron en la tienda, cuántos ya tenía y cuántos no están en alguna tienda (stock). - Enviar el número de seguimiento (
order.ship, uno por pedido, con Inventario): lo encolan validar un albarán de salida de un pedido de la tienda y cambiar la referencia de seguimiento de uno ya validado. Manda a la tienda el número de los albaranes validados y, con el pedido entregado entero, el estado de los enviados (order.set_tracking); lo que la tienda ya tiene no lo vuelve a mandar. Su resultado dice el número y el estado que quedaron en la tienda y si mandó el correo «en tránsito» (envíos). - Enviar las reglas de precios (
price_rules.sync, uno por conexión): lo encolan una regla de precio de una categoría o de todos los productos de una lista que viaja, la lista propia de un contacto vinculado que cambia, y vincular o desvincular su cliente; lo que se encola mientras espera se suma a lo suyo. Sustituye las reglas de precios del catálogo del conector en la tienda, si cambiaron, y vuelve a mirar los productos que eso puede mover: envía solo los que cambian, cada uno con su job de producto. Su resultado dice cuántas reglas tiene la tienda y cuántos productos se han vuelto a mirar (precios). - Un solo job vivo (pendiente, bloqueado o fallido) por acción y registro: encolar lo mismo otra vez no duplica; uno pendiente se pone en cola ya, aunque esperase su siguiente intento, y uno bloqueado o fallido vuelve a la cola con intentos nuevos. El job trabaja con los datos del momento en que se ejecuta, también los de lo que se encola mientras una pasada de la cola ya lo tiene en su lote.
- Corre en una tarea programada del núcleo cada minuto, que se despierta al momento cuando se encola algo. Procesa por lotes y guarda cada job por separado: un fallo no deshace los demás. Varios procesos de Odoo a la vez no cogen el mismo job.
- El cursor de eventos solo avanza cuando los jobs de esos eventos están guardados: una lectura interrumpida vuelve a leer los mismos eventos, no se salta ninguno.
- Un job que se ejecuta no bloquea nada: se marca «En ejecución» antes de hablar con la tienda. Si mientras tanto se vuelve a encolar lo mismo (el producto se guarda otra vez, se publica a mano una factura del pedido), se crea el siguiente job, que espera a que termine el primero y sale con los datos de entonces: guardar nunca falla porque la cola esté trabajando. Dos jobs de la misma acción y registro nunca se ejecutan a la vez.
- Lo que un job encola de sí mismo mientras se ejecuta (el flujo de un pedido que publica su factura) no crea otro: ya lo está haciendo.
- Un job corre en el idioma de la empresa del backend: en él quedan su resultado y su error.
- Sin configuración de servidor ni módulos externos: por eso la cola es propia y no la de OCA (
queue_job), que exigeserver_wide_modulesy un proceso aparte en cada instalación del cliente.
Estados de un job
| Estado | Qué significa | Qué pasa después |
|---|---|---|
| Pendiente | En cola, quizá esperando su siguiente intento | Se ejecuta a su hora |
| En ejecución | La cola lo está ejecutando | Queda hecho, pendiente de reintento, bloqueado o fallido |
| Hecho | Con enlaces a lo que creó o cambió | Se borra pasados los días configurados |
| Bloqueado | Los datos no permiten hacerlo | No se reintenta solo: se corrige y se pulsa Reintentar |
| Fallido | Error técnico que no se resolvió en los reintentos | Reintentar |
| Cancelado | A mano; o falló mientras se ejecutaba y entretanto se volvió a encolar: el job nuevo repite el trabajo con los datos de ahora y es el que dice si sigue fallando |
- Errores técnicos (la tienda da error 500): se reintenta con espera creciente (1, 5, 15 y 60 minutos, multiplicados por la espera configurada) hasta el máximo, y después queda Fallido.
- Un servicio de fuera que no responde (VIES de un país, que en algunos se apaga cada noche; la pasarela de pago de la tienda): el job espera y se reintenta cada 5 minutos (multiplicados por la espera configurada) sin gastar intentos, lo que tarde el servicio en volver; mientras, enseña el motivo.
- Sin conexión con la tienda (un
CONN_*: no responde, algo bloquea la petición, la clave no vale, los relojes difieren o el módulo no habla el contrato): se pausa la cola de ese backend sin gastar intentos y se reanuda sola cuando la lectura de eventos de cada minuto vuelve a funcionar. El backend enseña «sin conexión desde…» con el motivo. - La conexión la decide una petición que no depende del job. Un
CONN_*puede ser solo de la petición de un job: un cuerpo demasiado grande (413, habitual con el PDF de una factura en alojamientos con límites bajos) o un cortafuegos que rechaza su contenido (403). Por eso, ante unCONN_*de un job, la cola pregunta a la tienda porsystem.capabilities: si no responde, se pausa el backend como arriba; si responde, el error es técnico y de ese job, que gasta intento, se reintenta y queda Fallido con su motivo (el 413 dice que la petición es demasiado grande). Un job así nunca para el resto de la cola. - Errores de datos: Bloqueado a la primera. No se gastan reintentos que no pueden salir bien.
- Una ejecución que no terminó (el proceso de Odoo se paró a mitad) cuenta como un error técnico de ese job: la siguiente pasada de la cola lo devuelve a su reintento.
Cómo se ve un error
Cada error lleva:
- un código estable (
ORDER_VAT_INVALID), para buscarlo en este catálogo y para las extensiones; - un mensaje en el idioma de la empresa, con el dato concreto: qué pedido, qué cliente, qué campo, qué valor;
- dónde se arregla (PrestaShop, Odoo o la configuración del conector) con un enlace directo: el pedido o la dirección en el back office de la tienda, el mapeo en Odoo;
- el detalle técnico plegado (petición, respuesta, traza) para soporte.
Bloqueado · ORDER_VAT_INVALID El pedido FRNQUACIA (Acme SL) tiene el NIF «B1234» en la dirección de facturación y no es un NIF español válido. Esta tienda exige un NIF válido a las empresas. Se arregla en PrestaShop: corrige la dirección de facturación del cliente → Abrir el pedido en PrestaShop. Después, Reintentar.
- Reintentar pone el job en cola ya, con los intentos a cero, y vuelve a pedir el pedido a la tienda: coge lo que se haya corregido.
- Aceptar el NIF y facturar, en un pedido parado solo por reglas del NIF (
ORDER_VAT_MISSING,ORDER_VAT_INVALID,ORDER_VAT_VIES): quien lleva la tienda da el NIF por bueno tal como viene (un CIF español que no está dado de alta en VIES, por ejemplo). El pedido entra y se factura con ese NIF, y guarda quién lo aceptó y cuándo. Un pedido parado además por otra cosa no cambia: primero se arregla lo otro. Funciona también en lote. - Reintentar y cancelar funcionan también en lote, y los puede usar quien ve la cola (PrestaShop / Usuario): es lo único que ese grupo cambia en ella.
- Un job bloqueado o fallido se ve también en el pedido de la tienda afectado (también los de sus facturas) y avisa con una actividad en el job, por correo o por las dos, a los usuarios elegidos en la configuración.
- Un job que espera a un servicio de fuera (VIES, la pasarela de pago) avisa a esos usuarios con una actividad, «en camino», para que vean que hay pedidos procesándose; no se manda por correo, porque no hay nada que hacer, y desaparece cuando el job termina.
Catálogo de errores
Conexión
| Código | Cuándo | Se arregla en |
|---|---|---|
CONN_UNREACHABLE |
La tienda no responde: DNS, TLS, tiempo agotado | Servidor de la tienda |
CONN_BLOCKED |
La tienda responde, pero la petición no llega al conector: redirección (login de la tienda privada u otra dirección), 401 de una contraseña del servidor, 403 (antibots, cortafuegos), 404 (módulo no instalado o desactivado), 413 (petición demasiado grande para el servidor), página de mantenimiento. El mensaje dice cuál | PrestaShop |
CONN_SIGNATURE |
La tienda rechaza la firma, o la conexión no tiene clave: la clave de Odoo no es la suya | Odoo, clave del backend |
CONN_CLOCK |
La hora de los dos servidores difiere más de 5 minutos | Servidores |
CONN_INSECURE |
La URL de la tienda va por http:// y su dirección no es de pruebas (las reglas de la licencia): Odoo no envía la petición, porque los pedidos y los clientes viajarían sin cifrar |
Servidor de la tienda: SSL, y la URL con https:// en la conexión |
CONN_REPLAY |
La tienda ya recibió esa petición (su nonce, contrato): algo entre Odoo y la tienda la repite. Como todo CONN_* de un job, la cola pregunta a la tienda con una petición nueva y, si responde, el job se reintenta |
Servidor: el proxy o cortafuegos que repite las peticiones |
CONN_CONTRACT |
La tienda no habla la versión del contrato que necesita Odoo (409, pausa la cola), o no tiene la operación que pide Odoo o la petición no sigue el contrato (200, ok: false, bloquea el job); también un cobro con la comisión de la pasarela con un módulo de la tienda que no anuncia payment.details |
Actualizar el módulo de PrestaShop (y Probar conexión) |
PS_ERROR |
Error interno de la tienda; su mensaje va en el detalle. Se reintenta | PrestaShop |
VIES_UNAVAILABLE |
VIES no ha podido comprobar el NIF (servicio caído, país no disponible, saturado); se le pregunta tres veces seguidas y, si sigue sin responder, el job se reintenta cada 5 minutos sin gastar intentos hasta que responde | — (se reintenta solo) |
Un CONN_* de la conexión (no el ok: false de una operación) deja el backend sin conexión y pausa su cola hasta
que vuelve; el de un job con la conexión viva es un error técnico de ese job (arriba).
En el asistente de alta, un CONN_* de Conectar deja el paso en Conectar con su
mensaje; el asistente no tiene códigos propios.
La licencia tampoco tiene códigos ni crea jobs, y ningún job falla ni espera por ella: lo que dice (sin clave, no válida y por qué, sin comprobar, tiendas sin conectar, la última comprobación fallida) sale en la licencia y arriba de cada conexión, y solo decide si se puede conectar otra tienda.
Pedidos
| Código | Cuándo | Se arregla en |
|---|---|---|
ORDER_VAT_MISSING |
Falta el NIF y la regla lo exige | PrestaShop, o «Aceptar el NIF y facturar» si es correcto tal como está |
ORDER_VAT_INVALID |
El NIF no tiene un formato válido para su país | PrestaShop, o «Aceptar el NIF y facturar» si es correcto tal como está |
ORDER_VAT_VIES |
VIES dice que el NIF no está dado de alta | PrestaShop, o «Aceptar el NIF y facturar» si es correcto tal como está |
ORDER_ADDRESS_INCOMPLETE |
Falta país, calle, código postal o ciudad, según la regla | PrestaShop |
ORDER_CUSTOMER_MISSING |
El pedido no trae dirección de facturación y la conexión no tiene cliente de reserva | Configuración: cliente de reserva |
ORDER_MISSING_IN_PS |
El pedido que pide Odoo (o al que sube un documento o dice su pedido de venta) ya no existe en la tienda | PrestaShop |
ORDER_STATE_MISSING_IN_PS |
El estado que pide Odoo no existe en la tienda o está borrado | Configuración: mapeo de estados |
ORDER_PRODUCT_UNLINKED |
Una línea con un producto sin enlazar y sin referencia que case (con «usar un producto genérico» sin producto elegido, se arregla en la configuración) | Odoo (enlazar) o PrestaShop (referencia) |
ORDER_PRODUCT_AMBIGUOUS |
La referencia casa con varios productos de Odoo | Odoo |
ORDER_CURRENCY_INACTIVE |
La moneda del pedido no está activa en Odoo | Odoo |
ORDER_PRICELIST_MISSING |
El pedido está en otra moneda que la de la empresa y su tienda no tiene lista de precios en esa moneda (la moneda de un pedido de venta es la de su lista de precios) | Configuración: tiendas |
ORDER_CONFIG_MISSING |
Falta en la configuración de la conexión un dato que el pedido necesita (el producto de envoltorio de regalo) | Configuración |
ORDER_TAX_UNMAPPED |
La tienda cobró un impuesto sin impuesto en Odoo, o mapeado a un impuesto de Odoo de otro tipo | Configuración: mapeo de impuestos |
ORDER_CARRIER_UNMAPPED |
El pedido lleva portes y su transportista no tiene método de envío; con «Usar un método de envío por defecto», solo si la conexión no tiene ese método elegido (el mensaje lo dice) | Configuración: mapeo de transportistas, o el método de envío por defecto |
ORDER_PAYMENT_UNMAPPED |
Hay que registrar el cobro y su método de pago no tiene diario o, con la comisión de la pasarela, cuenta de comisiones o de diferencias (el mensaje dice cuál); o su diario va en otra moneda que la que liquida la pasarela | Configuración: mapeo de pagos |
PAYMENT_DETAILS_UNAVAILABLE |
La tienda no puede leer el cobro en su pasarela: su módulo de pago no tiene clave para el modo de esa tienda, la pasarela rechaza la clave, no conoce el cobro (clave de otra cuenta, o de modo de pruebas con cobros reales) o aún no lo ha liquidado, o el cobro no tiene id de transacción. El mensaje dice cuál, y el enlace abre la configuración del módulo de pago en el back office | Tienda: configuración del módulo de pago de esa tienda; después, Reintentar |
GATEWAY_UNAVAILABLE |
La pasarela (Stripe) no responde a la tienda: el cobro espera y se reintenta cada 5 minutos sin gastar intentos, con el aviso «en camino»; la factura no sube a la tienda hasta que el cobro está registrado | Nada: se resuelve solo; si dura, el estado de Stripe |
ORDER_TOTAL_MISMATCH |
El pedido de venta no sumaría lo cobrado ni con los precios sin impuestos ni con impuestos incluidos, o la factura no suma lo cobrado o está en otra moneda, con la diferencia línea a línea y, si con el otro método de redondeo de impuestos de Odoo cuadraría, cuál; también una rectificativa que no suma lo que devuelve su vale | Configuración (impuestos, redondeo) |
ORDER_INVOICE_POLICY |
Algún estado factura (sin «Facturar al validar el albarán») y el pedido lleva productos que facturan lo entregado; se comprueba antes de confirmar, porque Odoo fija al confirmar qué factura cada línea | Odoo, producto |
ORDER_STEP_FAILED |
Odoo rechaza un paso del flujo (confirmar, validar albarán, facturar, publicar, cobrar, cancelar); el mensaje es el de Odoo, por ejemplo un periodo bloqueado al publicar o un producto con números de serie al validar el albarán | Odoo |
ORDER_CHANGED_AFTER_INVOICE |
El pedido se editó en la tienda después de facturarse | Decidir (rectificativa a mano si cambió el importe) y Reintentar, que da el pedido por decidido tal como está |
ORDER_ADOPT_MISMATCH |
Hay una factura con su referencia pero con otro total, o una línea del pedido no tiene en ella una con su producto o su importe y su cantidad | Odoo: corregir la factura, o su Documento origen si es de otro pedido |
REFUND_WITHOUT_INVOICE |
Vale de abono de un pedido sin factura | Odoo |
REFUND_EXCEEDS_INVOICE |
Se devuelve más de lo que queda por acreditar, o una línea que no está en el pedido de venta | PrestaShop |
REFUND_EXCEEDS_PAYMENT |
Devolver en la tienda pide más de lo que la pasarela tiene por devolver del cobro del pedido; no se devuelve nada y el diálogo dice cuánto queda | Odoo (otro importe) |
REFUND_REFUSED |
La pasarela rechaza la devolución que pide Devolver en la tienda (con su código); no se devuelve nada | PrestaShop (la pasarela) |
REFUND_NOT_SUPPORTED |
El módulo de pago del pedido no devuelve desde Odoo; el pedido se devuelve en el módulo de pago de la tienda o en el panel de la pasarela, y Odoo refleja la devolución | PrestaShop |
Catálogo
| Código | Cuándo | Se arregla en |
|---|---|---|
PRODUCT_REF_DUPLICATE |
Referencia repetida en Odoo o en la tienda | Donde esté repetida |
PRODUCT_TAX_UNMAPPED |
El impuesto del producto no tiene grupo de reglas en la tienda | Configuración: mapeo de impuestos |
PRODUCT_PS_REJECTED |
La tienda rechaza un valor: en modo nativo, uno que no pasa la validación de PrestaShop; en los dos modos, una tienda, impuesto, categoría o grupo que no existe, el nombre de un fabricante, de una característica, de un valor o de una etiqueta que PrestaShop no admite (una etiqueta, tampoco con coma), una imagen que no puede procesar, dos precios específicos o combinaciones iguales, o sacarlo de todas sus tiendas; en las reglas de precios del catálogo, una tienda o un grupo que no existe. Con campo, valor y mensaje. Una moneda o un cliente que la tienda no tiene no lo rechaza: ese precio no se escribe y el resultado lo avisa | Odoo (el dato) o configuración (modo directo, tiendas, grupos, mapeo de categorías) |
PRODUCT_ORIGIN_INVALID |
Lo que da el origen de un dato (un campo o una propiedad del producto) no puede ser ese dato: un número que no lo es o es negativo, una cantidad mínima que no es un número entero, un sí/no que no lo es, una condición que no es nuevo, usado ni reacondicionado. El mensaje dice el dato, el valor y de dónde sale. Nada se envía del producto | Odoo: el producto, o el origen del dato en la conexión (bloque 5) |
PRODUCT_MISSING_IN_PS |
El producto enlazado ya no existe en la tienda | Volver a enlazar o recrear |
PRODUCT_APPLY_REQUIRED |
El producto tiene algo que desactiva o borra en la tienda (desactivarlo al archivarlo, borrar una combinación, desactivarlo o dejarlo no disponible para pedidos al dejar de contar) y espera a «Aplicar en PrestaShop»; el resto de sus cambios sí se ha enviado. «Reintentar» no aprueba nada. Si lo que esperaba se deshace (se reactiva el producto o la variante, vuelve a contar), el job vuelve a correr y termina solo | Odoo: «Aplicar en PrestaShop» en el producto |
PRODUCT_DYNAMIC_ATTRIBUTES |
El producto tiene atributos que crean sus variantes al venderse (dinámicos) y Odoo manda en las combinaciones: la tienda solo vendería las variantes ya creadas. El mensaje nombra los atributos | Odoo: el atributo, a crear variantes «Al instante»; el producto vuelve a la cola solo cuando nacen sus variantes |
PRODUCT_SUBSCRIPTION_UNSUPPORTED |
El producto es de suscripción (casilla «Producto de suscripción», con el plan en Odoo) y la tienda no anuncia subscriptions: no tiene BK Subscriptions with Stripe activo, así que no se publica (venderlo como compra única sería cobrar mal) |
PrestaShop: instalar y activar bksubscriptions, «Probar conexión» y «Reintentar». O en Odoo, quitar la casilla para venderlo como compra única: vuelve a la cola solo |
PRODUCT_UNIT_UNKNOWN |
La unidad de peso (o de medidas) de la tienda es un texto que el conector no reconoce, así que no puede convertir el dato. El mensaje dice la unidad de la tienda y las que reconoce, y el enlace abre Localización en el back office | PrestaShop: Internacional › Localización, la unidad como kg, g, lb u oz (medidas: mm, cm, m, in, ft); después, «Probar conexión» y «Reintentar» |
- Un producto sin referencia con «Enlazar si existe» no se encola: su plan dice «No se publica: no tiene referencia con la que enlazarlo».
- Los errores de datos de un producto (
PRODUCT_TAX_UNMAPPED,PRODUCT_PS_REJECTED,PRODUCT_REF_DUPLICATE,PRODUCT_DYNAMIC_ATTRIBUTES,PRODUCT_UNIT_UNKNOWN,PRODUCT_ORIGIN_INVALID,PRODUCT_SUBSCRIPTION_UNSUPPORTED): arreglado en el producto, el job vuelve a la cola solo; arreglado fuera (un mapeo, la tienda), «Reintentar».
Portal de clientes
| Código | Cuándo | Se arregla en |
|---|---|---|
CUSTOMER_MISSING_IN_PS |
El cliente de la tienda vinculado con el contacto de un documento del portal ya no existe en la tienda | Odoo: quitar ese vínculo en la pestaña PrestaShop del contacto; el job vuelve a la cola solo y el documento va a otro cliente vinculado del contacto, o sale de la tienda |
- Un documento del portal que no se puede subir por su PDF da
DOCUMENT_PDF_MISSINGoDOCUMENT_PDF_INVALID, como la subida de los documentos de un pedido. - Con un módulo de la tienda que no anuncia las operaciones del portal (o
order.link), los jobs terminan sin llamar a la tienda y lo dicen en su resultado: no es un error. - «Vincular un cliente de la tienda» no es un job: lo que contesta la tienda al buscar (sin conexión,
CONN_*) sale en rojo en el mismo diálogo, y con un módulo sincustomers.searchel diálogo pide actualizarlo y probar la conexión.
Importación inicial
No son errores de un job: cada uno se queda en la fila de su elemento en la importación (columnas Resultado y código), y los demás elementos siguen. Se arregla y se prepara una importación nueva: lo ya importado sale como «Ya enlazado».
| Código | Cuándo | Se arregla en |
|---|---|---|
IMPORT_PLAN_CHANGED |
Al importarlo, lo que Odoo haría ya no es lo que dijo el plan (entretanto se creó en Odoo un producto con su referencia, se enlazó, o un contacto casa con el cliente); la fila dice lo que haría ahora y no se toca nada | Odoo: preparar una importación nueva y revisar su plan |
IMPORT_PRODUCT_MISSING |
El producto ya no está en la tienda | Nada: se borró en la tienda |
IMPORT_ATTRIBUTES_UNEVEN |
Sus combinaciones no tienen todas un valor de los mismos grupos de atributos (una con talla y color, otra solo con talla): Odoo hace cada variante con un valor de cada atributo | PrestaShop: dar a todas las combinaciones los mismos grupos |
IMPORT_ODOO_REJECTED |
Odoo no deja crearlo; el mensaje es el de Odoo | Odoo o PrestaShop, según el mensaje |
Documentos, stock y envíos
| Código | Cuándo | Se arregla en |
|---|---|---|
DOCUMENT_PDF_MISSING |
La factura no tiene su PDF guardado y Odoo no puede generarlo | Odoo |
DOCUMENT_PDF_INVALID |
El PDF llegó a la tienda dañado (su sha256 no coincide) o no es un PDF | Odoo |
TRACKING_STATE_UNMAPPED |
El pedido está entregado y la conexión no tiene «Estado de los enviados» | Configuración: elegirlo en Envíos y Reintentar |
TRACKING_NUMBER_INVALID |
La referencia de seguimiento de los albaranes no cabe en PrestaShop: más de 64 caracteres (todos los del pedido, separados por comas) o caracteres que no admite (letras con acento) | Odoo: corregirla en el albarán; el job vuelve a la cola solo |
TRACKING_CARRIER_MISSING |
El albarán tiene número y el pedido no tiene transportista en la tienda (todo virtual) | Odoo: quitar la referencia de seguimiento del albarán; el job vuelve a la cola solo |
- Stock: un producto sin enlazar no envía stock (no es un error: el catálogo decide qué se enlaza). Lo que la tienda
rechaza de un producto en
stock.setbloquea el jobstock.synccuando ha enviado todos los demás, con el código del primero y la lista de productos:PRODUCT_MISSING_IN_PSsi el producto o la combinación enlazados ya no están en la tienda (se arregla en Odoo: volver a enlazarlo o quitar el enlace) yPRODUCT_PS_REJECTEDsi la tienda no puede escribir esa cantidad (un producto enlazado sin combinaciones que en la tienda las tiene, o que toma la cantidad de la gestión de stock avanzada de una 1.7). El siguiente cambio de stock lo vuelve a poner en cola, y «Reintentar» también.
Los códigos de una extensión llevan el prefijo de su módulo y se documentan en él: los de sus reglas
(_bk_ps_validate_order) bloquean el pedido como los del estándar, y los de sus operaciones de la tienda llegan como
cualquier error de una operación (estándar y a medida).