From 334391eb38251332f421510b313a404efec85311 Mon Sep 17 00:00:00 2001 From: Josh Date: Sun, 31 Jul 2022 18:50:11 +1000 Subject: [PATCH] Corrected double stacking of instruction items --- typescript/dredgepos.orderScreen.ts | 33 +++++++++++++++++------------ 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/typescript/dredgepos.orderScreen.ts b/typescript/dredgepos.orderScreen.ts index 8777c5c..fec6d1c 100644 --- a/typescript/dredgepos.orderScreen.ts +++ b/typescript/dredgepos.orderScreen.ts @@ -116,15 +116,15 @@ const navigatePage = (direction: number, button: JQuery) => { const getOrderBox = () => $('.orderBoxTable tbody') const goToNextPage = (e: JQuery.TriggeredEvent) => navigatePage(1, $(e.target)) const goToPrevPage = (e: JQuery.TriggeredEvent) => navigatePage(-1, $(e.target)) - + const setItemQty = (orderItem: orderItem, qty: number) => { if(!orderItem || !OrderScreen.order_items.find(existingItem => orderItem.id == existingItem.id)) return; - + const instructionIds = getInstructionItems(orderItem.id).map(orderItem => orderItem.id) - + if(qty < 1){ const newItems = OrderScreen.order_items.filter(existingOrderItem => existingOrderItem.id != orderItem.id) - + OrderScreen.selected_item_ids = array_remove(OrderScreen.selected_item_ids, orderItem.id) if(orderItem.item.item_type == "item") { const lastItem = newItems.filter(orderItem => orderItem.item.item_type == "item")?.last() @@ -133,7 +133,7 @@ const setItemQty = (orderItem: orderItem, qty: number) => { setOrderItems(newItems) return; } - + const newItems = OrderScreen.order_items.map(existingOrderItem => { if(existingOrderItem.id == orderItem.id){ existingOrderItem.qty = qty @@ -200,13 +200,13 @@ const getParentItem = (orderItemId: number, itemList:orderItem[]) => { const getInstructionItems = (orderItemId: number) => { const itemIndex = OrderScreen.order_items.findIndex(orderItem => orderItem.id === orderItemId); - if(!OrderScreen.order_items[itemIndex+1] - || OrderScreen.order_items[itemIndex+1].item.item_type == "item" + if(!OrderScreen.order_items[itemIndex+1] + || OrderScreen.order_items[itemIndex+1].item.item_type == "item" || OrderScreen.order_items[itemIndex].item.item_type == "instruction" ) return [OrderScreen.order_items[itemIndex]] - - + + const nextItem = OrderScreen.order_items .filter((orderItem, index) => index > itemIndex && orderItem.item.item_type === 'item') @@ -224,11 +224,18 @@ const getLastInstructionItem = (orderItemId: number) => getInstructionItems(orde const addInstructionToOrderBox = (instruction: orderItem) => { //If no items are added, then you can't add an instruction row. if(!OrderScreen.order_items.length) return - + const addAfter = OrderScreen.selected_item_ids.length - ? OrderScreen.selected_item_ids.map(selectedItemId => getLastInstructionItem(selectedItemId).id).unique() + ? OrderScreen.selected_item_ids + .filter(selectedItemId => { + const orderItem = OrderScreen.order_items.find(orderItem => orderItem.id == selectedItemId) + const parentItem = getParentItem(selectedItemId, OrderScreen.order_items) + return !(orderItem.item.item_type == "instruction" && OrderScreen.selected_item_ids.includes(parentItem.id)) + }) + .map(selectedItemId => getLastInstructionItem(selectedItemId).id) + .unique() : OrderScreen.last_added_item_ids.map(itemId => getLastInstructionItem(itemId).id) - + const newItems = OrderScreen.order_items.collect(existingItem => { const newInstruction = createNewOrderItem(instruction.item, instruction.qty, instruction.print_group) addOrderItemsToPulse(newInstruction.id) @@ -394,7 +401,7 @@ const itemRowClicked = (e: JQuery.TriggeredEvent) => { OrderScreen.selected_item_ids = array_remove(OrderScreen.selected_item_ids, orderItem.id) getInstructionItems(orderItem.id).forEach(instruction => OrderScreen.selected_item_ids = array_remove(OrderScreen.selected_item_ids, instruction.id)) } - + renderOrderBox() }