Hola @elenadeco99 y a todos.
@paula_pro y @joaquin_tienda43 han dado en el clavo. El problema es que el método add() o addAfter() del ColumnCollection espera un objeto Column (o sus subclases como DataColumn, ActionColumn, etc.), no un array asociativo con la definición de la columna. PrestaShop 9, con su arquitectura Symfony, requiere que estas definiciones se construyan de forma más estructurada usando el ColumnFactory.
Para solucionarlo, necesitas crear una GridExtension en tu módulo que implemente GridExtensionInterface. Dentro del método extend de esa clase, usarás el ColumnFactory para construir tu columna y luego la añadirás a la definición de la cuadrícula. Aquí te dejo un ejemplo de cómo se vería la modificación dentro del método extend de tu GridExtension:
// Dentro del método extend(GridDefinition $definition) de tu MyOrderGridExtension
// (asume que ColumnFactory y Translator están inyectados en el constructor de la clase)
$definition->getColumns()->addAfter(
'customer', // Inserta después de la columna 'customer'
$this->columnFactory->create(DataColumn::class)
->setId('numero_taquilla')
->setName($this->translator->trans('Nº Taquilla', [], 'Modules.MyModule.Admin'))
->setOptions([
'field' => 'parcel_locker_number', // Este campo debe ser accesible por el DataProvider
'sortable' => false,
Explicación:
$this->columnFactory->create(DataColumn::class): Esto es crucial. En lugar de un array, creamos un objeto DataColumn usando el ColumnFactory. DataColumn es el tipo más común para mostrar datos simples de la base de datos.
->setId(...), ->setName(...), ->setOptions(...): Estos métodos encadenados se usan para configurar el objeto DataColumn. setOptions es donde defines field (el nombre del campo que el DataProvider de la cuadrícula debe proporcionar) y sortable.
addAfter('customer', ...): Este método inserta tu nueva columna después de la columna con ID 'customer'. Puedes ajustarlo según donde quieras ver tu columna.
Recuerda que para que esto funcione completamente, tu módulo debe tener una clase que implemente GridExtensionInterface, registrarla como un servicio en tu services.yml y, muy importante, asegurarte de que el DataProvider de la cuadrícula de pedidos esté proporcionando realmente el campo parcel_locker_number. Si ese campo no se selecciona en la consulta SQL subyacente de la cuadrícula, la columna aparecerá vacía. Esto último a veces requiere extender también el DataProvider o modificar la consulta.