Bloco K — Produção e Estoque¶
Finalidade¶
Escriturar movimentação de estoque e produção, com dados de inventário escriturado, ordens de produção e insumos consumidos.
K010 — Tipo de Leiaute¶
| Campo | Origem | Regra |
|---|---|---|
IND_TP_LEIAUTE |
🏢 company.l10n_br_ind_tp_leiaute_k010 ou '1' |
✅ Empresa → Tipo Leiaute K |
Valores possíveis:
1(simplificado),2(completo),3(restrito)
K100 — Período de Apuração¶
| Campo | Origem |
|---|---|
DT_INI |
⚙️ self.date_ini |
DT_FIN |
⚙️ self.date_fim |
K200 — Estoque Escriturado¶
Origem dos dados: stock.valuation.layer (camadas de valorização de estoque)
Filtros Aplicados¶
product_ids = search([
l10n_br_ncm_id != False,
l10n_br_tipo_produto in ['00','01','02','03','04','05','06','10'],
type != 'consu'
])
stock_valuation_ids = search([
product_id in product_ids,
create_date <= date_fim,
company_id = company_id
])
Campos¶
| Campo | Origem | Regra |
|---|---|---|
DT_EST |
⚙️ self.date_fim |
Data final do período |
COD_ITEM |
📦 product.default_code |
✅ |
QTD |
🧮 max(sum(svl.quantity), 0) |
Mínimo zero |
IND_EST |
🔒 '0' (próprio) |
Fixo |
Regra: Produtos com quantidade zero ou negativa são ignorados.
K230 — Produção (Ordens de Produção — MRP)¶
Origem dos dados: stock.move com production_id
Filtros¶
stock_move_ids = search([
production_id != False,
state = 'done',
date >= date_ini,
date <= date_fim,
company_id = company_id
])
Campos¶
| Campo | Origem | Regra |
|---|---|---|
DT_INI_OP |
📄 production.date_start (somente data) |
✅ |
DT_FIN_OP |
📄 move.move_line_ids[0].date |
✅ Primeira linha do movimento |
COD_DOC_OP |
📄 production.name (máx 30 chars) |
✅ Nome da OP |
COD_ITEM |
📦 production.product_id.default_code |
✅ Produto acabado |
QTD_ENC |
📄 move.move_line_ids[0].quantity |
✅ Quantidade encerrada |
Nota: Gera um K230 para cada
stock.movevinculado a uma OP, não para cada OP.
K235 — Insumos Consumidos¶
Origem dos dados: stock.move com raw_material_production_id
Filtros¶
Campos¶
| Campo | Origem | Regra |
|---|---|---|
DT_SAIDA |
📄 move_raw.move_line_ids[0].date |
✅ Data do consumo |
COD_ITEM |
📦 move_raw.product_id.default_code |
✅ Insumo |
QTD |
📄 move_raw.move_line_ids[0].quantity |
✅ Quantidade consumida |
COD_INS_SUBST |
🔒 '' |
Não implementado |
Hierarquia de Registros¶
flowchart TD
K1["K001 (Abertura)"]
K10["K010 (Tipo Leiaute)"]
K100["K100 (Período)"]
K200["K200 (Estoque Escriturado)"]
K230["K230 (Produção)"]
K235["K235 (Insumos)"]
K990["K990 (Encerramento)"]
K1 --> K10
K10 --> K100
K100 --> K200
K100 --> K230
K230 --> K235
K100 --> K990
Dependências¶
| Pré-requisito | Efeito |
|---|---|
| Módulo MRP instalado | Sem MRP, K230/K235 não geram dados |
| Produtos com NCM | Produtos sem NCM são excluídos do K200 |
Produtos com default_code |
Referência obrigatória para COD_ITEM |
OP finalizada (state = 'done') |
OPs em andamento não geram K230/K235 |
Camadas de valorização (stock.valuation.layer) |
Base do K200 |
Problemas Comuns¶
| Sintoma | Causa | Solução |
|---|---|---|
| K200 vazio | Sem estoque ou sem NCM nos produtos | Verificar NCM e l10n_br_tipo_produto |
| K230/K235 vazio | Sem OPs finalizadas no período | Verificar ordens de produção |
| Quantidade K200 zerada | Todas as camadas de valorização com qty ≤ 0 | Verificar movimentações de estoque |
Referências¶
- Blocos G/H — Inventário e CIAP
- Bloco 0 — Cadastros (0200 de produtos)
- EFD ICMS/IPI