Solucionar problemas

Error "Argument X passed OrderProductForViewing must be of the type string"

Revisado el 3 min de lectura base de datos errores prestashop

Si tras actualizar o migrar PrestaShop aparece este error al abrir un pedido, la excepción confirma que un argumento recibió null cuando esa versión del constructor esperaba otro tipo. No demuestra que todos los valores NULL de las tablas de pedidos sean incorrectos.

Type error: Argument X passed
PrestaShop\PrestaShop\Core\Domain\Order\QueryResult\OrderProductForViewing::__construct()
must be of the type string, null given, called in ...GetOrderForViewingHandler.php

El reporte histórico de PrestaShop reúne casos distintos y se cerró sin una solución universal. Las versiones actuales admiten NULL en varios campos, por lo que convertirlos todos a cadenas vacías o ceros puede alterar información válida.

Empieza por la excepción completa:

  1. Anota la clase, el número y nombre del argumento, la línea del handler y el pedido afectado.
  2. Comprueba la firma del constructor en el código de esa misma versión de PrestaShop. No uses la firma de otra rama.
  3. Revisa los módulos que modifican pedidos y confirma si el fallo también ocurre con ellos desactivados en un clon.
  4. Consulta únicamente el pedido o detalle señalado por la traza.
SELECT id_order_detail, id_order, product_reference
FROM PREFIX_order_detail
WHERE id_order = <ID_PEDIDO>;

Sustituye PREFIX_ por el prefijo real. Si el argumento identificado es otro, consulta su tabla y campo concretos; no ejecutes un bloque de correcciones preventivas.

En PrestaShop 8.2 se corrigió además un caso distinto donde la ubicación de un producto eliminado podía llegar como null con determinada caché. Si la traza coincide, actualiza a una versión que incluya la corrección oficial antes de modificar datos.

Si has demostrado una fila incoherente, crea una copia verificada, reproduce la corrección mínima en un clon y limita cualquier UPDATE al pedido afectado. Valida después el pedido, pago, transportista y registro de errores; si la evidencia no identifica un único campo, escala el caso en lugar de normalizar toda la base.

Preservar el historial del pedido

No rellenes referencias, nombres o importes con datos actuales del catálogo sin confirmar que corresponden al momento del pedido. Un producto puede haber cambiado o haberse eliminado desde la compra; el pedido conserva información histórica que no debe reconstruirse a ciegas.

Si la corrección procede de una actualización del núcleo o módulo, ensáyala con el pedido afectado y otros pedidos válidos. Comprueba además facturas, devoluciones y exportaciones; resolver la pantalla de detalle no demuestra que todas las relaciones hayan quedado correctas.

También te puede ayudar

¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.