import { useState } from "react"; import api from "../services/api"; /** * Hook para gerenciar operações de honorários */ export const useHonorarios = (processoId: string) => { const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); /** * Adiciona um novo honorário */ const addHonorario = async (data: any) => { setIsLoading(true); setError(null); try { // Validações if (!data.formaPagamento) { throw new Error("Forma de pagamento é obrigatória"); } // Preparar dados const payload = { processoId, formaPagamento: data.formaPagamento, status: data.status || "PENDENTE", dataVencimento: data.dataVencimento || new Date(), observacoes: data.observacoes || null, valorFixo: data.valorFixo ? Number(data.valorFixo) : null, percentualCausa: data.percentualCausa ? Number(data.percentualCausa) : null, percentualExito: data.percentualExito ? Number(data.percentualExito) : null, valorEntrada: data.valorEntrada ? Number(data.valorEntrada) : null, numeroParcelas: data.numeroParcelas ? Number(data.numeroParcelas) : 1, valorParcela: data.valorParcela ? Number(data.valorParcela) : null, diaVencimento: data.diaVencimento ? Number(data.diaVencimento) : 10, }; // Fazer requisição const response = await api.post( `/processos/${processoId}/honorarios`, payload, ); return response.data; } catch (err: any) { const errorMsg = err.response?.data?.details || err.response?.data?.error || err.message || "Erro ao adicionar honorário"; setError(errorMsg); throw new Error(errorMsg); } finally { setIsLoading(false); } }; /** * Atualiza um honorário existente */ const updateHonorario = async ({ id, data }: { id: string; data: any }) => { setIsLoading(true); setError(null); try { // Preparar dados const payload = { formaPagamento: data.formaPagamento, status: data.status, dataVencimento: data.dataVencimento, observacoes: data.observacoes, valorFixo: data.valorFixo ? Number(data.valorFixo) : null, percentualCausa: data.percentualCausa ? Number(data.percentualCausa) : null, percentualExito: data.percentualExito ? Number(data.percentualExito) : null, valorEntrada: data.valorEntrada ? Number(data.valorEntrada) : null, numeroParcelas: data.numeroParcelas ? Number(data.numeroParcelas) : 1, valorParcela: data.valorParcela ? Number(data.valorParcela) : null, diaVencimento: data.diaVencimento ? Number(data.diaVencimento) : 10, }; // Fazer requisição const response = await api.put(`/honorarios/${id}`, payload); return response.data; } catch (err: any) { const errorMsg = err.response?.data?.error || err.message || "Erro ao atualizar honorário"; setError(errorMsg); throw new Error(errorMsg); } finally { setIsLoading(false); } }; /** * Remove um honorário */ const deleteHonorario = async (id: string) => { setIsLoading(true); setError(null); try { await api.delete(`/honorarios/${id}`); } catch (err: any) { const errorMsg = err.response?.data?.error || err.message || "Erro ao excluir honorário"; setError(errorMsg); throw new Error(errorMsg); } finally { setIsLoading(false); } }; /** * Busca todos os honorários do processo */ const getHonorarios = async () => { setIsLoading(true); setError(null); try { const response = await api.get(`/processos/${processoId}/honorarios`); return response.data; } catch (err: any) { const errorMsg = err.response?.data?.error || err.message || "Erro ao buscar honorários"; setError(errorMsg); throw new Error(errorMsg); } finally { setIsLoading(false); } }; // Adicionar função para atualizar parcela const updateParcela = async ({ id, data }: { id: string; data: any }) => { setIsLoading(true); setError(null); try { const response = await api.put(`/honorarios/parcelas/${id}`, data); return response.data; } catch (err: any) { const errorMsg = err.response?.data?.error || err.message || "Erro ao atualizar parcela"; setError(errorMsg); throw new Error(errorMsg); } finally { setIsLoading(false); } }; return { addHonorario, updateHonorario, deleteHonorario, getHonorarios, isLoading, error, updateParcela, }; };