41 lines
1.5 KiB
TypeScript
41 lines
1.5 KiB
TypeScript
|
|
import { useMemo } from 'react';
|
|
import { useEstoque } from './useEstoqueSimplificado';
|
|
|
|
export const useMateriaisCriticos = () => {
|
|
const { materiais, loading } = useEstoque();
|
|
|
|
const materiaisCriticos = useMemo(() => {
|
|
return materiais.filter(material => {
|
|
// Verificar se o tipo de material tem gestão de estoque crítico ativada
|
|
// Se gestao_estoque_critico for undefined ou null, considerar como true (padrão)
|
|
const temGestaoAtivada = material.tipos_materia_prima?.gestao_estoque_critico !== false;
|
|
|
|
// Debug log para verificar o filtro
|
|
console.log(`Material ${material.descricao}:`, {
|
|
gestao_estoque_critico: material.tipos_materia_prima?.gestao_estoque_critico,
|
|
temGestaoAtivada,
|
|
quantidade_disponivel: material.quantidade_disponivel,
|
|
quantidade_minima: material.quantidade_minima,
|
|
isCritico: material.quantidade_disponivel <= (material.quantidade_minima || 0) && material.quantidade_minima > 0
|
|
});
|
|
|
|
// Só considera crítico se:
|
|
// 1. Tem gestão de estoque crítico ativada no tipo
|
|
// 2. Quantidade disponível <= quantidade mínima
|
|
// 3. Quantidade mínima > 0
|
|
return temGestaoAtivada &&
|
|
material.quantidade_disponivel <= (material.quantidade_minima || 0) &&
|
|
(material.quantidade_minima || 0) > 0;
|
|
});
|
|
}, [materiais]);
|
|
|
|
console.log('Materiais críticos encontrados:', materiaisCriticos.length);
|
|
|
|
return {
|
|
materiaisCriticos,
|
|
loading,
|
|
totalCriticos: materiaisCriticos.length
|
|
};
|
|
};
|