Estoque e Logística¶
Objetivo¶
Documentar as extensões da localização brasileira nos módulos de Estoque (stock.picking) e Movimentações, incluindo faturamento pelo picking, movimentação de estoque de terceiros, integração com lotes/rastreabilidade do DF-e, e cálculo de pesos.
Menu do Sistema¶
Estoque → Operações → Transferências Estoque → Operações → Recebimentos/Expedições Wizard: Botão "Criar NF" no formulário do picking
Implementação Técnica¶
- Model:
stock.picking(herança) — classeStockPicking - Model:
stock.picking.type(herança) — classeStockPickingType - Model:
stock.move(herança) — classestock_move - Wizard:
stock.invoice.onshipping— classestock_invoice_onshipping - Arquivo:
l10n_br_ciel_it_account/models/stock_picking.py(791 linhas)
Campos Adicionais no Picking¶
stock.picking¶
| Campo | Tipo | Descrição |
|---|---|---|
invoice_state |
Selection | invoiced (Faturado) ou 2binvoiced (À Faturar) |
invoice_id |
Many2one | Fatura vinculada ao picking |
invoice_id_state |
Selection (related) | Situação da NF-e |
l10n_br_pdf_aut_nfe |
Binary (related) | DANFE da NF-e |
l10n_br_xml_aut_nfe |
Binary (related) | XML da NF-e |
l10n_br_xml_cce_nfe |
Binary (related) | XML da CCe |
l10n_br_informacao_fiscal |
Text | Informação fiscal |
l10n_br_informacao_complementar |
Text | Informação complementar |
picking_terceiro_id |
Many2one | Picking de estoque de terceiro |
picking_industrializacao_id |
Many2one | Picking de industrialização |
show_btn_preencher_lotes_dfe |
Boolean (computed) | Exibir botão de preenchimento automático de lotes |
stock.picking.type¶
| Campo | Tipo | Descrição |
|---|---|---|
invoice_move_type |
Selection | Tipo de fatura a ser gerada (Cliente/Fornecedor/Crédito/Débito) |
l10n_br_tipo_pedido |
Selection | Tipo de pedido de saída padrão para este tipo de operação |
l10n_br_tipo_pedido_entrada |
Selection | Tipo de pedido de entrada padrão |
Faturamento pelo Picking (Wizard)¶
Visão Geral¶
O wizard stock.invoice.onshipping permite gerar NF-e diretamente a partir de um picking, sem necessidade de usar o fluxo padrão Venda → Fatura.
Menu: Botão "Criar NF" no formulário ou lista de pickings selecionados
Campos do Wizard¶
| Campo | Tipo | Descrição |
|---|---|---|
journal_id |
Many2one | Diário contábil (selecionado automaticamente pelo tipo de picking) |
move_type |
Selection | Tipo de fatura: Cliente, Fornecedor, Crédito, Débito |
l10n_br_tipo_pedido |
Selection | Tipo de operação (saída) |
l10n_br_tipo_pedido_entrada |
Selection | Tipo de operação (entrada) |
group |
Boolean | Agrupar faturas por parceiro |
invoice_date |
Date | Data da fatura (padrão: hoje no fuso de SP) |
Fluxo do Wizard¶
flowchart TD
A["Selecionar Picking(s)"] --> B["Abrir Wizard 'Criar NF'"]
B --> C["Definir Diário e Tipo"]
C --> D["action_invoice_create()"]
D --> E{"Split serviço<br/>x produto?"}
E -->|Sim| F["Gerar NF de Serviço<br/>(sem frete)"]
F --> G["Gerar NF de Produto"]
E -->|Não| H["Gerar NF única"]
G --> I["Recalcular impostos"]
H --> I
I --> J["Abrir fatura gerada"]
Regras de Negócio do Faturamento¶
Regra funcional: Se a empresa tem
l10n_br_split_service_invoice = True, itens de serviço e produtos são separados em faturas distintas. A NF de serviço não carrega frete.Regra funcional: Para kits (BOM), o sistema insere apenas 1 item por kit na fatura, evitando duplicidade dos componentes.
Regra funcional: O preço unitário é herdado da linha do pedido de venda (
sale.order.line.price_unit) quando disponível, ou do preço de lista do produto como fallback.
Movimentação de Estoque de Terceiros¶
Funcionalidade¶
Regra funcional: Em operações de industrialização (remessa e retorno), o sistema cria automaticamente movimentações para controlar o estoque em posse de terceiros.
Implementação técnica: action_movimentar_estoque_terceiro()¶
Disparado automaticamente em button_validate() — ao validar um picking, se a operação é de industrialização:
Saída (Remessa para Industrialização)¶
- Cria um picking interno: Estoque empresa → Localização do terceiro
- A localização do terceiro é criada automaticamente como filho de
stock_location_customers_terceiro - Nome:
{CNPJ} - {Nome do Parceiro}
Entrada (Retorno de Industrialização)¶
Para itens com CFOP 1902/1903 (retorno de material sem custo):
1. Cria picking: Terceiro → Localização de cliente (saída de estoque do terceiro)
2. Cria picking: Estoque empresa → Produção Virtual (consumo)
Preenchimento Automático de Lotes (DF-e)¶
Funcionalidade¶
Regra funcional: Para produtos com rastreabilidade (lote/serial), o sistema pode preencher automaticamente os lotes a partir dos dados da NF-e importada (DF-e).
Método: action_preencher_lotes_dfe()¶
- Para cada move com produto rastreável
- Busca os lotes registrados na NF-e (campo
det_rastro_nlotedo DF-e) - Cria
stock.lotse não existir (com data de validade do DF-e, se aplicável) - Preenche os
move_line_idscom as quantidades do DF-e
Visibilidade: O botão só aparece se: - Há movimentos com produto rastreável - Existem dados de lote no DF-e - O picking não está finalizado/cancelado
Cálculo de Peso¶
Regra funcional: Se o parâmetro
l10n_br_ciel_it_account.calcular_peso = "1", o peso líquido e bruto são calculados automaticamente com base nos pesos unitários dos produtos × quantidade.
Campos calculados no picking:
- l10n_br_peso_liquido — Soma dos pesos líquidos
- l10n_br_peso_bruto — Soma dos pesos brutos
- l10n_br_volumes — Quantidade de volumes
- l10n_br_especie — Espécie do volume
- l10n_br_marca — Marca do volume
- l10n_br_numeracao_volume — Numeração dos volumes
Cenários de Uso / Troubleshooting¶
1. Botão "Criar NF" não aparece¶
- Verificar: O picking está no estado correto (não cancelado/rascunho)
- Verificar: O
invoice_statenão éinvoiced
2. Fatura gerada sem impostos¶
- Causa: Os impostos são recalculados após a criação da fatura
- Solução: Os impostos são aplicados automaticamente via
onchange_l10n_br_calcular_imposto()
3. Lotes não preenchidos automaticamente¶
- Verificar: O produto tem
tracking = 'lot'ou'serial' - Verificar: O DF-e tem dados de rastreabilidade (
lote_ids)
4. Estoque de terceiro não criado¶
- Verificar: O tipo de pedido é industrialização (
TIPO_PEDIDO_SAIDA_INDUSTRIALIZACAOouTIPO_PEDIDO_ENTRADA_INDUSTRIALIZACAO) - Verificar: A localização
stock_location_customers_terceiroexiste
Referências Cruzadas¶
- Anterior: Compras
- Próximo: Apuração de Impostos
- Fatura gerada: Notas Fiscais
- Pedidos vinculados: Vendas, Compras
- Índice: Sumário Geral