first commit
This commit is contained in:
commit
c9fb67e751
423 files changed
+53287
No files matched your search
@@ -0,0 +1,131 @@
|
||||
import { prisma } from "../config/database";
|
||||
import { Honorario, FormaPagamento, StatusPagamento } from "@prisma/client";
|
||||
|
||||
export class HonorarioRepository {
|
||||
async create(dados: any): Promise<Honorario> {
|
||||
try {
|
||||
// Criar honorário
|
||||
const honorario = await prisma.honorario.create({
|
||||
data: {
|
||||
processoId: dados.processoId,
|
||||
formaPagamento: dados.formaPagamento,
|
||||
status: dados.status || "PENDENTE",
|
||||
dataVencimento: new Date(dados.dataVencimento || new Date()),
|
||||
dataContrato: new Date(),
|
||||
observacoes: dados.observacoes || null,
|
||||
valorFixo: dados.valorFixo ? Number(dados.valorFixo) : null,
|
||||
percentualCausa: dados.percentualCausa
|
||||
? Number(dados.percentualCausa)
|
||||
: null,
|
||||
percentualExito: dados.percentualExito
|
||||
? Number(dados.percentualExito)
|
||||
: null,
|
||||
valorEntrada: dados.valorEntrada ? Number(dados.valorEntrada) : null,
|
||||
numeroParcelas: Number(dados.numeroParcelas || 1),
|
||||
valorParcela: dados.valorParcela ? Number(dados.valorParcela) : null,
|
||||
diaVencimento: Number(dados.diaVencimento || 10),
|
||||
},
|
||||
});
|
||||
|
||||
// Se for parcelado, criar parcelas
|
||||
if (
|
||||
honorario &&
|
||||
(honorario.formaPagamento === "PARCELADO" ||
|
||||
honorario.formaPagamento === "ENTRADA_MAIS_PARCELAS")
|
||||
) {
|
||||
const parcelas = [];
|
||||
const numParcelas = honorario.numeroParcelas;
|
||||
const valorParcela = honorario.valorParcela || 0;
|
||||
|
||||
for (let i = 1; i <= numParcelas; i++) {
|
||||
const dataVencimento = new Date(honorario.dataVencimento);
|
||||
dataVencimento.setMonth(dataVencimento.getMonth() + (i - 1));
|
||||
|
||||
parcelas.push({
|
||||
honorarioId: honorario.id,
|
||||
numeroParcela: i,
|
||||
valor: valorParcela,
|
||||
vencimento: dataVencimento,
|
||||
status: "PENDENTE" as StatusPagamento,
|
||||
});
|
||||
}
|
||||
|
||||
if (parcelas.length > 0) {
|
||||
await prisma.parcelaHonorario.createMany({
|
||||
data: parcelas,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Retornar honorário com parcelas
|
||||
return (await prisma.honorario.findUnique({
|
||||
where: { id: honorario.id },
|
||||
include: { parcelas: true },
|
||||
})) as Honorario;
|
||||
} catch (error) {
|
||||
console.error("Erro ao criar honorário:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async update(id: string, data: any): Promise<Honorario> {
|
||||
return await prisma.honorario.update({
|
||||
where: { id },
|
||||
data,
|
||||
include: { parcelas: true },
|
||||
});
|
||||
}
|
||||
|
||||
async updateParcela(id: string, data: any): Promise<void> {
|
||||
try {
|
||||
console.log("Dados recebidos para atualização:", { id, data });
|
||||
|
||||
await prisma.parcelaHonorario.update({
|
||||
where: { id },
|
||||
data: {
|
||||
status: data.status,
|
||||
valorPago: data.valorPago ? Number(data.valorPago) : null,
|
||||
dataPagamento: data.dataPagamento
|
||||
? new Date(data.dataPagamento)
|
||||
: null,
|
||||
comprovante: data.comprovante,
|
||||
observacoes: data.observacoes,
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("Erro ao atualizar parcela:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async updateParcela(id: string, data: any) {
|
||||
try {
|
||||
return await prisma.parcelaHonorario.update({
|
||||
where: { id },
|
||||
data: {
|
||||
status: data.status,
|
||||
valorPago: data.valorPago ? Number(data.valorPago) : null,
|
||||
dataPagamento: data.dataPagamento
|
||||
? new Date(data.dataPagamento)
|
||||
: null,
|
||||
comprovante: data.comprovante,
|
||||
observacoes: data.observacoes,
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("Erro ao atualizar parcela:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async delete(id: string): Promise<void> {
|
||||
await prisma.honorario.delete({ where: { id } });
|
||||
}
|
||||
|
||||
async findByProcesso(processoId: string): Promise<Honorario[]> {
|
||||
return await prisma.honorario.findMany({
|
||||
where: { processoId },
|
||||
include: { parcelas: true },
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user