#7919 delete if ticketRefund #3091
|
@ -49,9 +49,12 @@ module.exports = Self => {
|
|||
where: {originalTicketFk: id}
|
||||
}, myOptions);
|
||||
|
||||
const hasRefund = !!ticketRefunds?.length;
|
||||
|
||||
const allDeleted = ticketRefunds.every(refund => refund.refundTicket().isDeleted);
|
||||
|
||||
if (ticketRefunds?.length && !allDeleted) {
|
||||
if (!hasRefund) await models.TicketRefund.destroyAll({refundTicketFk: id}, myOptions);
|
||||
|
||||
if (hasRefund && !allDeleted) {
|
||||
const notDeleted = [];
|
||||
for (const refund of ticketRefunds)
|
||||
if (!refund.refundTicket().isDeleted) notDeleted.push(refund.refundTicket().id);
|
||||
|
|
|
@ -113,5 +113,27 @@ describe('ticket setDeleted()', () => {
|
|||
|
||||
expect(error.message).not.toContain('Tickets with associated refunds');
|
||||
});
|
||||
|
||||
it('should delete the refund - original ticket relation', async() => {
|
||||
const tx = await models.Ticket.beginTransaction({});
|
||||
try {
|
||||
const options = {transaction: tx};
|
||||
|
||||
const ticketId = 24;
|
||||
const refundTicket = await models.TicketRefund.findOne({where: {refundTicketFk: ticketId}}, options);
|
||||
|
||||
expect(refundTicket).toBeTruthy();
|
||||
|
||||
await models.Ticket.setDeleted(ctx, ticketId, options);
|
||||
const removedRefundTicket = await models.TicketRefund.findOne({
|
||||
where: {refundTicketFk: ticketId}},
|
||||
options);
|
||||
|
||||
expect(removedRefundTicket).toBeNull();
|
||||
await tx.rollback();
|
||||
} catch (e) {
|
||||
await tx.rollback();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue
Si no es originalTicket entrará en el if y solo si existe en la tabla ticketRefund como refundTicket lo eliminará.