🚀 Initial commit: Versão atual do TrackSteel APP
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
|
||||
import { useQuery } from '@tanstack/react-query';
|
||||
import { supabase } from '@/integrations/supabase/client';
|
||||
|
||||
export interface MaterialEstoque {
|
||||
id: string;
|
||||
descricao: string;
|
||||
unidade: string;
|
||||
tipo_material_id?: string;
|
||||
tipo_material_nome?: string;
|
||||
codigo: string;
|
||||
quantidade_disponivel?: number;
|
||||
peso_unitario?: number;
|
||||
valor_unitario?: number;
|
||||
}
|
||||
|
||||
export const useMateriaisEstoque = (filters?: {
|
||||
tipo?: string;
|
||||
busca?: string;
|
||||
}) => {
|
||||
const { data: materiais = [], isLoading } = useQuery({
|
||||
queryKey: ['materiais-estoque', filters],
|
||||
queryFn: async () => {
|
||||
let query = supabase
|
||||
.from('estoque_materiais')
|
||||
.select(`
|
||||
id,
|
||||
descricao,
|
||||
unidade,
|
||||
tipo_material_id,
|
||||
codigo,
|
||||
quantidade_disponivel,
|
||||
peso_unitario,
|
||||
valor_unitario,
|
||||
tipos_materia_prima!tipo_material_id(nome)
|
||||
`)
|
||||
.order('descricao');
|
||||
|
||||
if (filters?.tipo) {
|
||||
// Buscar IDs dos tipos de material pelo nome
|
||||
const { data: tiposData } = await supabase
|
||||
.from('tipos_materia_prima')
|
||||
.select('id')
|
||||
.eq('nome', filters.tipo);
|
||||
|
||||
if (tiposData && tiposData.length > 0) {
|
||||
query = query.eq('tipo_material_id', tiposData[0].id);
|
||||
}
|
||||
}
|
||||
|
||||
if (filters?.busca) {
|
||||
query = query.ilike('descricao', `%${filters.busca}%`);
|
||||
}
|
||||
|
||||
const { data, error } = await query;
|
||||
|
||||
if (error) {
|
||||
console.error('Erro ao buscar materiais:', error);
|
||||
throw error;
|
||||
}
|
||||
|
||||
return (data || []).map(item => ({
|
||||
id: item.id,
|
||||
descricao: item.descricao,
|
||||
unidade: item.unidade,
|
||||
tipo_material_id: item.tipo_material_id,
|
||||
tipo_material_nome: item.tipos_materia_prima?.nome || 'N/A',
|
||||
codigo: item.codigo,
|
||||
quantidade_disponivel: item.quantidade_disponivel,
|
||||
peso_unitario: item.peso_unitario,
|
||||
valor_unitario: item.valor_unitario
|
||||
})) as MaterialEstoque[];
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
materiais,
|
||||
isLoading,
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user