# Lista de Materiais / BOM, kits e montagem: guia completo

> Apresentação e pré-requisitos O módulo Lista de Materiais / BOM acrescenta ao PrestaShop uma gestão de Bill of Materials: cada produto pode declarar a lista dos seus componentes com as…

- Página: <https://www.datafirefly.com/pt/documentation/datafireflybom/>
- Idioma: pt
- Atualizado em: 2026-09-09
- Outros idiomas: [fr](https://www.datafirefly.com/documentation/datafireflybom/index.md), [en](https://www.datafirefly.com/en/documentation/datafireflybom/index.md), [es](https://www.datafirefly.com/es/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), [nl](https://www.datafirefly.com/nl/documentation/datafireflybom/index.md)
- Índice: <https://www.datafirefly.com/pt/documentation/llms.txt>

## Apresentação e pré-requisitos

O módulo Lista de Materiais / BOM acrescenta ao PrestaShop uma gestão de **Bill of Materials**: cada produto pode declarar a lista dos seus componentes com as respetivas quantidades, e a loja tira daí automaticamente as consequências no stock e no preço. Estão disponíveis duas lógicas, consoante a sua atividade: o **kit virtual** (stock calculado, decremento dos componentes na venda) e a **montagem física** (ordens de fabrico que produzem stock de produto acabado).

- Compatível com PrestaShop 8.0 a 9.x, tema Classic e temas derivados.
- PHP 7.4 a 8.3.
- Multiloja e multi-idioma.
- Componentes com combinações, listas de materiais multinível e proteção contra referências circulares.
- Arquitetura conforme ao PrestaShop (ModuleAdminController, ObjectModel), sem dependências Composer.

Em modo **kit virtual**, o stock do produto deixa de ser introduzido manualmente: o módulo calcula-o como o mínimo permitido pelos componentes e atualiza-o a cada movimento.

## Instalação

Instale o módulo como qualquer outro módulo PrestaShop:

1. Descarregue o arquivo `datafireflybom.zip` a partir da sua conta de cliente.
2. No back-office, vá a **Módulos > Gestor de módulos**.
3. Clique em **Carregar um módulo** e coloque o arquivo.
4. Depois de instalado, clique em **Configurar** se quiser ajustar as definições globais.

Na instalação, o módulo cria as suas tabelas (`dfbom`, `dfbom_component`, `dfbom_assembly_log`), regista os seus hooks e acrescenta o separador **Listas de materiais / BOM** em Catálogo. A gestão das listas passa depois a fazer-se a partir de cada ficha de produto.

## Definições gerais do módulo

A página de configuração (**Módulos > DataFirefly BOM > Configurar**) reúne as definições globais e a lista das listas de materiais existentes:

- **Sincronização em tempo real**: recalcula automaticamente o stock dos kits virtuais e os preços calculados assim que um componente muda de stock ou de preço. Ativa por predefinição.
- **Permitir stocks negativos**: permite montar ou vender mesmo com stock de componentes insuficiente (fluxo tenso). Desativada por predefinição.
- **Ressincronizar todos os stocks / preços**: um botão que recalcula de uma só vez o stock e o preço de todas as listas ativas. Útil depois de uma importação ou de uma recuperação de dados.

## Criar uma lista de materiais

Abra uma ficha de produto e depois o separador **Módulos**: aparece o painel **Lista de materiais / BOM**. Ative a lista com o interruptor no topo e siga os passos numerados.

### 1. Escolher o modo de stock

- **Kit virtual**: o stock do produto é calculado automaticamente a partir dos componentes e cada venda decrementa-os. Ideal para coffrets e packs preparados por encomenda.
- **Montagem física**: o produto acabado tem stock próprio, alimentado por ordens de montagem. Ideal para o fabrico em série.

### 2. Escolher o modo de preço

- **Preço fixo**: o preço continua a ser o definido na ficha do produto. Sem recálculo.
- **Preço calculado**: o preço passa a ser a soma dos preços dos componentes, menos um **desconto em percentagem** que introduz. É recalculado automaticamente quando um componente muda de preço.

### 3. Acrescentar os componentes

Use o campo de pesquisa para encontrar um produto por nome, referência ou ID. Os resultados mostram a miniatura, a referência, o stock e o preço; clique para acrescentar o componente. Cada linha permite definir a **quantidade necessária** com os botões +/−. Pode acrescentar uma **combinação específica** como componente (aparece separadamente na pesquisa).

Os quatro indicadores no topo do painel (componentes, quantidade montável, custo dos componentes e preço calculado) atualizam-se **em direto** enquanto ajusta quantidades e desconto, ainda antes de gravar.

### 4. Gravar

Clique em **Gravar a lista de materiais**. O módulo guarda a lista, recalcula de imediato o stock do kit (modo virtual) e aplica o preço calculado, se for o caso.

## O modo kit virtual

Em modo kit virtual, o stock do produto é o **mínimo** daquilo que os seus componentes permitem: para um coffret que exige 2 martelos e 1 mala, com 120 martelos e 40 malas em stock, o kit apresenta 40 unidades disponíveis.

- Na **validação de uma encomenda**, o stock de cada componente é decrementado segundo as quantidades da lista, e o stock do kit, bem como o de todos os kits que partilham esses componentes, é recalculado.
- Em caso de **anulação ou reembolso** de uma linha, os componentes são automaticamente devolvidos.
- Se a **sincronização em tempo real** estiver ativa, qualquer mudança de stock de um componente (venda direta, reposição, outro kit) atualiza o stock dos kits em causa.

O modo kit virtual pressupõe que o próprio kit é um produto **sem combinações**: o stock calculado é colocado no produto (combinação 0). Os componentes, esses, podem ser combinações.

## O modo montagem física

Em modo montagem, o produto acabado mantém o seu próprio stock. Alimenta-o com **ordens de montagem** a partir do painel da ficha de produto:

1. Introduza uma quantidade (o botão **Máx.** indica quanto o seu stock de componentes permite fabricar).
2. Clique em **Montar**: os componentes são consumidos e o stock do produto acabado aumenta.
3. Clique em **Desmontar** para a operação inversa: o produto acabado é decrementado e os componentes devolvidos.

Cada operação fica registada num **histórico** com o colaborador, a data, a operação e a quantidade. O histórico completo pode ser consultado em **Catálogo > Listas de materiais / BOM**.

Se os stocks negativos não estiverem autorizados, a montagem fica bloqueada quando o stock dos componentes é insuficiente, e a desmontagem quando o stock do produto acabado é insuficiente. Uma mensagem indica o máximo possível.

## O preço calculado

Em modo preço calculado, o preço sem IVA do kit é igual à soma dos preços sem IVA dos seus componentes (multiplicados pelas respetivas quantidades), menos o desconto em percentagem definido. Este preço é escrito na ficha do produto e recalculado:

- a cada gravação da lista de materiais;
- quando o preço de um componente muda, se a sincronização em tempo real estiver ativa;
- numa ressincronização global a partir da página de configuração.

Em modo **preço fixo**, o módulo nunca toca no preço da sua ficha de produto. O preço calculado continua a ser apresentado a título indicativo no painel, mas não é aplicado.

## Listas multinível e combinações

Um componente pode ser uma **combinação específica** de um produto (tamanho, cor...) ou ele próprio um **kit** com a sua própria lista de materiais. Os subconjuntos encaixam-se então em vários níveis e os cálculos de stock propagam-se em cascata. O módulo deteta e **bloqueia as referências circulares**, mesmo indiretas, no momento da gravação: um kit não pode conter-se a si próprio.

## A composição no front-office

Uma caixa **«Mostrar o separador Composição na ficha de produto da loja»** permite, produto a produto, apresentar o conteúdo do kit aos seus clientes. Um separador **Composição** passa então a listar cada componente com a sua imagem, a sua quantidade e uma ligação para a respetiva ficha. Se estiver desativada, a lista de materiais fica totalmente invisível do lado da loja.

## Perguntas frequentes e resolução de problemas

### O stock do kit não é atualizado

Confirme que a lista está **ativa**, em modo **kit virtual**, e que a sincronização em tempo real está ativada nas definições. O botão **Ressincronizar todos os stocks / preços** na página de configuração força um recálculo completo.

### O preço calculado não é aplicado

O preço só é escrito na ficha do produto em modo **preço calculado**. Em modo preço fixo, o valor apresentado é indicativo. Verifique também se os componentes têm mesmo um preço preenchido.

### Não consigo montar

Sem autorização de stocks negativos, a montagem fica limitada pelo stock dos componentes. O botão **Máx.** indica a quantidade máxima possível. Ative a opção **Permitir stocks negativos** nas definições se o seu fluxo o exigir.

### Aparece uma mensagem de referência circular

Está a tentar acrescentar como componente um produto que já contém (diretamente ou através de um subkit) o produto em edição. Retire esse componente ou reorganize a árvore de listas de materiais.

### Posso vender os componentes em separado?

Sim, é o cenário típico. Cada componente continua a ser um produto normal, vendável individualmente. O módulo mantém a coerência: qualquer venda, do componente isolado ou do kit, atualiza os stocks e as quantidades montáveis de todos os kits em causa.

### O que acontece na desinstalação?

A desinstalação elimina o separador e os hooks do módulo, remove as suas tabelas (`dfbom`, `dfbom_component`, `dfbom_assembly_log`) e as suas variáveis de configuração. Os stocks e preços já escritos nas fichas de produto ficam como estão.
