Hola @alba_bici y @marinashop92,
@marinashop92 tiene razón, la date_add está pensada para ser la fecha de creación y se establece por el ORM de PrestaShop ($this->date_add = date('Y-m-d H:i:s'); dentro de Product::add()) y no está diseñada para ser modificada fácilmente después. Cuando usas $product = new Product($id_product);, ya estás cargando un producto existente, y date_add ya está definida. Tu intento en postProcess() se sobrescribe porque el parent::postProcess() llama a Product::update(), que no tiene lógica para cambiar date_add.
Si realmente necesitas modificar date_add (lo cual es atípico y puede generar inconsistencias si no se maneja con cuidado), la forma más robusta y que no se sobrescribirá por la lógica del Product::update() es usar un hook y hacer una actualización directa a la base de datos. Podrías usar el hook actionProductUpdate de un módulo custom. Aquí tienes un ejemplo de cómo podrías hacerlo en un módulo simple:
// En un módulo custom: mi_modulo_fecha/mi_modulo_fecha.php
public function hookActionProductUpdate($params)
{
if (!empty(Tools::getValue('custom_product_date_add'))) {
$id_product = (int)$params['id_product'];
$new_date_add = pSQL(Tools::getValue('custom_product_date_add'));
// Actualización directa en la base de datos
Db::getInstance()->update(
'product',
array('date_add' => $new_date_add),
Este código iría dentro de un método hookActionProductUpdate en tu propio módulo. Deberías asegurarte de que tu campo custom_product_date_add se envíe correctamente en el formulario del producto. Este enfoque es un 'hack' que fuerza la fecha en la base de datos, pero te da el control.
Sin embargo, para una gestión más limpia y sin riesgos de futuras actualizaciones o incompatibilidades, especialmente si necesitas una funcionalidad de 'fecha de publicación' o 'disponibilidad' más allá de date_add, te recomiendo un módulo para cambio de fecha del. Es más seguro y no tendrás que preocuparte por overrides o hooks manuales que puedan romperse.