Hola @teresa_dev51 y a todos.
@carlacart71 y @marta_digital tienen razón. El problema está en cómo el postProcess de AdminProductsControllerCore maneja el guardado del objeto Product. En PrestaShop 1.7.4.2, los métodos processAdd() y processUpdate() son los responsables de llamar a $this->object->add() o $this->object->update(), que son los que finalmente establecen date_add y date_upd.
Para que tus fechas persistan, necesitas inyectar el valor en el objeto $this->object antes de que se llamen a esos métodos. Lo más limpio es sobrescribir processAdd() y processUpdate() en tu override de AdminProductsController. Así puedes asegurarte de que la propiedad date_add o date_upd del objeto ya esté definida con tu valor personalizado cuando el core la intenta guardar.
Aquí tienes un snippet de cómo podrías modificar tu override:
class AdminProductsController extends AdminProductsControllerCore
{
protected function processAdd()
{
// Asegurarse de que el objeto producto esté listo para la adición
if (!Validate::isLoadedObject($this->object)) {
$this->object = new Product();
}
if (Tools::isSubmit('custom_publish_date') && !empty(Tools::getValue('custom_publish_date'))) {
$this->object->date_add = pSQL(Tools::getValue('custom_publish_date'));
Recuerda que también necesitarías añadir el campo custom_publish_date a tu formulario de producto en el renderForm() para que los administradores puedan introducir la fecha. Los overrides son potentes, pero requieren un manejo cuidadoso para no romper la compatibilidad futura. Para una solución más mantenible y robusta, sobre todo pensando en futuras actualizaciones de PrestaShop (como la migración a Symfony completo en versiones más recientes o PHP 8.2/8.3), un módulo para cambio de fecha del producto es mucho más seguro y evita estos hacks a nivel de core.