Escolha a planta.
QuandoVisão unidade, sem filial no filtro e sem filial na sessão (API).
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.
A produção vem de producao_industria, refeita pela rotina do estoque diário ou pelo botão da janela. Sem foto, a produção sai zerada.
O 383 não converte moeda; o valor do gado não entra aqui.
O 383 junta, por planta, quatro fontes que antes ficavam em telas diferentes: o abate (compra de gado), a produção (uma foto diária tirada da indústria), o consumo e a compra do almoxarifado e o custo formado (folha, consumo, frete dos animais e refeitório). Desenho novo, sem legado. Tudo em moeda local; o valor do gado não entra (está no 387).
| Visão | O que sai | Linhas |
|---|---|---|
| Entre plantas (padrão) | Os indicadores da tabela abaixo para o período inteiro. | Uma linha por planta, agrupada por espécie (BOVINO, SUÍNO, BOVINO/SUÍNO, CICLO 2), com Subtotal por espécie (se há mais de uma) e TOTAL GERAL. Só entra planta que abateu ou produziu no período. |
| Unidade mês a mês | Os mesmos indicadores, uma planta. | Um mês por linha + TOTAL. Com a opção "Consumo × compra por grupo" acrescenta a seção Consumo × compra do almoxarifado por grupo (consumo, compra insumos, outras, transf. entrada, consumo − compra insumos). |
PainelComparativoPlantas.vue. Sempre na visão entre plantas (a visão Unidade do filtro é ignorada; só vale o filtro de filial). Seletor Bovino | Suíno | Todas | Ciclo 2 (em Todas somem as métricas por cabeça), indicadores contra o período anterior de mesmo tamanho (cabeças abatidas, kg carcaça por cabeça, rendimento de carne e de miúdos, folha por cabeça, consumo por cabeça, custo por kg produzido, consumo ÷ entradas), ranking pela métrica escolhida com a média, mês a mês (Almoxarifado | Folha), grade com barras e, ao clicar numa planta, o cartão Consumo × compra por grupo.
Mostra a última carga manual desde que o servidor subiu (andamento por filial e avisos). Refazer a foto da produção do período dispara a carga em segundo plano para a filial da sessão; a caixa todas as plantas só aparece para master/suporte. A rotina do estoque diário (a cada 2 h, ROTINA_ESTOQUE_DIARIO = 1) refaz sozinha os últimos 30 dias.
| Campo | Padrão | Efeito |
|---|---|---|
| Período de / até | Dia 1 do mês corrente até hoje | Obrigatório. O abate corta por data_entrada; consumo por data_emissao; compra por data_entrada; foto por data; folha por data_emissao do título. Todos em faixa meio-aberta (exceto a foto, que é data <= até, dia puro). |
| Visão | Entre plantas | PLANTAS ou UNIDADE. |
| Filial | Vazio | Plantas: vazio = todas as filiais do usuário (entram as que abateram ou produziram). Unidade: uma só; vazio usa a filial da sessão. |
| Consumo × compra por grupo | Ligado | Só na visão unidade. |
| Paisagem (PDF) | Ligado | — |
| Moeda | (não há) | Sempre moeda local, sem conversão. |
Saída: XLS e PDF (o painel é o Ver em tela). Barra de filtros salvos por usuário (código 383).
Regras comuns: documento não excluído (COALESCE(excluido,'F') <> 'T', também nos itens); só as filiais do alcance do usuário; listas de tipos e centros vêm da Config. Globais (seção E). Os "por cabeça" ficam em branco no total misto boi + suíno.
| Indicador (coluna) | Fonte | Regra |
|---|---|---|
| Cabeças, Kg vivo, Kg carcaça, Kg carc./cab. | faturamento_compra_gado × faturamento_compra_gado_produtos (quantidade, peso_vivo, peso_morto) | Abate = compra de gado, todos os tipos de faturamento, pela data_entrada. Espécie por produto.tipoanimal (SUINO/LEITAO = suíno; o resto bovino). No central o bovino vem com peso_vivo = peso_morto. |
| Produção kg, Caixas, Carne kg | producao_industria (tipo = 'PRODUCAO', peso_liquido, quantidade) | Fora os produtos da chave COMPARATIVO_PLANTAS_PRODUTOS_INTERMEDIARIOS (combos de matéria-prima). Carne = o que não é miúdo, subproduto nem industrializado (esses três vêm do grupo do produto, produto.idgrupo_produto, pelas chaves _GRUPOS_*). |
| Rend. carne %, Rend. miúdos %, Subprod. %, Industrializ. % | Foto ÷ base | Base = kg carcaça da planta que abateu; para a planta sem abate (ciclo 2) a base é a entrada na produção (tipo = 'TRANSFERENCIA'). Em branco sem produção. Rendimento acima de 100% é sinal de dado (ver seção G). |
| Kg recebido, Kg entrada produção (ciclo 2) | producao_industria (RECEBIMENTO, TRANSFERENCIA) | Informação; só a entrada na produção é base do rendimento do ciclo 2. REC_INDUSTRIALIZADO (produto pronto recebido) também fica na foto. |
| Consumo, Consumo/cab., Consumo/kg prod. | almoxarifado_saida × almoxarifado_saida_produto.custo_total | Só os tipos de COMPARATIVO_PLANTAS_TIPOS_CONSUMO (padrão 117), pela data_emissao. Remessas e demais saídas ficam fora. Valor = custo_total × valor_cambio da linha quando a moeda da linha não é a idmoeda_local da filial (como no 385; corrigido em 04/10/2026). |
| Compra insumos, Outras compras, Transf. entrada | almoxarifado_compra × almoxarifado_compra_produto.valor_total_ml | Três colunas, cada uma com a sua lista de tipos (_TIPOS_COMPRA_INSUMO 116, _COMPRA_OUTRAS 1116, _TRANSF_ENTRADA 1152), pela data_entrada. |
| Consumo ÷ (insumos + transf.) % | Consumo ÷ (insumos + transferência de entrada) | Não usa só insumos: Colorado recebe quase tudo por transferência e dava 600%. |
| Salários, Adiantamento, Encargos, Aluguel func., Serv. industrialização, Folha/cab., Folha/kg prod. | financeiro_emissao pelo idcentro_custo (CustoPorCentro) | Títulos pela emissão, só tipo_emissao P/R, valor = valor_parcela de pagar − receber, convertido à moeda local da filial (como o DRE gerencial). Folha = salários + adiantamento + encargos + aluguel func. + serviço de industrialização. Centros nas chaves COMPARATIVO_PLANTAS_CC_*. |
| Frete animais | Idem, centros de _CC_FRETE_ANIMAIS | Conferido contra faturamento_compra_gado_transportadoras.valor_total_frete. |
| Refeitório | Idem, centros de _CC_REFEITORIO, sem os títulos do almoxarifado | Tira os títulos cujo tipo tem tipo_operacao 101/111/131/102/132/112/171/172/501/502/551/552 (o material já está no consumo). |
| Custo total e Custo/kg prod. | Folha + consumo + frete animais + refeitório; ÷ produção kg | É o "custo formado" que o 384 usa. |
A foto (producao_industria). Tabela criada no primeiro uso (scripts/sql/producao_industria.sql): chave (idfilial, data, tipo, idproduto_industria); origem = WEB, LEGADO ou TERCEIRO. WEB lê estoque_movimentacao PRODUCAO (igual ao 2392); LEGADO lê ind_caixaproducao + ind_gracharia, só caixa com ordem de produção (JOIN ind_ordemproducao), e converte produto.idindustria para o produto do ERP; TERCEIRO lê a 115 do ERP (faturamento_lancamentos_manuais). Caixa LEGADO com líquido maior que o bruto usa o bruto.
Banco de indústria compartilhado (Colorado 10, 74, 75, 76 → industria-frigocol): a foto filtra pela filial gravada na indústria, só quando há outra filial com o mesmo host_ind + database_ind; banco de uma filial só não filtra (como o legado). O Importar do 2392 e a rotina passaram a filtrar igual (o legado não filtra e importaria a produção inteira de Colorado em 74, 75 e 76).
Rotina. Mês fechado não muda: o período da rotina começa no dia seguinte a parametros.udf_fat da filial. A carga manual (Refazer a foto) vai até 731 dias.
O 383 só lê — a única escrita é a foto da produção (tabela producao_industria), pela rotina ou pelo botão Refazer a foto. Sem regra de acesso nomeada: alcance pelas filiais do usuário.
Escolha a planta.
QuandoVisão unidade, sem filial no filtro e sem filial na sessão (API).
Na visão unidade escolha uma filial só (sem filial, vale a da sessão).
QuemA própria tela, antes de chamar o servidor, com mais de uma filial marcada.
A filial N não está entre as filiais do usuário.
Informe a data inicial. / A data final não pode ser anterior à inicial.
Não foram encontrados dados nessas condições.
QuandoNenhuma planta abateu ou produziu no período (entre plantas) ou nenhum mês tem movimento (unidade).
Refazer a foto de todas as plantas: só o master ou o suporte.
TambémSessão sem filial ativa., Informe o período (data inicial até a final)., Período de no máximo 731 dias., Data inválida: <valor>.
A foto da produção já está sendo refeita neste banco. Aguarde terminar.
EfeitoUma carga por banco de cada vez; o botão fica desabilitado enquanto roda.
A foto da produção ainda não foi tirada nesta base: a produção sai zerada. Use "Refazer a foto da produção".
EfeitoSem a tabela producao_industria (nasce no primeiro uso) todas as colunas de produção e rendimento saem zeradas; o resto sai normal. No painel: A foto da produção ainda não foi tirada: produção e rendimento saem zerados.
Plantas cujo banco da indústria não responde ficam sem produção.
QuemDesta máquina de desenvolvimento não conectam: Colorado/74/75/76, Cacoal, Juruena e Venceslau. São Gabriel é WEB sem host_ind: não há estoque_movimentacao no ERP. Rodar a carga do servidor. A carga mostra Filial N: <mensagem> por filial que falhou.
Rendimento de carne acima de 100%.
Causas já tratadasCombos de matéria-prima contados duas vezes (Iporã: bins de 150–500 kg, produtos 12000–12006, 12014, 12016 e os "MP": ficam na chave INTERMEDIARIOS) e caixas sem ordem de produção (carne importada etiquetada na entrada).
Ainda possívelCaixa digitada errada na indústria (caixa 10012272531 de 16/04/2026, Grão Pará: líquido 19.344 kg com vírgula — o relatório usa o bruto, mas a caixa precisa ser corrigida).
Planta de ciclo 2 (charque, desossa de carcaça comprada): a base é a entrada na produção.
EfeitoNova Londrina 09/2026: recebeu 26,8 t com osso, mandou 78,6 t para a produção (estoque de antes) e produziu 59 t → carne 10,1 t sobre 78,6 t. Em Tarauacá a transferência (76.098 kg) bate com a carcaça (76.035 kg). Em branco quando a planta não tem TRANSFERENCIA na foto.
Iporã não tem frete de suíno lançado.
MotivoNem título no centro de frete nem transportadora no abate; o preço do suinocultor deve incluir o frete. Custo/kg de Iporã fica sem essa parcela.
Título em centro de custo de outra moeda.
EfeitoConvertido pela moeda da filial (DreGerencialMovimento.FATOR_EMISSAO); o banco do RH (rh_central) não tem dados aqui: não há número de funcionários.
Todas as chaves são texto de ids separados por vírgula, ponto e vírgula ou espaço (system_config.valor_string, varchar(1000) — o script scripts/sql/system_config_valor_string_1000.sql está rodado só no central de homologação; onde não rodou, a Config. Globais limita a 255 caracteres e a lista de intermediários pode não caber). Chave vazia usa o padrão; onde o padrão é vazio, o componente fica zerado.
| Chave | Padrão | Efeito / BMG |
|---|---|---|
COMPARATIVO_PLANTAS_TIPOS_CONSUMO | 117 | Tipos de saída que são consumo. BMG: 117. |
COMPARATIVO_PLANTAS_TIPOS_COMPRA_INSUMO | 116 | Compra de insumos. A confirmar para a BMG: acrescentar 11211 e 1141. |
COMPARATIVO_PLANTAS_TIPOS_COMPRA_OUTRAS | 1116 | Outras compras. A confirmar: 1191, 11191 e 1111. |
COMPARATIVO_PLANTAS_TIPOS_TRANSF_ENTRADA | 1152 | Transferência de entrada. A confirmar: 1155 (transferência de couro). |
COMPARATIVO_PLANTAS_GRUPOS_MIUDOS / _SUBPRODUTOS / _INDUSTRIALIZADOS | vazio | Ids de produto_grupo. BMG: miúdos 1263, 1234, 10073, 10155; subprodutos 12312, 10115, 10054; industrializados 1302 (Jerked Beef). Vazio = tudo é carne. |
COMPARATIVO_PLANTAS_PRODUTOS_INTERMEDIARIOS | vazio | Ids de produto (não de grupo) fora da produção. BMG: 32 ids, 260 caracteres. Também vale para o 38A e o 38F. |
COMPARATIVO_PLANTAS_CC_SALARIOS / _ADIANTAMENTO / _ENCARGOS / _ALUGUEL_FUNC / _SERV_INDUSTRIALIZACAO | vazio | Ids de centro de custo da folha. BMG: salários 9 centros; adiantamento 4; encargos 18 (INSS, FGTS, 13º, férias, rescisões); aluguel func. 10229, 106483, 102343; serviço de industrialização 101722 (Maringá). |
COMPARATIVO_PLANTAS_CC_FRETE_ANIMAIS | vazio | BMG: 10245, 10249, 101734, 106490, 101134, 101135. |
COMPARATIVO_PLANTAS_CC_REFEITORIO | vazio | BMG: 101329, 102378, 101720, 101128. |
ROTINA_ESTOQUE_DIARIO (+ _USUARIO) | 0 | Liga a rotina (a cada 2 h, últimos 30 dias, depois do udf_fat): produção 115, foto da produção, foto do saldo. A produção 115 é gravada com o usuário de ROTINA_ESTOQUE_DIARIO_USUARIO (ou o último que importou naquela filial); sem nenhum, só a foto roda. Ligada no central. |
CUSTO_KG_FILIAIS_FORA | vazio | Não vale no 383 (só no 384, 38F). Citada aqui para não confundir. |
Permissão. Item de menu sem idOpcao: qualquer usuário logado abre. O alcance é o das filiais do usuário. Refazer a foto: a filial da sessão é livre; todas as plantas, só master ou suporte (RegraAcessoService.suporteOuMaster). Os endpoints da foto (GET /lancamento/producao-industria/situacao, POST .../fotografar) estão dentro da allowlist /lancamento/* (JWT).
Banco: central (BMG). Os números abaixo foram conferidos em 03–04/10/2026; a produção depende de a foto ter sido refeita para o período.
| # | Passo | Esperado | Como conferir |
|---|---|---|---|
| 1 | Entre plantas, 01/03/2026 a 31/03/2026, todas as filiais. | Colorado (10): 4.120 cabeças e 978.544,5 kg carcaça, igual ao ABATE do estoque da indústria WEB (8.240 bandas, 978.533 kg). Espécie BOVINO; Iporã e Grão Pará SUÍNO. | SELECT g.idfilial,
CASE WHEN pr.tipoanimal IN ('SUINO','LEITAO') THEN 'SUINO' ELSE 'BOVINO' END AS especie,
SUM(gp.quantidade) AS cabecas, SUM(gp.peso_vivo) AS kg_vivo, SUM(gp.peso_morto) AS kg_carcaca
FROM faturamento_compra_gado g
JOIN faturamento_compra_gado_produtos gp ON gp.idfaturamento_compra_gado = g.id
AND gp.idfilial = g.idfilial AND COALESCE(gp.excluido,'F') <> 'T'
LEFT JOIN produto pr ON pr.id = gp.idproduto
WHERE COALESCE(g.excluido,'F') <> 'T' AND g.idfilial = 10
AND g.data_entrada >= '2026-03-01' AND g.data_entrada < '2026-04-01'
GROUP BY 1, 2
-- Colorado 03/2026 (04/10/2026): 4.120 cab. e 978.544,5 kg carcaça |
| 2 | Entre plantas, setembro/2026. | Produção kg de Iporã ≤ 2.949.271 (a SQL abaixo inclui os intermediários que o relatório tira); Grão Pará ≈ 525 mil kg. | SELECT idfilial, tipo, ROUND(SUM(peso_liquido)) AS kg, SUM(quantidade) AS caixas, MAX(atualizado_em) AS foto_de FROM producao_industria WHERE data >= '2026-09-01' AND data <= '2026-09-30' GROUP BY idfilial, tipo ORDER BY kg DESC -- PRODUCAO set/2026 em 04/10: Iporã (5) 2.949.271 kg; Grão Pará (11) 525.190; filial 53: 102.678 -- (o relatório tira os produtos da chave COMPARATIVO_PLANTAS_PRODUTOS_INTERMEDIARIOS: fica menor) |
| 3 | Mesmo caso, linha de planta sem abate (Nova Londrina). | Espécie CICLO 2; rendimentos sobre a entrada na produção (TRANSFERENCIA); Kg carcaça zerado. | SELECT tipo, SUM(peso_liquido) FROM producao_industria WHERE idfilial = <planta> AND data BETWEEN ... GROUP BY tipo |
| 4 | Unidade mês a mês, filial 5, 01/01–30/09/2026, com grupos. | Uma linha por mês com movimento, TOTAL, e a seção por grupo do almoxarifado (consumo, insumos, outras, transf.). | A soma dos meses = o caso "Entre plantas" de Iporã no mesmo período. |
| 5 | Unidade com duas filiais marcadas. | Tela recusa: Na visão unidade escolha uma filial só .... | — |
| 6 | Frete dos animais, setembro/2026. | Frete animais de Grão Pará = 34.500 e Tarauacá = 15.732; Iporã = 0. | SELECT g.idfilial, ROUND(SUM(t.valor_total_frete), 2) AS frete FROM faturamento_compra_gado g JOIN faturamento_compra_gado_transportadoras t ON t.idfaturamento_compra_gado = g.id AND t.excluido <> 'T' WHERE COALESCE(g.excluido,'F') <> 'T' AND g.data_entrada >= '2026-09-01' AND g.data_entrada < '2026-10-01' GROUP BY g.idfilial -- set/2026: Tarauacá 15.732 e Grão Pará (11) 34.500 (iguais ao título do centro de custo) |
| 7 | Folha de uma planta num mês. | Salários = soma dos centros da chave para a filial (pagar − receber), na moeda local. | SELECT fe.idfilial, ROUND(SUM(IF(fe.tipo_emissao = 'P', 1, -1) * fe.valor_parcela), 2) AS valor -- sem câmbio: só para moeda local
FROM financeiro_emissao fe
WHERE COALESCE(fe.excluido,'F') <> 'T' AND fe.tipo_emissao IN ('P','R')
AND fe.idcentro_custo IN (/* ids da chave COMPARATIVO_PLANTAS_CC_SALARIOS */)
AND fe.data_emissao >= '2026-09-01' AND fe.data_emissao < '2026-10-01'
GROUP BY fe.idfilial |
| 8 | Mudar COMPARATIVO_PLANTAS_TIPOS_CONSUMO de 117 para 117,102 e regerar. | Consumo e Custo total aumentam; produção e abate não mudam. | SELECT id, descricao FROM tipo_faturamento WHERE id IN (117,102) |
| 9 | Banco sem a tabela producao_industria (ou antes da 1ª foto). | Aviso A foto da produção ainda não foi tirada...; produção zerada, resto normal. | SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = 'producao_industria' |
| 10 | Refazer a foto: período de 800 dias; depois duas vezes seguidas; depois "todas" com usuário comum. | Período de no máximo 731 dias.; A foto da produção já está sendo refeita...; Refazer a foto de todas as plantas: só o master ou o suporte. (a caixa nem aparece para o comum). | — |
| 11 | Banco de indústria compartilhado: refazer a foto de Colorado (10) e de 74/75/76. | Cada filial só recebe a produção gravada com o seu idfilial na indústria; 74/75/76 não somam a produção de Colorado. | SELECT idfilial, SUM(peso_liquido) FROM producao_industria WHERE idfilial IN (10,74,75,76) AND tipo='PRODUCAO' GROUP BY 1 |
| 12 | "Ver em tela" com Visão = Unidade no filtro. | Abre o painel entre plantas (a visão é ignorada), com os filtros de filial. | — |
| 13 | Painel: alternar Bovino | Suíno | Todas | Ciclo 2; clicar numa planta. | Em Todas somem as métricas por cabeça; o clique mostra o cartão Consumo × compra por grupo (maiores consumos; "+ N grupo(s) menores" só no XLS). | Comparar com a seção por grupo da visão Unidade. |
Pendências: teste de tela (o backend precisa reiniciar); carga da foto das plantas cujo banco não responde desta máquina (Colorado/74-76, Cacoal, Juruena, Venceslau) — rodar do servidor; confirmar com o usuário os tipos de compra da BMG nas chaves _TIPOS_COMPRA_*; tipo TRANSFERENCIA (transferência para produção) quando a tela de transferência entrar; valor do gado (hoje só no 387/384).
Plantas desativadas no 384 (Juruena 12, Vila Bela 14, Rolim 16, Distriboi 17, RioBeef 27, mais 51, 52, 56, 64) entram no 383 normalmente; a lista CUSTO_KG_FILIAIS_FORA não age aqui.
1. Consumo sem câmbio. SUM(custo_total) da saída não aplica o câmbio da linha (o 385 aplica). No Paraguai (saída em U$/EUR/R$) o consumo e o custo formado saem em valor errado; hoje o 383 só é usado na BMG (moeda única). Corrigido em 04/10/2026: a soma aplica o câmbio da linha (fjfrigo_concepcion, 07/2026, filial 2: 656,7 mi → 1.702,2 mi Gs; filial 8: 0,8 mi → 101,3 mi).
2. Mesma seleção de intermediários em três relatórios. Mexer em COMPARATIVO_PLANTAS_PRODUTOS_INTERMEDIARIOS muda o 383, o 38A e o 38F ao mesmo tempo.
3. Valor atribuído a = e não a +=. Em apurar, consumo, compras, folha e entrada na produção são atribuídos (=) por chave: só é correto porque cada consulta já agrupa pela mesma chave. Alterar o agrupamento sem rever isso perde valores.
4. Documentação do histórico divergente do código. O histórico (385) ainda diz que título em outra moeda soma sem converter; o código atual converte pela moeda da filial (CustoPorCentro).
5. Foto é do momento em que foi tirada. Produção corrigida depois na indústria só entra com nova foto (a rotina refaz 30 dias, mas não mês fechado: udf_fat).
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.