Hola @mateocart, es un problema bastante común y tu intento de override va por el camino correcto al extender la definición del objeto Order. Sin embargo, para que PrestaShop persista ese dato, necesitas dos cosas clave:
- Añadir la columna
id_employee_creator a la tabla ps_orders en tu base de datos. Esto normalmente se haría con un script de instalación de módulo para asegurar la compatibilidad.
- Utilizar un hook que se dispare después de la creación del pedido para inyectar el ID del empleado. El hook
actionObjectOrderAddAfter es ideal para esto.
Aquí te dejo un ejemplo de cómo lo harías dentro de un módulo, lo cual es mucho más limpio que un override directo del controlador y garantiza mayor estabilidad en futuras actualizaciones de PrestaShop:
// Dentro de la clase principal de tu módulo personalizado
// En el método install() de tu módulo, deberías añadir la columna a la DB:
// Db::getInstance()->execute('ALTER TABLE `'._DB_PREFIX_.'orders` ADD `id_employee_creator` INT(10) UNSIGNED NULL DEFAULT NULL AFTER `id_customer`');
// return parent::install() && $this->registerHook('actionObjectOrderAddAfter');
public function hookActionObjectOrderAddAfter($params)
{
/** @var Order $order */
$order = $params['object'];
// Asegurarse de que estamos en el Back Office y que hay un empleado logueado
if (Validate::isLoadedObject($order) && Context::getContext()->employee->id && Context::getContext()->controller->controller_type === 'admin') {
Este código asume que ya has añadido la columna a la base de datos. El hookActionObjectOrderAddAfter se ejecuta justo después de que el objeto Order se guarda en la base de datos, permitiéndonos actualizar el campo id_employee_creator con el ID del empleado actual.
Como mencionáis, tocar el core o hacer overrides complejos puede ser arriesgado. Para tiendas en producción o si buscas una solución más completa y mantenible que se encargue de la creación de la columna y la lógica de forma automática, te recomiendo revisar módulos dedicados. Por ejemplo, puedes encontrar una solución para automatizar orden creada en la tienda que simplifica este proceso y lo mantiene compatible con futuras versiones de PrestaShop.