feat: controle manual de revisao no Kanban de prioridades ao gerar relatorios
This commit is contained in:
@@ -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
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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();
|
||||||
Reference in New Issue
Block a user