feat: update requisition approval process in 'Almoxarifado' to prevent approval with stock issues, enhance error handling, and conditionally render approval button based on stock availability

This commit is contained in:
2025-12-22 14:20:36 -03:00
parent 7ccca5c233
commit 743d165af3
2 changed files with 28 additions and 44 deletions

View File

@@ -208,14 +208,23 @@
async function confirmarAprovar() {
if (!requisicaoParaAprovar) return;
// Não permitir aprovação se houver problemas de estoque
if (problemasEstoqueAprovar.length > 0) {
return;
}
try {
processandoAprovar = true;
await client.mutation(api.almoxarifado.aprovarRequisicao, { id: requisicaoParaAprovar });
mostrarMensagem('success', 'Requisição aprovada com sucesso!');
fecharModalAprovar();
} catch (error: unknown) {
const message = error instanceof Error ? error.message : 'Erro ao aprovar requisição';
mostrarMensagem('error', message);
// Silenciar erros de estoque insuficiente (já verificados no frontend)
const errorMessage = error instanceof Error ? error.message : String(error);
if (!errorMessage.includes('Estoque insuficiente')) {
const message = error instanceof Error ? error.message : 'Erro ao aprovar requisição';
mostrarMensagem('error', message);
}
} finally {
processandoAprovar = false;
}
@@ -929,19 +938,21 @@
>
Cancelar
</button>
<button
class="btn btn-success btn-lg min-w-[200px] shadow-lg hover:shadow-xl"
onclick={confirmarAprovar}
disabled={processandoAprovar}
>
{#if processandoAprovar}
<span class="loading loading-spinner loading-sm"></span>
Aprovando...
{:else}
<CheckCircle class="h-5 w-5" />
Confirmar Aprovação
{/if}
</button>
{#if problemasEstoqueAprovar.length === 0}
<button
class="btn btn-success btn-lg min-w-[200px] shadow-lg hover:shadow-xl"
onclick={confirmarAprovar}
disabled={processandoAprovar}
>
{#if processandoAprovar}
<span class="loading loading-spinner loading-sm"></span>
Aprovando...
{:else}
<CheckCircle class="h-5 w-5" />
Confirmar Aprovação
{/if}
</button>
{/if}
</div>
</div>
</div>