fix(SPG-1027): total ticket not match
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details

pull/115/head 1.2.8-alpha.3
shancheas 2024-11-21 18:28:25 +07:00
parent 60b5bcf638
commit 61045a39ab
1 changed files with 21 additions and 1 deletions

View File

@ -12,31 +12,51 @@ export class CustomerQueueItemListManager extends CustomerQueueManager {
} }
get data() { get data() {
const tickets = this.tickets; const tickets = this.tickets;
const ticketCount = {};
const queueCondition = new QueueCondition(this.queues); const queueCondition = new QueueCondition(this.queues);
const ticketItems = {}; const ticketItems = {};
tickets.forEach((ticket) => { tickets.forEach((ticket) => {
const ticketItems = [];
ticket.items.forEach((item) => { ticket.items.forEach((item) => {
const item_id = item.item.item_queue?.id ?? item.item.id; const item_id = item.item.item_queue?.id ?? item.item.id;
const currentItem = ticketItems[item_id]; const currentItem = ticketItems[item_id];
ticketItems[item_id] = currentItem ? [...currentItem, item] : [item]; ticketItems[item_id] = currentItem ? [...currentItem, item] : [item];
ticketItems.push(item_id);
});
const uniqueTicket = Array.from(new Set(ticketItems));
uniqueTicket.forEach((item_id) => {
ticketCount[item_id] = ticketCount[item_id]
? ticketCount[item_id] + 1
: 1;
}); });
}); });
return Object.values<QueueItemModel[]>(ticketItems).map((items) => { return Object.values<QueueItemModel[]>(ticketItems).map((items) => {
const item = items[0]; const item = items[0];
const item_qty = items.reduce((acc, item) => acc + item.qty, 0); const item_qty = items.reduce((acc, item) => acc + item.qty, 0);
const queue_qty = this.queueItemQty(items);
const queueItem = item.item.item_queue ?? item.item; const queueItem = item.item.item_queue ?? item.item;
return { return {
id: queueItem.id, id: queueItem.id,
queue_item_id: item.id, queue_item_id: item.id,
title: queueItem.name, title: queueItem.name,
image_url: item.item.image_url, image_url: item.item.image_url,
qty: item_qty, qty: item_qty - queue_qty,
ticket: ticketCount[queueItem.id],
queue_condition: queueCondition.condition(queueItem.id), queue_condition: queueCondition.condition(queueItem.id),
...queueCondition.condition(queueItem.id), ...queueCondition.condition(queueItem.id),
}; };
}); });
} }
private queueItemQty(queues: QueueItemModel[]) {
return queues.reduce(
(acc, item) => acc + item.queue.reduce((acc, q) => acc + q.qty, 0),
0,
);
}
} }