Exacto, @miriam_store ha dado en el clavo, @irene_online. El problema con los overrides de AdminProductsController para añadir funcionalidad de este tipo es que son muy frágiles y unidireccionales: solo afectan a la vista o al comportamiento del controlador, pero no al modelo de datos subyacente (Product ObjectModel).
Para que tu campo is_installation_service se guarde, necesitas que el objeto Product sepa de su existencia y que la base de datos tenga una columna para ello. Modificar el ObjectModel directamente con overrides es arriesgado y puede causar problemas graves en futuras actualizaciones, especialmente si piensas en migrar a versiones más nuevas con Symfony.
La solución correcta implica:
- Añadir la columna a
ps_product: Esto se hace con una consulta SQL ALTER TABLE normalmente en el método install() de un módulo.
- Extender la definición de
Product: Esto se hace modificando la propiedad estática Product::$definition['fields'].
Aquí tienes un fragmento de código que muestra cómo un módulo debería extender la definición del objeto Product para que sepa cómo manejar el nuevo campo. Ten en cuenta que esto se ejecuta en tiempo de ejecución o en la instalación del módulo, y complementaría la creación de la columna en la base de datos:
// Este fragmento iría en el archivo PHP principal de tu módulo o en un hook adecuado
// para asegurar que el ObjectModel Product reconozca el nuevo campo.
// La columna en la DB 'is_installation_service' debe existir previamente.
if (!isset(Product::$definition['fields']['is_installation_service'])) {
Product::$definition['fields']['is_installation_service'] = [
'type' => ObjectModel::TYPE_BOOL,
'validate' => 'isBool',
'required' => false,
'shop' => true,
];
Sin embargo, para una funcionalidad completa que incluya la visualización en el front-office, integración con el carrito, y gestión de precios para el servicio, lo más robusto y mantenible es usar un módulo dedicado. Los hacks con overrides suelen traer más dolores de cabeza a largo plazo. Para este tipo de servicios, te recomendaría revisar esta herramienta de mypresta, ya que gestiona todo el ciclo de vida del servicio de instalación de forma profesional y sin riesgos de rotura.