fix payment customer and dashboard settings
Build & Deploy / Build & Push Docker Image (push) Successful in 12m39s
Test / Type Check (all packages) (push) Successful in 5m8s
Build & Deploy / Deploy to VPS (push) Successful in 7s
Test / API Unit Tests (push) Failing after 4m24s
Test / Homepage Unit Tests (push) Successful in 3m27s
Test / Storefront Unit Tests (push) Successful in 4m48s
Test / Admin Unit Tests (push) Successful in 3m0s
Test / Dashboard Unit Tests (push) Successful in 4m18s
Test / API Integration Tests (push) Failing after 4m34s
Build & Deploy / Build & Push Docker Image (push) Successful in 12m39s
Test / Type Check (all packages) (push) Successful in 5m8s
Build & Deploy / Deploy to VPS (push) Successful in 7s
Test / API Unit Tests (push) Failing after 4m24s
Test / Homepage Unit Tests (push) Successful in 3m27s
Test / Storefront Unit Tests (push) Successful in 4m48s
Test / Admin Unit Tests (push) Successful in 3m0s
Test / Dashboard Unit Tests (push) Successful in 4m18s
Test / API Integration Tests (push) Failing after 4m34s
This commit is contained in:
@@ -32,12 +32,15 @@ export function findPaymentOrThrow(paymentId: string, companyId: string, reserva
|
||||
export function findReservationOrThrow(id: string, companyId: string) {
|
||||
return prisma.reservation.findFirstOrThrow({
|
||||
where: { id, companyId },
|
||||
include: { vehicle: true, customer: true },
|
||||
include: { vehicle: true, customer: true, rentalPayments: true },
|
||||
})
|
||||
}
|
||||
|
||||
export function findReservation(id: string, companyId: string) {
|
||||
return prisma.reservation.findFirstOrThrow({ where: { id, companyId } })
|
||||
return prisma.reservation.findFirstOrThrow({
|
||||
where: { id, companyId },
|
||||
include: { rentalPayments: true },
|
||||
})
|
||||
}
|
||||
|
||||
export function markPaymentSucceeded(id: string) {
|
||||
@@ -48,8 +51,26 @@ export function markPaymentFailed(query: { amanpayTransactionId?: string; paypal
|
||||
return prisma.rentalPayment.updateMany({ where: query, data: { status: 'FAILED' } })
|
||||
}
|
||||
|
||||
export function incrementReservationPaid(reservationId: string, amount: number) {
|
||||
return prisma.reservation.update({ where: { id: reservationId }, data: { paymentStatus: 'PAID', paidAmount: { increment: amount } } })
|
||||
export function incrementReservationPaid(reservationId: string, _amount: number) {
|
||||
return prisma.$transaction(async (tx) => {
|
||||
const reservation = await tx.reservation.findUniqueOrThrow({
|
||||
where: { id: reservationId },
|
||||
include: {
|
||||
rentalPayments: {
|
||||
where: { type: 'CHARGE', status: 'SUCCEEDED' },
|
||||
select: { amount: true },
|
||||
},
|
||||
},
|
||||
})
|
||||
const paidAmount = reservation.rentalPayments.reduce((total, payment) => total + payment.amount, 0)
|
||||
return tx.reservation.update({
|
||||
where: { id: reservationId },
|
||||
data: {
|
||||
paidAmount,
|
||||
paymentStatus: paidAmount >= reservation.totalAmount ? 'PAID' : 'PARTIAL',
|
||||
},
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export function createPayment(data: {
|
||||
|
||||
Reference in New Issue
Block a user