hotfix ticket refund #1930
|
@ -14,7 +14,11 @@ module.exports = Self => {
|
|||
}
|
||||
|
||||
try {
|
||||
const salesFilter = {
|
||||
let sales;
|
||||
let services;
|
||||
|
||||
if (salesIds && salesIds.length) {
|
||||
sales = await models.Sale.find({
|
||||
where: {id: {inq: salesIds}},
|
||||
include: {
|
||||
relation: 'components',
|
||||
|
@ -22,9 +26,18 @@ module.exports = Self => {
|
|||
fields: ['saleFk', 'componentFk', 'value']
|
||||
}
|
||||
}
|
||||
};
|
||||
const sales = await models.Sale.find(salesFilter, myOptions);
|
||||
let ticketsIds = [...new Set(sales.map(sale => sale.ticketFk))];
|
||||
}, myOptions);
|
||||
}
|
||||
|
||||
if (servicesIds && servicesIds.length) {
|
||||
services = await models.TicketService.find({
|
||||
where: {id: {inq: servicesIds}}
|
||||
}, myOptions);
|
||||
}
|
||||
|
||||
let ticketsIds = sales ?
|
||||
[...new Set(sales.map(sale => sale.ticketFk))] :
|
||||
[...new Set(services.map(service => service.ticketFk))];
|
||||
|
||||
const mappedTickets = new Map();
|
||||
|
||||
|
@ -41,7 +54,7 @@ module.exports = Self => {
|
|||
newTickets.push(newTicket);
|
||||
mappedTickets.set(ticketId, newTicket.id);
|
||||
}
|
||||
|
||||
if (sales) {
|
||||
for (const sale of sales) {
|
||||
const newTicketId = mappedTickets.get(sale.ticketFk);
|
||||
|
||||
|
@ -60,13 +73,9 @@ module.exports = Self => {
|
|||
|
||||
await models.SaleComponent.create(components, myOptions);
|
||||
}
|
||||
}
|
||||
|
||||
if (servicesIds && servicesIds.length) {
|
||||
const servicesFilter = {
|
||||
where: {id: {inq: servicesIds}}
|
||||
};
|
||||
const services = await models.TicketService.find(servicesFilter, myOptions);
|
||||
|
||||
if (services) {
|
||||
for (const service of services) {
|
||||
const newTicketId = mappedTickets.get(service.ticketFk);
|
||||
|
||||
|
|
|
@ -6,7 +6,6 @@ module.exports = Self => {
|
|||
{
|
||||
arg: 'salesIds',
|
||||
type: ['number'],
|
||||
required: true
|
||||
},
|
||||
{
|
||||
arg: 'servicesIds',
|
||||
|
|
|
@ -44,24 +44,7 @@ describe('Sale refund()', () => {
|
|||
|
||||
const tickets = await models.Sale.refund(ctx, salesIds, servicesIds, withWarehouse, options);
|
||||
|
||||
const refundedTicket = await models.Ticket.findOne({
|
||||
where: {
|
||||
id: tickets[0].id
|
||||
},
|
||||
include: [
|
||||
{
|
||||
relation: 'ticketSales',
|
||||
scope: {
|
||||
include: {
|
||||
relation: 'components'
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
relation: 'ticketServices',
|
||||
}
|
||||
]
|
||||
}, options);
|
||||
const refundedTicket = await getTicketRefund(tickets[0].id, options);
|
||||
const ticketsAfter = await models.Ticket.find({}, options);
|
||||
const salesLength = refundedTicket.ticketSales().length;
|
||||
const componentsLength = refundedTicket.ticketSales()[0].components().length;
|
||||
|
@ -77,4 +60,42 @@ describe('Sale refund()', () => {
|
|||
throw e;
|
||||
}
|
||||
});
|
||||
|
||||
it('should create a ticket without sales', async() => {
|
||||
const servicesIds = [4];
|
||||
const tx = await models.Sale.beginTransaction({});
|
||||
const options = {transaction: tx};
|
||||
try {
|
||||
const tickets = await models.Sale.refund(ctx, null, servicesIds, withWarehouse, options);
|
||||
const refundedTicket = await getTicketRefund(tickets[0].id, options);
|
||||
|
||||
expect(refundedTicket).toBeDefined();
|
||||
|
||||
await tx.rollback();
|
||||
} catch (e) {
|
||||
await tx.rollback();
|
||||
throw e;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
async function getTicketRefund(id, options) {
|
||||
return models.Ticket.findOne({
|
||||
where: {
|
||||
id
|
||||
},
|
||||
include: [
|
||||
{
|
||||
relation: 'ticketSales',
|
||||
scope: {
|
||||
include: {
|
||||
relation: 'components'
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
relation: 'ticketServices',
|
||||
}
|
||||
]
|
||||
}, options);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue