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() {
const tickets = this.tickets;
const ticketCount = {};
const queueCondition = new QueueCondition(this.queues);
const ticketItems = {};
tickets.forEach((ticket) => {
const ticketItems = [];
ticket.items.forEach((item) => {
const item_id = item.item.item_queue?.id ?? item.item.id;
const currentItem = ticketItems[item_id];
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) => {
const item = items[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;
return {
id: queueItem.id,
queue_item_id: item.id,
title: queueItem.name,
image_url: item.item.image_url,
qty: item_qty,
qty: item_qty - queue_qty,
ticket: ticketCount[queueItem.id],
queue_condition: 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,
);
}
}