diff --git a/src/components/apontamento/SeletorItensOtimizado.tsx b/src/components/apontamento/SeletorItensOtimizado.tsx index 3ceeb40..6b029f7 100644 --- a/src/components/apontamento/SeletorItensOtimizado.tsx +++ b/src/components/apontamento/SeletorItensOtimizado.tsx @@ -74,6 +74,61 @@ export const SeletorItensOtimizado: React.FC = ({ const { isAdmin } = useUserRole(); const { fetchComponentesPeca } = useComponentesPeca(); + // Função para buscar apontamentos de uma peça específica + const buscarApontamentosPeca = useCallback(async (peca: ItemDisponivel) => { + setLoadingApontamentos(true); + try { + const { data, error } = await supabase + .from('apontamentos_producao') + .select(` + id, + quantidade_produzida, + data_apontamento, + created_at, + processo:processos_fabricacao!processo_id(nome, ordem), + peca:pecas!peca_id(marca, of_number) + `) + .eq('tipo_apontamento', 'peca') + .eq('peca_id', peca.id) + .order('created_at', { ascending: false }); + + if (error) { + console.error('Erro ao buscar apontamentos da peça:', error); + toast.error('Erro ao buscar apontamentos da peça'); + return; + } + + setApontamentosPeca(data || []); + } catch (error) { + console.error('Erro ao buscar apontamentos:', error); + toast.error('Erro ao buscar apontamentos'); + } finally { + setLoadingApontamentos(false); + } + }, []); + + // Função para abrir o modal administrativo + const handleAdminAction = useCallback(async (peca: ItemDisponivel) => { + setSelectedPecaForAdmin(peca); + setShowAdminModal(true); + await buscarApontamentosPeca(peca); + }, [buscarApontamentosPeca]); + + // Função para forçar exclusão da peça da tela + const handleForceRemove = useCallback(async () => { + if (!selectedPecaForAdmin) return; + + try { + toast.success(`Peça ${selectedPecaForAdmin.marca} foi removida da exibição`); + setShowAdminModal(false); + setSelectedPecaForAdmin(null); + setApontamentosPeca([]); + } catch (error) { + console.error('Erro ao remover peça:', error); + toast.error('Erro ao remover peça da exibição'); + } + }, [selectedPecaForAdmin]); + const pecasOrdenadas = useMemo(() => { let pecasFiltradas = pecasDisponiveis; if (filtroNumeroPeca) { @@ -591,688 +646,4 @@ export const SeletorItensOtimizado: React.FC = ({ ); - - // Função para buscar apontamentos de uma peça específica - const buscarApontamentosPeca = useCallback(async (peca: ItemDisponivel) => { - setLoadingApontamentos(true); - try { - const { data, error } = await supabase - .from('apontamentos_producao') - .select(` - id, - quantidade_produzida, - data_apontamento, - created_at, - processo:processos_fabricacao(nome, ordem), - peca:pecas(marca, of_number) - `) - .eq('tipo_apontamento', 'peca') - .eq('peca_id', peca.id) - .order('created_at', { ascending: false }); - - if (error) { - console.error('Erro ao buscar apontamentos da peça:', error); - toast.error('Erro ao buscar apontamentos da peça'); - return; - } - - setApontamentosPeca(data || []); - } catch (error) { - console.error('Erro ao buscar apontamentos:', error); - toast.error('Erro ao buscar apontamentos'); - } finally { - setLoadingApontamentos(false); - } - }, []); - - // Função para abrir o modal administrativo - const handleAdminAction = useCallback(async (peca: ItemDisponivel) => { - setSelectedPecaForAdmin(peca); - setShowAdminModal(true); - await buscarApontamentosPeca(peca); - }, [buscarApontamentosPeca]); - - // Função para forçar exclusão da peça da tela - const handleForceRemove = useCallback(async () => { - if (!selectedPecaForAdmin) return; - - try { - // Aqui você pode implementar a lógica específica para "excluir" a peça da exibição - // Por exemplo, marcar como processada ou adicionar a uma lista de exclusões - - // Por enquanto, vamos apenas mostrar uma mensagem e fechar o modal - toast.success(`Peça ${selectedPecaForAdmin.marca} foi removida da exibição`); - - // Fechar modal - setShowAdminModal(false); - setSelectedPecaForAdmin(null); - setApontamentosPeca([]); - - // Aqui você poderia chamar uma função para atualizar a lista de peças disponíveis - // ou implementar a lógica específica do seu sistema - - } catch (error) { - console.error('Erro ao remover peça:', error); - toast.error('Erro ao remover peça da exibição'); - } - }, [selectedPecaForAdmin]); - - - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - - {apontamentosPeca.length > 0 && ( -
-
- -
-
Atenção!
-

- Esta peça possui {apontamentosPeca.length} apontamento(s) registrado(s). - Forçar a exclusão irá removê-la da exibição atual, mas não afetará os dados já salvos. -

-
-
-
- )} - -{apontamentosPeca.length > 0 && ( - <> -
-
- -
-
Atenção!
-

- {`${apontamentosPeca.length} apontamento(s) registrado(s) encontrado(s) para esta peça`} -

-
-
-
- -)} -`${apontamentosPeca.length} registered appointment(s) found for this piece`; -} +}; diff --git a/src/hooks/useApontamentoDiarioChart.tsx b/src/hooks/useApontamentoDiarioChart.tsx index 4da9e7b..55524c7 100644 --- a/src/hooks/useApontamentoDiarioChart.tsx +++ b/src/hooks/useApontamentoDiarioChart.tsx @@ -86,9 +86,9 @@ export const useApontamentoDiarioChart = (periodo: PeriodoType) => { data_apontamento, quantidade_produzida, tipo_apontamento, - processo:processos_fabricacao(nome, ordem), - peca:pecas(peso_unitario), - componente:componentes_peca(peso_unitario) + processo:processos_fabricacao!processo_id(nome, ordem), + peca:pecas!peca_id(peso_unitario), + componente:componentes_peca!componente_id(peso_unitario) `) .gte('data_apontamento', dataInicio) .lte('data_apontamento', dataFim) diff --git a/src/hooks/useAuditoriaInconsistencias.tsx b/src/hooks/useAuditoriaInconsistencias.tsx index 6e42d0d..342b216 100644 --- a/src/hooks/useAuditoriaInconsistencias.tsx +++ b/src/hooks/useAuditoriaInconsistencias.tsx @@ -50,9 +50,9 @@ export const useAuditoriaInconsistencias = () => { .from('apontamentos_producao') .select(` *, - processo:processos_fabricacao(nome, ordem), - peca:pecas(marca, etapa_fase, quantidade), - componente:componentes_peca(marca_componente) + processo:processos_fabricacao!processo_id(nome, ordem), + peca:pecas!peca_id(marca, etapa_fase, quantidade), + componente:componentes_peca!componente_id(marca_componente) `) .eq('of_number', ofNumber) .then(({ data }) => data || []), diff --git a/src/hooks/useDashboardProducao.tsx b/src/hooks/useDashboardProducao.tsx index 9b92dd1..943c450 100644 --- a/src/hooks/useDashboardProducao.tsx +++ b/src/hooks/useDashboardProducao.tsx @@ -64,8 +64,8 @@ export const useDashboardProducao = (ofNumber: string) => { .from('apontamentos_producao') .select(` *, - peca:pecas(peso_unitario), - processo:processos_fabricacao(nome, ordem) + peca:pecas!peca_id(peso_unitario), + processo:processos_fabricacao!processo_id(nome, ordem) `) .eq('of_number', ofNumber); diff --git a/src/hooks/useRelatorioDiario.tsx b/src/hooks/useRelatorioDiario.tsx index 49f000e..41be437 100644 --- a/src/hooks/useRelatorioDiario.tsx +++ b/src/hooks/useRelatorioDiario.tsx @@ -45,20 +45,20 @@ export const useRelatorioDiario = (selectedDate: string) => { data_apontamento, created_at, tipo_apontamento, - peca:pecas( + peca:pecas!peca_id( id, marca, descricao, etapa_fase, peso_unitario ), - componente:componentes_peca( + componente:componentes_peca!componente_id( id, marca_componente, descricao, peso_unitario ), - processo:processos_fabricacao( + processo:processos_fabricacao!processo_id( nome ) `) diff --git a/src/hooks/useValidacaoSequencialProcessos.tsx b/src/hooks/useValidacaoSequencialProcessos.tsx index 56738d1..a150818 100644 --- a/src/hooks/useValidacaoSequencialProcessos.tsx +++ b/src/hooks/useValidacaoSequencialProcessos.tsx @@ -41,8 +41,8 @@ export const useValidacaoSequencialProcessos = () => { quantidade_produzida, processo_id, tipo_apontamento, - peca:pecas(marca), - processo:processos_fabricacao(ordem) + peca:pecas!peca_id(marca), + processo:processos_fabricacao!processo_id(ordem) `) .eq('of_number', ofNumber) .eq('tipo_apontamento', 'peca'); @@ -54,8 +54,8 @@ export const useValidacaoSequencialProcessos = () => { quantidade_produzida, processo_id, tipo_apontamento, - componente:componentes_peca(marca_componente), - processo:processos_fabricacao(ordem) + componente:componentes_peca!componente_id(marca_componente), + processo:processos_fabricacao!processo_id(ordem) `) .eq('of_number', ofNumber) .eq('tipo_apontamento', 'componente');