feat: botao discreto para resetar revisao e confirmacao flexivel ao gerar pdf e imprimir
This commit is contained in:
@@ -19,6 +19,7 @@ interface PrioridadesPDFProps {
|
|||||||
dataModificacao: string;
|
dataModificacao: string;
|
||||||
modificadoPor?: string;
|
modificadoPor?: string;
|
||||||
} | null;
|
} | null;
|
||||||
|
onIncrementarRevisao?: () => Promise<boolean>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const PrioridadesPDF: React.FC<PrioridadesPDFProps> = ({
|
export const PrioridadesPDF: React.FC<PrioridadesPDFProps> = ({
|
||||||
@@ -27,7 +28,8 @@ export const PrioridadesPDF: React.FC<PrioridadesPDFProps> = ({
|
|||||||
itensPorPrioridade,
|
itensPorPrioridade,
|
||||||
ofSelecionada,
|
ofSelecionada,
|
||||||
faseSelecionada,
|
faseSelecionada,
|
||||||
versaoAtual
|
versaoAtual,
|
||||||
|
onIncrementarRevisao
|
||||||
}) => {
|
}) => {
|
||||||
const [isGenerating, setIsGenerating] = useState(false);
|
const [isGenerating, setIsGenerating] = useState(false);
|
||||||
const [isPrinting, setIsPrinting] = useState(false);
|
const [isPrinting, setIsPrinting] = useState(false);
|
||||||
@@ -76,6 +78,15 @@ export const PrioridadesPDF: React.FC<PrioridadesPDFProps> = ({
|
|||||||
return;
|
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 {
|
try {
|
||||||
setIsPrinting(true);
|
setIsPrinting(true);
|
||||||
await printProfessionalPDF('prioridades-pdf-content');
|
await printProfessionalPDF('prioridades-pdf-content');
|
||||||
|
|||||||
@@ -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 {
|
return {
|
||||||
...hookOriginal,
|
...hookOriginal,
|
||||||
itensPorPrioridade: itensFiltrados,
|
itensPorPrioridade: itensFiltrados,
|
||||||
@@ -135,6 +170,7 @@ export const useItensPrioridadeFabricacaoFiltrado = () => {
|
|||||||
faseSelecionada,
|
faseSelecionada,
|
||||||
versaoAtual,
|
versaoAtual,
|
||||||
onFiltroChange: handleFiltroChange,
|
onFiltroChange: handleFiltroChange,
|
||||||
incrementarRevisao
|
incrementarRevisao,
|
||||||
|
resetarRevisao
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { useItensPrioridadeFabricacaoFiltrado } from '@/hooks/useItensPrioridade
|
|||||||
import { Button } from '@/components/ui/button';
|
import { Button } from '@/components/ui/button';
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||||
import { Badge } from '@/components/ui/badge';
|
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';
|
import { toast } from 'sonner';
|
||||||
|
|
||||||
const PrioridadesFabricacao = () => {
|
const PrioridadesFabricacao = () => {
|
||||||
@@ -25,7 +25,8 @@ const PrioridadesFabricacao = () => {
|
|||||||
faseSelecionada,
|
faseSelecionada,
|
||||||
versaoAtual,
|
versaoAtual,
|
||||||
onFiltroChange,
|
onFiltroChange,
|
||||||
incrementarRevisao
|
incrementarRevisao,
|
||||||
|
resetarRevisao
|
||||||
} = useItensPrioridadeFabricacaoFiltrado();
|
} = useItensPrioridadeFabricacaoFiltrado();
|
||||||
|
|
||||||
const [showPecaSelector, setShowPecaSelector] = useState(false);
|
const [showPecaSelector, setShowPecaSelector] = useState(false);
|
||||||
@@ -53,6 +54,13 @@ const PrioridadesFabricacao = () => {
|
|||||||
await refetch();
|
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 => {
|
const generateTickBoxesHTML = (quantity: number): string => {
|
||||||
if (!quantity || quantity <= 0) return '';
|
if (!quantity || quantity <= 0) return '';
|
||||||
|
|
||||||
@@ -132,7 +140,10 @@ const PrioridadesFabricacao = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let revisaoParaImprimir = versaoAtual?.revisao || 0;
|
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();
|
const sucesso = await incrementarRevisao();
|
||||||
if (sucesso) {
|
if (sucesso) {
|
||||||
revisaoParaImprimir += 1;
|
revisaoParaImprimir += 1;
|
||||||
@@ -425,6 +436,14 @@ const PrioridadesFabricacao = () => {
|
|||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<span className="text-sm font-medium">Revisão:</span>
|
<span className="text-sm font-medium">Revisão:</span>
|
||||||
<Badge variant="outline">{versaoAtual.revisao}</Badge>
|
<Badge variant="outline">{versaoAtual.revisao}</Badge>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={handleResetarRevisao}
|
||||||
|
className="h-5 w-5 inline-flex items-center justify-center rounded-full text-muted-foreground hover:text-red-600 hover:bg-muted transition-colors ml-0.5"
|
||||||
|
title="Resetar revisão para 0"
|
||||||
|
>
|
||||||
|
<X className="h-3 w-3" />
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
)}
|
)}
|
||||||
@@ -453,7 +472,10 @@ const PrioridadesFabricacao = () => {
|
|||||||
variant="outline"
|
variant="outline"
|
||||||
size="sm"
|
size="sm"
|
||||||
onClick={async () => {
|
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();
|
await incrementarRevisao();
|
||||||
}
|
}
|
||||||
setShowPrioridadesPDF(true);
|
setShowPrioridadesPDF(true);
|
||||||
@@ -511,6 +533,7 @@ const PrioridadesFabricacao = () => {
|
|||||||
ofSelecionada={ofSelecionada}
|
ofSelecionada={ofSelecionada}
|
||||||
faseSelecionada={faseSelecionada}
|
faseSelecionada={faseSelecionada}
|
||||||
versaoAtual={versaoAtual}
|
versaoAtual={versaoAtual}
|
||||||
|
onIncrementarRevisao={incrementarRevisao}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</StandardPageLayout>
|
</StandardPageLayout>
|
||||||
|
|||||||
Reference in New Issue
Block a user