Pular para conteúdo

Pedidos de Venda

Objetivo

Documentar o fluxo completo de um pedido de venda no contexto da localização brasileira, incluindo campos fiscais, cálculo automático de impostos, rateio de frete, geração de fatura e NF-e.


Vendas → Pedidos → Cotações / Pedidos de Venda


Implementação Técnica

  • Model: sale.order (herança) — classe SaleOrder
  • Model linhas: sale.order.line (herança) — classe SaleOrderLine
  • Arquivo: l10n_br_ciel_it_account/models/sale_order.py (linha 575)

Campos Fiscais do Pedido de Venda

Cabeçalho

Campo Tipo Descrição Padrão
l10n_br_tipo_pedido Selection Tipo de operação de saída (50+ tipos) venda
l10n_br_operacao_consumidor Selection Se é operação para consumidor final 0 (Normal)
l10n_br_indicador_presenca Selection Indicador de presença do comprador 0 (Não se aplica)
l10n_br_compra_indcom Selection Destinação de uso do cliente uso
l10n_br_imposto_auto Boolean Calcular impostos automaticamente True
l10n_br_rateio_frete_auto Boolean Rateio automático de frete/seguro/despesas True
l10n_br_cfop_id Many2one CFOP principal determinado automaticamente
l10n_br_operacao_id Many2one (computed) Operação fiscal determinada
payment_provider_id Many2one Forma de pagamento (Cielo, Rede, PagBank, etc.)
l10n_br_pedido_compra Char Pedido de compra do cliente
l10n_br_informacao_fiscal Text Observações fiscais (geradas automaticamente)
l10n_br_informacao_complementar Text Informações complementares para NF
l10n_br_iss_municipio_id Many2one Município de incidência do ISS
picking_note Text Notas para a equipe de expedição

Totais Computados

Campo Descrição
l10n_br_prod_valor Total dos produtos
l10n_br_frete Total do frete
l10n_br_seguro Total do seguro
l10n_br_despesas_acessorias Total de despesas acessórias
l10n_br_desc_valor Total de desconto
l10n_br_icms_base / valor Base/Valor do ICMS
l10n_br_icmsst_base / valor Base/Valor do ICMS ST
l10n_br_ipi_valor Valor do IPI
l10n_br_pis_valor Valor do PIS
l10n_br_cofins_valor Valor do COFINS
l10n_br_iss_valor Valor do ISS
l10n_br_ibs_valor / cbs_valor / is_valor IBS/CBS/IS (Reforma Tributária)
l10n_br_*_ret_valor Retenções (IRPJ, INSS, ISS, CSLL, PIS, COFINS)
l10n_br_total_nfe Total do pedido
l10n_br_total_tributos Total de tributos
l10n_br_total_tributos_retidos Total de tributos retidos
l10n_br_peso_total Peso total dos produtos

Regras de Negócio

1. Cálculo Automático de Impostos

Regra funcional: Ao alterar qualquer campo relevante (produto, parceiro, frete, etc.), o sistema recalcula automaticamente todos os impostos.

Implementação técnica: O trigger @api.onchange('order_line','l10n_br_tipo_pedido','partner_id','company_id','l10n_br_frete','l10n_br_seguro','l10n_br_despesas_acessorias') chama simulate_impostos() para cada linha.

O método simulate_impostos() (linha 673) executa o fluxo de cálculo completo: 1. Determina tipo de produto, tipo de cliente e destino 2. Busca exceções NCM/UF 3. Encontra a operação fiscal 4. Calcula todos os impostos 5. Aplica via _handle_taxes()

2. Rateio de Frete, Seguro e Despesas

Regra funcional: Frete, seguro e despesas acessórias são rateados proporcionalmente entre as linhas do pedido, com base no valor líquido (produtos - desconto).

Fórmula: fator = (linha.prod_valor - linha.desc_valor) / (total.prod_valor - total.desc_valor)

O residual (centavos restantes) é alocado na última linha do pedido.

3. Tipos de Pedido sem Financeiro

Operações da lista TIPO_PEDIDO_SAIDA_NO_PAYMENT (remessas, devoluções, etc.) não geram movimentação financeira. Incluem: bonificação, conserto, teste, demonstração, mostruário, depósito, feira, garantia, consignação, entre outros.

4. Separação de Faturas (Serviço vs. Produto)

Regra funcional: Se o parâmetro l10n_br_split_service_invoice estiver ativo na empresa, o sistema gera faturas separadas para itens de serviço e produtos.

5. Mensagens Fiscais Dinâmicas

O sistema suporta placeholders nas mensagens fiscais que são substituídos dinamicamente:

Placeholder Valor
%%l10n_br_mensagem_fiscal_01_id%% a %%_05_id%% Observações fiscais do parceiro
%%l10n_br_is%% Inscrição Suframa do parceiro
%%email%% E-mail do parceiro
%%invoice_origin%% Origem da fatura
%%l10n_br_pedido_compra%% Pedido de compra do cliente

Ações Disponíveis

Ação Menu/Botão Descrição
Confirmar pedido Botão "Confirmar" Confirma o pedido e gera estoque
Criar fatura Botão "Criar Fatura" Gera account.move com dados fiscais
Calcular impostos Flag l10n_br_calcular_imposto Recalcula todos os impostos
Sincronizar CATP Botão "CATP" Sincroniza produtos com Siscomex

Cenários de Uso / Troubleshooting

1. Impostos não calculados no pedido

  • Verificar: l10n_br_imposto_auto está marcado?
  • Verificar: O produto tem NCM e origem cadastrados?
  • Verificar: Existe operação fiscal para este tipo de pedido + empresa?

2. Frete não rateado corretamente

  • Verificar: l10n_br_rateio_frete_auto está marcado?
  • Verificar: Os valores de frete/seguro estão preenchidos no cabeçalho?

3. NF-e separada para serviços

  • Causa: l10n_br_split_service_invoice está ativo
  • Resultado: São geradas duas faturas separadas

Referências Cruzadas