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.
Menu do Sistema¶
Vendas → Pedidos → Cotações / Pedidos de Venda
Implementação Técnica¶
- Model:
sale.order(herança) — classeSaleOrder - Model linhas:
sale.order.line(herança) — classeSaleOrderLine - 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_invoiceestiver 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_autoestá 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_autoestá 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_invoiceestá ativo - Resultado: São geradas duas faturas separadas
Referências Cruzadas¶
- Anterior: Notas Fiscais
- Próximo: Compras
- Motor de cálculo: Cálculo de Impostos
- Operações fiscais: Operações Fiscais
- Faturamento na expedição: Estoque e Logística
- Índice: Sumário Geral