Centralize planning data exceptions
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m43s

This commit is contained in:
Cauê Faleiros
2026-08-04 15:09:57 -03:00
parent 859107d945
commit 3f8e5eeb0c
2 changed files with 295 additions and 8 deletions

View File

@@ -405,10 +405,11 @@ const SuppliesHub = () => {
<h2 className="text-base font-bold text-dark-text">Gestão de materiais</h2>
<p className="mt-1 text-sm font-semibold text-dark-muted">Cadastros e controles que sustentam o planejamento operacional.</p>
</div>
<div className="grid grid-cols-1 gap-4 lg:grid-cols-3">
<div className="grid grid-cols-1 gap-4 lg:grid-cols-2 xl:grid-cols-4">
<ModuleCard title="Estoque e recebimentos" description="Saldo, lotes, recebimentos, inventário e movimentações de materiais." icon={Package} to="/supplies/inventory" meta={`${formatNumber(summary.stats.pendingReceipts, 0)} recebimentos pendentes · ${formatNumber(summary.stats.activeLots, 0)} lotes ativos`} />
<ModuleCard title="Planejamento de malha" description="Organize a fila de matéria-prima para abastecer compras e corte." icon={Ruler} to="/supplies/fabric-planning" />
<ModuleCard title="Prioridades de estoque" description="Analise reposição, cobertura e itens que precisam de revisão de cadastro." icon={PackageSearch} to="/supplies/current-planning" />
<ModuleCard title="Dados para revisar" description="Consulte exceções de estoque, composição e cadastro fora do cálculo atual." icon={ClipboardList} to="/planning-issues" meta="Abrir pendências" />
</div>
</section>
</div>
@@ -1677,7 +1678,10 @@ const MovementsTab = ({
};
const InventoryScreen = () => {
const [activeTab, setActiveTab] = useState<InventoryTab>('dashboard');
const [searchParams, setSearchParams] = useSearchParams();
const requestedTab = searchParams.get('tab');
const activeTab = inventoryTabs.some(tab => tab.id === requestedTab) ? requestedTab as InventoryTab : 'dashboard';
const setActiveTab = (tab: InventoryTab) => setSearchParams(tab === 'dashboard' ? {} : { tab });
const [summary, setSummary] = useState<SupplySummary>(emptySupplySummary);
const [stockSnapshot, setStockSnapshot] = useState<StockData[]>([]);
const [isLoading, setIsLoading] = useState(true);