From d22366c73fd596eaffe31ef1a2bf2cead0f609bc Mon Sep 17 00:00:00 2001 From: Marcos Reifonas Date: Thu, 10 Sep 2026 13:41:14 +0000 Subject: [PATCH] feat: botao discreto para resetar revisao e confirmacao flexivel ao gerar pdf e imprimir --- src/components/prioridades/PrioridadesPDF.tsx | 13 ++++++- .../useItensPrioridadeFabricacaoFiltrado.tsx | 38 ++++++++++++++++++- src/pages/PrioridadesFabricacao.tsx | 31 +++++++++++++-- 3 files changed, 76 insertions(+), 6 deletions(-) diff --git a/src/components/prioridades/PrioridadesPDF.tsx b/src/components/prioridades/PrioridadesPDF.tsx index 51e4c0f..c452b05 100644 --- a/src/components/prioridades/PrioridadesPDF.tsx +++ b/src/components/prioridades/PrioridadesPDF.tsx @@ -19,6 +19,7 @@ interface PrioridadesPDFProps { dataModificacao: string; modificadoPor?: string; } | null; + onIncrementarRevisao?: () => Promise; } export const PrioridadesPDF: React.FC = ({ @@ -27,7 +28,8 @@ export const PrioridadesPDF: React.FC = ({ itensPorPrioridade, ofSelecionada, faseSelecionada, - versaoAtual + versaoAtual, + onIncrementarRevisao }) => { const [isGenerating, setIsGenerating] = useState(false); const [isPrinting, setIsPrinting] = useState(false); @@ -76,6 +78,15 @@ export const PrioridadesPDF: React.FC = ({ return; } + if (onIncrementarRevisao) { + const querSubir = window.confirm( + `Deseja incrementar a revisão para Rev. ${(versaoAtual?.revisao || 0) + 1} para esta impressão?\n\n- Clique em OK para subir a revisão para Rev. ${(versaoAtual?.revisao || 0) + 1}\n- Clique em Cancelar para manter a revisão atual (Rev. ${versaoAtual?.revisao || 0})` + ); + if (querSubir) { + await onIncrementarRevisao(); + } + } + try { setIsPrinting(true); await printProfessionalPDF('prioridades-pdf-content'); diff --git a/src/hooks/useItensPrioridadeFabricacaoFiltrado.tsx b/src/hooks/useItensPrioridadeFabricacaoFiltrado.tsx index f92dfe9..9125dd6 100644 --- a/src/hooks/useItensPrioridadeFabricacaoFiltrado.tsx +++ b/src/hooks/useItensPrioridadeFabricacaoFiltrado.tsx @@ -128,6 +128,41 @@ export const useItensPrioridadeFabricacaoFiltrado = () => { } }; + const resetarRevisao = async (valor: number = 0) => { + if (!ofSelecionada || !faseSelecionada) return false; + + try { + const dataModificacao = new Date().toISOString(); + + const { error } = await supabase + .from('prioridades_fabricacao') + .update({ + revisao: valor, + data_ultima_modificacao: dataModificacao + }) + .eq('of_number', ofSelecionada) + .eq('etapa_fase', faseSelecionada); + + if (error) { + console.error('Erro ao resetar revisão no DB:', error); + toast.error('Erro ao resetar revisão.'); + return false; + } + + setVersaoAtual(prev => ({ + ...prev!, + revisao: valor, + dataModificacao: dataModificacao + })); + + toast.success(`Revisão resetada para ${valor}`); + return true; + } catch (error) { + console.error('Erro ao resetar revisão:', error); + return false; + } + }; + return { ...hookOriginal, itensPorPrioridade: itensFiltrados, @@ -135,6 +170,7 @@ export const useItensPrioridadeFabricacaoFiltrado = () => { faseSelecionada, versaoAtual, onFiltroChange: handleFiltroChange, - incrementarRevisao + incrementarRevisao, + resetarRevisao }; }; diff --git a/src/pages/PrioridadesFabricacao.tsx b/src/pages/PrioridadesFabricacao.tsx index 2b2a851..df74928 100644 --- a/src/pages/PrioridadesFabricacao.tsx +++ b/src/pages/PrioridadesFabricacao.tsx @@ -8,7 +8,7 @@ import { useItensPrioridadeFabricacaoFiltrado } from '@/hooks/useItensPrioridade import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; -import { Plus, FileText, RefreshCw, Printer } from 'lucide-react'; +import { Plus, FileText, RefreshCw, Printer, X } from 'lucide-react'; import { toast } from 'sonner'; const PrioridadesFabricacao = () => { @@ -25,7 +25,8 @@ const PrioridadesFabricacao = () => { faseSelecionada, versaoAtual, onFiltroChange, - incrementarRevisao + incrementarRevisao, + resetarRevisao } = useItensPrioridadeFabricacaoFiltrado(); const [showPecaSelector, setShowPecaSelector] = useState(false); @@ -53,6 +54,13 @@ const PrioridadesFabricacao = () => { await refetch(); }; + const handleResetarRevisao = async () => { + if (!ofSelecionada || !faseSelecionada) return; + if (window.confirm(`Deseja resetar o número de revisão desta lista de prioridades (OF: ${ofSelecionada} - Fase: ${faseSelecionada}) para 0?`)) { + await resetarRevisao(0); + } + }; + const generateTickBoxesHTML = (quantity: number): string => { if (!quantity || quantity <= 0) return ''; @@ -132,7 +140,10 @@ const PrioridadesFabricacao = () => { } let revisaoParaImprimir = versaoAtual?.revisao || 0; - if (window.confirm(`Deseja gerar uma nova revisão (Rev. ${(versaoAtual?.revisao || 0) + 1}) para esta impressão?`)) { + const querSubir = window.confirm( + `Deseja incrementar a revisão para Rev. ${(versaoAtual?.revisao || 0) + 1} para esta impressão?\n\n- Clique em OK para subir a revisão para Rev. ${(versaoAtual?.revisao || 0) + 1}\n- Clique em Cancelar para manter a revisão atual (Rev. ${versaoAtual?.revisao || 0})` + ); + if (querSubir) { const sucesso = await incrementarRevisao(); if (sucesso) { revisaoParaImprimir += 1; @@ -425,6 +436,14 @@ const PrioridadesFabricacao = () => {
Revisão: {versaoAtual.revisao} +
)} @@ -453,7 +472,10 @@ const PrioridadesFabricacao = () => { variant="outline" size="sm" onClick={async () => { - if (window.confirm(`Deseja gerar uma nova revisão (Rev. ${(versaoAtual?.revisao || 0) + 1}) para este PDF?`)) { + const querSubir = window.confirm( + `Deseja incrementar a revisão para Rev. ${(versaoAtual?.revisao || 0) + 1} antes de gerar o PDF?\n\n- Clique em OK para subir a revisão para Rev. ${(versaoAtual?.revisao || 0) + 1}\n- Clique em Cancelar para manter a revisão atual (Rev. ${versaoAtual?.revisao || 0})` + ); + if (querSubir) { await incrementarRevisao(); } setShowPrioridadesPDF(true); @@ -511,6 +533,7 @@ const PrioridadesFabricacao = () => { ofSelecionada={ofSelecionada} faseSelecionada={faseSelecionada} versaoAtual={versaoAtual} + onIncrementarRevisao={incrementarRevisao} />