feat: controle manual de revisao no Kanban de prioridades ao gerar relatorios

This commit is contained in:
2026-09-02 15:03:08 +00:00
parent b201e67291
commit 9fb29d55a8
3 changed files with 61 additions and 4 deletions
@@ -92,12 +92,49 @@ export const useItensPrioridadeFabricacaoFiltrado = () => {
setFaseSelecionada(novaFase); setFaseSelecionada(novaFase);
}; };
const incrementarRevisao = async () => {
if (!ofSelecionada || !faseSelecionada) return false;
try {
const novaRevisao = (versaoAtual?.revisao || 0) + 1;
const dataModificacao = new Date().toISOString();
const { error } = await supabase
.from('prioridades_fabricacao')
.update({
revisao: novaRevisao,
data_ultima_modificacao: dataModificacao
})
.eq('of_number', ofSelecionada)
.eq('etapa_fase', faseSelecionada);
if (error) {
console.error('Erro ao incrementar revisão no DB:', error);
toast.error('Erro ao registrar nova revisão.');
return false;
}
setVersaoAtual(prev => ({
...prev!,
revisao: novaRevisao,
dataModificacao: dataModificacao
}));
toast.success(`Revisão atualizada para ${novaRevisao}`);
return true;
} catch (error) {
console.error('Erro ao incrementar revisão:', error);
return false;
}
};
return { return {
...hookOriginal, ...hookOriginal,
itensPorPrioridade: itensFiltrados, itensPorPrioridade: itensFiltrados,
ofSelecionada, ofSelecionada,
faseSelecionada, faseSelecionada,
versaoAtual, versaoAtual,
onFiltroChange: handleFiltroChange onFiltroChange: handleFiltroChange,
incrementarRevisao
}; };
}; };
+17 -3
View File
@@ -24,7 +24,8 @@ const PrioridadesFabricacao = () => {
ofSelecionada, ofSelecionada,
faseSelecionada, faseSelecionada,
versaoAtual, versaoAtual,
onFiltroChange onFiltroChange,
incrementarRevisao
} = useItensPrioridadeFabricacaoFiltrado(); } = useItensPrioridadeFabricacaoFiltrado();
const [showPecaSelector, setShowPecaSelector] = useState(false); const [showPecaSelector, setShowPecaSelector] = useState(false);
@@ -90,6 +91,14 @@ const PrioridadesFabricacao = () => {
return; return;
} }
let revisaoParaImprimir = versaoAtual?.revisao || 0;
if (window.confirm(`Deseja gerar uma nova revisão (Rev. ${(versaoAtual?.revisao || 0) + 1}) para esta impressão?`)) {
const sucesso = await incrementarRevisao();
if (sucesso) {
revisaoParaImprimir += 1;
}
}
try { try {
// Criar nova janela para impressão // Criar nova janela para impressão
const printWindow = window.open('', '_blank'); const printWindow = window.open('', '_blank');
@@ -238,7 +247,7 @@ const PrioridadesFabricacao = () => {
</div> </div>
<div class="text-right"> <div class="text-right">
<p class="font-semibold text-sm">Data de Emissão: <span class="font-normal">${dataAtual}</span> <p class="font-semibold text-sm">Data de Emissão: <span class="font-normal">${dataAtual}</span>
${versaoAtual ? `<span class="ml-2 text-gray-500 font-medium">Rev. ${versaoAtual.revisao}</span>` : ''} <span class="ml-2 text-gray-500 font-medium">Rev. ${revisaoParaImprimir}</span>
</p> </p>
</div> </div>
</div> </div>
@@ -390,7 +399,12 @@ const PrioridadesFabricacao = () => {
<Button <Button
variant="outline" variant="outline"
size="sm" size="sm"
onClick={() => setShowPrioridadesPDF(true)} onClick={async () => {
if (window.confirm(`Deseja gerar uma nova revisão (Rev. ${(versaoAtual?.revisao || 0) + 1}) para este PDF?`)) {
await incrementarRevisao();
}
setShowPrioridadesPDF(true);
}}
disabled={!ofSelecionada || !faseSelecionada} disabled={!ofSelecionada || !faseSelecionada}
> >
<FileText className="h-4 w-4 mr-2" /> <FileText className="h-4 w-4 mr-2" />
@@ -0,0 +1,6 @@
-- Remover o gatilho que incrementava automaticamente a revisão do quadro de prioridades
DROP TRIGGER IF EXISTS trigger_increment_prioridade_fabricacao_revision ON "TS_ERP".itens_prioridade_fabricacao;
DROP TRIGGER IF EXISTS trigger_increment_prioridade_fabricacao_revision ON public.itens_prioridade_fabricacao;
-- Remover a função associada
DROP FUNCTION IF EXISTS public.increment_prioridade_fabricacao_revision();