# Distinta base — Kits y ensamblaje — Guía completa

> Presentación y requisitos El módulo Distinta base añade a PrestaShop una gestión de lista de materiales (BOM): cada producto puede declarar la lista de sus componentes con sus cantidades, y…

- Página: <https://www.datafirefly.com/es/documentation/datafireflybom/>
- Idioma: es
- Actualizado el: 2026-07-08
- Otros idiomas: [fr](https://www.datafirefly.com/documentation/datafireflybom/index.md), [en](https://www.datafirefly.com/en/documentation/datafireflybom/index.md), [de](https://www.datafirefly.com/de/documentation/datafireflybom/index.md), [it](https://www.datafirefly.com/it/documentation/datafireflybom/index.md), [pl](https://www.datafirefly.com/pl/documentation/datafireflybom/index.md), [pt](https://www.datafirefly.com/pt/documentation/datafireflybom/index.md), [nl](https://www.datafirefly.com/nl/documentation/datafireflybom/index.md)
- Índice: <https://www.datafirefly.com/es/documentation/llms.txt>

## Presentación y requisitos

El módulo Distinta base añade a PrestaShop una gestión de **lista de materiales (BOM)**: cada producto puede declarar la lista de sus componentes con sus cantidades, y la tienda extrae automáticamente las consecuencias sobre el stock y el precio. Hay dos lógicas disponibles según su actividad: el **kit virtual** (stock calculado, descuento de componentes al vender) y el **ensamblaje físico** (órdenes de fabricación que producen stock de producto terminado).

- Compatible con PrestaShop 8.0 a 9.x, tema Classic y temas derivados.
- PHP 7.4 a 8.3.
- Multitienda y multiidioma.
- Componentes con combinaciones, listas multinivel, protección contra referencias circulares.
- Arquitectura conforme a PrestaShop (ModuleAdminController, ObjectModel), sin dependencias Composer.

En modo **kit virtual**, el stock del producto ya no se introduce manualmente: el módulo lo calcula como el mínimo permitido por los componentes y lo actualiza en cada movimiento.

## Instalación

Instale el módulo como cualquier módulo de PrestaShop:

1. Descargue el archivo `datafireflybom.zip` desde su cuenta de cliente.
2. En el back-office, vaya a **Módulos > Gestor de módulos**.
3. Haga clic en **Subir un módulo** y suelte el archivo.
4. Una vez instalado, haga clic en **Configurar** si desea ajustar los ajustes globales.

Al instalarse, el módulo crea sus tablas (`dfbom`, `dfbom_component`, `dfbom_assembly_log`), registra sus hooks y añade la pestaña **Listas de materiales / BOM** en Catálogo. Las listas se gestionan luego desde cada ficha de producto.

## Ajustes generales del módulo

La página de configuración (**Módulos > DataFirefly BOM > Configurar**) reúne los ajustes globales y la lista de las distintas existentes:

- **Sincronización en tiempo real**: recalcula automáticamente el stock de los kits virtuales y los precios calculados en cuanto un componente cambia de stock o de precio. Activada por defecto.
- **Permitir stock negativo**: permite ensamblar o vender aunque el stock de los componentes sea insuficiente (flujo tenso). Desactivada por defecto.
- **Resincronizar todos los stocks / precios**: un botón que recalcula de una vez el stock y el precio de todas las distintas activas. Útil tras una importación o una migración de datos.

## Crear una distinta base

Abra una ficha de producto y luego la pestaña **Módulos**: aparece el panel **Distinta base / BOM**. Active la distinta con el interruptor superior y siga los pasos numerados.

### 1. Elegir el modo de stock

- **Kit virtual**: el stock del producto se calcula automáticamente a partir de los componentes y cada venta los descuenta. Ideal para cofres y packs preparados bajo pedido.
- **Ensamblaje físico**: el producto terminado tiene su propio stock, alimentado por órdenes de ensamblaje. Ideal para la fabricación en serie.

### 2. Elegir el modo de precio

- **Precio fijo**: el precio sigue siendo el definido en la ficha de producto. Sin recálculo.
- **Precio calculado**: el precio pasa a ser la suma de los precios de los componentes, menos un **descuento porcentual** que usted introduce. Se recalcula automáticamente cuando cambia el precio de un componente.

### 3. Añadir los componentes

Use el campo de búsqueda para encontrar un producto por nombre, referencia o ID. Los resultados muestran la miniatura, la referencia, el stock y el precio; haga clic para añadir el componente. Cada línea permite ajustar la **cantidad requerida** con los botones +/−. Puede añadir una **combinación concreta** como componente (aparece por separado en la búsqueda).

Los cuatro indicadores de la parte superior del panel (componentes, cantidad ensamblable, coste de los componentes, precio calculado) se actualizan **en directo** mientras ajusta cantidades y descuento, antes incluso de guardar.

### 4. Guardar

Haga clic en **Guardar la distinta**. El módulo guarda la distinta, recalcula de inmediato el stock del kit (modo virtual) y aplica el precio calculado si procede.

## El modo kit virtual

En modo kit virtual, el stock del producto es el **mínimo** que permiten sus componentes: para un cofre que necesita 2 martillos y 1 maletín, con 120 martillos y 40 maletines en stock, el kit muestra 40 unidades disponibles.

- Al **validar un pedido**, el stock de cada componente se descuenta según las cantidades de la distinta, y después el stock del kit — y el de todos los kits que comparten esos componentes — se recalcula.
- En caso de **anulación o reembolso** de una línea, los componentes se restituyen automáticamente.
- Si la **sincronización en tiempo real** está activa, cualquier cambio de stock de un componente (venta directa, reposición, otro kit) actualiza el stock de los kits afectados.

El modo kit virtual supone que el kit en sí es un producto **sin combinaciones**: el stock calculado se coloca en el producto (combinación 0). Los componentes, en cambio, pueden ser combinaciones.

## El modo ensamblaje físico

En modo ensamblaje, el producto terminado conserva su propio stock. Lo alimenta con **órdenes de ensamblaje** desde el panel de la ficha de producto:

1. Introduzca una cantidad (el botón **Max** indica cuántas permite fabricar su stock de componentes).
2. Haga clic en **Ensamblar**: los componentes se consumen y el stock del producto terminado aumenta.
3. Haga clic en **Desensamblar** para la operación inversa: el producto terminado se descuenta y los componentes se restituyen.

Cada operación queda registrada en un **historial** con dipendiente, fecha, operación y cantidad. El historial completo se consulta en **Catálogo > Listas de materiales / BOM**.

Si el stock negativo no está permitido, el ensamblaje se bloquea cuando el stock de los componentes es insuficiente, y el desensamblaje cuando el stock del producto terminado es insuficiente. Un mensaje indica el máximo posible.

## El precio calculado

En modo precio calculado, el precio sin impuestos del kit es igual a la suma de los precios sin impuestos de sus componentes (multiplicados por sus cantidades), menos el descuento porcentual definido. Este precio se escribe en la ficha de producto y se recalcula:

- cada vez que se guarda la distinta;
- cuando cambia el precio de un componente, si la sincronización en tiempo real está activa;
- al hacer una resincronización global desde la página de configuración.

En modo **precio fijo**, el módulo nunca toca el precio de su ficha de producto. El precio calculado se muestra a título indicativo en el panel, pero no se aplica.

## Distintas multinivel y combinaciones

Un componente puede ser una **combinación concreta** de un producto (talla, color…) o a su vez un **kit** con su propia distinta. Los subconjuntos se anidan entonces en varios niveles y los cálculos de stock se propagan en cascada. El módulo detecta y **bloquea las referencias circulares**, incluso indirectas, en el momento de guardar: un kit no puede contenerse a sí mismo.

## La composición en el front-office

Una casilla **«Mostrar la pestaña Composición en la ficha de producto de la tienda»** permite, producto por producto, presentar el contenido del kit a sus clientes. Una pestaña **Composición** lista entonces cada componente con su imagen, su cantidad y un enlace a su ficha. Desactivada, la distinta permanece totalmente invisible en la tienda.

## FAQ y resolución de problemas

### El stock del kit no se actualiza

Compruebe que la distinta está **activa**, en modo **kit virtual**, y que la sincronización en tiempo real está activada en los ajustes. Un botón **Resincronizar todos los stocks / precios** en la página de configuración fuerza un recálculo completo.

### El precio calculado no se aplica

El precio solo se escribe en la ficha de producto en modo **precio calculado**. En modo precio fijo, el valor mostrado es indicativo. Compruebe también que los componentes tengan un precio definido.

### No puedo ensamblar

Sin permiso de stock negativo, el ensamblaje está limitado por el stock de los componentes. El botón **Max** indica la cantidad máxima posible. Active la opción **Permitir stock negativo** en los ajustes si su flujo lo requiere.

### Aparece un mensaje de referencia circular

Está intentando añadir como componente un producto que ya contiene (directamente o mediante un subkit) el producto en edición. Retire ese componente o reorganice su árbol de distintas.

### ¿Puedo vender los componentes por separado?

Sí, es el escenario típico. Cada componente sigue siendo un producto normal, vendible individualmente. El módulo mantiene la coherencia: cualquier venta, del componente suelto o del kit, actualiza los stocks y las cantidades ensamblables de todos los kits afectados.

### ¿Qué ocurre al desinstalar?

La desinstalación elimina la pestaña y los hooks del módulo, retira sus tablas (`dfbom`, `dfbom_component`, `dfbom_assembly_log`) y sus variables de configuración. Los stocks y precios ya escritos en las fichas de producto permanecen tal cual.
