From e8488df615e656b32da0a970b35fa5eddb1fb9ad Mon Sep 17 00:00:00 2001 From: Srinath Date: Mon, 16 Feb 2026 18:30:58 +0530 Subject: [PATCH] Added Hold data edit funtionalies --- .../ComboSalesBillTable.jsx | 52 ++++++++++++++++--- 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/src/Pages/BookingScreen/Components/BSBillingTables/ComboSalesBillTable/ComboSalesBillTable.jsx b/src/Pages/BookingScreen/Components/BSBillingTables/ComboSalesBillTable/ComboSalesBillTable.jsx index f25d3f5..9d79e2a 100644 --- a/src/Pages/BookingScreen/Components/BSBillingTables/ComboSalesBillTable/ComboSalesBillTable.jsx +++ b/src/Pages/BookingScreen/Components/BSBillingTables/ComboSalesBillTable/ComboSalesBillTable.jsx @@ -125,7 +125,6 @@ const ComboSalesBillTable = () => { const [PreviousdataLength, setPreviousdataLength] = useState(); const BookingTypeBoth = useSelector(GlobalBookingTypeBoth); const OrderType = useSelector(GlobalOrderType); - console.log(PreviousOrderLength, 'PreviousOrderLength'); const GlobEstBooking = useSelector(GlobalEstimateBooking); const GlobalExtraCharge = useSelector(globalExtraTotalAmount); const OfferFreeProduct = useSelector(GlobalFreeProdList, shallowEqual); @@ -216,6 +215,48 @@ const ComboSalesBillTable = () => { } } }, [tableOptions]); + + // Merge same items in hold order + useEffect(() => { + if (OrderType === 'Hold' && tableData?.length > 0) { + const mergedData = []; + const processedIds = new Set(); + + tableData.forEach((item) => { + const key = `${item.InwardDtlId}-${item.BookingTypeName}-${item.OrderRate}`; + + if (processedIds.has(key)) return; + + // Find all items with same InwardDtlId, BookingTypeName, and OrderRate + const sameItems = tableData.filter( + (i) => + i.InwardDtlId === item.InwardDtlId && + i.BookingTypeName === item.BookingTypeName && + i.OrderRate === item.OrderRate + ); + + if (sameItems.length > 1) { + // Merge quantities + const totalQty = sameItems.reduce((sum, i) => sum + i.OrderQty, 0); + const mergedItem = { + ...sameItems[0], + OrderQty: totalQty, + TotalAmt: totalQty * item.OrderRate, + TaxAmt: ((totalQty * item.OrderRate * item.TaxPercentage) / (100 + item.TaxPercentage)), + }; + mergedData.push(mergedItem); + } else { + mergedData.push(item); + } + + processedIds.add(key); + }); + if (mergedData.length !== tableData.length) { + dispatch(changeOrderCardDetails(mergedData)); + } + } + }, [tableData?.length, OrderType]); + useEffect(() => { if (SelectedFont) { WebFont.load({ @@ -328,7 +369,7 @@ const ComboSalesBillTable = () => { if (OtherServicesglobal && value.Type == 'OS' && value.ServiceType == 'I') { setEditQuantity(false); } else { - if (value?.SalesId) { + if (value?.SalesId && OrderType !== 'Hold') { setEditQuantity(false); } else { setEditQuantity(true); @@ -341,7 +382,7 @@ const ComboSalesBillTable = () => { if (OtherServicesglobal && value.Type == 'OS' && value.ServiceType == 'I') { setEditQtyCombo(false); } else { - if (value?.SalesId) { + if (value?.SalesId && OrderType !== 'Hold') { setEditQtyCombo(false); } else { setEditQtyCombo(true); @@ -355,7 +396,7 @@ const ComboSalesBillTable = () => { if (OtherServicesglobal && value.Type == 'OS' && value.ServiceType == 'I') { setEditRateCombo(false); } else { - if (value?.SalesId) { + if (value?.SalesId && OrderType !== 'Hold') { setEditRateCombo(false); } else { setEditRateCombo(true); @@ -2172,7 +2213,6 @@ const ComboSalesBillTable = () => { tableOptions, ]); - console.log(combinedTableData, 'combinedTableData', tableData); const displayTableData = BillOrderPre === 'N' ? [...combinedTableData].reverse() : combinedTableData; @@ -2379,7 +2419,7 @@ const ComboSalesBillTable = () => { ? 'wheat' : 'inherit' : 'none', - background: row?.SalesId + background: row?.SalesId && OrderType !== 'Hold' ? 'rgb(243, 248, 213)' : GlobEstBooking === 'ParEst' && GlobProdwisedata?.includes(