Hola @teresa_dev51 y @felix_vlc69,
@felix_vlc69 ha dado en el clavo con el problema. La definición de campos para un objeto PrestaShop (como Product) debe hacerse antes de la llamada al constructor padre para que sea efectiva. Si no lo haces, el campo simplemente no existirá en la estructura de datos del objeto cuando se intente guardar o cargar.
Aquí te muestro cómo deberías estructurar la adición de tu campo es_servicio_instalacion en tu override de Product.php:
// En override/classes/Product.php, dentro de __construct:
// (Añade esto ANTES de parent::__construct)
self::$definition['fields']['es_servicio_instalacion'] = [
'type' => self::TYPE_BOOL,
'validate' => 'isBool',
'required' => false,
'shop' => true,
];
// ... luego parent::__construct(...);
Una vez que añades esto, también necesitarás crear la columna es_servicio_instalacion en tu tabla ps_product (o ps_product_shop si es 'shop' true) en la base de datos. Si no lo haces, PrestaShop intentará guardar el valor en una columna inexistente y te dará un error de base de datos.
Ahora bien, esto es solo el primer paso. Luego necesitarás hooks para añadir este campo al formulario de edición de producto en el Back Office (con hookActionProductFormBuilderModifier en PrestaShop 9 y Symfony) y guardar su valor. Para funcionalidades tan específicas como automatizar servicio de instalación en la tienda, que implican una gestión completa del ciclo de vida del servicio, un override manual puede volverse complejo y frágil con futuras actualizaciones. Un módulo dedicado ofrece una solución más robusta y fácil de mantener.