Pular para o conteúdo principal

Unidade de Medida e Conversao de Consumo

Aprovado2026-07-19

Problema

Todas as pecas no sistema sao controladas por uma quantidade generica — sem unidade de medida. O mecanico solicita "15" e o gestor aprova "15", mas ninguem sabe se sao 15 unidades, 15 metros ou 15 litros.

Na pratica, muitos materiais possuem unidades de consumo diferentes da unidade de estoque:

MaterialComo e estocadoComo e consumidoSituacao atual
Fio eletricoRolo (100m)MetroMecanico calcula mentalmente quantos metros tem 1 rolo
Oleo motorBalde (20L)LitroAlmoxarifado anota em papel a conversao
GraxaBalde (5kg)QuilogramaNinguem converte, estoque fica impreciso
Lona de freioJogo (4 rodas)RodaMecanico pede "2" sem especificar se sao 2 jogos ou 2 rodas
ChapaChapa (1.2m2)Metro quadradoCalculo manual a cada solicitacao

Resultado: calculos manuais, erros frequentes, estoque impreciso e retrabalho na aprovacao.


Fluxo Atual

Mecanico solicita → "15" (15 o que?)
Gestor aprova → "15" (15 o que?)
Estoque desconta → -15 (15 o que?)

Nao existe informacao de unidade em nenhuma etapa. O campo quantity e um numero inteiro generico.


Proposta: Unidades de Medida com Conversao Automatica

Conceito

Cada peca passa a ter duas unidades e um fator de conversao:

CampoO que eExemplo
Unidade de estoqueComo a peca e controlada no almoxarifadoRolo, Balde 20L, Jogo
Unidade de consumoComo o mecanico solicitaMetro, Litro, Roda
Fator de conversaoQuantas unidades de consumo cabem em 1 unidade de estoque1 Rolo = 100 Metros

O sistema faz a conversao automaticamente. O mecanico pede em metros, o gestor ve em metros e em rolos, o estoque desconta em rolos.

Formula

impacto_estoque = quantidade_solicitada / fator_de_conversao

Exemplos

PecaSolicitacaoCalculoImpacto no Estoque
Fio eletrico15 metros15 / 1000.15 rolos
Oleo motor3 litros3 / 200.15 baldes
Graxa2 kg2 / 50.4 baldes
Lona de freio2 rodas2 / 40.5 jogos
Parafuso4 unidades4 / 14 unidades

:::info Pecas simples nao mudam Quando a unidade de estoque e a de consumo sao iguais (ex: Unidade/Unidade), o fator e 1 e o comportamento e identico ao atual. 90% das pecas continuam funcionando exatamente como hoje, sem nenhuma configuracao extra. :::


Fluxo Proposto

Cadastro da Peca

O gestor configura as unidades ao cadastrar ou editar a peca:

1. Seleciona unidade de estoque → "Rolo"
2. Seleciona unidade de consumo → "Metro"
3. Define o fator → "1 Rolo = 100 Metros"

O campo de fator so aparece quando as unidades sao diferentes.

Solicitacao

Mecanico solicita → "15 metros de fio eletrico"
Sistema calcula → Impacto: 0.15 rolos
Sistema valida → Estoque: 3 rolos (300m disponiveis) ✓

O mecanico ve a quantidade em metros. A validacao de estoque acontece automaticamente.

Aprovacao

Gestor ve → "15 metros solicitados (0.15 rolos)"
Gestor ve → "Estoque atual: 3.00 rolos (300m)"
Gestor ve → "Apos aprovacao: 2.85 rolos (285m)"
Gestor aprova → Estoque atualiza automaticamente

O gestor tem visibilidade completa do impacto antes de aprovar.

Visualizacao de Estoque

A tabela de pecas passa a exibir a unidade e a equivalencia:

Fio Eletrico │ 3 rolos (300 m) │ Controle: Rolo │ Consumo: Metro
Oleo Motor │ 5 baldes (100 L) │ Controle: Balde │ Consumo: Litro
Parafuso M10 │ 150 un │ Controle: Un │ Consumo: Un

Prototipo Interativo

Navegue pelas abas para ver como cada tela ficaria. Os campos sao interativos — altere valores para simular o comportamento.

Prototipo do formulario de cadastro de peca com os novos campos de unidade de medida. Os campos de unidade de consumo e fator so aparecem quando relevante.
Cadastro de Peca — Fio Eletrico 2.5mm
Unidades de Medida
Como esta peca e controlada no estoque
Como o mecanico solicita esta peca
1 Rolo =Metro
=1 Rolo = 100 Metro|1 Metro = 0.0100 Rolo
Prototipo interativo — altere valores nos campos para simular o comportamento

Unidades Disponiveis

O sistema vem com unidades pre-cadastradas organizadas por familia. O gestor pode criar unidades personalizadas (ex: "Balde 20L", "Rolo 100m").

FamiliaUnidades iniciaisUso tipico
QuantidadeUnidade, Par, Jogo, CaixaPecas discretas (parafusos, filtros, lonas)
VolumeLitro, Mililitro, GalaoFluidos (oleo, graxa liquida, combustivel)
PesoQuilograma, Grama, ToneladaMateriais a granel (graxa, solda)
ComprimentoMetro, CentimetroMateriais lineares (fio, mangueira, correia)
AreaMetro quadradoChapas, lonas

As familias servem para organizar os dropdowns. Unidades personalizadas (como "Rolo" ou "Balde 20L") sao criadas pelo gestor dentro da familia correspondente.


Cenarios e Garantias

CenarioComportamento
Peca com unidades iguais (Un/Un)Fator = 1, sem conversao, identico ao atual
Peca com unidades diferentes (Rolo/Metro)Fator obrigatorio, conversao automatica
Solicitar mais que o estoqueBloqueado com aviso: "Estoque insuficiente. Disponivel: X metros"
Estoque fracionario (2.85 rolos)Permitido — quantidades passam a aceitar decimais
Peca existente sem unidade configuradaAssume "Unidade" com fator 1 (migracao automatica)
Aprovar quantidade diferente da solicitadaRecalculo automatico do impacto
Devolucao de peca com conversaoEstoque restaurado na unidade de estoque

Migracao de Pecas Existentes

Todas as pecas atuais serao migradas automaticamente:

  • Unidade de estoque: "Unidade"
  • Unidade de consumo: "Unidade"
  • Fator de conversao: 1

O comportamento permanece identico ao atual. O gestor configura unidades diferentes apenas nas pecas que precisam.

Quantidades passam a aceitar decimais. O campo stockQuantity muda de inteiro para decimal. Valores existentes (5 → 5.0) nao sao afetados.


Integracao SAP (futuro)

Cada unidade no sistema tera um campo opcional para codigo ISO (padrao internacional UN/ECE) e codigo SAP. Isso permite mapeamento direto na integracao futura:

Unidade FacterCodigo ISOCodigo SAP
QuilogramaKGMKG
LitroLTRL
MetroMTRM
UnidadeC62PC

Os campos sao opcionais e preenchidos apenas quando a integracao for implementada. Zero impacto no uso atual.


Decisoes Aprovadas

Definicoes aprovadas por produto em 19/07/2026.


1. Exibicao de estoque fracionario → Desdobrado

Estoque fracionario sera exibido de forma desdobrada: 2 rolos + 85 m em vez de 2.85 rolos.

O almoxarifado ve exatamente o que tem na prateleira — rolos inteiros + material avulso — sem precisar fazer conta de cabeca.


2. Configuracao de unidades → Opcional com default "Unidade"

O campo de unidade vem preenchido com "Unidade" por padrao. O gestor altera apenas quando necessario (oleo, fio, graxa).

Zero atrito para pecas simples (~90% do catalogo). Pecas que precisam de conversao sao configuradas pontualmente.


3. Criacao de unidades → Livre com sugestoes

O gestor cria unidades livremente, mas ao digitar o nome, o sistema sugere unidades semelhantes ja cadastradas ("Voce quis dizer Rolo?").

Flexibilidade total sem travar o usuario. Previne duplicatas ("Rolo" vs "RL" vs "Rolo 100m") mostrando o que ja existe antes de criar.


4. Step do input de quantidade → Dinamico por tipo de unidade

O incremento dos botoes +/- depende da unidade da peca:

Tipo de unidadeStepExemplo
Inteira (Un, Jogo, Par)1Parafuso: 1 → 2 → 3
Fracionaria (Metro, Litro, Kg)0.5Oleo: 0.5 → 1 → 1.5

Ninguem pede meio parafuso. Mas faz sentido pedir 1.5 litros de oleo.


Impacto Tecnico

Resumo

AreaMudancas
Database2 tabelas novas (UnitCategory, Unit) + campos novos em Part e PartRequest
Backend4 use cases novos (CRUD unidades) + 4 modificados (part, part-request)
FrontendForms de cadastro e solicitacao + listagens + hooks
Migracao6 passos, zero downtime, dados existentes intactos

Estimativa

~2 semanas de desenvolvimento.

  • Semana 1: Schema, migracao, backend (entities, repositories, use cases, servico de conversao)
  • Semana 2: Frontend (forms, listagens, conversao visual) + testes

O que NAO muda

  • Fluxo de aprovacao (apenas exibe informacao adicional)
  • Fluxo de entrega
  • Fluxo de rejeicao
  • Permissoes existentes
  • Endpoints existentes (apenas campos adicionais)