🚀
Versão atual
v2.37.90
MTX · Sistema de Controle de Produção
📜 Histórico de versões
v2.37.90 ATUAL
20/07/2026
🔄 Vista 3D do baú gira com o dedo (app da Expedição). Na tela do empilhadeirista, a visão 3D do caminhão carregado agora roda arrastando o dedo (ou o mouse) — dá pra ver o baú de todos os lados. Um botão 🔄 endireita a vista quando quiser. Parado, fica igualzinho ao de antes; as cores de bipado/pronto/em-produção não mudam.
v2.37.89 pilha
20/07/2026
✋ Ajuste manual da pilha na planta de carga. Agora dá pra clicar numa pilha e mandar como ela fica: (1) inverter base/topo — escolher qual caixa vai embaixo (o automático põe a maior, mas às vezes a mais firme é a menor, tipo a 24x8 embaixo da 18x16); e (2) puxar um palete que ficou pra trás e empilhar em cima na mão, com o sistema conferindo a altura na hora. O palete sai de verdade do "ficou pra trás" e vira carga bipável — sem contagem dobrada.
🛡️ Com trava de segurança. Altura é o único bloqueio duro. Empilhar em cima de outro cliente ou de um palete parcial pede confirmação. Dá pra desfazer (o palete volta pra trás) e o ajuste fica salvo com o plano e sobrevive ao recálculo. Sem nenhum ajuste manual, o plano sai idêntico ao de antes.
v2.37.87 planta
20/07/2026
🔤 Nomes das pilhas na planta de cima não se sobrepõem mais. Quando uma coluna tem dois paletes DIFERENTES empilhados, os nomes ficavam um por cima do outro, ilegíveis. Agora o palete de cima aparece escrito no topo da célula (com ▲) e o de baixo no rodapé, bem separados. Coluna de um modelo só (dois paletes iguais) continua mostrando um nome centralizado, como já estava certo.
v2.37.86 pareamento
20/07/2026
🧩 Pareamento inteligente das pilhas — o maior sempre embaixo. Antes o sistema empilhava de forma gulosa: cada modelo se dobrava sozinho, e sobrava o palete maior POR CIMA de um menor (aquela sobra de 4cm que você marcou). Agora ele monta as colunas de cada cliente escolhendo o melhor par: o palete de base maior fica embaixo e o menor encaixa dentro, sem sobrar pra fora. No exemplo POWERDENT, cada TIPO 07 vira base com um TIPO 14 encaixado em cima — mais estável e mais consolidado, sem overhang.
🛡️ Com rede de segurança e sem quebrar nada. Se o pareamento por acaso couber menos carga que o jeito antigo, o sistema volta pro antigo automaticamente — nunca carrega menos que antes. O que já funcionava fica idêntico: empilhar desligado, cliente de um modelo só, e a bipagem no app não mudam. O palete pronto tende a ficar de base e o em produção por cima. ⚠️ Os desenhos de clientes com vários modelos vão aparecer diferentes (melhor arrumados) — é esperado.
v2.37.85 config
20/07/2026
⚙️ Folgas do empilhamento agora são configuráveis. No Planejamento de Carga, ao lado de "Empilhar paletes", tem o link "⚙️ ajustar folgas" que abre uma tela pra você mexer nos três limites (em centímetros): altura extra da pilha (quanto pode passar do baú), sobra pra fora (quanto o de cima pode passar da borda) e menor que a base (quanto o de cima pode ser menor). Salva e sincroniza entre os aparelhos; tem "restaurar padrão" (10 · 15 · 30 cm). Antes só dava pra mudar no código.
v2.37.84 empilhamento
20/07/2026
📦 Palete um pouco maior agora empilha (até 15cm de sobra pra fora). O TIPO 07 não subia no TIPO 14 mesmo sendo o mesmo cliente e cabendo na altura — porque o TIPO 07 é ~7cm maior na base (1068×1284 contra 1000×1200), e a regra antiga não deixava sobrar nada pra fora da borda. Agora o palete de cima pode sobrar até 15cm por lado — cobre o caso do TIPO 07 (~4cm de sobra) e outros paletes quase do mesmo tamanho. O de cima continua não podendo ser pequeno demais (até 30cm menor, pra não afundar no meio das caixas), e paletes muito diferentes continuam barrados.
v2.37.83 empilhamento
20/07/2026
📦 Empilhamento agora é PROATIVO — não espera o chão encher. Antes, palete cheio só empilhava em cima de outro quando o caminhão lotava; com chão sobrando, ficava tudo lado a lado (ex.: o TIPO 07 do POWERDENT não subia na sobra do TIPO 14, mesmo cabendo). Agora qualquer palete tenta subir numa coluna do mesmo cliente que tenha folga, antes de ocupar chão — consolida a carga e libera espaço. As regras de segurança continuam: mesmo cliente, cabe na altura do baú (+10cm), e o de cima encaixa dentro do de baixo (até 300mm menor).
🔽 Quem é pronto vira base, quem está em produção vai por cima — naturalmente, porque o pronto (do estoque) é posicionado primeiro. Assim o palete que já existe fica embaixo e o que ainda vai ser feito sobe. Se ver alguma pilha que não faz sentido, me avisa que ajusto.
🔴 Trocar de caminhão apagava os clientes da entrega — corrigido. Ao editar um plano e trocar pra um caminhão que não tem viagem na escala, o sistema zerava a lista de clientes e a carga sumia. Agora trocar de caminhão só reencaixa a MESMA carga no baú novo — os clientes ficam. A escala só é puxada automaticamente quando a entrega está vazia (conveniência do plano novo). A carga é do pedido, não do caminhão: dá pra trocar de caminhão pra ver se cabe melhor, sem perder nada.
v2.37.81 plano de carga
20/07/2026
🔤 Nome da caixa não vaza mais do palete na planta de carga. Na vista de cima, o código comprido (ex.: "TIPO 14 SEM IMPRESSAO", "CX 220016 MILI BEAUTY 18X16") passava por cima do palete do lado. Agora ele encolhe a fonte pra caber, corta com "…" quando o palete é muito estreito, e fica travado dentro da borda — nunca invade o vizinho. O nome completo continua na lista de clientes do lado.
✏️ Atalho pra editar o caminhão. Ao lado das medidas do baú, no Planejamento de Carga, agora tem o link "✏️ editar medidas" que abre direto o cadastro do caminhão — sem ter que caçar em Cadastros. (Pra trocar de caminhão continua sendo o seletor de cima.)
v2.37.80 3D 2 lados
20/07/2026
👀 Isométrica do Plano de Carga agora mostra os DOIS lados do caminhão. Na vista 3D, os paletes da frente escondiam os de trás — um lado do baú ficava oculto. Agora aparecem duas vistas lado a lado ("um lado" e "outro lado"): a segunda é o baú girado 180°, então o lado que ficava escondido vira a frente. Nada mais fica atrás. É só desenho — não muda o cálculo da carga nem a bipagem. (No app do empilhadeirista, que é celular, segue uma vista só; se precisar, dá pra pôr um botão "girar" depois.)
v2.37.79 empilhamento
20/07/2026
📦 Empilhamento CRUZADO no Plano de Carga — palete pequeno em cima do grande. Antes o sistema só empilhava palete idêntico (mesmo modelo). O palete parcial (o quebrado, mais baixo) ficava sozinho ocupando um lugar inteiro no chão do caminhão com um monte de espaço vazio em cima. Agora ele sobe em cima de um palete cheio do mesmo cliente, liberando chão pra caber mais carga. No exemplo da BLUE SEA, uma carga que ocupava 4 lugares no piso passou a ocupar 2.
🛡️ Com as regras de segurança que você definiu: o de cima tem que caber dentro do de baixo (nada sobra pra fora da borda), fica centralizado e no máximo 300mm menor por lado; a pilha pode chegar a 2.500mm (baú de 2.400 + os 100mm de folga). Só o mesmo cliente empilha junto (pra não soterrar a carga de outra entrega), e um palete parcial nunca vira base (a camada de cima dele pode ser incompleta). Palete sozinho mais alto que o baú continua barrado.
🎨 Desenho e app. A planta 2D marca o empilhado com ▲ e a isométrica mostra o palete menor pousado em cima. No app da Expedição vale o mesmo — e a bipagem não mudou: cada palete continua com sua etiqueta própria, então o empilhadeirista bipa igual. Tudo atrás do mesmo botão "Empilhar paletes"; desligado, o plano fica idêntico ao de antes.
🔴 Plano de Carga contava só o que faltava do Slotter, não a carga inteira (POWERDENT). O pedido TIPO 07 tinha 8.000 cx e o Slotter já tinha cortado 7.763, mas o plano mostrava só 237 cx / 1 palete. E a caixa TIPO 14 do mesmo cliente sumia. Causa: o plano calculava "em produção" como qtd − produzido, e o "produzido" contava o Slotter (a 1ª máquina, o corte). Só que caixa cortada no Slotter ainda vai pra Coladeira — não é caixa pronta e não está no estoque. Então quando o Slotter cortava quase tudo, sobrava um resto minúsculo; e quando cortava a quantidade toda (ou mais), o modelo zerava e desaparecia do plano.
✅ Agora a previsão é a carga inteira do pedido. Enquanto nada está finalizado (pronto no estoque PA), o plano mostra o pedido inteiro como "em produção" — desconta só o que já virou pronto de verdade, não o corte intermediário. TIPO 07 passou de "237 cx / 1 palete" pra 8.000 cx / 5 paletes, e a TIPO 14 voltou a aparecer com 5.000 cx / 3 paletes. Assim o PCP enxerga a carga real que está vindo, mesmo antes de finalizar.
🔧 Caixa vinculada e certa ainda aparecia "sem paletização" no carregamento (BLUE SEA). A correção da v2.37.72 (prefixo CX opcional) valia só pros PEDIDOS. Mas o que está PRONTO no Estoque PA passava por outro casamento — um mais antigo, exato e sensível a maiúscula — que não ignorava o prefixo. Então a caixa 220016 MILI BEAUTY 18X16 com 7.833 cx prontas não achava o cadastro CX 220016 MILI BEAUTY 18X16 e caía como "sem paletização", mesmo com a caixa cadastrada e completa. Agora o Estoque PA usa o mesmo casamento dos pedidos (com o prefixo opcional e a trava por cliente — nunca pega caixa de outro cliente).
🔴 Palete contado em DOBRO quando o pedido atravessa o turno (bug antigo, corrigido). Nada marcava quais paletes já tinham entrado num registro. O fim de turno zera a quantidade parcial mas não mexe nos paletes, e o operador seguinte adota a lista inteira com todos ainda marcados como confirmados. Resultado, num pedido de 10 paletes: o turno 1 gravava [1..5] e o finalizar gravava [1..5, 6..10] — os cinco primeiros de novo. O Estoque PA somava os dois registros e enxergava 15 paletes onde existiam 10.
🏷️ E gerava etiqueta duplicada. Como a plaquinha numera pela posição na lista impressa, os paletes 1 a 5 ganhavam uma segunda etiqueta no lote 2, com QR diferente — o mesmo palete físico ficava bipável duas vezes na Expedição, inflando a carga. Agora cada palete é carimbado com o número do lote assim que entra num registro, e os registros seguintes só levam os que ainda não foram. O carimbo é feito depois da gravação: se o registro não salvar, ninguém fica carimbado e o palete entra no próximo — nunca some.
🔢 O lote agora é gravado, não deduzido. Antes o número do lote era a posição do registro na lista — anular ou deduplicar um registro renumerava todas as etiquetas já coladas. Agora vem gravado no registro e no próprio palete; a posição ficou só como reserva pra registro antigo (e passou a ignorar registro anulado).
📅 App da Expedição: filtro por dia na lista de planos. A lista mostrava todos os planos em aberto de uma vez — plano de terça aparecia junto com o de hoje e o empilhadeirista tinha que adivinhar qual era o dele. Agora abre no Hoje por padrão, com o botão Todos do lado (que mostra a contagem de cada um: "📅 Hoje (2)" · "Todos (3)").
🛡️ E o filtro nunca esconde serviço. Se não houver plano de hoje mas existir um de outro dia em aberto, a tela não diz "nenhum plano liberado" (que faria ele achar que não tem trabalho) — diz "Nenhum plano de hoje · mas tem N plano(s) em aberto de outro dia" e aponta o botão. A barra de filtro só aparece quando existe plano de outro dia; sem isso, ela nem ocupa espaço. O contador do menu continua somando todos os planos em aberto.
🎯 O aviso mandava fazer a coisa errada — corrigido. A versão anterior dizia "sem paletização — cadastrar a caixa" pra tudo. Só que são dois problemas diferentes, e num deles a caixa já está cadastrada e completa: a KININO tem 15 caixas cadastradas com paletização (CX 01, CX 03, CX 05…) — o que não bate é o código do pedido, que diz KININO 44 e não existe. Mandar "cadastrar a caixa" faria você perder tempo mexendo num cadastro que já estava certo.
🔀 Agora cada caso diz o conserto certo:
• "N códigos sem caixa no cadastro — vincular ao pedido": a caixa existe, o código do pedido é que aponta pro vazio (KININO, Granja Hattori). Conserto = vincular o pedido à caixa certa.
• "N caixas sem paletização — preencher no cadastro": o código bate, achou a caixa, mas ela está sem paletização (Tchetto, TANGARA). Conserto = preencher a paletização daquela caixa.
No card do cliente vale o mesmo: em vez do genérico "caixa não cadastrada", aparece "código sem caixa no cadastro" ou "caixa sem paletização".
🔎 O aviso de caixa sem paletização agora diz QUAL caixa é. Antes aparecia só o total ("30.000 cx sem paletização") e você tinha que caçar qual modelo estava faltando. Agora o seletor lista caixa por caixa, com a quantidade de cada uma, ordenado da maior pra menor — resolvendo a de cima você mata o maior buraco primeiro. Ex.: ⚠️ 3 caixas sem paletização (30.000 cx): • KININO 53 — 12.000 cx · KININO 44 — 10.000 cx · KININO 58 — 8.000 cx.
📐 Some a medida inventada do modelo sem cadastro. No card do cliente, a caixa que não tem paletização aparecia como 1000×1200×1200mm — que não é medida real, é o valor padrão que o sistema usa quando não acha nada, e passava a impressão de que a caixa estava cadastrada certinho. Agora aparece "⚠️ caixa não cadastrada", sem número nenhum pra confundir.
🔍 Cliente sumia do Planejamento de Carga (BLUE SEA). A BLUE SEA tinha 36.500 caixas em produção e não aparecia no seletor de clientes. Causa: os pedidos vinham sem a caixa vinculada e o código não batia por causa do prefixo — pedido dizia 220064 LISA 24X8 e o cadastro tinha CX 220064 LISA 24X8. Sem achar a caixa, não há paletização, a carga vira 0 palete e o cliente era filtrado fora da tela. Agora o prefixo CX é opcional no casamento (o resto do código continua tendo que bater inteiro, e o cliente segue travado — nunca pega caixa de outro cliente).
⚠️ E o mais perigoso: agora ele AVISA em vez de esconder. Varrendo os dados reais, 11 dos 35 pedidos ativos não achavam a caixa no cadastro. Alguns clientes sumiam inteiros (BLUE SEA), mas outros era pior: a KININO aparecia normal com 8 paletes enquanto 3 pedidos dela — 30.000 caixas — eram descartados em silêncio, e você planejava o caminhão achando que aquilo era toda a carga. Agora o cliente aparece do mesmo jeito, com o aviso "⚠️ N cx sem paletização — cadastrar a caixa". Continuam de fora do cálculo (sem paletização não dá pra virar palete), mas você enxerga que existe carga ali. Restaram 6 casos onde o código realmente diverge (ex.: pedido KININO 44 × cadastro CX 01) — esses precisam de correção no cadastro, e o sistema não adivinha pra não herdar paletização errada.
🏷️ Etiqueta de palete por LOTE (pedido da Fezocar: palete grande, fábrica sem espaço). O operador libera de 15 em 15 e agora cada liberação é um lote com numeração própria — sai 1/15 a 15/15, e o lote seguinte recomeça do 1 com o selo LOTE 2. Antes o 2º lote saía errado: "16/15", "17/15".
🔢 O total agora é o que foi FEITO, não o que foi pedido. A plaquinha dizia "Total do pedido.: 3.000 cx" mesmo quando a produção fechou em 2.900. Agora saem duas linhas certas: "Lote 2: 15 paletes · 1.950 cx" (o que está indo neste caminhão) e "Total feito.: 2.900 cx" (o acumulado do pedido).
✍️ Último palete do lote sai EM ABERTO. Como quase sempre tem perda na produção, o último palete de cada lote é impresso com o campo de quantidade em branco e uma linha pra anotar à mão, marcado "PALETE EM ABERTO — ANOTAR". Os paletes cheios continuam saindo com a quantidade impressa normal.
📷 QR entende o lote (senão a Expedição travava). Como a numeração recomeça, o palete 1 do lote 2 teria o mesmo código do palete 1 do lote 1 — e o app recusaria dizendo "já bipado", justamente no 2º carregamento. O QR agora leva o número do lote. Etiquetas já impressas continuam valendo (o leitor entende os dois formatos), e pedido de lote único não muda em nada.
🔧 Botões que não abriam: consertados. O "🤖 Pergunte" e o "⚙️ Turnos & Capacidade" clicavam e não acontecia nada. Faltava um </div> no histórico de versões, e isso engolia 12 telas — junto com eles morreram também Tempos de Setup, RG da caixa, Caminhão, Escala, Coleta e as 4 telas de Orçamento. Todas voltaram.
📦 Expedição — Modo Carregamento ganhou a vista 3D. Na hora de bipar, o empilhadeirista agora alterna entre 🗺️ Planta e 📦 3D: dá pra ver os paletes empilhados dentro do baú, com o palete sólido = já bipado, cinza tracejado = pronto esperando e amarelo tracejado = ainda em produção. O espaço vazio no fundo do caminhão aparece no desenho.
🚦 Avisos durante o carregamento. Terminou um cliente, aparece "✅ Carga completa — Fulano. Próximo: Beltrano". Se os prontos dele já foram mas ainda tem coisa na máquina, aparece o aviso amarelo "prontos carregados; N paletes ainda em produção". No fim, "🏁 Caminhão carregado" — e se sobrou mercadoria, um aviso vermelho lista o que ficou pra trás e segue no estoque do PA (nada é baixado).
📊 Ordem de carregamento e contadores. Os clientes agora aparecem na ordem de carregar (a última entrega carrega primeiro, no fundo; a primeira entrega fica na porta) — antes era ordem alfabética. Cada cliente tem barra de progresso própria, e cada pilha na planta mostra quantos já foram bipados (ex.: 2/4), com contorno verde quando fecha.
🛡️ PCP reeditar plano não apaga mais a bipagem. Se o PCP abrisse um plano que a expedição já estava carregando e salvasse de novo, todos os paletes bipados sumiam e o carregamento voltava do zero. Agora o plano só anda pra frente (rascunho → liberado → carregando → concluído) e a bipagem é preservada.
🏭 As máquinas cadastradas somem do cronograma quando ficam sem pedido — corrigido. As 4 de fábrica sempre aparecem, mesmo paradas ("livre 2h12"). Já as cadastradas (offset, acopladeira, coladeira de visor) só tinham raia no dia em que tinham trabalho — bastava o último pedido delas terminar e elas desapareciam da régua, como se não existissem.
Agora toda máquina cadastrada e ativa tem raia fixa, igual às de fábrica. Máquina inativada no cadastro continua fora.
⚠️ Corrigir a produção estava DUPLICANDO o lançamento. Este é o mais sério do dia, porque mexia no número final.
• A correção mandava o identificador errado (o do servidor em vez do original do lançamento). Como não achava ninguém pra atualizar, a sincronização criava um lançamento novo — e o antigo continuava valendo. Um pedido corrigido de 7.000 pra 10.090 ficava com os dois, somando 17.090. Era daí que vinha o "Falta" com número negativo.
• Corrigido no PCP e nos dois caminhos do operador: agora usa o identificador certo e atualiza em vez de criar.
• A correção feita no PCP agora também chega no operador (quadro de concluídos + quantidade da etapa) — antes ela parava no banco e a próxima máquina seguia com o número velho. É o espelho do conserto que o operador ganhou na v2.37.67.
Pedidos corrigidos ANTES desta versão podem ter ficado com lançamento duplicado — vale conferir os que passaram por correção.
✏️ Corrigir a quantidade no operador estava morrendo na tela. A correção inteira só rodava se o pedido tivesse chegado ao aparelho com os lançamentos — e isso só acontece em pedido reprogramado. Em todos os outros casos o app mudava o número na tela e não salvava em lugar nenhum: nem na etapa (que a próxima máquina usa), nem no quadro de concluídos, nem no banco. Sem nenhum aviso.
• Agora a etapa e o quadro de concluídos são gravados sempre — eles só precisam do pedido e da máquina.
• O lançamento no banco, que precisa do identificador, é buscado na API quando não veio junto do pedido, em vez de desistir calado.
• Se ainda assim não achar, o app avisa ("corrigido aqui e pras próximas máquinas, mas confira no PCP") em vez de dizer que deu tudo certo.
✏️ Corrigir a quantidade agora chega nas outras máquinas e no PCP. O operador finalizava com 7.000, percebia o erro e corrigia pra 10.090 — a correção entrava no lançamento dele e no servidor, mas a quantidade da etapa continuava 7.000. Resultado: a acopladeira seguia trabalhando em cima do número velho e o PCP mostrava "7.000 / 10.000". Agora a correção grava pelos mesmos caminhos do finalizar (etapa + quadro de concluídos), então ela alcança a próxima máquina e a central.
🟣 Máquinas do meio ganharam cor no trilho do PCP. Elas ficavam no mesmo cinza de "aguardando" e sumiam entre o corte (verde) e o fechamento (azul) — dava a impressão de que o pedido nem passava por elas. Agora aparecem em roxo, deixando a rota inteira visível.
🏭 Dois acertos no app do operador, reportados no teste real:
• "AGUARDANDO CORTE E VINCO" mesmo esperando a offset. A mensagem só sabia dizer dois nomes — "Slotter" ou, em qualquer outro caso, "Corte e Vinco". Com uma máquina de corte cadastrada (offset, por exemplo), ela caía no segundo e mentia o nome. Agora mostra a máquina real do pedido: "⏳ AGUARDANDO OFFESET".
• "falta 0 pra fechar o pedido" no meio da tiragem. Ao liberar parcial, a conta usava a quantidade do pedido (1.000) em vez da chapa lançada (10.000) — então liberar 1.000 já dizia que não faltava nada. Agora usa a chapa, igual à barra e ao PCP: "falta 9.000 pra liberar tudo (10.000)".
Pedido em que a chapa é igual à quantidade (o dia a dia) continua mostrando exatamente o mesmo número de antes.
🧹 O botão "Atualizar app" agora fala com você — e funciona direito.
• Antes ele era mudo: limpava e recarregava sem dizer nada. Se o servidor ainda não tinha publicado a versão nova, o operador apertava, parecia que "não acontecia nada", e ficava sem saber se o problema era o app ou a publicação. Agora ele confere o servidor primeiro e responde: "você já está na mais nova (vX)", ou "versão nova! aparelho vX → servidor vY", ou "não consegui falar com o servidor".
• O aviso de versão nova (a tarja azul) estava mais fraco que o botão: mandava recarregar sem esperar a limpeza do cache terminar e sem desregistrar o service worker — a página recarregava antes de limpar, ainda controlada pela versão velha, e o app não atualizava. Corrigido nos 9 apps que têm esse aviso.
Se um aparelho ficar teimando numa versão antiga, fechar e abrir o app continua sendo o jeito mais garantido — mas agora deve ser raro precisar.
🔄 Reiniciar do zero agora limpa o aparelho do operador de verdade. Antes, mesmo depois de reiniciar, o celular continuava mostrando a produção velha — cronômetro de 34 horas correndo, "já feitas 3.456" — e ainda reenviava esse número por cima do zero. Acontecia nos dois aparelhos ao mesmo tempo.
• A regra ficou simples: em vez de carimbos e comparações, o sistema agora só pergunta "este trabalho nasceu antes ou depois do reinício?". Todo progresso já guarda a hora em que nasceu, então a limpeza é retroativa: o que está preso hoje se resolve sozinho na primeira sincronização, sem precisar reiniciar de novo.
• Dois operadores não entram mais no mesmo pedido. O reiniciar soltava a trava e ninguém a devolvia — o pedido ficava sem dono e qualquer um entrava, mesmo com alguém produzindo. Agora quem pega o pedido assume a trava de novo.
• Barra do PCP passou a medir contra a chapa lançada, igual ao app do operador: pedido de 1.000 com 10.000 chapas mostra 10%, não 100%. E a porcentagem agora aparece na linha.
Trabalho começado DEPOIS do reinício é preservado — a limpeza só alcança o que é anterior a ele. Troca de turno, reprogramar e reabrir etapa continuam funcionando igual.
🏭 Cada máquina com a sua própria vida. Três consertos no app do operador:
• "Já feitas" agora é POR MÁQUINA. Antes, se a offset tinha feito 200 caixas, a acopladeira e a coladeira mostravam "já feitas 200" também — emprestavam o número da máquina anterior. Agora cada uma mostra só o que ELA fez.
• Reiniciar do zero limpa o operador de verdade. Antes, um pedido reiniciado ainda aparecia como "Largado · 240 cx feitas" no aparelho do operador — sobrava o parcial antigo. Agora o reinício apaga esse resto, e se o operador estiver com o pedido aberto ele é avisado e volta pra lista. Também não deixa mais lançar produção de um pedido que acabou de ser zerado (nem no Finalizar, nem na Troca de turno).
• Coladeira de Visor não pede mais paletização. Ela é máquina do MEIO, mas o sistema a confundia com a Coladeira de fechamento. Agora quem paletiza é definido pelo tipo no cadastro da máquina.
A troca de turno normal (largar com produção e o próximo continuar de onde parou) segue funcionando igual. Preparo da FASE 5: a entrada no estoque de produto acabado passou a usar a etapa final da sequência, abrindo caminho pra máquina de fechamento cadastrada.
📋 Vida da Caixa (o RG do pedido) mostra as máquinas novas. Começa a FASE 5 do Roteiro Livre. Antes o RG espremia tudo em "Slotter" + "Coladeira" e a Acopladeira (ou verniz, offset…) sumia. Agora cada máquina da rota vira uma estação própria na ordem certa (corte → meio → fechamento), com o nome/ícone do cadastro, quem rodou, quanto produziu e as ocorrências dela. Pedido de 2 etapas continua idêntico; e uma ocorrência que o RG antigo escondia agora aparece (nenhuma se perde).
🏭 Cronograma: a máquina de CORTE cadastrada (offset) agora tem RAIA própria. Fecha 100% a FASE 4 do Roteiro Livre. Antes o corte da offset aparecia na raia do Slotter; agora ela tem a raia própria na régua, com o estado ao vivo (lido da produção que o operador lança) e a velocidade do cadastro dela. Pedido que usa Slotter/Corte e Vinco continua exatamente igual.
Agora TODAS as máquinas cadastradas (corte, meio e fim¹) aparecem no cronograma automático — cadastrar uma nova já funciona sozinho. (¹ máquina de fechamento custom ainda é da FASE 5.)
📄 Romaneio por cliente na expedição. Imprime o romaneio (o que vai no caminhão) separado por cliente — produto, medida, qualidade (onda), paletes, caixas, peso e total. Cabeçalho com nº sequencial (Romaneio Nº 21, 22…), caminhão + placa + tamanho do baú e motorista. Canhoto com o nº do romaneio, a lista numerada dos itens (rastreabilidade) e campos de assinatura: Carregado por (empilhadeirista) — já preenchido quando a carga foi bipada, em branco no plano —, Conferido por, Encarregado e Recebido por (cliente). Botão por cliente no histórico do plano e na carga bipada/manual (funciona até sem plano). No romaneio do plano, mostra o desenho do caminhão com a carga do cliente em destaque e as outras transparentes (ordem de entrega: PORTA = 1ª, fundo = última). O nº do pedido aparece em todos os casos — no plano (busca por cliente+código) e nas cargas já carregadas (deriva do pedido). Histórico de romaneios reimprimível.
🏭 Cronograma: a etapa do meio agora tem RAIA própria na régua. Fecha a FASE 4 do Roteiro Livre. A máquina do meio (Acopladeira etc.) aparece como raia posicionada na linha do tempo — na ordem certa (corte → meio → acabamento), sem sobrepor outros pedidos e sem "raia-fantasma" (só aparece nos dias em que roda). O acabamento agora espera o meio, e o resumo mostra o "Livre" da máquina do meio. Pedido de 2 etapas continua exatamente igual.
Falta só a máquina de CORTE cadastrada (offset) ganhar raia própria — hoje ela ainda aparece na raia do Slotter.
🏭 Cronograma mostra as etapas do meio (Acopladeira, coladeira de visor…). Pedido com roteiro de 3+ etapas agora aparece no card do cronograma na ordem certa — corte → meio → acabamento — e a etapa do meio mostra o status ao vivo (aguardando / em produção % / concluído), lido direto da produção do operador. É a FASE 4 do Roteiro Livre chegando no cronograma.
Por ora a etapa do meio aparece como linha de status no card (a raia própria dela na régua vem no próximo passo). Pedido de 2 etapas continua exatamente igual.
🏁 Resumo do turno do operador reformulado — agora puxa tudo do banco de dados (não mais do aparelho): produção do dia por máquina, paradas completas por motivo (do pedido + livres) e tempo produtivo × parado.
🎯 Meta do turno (vinda do cronograma inteligente): caixas e pedidos previstos por máquina/turno, com barra de % do que foi cumprido.
📅 Histórico por data — o operador navega pra dias anteriores ("o que fiz ontem?") e vê o relatório daquele dia.
Requer restart da API (rota nova /api/operador-app/resumo-dia).
🔵 Pedido reiniciado não fica mais "rodando" na máquina. Depois de reiniciar, o card às vezes continuava mostrando "🔵 Rodando na Acopladeira" (ou na máquina que estava) mesmo com a produção já zerada. Causa: quando a trava do operador é solta (ao reiniciar, reprogramar ou destravar no 🔓), o registro do operador guardava o "início de produção" e o painel lia isso como se ainda estivesse rodando. Agora, trava solta = não está rodando: o card mostra a fase real pelo status do pedido (reiniciado → "A Programar"). Também não conta mais o "parcial ao vivo" de uma trava já solta na barra de progresso.
🔄 Reiniciar agora zera o pedido DE VERDADE. Antes o Reiniciar deixava lixo pra trás (o pedido continuava "rodando" numa etapa mesmo depois de zerado). Agora ele apaga tudo: produção de todas as máquinas (cancelada), o que já tinha ido pro estoque, as etapas concluídas/liberadas de cada máquina que passou (limpa o "liberado" que ficava preso), e tira o material disponível — o pedido volta pra "A Programar" (precisa lançar a chapa de novo). A programação (cortes/bobina) é mantida. O aviso de confirmação lista tudo que vai ser apagado.
🖨️ Máquina de corte cadastrada (ex: offset) entra como 1ª máquina. Agora o menu "1ª máquina (corte)" do pedido mostra, além do Slotter e do Corte e Vinco, as máquinas que você cadastrou como Corte / preparação (ex: offset). Ela ocupa o lugar do corte — a produção dela conta como chapa e o pedido flui igual. O sistema passou a respeitar a posição no fluxo de cada máquina cadastrada: corte vai na 1ª máquina, meio vai em "processo do meio", fim (fechamento próprio) fica pra próxima fase. Pedidos e máquinas de fábrica continuam idênticos.
🔢 Cada etapa trabalha o que a ANTERIOR liberou (Roteiro Livre). No teste da Acopladeira apareceu: liberou 500 pra próxima e a Coladeira mostrava 1.000. Era porque toda etapa olhava sempre pro Slotter em vez de quem liberou pra ela. Agora a base de cada etapa (paletização/quantidade) é o que a etapa imediatamente anterior da sequência liberou ou concluiu — Acopladeira liberou 500 → a Coladeira seguinte trabalha 500. Pedido normal (Slotter → Coladeira) continua idêntico. Testado com o dado real do pedido teste.
🧩 Trilho de processo do PCP mostra a sequência completa. Na coluna PROCESSO / PROGRESSO (Relatório/PCP), o trilho de etapas agora mostra os processos do meio — ex: Slotter → 🩹 Acopladeira → 📦 Coladeira, em vez de pular direto pra Coladeira. Quando a etapa do meio está rodando, ela pulsa no trilho igual às de fábrica. Vale também no texto do cronograma/WhatsApp. Pedidos sem sequência continuam idênticos. (Completa a FASE 2/3 do Roteiro Livre.)
🏭 Operador segue a sequência — FASE 3 do Roteiro Livre. O app do operador agora entende as máquinas cadastradas (Acopladeira, Verniz…): o operador vinculado a elas vê os pedidos cuja sequência tem a etapa dele, e o gating virou genérico — cada etapa espera a anterior da sequência (concluída ou com liberação parcial), não mais só o Slotter. Ex.: numa sequência Slotter → Acopladeira → Coladeira, a Coladeira espera a Acopladeira (mostra "⏳ AGUARDANDO ACOPLADEIRA"). A liberação parcial também ficou genérica: qualquer etapa não-final libera pra próxima (somando, como sempre). Conclusão de etapa do meio conta com geração/reabertura igual às de fábrica. Pedidos e máquinas de hoje: comportamento idêntico (testado caso a caso). ⚠️ Requer teste em 2 aparelhos antes de rodar de verdade; falta a FASE 4 (lane no cronograma).
🧩 Sequência de processos no pedido — FASE 2 do Roteiro Livre. No cadastro do pedido, o Roteiro ganhou a opção "Sequência personalizada": o corte entra automático, você adiciona os processos do meio (Acopladeira, Verniz… — os que cadastrou em Máquinas/Processos), ordena com ◀ ▶, e escolhe o fechamento (Coladeira/Grampeadeira). A sequência aparece no preview do fluxo, no card do pedido (corte → acopladeira → coladeira) e é publicada pro app do operador (que ganha as etapas novas na FASE 3; até lá, o fluxo do operador segue como hoje — por isso o fechamento ainda é Coladeira/Grampeadeira). Pedidos antigos não mudam nada.
⚙️
Cadastro de Máquinas / Processos — FASE 1 do Roteiro Livre. Tela nova em
Cadastros → Máquinas / Processos: além das 4 de fábrica (Slotter, Corte e Vinco, Coladeira, Grampeadeira), agora dá pra
cadastrar processos novos — Acopladeira, Verniz, Coladeira de Visor, etc. — com ícone, posição no fluxo (corte / meio / fechamento) e velocidade padrão. As máquinas novas já aparecem nas listas de máquina do sistema.
Próximas fases: montar a sequência de processos por pedido (na ordem que quiser), o app do operador seguir a sequência e o cronograma ganhar as lanes novas. Nada do fluxo atual muda nesta fase.
🟠 Palete fora do padrão avisado NA CHEGADA do pedido. Quando entra um pedido de caixa que usa palete diferente do PBR (ex: 800×1400), o card do pedido no Relatório/PCP já mostra o aviso laranja com a conta pronta ("providenciar 7 paletes antes da produção") — sem esperar abrir o cadastro da caixa ou o operador pegar o pedido. O aviso some sozinho quando o pedido entra em produção (daí o app do operador segue mostrando o dele).
🏷️ QR da etiqueta de palete: consertado e agora feito DENTRO do sistema. A etiqueta dependia de um site externo pra desenhar o QR — quando ele falhava (como na impressão do pedido 23551), o QR saía pequeno, torto ou em branco. Agora o QR é gerado na própria etiqueta, na hora, sem internet e sem espera: sai sempre grande e nítido na moldura. Testado de ponta a ponta: o QR gerado foi lido de volta pelo mesmo leitor da Expedição (inclusive nomes com acento e códigos longos). As etiquetas já impressas continuam valendo.
🕓 Aviso ao editar uma carga antiga já entregue. Quando você clica em Editar numa carga do histórico cujos pedidos já foram entregues/carregados, o editor mostrava tudo zerado e parecia bug. Agora aparece um aviso explicando: o Planejamento recalcula com o que está pendente hoje (por isso zera), e pra ver como a carga estava é só usar o 👁 Ver do histórico. Nada quebrado — a carga tinha saído mesmo.
📋 Histórico de cargas no Planejamento de Carga. Agora aparece a lista de tudo que você já montou — cada carga com caminhão, status, data, quem salvou, nº de paletes e os clientes. Cada uma tem 👁 Ver (abre um resumo do que foi: o que vai por cliente, "3 de 3 vão", prioridade, ficou pra trás) e ✏️ Editar — dá pra editar mesmo depois de liberado (trocar caminhão, trocar/adicionar cliente, marcar prioridade) e é só Salvar ou Liberar de novo pra atualizar. Também dá pra imprimir 🖨️ ou remover 🗑 uma carga do histórico. (Substitui os "chips" pequenininhos de antes.)
⌨️ Fim do histórico repetido do navegador nos apps também. Estendi o autocomplete desligado pros aplicativos separados: as buscas de cliente/código na Expedição e na Qualidade, a busca de cliente do Vendedor (e o "tipo de caixa"), e as buscas do Almoxarifado e de Compras. Agora nenhum campo do sistema sugere mais aqueles nomes repetidos do navegador — em todos os apps.
⌨️ Autocomplete de cliente e caixa direto do cadastro (não mais do navegador). Todo campo onde você digita o nome do cliente ou a caixa/referência passou a sugerir direto do cadastro do sistema — conforme digita, abre o menu com os nomes reais, e clicando ele completa sozinho. Acabou o histórico repetido do navegador (aquele que mostrava o mesmo nome várias vezes): todos os campos ganharam autocomplete desligado. Já valia no pedido, orçamento, cadastro de caixa e custos; agora também na etiqueta avulsa (cliente + caixa, com a caixa filtrada pelo cliente digitado), no Setup por cliente, na divisão de papel e nas buscas. Um mecanismo central preenche o menu na hora que você clica no campo, sempre atualizado com o cadastro.
📊 Barra de porcentagem em cada etapa do Cronograma. Agora cada máquina mostra uma barra de progresso com o % do que já foi feito e ela fica sempre visível (antes sumia quando concluía). Slotter que cortou 5.000 de 10.000 = 50%; Coladeira/Grampeadeira idem, conforme os paletes vão sendo lançados. Enquanto o operador ainda não lançou nada mas a máquina já está rodando, aparece uma estimativa por tempo (velocidade do cadastro × tempo rodando), com barra listrada e a marca "estimado pelo tempo" — quando o lançamento real chega, a barra passa a contar por caixa. Etapa concluída mostra 100%. (Primeiro passo pro futuro sensor da Slotter atualizar o % em tempo real.)
🏷️ Etiqueta do palete: logo e textos ocupando o espaço todo. A logo do cliente passou a usar o card inteiro (o rótulo "Cliente.:" virou marquinha no canto), e o sistema apara sozinho a margem branca embutida no arquivo da logo pra ela sair grande. A Referência e o Palet Nº agora crescem sozinhos pra preencher o card (texto curto fica gigante, texto longo diminui sem estourar). No card da quantidade aparece o Total do pedido. E o nome do cliente por escrito saiu pro rodapé (junto de Operador e Data), garantindo identificação mesmo quando só a logo aparece no topo. Lembrete: as Medidas internas vêm do cadastro da caixa (C×L×A) — caixa sem medidas mostra o nome do cliente.
🏷️ Etiqueta do palete redesenhada (layout novo, aprovado no editor). A ficha do palete foi remontada exatamente no formato que você desenhou: logo do cliente bem grande no topo, Nº interno + Medidas internas lado a lado, Referência gigante no meio, e embaixo o QR à esquerda (bipa de longe) com Palet Nº e Quantidade no Palet (em vermelho) à direita, mais o rodapé com Operador e Data. Vale nas etiquetas do PCP e do operador. Textos e números se ajustam sozinhos pra não estourar (referência/quantidade longas diminuem a fonte). Quem não tem logo cadastrada continua mostrando o nome do cliente.
🏷️
Etiqueta de palete no novo layout (padrão FK). A ficha do palete (que sai da Coladeira/Grampeadeira e do PCP) foi redesenhada igual ao modelo aprovado: cards azuis com Cliente + logo + QR ao lado, Nº interno, Medidas internas da caixa (C×L×A), Referência grande, Quantidade no palet em vermelho e Palet Nº. O QR continua o mesmo (bipa de ~2m). Medidas puxadas do cadastro da caixa (casando código + cliente, sem cross-client).
📤
Liberação parcial agora SOMA. O Slotter libera em várias rodadas; o app gravava só a ÚLTIMA (liberou 1.000 oito vezes → ficava 1.000, os outros 7.000 sumiam — confirmado no pedido 23551). Agora ele pergunta só
quanto está liberando AGORA, mostra o que já foi liberado e
soma sozinho. Na hora de finalizar aparece
"você já liberou X · falta Y pra fechar o pedido", e o ajuste continua descontando
uma vez só.
↩️
Reabrir etapa — quando a máquina quebra no meio. Se a operadora finaliza a etapa mas o processo anterior entregou MAIS (ex.: o Slotter cortou 2.320 e a Grampeadeira só grampeou 260 porque a máquina quebrou), o pedido travava e
não existia caminho pela tela — nem o PCP conseguia soltar. Agora o pedido tem o botão
↩️ Reabrir · terminar X, que devolve o pedido pro operador com a conta certa (
2.060 no exemplo) e sem perder nada do que já foi lançado. Vale pra
Grampeadeira, Coladeira e Slotter: reabrindo o Slotter, o que ele já cortou fica
liberado pra próxima etapa trabalhar em paralelo enquanto ele corta o resto.
📋 Resumo do operador agora é o DIA todo, separado por máquina. No fim do turno ele vê um bloco TOTAL DO DIA e um bloco por máquina — quem rodou no Slotter de manhã e na Grampeadeira à tarde não perde mais metade do dia no resumo. Também corrigido o "Tempo em ajustes: 6435h" (268 dias!): um ajuste esquecido aberto meses atrás entrava na conta de hoje.
🏷️ Etiqueta do palete: QR que bipa de longe. O QR guardava dado repetido à toa e saía com quadradinhos de 1mm — só lia a ~40cm. Agora tem 112mm com quadradinhos 3,3× maiores, impressão nítida e margem correta: dá pra bipar de ~2m, de cima da empilhadeira. As etiquetas já impressas continuam valendo (o leitor entende os dois formatos).
🧹 Projetar Corte e Vinco: padrão Maleta + sem "riscos" quando não tem medida. A tela de projeto agora abre com o gerador Maleta por padrão, e enquanto você não informar as medidas internas (C, L, A) ela não desenha aquele emaranhado de linhas — mostra o aviso "informe as medidas" e o molde fica "—". Assim que você digita C×L×A, o desenho aparece certinho.
📐 Corte e Vinco no orçamento: chapa do plano inteiro + preço por poses. Agora a medida da chapa no orçamento é a do plano inteiro (ex.: 1131 × 812, com o refile), e o peso e o preço são divididos pelas poses (2, 4…) pra dar o valor por caixa certo — sai o mesmo preço de antes, mas mostrando a medida real. As poses ficam guardadas na caixa pra a Programação depois tirar caixas ÷ poses = chapas (10.000 caixas → 5.000 chapas de 812). Obs.: na Programação, "cortes" é o corte da onduladeira (chapas na largura da bobina) — coisa diferente das poses da faca; a divisão por poses da produção vem no próximo passo.
🎨 Projetar Corte e Vinco: guarda o projeto + desenha o plano no orçamento. Agora ao reabrir 🎨 Projetar (pra editar ou depois de "atualizar item") ele volta com tudo que você já fez — modelo, DXF, poses, encaixe, preços e o desenho — em vez de resetar. E o desenho do plano real (com as poses/encaixe) passa a aparecer no orçamento, no lugar do retângulo simples.
🐛 Correção: tela "Projetar Corte e Vinco" não carregava a biblioteca/modelos. O modal do cadastro de caixa fica escondido no fundo depois de aberto uma vez e usava os mesmos identificadores da tela de projeto — então a biblioteca e os cálculos iam pro lugar invisível. Agora a tela de projeto limpa esse resquício ao abrir e mostra a biblioteca, o DXF, os geradores e os cálculos direitinho.
🎨
Projetar Corte e Vinco dentro do orçamento. No item Corte e Vinco tem agora o botão
🎨 Projetar Corte e Vinco, que abre a
tela completa de projeto (biblioteca, gerador, DXF, poses, encaixe, refile e preços) — igual à do cadastro de caixa. Você faz todo o arranjo ali e ao
Aplicar ele joga pro orçamento a
chapa (comp/larg), a faca, a área e o material.
Não precisa mais ter a caixa cadastrada — dá pra projetar do zero num cliente novo. Se quiser, marque
"Salvar também no cadastro de caixas" pra criar a caixa junto. O atalho de puxar de uma caixa já cadastrada continua, como opção.
🚚 Planejamento de Carga: card mais claro + imprimir plano. Cada caixa agora mostra quantos paletes daquele modelo realmente vão no caminhão (✅ todos · ⚠️ parte · ⬜ nenhum), no lugar de só o total. E tem o botão 🖨️ Imprimir plano, que gera um PDF com o caminhão, as medidas do baú, o que vai / o que ficou pra trás e os desenhos 2D e 3D — pronto pra imprimir ou salvar. O empacotador também passou a seguir a acomodação real da caixa e a escolher a melhor orientação do palete no baú.
💰 Corte e Vinco no Orçamento + importação em lote (Fase 5 — última). No item do orçamento tipo Corte e Vinco tem o botão 🔗 Puxar da caixa: escolhe a caixa cadastrada (só do mesmo cliente) e já traz a medida da chapa por caixa (com poses/encaixe/refile embutidos), a faca (perguntando se dilui no programa ou cobra à parte, pela diluição de ferramental que já existe) e o ganho de apara abatido do preço. E a importação em lote: botão ✂️ Importar Corte e Vinco (lote) no cadastro de caixas — baixe o modelo CSV, preencha uma caixa por linha, selecione o CSV + os DXFs (casados pelo nome do arquivo) e confira o preview antes de criar. Fecha o módulo Corte e Vinco (fases 1 a 5).
🧩 Corte e Vinco — poses, encaixe e custos (Fase 4). Agora dá pra definir o arranjo na faca: poses no comprimento × na largura, espaço entre poses e refile (comprimento e largura). O encaixe (fileiras invertidas 180°) tem o botão 🧮 Calcular melhor encaixe que acha sozinho a sobreposição e o deslocamento pelo DXF. E os custos: 🔪 faca (lâmina total × R$/m, padrão R$ 120/m), chapa por caixa (área × gramatura × R$/kg ÷ poses) e o ganho com apara abatido — dando o custo líquido por caixa. Testado: encaixe 2×2 do fundo americano → largura 843,5; melhor encaixe do DXF → sobrep 168,5 / desloc 584; faca da caixa de linguiça @120/m = R$ 1.110,81. Próxima (Fase 5): plugar no Orçamento Inteligente + importar a planilha em lote.
📐 Corte e Vinco — importar DXF do ArtiosCAD (Fase 3). Agora dá pra arrastar o .dxf no cadastro Corte e Vinco: o sistema lê o desenho exato (linhas, arcos, polilinhas) e mostra o molde real da faca com o desenho idêntico ao projeto. As camadas viram uma tabela onde cada uma é Corte / Vinco / Picote 5×5 / Ignorar (com palpite automático pela cor — cor 1 corte, 2 vinco, 3/85 picote, "Unknown" ignora — e dropdown pra corrigir). O picote entra na lâmina (tracejado laranja). Testado nos DXF reais: fundo americano → 718×423,5 (corte 2.984,7 · vinco 1.983,0 · picote 348) e caixa de linguiça → 645,5×566,8 · lâmina 9,26 m. Próxima: poses/encaixe/refile e custos no orçamento.
📚 Corte e Vinco — biblioteca de modelos (Fase 2). No cadastro Corte e Vinco tem agora a biblioteca com 545 modelos FEFCO/ECMA (366 com miniatura), com busca por código/nome e filtro por série (01–09 + ECMA). Clicar num modelo já puxa o gerador (fundo americano/maleta) quando tem fórmula. Os ★ mais usados viram chips de acesso rápido no topo — a contagem é por usuário e fica salva no banco (não some ao trocar de aparelho). Próximas fases: importar DXF do ArtiosCAD, poses/encaixe e custos no orçamento.
✂️ Corte e Vinco no cadastro de caixa (Fase 1). No modelo Corte e Vinco, dá pra escolher um gerador de chapa — Fundo Americano (ECMA A55.20.01.01 / FEFCO 0711) ou Maleta FEFCO 0201 — que calcula a chapa do molde pela fórmula a partir das medidas internas (C×L×A) + onda. Mostra a planificação desenhada com cotas (abas, travas, fundo, vincos), permite ajustar na mão a medida de 1 caixa, e calcula área/peso da chapa. Calibrado: 300×200×150 onda B → chapa 1018 × 508,5 mm. Tudo aditivo — caixas normais (dobra/slotter) seguem iguais. Próximas fases: biblioteca de modelos, importar DXF do ArtiosCAD, poses/encaixe e custos no orçamento.
📦 Planejamento de Carga: conta por caixas + palete PARCIAL. Agora cada modelo do cliente mostra a conta a partir da quantidade de caixas (prontas + em produção) convertida em paletes: ex. 56.350 cx ÷ 5.250/palete → 10× 2,40m + 1× PARCIAL 1,80m (3.850 cx · 11/15 camadas). O último palete parcial (mais baixo, com menos camadas) entra no plano como peça própria — pode empilhar onde o cheio não cabe — e só fica pronto quando toda a quantidade foi produzida. Cheio e parcial são contados separados (sem misturar) e a planta mostra o ·P no parcial.
⭐ Caixa prioritária no Planejamento de Carga. Dentro de cada cliente, cada caixa agora tem uma estrela: marcou = essa caixa TEM que ir, sem exceção. Quando o caminhão não cabe tudo, o sistema garante a caixa prioritária e derruba as outras no lugar dela (as não-prioritárias é que ficam pra trás). Se uma prioritária não couber nem fisicamente, aparece um alerta forte pra usar outro caminhão ou fazer 2 viagens. A prioridade fica guardada quando você salva o plano.
🔄 Coletas no Retorno (Expedição · Fase 4 — caminhão nunca volta vazio nem esquecido). Fluxo completo em 4 apps: (1) na Escala (aqui na central), cada viagem ganhou + adicionar retorno — o PCP registra o que coletar, onde e o destino interno; (2) o motorista vê a coleta junto da entrega e marca 📦 Coleta feita → 🏭 Cheguei na fábrica; (3) a Expedição recebe um 🔔 alerta pulsante, 📤 retira do caminhão e 📦 encaminha ao almoxarifado; (4) o Almoxarifado ganhou a aba 🚚 Coletas com a fila pra dar ✅ Recebi. Cada passo guarda hora + quem fez (linha do tempo). Tudo novo, não mexe em nada que já existe.
🚚 Planejamento de Carga: vista 3D + clientes automáticos da escala (Fase 2 completa). Duas melhorias na aba: (1) desenho 3D (isométrico) mostrando como os paletes ficam empilhados no baú — sólido = pronto, fantasma = em produção, com estrado de madeira; (2) ao escolher o caminhão (ou "Novo plano"), o sistema já puxa os clientes da viagem daquele caminhão na escala, na ordem de entrega, só quem tem carga (com botão 🔄 Puxar da escala pra puxar de novo). Ignora viagem cancelada/entregue, casa o nome do cliente mesmo com acento/abreviação diferente, e avisa quando o caminhão não tem viagem na escala.
📦 Modo Carregamento (Expedição · Fase 3 — bipagem do empilhadeirista). No app da Expedição tem um card novo 🗓️ Carregar por Plano (com contador de planos liberados). O empilhadeirista abre o plano liberado do dia, vê a planta do baú (🟩 bipado · ⬜ pronto esperando · 🟨 em produção) e bipa cada palete com a câmera. O sistema confere se o palete é daquele plano (avisa se for de outro cliente/caixa) e se já foi bipado, mostra o progresso por cliente em tempo real, e no fim 🏁 Caminhão carregado fecha o plano. Cada bipagem guarda palete/hora/quem — e fica salva no aparelho se a internet cair.
💾 Planejamento de Carga: salvar e liberar o plano (Expedição · ponte pra bipagem). Depois de montar a carga, dá pra 💾 Salvar rascunho e 🚚 Liberar pro carregamento — o plano fica guardado com um status (rascunho → liberado). Os planos salvos viram atalhos pra reabrir na hora. É a base pra a próxima parte: o Modo Carregamento, onde o empilhadeirista bipa cada palete seguindo o plano liberado.
🗓️ Planejamento de Carga (Expedição · Fase 2, parte 1). Aba nova em Expedição → Planejamento de Carga: escolhe o caminhão do cadastro (com o baú da Fase 1), adiciona os clientes da entrega (só quem tem carga programada), vê por modelo os ✅ paletes prontos + 🏭 em produção, define a ordem de entrega (a 1ª fica na porta, a última no fundo), e o sistema calcula o encaixe automático (skyline) + a planta do piso + o que ficou pra trás (sem baixar do estoque). Ainda vem: o desenho isométrico 3D, salvar o plano e a herança automática dos clientes da escala.
🚛 Expedição — Fase 1 (base do Planejamento de Carga). Início do novo módulo (invisível no dia a dia por enquanto): (1) o cadastro do caminhão — na central e no app da Escala — ganhou as medidas internas do baú (Comprimento × Largura × Altura em mm, opcional; caminhão antigo sem medidas continua funcionando); (2) cada entrega da escala agora tem um id estável (antes era identificada só pela posição, que quebrava ao remover uma entrega do meio) — pra a coleta de retorno grudar na entrega certa mais pra frente. As medidas do baú são copiadas na viagem ao salvar. Nada muda no uso atual da escala.
💰 Orçamentos aparecem NA HORA. Os orçamentos já cadastrados não carregavam de imediato — o número no menu ficava 0 e a lista só surgia depois de você mexer na aba. Agora (1) o número no menu atualiza assim que os orçamentos chegam do servidor (mesmo no Dashboard) e (2) ao abrir a aba Orçamentos, a lista já renderiza na hora com o que está cadastrado. Não precisa mais clicar em "Novo Orçamento" pra eles aparecerem.
🔀 Cronograma respeita a Ordem de Produção (parou de perder a ordem salva). A ordem que você define no Reordenar (arrastar/setas + Salvar) estava sendo apagada quando um aparelho publicava config sem ter a ordem carregada — aí o cronograma caía na prioridade por data (mais atrasado primeiro), ignorando o que você definiu. Corrigido: a publicação de config agora preserva a ordem salva. Depois de atualizar, abra Reordenar, ajuste e Salve — agora ela fica e o cronograma segue ela (1º = 1º, 2º = 2º…), independente de chapa/atraso.
🔄 Cronograma ORGÂNICO: cada pedido no horário REAL. O cronograma do dia agora reflete a realidade: pedido feito aparece no horário que realmente rodou (não no plano — ex.: o XPLASTZ na manhã), pedido rodando mostra até onde vai, e o que ainda não começou PUXA pra frente sem vão à toa (pulando almoço). Cada etapa ganha selo ⚡ Antecipado (começou antes do plano) ou 🟠 Atrasado (depois), e o acabamento espera o corte. O registro do dia passado e a previsão do futuro seguem pelo plano.
🧹 Cronograma: pedido PRONTO sai do dia (mostra só o que falta). Um pedido que já ficou pronto (ou pronto p/ carregar / carregado / entregue) sai do cronograma do dia ativo — ex.: o XPLASTZ ficou pronto antes do almoço e continuava aparecendo às 12h-13h como se fosse rodar. Agora o dia mostra só o que falta fazer (programado, material c/ chapa, em produção). O registro do dia passado continua mostrando tudo que rodou.
📦 Cronograma: caixas prontas + paletes no card do acabamento. No card do cronograma, o bloco de Acabamento (Coladeira/Grampeadeira) agora mostra ✅ X cx prontas · 📦 Y paletes p/ carregar 🚚 — as caixas prontas aparecem sempre; o nº de paletes aparece quando o operador etiqueta os paletes. Ajuda a expedição a planejar a carga do caminhão sem sair do cronograma.
🗓️ Cronograma: pedido reprogramado SEM chapa some do cronograma. O cronograma do dia é congelado (uma âncora, pra não ficar dançando). Um pedido que foi reprogramado e ficou sem chapa (ex.: KININO CX 08) continuava aparecendo no cronograma mesmo sem poder rodar. Agora ele sai do cronograma assim que fica sem chapa e volta sozinho quando o PCP lança a chapa do que falta. O que já rodou de verdade hoje nunca some (não apaga produção real).
🔄 Reprogramar parcial refeito (POWERDENT). Agora o operador não reprograma mais — só finaliza o que fez. Quem reprograma é o PCP, no painel: botão 🔄 Reprogramar · falta mostra Pedido · Feito · Falta e deixa lançar a chapa do que falta. O mesmo pedido continua e a produção já feita nunca é apagada (sempre soma). Com chapa lançada ele volta pro operador produzir o que falta e o fluxo Slotter → Coladeira recomeça certinho. Corrige o caso do 3.800 que se perdia no "Reiniciar".
⏱ Cronograma: hora programada + hora feita. Nos cards do cronograma (espelho do operador e no PDF), quando um pedido já começou ou terminou, além da hora programada agora aparece também a hora que foi feita de verdade pelo operador (em verde, ex.: "feito 14:05→15:10"). Assim dá pra comparar o planejado com o real de cada máquina.
🗓️ Cronograma segue a Ordem de Produção + data no PDF. O cronograma agora respeita a ordem que você define em "Ordem de Produção" (o que já está em produção fica no topo; o resto entra na ordem que você arrastou; quem não está na lista vai pro fim). E ao salvar em PDF (🖨 Dia / 📅 Semana), o arquivo já sai com a data no nome (ex.: "Cronograma 14-07-2026").
🗓️ Cronograma: só entra o que dá pra produzir. O cronograma agora mostra só programado, material disponível (com chapa) e em produção — igual ao operador. Um pedido "esperando programação" (material disponível sem chapa) não aparece mais no cronograma (era o caso do KININO CX 08, que estava no cronograma mas não ia pro operador).
⏱ Cronograma: re-aloca no atraso + almoço do 2º turno. Agora, no dia de hoje, quando um pedido atrasa, os pedidos que ainda não começaram naquela máquina deslizam sozinhos pra acompanhar o atraso (com contorno tracejado); o que já está rodando ou pronto fica no lugar. O acabamento acompanha o atraso do corte (nunca aparece antes dele), e a barra e o card sempre mostram o mesmo horário. Barra re-alocada não passa do fim do turno (a régua não estica). No ⏱ Turnos por máquina, novo campo "Almoço às (2º turno)" (inclusive de madrugada). Motor testado (46 checagens) e revisado adversarial (3 correções).
🖨 Cronograma: impressão IGUAL À TELA. Os botões 🖨 Dia e 📅 Semana agora imprimem a mesma linha do tempo da tela — as 4 raias com as barras coloridas por máquina (com o horário certinho), o almoço e a parte fechada de cada máquina, mais os cards dos pedidos em 2 colunas — tudo em folha A4 branca, uma página por dia. Antes saía uma lista simples. Revisado (a impressão força as cores do fundo pra as barras não sumirem no PDF; dia passado sai como é o registro).
⏱ Cronograma: turno por máquina. Agora cada máquina (Slotter, Corte e Vinco, Coladeira, Grampeadeira) pode ter horário próprio — a Coladeira fecha cedo e o Slotter segue à noite no mesmo dia, deixando o cronograma mais preciso. No cronograma tem o botão ⏱ Turnos: marque uma máquina pra dar a ela um turno próprio (turnos, horário de início, horas, almoço); sem marcar, ela usa o turno geral das Configurações (nada muda pra quem não mexer). Cada raia mostra a janela dela (a parte fechada fica escurecida). Motor testado (22 checagens) e revisado.
🚀 Orçamento Inteligente — Fase 5: orçamento aprovado vira pedido no Cronograma. No orçamento aprovado, o botão Gerar pedidos abre uma telinha pra confirmar a data da 1ª entrega e o acabamento de cada item, e cria os pedidos já programados no Cronograma (com a velocidade certa da máquina, sem o ⚠️). Orçamento com programa de entregas gera um pedido por entrega, com as datas escalonadas. Cada pedido fica amarrado ao orçamento e tem trava pra não gerar duplicado. A ferramenta "à parte" não vira pedido — fica anotada como cobrança única. Fecha o Orçamento Inteligente (fases 1 a 5).
💰 Orçamento Inteligente — Fase 4: programação de entregas. Quando o item tem clichê/faca "diluir", aparece um painel pra montar um programa de entregas (ex.: 3 entregas de 10.000): a ferramenta dilui em TODAS as entregas, o preço fica menor e o cliente paga o mesmo em toda entrega. A nota mostra só a condição ("mínimo de N entregas, mesmo preço"). Tem uma visão interna (só na tela) mostrando quando a ferramenta se paga e o ganho extra depois disso. Nada do que já existia muda.
💰 Orçamento Inteligente — Fase 3: IPI do cliente + condição de pagamento. Ao escolher o cliente no orçamento, o sistema já sabe se ele tem carta de isenção de IPI válida (marca "sem IPI" sozinho e avisa se a carta está pra vencer) ou se a carta venceu (volta a cobrar e avisa). Novo campo 💳 Condição de pagamento puxado do cadastro do cliente (ou do padrão do sistema), que agora aparece na nota e no WhatsApp. Nada do que já existia muda — é só acréscimo.
💰 Orçamento Inteligente — Fase 2: assistente de preço + simulador. No item do orçamento, o painel 💡 Preço inteligente monta o preço/un sozinho (papel com faixa de desconto + setup + frete + clichê/faca), o botão 📊 Simular quantidades compara faixas lado a lado, e dá pra guardar clichê/faca (diluir ou à parte), cores, peso do pedido e observações (tudo na nota + WhatsApp). A nota do cliente NÃO mostra a chapa. Nada do orçamento atual muda — é só acréscimo.
🎨 Ajuste de layout da Config. Orçamento — as faixas de desconto e o custo de setup estavam desalinhados (tabela larga demais); agora tudo em colunas limpas.
💰 Orçamento Inteligente — Fase 1: Configurações do Orçamento. Nova aba ⚙️ Config. Orçamento (onde eram as Compensações) pra definir de uma vez: fiscal (IPI/ICMS/PIS/COFINS), comercial (validade, margem, frete, condição de pagamento), faixas de desconto do kg (por quantidade e por peso) e custo de setup. Validade padrão do orçamento agora é 20 dias. Nada do orçamento atual muda — é tudo acréscimo, salvo junto das ondas sem perder nada.
🌙 Acabamento começa hoje e termina amanhã. Quando o acabamento não cabe inteiro no dia, a máquina (coladeira/grampeadeira) começa hoje — assim que o corte libera os primeiros paletes — e só o resto passa pro dia seguinte. Antes o acabamento inteiro sumia de hoje e rolava pra amanhã, deixando a máquina parada à toa.
🖨 Imprimir / PDF do cronograma voltou. No topo do cronograma tem os botões 🖨 Dia e 📅 Semana — geram uma folha limpa (A4, preto no branco) por máquina, com os 2 turnos, pra imprimir ou salvar em PDF. Antes esses botões ficavam presos no popup do dia antigo, que o cronograma novo não abre mais.
🔍 Botão "Ampliar" no cronograma. Agora tem o botão ⤢ Ampliar no topo do cronograma — clica e ele abre grande no meio da tela, pra visualizar o programa completo sem aperto. Clica em ⤡ Reduzir (ou no fundo escuro / Esc) pra voltar.
🕑 Cronograma agora mostra os 2 TURNOS. A linha do tempo ia só até o fim do 1º turno; agora mostra o 1º e o 2º turno, com o intervalo entre eles e o almoço de cada turno — cabe o dobro de produção no dia.
🔄 Segue o modelo de turno — se você trocar entre horário normal e 12 horas (ou mudar as horas), o cronograma acompanha sozinho.
🌙 Contas da madrugada certas — quando o 2º turno vira a noite, o atraso e o tempo real do operador agora batem certo (sem "parado há 24h").
🔧 Ajustes no Cronograma Inteligente. Clicar num pedido do cronograma agora abre o pedido certo (não abre mais "Novo Pedido" em branco).
⏳ Não congela cedo demais — o plano do dia só é ancorado depois que o cadastro de caixas carrega, pra não travar o dia com a velocidade errada.
✂️ Caixas cortadas por fatia — quando um pedido já cortado é dividido, cada parte mostra a sua quantidade (não repete o total).
🔁 Reprogramado entra na frente — o pedido que sobrou pra terminar agora vai pro início da fila (logo após o que já está na máquina), pra fechar o que ficou pela metade.
🏭 CRONOGRAMA INTELIGENTE — agora por MÁQUINA. O cronograma da Carteira deixou de ser "um bolo de horas por dia" e virou 4 faixas em paralelo: Slotter, Corte e Vinco, Coladeira e Grampeadeira — cada uma com a capacidade dela (7h48).
⚡ Velocidade certa de cada máquina — o tempo de cada etapa sai da velocidade cadastrada na caixa (Slotter / C&V / Coladeira / Grampeadeira). Caixa que corta rápido e cola devagar agora aparece assim no cronograma.
✂️ Cada pedido tem 2 blocos — corte e acabamento, rodando em paralelo (o acabamento entra 30min depois, palete a palete).
◐ PARCIAL — corte pronto e acabamento não: o pedido aparece como parcial, com as caixas cortadas esperando.
🌙 Virada por etapa — se o acabamento não cabe hoje, só a fila daquela máquina rola pra amanhã. O corte já está feito e não repete.
⚓ Horário ancorado — o plano do dia é congelado. Dar baixa não puxa mais os outros pras 05:00: o horário planejado fica de pé e vira a base de comparação com o real.
🛑 Paradas por etapa — o tempo parado do operador acumula em cada máquina e desloca a projeção do fim.
🔁 Zerar a chapa do reprogramado agora vale em TODOS os caminhos — além do dropdown (v2.34.68), agora também quando o operador pede pra reprogramar e você aceita, e quando você usa "Continuar o mesmo pedido". Em todos, a chapa some pra você lançar a chapa nova do que falta.
🔁 Reprogramado zera a chapa — quando você põe um pedido como Reprogramado, a quantidade de chapa some pra você lançar a chapa nova (a do que falta). Só depois que você lançar a chapa nova ele volta pro operador — que já produz o que falta no mesmo pedido (isso já funcionava).
📅 Filtro de data personalizada — no filtro de data da produção, tem a opção "Personalizada": escolhe uma data de e até e a lista mostra só os pedidos com entrega nesse intervalo. Dá pra deixar só o "de" (a partir de) ou só o "até".
🔄 Reiniciar aparece pra pedido "sujo" — o botão "Reiniciar" agora também aparece quando o pedido tem etapa iniciada/concluída, produção lançada ou trava de operador, mesmo com status estranho (ex: "esperando programação" mas com Slotter ✓ e "rodando na grampeadeira" há dias). E o Reiniciar agora solta a trava do operador junto (antes o pedido continuava "rodando" zerado). Era o caso do FK GRUPO travado.
🔄 Troca de turno libera o pedido — no operador, marcar "Troca de turno" agora solta o pedido pro próximo operador continuar (a produção parcial fica creditada), em vez de deixar preso. E na central, o botão 🔓 de destravar volta a aparecer mesmo quando as chaves da trava estavam dessincronizadas (a chave por etapa continuava travada mas o cadeado sumia) — era o caso do KININO 42 preso no João.
🧮 Espelho conta como caixa — na paletização do operador, os espelhos agora entram na soma total (10.805 + 10 espelhos = 10.815 caixas) e no "faltam/sobram". Antes o espelho não contava e dava um "faltam" falso. Agora mostra o total certo, "(N espelhos incl.)" e, se os paletes passarem do que a máquina produziu, avisa "sobram Xcx".
🗑️ Remover palete confirmado (que sobrou) — no operador, o botão "➖ palete" agora deixa remover o último palete mesmo confirmado, com uma pergunta. Antes, se você editava um palete e sobrava um palete de 1 caixa (desnecessário), não tinha como apagar porque estava confirmado.
📄 Caixa com espelho (+1 por palete) — no cadastro da caixa tem um botão "Caixa com espelho"; quando ligado, cada palete leva 1 caixa-amostra a mais (o palete de 1000 vira 1001). No operador tem o botão "📄 espelho: sim/não" na paletização (já vem do cadastro, dá pra mudar no pedido), mostra "+1 espelho" em cada palete e o total de espelhos, e a etiqueta impressa já sai com a conta certa (1.001, "1000 + 1 espelho"). Também consertei o botão 🌀 Caracol que não ficava salvo ao reabrir a caixa.
🌀 Amarração em caracol (cata-vento) na paletização — 4 caixas girando em volta do centro, com a camada par girada 90° (trava de verdade, as emendas nunca se repetem). O sistema escolhe sozinho quando vale a pena: caixa "quadradona" (comprimento até ~2× a largura) e o caracol empata ou ganha em caixas na base. Também dá pra forçar no botão "🌀 Caracol" na orientação da caixa. Caixa comprida e fina segue na amarração normal.
📦 Paletização desenha sozinha — no cadastro da caixa, se você não informar o palete, o sistema assume o padrão PBR 1000×1200 e já desenha (não precisa mais preencher o campo do palete pra ver). E quando não dá pra desenhar, no lugar do vago "Preencha as medidas" agora aparece o motivo exato: ex. "a caixa dobrada 1075×1331mm não coube no palete 1000×1200 — informe um palete maior ou gire a caixa".
🪪 Busca da Vida da caixa na Curva ABC — agora é só digitar o código da caixa (ex: 33) ou o cliente lá na Curva ABC e abre a vida da caixa: todos os pedidos que aquela caixa já produziu, com o processo de cada um. E o RG passou a abrir qualquer pedido (busca direto no banco, mesmo pedido antigo/entregue que não está carregado). Corrigido também: Corte e Vinco agora aparece na etapa "Slotter/Corte" do RG (antes sumia).
🚚 Vida da caixa também na Expedição — no Histórico de Cargas, o 👁 agora abre os pedidos daquela carga e cada um tem o botão "🪪 Vida da caixa" (a 3ª porta de entrada do RG). De quebra, o 👁 que antes não fazia nada passou a funcionar.
🪪 NOVO: Vida da caixa (RG) — o histórico COMPLETO de um pedido, do lançamento à entrega, num cartão só: cabeçalho (Sectra, cliente, medida, cores), alterações, onduladeira (chapas + kg estimado), Slotter e Coladeira (qtd, perdas), ocorrências agrupadas por etapa com FOTO e descrição, paletes, expedição (quem carregou) e entrega. Abre pelo botão "🪪 Vida da caixa" dentro do pedido e no cadastro de Caixas. Os buracos (motorista, kg real) aparecem marcados como "aguardando integração". Só leitura.
📉 Perdas somam pra achar a caixa boa — no operador, as ocorrências de chapa (bolada, úmida...) agora entram na conta junto com as perdas de ajuste e produção. Ao finalizar, o card mostra ao vivo: total − ocorrências − ajuste − produção = caixas boas que vão pra Coladeira/Grampeadeira (ex: 5.000 − 30 = 4.970). Cada máquina desconta só as ocorrências dela. Só acréscimo — a qtd que vai pra próxima etapa já sai certa.
📦 Paletização + relógio de produção — nas imagens do palete, o desenho agora fica centralizado e cada pacote ganhou borda destacada (dá pra ver caixa por caixa). No operador, ao iniciar a produção o card vira um relógio gigante (modo foco) dominando a tela. E se o operador pular a paletização sem querer, agora aparece o botão "📦 Configurar paletização" pra voltar (antes travava sem volta) — o Pular também passou a pedir confirmação.
📦 NOVO: Paletização automática — no cadastro da caixa (seção 8), o sistema calcula o lastro sozinho (amarração > colunar) puxando a chapa da seção 5, e desenha 3 imagens do palete: vista de cima, 1ª camada e palete completo (pacotes kraft, fitas de arquear, camadas alternadas 180°). Controles: orientação (auto/normal/invertida), amarração entre camadas, palete fora do padrão. Mostra caixas por palete + paletes do pedido + regra do caminhão. O operador de Coladeira/Grampeadeira vê as 3 imagens + tudo no app, com a quantidade vinda da produção real da Slotter. A imagem manual antiga continua como opção. Nada se perde em caixa antiga. (frontend puro — sem Luan)
🔓 Conserto: destravar pedido não destravava no operador. Quando dois operadores entravam no mesmo pedido (ex: coladeira) e você liberava a trava na central, não soltava em ninguém. Motivo: a trava do operador é por etapa (chave pedido__coladeira) mas o destravar gravava só na chave antiga. Agora libera todas as etapas travadas daquele pedido de uma vez — solta no operador de verdade.
🏷️ Etiqueta de clichê/faca: número no formato 124-B (número-letra), CL/FC em cima, bem maior (~20mm), em Arial Bold (mais nítido na térmica). O número vem do campo do cadastro quando preenchido.
🏷️ Ajustes na etiqueta de clichê/faca (pedido do chão): número do clichê bem maior e centralizado, tirado o "MTX" e o "1/2" grande do meio (o "· 1/2" fica no topo) — tudo pra sobrar espaço pro número. E o mais importante: o número agora vem do campo "Nº do Clichê" do cadastro da caixa (se você preencheu 124, sai CL-B124); só quando o campo está vazio é que o gerador cria automático. Etiqueta continua 75mm × 100mm.
🏷️ NOVO: Gerador de Etiquetas (Clichê & Faca) — nova tela na aba Produção. Gera etiqueta térmica 75×100mm (preto-e-branco) pra clichê e faca, puxando os dados direto do cadastro da caixa (cliente, referência, medida, cores). Numeração automática: contador geral (CL-{máquina}{nº}, FC-{máquina}{nº}). Cadastro de máquinas editável (A/B/C e as que quiser — cada uma diz se gera faca); o campo Máquina entrou no cadastro de caixa. Caixa nova com máquina já ganha número sozinha; caixa antiga você numera uma vez pelo botão. Uma etiqueta por cor (contador 1/3, 2/3…), + Etiqueta avulsa e busca por número (acha "CL-A241", "cla241" ou "241"). Tudo frontend — funciona já no push. O contador 100% à prova de dois usuários ao mesmo tempo é um upgrade opcional (doc do Luan).
📱 Conserto: caixas/clientes sumindo no iPad/celular. No iPad o pedido não achava a caixa ("cadastre primeiro uma caixa") e não mostrava a medida da chapa — porque o navegador (Safari) limpava o cache das caixas (são grandes por causa das imagens) e o sistema, por causa de um carimbo, não recarregava do servidor. Agora lista local vazia SEMPRE recarrega do servidor (vale pra caixas, clientes, papéis, cores, chapas e operadores). No PC já funcionava; agora no iPad/celular também.
🔄 Reabrir pedido PRONTO (produzir de novo): agora dá pra Reiniciar um pedido já finalizado — o botão aparece no "pronto" também. O problema antigo era que o operador continuava com ele marcado como "concluído" e o sistema re-marcava pronto em poucos segundos (PCP e operador puxando pra lados opostos). Agora, quando você reabre, o pedido ganha um carimbo de reabertura: tanto o PCP quanto o operador passam a ignorar qualquer "concluído" mais antigo que a reabertura (não apaga nada — só desconsidera o velho). O pedido volta pra material disponível e o operador o vê pra produzir de novo; só o que ele produzir depois da reabertura conta. (precisa o Luan reiniciar a API pra valer)
📌 O status que você põe na mão GRUDA — não volta mais: aquele problema de "tiro programado, ponho esperando programação e ele volta pra programado sozinho" acabou. Agora vale a regra "a última edição na mão vence" (não mais "o status mais adiantado vence"). Achamos 3 portas por onde ele voltava e fechamos todas: (1) a importação do relatório não recrava mais por cima do status que você decidiu na mão — ela atualiza cliente/código/quantidade/data, mas respeita o status que você pôs; (2) a sincronização entre aparelhos passou a respeitar a edição mais recente em qualquer direção (dá pra baixar de propósito, não só avançar); (3) a tela de Programação passou a carimbar a decisão pra ela não voltar por sync/importação atrasada; e (4) a janela "Editar" (lápis) também passou a carimbar a mudança de status — antes por ali o status ainda voltava. Quem nunca foi mexido na mão continua seguindo o relatório normalmente.
🧱 "Material disponível" agora EXIGE chapa: um pedido só fica material disponível (liberado pro operador) se tiver chapa lançada. Se você zerar a chapa na mão, ele volta um status (vira programado). E o sistema corrige sozinho os pedidos que estavam "material disponível sem chapa" (voltam pra programado) — era o que fazia a central mostrar 0 material disponível enquanto o pedido aparecia como material no cronograma. Agora os dois batem. (precisa o Luan reiniciar a API pra valer nos 2 aparelhos)
🔁 Reprogramado no cronograma + só libera com chapa: o reprogramado voltou pro cronograma (o operador tem que ver o que vem). Mas ele só é liberado pro operador produzir quando tem chapa lançada (aí é como material disponível); sem chapa fica no PCP/cronograma esperando você reprogramar — o operador não recebe o que não dá pra produzir. O "continuar mesmo pedido" (que mantém a chapa) segue indo direto pro operador.
💵 Fila de Baixa (faturamento): tela nova em Expedição → Baixa. Lista os pedidos que saíram e ainda não foram faturados, com número + quantidade prontos pra digitar no Sectra. Clica "Dei baixa" e o pedido sai da carteira ativa e vai pro histórico (com tudo: produção, quem fez, ocorrências) — não mexe no "entregue" do motorista. Se saiu menos que o pedido, pergunta: baixa total (cliente aceitou) ou reprograma o resto (reabre o que falta pra produzir). É só do nosso lado — quando o fornecedor do Sectra liberar escrever por fora, plugamos o envio automático.
🚚 Fim do "expedi e volta" + estoque limpo: (1) o estoque PA para de mostrar pedido já carregado/entregue (não é produção pendente) e o botão "Expedir" do estoque agora marca o pedido como Carregado — assim a caixa não volta mais. (2) botão novo "🔤 Unificar nomes" no estoque: normaliza o nome do cliente dos pedidos pro do cadastro (ex.: "FK GRUPO" → "FK Grupo"), acabando com estoque/relatório/ABC duplicado por diferença de nome.
💰 O painel de Custos ("vendido no mês") passa a contar o faturado (da Fila de Baixa), não só o "entregue" — reflete a venda de verdade (às vezes fatura e o cliente pede pra esperar a entrega).
🛡️ Blindagem da importação — fim do "pedido some": a Importar Relatório era a única porta sem trava (apagava a carteira inteira e regravava a foto, às vezes atrasada, da central). Agora ela não derruba mais quem já está andando: pedido que o operador pegou não some, excluído não volta, e produção, entregues e o rastreio de estágios/programação não são apagados por um import com foto velha. A caixa que saiu do relatório só sai se for planejamento — histórico nunca some. Precisa do restart do servidor (Luan) pra valer.
👤 Fim do cliente fantasma: a importação agora casa o cliente do relatório com o cadastro e grava o nome real (ex.: "DEUSA ALIMENTOS" no lugar de "Deusa") — assim a caixa, o endereço e a análise ABC deixam de tratar o mesmo cliente como dois. No fim da importação aparece a lista de clientes sem cadastro pra você cadastrar. E o pedido lançado na mão não duplica mais com a mesma venda que vem no relatório (ele reconhece que é o mesmo pedido e junta, em vez de criar um 2º cartão).
🏭 Operador não atropela mais a lista (fim da "briga de quem grava por último"): quando o operador libera parcial, finaliza uma etapa ou registra perda, ele não regrava mais a lista inteira em cima do que o PCP publicou — cada coisa vai pro seu lugar sem colidir. Isso fecha o último buraco de pedido sumir/voltar da tela do operador quando o PCP publica no mesmo instante. (Recomendado testar com 2 aparelhos no chão antes de confiar 100%.)
📦 Caixa em estoque na linha do pedido (PCP + Programação): quando o pedido tem caixa pronta no estoque, aparece abaixo da linha de produção um alerta amarelo "📦 X cx dessa caixa em estoque". No PCP tem também o total no rodapé. E o estoque fantasma sumiu: o que já foi expedido (carregado/entregue) não conta mais no alerta — antes mostrava caixa que já tinha ido embora. Não apaga nada do estoque, só para de contar o que já saiu.
🔒 Turno obrigatório + bloqueio por aparelho: em Análises → 🔐 Acessos, dois interruptores que você liga quando quiser — "Exigir turno" (quem não tem turno cadastrado não entra) e "Só aparelho autorizado entra". Embaixo, a lista de aparelhos: dá pra dar um nome, autorizar os tablets da empresa e bloquear o resto (pelo id do aparelho — o navegador não deixa ler o MAC). Tudo desligado por padrão e à prova de glitch (se a rede cair na hora do login, não trava a fábrica).
📢 Recado pro operador + turno na lista: no cadastro do operador tem um campo de recado personalizado — quando ele entra, aparece um aviso grande na tela dele (ex: "priorize o pedido da Deusa · confira a faca"). E a lista de operadores agora mostra o turno de cada um (ou "sem turno") e um selo 📢 quando tem recado. O campo de apelido saiu da tela de login (o operador entra pelo nome).
🔐 Turno + log de acessos do operador: no cadastro do operador dá pra definir o horário que ele pode entrar (hora início/fim + dias da semana; vazio = entra sempre; turno que vira a noite funciona). Fora do horário, o app não deixa entrar e registra a tentativa. E toda entrada fica num log na central (Análises → 🔐 Acessos): quem entrou, quando, em qual aparelho (detecta iPhone/Android/PC + o apelido que você dá pra cada tablet) e as tentativas bloqueadas.
🔗 "Deusa" agora vincula com "DEUSA ALIMENTOS": o pedido entra com o apelido curto e as caixas estão cadastradas com o nome completo — o vínculo caixa↔pedido exigia nome idêntico e não achava nada. Agora, se o exato não achar, aceita 1ª palavra do cliente igual + candidata única (Deusa ↔ DEUSA ALIMENTOS casa; Alpack ↔ Deusa continua impossível; ambíguo não vincula). Vale pra importação (medidas/preço/ficha) e pra programação/laudo. Reimporte o relatório no modo Atualizar pra vincular os pedidos de hoje.
🏷️ Caixa da Alpack não entra mais como Deusa: o apelido do cliente na importação casava por "contém a 1ª palavra" — e "INDUSTRIA" (do nome fiscal da Deusa) casava com qualquer cliente que tivesse INDUSTRIA no nome (a ALPACK caiu nessa em 03/07). Agora só casa 1ª palavra IGUAL e palavra genérica (INDUSTRIA, COMERCIO…) não identifica ninguém. + Alpack cadastrada com apelido próprio. Pra corrigir os 2 pedidos de hoje: reimporte o relatório no modo Atualizar — eles viram Alpack sozinhos.
🛡️ Chapa não some mais + operador pegou = EM PRODUÇÃO: dois consertos definitivos no caso 23393/01.02. (1) A chapa lançada era revertida pelo servidor atrasado depois de 90 segundos — agora a proteção compara carimbos de edição (a tua edição só cede quando o servidor comprovadamente a conheceu), então a chapa não desaparece mais e o status não volta sozinho. (2) Quando qualquer máquina pega o pedido (Slotter, coladeira…), o status vira EM PRODUÇÃO na hora — antes só mudava quando a etapa concluía, e ficava "material disponível" com a máquina rodando.
⚖️ Média de preço por QUILO (R$/kg): a régua justa pra comparar caixa grande com pequena — faturamento ÷ quilos entregues (qtd × peso da caixa do cadastro). Aparece em 3 lugares: coluna R$/kg por cliente no Clientes ABC (+ média geral no rodapé), coluna R$/kg por caixa na lista de caixas do cliente (+ média do cliente no resumo), e na Vida da Caixa (faturado, quilos entregues e média R$/kg — ex: 31644 = ~240 toneladas). Caixa sem peso no cadastro mostra "—" (cadastre o peso pra entrar na conta).
📦 Vida da Caixa reorganizada: agora é cliente → caixa → tabela de pedidos (nº, lançado em, entregue, em aberto, R$/cx) com o gráfico mensal embaixo — e clicou no pedido, abre a produção dele: quem rodou, em qual máquina, dia a dia, e tudo que aconteceu (mesmo quando passou por 2 máquinas — Slotter + grampeadeira — fica tudo junto no pedido). Pedido antigo mostra só o lado comercial, marcado "antes do sistema".
📦 Vida da Caixa no Clientes ABC: dentro do cliente, agora clica na caixa e abre a vida dela — o lado comercial do Sectra (entregas desde o início, por ano, preço e como mudou, parcelas em aberto — alimentado pelo espelhamento automático) e o lado fábrica (produções com dia/quantidade/operador/máquina + eventos da vida dos pedidos). Teste já ativado com a caixa 31644 da Frisokar (117.634 cx entregues desde out/2024).
📜 Vida do pedido: cada pedido agora tem a sua linha do tempo — quando nasceu (importação, na mão ou orçamento), programado pelo PCP, chapa lançada/produzida, começou a produzir (com operador e máquina), ficou pronto, etiquetas impressas, mudanças de data (🔁 reprogramação do relatório), edições (o que mudou, de → para), reinícios, status trocado na mão… tudo com data, hora e quem fez. Aparece no fim do modal de editar o pedido, seção "📜 Vida do pedido" (mais novo em cima). Os eventos começam a ser gravados a partir de agora.
🔁 Importar relatório: mudança de data NÃO duplica mais o pedido: quando o cliente muda a data de entrega no Sectra e o relatório é reimportado, o sistema agora entende que é o mesmo pedido reprogramado — atualiza a data e mantém a produção, o laudo e tudo. Entregas parceladas (mesmo pedido com várias datas de propósito) continuam funcionando como antes. Só pareia quando é inequívoco: na dúvida (2 datas mudadas de uma vez, pedido já produzido/entregue, linha sem data), mantém o comportamento antigo pra nunca perder pedido. + blindagem anti-colisão de id pra parcela nova na data antiga nunca ser engolida.
🏷️ Etiqueta de bobina toda preta e maior: pra impressora térmica de ribbon (monocromática), a etiqueta agora é tudo em preto (nada de cor virando cinza), com o nome do cliente bem maior, o lote / NF / data maiores e em negrito no rodapé, e o espaço melhor aproveitado (QR maior). Vale pra imprimir e reimprimir.
💰 Preço do almoxarifado só na central: no app do almoxarife o preço saiu da tela (é dado de gestão) — mas continua sendo gravado normalmente. Aqui na aba Estoque do Almoxarifado chegou a coluna Preço/un editável (você digita e salva na hora), a coluna Valor (saldo × preço) por peça e o total R$ em estoque no topo. Preço e códigos de barra continuam no mesmo lugar, então app e central ficam sincronizados.
📦 App Almoxarifado reformado (Estoque · Entrada · Saída): a aba Estoque agora mostra preço, R$ em estoque e a prateleira·seção (🗄️) de cada item. A Entrada virou carrinho — bipe vários produtos (leitor USB ou câmera), ajuste/apague, e finalize tudo de uma vez gerando todas as etiquetas juntas (QR + código + nome + data) já mandando pra impressão. Cadastro de produto novo com preço/prateleira, vincular outra marca ao mesmo produto e gerar código interno. A Saída pede obrigatoriamente quem retirou + setor. Preço e códigos de barra guardados por peça (frontend, sem depender do backend).
🏷️ Reimprimir VÁRIAS etiquetas de uma vez: na tela de reimprimir do app Qualidade, agora dá pra marcar quantas bobinas quiser (checkbox), com "Marcar todas" e busca por código/dono — o botão mostra quantas vão sair (ex: "Imprimir (5)") e imprime todas juntas na Elgin 100×75.
🏷️ Etiqueta de bobina 100×75mm + reimprimir: a etiqueta agora sai no tamanho 100×75mm deitada (impressora térmica Elgin) — QR na esquerda, código e dados na direita. E no app Qualidade tem um botão "Reimprimir etiqueta de bobina": procura pelo código ou dono e imprime de novo, quando quiser.
🛒 App de Compras voltou a abrir: a lista de compradores tinha ficado com o dado "embrulhado em dobro" e travava o login em "Carregando…". Corrigi o dado (na hora, sem perder ninguém) e blindei os apps de Compras, Almoxarifado e o cadastro central pra nunca mais travar por isso.
🎨 Cor com quadradinho + qtd do pedido no laudo: no app Qualidade, a cor da caixa agora mostra o quadrado colorido ao lado do nome (ex: 🟩 VERDE ESCURO DH 06 · ⬛ PRETO). E a Qtd pedido, que aparecia "0 cx" no detalhe, voltou a puxar a quantidade certa.
🧻 Recebimento de bobinas: largura, rolos e tela pro computador: ao importar a NF (XML), a largura (ex: 1400 mm) e a gramatura vêm preenchidas por rolo, e a quantidade de rolos de cada item vem certa do próprio lote da nota (ex: 14 / 11 / 9 — antes estimava pelo peso e dava 17). No computador, cada rolo virou uma linha só com as colunas alinhadas, bem melhor pra digitar; no celular continua empilhado.
🧻 Gramatura da bobina pré-carregada no recebimento (XML): no app Qualidade, ao importar a NF de bobinas, a gramatura passou a aparecer num campo próprio por rolo, já preenchida da nota.
🏷️ Dados da caixa no app Qualidade: o PCP agora manda pro laudo a cor, as medidas internas (L×A×C), onda, coluna, gramatura e a quantidade de paletes de cada pedido. Antes o app Qualidade não enxergava esses campos — agora aparecem na tela de detalhe e no PDF do laudo.
👤 Dono padrão no recebimento de bobinas (XML): no app Qualidade, ao importar a NF de bobinas, tem um campo "Dono padrão" no topo — escolhe uma vez e preenche o dono de todas as bobinas, e fica lembrado pra próxima. Só troca uma por uma se precisar.
🎞️ Bobina: código segue o dono — ao transferir uma bobina pra outro dono, a etiqueta/código agora é regerado com o prefixo do novo dono (ex: JP-BOB-0025 → DCXPACKAGING-BOB-0004) e o app avisa pra reimprimir. (A parte do servidor precisa do deploy do Luan pra valer.)
🔬 No painel de apps (QR), o app "Laudo" agora se chama "Qualidade".
🩹 Fix: 📔 Diário não aparecia no menu — faltava liberar a tela nas permissões dos perfis (estava escondida pra todos, até admin). Agora aparece em Análises. (A Rastreabilidade tinha o mesmo problema e também voltou.)
🏭 Diário por máquina: no Diário, além de "por operador", dá pra ver "por máquina" — escolhe a máquina e o dia e vê quem operou e tudo que rodou nela (pedidos, perdas, paradas, ocorrências), com as mesmas horas e média.
⏱️ Diário do Operador — horas e média: o Diário agora mostra também as horas trabalhadas, horas em produção, horas de ajuste, e a média de caixas por hora (cx/h) do operador no dia.
📔 Diário do Operador: na aba Análises → Diário, escolhe o operador e o dia e vê a linha do tempo completa — do bater ponto ao fim do turno, com cada pedido (cliente, qtd, perdas), ajustes, ocorrências, paradas e os vãos entre pedidos. Tudo do dia num lugar só.
⚙️ Mapa de Perdas por setor: na aba Análises → Perdas, novo painel que mostra as perdas agrupadas por setor responsável (produção = máquina do operador; ocorrência = setor da chapa). As ocorrências agora entram no total de perdas. Vê de uma vez quem mais perde: onduladeira, slotter, coladeira, grampeadeira, corte e vinco.
🛡️ Trava anti-apagão: nenhuma tela consegue mais salvar uma lista vazia por cima de uma lista cheia no servidor (foi o que zerou a manutenção — já recuperada do backup). ⚙️ Setor responsável pela perda na ocorrência (Onduladeira/Slotter/Coladeira/Grampeadeira/Corte e Vinco) + ranking de perdas por setor na central (igual ao por fornecedor).
🔧 Correções da auditoria (trilha B): guardas anti-tela-branca (÷ por zero no cronograma, dados faltando em etiqueta/viagem/caixa, popup do laudo, palete sem id) · proteção XSS/aspas em botões e banners · WhatsApp do DDD 55 (RS) agora leva o país certo · login do expedidor (número×texto) · laudo fecha como “Laudado” mesmo com produção 0 · filtro das comissões. (Itens de backend/segurança foram pro time do servidor.)
🛠️ Correções da auditoria de código (trilha A): importação não cruza mais caixa de outro cliente · app Qualidade volta a apitar pedido novo na fila · scanner do almoxarifado bipa várias peças sem fechar a câmera · histórico de cargas não quebra com dado faltando · expedição detecta o motorista voltando · meta de produtividade corrigida · index.html agora encaminha pro sistema · + guardas anti-tela-branca.
🔒 Status SEGURA agora (Reprogramado etc.): mudar o status no PCP não sincronizava (mesmo bug da chapa) — voltava no próximo sync. Agora SINCRONIZA na hora, o import não força mais “em produção” num reprogramado, e o export atrasado não reverte. + chapa protegida do dado atrasado.
🐛🔥 CAUSA RAIZ do pedido sumindo: ao programar a qtd de chapas no PCP, o sistema salvava SÓ LOCAL e não mandava pro servidor — aí no próximo sync voltava “chapas 0” e o pedido sumia de “material disponível”. Agora a chapa SINCRONIZA na hora. Resolve KININO 22, 01.02, 31644 e qualquer pedido que sumia depois de programar.
👥 Crédito do parcial por operador: ao finalizar o turno com pedido pela metade, a produção do operador é gravada no registro DELE (sem concluir a etapa), e o próximo operador continua e leva o crédito do que ELE fizer. Cada um com sua produtividade real. Precisa teste com 2 operadores.
🏁 Resumo do turno completo: o resumo de fim de turno do operador agora inclui os pedidos EM ANDAMENTO (parcial) — caixas e ajustes — além dos concluídos. Não some mais o que ele fez num pedido que não terminou.
🐛 Fix do filtro/contadores: filtro “material disponível” e os cards (contadores) agora usam o status EFETIVO — pedido material disponível SEM chapa não aparece mais nesse filtro (vai pro “esperando programação”, certo).
✅ Material disponível só com chapa: pedido marcado “material disponível” MAS sem número de chapa agora aparece como “esperando programação” e NÃO vai pro operador (resolve o pedido que voltava sem chapa, ex: DEUSA 01.02).
✍️ Registrar Produção — máquina e operador da lista: no modal de registrar produção, os campos Máquina e Operador agora sugerem os cadastrados (datalist) — escolhe da lista ou digita.
📊 Barra do reprogramado certa: pedido reprogramado mostra o progresso do PEDIDO TODO (ex: fez 1065 de 3000 → falta 1935, 36%%), não da chapa do turno. E a publicação pro operador ignora registro cancelado (anulado).
🔁 Reprogramado agora aparece no operador: pedido REPROGRAMADO volta pra produzir no app do operador (em TODAS as máquinas, mesmo já concluído), mostrando o que falta (ex: 1065 feito → falta 1935). Corrige o caso do 31644.
🔄 Operador — Reprogramar e Reabrir: no aviso de produção incompleta agora tem Reprogramar (manda pro PCP), e no pedido concluído tem Reabrir. O pedido (mesmo nú) volta pra “A Programar” como Reprogramado e o operador produz o resto somando. Canal aditivo novo (não mexe no sync existente). Precisa teste real com pedido TESTE_.
🔁 Produção parcial — Continuar MESMO pedido: no modal de decisão do PCP (quando o operador finaliza com menos), além de Aceitar Parcial e Reprogramar Diferença (pedido novo), agora tem Continuar MESMO pedido — o mesmo nú volta como Reprogramado, mantém a meta, e o operador produz o resto somando, até completar.
📊 Almoxarifado — Relatório de saída: nova aba que mostra o que saiu, pra quem, data/hora e quantidade, com filtro por período e busca, mais Imprimir e Exportar CSV. + corrigidos 3 detalhes da bipagem (trocar de peça sem finalizar agora pergunta; código bipado sempre acha a peça; câmera não dispara durante o cadastro).
📠 Almoxarifado — Entrada por bipagem: bipa o código de barra de fábrica; se a peça não existe abre o cadastro com o código já preenchido; cada bip do mesmo código SOMA 1 (ou digita a quantidade no +/−), e no fim gera N etiquetas. Câmera em modo contínuo (bipa várias sem fechar).
🏷️ Peças — código de ENTRADA + código de SAÍDA: cada peça agora tem 2 códigos. ENTRADA = o de fábrica (opcional; sem ele a entrada é manual). SAÍDA = gerado automático e único (S-0001, S-0002…), nunca repete — vai na etiqueta/QR e é o que se escaneia na aba Saída do app do Almoxarifado pra dar baixa da peça. Resolve a etiqueta que saía com “—”. Peças antigas ganham o código sozinhas (backfill). Vale no Sistema e no app do Almoxarifado.
📦 Almoxarifado — cadastrar peça no app: na Entrada, quando a peça não existe, “➕ Cadastrar nova peça” cria no catálogo (mesmo /api/pecas do Sistema) e já seleciona pra dar entrada. Botão também no Estoque. · 🧾 Compras — compra avulsa: botão pra criar compra direto, sem solicitação (cai em Solicitadas com selo 🛒 Avulsa).
📦 Encarregado — Requisição de peça: botão + aba pra pedir peça do estoque do almoxarifado (escolhe do catálogo → o almoxarife entrega/compra). Fecha o ciclo encarregado ↔ almoxarife. (+ corrige o nome “[object Object]” nos cards.)
✅ CORRIGIDO o login do Almoxarifado: faltava a linha que cria o db (firebase.firestore() do shim) — por isso o login dava “Can’t find variable: db” e ficava vazio. Agora os nomes aparecem.
🔬 Diagnóstico no login do Almoxarifado: se a lista vier vazia, mostra na tela o que o servidor respondeu (pra achar a causa do login vazio).
🔑 Login do Almoxarifado: timeout de carregamento subiu p/ 20s (a 1ª conexão da hospedagem demora) + botão “Tentar de novo”. Resolve o login que aparecia vazio mesmo com gente cadastrada.
🔑 Cadastro de Comprador com Acesso: no cadastro você escolhe se a pessoa loga em Compras, Almoxarife ou nos dois (um cadastro p/ 2 apps). E o login do Almoxarifado ficou à prova de falha (não trava mais em “Carregando”).
🛒 Compras — lista item por item: solicitação com vários itens grudados numa linha agora aparece separada (igual a Manutenção), com a contagem certa, na lista, no PDF e na mensagem da OC.
📋 Almoxarifado — Requisições (Fase 3): nova aba onde se cria a requisição de peça e o almoxarife atende (entrega do estoque / manda pro compras), reusando /api/solicitacoes. (+ corrige um bug que travava a troca de abas.)
🔫 Almoxarifado — leitor de código de barras (Fase 2): o scanner agora lê QR e código de barras de fábrica (EAN/Code128…). Código novo? Você vincula a uma peça uma vez e depois ele reconhece sozinho — na saída e na entrada.
🔑 Login do Almoxarifado: agora aceita TODO mundo cadastrado com senha (compradores, manutenção, encarregados, operadores, expedição), juntando as listas e tirando repetidos. Antes só comprador entrava.
🧻 Receber bobinas sem reimportar a NF (Qualidade): ao importar a NF (kg), aparece “Receber as bobinas dessa NF” → vai direto pra conferência do romaneio (rolo a rolo), já com o papel/dono preenchidos. Não precisa mais importar o XML duas vezes.
📦 Novo app: Almoxarifado — estoque de peças por categoria (KPIs, alerta de mínimo), entrada gerando etiqueta com QR (1 por caixa ou N por unidade), e saída lendo o QR. Login por PIN. (Backend já estava no ar.)
🔎 Rastreabilidade da bobina (Bloco 5): nova aba em Análises com a vida inteira de cada bobina (entrou → saiu → consumida → caixa), por bobina ou por pedido. (depende do Luan rodar a migration 020.)
📱 Ícone JP padrão em todos os apps: ao instalar na tela inicial, todo app abre o SEU painel com a logo da JP (Android e iPhone). Corrigido também o ícone do iPhone que estava quebrado.
🧻 Onduladeira — consumo de bobina (Bloco 4): no lançamento, lê o QR/código das bobinas (capa/miolo/contracapa), confronta gramatura/largura e desconta os metros (miolo ×1,35) → sobra vira 🪵 toco, acaba vira ⬛ consumida.
📱 App na tela inicial corrigido: cada app (Operador, Qualidade, Expedição, Motorista, Escala, Vendedor) agora abre o SEU painel ao instalar — antes o ícone caía no sistema.
🔄 Transferir bobina entre depósitos: no app Bobinas, cada bobina disponível ganhou o botão Transferir — muda o dono (terceiro) pra outro depósito ou pra JP. Útil quando o papel de um terceiro vai ser usado por outro.
🧻 Receber bobina — DONO vira lista de terceiros: o campo DONO de cada rolo agora é um dropdown com a JP + os terceiros cadastrados, já pré-selecionado pelo que a NF puxou. Quem lança escolhe pra qual depósito (terceiro) vai cada bobina.
🏷️ Receber bobinas — imprimir TODAS as etiquetas de uma vez: no “Recebimento conferido” (app Qualidade) apareceu um botão Imprimir etiquetas que sai com a etiqueta+QR de cada bobina criada, 1 por página, num print só.
📐 Programação — cards filtram + resumo por onda: clicar em Atrasados ou Esta semana filtra a lista (clicar de novo limpa). E apareceu um resumo 🌊 Por onda (quantos Onda B, Onda BB…) do que está sendo mostrado.
🔧 Manutenção — peças item por item: quando vários componentes vinham amontoados num texto só (separados por vírgula ou “+”), agora a solicitação mostra item por item (no card e no PDF), com a quantidade certa de cada. Só exibição — não muda o dado nem a edição.
🛡️ Senha por email mais segura (revisão): trava de tentativas (anti força-bruta) no login/esqueci/trocar senha, e o link de reset só é guardado se o email realmente sair.
🔑 Trocar senha por email: na tela de login tem "Esqueci a senha" — o sistema manda um link no seu email pra definir uma nova (vale 30 min, uso único). E logado, o 🔑 no topo troca a senha (atual → nova). Depende do Luan subir a migration 019 + configurar o email (Resend).
🔢 Quilo casa por número: no ranking, quando o código do pedido difere do cadastro mas o número bate (ex: KININO 06 ↔ CX 06), o sistema casa sozinho e mostra o quilo. (Só quando é único, pra não errar.)
⏱ Tempo real por caixa: ao clicar no cliente (ranking), cada caixa agora mostra a cx/h real (produtividade do processo final, do início/fim dos registros) — e marca a ⏱ mais rápida do cliente. Pra saber qual caixa rende mais por hora.
🔗 Ranking não divide mais o cliente: o mesmo cliente escrito de jeitos diferentes (ex: "FK GRUPO" e "FK Grupo") virava 2 linhas e atrapalhava o ranking. Agora junta tudo (ignora maiúscula/acento/LTDA) e mostra o nome mais usado. (O FK subiu pro 3º lugar.)
📅 Carteira — filtro de datas pra trás: o filtro de período ganhou as janelas passadas — Último mês, Últimos 2 meses e Este ano (além das de "a entregar"). Junte com o status Entregue pra ver o que saiu em cada período. O "Em atraso" continua mostrando os vencidos.
🛡️ Barreira anti-"volta" (no servidor): o sync de pedidos virou "só avança, nunca volta" — pedido excluído não ressuscita, status não rebaixa (entregue não vira "a fazer") e registro de operador não some. Acaba de raiz o problema de coisas voltando depois de sincronizar.
⭐ Ranking de clientes (curva ABC) com período: filtro de mês atual / 30 dias / este ano / período personalizado (pela data de entrega) — pra ver quem é top em cada janela.
📦 Clique no cliente abre as caixas dele no período, ranqueadas da que mais sai pra que menos sai, com quantidade, preço médio/cx e quilo.
📦 Caixa expedida não volta mais pro estoque: tinha um B.O. — quando a produção sincronizava, caixas que já foram embarcadas (numa carga finalizada) reapareciam no estoque como se estivessem prontas de novo. Agora o estoque cruza com as cargas e não re-adiciona (nem deixa parado) o que já saiu. As caixas-fantasma somem sozinhas. (Foi o caso do 35597 / pedido 23357 da FK.)
🔢 Correção pontual: o registro da grampeadeira do 35597 estava com 4,03 em vez de 4.030 (o ponto de milhar virou vírgula na importação do sistema antigo) — corrigido.
🏗️ Saída de bobina (empilhadeira): no app Bobinas tem uma aba nova Saída / Empilhadeira — lê o QR da bobina (ou digita o código), confere, e dá baixa (vira 🚚 saiu) escolhendo o destino (Onduladeira/Outra) e a posição. Os metros NÃO são descontados aqui (isso é na onduladeira). A entrada/lista/etiqueta continuam iguais. Depende do Luan subir a migration 017 + a rota /saida.
🗑️ Admin original pode excluir chamados e ocorrências: nas telas 🔧 Manutenção e ⚠️ Ocorrências (módulo Análises), apareceu um ✕ Excluir (com confirmação) — só pro admin original (o dono, pelo e-mail). Útil pra limpar testes. Apagar o chamado some também do app de Manutenção. Nenhum outro usuário vê o ✕.
🛒 Compras mostra a lista completa das peças: quando a solicitação tem várias peças, o app de Compras agora lista todas (nome + quantidade + foto clicável) no card, na mensagem de WhatsApp/e-mail (numerada) e no PDF da Ordem de Compra. Solicitações antigas (uma peça) continuam iguais.
📅 Data de entrega no app Operador: nos cards de pedido e de concluído agora aparece o número do pedido + a data de entrega. Resolve a confusão de ter dois pedidos com o mesmo número e mesma caixa mas datas diferentes (ex: um pro dia 19/06 e outro pro 17/07).
✏️ Corrigir produção de um pedido concluído: dá pra arrumar a quantidade lançada errada (ex: 10.000 que era 1.000). No PCP, abre o pedido → "Corrigir produção" (vale até pra pedido já pronto). No app Operador, os concluídos que vinham "só leitura" agora abrem pra corrigir a quantidade. Corrige aqui e no sistema, sem reiniciar nada.
📦 Estoque de caixas — adicionar manual: no estoque dá pra lançar caixas na mão — escolhe o cliente, puxa a caixa cadastrada dele, e informa a quantidade + caixas por palete (sugere sozinho pela paletização da caixa). Entra junto com as que vêm automáticas da produção, sem mexer em nada do que já existe.
🔧 Manutenção — solicitação de peças com VÁRIAS peças: a solicitação de compra agora aceita uma lista de peças (nome + quantidade + 📸 foto por item), com descrição embaixo da lista. Dá pra ✏️ editar enquanto está "solicitada" e 📄 ver/imprimir um PDF da solicitação (cabeçalho JP, tabela das peças, fotos, assinaturas). Solicitações antigas continuam aparecendo normal.
🧻 NOVO: Receber bobinas no app Qualidade — importe o XML da NF de papel e confira rolo a rolo pelo romaneio (nº, largura e peso reais), escolhendo o dono de cada bobina (JP ou terceiro — o sistema sugere pela operação da nota). Cada rolo vira uma bobina com código próprio (JP-BOB-0001…) e etiqueta com QR pra imprimir. No fim, confere se o peso bate com a nota.
🐛 CORREÇÃO IMPORTANTE na importação: pedidos com entregas parceladas (mesmo produto em datas diferentes — ex.: 8 entregas do 44959) estavam sumindo! O dedup ignorava a data e tratava como duplicata (106 itens viravam 68). Agora a data entra na chave e nada se perde. Também corrigido: datas que o Excel guardava como "data de verdade" viravam número.
🔒 Custos — acesso por pessoa: alimentar (lançamentos, clichê/faca) é admin + PCP; ver os resultados (custo total, lucro, salários) é só você + quem você liberar (no Painel de Custos, "Quem pode ver os custos").
📒 NOVO: Módulo CUSTOS (Centro de Custo) — só admin/financeiro. Painel de custo total + % por categoria; Ponto de Equilíbrio (quantas toneladas pra empatar + lucro + simulador); Lançamentos de insumos; Fixos & Funcionários (salário com encargos); Clichê & Faca por cliente; Evolução mês a mês.
🧾 Condições de pagamento: cadastro separado (7/14/21…) + campo no cliente.
⏱️ Urgente com prazo: chamado urgente tem 30 min pra iniciar. Passou disso, a manutenção recebe um aviso a cada 1 minuto até alguém iniciar (com contagem no card).
✅ Finalização em 2 fatores: a manutenção resolve, mas o chamado só fecha quando quem abriu dá o OK na solução — ou o PCP confirma aqui no central. Se não resolveu, reabre.
🏪 Compras: cadastro de Fornecedores + envio do pedido — cadastre fornecedores (WhatsApp + e-mail) e, ao gerar a OC, mande o pedido de compra direto pelo 📱 WhatsApp ou 📧 e-mail (mensagem já pronta). O card mostra o status "enviado via WhatsApp/e-mail".
📦 Manutenção acompanha a peça: dentro do chamado, a tag da peça agora é viva — "🛒 comprada · chega DD/MM" e, quando chega, "📦 PEÇA CHEGOU" com aviso sonoro.
🔧 NOVO: App de Manutenção (painel_manutencao.html) — fila de chamados por setor (⚡ Elétrica / 🔩 Mecânica), urgente fura a fila, preventiva sem prioridade, chamado de "ambos" visível pros 2, fotos, atender/resolver com solução registrada. O botão Manutenção do operador agora roteia por setor e tudo fica na ata aqui no central.
🛒 NOVO: App de Compras (painel_compras.html) — recebe as solicitações de peça da manutenção (com foto), gera Ordem de Compra numerada (OC-0001…), pipeline solicitada → comprada → recebida. Ata aqui no central.
🔬 Laudo turbinado: TODAS as caixas programadas entram sozinhas na fila; produção finalizada libera o valor total; laudo só finaliza com 3 fotos dos testes DIRETO da câmera ao vivo (galeria bloqueada, carimbo de data/hora) — e as fotos saem no PDF. Aviso sonoro de pedido novo.
🚚 Expedição enxerga o motorista: faixa "Entregas ao vivo" com o cheguei/entreguei (antes esse retorno se perdia).
👥 Cadastros novos: Manutentores (com setor) e Compradores.
🎯 Fim da divergência entre aparelhos: o banco agora é a ÚNICA fonte da verdade. Na carga, o servidor sempre vence — aparelho com cache velho não re-envia mais pedidos antigos (era isso que fazia um mostrar 82 e outro 164).
📥 Importação substitui, nunca soma: importar um relatório deixa o banco exatamente igual à lista importada (apaga os antigos). Acabou o acúmulo de importações (96+68=164).
🛟 Backup automático novo: 1x por dia, depois das 17:00 (mínimo 14h entre backups). O botão manual continua sempre disponível.
💣 v2.28.9 — removido o "relatório fantasma" 22/05: existia um relatório antigo (96 itens) embutido no código que se AUTO-CARREGAVA quando um aparelho abria com a lista vazia — e era salvo no servidor. Era a origem dos pedidos que "voltavam do nada" depois de cada limpeza. Removido o botão, os dados e a semente do boot. Vazio agora é vazio.
🎨 Visual novo — menu lateral: os módulos (Produção, Comercial, Cadastros, Expedição, Análises) viraram uma barra lateral à esquerda. Ao abrir Cadastros, os 13 itens aparecem agrupados (Clientes · Equipe · Produtos · Sistema) — acabou o monte de abas que cortava.
📱 Celular: a barra vira um menu ☰ que abre por cima — nada espremido, nada cortado, em qualquer tela.
⚡ Auto-atualização ativa (v2.28.6): o app se conserta sozinho ao detectar versão nova — operadores não mexem mais em cache.
📅 Cronograma de produção no painel do operador: o operador agora tem o botão Cronograma (no lugar do "Enviar registros", que já enviava sozinho). Mostra os horários de início e fim de cada caixa por turno, com almoço — calculado pelo PCP e espelhado pra ele. Só visualização: a liberação por chapa continua igual.
💰 IPI agora é padrão pra TODOS (15%): todo pedido já vem com IPI. Só fica isento quem tem carta de isenção válida. Resolve clientes (ex.: FK Grupo) que não pegavam o IPI.
📊 Relatório com 2 colunas: Total real (sem IPI) e Total c/ IPI, lado a lado. O CSV também.
🆔 Fim dos duplicados: cada pedido tem ID fixo por conteúdo. Reimportar ou importar em 2 aparelhos junta em vez de duplicar.
⚡ Cache do JS resolvido: arquivos versionados + service worker sem cache.
💰 IPI por cliente: campo "IPI (%)" no cadastro (novo já vem 15%). Soma no valor total do relatório — o preço unitário do produto não muda.
📄 Carta de isenção de IPI: anexa foto/PDF; cliente fica isento. Tem vencimento (vale 1 ano) com aviso 30 dias antes — carta vencida volta a cobrar IPI.
🗑️ "Apagar tudo" consertado: agora apaga de verdade no servidor e propaga pra todos os aparelhos (antes voltava ao atualizar). E só o admin original pode apagar dados — outros admins não.
🔗 Importação: corrigido o código que "comia" specs do produto (ex.: "33 VIGOR FATIADOS 12X150G" agora casa com a caixa cadastrada).
🔄 Sincronização do PCP consertada: mudanças do dia a dia (trocar status, editar pedido) voltaram a ir pro servidor e a chegar na hora no app do operador — antes ficavam presas só no navegador (resto da migração do Firebase).
📷 Fotos de ocorrências/manutenções voltaram a abrir: a foto subia mas o link apontava pro lugar errado no servidor; agora o link sai certo (local e produção).
🧹 App do operador: removida a etapa "Chapa chegou na máquina" (começa direto no ajuste) e botão Manutenção em largura total.
🧽 "Começar do zero" agora zera de verdade: o "Apagar TODOS os movimentos" e o "Limpar servidor" passaram a apagar também a carteira do PCP e os concluídos do operador (antes sobrava um pedido teimoso). E o app do operador limpa sozinho os concluídos/progresso que ficavam no celular assim que o sistema é zerado — não precisa mexer em cada aparelho.
🏭 Coluna "Processo" do PCP redesenhada (trilho de etapas): no lugar das barrinhas confusas, agora aparece o caminho do pedido pelas máquinas (ex.: ✂️ Slotter ▸ 📦 Coladeira) com cor por estado — verde = concluído, azul piscando = rodando agora, vermelho = parado, cinza = esperando — mais 1 barra geral e a quantidade. E ao passar o mouse em cima do pedido, abre um balão moderno mostrando qual máquina está rodando, o operador, há quanto tempo e o estado de cada etapa.
📲 Fim do "app preso em versão antiga": agora todos os apps usam um service worker no modo network-first — quando tem internet, ele sempre baixa o código mais novo sozinho (nunca serve versão velha do cache), e quando está offline usa a última versão salva. Resolve de vez o cache teimoso do PWA no iPhone. Obs.: cada aparelho precisa atualizar uma última vez (banner "nova versão" ou botão "🧹 Atualizar app") pra ligar o service worker; depois disso é automático.
🔧 Corrige a Coladeira presa em "esperando finalizar" mesmo com o Slotter já concluído. A causa: ao republicar os pedidos pro chão de fábrica, o PCP reescrevia a lista e apagava o que o operador tinha gravado (a liberação parcial e o "concluído" do corte). Agora o PCP preserva esses campos ao republicar, e a Coladeira passou a confirmar o "concluído" também pelo quadro compartilhado (à prova de sobrescrita).
🛟 Backup automático agora a cada 5 horas (era a cada 30 min) — pra não encher o PC de cópias. O cofre na nuvem continua guardando as últimas 48 (agora ~10 dias de histórico).
✅ Conclusão de pedido em tempo real entre operadores: quando um operador conclui um pedido, ele some da lista de todo mundo na mesma hora (antes só sumia no celular de quem concluiu, e dava pra outro produzir de novo). Usa um quadro compartilhado na nuvem gravado por merge (mesmo padrão da trava de pedido) — sem corrida de dados e funciona offline. A aba "Concluídos" mostra também os concluídos por colegas da mesma máquina (marcados "só leitura").
⏱️ Cronômetro durante a produção + passagem de turno (handoff) no app do operador: o tempo de produção aparece rodando também na tela de finalizar, com "faltam X caixas". Ao largar/encerrar o turno, o pedido fica disponível pra outro continuar — guardando quanto já foi feito, quem largou e a hora — e o cronômetro congela e retoma num segmento novo sem perder o tempo acumulado.
🛟 Backup automático COMPLETO a cada 30 min: agora salva uma cópia de tudo (caixas, clientes, vendedores, pedidos, chapas, papéis, cores…) num cofre na nuvem (últimas 48) e baixa uma no PC. Antes o backup só guardava pedidos+config (por isso os cadastros se perderam). Dá pra ver e restaurar os backups da nuvem no botão "☁️ Cofre" do backup. Só faz backup se os dados estiverem saudáveis (não grava cópia vazia).
🛟 Proteção contra perda de dados (caixas, clientes, vendedores): (1) nunca salva lista vazia nem encolhida sem confirmar (disjuntor); (2) só lê/grava depois do login; (3) erro de leitura não é mais engolido — bloqueia o salvar até recarregar; (4) desligado o salvamento automático que recriava clientes em branco. Corrige o incidente de esvaziamento dos cadastros.
🧭 Menu não abre mais "misturado": ao abrir o sistema, o menu já mostra só as abas do módulo ativo (Produção) — antes apareciam abas de todos os módulos juntas até você clicar. Corrigido (o filtro do módulo passou a ser a última etapa, depois das permissões).
🔒 Blindagem pra fechar as regras (bastidor): garanti que toda leitura do app do operador (inclusive a lista de login) só acontece depois do login anônimo. É o preparo final pra fechar o banco sem travar nada. Não muda nada visível.
🔄 Aviso de versão nova (fim do cache velho no celular): os apps agora avisam quando há atualização — aparece a barra "🔄 Nova versão disponível — toque para atualizar", e num toque o app pega a versão nova (sem precisar apagar/reinstalar). Funciona até no cache teimoso do iPhone. Se estiver sem internet, não atrapalha nada — só avisa quando dá. Vale em operador, expedição, laudo, motorista, vendedor e no sistema.
🔐 Login anônimo do Firebase nos apps de chão (preparação de segurança): operador, expedição, laudo, motorista e vendedor agora fazem um login invisível no Firebase ao abrir, antes de ler/gravar. É a base pra fechar as regras do banco depois sem travar os apps. Não muda nada pro usuário (o login de nome/PIN continua igual) e tem proteção anti-travamento se a internet falhar. As regras do Firestore continuam abertas — serão fechadas num próximo passo.
📐 Medida da chapa: largura primeiro na visualização: nas listas/previews a chapa mostra largura × comprimento (coluna "Medida chapa" do PCP, lista de caixas, preview e itens do orçamento). No cadastro da caixa o comprimento continua primeiro (padrão universal C × L × A).
📏 Medida da chapa na lista do PCP: nova coluna entre "Produto/Cód." e "Status" mostrando o tamanho da chapa (comprimento × largura em mm) de cada pedido, puxado do cadastro da caixa. Bate o olho e já vê a medida sem abrir nada.
📲 Enviar pro operador sem baixar arquivo: o botão "P/ Operador" agora só publica no Firebase (tempo real) — parou de baixar aquele .json de backup que não era usado.
🖼️ Logo do cliente na etiqueta do palete: no cadastro do cliente tem um campo pra subir a logo (entre Identificação e Contatos). A logo vai pro Storage e aparece na etiqueta do palete ao imprimir — tanto no PCP quanto no app do operador (viaja junto do pedido).
🏷️ Etiqueta do operador igual à do sistema: a etiqueta impressa pelo operador agora é idêntica à do PCP — com QR Code de expedição e sem aquele campo de "Conferido por / Assinatura" que não era usado.
🔒 Trava de pedido no app do operador: quando um operador abre um pedido, ele fica "🔒 em uso por Fulano" pros outros — dois não pegam o mesmo ao mesmo tempo. Sincroniza na hora (tempo real). Ao finalizar, a trava sai sozinha. No fim de turno, se ficou em andamento, volta a ficar disponível pra outro continuar de onde parou (preserva o parcial). Trava de aparelho que sumiu/offline expira sozinha (12h). Corrigido também o bug que fazia um celular apagar o progresso do outro.
🔄 App do operador 100% em tempo real: trava, caixas cadastradas e ordem de produção do PCP agora atualizam sozinhos no app do operador (corrigido um trecho que ligava os listeners antes do Firebase iniciar — por isso só vinha do cache / botão "recarregar").
📤 Registro de produção sobe sozinho: ao finalizar um pedido, o registro vai pro sistema na hora (sem precisar clicar em "Enviar"). Se estiver offline, fica guardado e sobe sozinho quando a internet volta.
📅 Fluxo de Produção — alerta de atraso + produção real: o cronograma agora marca em ⚠ vermelho (atrasado) os pedidos que terminam depois da data de entrega e em 🟡 âmbar (apertado) os que terminam no mesmo dia — vale no Gantt e no Calendário, com a data de entrega na lista. E o cálculo agora desconta o que os operadores já produziram (caixas registradas no chão), então a fila e as datas refletem a situação real, não o pedido inteiro do zero.
🔒 Apps de chão em fluxo fechado: tirei o botão 🏠 "Trocar de painel" dos apps de operador, expedição e laudo. Agora o único jeito de sair é o "Sair", que volta pro login do próprio app (nome + PIN/senha). Eles nunca mais caem no menu geral com os outros painéis.
🔒 Menu (index) protegido sem PIN: a grade de painéis só abre em aparelhos que já entraram no PCP/sistema (login). Operador vê "menu restrito" e usa o link direto do app dele. Quem está no PCP transita livre. (Some o acesso ao sair do sistema.)
🛠️ Painel ADM (Cadastros → ADM, só admin): atalho pra abrir/testar cada app numa nova aba + QR + link, num lugar só.
🔮 Simulador: caixas filtradas por cliente — ao escolher o cliente, só aparecem as caixas dele (não mais todas embaralhadas).
🧭 Link do mapa na escala encurtado (tinyurl) — a mensagem do WhatsApp não fica mais com aquele link gigante (cai no link completo se o encurtador falhar).
🔮 Simulador de prazo turbinado (Fluxo): monta um pedido completo (cliente + vários itens caixa+qtd), calcula a entrega final, a data limite da chapa (Onduladeira) e o plano de entregas parciais, encaixando na fila real. Botão Gerar proposta (PDF). Recalcula sozinho ao mudar turno/capacidade.
🩹 App do operador — corrigido "NaN dias": data de entrega inválida não quebra mais o cálculo (mostra "—").
🪶 App do operador — menos memória (celular simples): não guarda mais o histórico de alterações das caixas nem imagens base64 no cache, e removido carregamento duplicado — pra evitar o erro de "insuficiência de memória".
🏭 Fluxo de produção / Cronograma (Comercial → Fluxo/Cronograma): cadastro de capacidade das máquinas (Onduladeira/Slotter/Coladeira/Grampeadeira), cálculo de prazo encadeado (a fila passa em sequência respeitando os turnos), Gantt e calendário mensal com % de ocupação por dia (verde/amarelo/vermelho), e simulador de prazo ("se entrar agora, fica pronto em..."). Parte 1 (previsão). Só PCP/Comercial.
✂️ Slotter desconta as perdas automaticamente: ao finalizar, o sistema calcula a quantidade BOA (total − perda de ajuste − perda de produção) e passa só ela pra próxima etapa. A meta da coladeira/grampeadeira usa a quantidade boa (ex: 110 − 1 − 10 = 99), não o total. Nunca passa número negativo. O operador do Slotter vê a conta na tela.
🔗 Importação de relatório vincula a caixa ao pedido: pra cada item, casa o código (ex: "01-01") com o cadastro de caixas (match exato). Casou → vincula e atualiza o preço da caixa (o relatório sempre vence, com histórico). Não casou → entra na lista "não encontradas" no resumo, pra resolver na mão.
🗓️ Última data de entrega na caixa: gravada do relatório (aparece no cadastro). Datas diferentes = lançamentos separados.
📊 Resumo da importação: quantas vincularam, lançamentos, preços/prazos atualizados e a lista das que não casaram.
📱 Layout responsivo pro celular: abas (módulos e sub-abas) com rolagem horizontal "arrasta pro lado", botões e ícones maiores pro dedo, e as tabelas de cadastro viram cartões empilhados (sem precisar rolar pro lado). No PC continua igual.
🖨 Ajuste no PDF da semana: o 1º dia agora sai junto do cabeçalho (acabou a página em branco no começo).
👤 Operador na ocorrência: o nome do operador agora aparece no card da ocorrência (estava salvando vazio).
📲 Link + QR por app (no menu): cada app tem um botão pra pegar o link direto e o QR Code pra mandar pra pessoa certa (sem passar pelo menu) e instalar no celular. Vendedor, Motorista e Escala agora também são instaláveis (adicionar à tela).
📥 Importação de ficha aceita .XLS além de PDF (Cadastros → Caixas), lendo o arquivo do sistema direto.
🖨 Exportar PDF do cronograma: botão "Este dia" e "Semana (7 dias)" — com a mesma cara da tela, abre numa janela rápida pra imprimir/salvar em PDF.
⚡ Turno extraordinário (Config): liga/desliga turnos estendidos (ex: 12h, 05→17 e 17→05) e o cronograma recalcula com mais horas/dia → menos atrasos. Almoço por horário fixo de cada turno.
🔗 Cadeia clara no cronograma: badge "Esperando coladeira/grampeadeira" com a qtd que já saiu da slotter, qtd do pedido ao lado do nome, e chapas em vermelho quando vierem abaixo do pedido.
📄 Importação de ficha por PDF (Cadastros → Caixas): lê os dados de entrada do PDF (cliente, código, medidas, composição, onda, cores, fechamento, paletização) e o sistema recalcula gramatura/riscador/peso. Cadastra papéis/cores/chapa que faltam e a caixa — tudo com revisão e comparação calc×PDF. Aceita 1 ou vários.
📦 Rótulo "Maleta aba transpassada inferior" no tipo de caixa.
📦 Novo tipo de caixa "Aba transpassada inferior" no cadastro — a última aba do riscador = largura inteira (L), o resto idêntico à maleta normal. Maleta normal inalterada.
🗑️ Limpar Dados (Cadastros, só admin/PCP) — zera os dados de movimento (pedidos, produção, estoque, cargas, escalas, entregas, ocorrências, manutenções, laudos, orçamentos, chat) pra começar do zero
🔒 Confirmação dupla (digitar APAGAR / APAGAR TUDO) · apaga nuvem + aparelho · cadastros nunca são apagados
📶 Modo offline (parte 1) — os dados ficam salvos no aparelho; se a internet cair, dá pra ver e lançar normal e sincroniza sozinho quando voltar
🟢🟡 Tarja de status de conexão no topo de todos os painéis (Online / Sem internet)
🆕 Novo status "Pronto" — quando a produção termina, o pedido fica Pronto (aguardando etiqueta)
🖨️ No PCP, botão de imprimir etiqueta no pedido Pronto → vira Pronto p/ Carregar e entra no Estoque PA
🔒 Coladeira/Grampeadeira não finaliza antes do Slotter/Corte concluir
✅ App operador: pedido fica em Concluído por 24h (some sozinho depois)
🏁 App operador: botão Finalizar turno com total de caixas × peso + tempo e qtd de ajustes
📊 Barras de progresso de produção no PCP e no app do operador
✂️ Barra da Chapa (Slotter): total de chapa × quanto já foi cortado
📦 Barra da Caixa (Coladeira/Grampeadeira): quanto já foi produzido
📤 Liberação parcial do Slotter — corta parcial e libera pra Coladeira/Grampeadeira começar JUNTO, sem esperar finalizar tudo
🎨 Cores por andamento (amarelo → azul → verde), número + % sempre visíveis e atualizando ao vivo
🤝 Novo App do Vendedor — login por nome + PIN de 4 dígitos (igual ao motorista)
👀 O vendedor vê só os clientes vinculados a ele, com busca por nome
📊 Cada pedido aparece com a fase: 🟡 Esperando programação · 🟠 Programado · 🔵 Produzindo · 🟣 Pronto aguardando carga · 🟢 Em rota · ✅ Entregue
📨 Botão Solicitar orçamento — o vendedor manda o pedido e o PCP analisa depois (nova aba 📨 Solicitações no Comercial)
🔑 Cadastro de vendedor agora tem campo de PIN de acesso ao app
📦 Número do pedido viaja por toda a cadeia — agora aparece também no Laudo (lista, detalhe, PDF e mensagens de WhatsApp/e-mail)
🔗 Vínculo cliente↔caixa mais robusto: ao lançar pedido, "Frisokar", "FRISOKAR LTDA" e "Frisokar Ltda." passam a casar igual (ignora acento, maiúscula, pontuação e sufixos jurídicos)
⚡ Se o cliente tem só uma caixa cadastrada, o sistema já seleciona ela sozinho no pedido
✍️ Carregamento manual na expedição permite digitar o nº do pedido e marca com ✍
🚚 Número do pedido também na escala e no app do motorista (embaixo de cada destino)
📦 Sugestão automática de caixas por palete no cadastro da caixa
🧮 Conta: espessura da onda × 2 (a cola dobra a chapa) × peças por amarrado = altura do pacote → (altura máx − altura do palete) ÷ altura do pacote = camadas → lastro × camadas × amarrado
📝 Campo Lastro virou número único (pacotes na base) + novo campo Altura do palete (mm) editável (padrão 150)
📲 No app da Coladeira/Grampeadeira o popup de paletização já vem preenchido com a sugestão — o operador pode mudar se precisar
⚠️ Se faltar dado no cadastro, o popup avisa o que falta
🐛 Correção: perdas do operador agora aparecem na análise
✅ Perdas (setup e produção) são persistidas no Firebase ao finalizar o pedido
✅ Antes elas sumiam quando o pedido era concluído — agora ficam no histórico
🔧 Correção do botão "Voltar/Fechar" que ficava atravessado no painel do operador
📍 Endereço do cliente em campos separados (rua, número, bairro, cidade, UF, CEP) + ponto de referência
🧭 Botão "Abrir rota no GPS" na escala — motorista escolhe Waze ou Google Maps
🔗 Link de rota também vai junto na mensagem da escala postada no grupo
✅ Endereço puxa automático do cadastro do cliente pro destino da viagem
📋 Novo status "Material disponível"
✅ Digitou a qtd de chapa (saída da onduladeira) → status vira Material disponível automático
✅ Só muda se o pedido ainda não começou (Programado / Esperando / Reprogramado)
✅ Zerou a chapa → volta pra "Esperando programação"
🔄 Importação mais inteligente: compara por pedido + caixa + data exata
🛡️ Itens com material disponível ficam congelados no status e na qtd de chapa
✅ O resto (cliente, código, qtd, valor, obs) atualiza normal na reimportação
🚚 Novo status "Carregado" — automático quando a expedição finaliza a carga
🧮 Qtd produzida corrigida: conta só o processo final de fechamento (Coladeira → Grampeadeira → Corte e Vinco manual). Slotter não soma mais como caixa pronta
🔬 App Laudo turbinado: botão sempre liberado, dados do operador automáticos, cores e miniatura da arte no laudo
📱 "Postar no Grupo" agora abre o WhatsApp puro
✅ Copia a mensagem pra área de transferência
✅ Abre o WhatsApp (app no celular / Web no PC) na tela inicial
✅ Usuário escolhe o grupo na hora e cola a mensagem
🎯 Funciona nos 3 lugares: Expedição (carga finalizada), App de Escala (escala do dia), Sistema PCP (escala do dia)
📊 5 rankings de ocorrências (cliente, fornecedor, tipo, onda, chapa)
🔎 Detalhamento por cliente expandível
📋 9 tipos de ocorrência (Medidas, Descolamento, Abaulada, Úmida, Refile, Trinca, Empenamento, Mancha, Outro)
🎬 Botão "Carregar exemplos" pra preview dos rankings
⚠️ Sistema de Ocorrências de Chapa
📸 Operador tira foto direto pela câmera (até 6 fotos, comprimidas)
⏸️ Registra ocorrência pausa o pedido automaticamente
📊 Módulo Análises → Ocorrências com filtros, rankings, fotos em galeria
📱 App dedicado de Escala (painel_escala.html) pra gerente PCP no celular
🔐 Login email/senha (admin/pcp) · CRUD de viagens · cadastros rápidos
📢 Expedidor posta no grupo ao finalizar carga (botão na tela de sucesso)
🔗 Escala integrada à Expedição (vários destinos por viagem, status automático)
📊 Status: ⏳ aguardando → 🟡 parcial → ✅ carregado → 🚚 saiu
🚛 Módulo de Escalas de Caminhões + Cadastro de Caminhões
📅 Viagens agrupadas por caminhão · 🕗 horários · ↩️ retorno
📱 "Postar no grupo" + "Avisar motorista"
✏️ Editar item do orçamento direto na lista
🎨 Destaque visual em roxo durante edição
👁️ Visualizar orçamento antes de enviar (preview JP)
📱 Enviar por WhatsApp · 📧 E-mail · 🖨️ Imprimir / PDF
⚖ Alerta de peso mínimo agora é por item (não soma)
⚖ Cadastro de chapa: campo "Peso mínimo de produção (kg)"
📊 Orçamento: bloco "Peso por item" com alerta visual de mínimo
📐 Cadastro de Chapas (3 ou 5 camadas de papéis · gramatura calculada)
🔄 Orçamento agora usa chapa em vez de papel solto
🐛 Bug fix: número do orçamento sempre auto + preços em formato BR
💰 Novo módulo Comercial · Orçamentos
📐 Calcula chapa por estilo (Maleta B/C/BB/BC + Corte e Vinco)
🌊 Compensações de onda editáveis
🧾 ICMS/IPI editável + opção "sem IPI"
✅ Orçamento aprovado → vira caixa cadastrada + pedido vinculado
📦 Ficha por tipo de operador: Coladeira/Grampeadeira veem PALETIZAÇÃO, Slotter/Corte e Vinco veem ARTE
🖼️ Imagem da paletização no cadastro de caixa
📐 Campo Lastro (L × C) com cálculo automático
⚡ PDF mais robusto: espera carregar + botão "abrir em nova aba"
🔬 PDF da arte em alta resolução (renderiza 3x maior pra ficar nítido com zoom)
🔍 Código de barras e detalhes finos legíveis mesmo ampliando
📄 Novo visualizador de PDF da arte (Fit Page + pinch-zoom + multipágina)
📱 Funciona no iPhone, Android e desktop
🏠 Página inicial com menu central — todo mundo acessa o mesmo link
🎨 4 cards coloridos para escolher o painel
🧠 Menu inteligente: lembra qual painel a pessoa escolheu
🔄 Botão "🏠 Trocar painel" no header de cada PWA
🔄 Botão "Recarregar dados" no app operador (header + aviso de caixa não cadastrada)
📊 Contador de caixas carregadas visível pro operador
🔍 Match muito mais flexível: ignora hífens, underscores, pontos
🔎 Logs detalhados no console pra debug
🐛 Fix da ficha técnica no operador: agora aparece sempre, incluindo medidas, composição, arte e PDF
🔗 Match por caixaId (vínculo direto): pedidos cadastrados na v1.6.4+ encontram a caixa exata
🔍 Match fuzzy: ignora espaços, zeros à esquerda e maiúsculas/minúsculas
🎯 Match parcial: código "19" encontra caixa "19 KETCHUP 900ML"
⚠️ Aviso amigável quando caixa não tá cadastrada
🔐 Auto-registro de usuários: quando alguém loga pela primeira vez, é registrado automaticamente como "aguardando perfil"
👥 Modal de usuários melhorado: mostra TODOS os usuários, inclusive os sem perfil (destaque laranja)
🔔 Badge no botão Usuários: mostra quantos usuários estão aguardando você definir o perfil
📊 Tracking de login: total de logins + último acesso de cada usuário
🛡️ Auditoria: registra quem definiu o perfil e quando
⚡ Fases em tempo real no cronograma: PCP vê o que cada máquina tá fazendo
🎨 Badges: 🔵 Programado · 🟡 Em ajuste · 🟢 Em produção · 🔴 Parado · ⚪ Finalizado
🛑 Motivo de parada visível + tempo parado
📊 Progresso em produção (%) + 👤 operador responsável
⏱️ Tempo decorrido em cada fase ("há 23min")
🐛 Fix do cálculo do riscador para maleta normal:
• Maleta normal / FECO: ABA × A+alt × ABA × 0 × 0 (2 abas iguais a (L+L1)/2)
• Bandeja / Auto-piso: ABA × A+alt × L+compL1 × 0 × 0 (só aba de cima)
• Modelo agora afeta a fórmula automaticamente — recalcula ao trocar o modelo
🔧 Fix aplicado também na ficha técnica do painel do operador
👥 Cadastro de Clientes completo: nome, CNPJ, e-mail, WhatsApp, endereço, contato, observações
🔄 Migração automática: clientes que existiam em pedidos/caixas agora têm cadastro (incompleto, mas presente)
📊 KPIs de clientes: total, completos, incompletos, vínculos (caixas + pedidos)
⚡ Validação inteligente: hint no cadastro de pedido/caixa avisa se cliente está incompleto
🚀 Cadastro rápido: botão "cadastrar agora" no pedido abre modal de cliente, salva e volta selecionado
🐛 Fix do app de laudo: agora mostra todos os pedidos programados (bug do filtro statusOp)
🔐 Auto-logout 12h nos 3 PWAs (operador, expedição, laudo) — link copiado fica seguro
🔗 Cadastro de pedido vinculado: cliente e caixa agora vêm do cadastro (não é mais texto livre)
🔄 Migração automática: pedidos antigos vinculam sozinhos com caixas pelo match cliente+código
➕ Botão "+ Cadastrar caixa agora" no pedido: abre modal de caixa, salva, e volta com a caixa selecionada
🚚 Nova aba "Por motorista" no histórico do expedição — mostra paletes detalhados por cliente
🔄 Sincronização de cronograma: ordem do PCP reflete no painel do operador em tempo real
📊 Registro de perdas de chapa no ajuste e na produção (operador registra, PCP vê tudo)
📈 Nova aba "📊 Perdas" com KPIs, top 5 motivos, filtros e export CSV
🛑 13 motivos de parada (era 6) — agora com clichê, papel, tinta, refeição, manutenção, PCP, turno
🚛 Card "Motoristas em rota" no app de expedição com botão "Voltou" pra liberar motorista (fix do Gildo!)
⚡ Progressos do operador (setup/produção/parado) sincronizam em tempo real com o sistema PC
✨ Ficha de palete A4: cabe agora em 1 folha (era estourando)
✨ Referência com auto-ajuste de fonte (códigos curtos = fonte gigante, longos = compacta)
✨ Qtd no Palete com auto-ajuste de fonte (até 9.999 caixas, fonte cresce conforme menor o número)
🗑️ Removido: linhas de "Conferido por" e "Carimbo / Assinatura" (não usadas)
🆕 Painel de Laudo PWA (4ª PWA mobile) — controle de qualidade técnico
✨ Etapa 1: testes durante a produção (qtd chapa + gramatura + coluna) — até 3 testes
✨ Etapa 2: finalização com NF + Mullen + espessura + lote + umidade + observações
✨ Geração de PDF A4 padrão JP com tabela ✓ OK / ✗ NOK (tolerância ±5%)
✨ Envio direto: WhatsApp, e-mail, imprimir
✨ Cadastro de laudistas com login por código (igual operador/expedição)
✨ Velocidade da Grampeadeira adicionada (Slotter + Corte&Vinco + Coladeira + Grampeadeira)
✨ Sugestão automática de velocidade nas 4 máquinas
✨ Valor unitário automático da caixa (R$/kg × peso)
✨ Upload de arte/layout da caixa (PDF + imagem)
✨ App do operador mostra arte, clichê, faca, cores antes de iniciar
✨ Auto-busca no cadastro ao importar pedido do XLSX
✨ Tela técnica completa pro operador (medidas riscador + impressora)
✨ Cadastro de papéis (K12, M11, T15...) com sincronização Firebase
✨ Cadastro de caixa expandido com 11 seções: composição de chapa, compensações por aba, cores, etc.
✨ Cálculos automáticos: medidas impressor + riscador + área + peso unitário
✨ Sugestão de velocidade baseada no histórico real de produção
✨ Histórico de alterações da caixa (auditoria completa)
✨ Detecção de produção parcial (tolerância 5%) com banner pulsante no dashboard
✨ Modal de decisão do PCP: Aceitar Parcial ou Reprogramar Diferença
✨ Caixas vão pro estoque mesmo reprogramando
✨ Auditoria das decisões (quem decidiu, quando, qtd)
✨ Fluxo de 3 quantidades: pedido, chapa pronta, produzido
✨ Operador finaliza por etapas (Slotter → Coladeira/Grampeadeira)
✨ Auto-publicação no Estoque PA ao concluir todas etapas
✨ Sincronização tempo real das etapas (Firebase)
✨ Importação inteligente: preserva pedidos em produção
✨ Cronograma mostra pedidos "FINALIZANDO" (badge verde tracejado)
✨ Roteiro "sem acabamento" agora passa por Coladeira ou Grampeadeira
✨ Etiqueta A4: peso do palete, hora, carimbo, QR code 50mm
🎉 Sistema inicial MTX
📋 Dashboard, Relatório, Estoque, Cadastros, Expedição, Análises
📲 3 apps: Sistema (PC) + Operador (PWA) + Expedição (PWA)
☁️ Sincronização Firebase em tempo real
🎨 Identidade visual JP (logo + paleta azul)
💡 Sobre o versionamento: Os arquivos têm a versão no nome (ex: sistema_v1.9.6.html). Se algo der errado, é só voltar pra versão anterior.