# Gestão de Validades e Lotes: documentação

> Instalação e atualização O módulo instala-se como qualquer módulo PrestaShop, sem dependências nem Composer. Abra Módulos → Gestor de módulos. Clique em Carregar um módulo e largue o ficheiro ZIP.…

- Página: <https://www.datafirefly.com/pt/documentation/dfdlc/>
- Idioma: pt
- Atualizado em: 2026-10-05
- Outros idiomas: [fr](https://www.datafirefly.com/documentation/dfdlc/index.md), [en](https://www.datafirefly.com/en/documentation/dfdlc/index.md), [es](https://www.datafirefly.com/es/documentation/dfdlc/index.md), [de](https://www.datafirefly.com/de/documentation/dfdlc/index.md), [it](https://www.datafirefly.com/it/documentation/dfdlc/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfdlc/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfdlc/index.md)
- Índice: <https://www.datafirefly.com/pt/documentation/llms.txt>

## Instalação e atualização

O módulo instala-se como qualquer módulo PrestaShop, sem dependências nem Composer.

1. Abra **Módulos → Gestor de módulos**.
2. Clique em **Carregar um módulo** e largue o ficheiro ZIP.
3. Depois clique em **Configurar**.

O módulo cria três tabelas (lotes, movimentos, embalagens do fornecedor) e dois separadores no menu Catálogo: **Lotes e validades** e **Embalagens do fornecedor**.

A partir de uma versão anterior, basta carregar o novo ZIP. Os lotes e o seu histórico são mantidos. Se usava o desconto único da versão 1.0.0, ele passa a ser o primeiro escalão de desconto.

Se os separadores não aparecerem logo, limpe a cache em Parâmetros avançados → Desempenho e volte a iniciar sessão.

## Data limite de consumo e durabilidade mínima: o que faz o módulo

A **data limite de consumo** (DLC, consumir até) aplica-se a alimentos perecíveis: ultrapassada, o produto não deve ser vendido. A **data de durabilidade mínima** (DLUO / DDM, consumir de preferência antes de) indica perda de qualidade: o produto pode continuar à venda se o cliente estiver informado.

- Um lote expirado com data limite de consumo nunca é atribuído a uma encomenda, mesmo que o cron ainda não tenha corrido nesse dia.
- As ações automáticas na expiração (retirada do stock, desativação do produto) só se aplicam à data limite de consumo.
- Um lote com durabilidade mínima ultrapassada é apenas desativado; enquanto estiver ativo, pode ser atribuído a encomendas.

Escolha com cuidado o tipo de data ao criar o lote: é ele que decide se as ações automáticas se aplicam.

## Configurar o módulo

A página de configuração mostra o URL do cron, um estado rápido dos lotes e quatro blocos de definições.

### Apresentação na página do produto

- **Mostrar a data na página do produto**: data do lote em stock mais próximo para a combinação escolhida pelo cliente.
- **Limite do selo de validade curta**: abaixo deste número de dias aparece o selo «Validade curta». Por defeito: 10 dias.

### Descontos automáticos em validade curta

- **Ativar os descontos automáticos**: ao desativar, todos os descontos criados pelo módulo são removidos.
- **Escalões de desconto**: até 10 linhas «quando o lote expira dentro de X dias» / «desconto Y %». Veja a secção Escalões de desconto.

### Stock e custos

- **Quando expira um lote com data limite de consumo**: desativar apenas o lote, desativá-lo e retirar a quantidade restante do stock (recomendado), ou retirar o stock e desativar o produto se não restar nenhum lote válido.
- **Adicionar por defeito a quantidade recebida ao stock do PrestaShop**: valor proposto ao criar um lote. Deixe em Não enquanto regista lotes de stock já contabilizado no PrestaShop.
- **Registar o custo do lote em cada linha de encomenda**: veja Custo de compra e margens.
- **Devolver as unidades aos lotes quando uma encomenda é cancelada**: veja Cancelamento e reativação.
- **Imprimir os números de lote nas guias de remessa** (ativo por defeito) e **nas faturas** (desativado por defeito).

### Alertas por e-mail

- **Limite de alerta antes da validade**: janela vigiada pelo e-mail resumo. Por defeito: 30 dias.
- **E-mail do destinatário**: deixe vazio para usar o endereço da loja.

## Embalagens do fornecedor

Se compra em caixas e vende à unidade, defina a embalagem uma vez em **Catálogo → Embalagens do fornecedor**:

- produto e, se necessário, combinação;
- nome (por exemplo «Caixa de 12»);
- referência do fornecedor e EAN da caixa;
- unidades por caixa e custo habitual da caixa (sem IVA);
- referência e EAN da unidade vendida. Se ficarem vazios, são usados os do produto ou da combinação.

O custo unitário resultante é mostrado em tempo real. Um produto pode ter várias embalagens.

## Criar e receber um lote

Em **Catálogo → Lotes e validades**, clique em **Adicionar um lote**, ou use o mesmo botão no painel de lotes da página do produto.

### Receção à unidade

1. Procure o produto (pelo menos 2 caracteres) e escolha a combinação, ou deixe «Todas as combinações».
2. Deixe **Recebido à unidade**.
3. Indique número do lote, tipo de data, data limite, quantidade recebida e custo de compra por unidade sem IVA.
4. Defina **Adicionar esta quantidade ao stock do PrestaShop**: Sim para uma nova entrega, Não para stock já contabilizado.

### Receção em caixas

1. Depois do produto, escolha **Recebido em caixas do fornecedor**.
2. Selecione a embalagem, indique as **caixas recebidas** e o **custo por caixa (sem IVA)**, pré-preenchido com o custo habitual.
3. A quantidade e o custo unitário são calculados e bloqueados: 3 caixas de 12 a 30 € dão 36 unidades a 2,50 €.

A referência do fornecedor do lote é pré-preenchida com a da caixa. Pode substituí-la pelo número da guia de remessa do fornecedor.

### Alterar, desativar, eliminar

- O produto de um lote não pode ser alterado depois da criação.
- Alterar a quantidade regista um movimento de ajuste sem mexer no stock do PrestaShop.
- Um número de lote só pode existir uma vez por produto.
- Um lote já vendido não pode ser eliminado: desative-o.

## Importar lotes em CSV

Botão **Importar lotes (CSV)** na lista de lotes. Nessa página pode descarregar um ficheiro de exemplo.

- Separador ponto e vírgula, vírgula ou tabulação; primeira linha = nomes das colunas; máximo de 5.000 linhas e 5 MB.
- O produto é encontrado por `reference`, `ean13` ou `id_product`. Uma referência de combinação também funciona em `reference`.
- `combination_reference` ou `combination_ean13` associa o lote a uma combinação.
- Obrigatórios: `lot_number` e `expiry_date` (AAAA-MM-DD ou DD/MM/AAAA).
- `date_type`: dlc ou dluo (dlc por defeito).
- `quantity` e `unit_cost` para uma receção à unidade.
- `boxes`, `box_reference` e `box_cost` para uma receção em caixas: quantidade e custo unitário são calculados a partir da embalagem.
- `supplier_ref` e `note` são opcionais.

```
reference;lot_number;date_type;expiry_date;quantity;unit_cost
CROQ-2KG;L2026-118;dluo;2027-03-31;24;6.40
PATE-12;L2026-204;dlc;15/01/2027;;
```

Um número de lote que já existe para o produto é ignorado. O relatório lista cada linha com erro e o motivo; as restantes linhas são importadas.

## Painel de indicadores e vistas filtradas

No topo da lista, os cartões são clicáveis e filtram a lista: lotes expirados ainda ativos, lotes perto da validade, lotes com desconto ativo, valor de compra em risco e valor de compra do stock em lotes. O filtro mantém-se ao mudar de página; **Mostrar todos os lotes** remove-o.

## A saída FEFO

Na validação de uma encomenda, para cada produto:

1. primeiro os lotes da combinação encomendada, depois os do produto;
2. os lotes são consumidos da data mais próxima para a mais distante;
3. os lotes expirados com data limite de consumo ficam excluídos.

Uma encomenda de 10 unidades perante um lote de 4 e outro de 8 retira as 4 primeiras e depois 6 do lote seguinte. Cada retirada fica registada com a encomenda.

## Custo de compra e margens

Com **Registar o custo do lote em cada linha de encomenda** ativo, o módulo calcula o custo médio ponderado dos lotes consumidos e guarda-o como preço de compra da linha da encomenda. As estatísticas de margem do PrestaShop passam a usar o custo real. Os lotes sem custo não entram no cálculo.

## Escalões de desconto

Exemplo: 10 % a 90 dias, 20 % a 60 dias, 30 % a 30 dias.

- Aplica-se a percentagem mais alta entre os escalões atingidos: o desconto nunca desce à medida que a data se aproxima.
- Só se aplica ao lote que sai primeiro, por produto ou por combinação.
- É uma regra de preço de catálogo padrão do PrestaShop que termina na data limite.
- Quando o lote esgota, o desconto passa para o lote seguinte ou desaparece.
- Os descontos são recalculados ao guardar as definições ou um lote, e depois todos os dias pelo cron.

Estas regras seguem as prioridades habituais do PrestaShop. Se já aplica descontos de catálogo amplos, verifique as prioridades antes de ativar os escalões.

## Preparação: encomenda e guia de remessa

Na encomenda do back office, o bloco **Lotes enviados (FEFO)** indica para cada produto o lote, a data, a quantidade e o custo. Os mesmos lotes são impressos na guia de remessa, e na fatura se a opção estiver ativa.

## Cancelamento e reativação

Quando uma encomenda passa a Cancelada, as suas unidades voltam aos lotes de origem. Se depois voltar a um estado válido, as unidades são retiradas de novo pela ordem FEFO. O ciclo pode repetir-se sem contagem dupla.

As devoluções parciais com reposição de stock não são atribuídas automaticamente a um lote. Aparecem no Controlo de stock, onde cria o lote correspondente.

## Controlo de stock

O botão **Controlo de stock** compara as unidades em lotes com o stock do PrestaShop:

- uma diferença positiva significa unidades sem lote: **Criar um lote para as unidades em falta** abre o formulário pré-preenchido;
- uma diferença negativa significa que os lotes contêm mais do que o stock: corrija os lotes ou o stock.

Os produtos com lotes ao nível do produto são comparados pelo stock total; os produtos com todos os lotes associados a combinações são comparados combinação a combinação.

## Painel de lotes na página do produto

A página do produto no back office lista os lotes do produto com estado, custo e desconto, e compara o total com o stock do PrestaShop. O botão Adicionar um lote pré-seleciona o produto. No PrestaShop 8.1 e 9, o painel está no separador Módulos da página do produto.

## Tarefa cron

A saída de stock, a rastreabilidade e a importação funcionam sem cron. Os escalões de desconto, os lotes expirados e o alerta por e-mail precisam de uma chamada diária ao URL indicado na configuração:

```
https://a-sua-loja.pt/index.php?fc=module&module=dfdlc&controller=cron&token=O_SEU_TOKEN
```

A resposta JSON indica os lotes desativados, as unidades retiradas, os produtos desativados, os descontos criados, atualizados ou removidos e os alertas enviados.

## Alertas por e-mail

Em cada execução do cron, um e-mail resumo lista os lotes cuja data entra na janela de alerta: número, produto, tipo, data e quantidade. Cada lote é assinalado uma só vez. Os modelos são fornecidos em 8 idiomas na pasta `mails/`.

## Apresentação na página do produto

Através do hook `displayProductAdditionalInfo`, a página mostra «Consumir até» ou «Consumir de preferência antes de» com a data do lote mais próximo para a combinação escolhida. Abaixo do limite aparece o selo «Validade curta» com o desconto. Um desconto de escalão fora desse limite é indicado como «oferta por validade». O modelo `views/templates/hook/product-expiry.tpl` pode ser substituído no tema.

## Rastreabilidade e recolha de lotes

O formulário de um lote mostra o seu histórico: receção, encomendas, cancelamentos, ajustes, retirada por expiração, com ligação a cada encomenda. **Exportar CSV** descarrega o histórico do lote; **Exportar movimentos** na lista descarrega o histórico completo. Estes dados são a base de um procedimento de recolha.

## Perguntas frequentes

### O módulo substitui o stock do PrestaShop?

Não. O stock do PrestaShop continua a ser a referência para vender; o módulo divide-o em lotes datados e assinala as diferenças.

### E se os lotes não cobrirem todo o stock?

A encomenda decorre normalmente: o módulo retira o que estiver disponível nos lotes. O Controlo de stock mostra as unidades sem lote.

### É compatível com multiloja?

Sim. Cada lote pertence à loja onde foi criado.

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

As três tabelas são eliminadas com o seu conteúdo. Faça uma cópia de segurança se pretende reinstalar.
