Informe a data inicial. / A data final não pode ser anterior à inicial.
Recusa e não gera. HTTP 200 com statuscode 400 e a frase indicada.
Comportamento que surpreende sem ser erro — origem da maioria dos chamados de "o número não bate". Parte sai como painel de avisos na tela.
O custo do produto das plantas usa o custo formado e a foto da produção do 383.
A venda exclui os tipos das duas chaves DEMONSTRATIVO_FATURAMENTO_EXCLUIR_TIPOS* do 381.
Para cada filial que vendeu carne no período: kg vendido, receita, preço médio por kg, custo do produto por kg, custo fixo por kg, custo sobre vendas por kg, custo total por kg, resultado por kg, resultado e margem %. Desenho novo, sem legado; proposta e mapa de centros em docs/proposta-custo-kg-vendido.md. Tudo em moeda local.
| Saída | Conteúdo |
|---|---|
| XLS / PDF | Uma linha por filial (colunas: Receita, Preço/kg, Custo produto/kg, Custo fixo/kg, Sobre vendas/kg, Custo total/kg, Resultado/kg, Resultado, Margem %), ordenada por kg vendido, e TOTAL. Com Composição do custo por kg (padrão ligado) acrescenta a seção Composição do custo por kg vendido: uma linha por grupo de custo e uma coluna por filial. |
| Painel "Ver em tela" | Seletor Todas | Plantas | Comerciais; indicadores contra o período anterior de mesmo tamanho (kg vendido, custo total por kg, resultado por kg, margem); gráfico de custo por kg × preço médio (as 15 que mais vendem; o clique escolhe a filial), composição do fixo e do sobre vendas da filial clicada e grade por filial com o tipo. |
| Tipo | Quando | Custo do produto |
|---|---|---|
BOVINO, SUÍNO, BOVINO/SUÍNO, CICLO 2 | Planta: abateu ou produziu no período (mesma regra do 383). | Custo formado do 383 + gado + entradas de carne, ÷ (kg produzido + kg das entradas), mês a mês, × kg vendido. |
COMERCIAL (custo médio) | Filial com filial.distribuidora = 1 ou filial.loja = 1 que não é planta. | Kg vendido de cada produto em cada dia × custo médio móvel do produto no dia (funcoes.CustoMedioMovel, o do DRE gerencial). |
COMERCIAL | Filial comercial sem a flag (Cajuru, Ibiúna) ou sem custo médio em nenhum produto. | Pelas entradas de carne (compra 011, importação 041, transferência de entrada 071, retorno de industrialização 251). |
| Campo | Padrão | Efeito |
|---|---|---|
| Período de / até | Dia 1 do mês corrente até hoje | Obrigatório. Venda pela emissão; entradas e gado pela data_entrada; títulos pela emissão; todos em faixa meio-aberta. |
| Filial (multi) | Vazio = todas do usuário que venderam carne | Filial listada em CUSTO_KG_FILIAIS_FORA é removida, mesmo pedida — com aviso quando foi pedida (04/10/2026). Só entra filial com kg vendido > 0. |
| Composição do custo por kg | Ligado | Seção extra do arquivo. |
| Paisagem (PDF) | Ligado | — |
| Moeda | (não há) | Sempre moeda local. |
Nota na janela: "O custo do produto usa a foto da produção do 383: refaça a foto do período lá antes, se faltar." Barra de filtros salvos (código 384).
Regras comuns: documento e itens não excluídos; só as filiais do alcance do usuário; faixa meio-aberta; moeda local da filial (valor_cambio quando a moeda do documento não é a local; câmbio vazio ou zero vale 1).
| Número | Fonte | Regra |
|---|---|---|
| Kg vendido, Receita, Preço médio | faturamento_venda × faturamento_venda_produtos (peso_liquido, valor_total, tipo_produto = '1') | Tipos de saída (entrada_saida = 'S') com tipo_natop LIKE 'venda%' ou sem natureza cadastrada (decisão de 04/10/2026, a mesma tolerância do 38F: no Paraguai 98 dos 156 tipos não têm natureza), pela data_emissao. Fora os tipos das chaves DEMONSTRATIVO_FATURAMENTO_EXCLUIR_TIPOS e _GERENCIAL (a visão é sempre a gerencial). Soma o peso_liquido de todos os itens, não só carne. |
| Custo do produto (planta) | 383 (custo()), faturamento_compra_gado_produtos.valor_total, entradas de carne | Por mês: (custo formado + compra de gado + entradas de carne) ÷ (kg produzido + kg das entradas), × kg vendido do mês. Mês sem base usa a razão do período. Sem base em nenhum mês, ou planta que abateu sem produção na foto, o custo fica em branco e a filial sai dos totais. |
| Custo do produto (comercial) | Ver seção A | Kg sem custo médio é valorizado pela média da filial (aviso); se nenhum produto tem custo médio, cai nas entradas. |
| Custo fixo / Sobre vendas | financeiro_emissao por centro de custo (CustoPorCentro.somarPorCentro) | 19 linhas, cada uma uma chave CUSTO_KG_FIXO_* (14) ou CUSTO_KG_VENDAS_* (5) com centros de custo. Pela emissão, tipo_emissao P/R, valor = pagar − receber, sem os títulos do almoxarifado. Uma consulta só para todas as linhas. Em filial que não é planta, o consumo do almoxarifado (117) entra como linha do fixo (na planta já está no custo formado). |
| Resultado, Margem % | Preço médio − custo total; ÷ preço | Em branco quando o custo total é nulo. |
| TOTAL | Soma das filiais com custo do produto | Quando alguma filial ficou sem custo, o rótulo vira TOTAL (só filiais com custo do produto). |
Por que mês a mês. A primeira versão dividia nove meses de custo por um mês de foto (Tarauacá R$ 368/kg). Hoje cada mês usa o custo e o kg do próprio mês.
Entradas de carne. Só tipo_operacao 011, 041, 071 e 251. A 461 ("somente aduaneira") duplicaria a troca de NF; armazenagem 571, devolução e cancelamento ficam fora.
Maringá industrializa fora: remessa 1184 e retorno 1185 saem com o mesmo R$/kg (a diferença que daria a mão de obra é zero). A mão de obra está nos títulos do centro 101722 ("Serviço de Industrialização"), que entra na folha do 383 (COMPARATIVO_PLANTAS_CC_SERV_INDUSTRIALIZACAO). O usuário confirmou que houve só até julho/2026.
O 384 só lê. Sem regra de acesso nomeada: alcance pelas filiais do usuário.
Informe a data inicial. / A data final não pode ser anterior à inicial.
A filial N não está entre as filiais do usuário.
Não foram encontrados dados nessas condições.
QuandoNenhuma filial do alcance vendeu carne no período (ou todas estão em CUSTO_KG_FILIAIS_FORA/excluídas). O painel mostra Nenhuma filial vendeu carne no período.
Sem custo do produto (sem produção na foto, ou sem entrada de carne): <filiais>. Ficam fora do total. Nas plantas, refaça a foto da produção do período no 383.
QuemPlanta que abateu sem produção na foto (Colorado, São Gabriel, Venceslau, Juruena, Cacoal, Rolim, Distriboi: banco fora do alcance desta máquina ou sem 115 em 2026) e filial sem nenhuma base (RioBeef, Paiçandu, CD Campo Grande).
EfeitoPreço e kg aparecem; custo, resultado e margem em branco; a filial não soma no TOTAL.
Kg vendido sem custo médio (produto sem entrada com preço), valorizado pela média da filial: <filial (kg)>.
QuemDistribuidora/loja. O produto sem entrada valorizada no custo médio móvel assume o custo médio da filial no período.
O Excel e a tela podem demorar.
Tempo~50 s para jan–set (o custo médio é calculado filial a filial); custo fixo e sobre vendas 13 s (eram 38 s quando uma consulta por linha). O painel calcula o período e o anterior em paralelo.
Um centro de custo em duas linhas conta nas duas.
EfeitoA consulta distribui o valor por linha: se o mesmo centro está em duas chaves, aparece em ambas (cadastro a corrigir).
Filiais fora: 12, 14, 16, 17, 27, 51, 52, 56, 64 (BMG).
MotivoGranjas que "vendem" suíno vivo e ração, curtume, confinamento (51, 52, 56, 64) e unidades desativadas/encerradas (Juruena 12, Vila Bela 14, Rolim 16, Distriboi 17, RioBeef 27). Decisão do usuário em 03/10/2026; a chave é CUSTO_KG_FILIAIS_FORA.
Todas são listas de ids (vírgula, ponto e vírgula ou espaço) em system_config.valor_string; padrão vazio. Gravadas para a BMG no central de homologação.
| Chave | Efeito |
|---|---|
CUSTO_KG_FILIAIS_FORA | Ids de filial fora do relatório (e do 38F). BMG: 12,14,16,17,27,51,52,56,64. |
DEMONSTRATIVO_FATURAMENTO_EXCLUIR_TIPOS e _GERENCIAL | Tipos de venda que não contam (kg e receita). BMG: 1121 e 11195,11196,11203. |
CUSTO_KG_FIXO_* (14) | ALUGUEL_ESCRITORIO, ALUGUEL_ARRENDAMENTO, ALUGUEL_MAQUINAS, CONDOMINIO, INTERNET_TELEFONE, HONORARIOS, MANUT_CIVIL, MANUT_ELETRICA_MECANICA, MANUT_INDUSTRIAL, MATERIAL, MEIO_AMBIENTE, SISTEMAS, IPTU, JUROS_MULTAS — ids de centro de custo. |
CUSTO_KG_VENDAS_* (5) | COMISSAO, VEICULOS, FRETE_EXPORTACAO, DESPESAS_EXPORTACAO, FRETES_NACIONAL — ids de centro de custo. |
| Chaves do 383 | O custo formado e a foto vêm de COMPARATIVO_PLANTAS_* (ver o documento do 383): consumo 117, folha, frete dos animais, refeitório, intermediários, serviço de industrialização. |
filial.distribuidora / filial.loja | Colunas opcionais da filial (tenant sem elas: o relatório segue pelas entradas, sem erro). Definem o COMERCIAL (custo médio). |
Permissão. Item de menu sem idOpcao: qualquer usuário logado abre; o alcance é o das filiais do usuário.
Banco: central (BMG). O custo do produto das plantas exige a foto da produção do período no 383 (jan–set/2026 gravada nas plantas alcançáveis desta máquina). Números de 03–04/10/2026.
| # | Passo | Esperado | Como conferir |
|---|---|---|---|
| 1 | Período 01/09–30/09/2026, todas as filiais. | Iporã (5): 3.300,8 t, receita R$ 32.016.613,34, preço médio R$ 9,70/kg; Grão Pará (11) 662 t; filial 3 ≈ 345 t; Maringá (18) 131,5 t. Sem as filiais fora. | SELECT fv.idfilial, ROUND(SUM(fvp.peso_liquido)/1000, 1) AS toneladas,
ROUND(SUM(fvp.valor_total * IF(fv.idmoeda = f.idmoeda_local OR IFNULL(fv.valor_cambio,0) = 0, 1, fv.valor_cambio)), 2) AS receita
FROM faturamento_venda fv
JOIN filial f ON f.id_filial = fv.idfilial
JOIN tipo_faturamento t ON t.id = fv.idtipo_faturamento
JOIN faturamento_venda_produtos fvp ON fvp.idfaturamento_venda = fv.id AND fvp.tipo_produto = '1' AND IFNULL(fvp.excluido,'F') <> 'T'
WHERE IFNULL(fv.excluido,'F') <> 'T' AND t.entrada_saida = 'S'
AND (t.tipo_natop LIKE 'venda%' OR TRIM(IFNULL(t.tipo_natop,'')) = '')
AND fv.idtipo_faturamento NOT IN (1121,11195,11196,11203) -- as duas chaves DEMONSTRATIVO_*
AND fv.idfilial NOT IN (12,14,16,17,27,51,52,56,64) -- CUSTO_KG_FILIAIS_FORA
AND fv.data_emissao >= '2026-09-01' AND fv.data_emissao < '2026-10-01'
GROUP BY fv.idfilial ORDER BY toneladas DESC
-- 04/10/2026: Iporã (5) 3.300,8 t e R$ 32.016.613,34 (R$ 9,70/kg); Grão Pará (11) 662,0 t; filial 3 344,7 t; filial 18 131,5 t |
| 2 | Período 01/01–30/09/2026. | Total das filiais com custo: ≈ 51,3 mil t, preço ≈ R$ 15,00/kg, custo ≈ R$ 14,37/kg, margem ≈ 4,2%. Iporã ≈ R$ 9,86/kg de custo e margem ≈ 3,7%; São José ≈ R$ 16,06/kg (margem −1,7%). | Tolerar variação pequena (nota nova/retroativa). O custo depende da foto da produção do 383. |
| 3 | Marcar uma filial de CUSTO_KG_FILIAIS_FORA (ex.: 51) no filtro. | Ela não aparece, sem erro e sem aviso. | SELECT valor_string FROM system_config WHERE chave = 'CUSTO_KG_FILIAIS_FORA' |
| 4 | Planta com banco de indústria fora do alcance (ex.: Colorado, 10). | Aviso Sem custo do produto (...); custo/resultado/margem em branco; fora do TOTAL, cujo rótulo vira TOTAL (só filiais com custo do produto). | SELECT COUNT(*) FROM producao_industria WHERE idfilial = 10 AND tipo='PRODUCAO' = 0 |
| 5 | Distribuidora/loja (ex.: São José, Curitiba LV, lojas). | Tipo COMERCIAL (custo médio); custo do produto = kg × custo médio móvel; possível aviso Kg vendido sem custo médio.... | Comparar com o custo médio do DRE gerencial do mesmo produto no dia. |
| 6 | Filial comercial sem a flag (Cajuru, Ibiúna). | Tipo COMERCIAL; custo pelas entradas de carne. | SELECT c.idfilial, DATE_FORMAT(c.data_entrada,'%Y-%m') AS mes, SUM(p.peso_liquido) AS kg,
SUM(p.valor_total * IF(c.idmoeda = f.idmoeda_local OR IFNULL(c.valor_cambio,0) = 0, 1, c.valor_cambio)) AS valor
FROM faturamento_compra_carne c
JOIN filial f ON f.id_filial = c.idfilial
JOIN tipo_faturamento t ON t.id = c.idtipo_faturamento AND t.tipo_operacao IN ('011','041','071','251')
JOIN faturamento_compra_carne_produtos p ON p.idfaturamento_compra_carne = c.id AND IFNULL(p.excluido,'F') <> 'T'
WHERE IFNULL(c.excluido,'F') <> 'T' AND c.idfilial = <filial>
AND c.data_entrada >= '2026-09-01' AND c.data_entrada < '2026-10-01'
GROUP BY 1, 2 |
| 7 | Um mês só (setembro) × jan–set na mesma planta. | O custo/kg do mês usa o kg e o custo daquele mês; o do período é a média ponderada pelo kg vendido de cada mês. | — |
| 8 | Custo fixo e sobre vendas de uma filial. | Cada linha = soma dos títulos dos centros da chave, pagar − receber, sem tipos do almoxarifado; em filial não-planta, a linha extra Consumo do almoxarifado (não planta). | SELECT fe.idcentro_custo, ROUND(SUM(IF(fe.tipo_emissao = 'P', 1, -1) * fe.valor_parcela), 2) AS valor
FROM financeiro_emissao fe
LEFT JOIN tipo_faturamento tf ON tf.id = fe.idtipo_faturamento
WHERE COALESCE(fe.excluido,'F') <> 'T' AND fe.tipo_emissao IN ('P','R') AND fe.idfilial = <filial>
AND fe.idcentro_custo IN (/* centros da linha, ex.: CUSTO_KG_FIXO_IPTU */)
AND fe.data_emissao >= '2026-09-01' AND fe.data_emissao < '2026-10-01'
AND (tf.tipo_operacao IS NULL OR tf.tipo_operacao NOT IN ('101','111','131','102','132','112','171','172','501','502','551','552'))
GROUP BY fe.idcentro_custo |
| 9 | Maringá (18): custo com e sem o centro 101722. | Retirar 101722 de COMPARATIVO_PLANTAS_CC_SERV_INDUSTRIALIZACAO reduz o custo formado (≈ R$ 1,25/kg retornado até julho). | Títulos do centro 101722 na filial 18 no período. |
| 10 | Painel: Todas | Plantas | Comerciais; clicar numa filial. | O filtro muda a lista e os indicadores; o clique mostra a composição do fixo e do sobre vendas por kg. | Comparar com a seção Composição do XLS. |
| 11 | Período sem venda de carne (futuro). | Não foram encontrados dados nessas condições. | — |
Pendências: teste de tela (o backend precisa reiniciar); foto da produção das plantas fora do alcance desta máquina; nada de moeda — só moeda local.
Decisões que moldaram o desenho (usuário, 03/10/2026): IPTU no fixo; "os 6 de fora entram" (centros sem linha: aluguel/arrendamento, máquinas, juros e multas, despesas de exportação); entradas de carne no custo; custo mês a mês; custo médio nas distribuidoras e lojas.
1. Kg vendido não é só carne. A venda soma peso_liquido de todos os itens tipo_produto='1' de qualquer natureza venda* (inclui serviço, sebo, farinha, ração). A granja "vende" suíno vivo e ração: por isso a lista de filiais fora.
2. Remoção silenciosa de filial. Filial pedida e presente em CUSTO_KG_FILIAIS_FORA some sem aviso (o painel só mostra "nenhuma filial" se sobrar vazio). Corrigido em 04/10/2026: filial pedida e tirada vira aviso na tela.
3. Natureza por prefixo. tipo_natop LIKE 'venda%' inclui venda_servico, venda_ordem_adquirente, venda_entrega_futura, venda_consignacao, venda_dropshipping* e venda_drawback (tudo que tiver nota em faturamento_venda); um tipo novo com esse prefixo entra sozinho.
Toda resposta sai com HTTP 200; quem diz o que aconteceu é o statuscode no corpo — 400 para as recusas deste documento.
O arquivo é pedido como download, mas a recusa chega como mensagem: a tela mostra a frase no lugar do arquivo. Enquanto gera, o botão mostra o contador Gerando… (Ns).
Avisos (cotação faltando, foto sem produção, estorno sem nota...) não interrompem: vêm no cabeçalho X-Aviso-Sistema e a tela mostra o painel de avisos. Teste sempre olhando o painel, não só o arquivo.
Ao abrir chamado, copie o código de ocorrência de 8 caracteres dos erros inesperados. Erro de tela vai para o log em POST /cadastro/erros-front.
Nenhuma regra bate com essa busca. Tente um trecho menor da mensagem, ou limpe os filtros.