diff --git a/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingTable2/BsBill2.jsx b/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingTable2/BsBill2.jsx index d66d9f2..b6b3808 100644 --- a/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingTable2/BsBill2.jsx +++ b/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingTable2/BsBill2.jsx @@ -301,7 +301,39 @@ const BsBill2 = () => { const calculatedOverAllQty = calculateOverAllQtyLimit(CartOrderDetails); if (calculatedOverAllQty + 1 > maxQtyLimit) { message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`); + return; + } + } else if (itemWiseLimitPreferenece) { + const inwardQtyMap = CartOrderDetails.reduce((acc, curr) => { + const inwardId = curr.InwardDtlId; + const qty = Number(curr.OrderQty) || 0; + + if (acc[inwardId]) { + acc[inwardId] += qty; + } else { + acc[inwardId] = qty; + } + + return acc; + }, {}); + + const currentInwardId = item?.InwardDtlId; + const addQty = 1; + + if (inwardQtyMap[currentInwardId]) { + inwardQtyMap[currentInwardId] += addQty; + } else { + inwardQtyMap[currentInwardId] = addQty; + } + + console.log("Final InwardDtlId Qty Map:", inwardQtyMap); + const isExceeded = Object.values(inwardQtyMap).some( + (qty) => qty > maxQtyLimit + ); + + if (isExceeded) { + message.warning(`Item Quantity Limit Exceeds than ${maxQtyLimit}`); return; } } diff --git a/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingTable5/BSBillingTable5.jsx b/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingTable5/BSBillingTable5.jsx index b0beabb..e0d3571 100644 --- a/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingTable5/BSBillingTable5.jsx +++ b/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingTable5/BSBillingTable5.jsx @@ -198,14 +198,12 @@ import CardPopover from '../StandardTable/Utils/CardPopover.jsx'; import UpiPopover from '../StandardTable/Utils/UpiPopOver.jsx'; import { useDateStore } from '../../../../../Features/BookingScreen/BookingData/DateStore.js'; import BillingTableSkeleton from '../../../../../Components/Skeleton/BillingTableSkeleton.jsx'; +import OtherServiceMobilePrint from '../../BookingFunctionality/OtherServiceMobilePrint.jsx'; // Jsx Files const OtherServicePrintStyle1 = lazy( () => import('../../../PrintTemplates/ThermalPrinter/OtherServicePrintStyle1.jsx') ); -const OtherServiceMobilePrint = lazy( - () => import('../../BookingFunctionality/OtherServiceMobilePrint.jsx') -); const BSOtherServiceClaim = lazy( () => import('../../UtillComponents/BSOtherServiceClaim.jsx') ); diff --git a/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingTable5/BsBill.jsx b/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingTable5/BsBill.jsx index 63268a0..e531f8b 100644 --- a/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingTable5/BsBill.jsx +++ b/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingTable5/BsBill.jsx @@ -2161,6 +2161,39 @@ const BsBill = () => { setMessageType('warning'); return; } + } else if (itemWiseLimitPreferenece) { + const inwardQtyMap = TableData.reduce((acc, curr) => { + const inwardId = curr?.InwardDtlId; + const qty = Number(curr?.OrderQty) || 0; + + if (acc[inwardId]) { + acc[inwardId] += qty; + } else { + acc[inwardId] = qty; + } + + return acc; + }, {}); + + const currentInwardId = item?.InwardDtlId; + const addQty = 1; + + if (inwardQtyMap[currentInwardId]) { + inwardQtyMap[currentInwardId] += addQty; + } else { + inwardQtyMap[currentInwardId] = addQty; + } + + console.log("Final InwardDtlId Qty Map:", inwardQtyMap); + const isExceeded = Object.values(inwardQtyMap).some( + (qty) => qty > maxQtyLimit + ); + + if (isExceeded) { + setMessageData(`Item Quantity Limit Exceeds than ${maxQtyLimit}`); + setMessageType('warning'); + return; + } } } const OtherOrderDatas = TableData?.filter( diff --git a/src/Pages/BookingScreen/Components/BSCombo/BSC1Search.jsx b/src/Pages/BookingScreen/Components/BSCombo/BSC1Search.jsx index 5b2202b..54010bd 100644 --- a/src/Pages/BookingScreen/Components/BSCombo/BSC1Search.jsx +++ b/src/Pages/BookingScreen/Components/BSCombo/BSC1Search.jsx @@ -721,7 +721,7 @@ export default function BSC1Search(props) { WithoutTaxRate: availableFreeQty * item.OrderRate - (availableFreeQty * item.OrderRate * item.TaxPercentage) / - 100, + 100, Offer: availableFreeQty * item.OrderRate, }; @@ -770,7 +770,7 @@ export default function BSC1Search(props) { ((existingPaidItem.OrderQty + excessQty) * item.OrderRate * item.TaxPercentage) / - 100, + 100, }; ModifiedData.push(mergedPaidItem); @@ -805,7 +805,7 @@ export default function BSC1Search(props) { data?.InwardDtlId === item?.InwardDtlId && data?.ProdId === item?.ProdId && data?.OfferMessage?.[0]?.OfferId === - item?.OfferMessage?.[0]?.OfferId + item?.OfferMessage?.[0]?.OfferId ); if (isAlreadyExists !== -1) { @@ -825,11 +825,11 @@ export default function BSC1Search(props) { ).toFixed(2), WithoutTaxRate: (ModifiedData[isAlreadyExists].OrderQty + item.OrderQty) * - item.OrderRate - + item.OrderRate - ((ModifiedData[isAlreadyExists].OrderQty + item.OrderQty) * item.OrderRate * item.TaxPercentage) / - 100, + 100, Offer: (ModifiedData[isAlreadyExists].OrderQty + item.OrderQty) * item.OrderRate, @@ -855,10 +855,10 @@ export default function BSC1Search(props) { const appliedOfferAlreadyExists = AppliedOffers.findIndex( (offer) => offer?.FreeProductsList?.FreeProdId === - matchingFreeProduct?.FreeProdId && + matchingFreeProduct?.FreeProdId && offer?.TableName === matchingFreeProduct?.TableName && offer?.TableUniqueName === - matchingFreeProduct?.TableUniqueName && + matchingFreeProduct?.TableUniqueName && offer?.OfferId === matchingFreeProduct?.OfferId && offer?.OfferMode === matchingFreeProduct?.OfferMode && offer?.FreeProductsList?.ProdVariantDetails?.[0] @@ -1695,7 +1695,7 @@ export default function BSC1Search(props) { 0 || - record.StockCount === 'Stock Not Maintained' + record.StockCount === 'Stock Not Maintained' ? { color: '#000', cursor: 'pointer' } : { color: '#f49898', cursor: 'not-allowed' } } @@ -1725,7 +1725,7 @@ export default function BSC1Search(props) { 0 || - record.StockCount === 'Stock Not Maintained' + record.StockCount === 'Stock Not Maintained' ? { color: '#000', cursor: 'pointer' } : { color: '#f49898', cursor: 'not-allowed' } } @@ -1755,7 +1755,7 @@ export default function BSC1Search(props) { 0 || - record.StockCount === 'Stock Not Maintained' + record.StockCount === 'Stock Not Maintained' ? { color: '#000', cursor: 'pointer' } : { color: '#f49898', cursor: 'not-allowed' } } @@ -1919,11 +1919,11 @@ export default function BSC1Search(props) { StockCount: qtydata?.ProductDetail?.[0]?.StockAvailable === 'Y' ? returnVariantStock( - qtydata?.ProductDetail?.[QtyIndex]?.ProdId, - item?.OverAllQty, - CartOrderDetails, - item?.ProdVariantName - ) + qtydata?.ProductDetail?.[QtyIndex]?.ProdId, + item?.OverAllQty, + CartOrderDetails, + item?.ProdVariantName + ) : 'Stock Not Maintained', }); }); @@ -1939,17 +1939,17 @@ export default function BSC1Search(props) { 'Batch No': item?.BatchRef, StockCount: onePeiceFlow ? returnCountStock( - item?.ProdId, - item?.BalanceQty, - CartOrderDetails, - item?.InwardDtlId - ) * item?.NoOfPcs + item?.ProdId, + item?.BalanceQty, + CartOrderDetails, + item?.InwardDtlId + ) * item?.NoOfPcs : returnCountStock( - item?.ProdId, - item?.BalanceQty, - CartOrderDetails, - item?.InwardDtlId - ), + item?.ProdId, + item?.BalanceQty, + CartOrderDetails, + item?.InwardDtlId + ), 'Stock Date': StockDate(item?.InwardDate), Price: onePeiceFlow ? item?.OnePcsPrice : item?.SellPrice, ExpDate: @@ -2003,13 +2003,13 @@ export default function BSC1Search(props) { (cartItem) => cartItem?.ProdId === item?.ProductDetail?.[QtyIndex]?.ProdId && cartItem?.InwardDtlId === - item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ - VarientIndex - ]?.StockDetails?.[0]?.InwardDtlId && + item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ + VarientIndex + ]?.StockDetails?.[0]?.InwardDtlId && cartItem?.OrderRate === - item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ - VarientIndex - ]?.StockDetails?.[0]?.SellPrice && + item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ + VarientIndex + ]?.StockDetails?.[0]?.SellPrice && !cartItem?.SalesId ); @@ -2018,9 +2018,9 @@ export default function BSC1Search(props) { (cartItem) => cartItem?.ProdId === item?.ProductDetail?.[QtyIndex]?.ProdId && cartItem?.InwardDtlId === - item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ - VarientIndex - ]?.StockDetails?.[0]?.InwardDtlId && + item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ + VarientIndex + ]?.StockDetails?.[0]?.InwardDtlId && // (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice) !cartItem?.SalesId ); @@ -2062,11 +2062,11 @@ export default function BSC1Search(props) { (cartItem) => cartItem?.ProdId === item?.ProductDetail?.[QtyIndex]?.ProdId && cartItem?.InwardDtlId === - item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] - ?.StockDetails?.[0]?.InwardDtlId && + item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] + ?.StockDetails?.[0]?.InwardDtlId && cartItem?.OrderRate === - item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] - ?.StockDetails?.[0]?.SellPrice && + item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] + ?.StockDetails?.[0]?.SellPrice && !cartItem?.SalesId ); @@ -2075,9 +2075,9 @@ export default function BSC1Search(props) { (cartItem) => cartItem?.ProdId === item?.ProductDetail?.[QtyIndex]?.ProdId && cartItem?.InwardDtlId === - item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ - VarientIndex - ]?.StockDetails?.[0]?.InwardDtlId && + item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ + VarientIndex + ]?.StockDetails?.[0]?.InwardDtlId && // (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice) !cartItem?.SalesId ); @@ -2155,13 +2155,13 @@ export default function BSC1Search(props) { (cartItem) => cartItem?.ProdId === qtydata?.ProductDetail?.[QtyIndex]?.ProdId && cartItem?.InwardDtlId === - qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ - index.key - ]?.StockDetails?.[0]?.InwardDtlId && + qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ + index.key + ]?.StockDetails?.[0]?.InwardDtlId && cartItem?.OrderRate === - qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ - index.key - ]?.StockDetails?.[0]?.SellPrice && + qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ + index.key + ]?.StockDetails?.[0]?.SellPrice && !cartItem?.SalesId ); @@ -2169,11 +2169,11 @@ export default function BSC1Search(props) { let Isincartonepc = CartOrderDetails?.filter( (cartItem) => cartItem?.ProdId === - qtydata?.ProductDetail?.[QtyIndex]?.ProdId && + qtydata?.ProductDetail?.[QtyIndex]?.ProdId && cartItem?.InwardDtlId === - qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ - VarientIndex - ]?.StockDetails?.[0]?.InwardDtlId && + qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ + VarientIndex + ]?.StockDetails?.[0]?.InwardDtlId && // (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice) !cartItem?.SalesId ); @@ -2237,11 +2237,11 @@ export default function BSC1Search(props) { (cartItem) => cartItem?.ProdId === qtydata?.ProductDetail?.[QtyIndex]?.ProdId && cartItem?.InwardDtlId === - qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[index.key] - ?.StockDetails?.[0]?.InwardDtlId && + qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[index.key] + ?.StockDetails?.[0]?.InwardDtlId && cartItem?.OrderRate === - qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[index.key] - ?.StockDetails?.[0]?.SellPrice && + qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[index.key] + ?.StockDetails?.[0]?.SellPrice && !cartItem?.SalesId ); @@ -2250,9 +2250,9 @@ export default function BSC1Search(props) { (cartItem) => cartItem?.ProdId === qtydata?.ProductDetail?.[QtyIndex]?.ProdId && cartItem?.InwardDtlId === - qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ - VarientIndex - ]?.StockDetails?.[0]?.InwardDtlId && + qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ + VarientIndex + ]?.StockDetails?.[0]?.InwardDtlId && // (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice) !cartItem?.SalesId ); @@ -2327,15 +2327,15 @@ export default function BSC1Search(props) { let Isincart = CartOrderDetails?.find( (cartItem) => cartItem?.ProdId === - qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId && + qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId && cartItem?.InwardDtlId === - qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ - item?.VarientIndex - ]?.StockDetails?.[0]?.InwardDtlId && + qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ + item?.VarientIndex + ]?.StockDetails?.[0]?.InwardDtlId && cartItem?.OrderRate === - qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ - item?.VarientIndex - ]?.StockDetails?.[0]?.SellPrice && + qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ + item?.VarientIndex + ]?.StockDetails?.[0]?.SellPrice && !cartItem?.SalesId ); @@ -2343,11 +2343,11 @@ export default function BSC1Search(props) { let Isincartonepc = CartOrderDetails?.filter( (cartItem) => cartItem?.ProdId === - qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId && + qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId && cartItem?.InwardDtlId === - qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ - item?.VarientIndexs - ]?.StockDetails?.[0]?.InwardDtlId && + qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ + item?.VarientIndexs + ]?.StockDetails?.[0]?.InwardDtlId && // (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice) !cartItem?.SalesId ); @@ -2425,15 +2425,15 @@ export default function BSC1Search(props) { let Isincart = CartOrderDetails?.find( (cartItem) => cartItem?.ProdId === - qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId && + qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId && cartItem?.InwardDtlId === - qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ - item?.VarientIndex - ]?.StockDetails?.[0]?.InwardDtlId && + qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ + item?.VarientIndex + ]?.StockDetails?.[0]?.InwardDtlId && cartItem?.OrderRate === - qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ - item?.VarientIndex - ]?.StockDetails?.[0]?.SellPrice && + qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ + item?.VarientIndex + ]?.StockDetails?.[0]?.SellPrice && !cartItem?.SalesId ); @@ -2441,11 +2441,11 @@ export default function BSC1Search(props) { let Isincartonepc = CartOrderDetails?.filter( (cartItem) => cartItem?.ProdId === - qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId && + qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId && cartItem?.InwardDtlId === - qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ - item?.VarientIndex - ]?.StockDetails?.[0]?.InwardDtlId && + qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ + item?.VarientIndex + ]?.StockDetails?.[0]?.InwardDtlId && // (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice) !cartItem?.SalesId ); @@ -2565,7 +2565,7 @@ export default function BSC1Search(props) { const isKgsProduct = (a?.ProductDetail?.[QtyIndex]?.UomName?.toLowerCase() === 'kgs' || a?.ProductDetail?.[QtyIndex]?.UomName?.toLowerCase() === - 'kg'?.toLowerCase()) && + 'kg'?.toLowerCase()) && a?.ProductDetail?.[QtyIndex]?.Size === '1'; if ( @@ -2578,11 +2578,11 @@ export default function BSC1Search(props) { parseFloat( onePcs ? (a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] - ?.StockDetails?.[stockIndex]?.OnePcsPrice / - 1000) * - (parseFloat(WeightScaleWeight) * 1000) + ?.StockDetails?.[stockIndex]?.OnePcsPrice / + 1000) * + (parseFloat(WeightScaleWeight) * 1000) : a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] - ?.StockDetails?.[stockIndex]?.SellPrice / 1000 + ?.StockDetails?.[stockIndex]?.SellPrice / 1000 ) * (parseFloat(WeightScaleWeight) * 1000); let data = { @@ -2638,9 +2638,9 @@ export default function BSC1Search(props) { ?.StockDetails?.[stockIndex]?.InwardId, MRP: onePcs ? a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] - ?.StockDetails?.[stockIndex]?.OnePcsPrice + ?.StockDetails?.[stockIndex]?.OnePcsPrice : a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] - ?.StockDetails?.[stockIndex]?.MRP, + ?.StockDetails?.[stockIndex]?.MRP, FullProductIdentifierDtls: a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] ?.StockDetails?.[stockIndex]?.ProductIdentifierDtls, @@ -2748,19 +2748,19 @@ export default function BSC1Search(props) { ?.StockDetails?.[stockIndex]?.InwardId, MRP: onePcs ? a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] - ?.StockDetails?.[stockIndex]?.OnePcsPrice + ?.StockDetails?.[stockIndex]?.OnePcsPrice : a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] - ?.StockDetails?.[stockIndex]?.MRP, + ?.StockDetails?.[stockIndex]?.MRP, OrderRate: onePcs ? a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] - ?.StockDetails?.[stockIndex]?.OnePcsPrice + ?.StockDetails?.[stockIndex]?.OnePcsPrice : a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] - ?.StockDetails?.[stockIndex]?.SellPrice, + ?.StockDetails?.[stockIndex]?.SellPrice, SellingPrice: onePcs ? a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] - ?.StockDetails?.[stockIndex]?.OnePcsPrice + ?.StockDetails?.[stockIndex]?.OnePcsPrice : a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] - ?.StockDetails?.[stockIndex]?.SellPrice, + ?.StockDetails?.[stockIndex]?.SellPrice, SuppId: a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] ?.StockDetails?.[stockIndex]?.SuppId, @@ -2851,6 +2851,40 @@ export default function BSC1Search(props) { setMessageType('warning'); return; } + } else if (itemWiseLimitPreferenece) { + + const inwardQtyMap = CartOrderDetails.reduce((acc, curr) => { + const inwardId = curr?.InwardDtlId; + const qty = Number(curr?.OrderQty) || 0; + + if (acc[inwardId]) { + acc[inwardId] += qty; + } else { + acc[inwardId] = qty; + } + + return acc; + }, {}); + + const currentInwardId = item?.InwardDtlId; + const addQty = 1; + + if (inwardQtyMap[currentInwardId]) { + inwardQtyMap[currentInwardId] += addQty; + } else { + inwardQtyMap[currentInwardId] = addQty; + } + + console.log("Final InwardDtlId Qty Map:", inwardQtyMap); + const isExceeded = Object.values(inwardQtyMap).some( + (qty) => qty > maxQtyLimit + ); + + if (isExceeded) { + setMessageData(`Item Quantity Limit Exceeds than ${maxQtyLimit}`); + setMessageType('warning'); + return; + } } } @@ -2944,15 +2978,15 @@ export default function BSC1Search(props) { const isExistsInFreeProdList = hasOffer ? FreeProdList?.filter( - (f) => - f?.FreeProdId === item?.ProdId && - f?.ProdVariantDetails?.some((variant) => - variant?.StockDetails?.some( - (stock) => stock?.FreeInwardDtlId === item?.InwardDtlId - ) - ) && - f?.RemainingQty > 0 - ) + (f) => + f?.FreeProdId === item?.ProdId && + f?.ProdVariantDetails?.some((variant) => + variant?.StockDetails?.some( + (stock) => stock?.FreeInwardDtlId === item?.InwardDtlId + ) + ) && + f?.RemainingQty > 0 + ) : []; const calculateTaxAmounts = (qty, rate, taxPercentage) => { @@ -3019,10 +3053,10 @@ export default function BSC1Search(props) { ((cartItem?.OfferModeType && cartItem?.OfferMode === 'B' ? true : cartItem?.OfferMode !== 'B') && - cartItem?.OfferMode !== 'P' && - cartItem?.OfferMode !== 'C' && - cartItem?.OfferMode !== 'O' && - cartItem?.OfferMode !== 'L' + cartItem?.OfferMode !== 'P' && + cartItem?.OfferMode !== 'C' && + cartItem?.OfferMode !== 'O' && + cartItem?.OfferMode !== 'L' ? true : cartItem?.Offer === 0) ); @@ -3039,10 +3073,10 @@ export default function BSC1Search(props) { (cartItem) => itemMatchCondition(cartItem) && (cartItem?.OfferMode !== 'B' && - cartItem?.OfferMode !== 'P' && - cartItem?.OfferMode !== 'C' && - cartItem?.OfferMode !== 'O' && - cartItem?.OfferMode !== 'L' + cartItem?.OfferMode !== 'P' && + cartItem?.OfferMode !== 'C' && + cartItem?.OfferMode !== 'O' && + cartItem?.OfferMode !== 'L' ? true : cartItem?.Offer === 0) ); @@ -3056,10 +3090,10 @@ export default function BSC1Search(props) { ((cartItem?.OfferModeType && cartItem?.OfferMode === 'B' ? true : cartItem?.OfferMode !== 'B') && - cartItem?.OfferMode !== 'P' && - cartItem?.OfferMode !== 'L' && - cartItem?.OfferMode !== 'C' && - cartItem?.OfferMode !== 'O' + cartItem?.OfferMode !== 'P' && + cartItem?.OfferMode !== 'L' && + cartItem?.OfferMode !== 'C' && + cartItem?.OfferMode !== 'O' ? true : cartItem?.Offer === 0) ) @@ -3070,10 +3104,10 @@ export default function BSC1Search(props) { !( itemMatchCondition(cartItem) && (cartItem?.OfferMode !== 'B' && - cartItem?.OfferMode !== 'P' && - cartItem?.OfferMode !== 'L' && - cartItem?.OfferMode !== 'C' && - cartItem?.OfferMode !== 'O' + cartItem?.OfferMode !== 'P' && + cartItem?.OfferMode !== 'L' && + cartItem?.OfferMode !== 'C' && + cartItem?.OfferMode !== 'O' ? true : cartItem?.Offer === 0) ) @@ -3146,8 +3180,8 @@ export default function BSC1Search(props) { isItemInCart, item?.OtherProduct === 'Others' || item?.ScaleType === 'weight' ? ( - (item?.OrderQty || 0) + parseFloat(isItemInCart?.OrderQty) - )?.toFixed(3) + (item?.OrderQty || 0) + parseFloat(isItemInCart?.OrderQty) + )?.toFixed(3) : null ); const updatedData = addFirst @@ -3274,9 +3308,9 @@ export default function BSC1Search(props) { isItemInCartHold, item?.OtherProduct === 'Others' || item?.ScaleType === 'weight' ? ( - (item?.OrderQty || 0) + - parseFloat(isItemInCartHold?.OrderQty) - )?.toFixed(3) + (item?.OrderQty || 0) + + parseFloat(isItemInCartHold?.OrderQty) + )?.toFixed(3) : null ); const updatedData = addFirst @@ -3528,14 +3562,14 @@ export default function BSC1Search(props) { updatedCartData = cartData.map((item, idx) => idx === indexToCheck ? { - ...item, - Offer: null, - OfferMessage: undefined, - OfferMode: undefined, - OfferModeType: false, - OfferType: undefined, - OfferValue: null, - } + ...item, + Offer: null, + OfferMessage: undefined, + OfferMode: undefined, + OfferModeType: false, + OfferType: undefined, + OfferValue: null, + } : item ); } @@ -3586,8 +3620,8 @@ export default function BSC1Search(props) { ...item, Offer: sameProduct || - bestOffer?.OfferMode === 'I' || - bestOffer?.OfferMode === 'Q' + bestOffer?.OfferMode === 'I' || + bestOffer?.OfferMode === 'Q' ? bestOffer?.OfferAmount || item.Offer : item.Offer || bestOffer?.OfferAmount, OfferType: item?.OfferType || bestOffer?.OfferType, @@ -3604,10 +3638,10 @@ export default function BSC1Search(props) { ((c?.OfferModeType && c?.OfferMode === 'B' ? true : c?.OfferMode !== 'B') && - c?.OfferMode !== 'P' && - c?.OfferMode !== 'C' && - c?.OfferMode !== 'O' && - c?.OfferMode !== 'L' + c?.OfferMode !== 'P' && + c?.OfferMode !== 'C' && + c?.OfferMode !== 'O' && + c?.OfferMode !== 'L' ? true : c?.Offer === 0); @@ -3915,10 +3949,10 @@ export default function BSC1Search(props) { return FreeProdList.map((f, i) => i === index ? { - ...existing, - ...newFreeProd, - ProdVariantDetails: existing.ProdVariantDetails, - } + ...existing, + ...newFreeProd, + ProdVariantDetails: existing.ProdVariantDetails, + } : f ); } else { @@ -3988,7 +4022,7 @@ export default function BSC1Search(props) { const cycleSize = buyQty + getQty; const fullCycles = Math.floor( freeCartItem?.reduce((acc, fc) => acc + (fc?.OrderQty || 0), 0) / - cycleSize + cycleSize ); const totalFreeQty = fullCycles * getQty; @@ -4591,15 +4625,15 @@ export default function BSC1Search(props) { {option.ProductDetail?.filter( (item) => item.OnePcsAvailable == 'Y' ).length !== 0 && ( - { - setOnePeiceFlow(true); - }} - /> - )} + { + setOnePeiceFlow(true); + }} + /> + )} ), @@ -4633,7 +4667,7 @@ export default function BSC1Search(props) { OnfocusTrue()} + // onClick={() => OnfocusTrue()} /> {ProductSearch?.length > 5 && @@ -4724,8 +4758,8 @@ export default function BSC1Search(props) { { const [QtyIndex, setQtyIndex] = useState(0); const [ConfigDataList, setConfigDataList] = useState([]); const [maxLimitExceeded, setMaxLimitExceeded] = useState(false); + const [maxLimitExceededMessage, setMaxLimitExceededMessage] = useState(null); const kioskTemplateData = props?.data; const SettingDataSelector = useSelector(settingDataSelector); const UomPrint = SettingDataSelector?.[0]?.SettingDtlDetails.filter( @@ -60,20 +61,6 @@ const CardPage1 = (props) => { //Card on click function const CardOnClick = async (item, Parameter) => { - if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { - if (overAllLimitPreferenece) { - const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); - if ((calculatedOverAllQty + 1) > maxQtyLimit) { - setMaxLimitExceeded(true); - // Reset after 3 seconds - setTimeout(() => { - setMaxLimitExceeded(false); - }, 2000); - - return; - } - } - } setOnePeiceFlow(Parameter === 'OnePeiceProduct'); const transformedItem = { @@ -321,6 +308,61 @@ const CardPage1 = (props) => { }; // add Product in cart state const AddOrderDetails = (item) => { + if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { + if (overAllLimitPreferenece) { + const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); + if ((calculatedOverAllQty + 1) > maxQtyLimit) { + setMaxLimitExceeded(true); + // Reset after 3 seconds + setMaxLimitExceededMessage(`Maximum Quantity (${maxQtyLimit}) Reached`); + setTimeout(() => { + setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); + }, 2000); + + return; + } + } else if (itemWiseLimitPreferenece) { + + const inwardQtyMap = KioskOrderDetails.reduce((acc, curr) => { + const inwardId = curr?.InwardDtlId; + const qty = Number(curr?.OrderQty) || 0; + + if (acc[inwardId]) { + acc[inwardId] += qty; + } else { + acc[inwardId] = qty; + } + + return acc; + }, {}); + + const currentInwardId = item?.InwardDtlId; + const addQty = 1; + + if (inwardQtyMap[currentInwardId]) { + inwardQtyMap[currentInwardId] += addQty; + } else { + inwardQtyMap[currentInwardId] = addQty; + } + + console.log("Final InwardDtlId Qty Map:", inwardQtyMap); + const isExceeded = Object.values(inwardQtyMap).some( + (qty) => qty > maxQtyLimit + ); + + if (isExceeded) { + setMaxLimitExceeded(true); + // Reset after 3 seconds + setMaxLimitExceededMessage(`Item Quantity Limit Exceeds than ${maxQtyLimit}`); + setTimeout(() => { + setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); + }, 2000); + return; + } + } + } const isItemInCart = KioskOrderDetails?.find( (cartItem) => cartItem.ProdId === item.ProdId && @@ -792,7 +834,7 @@ const CardPage1 = (props) => { />

- Maximum Quantity ({maxQtyLimit}) Reached + {maxLimitExceededMessage}

diff --git a/src/Pages/Kiosk/CardPage/CardPage2.jsx b/src/Pages/Kiosk/CardPage/CardPage2.jsx index 0c058ea..75c7b7a 100644 --- a/src/Pages/Kiosk/CardPage/CardPage2.jsx +++ b/src/Pages/Kiosk/CardPage/CardPage2.jsx @@ -28,6 +28,7 @@ const CardPage2 = (props) => { const BookingType = useSelector(GlobalBookingTypeKiosk); const kioskTemplateData = props?.data; const [maxLimitExceeded, setMaxLimitExceeded] = useState(false); + const [maxLimitExceededMessage, setMaxLimitExceededMessage] = useState(null); const [openQuantity, setopenQuantity] = useState(false); const [VariantOpen, setVariantOpen] = useState(false); const [onePeiceFlow, setOnePeiceFlow] = useState(false); @@ -59,20 +60,6 @@ const CardPage2 = (props) => { //Card on click function const CardOnClick = async (item, Parameter) => { - if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { - if (overAllLimitPreferenece) { - const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); - if ((calculatedOverAllQty + 1) > maxQtyLimit) { - setMaxLimitExceeded(true); - // Reset after 3 seconds - setTimeout(() => { - setMaxLimitExceeded(false); - }, 2000); - return; - } - } - } - setOnePeiceFlow(Parameter === 'OnePeiceProduct'); const transformedItem = { @@ -321,6 +308,61 @@ const CardPage2 = (props) => { }; // add Product in cart state const AddOrderDetails = (item) => { + if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { + if (overAllLimitPreferenece) { + const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); + if ((calculatedOverAllQty + 1) > maxQtyLimit) { + setMaxLimitExceeded(true); + // Reset after 3 seconds + setMaxLimitExceededMessage(`Maximum Quantity (${maxQtyLimit}) Reached`); + setTimeout(() => { + setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); + }, 2000); + + return; + } + } else if (itemWiseLimitPreferenece) { + + const inwardQtyMap = KioskOrderDetails.reduce((acc, curr) => { + const inwardId = curr?.InwardDtlId; + const qty = Number(curr?.OrderQty) || 0; + + if (acc[inwardId]) { + acc[inwardId] += qty; + } else { + acc[inwardId] = qty; + } + + return acc; + }, {}); + + const currentInwardId = item?.InwardDtlId; + const addQty = 1; + + if (inwardQtyMap[currentInwardId]) { + inwardQtyMap[currentInwardId] += addQty; + } else { + inwardQtyMap[currentInwardId] = addQty; + } + + console.log("Final InwardDtlId Qty Map:", inwardQtyMap); + const isExceeded = Object.values(inwardQtyMap).some( + (qty) => qty > maxQtyLimit + ); + + if (isExceeded) { + setMaxLimitExceeded(true); + // Reset after 3 seconds + setMaxLimitExceededMessage(`Item Quantity Limit Exceeds than ${maxQtyLimit}`); + setTimeout(() => { + setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); + }, 2000); + return; + } + } + } const isItemInCart = KioskOrderDetails?.find( (cartItem) => cartItem.ProdId === item.ProdId && @@ -601,7 +643,7 @@ const CardPage2 = (props) => { )}

- Maximum Quantity ({maxQtyLimit}) Reached + {maxLimitExceededMessage}

{ const getKioskLightColourdata = useSelector(getKioskLightColour); const BookingType = useSelector(GlobalBookingTypeKiosk); const [maxLimitExceeded, setMaxLimitExceeded] = useState(false); + const [maxLimitExceededMessage, setMaxLimitExceededMessage] = useState(null); const [openQuantity, setopenQuantity] = useState(false); const [VariantOpen, setVariantOpen] = useState(false); const [onePeiceFlow, setOnePeiceFlow] = useState(false); @@ -58,19 +59,6 @@ const CardPage3 = (props) => { }, []); //Card on click function const CardOnClick = async (item, Parameter) => { - if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { - if (overAllLimitPreferenece) { - const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); - if ((calculatedOverAllQty + 1) > maxQtyLimit) { - setMaxLimitExceeded(true); - // Reset after 3 seconds - setTimeout(() => { - setMaxLimitExceeded(false); - }, 2000); - return; - } - } - } setOnePeiceFlow(Parameter === 'OnePeiceProduct'); const transformedItem = { @@ -318,6 +306,61 @@ const CardPage3 = (props) => { }; // add Product in cart state const AddOrderDetails = (item) => { + if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { + if (overAllLimitPreferenece) { + const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); + if ((calculatedOverAllQty + 1) > maxQtyLimit) { + setMaxLimitExceeded(true); + // Reset after 3 seconds + setMaxLimitExceededMessage(`Maximum Quantity (${maxQtyLimit}) Reached`); + setTimeout(() => { + setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); + }, 2000); + + return; + } + } else if (itemWiseLimitPreferenece) { + + const inwardQtyMap = KioskOrderDetails.reduce((acc, curr) => { + const inwardId = curr?.InwardDtlId; + const qty = Number(curr?.OrderQty) || 0; + + if (acc[inwardId]) { + acc[inwardId] += qty; + } else { + acc[inwardId] = qty; + } + + return acc; + }, {}); + + const currentInwardId = item?.InwardDtlId; + const addQty = 1; + + if (inwardQtyMap[currentInwardId]) { + inwardQtyMap[currentInwardId] += addQty; + } else { + inwardQtyMap[currentInwardId] = addQty; + } + + console.log("Final InwardDtlId Qty Map:", inwardQtyMap); + const isExceeded = Object.values(inwardQtyMap).some( + (qty) => qty > maxQtyLimit + ); + + if (isExceeded) { + setMaxLimitExceeded(true); + // Reset after 3 seconds + setMaxLimitExceededMessage(`Item Quantity Limit Exceeds than ${maxQtyLimit}`); + setTimeout(() => { + setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); + }, 2000); + return; + } + } + } const isItemInCart = KioskOrderDetails?.find( (cartItem) => cartItem.ProdId === item.ProdId && @@ -604,7 +647,7 @@ const CardPage3 = (props) => { )}

- Maximum Quantity ({maxQtyLimit}) Reached + {maxLimitExceededMessage}

{ const getKioskLightColourdata = useSelector(getKioskLightColour); const BookingType = useSelector(GlobalBookingTypeKiosk); const [maxLimitExceeded, setMaxLimitExceeded] = useState(false); + const [maxLimitExceededMessage, setMaxLimitExceededMessage] = useState(null); const [quantities, setQuantities] = useState({}); const [openQuantity, setopenQuantity] = useState(false); const [VariantOpen, setVariantOpen] = useState(false); @@ -89,19 +90,6 @@ const CardPage4 = (props) => { //Card on click function const CardOnClick = async (item, Parameter) => { - if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { - if (overAllLimitPreferenece) { - const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); - if ((calculatedOverAllQty + 1) > maxQtyLimit) { - setMaxLimitExceeded(true); - // Reset after 3 seconds - setTimeout(() => { - setMaxLimitExceeded(false); - }, 2000); - return; - } - } - } setOnePeiceFlow(Parameter === 'OnePeiceProduct'); const transformedItem = { @@ -342,6 +330,61 @@ const CardPage4 = (props) => { }; // add Product in cart state const AddOrderDetails = (item) => { + if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { + if (overAllLimitPreferenece) { + const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); + if ((calculatedOverAllQty + 1) > maxQtyLimit) { + setMaxLimitExceeded(true); + // Reset after 3 seconds + setMaxLimitExceededMessage(`Maximum Quantity (${maxQtyLimit}) Reached`); + setTimeout(() => { + setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); + }, 2000); + + return; + } + } else if (itemWiseLimitPreferenece) { + + const inwardQtyMap = KioskOrderDetails.reduce((acc, curr) => { + const inwardId = curr?.InwardDtlId; + const qty = Number(curr?.OrderQty) || 0; + + if (acc[inwardId]) { + acc[inwardId] += qty; + } else { + acc[inwardId] = qty; + } + + return acc; + }, {}); + + const currentInwardId = item?.InwardDtlId; + const addQty = 1; + + if (inwardQtyMap[currentInwardId]) { + inwardQtyMap[currentInwardId] += addQty; + } else { + inwardQtyMap[currentInwardId] = addQty; + } + + console.log("Final InwardDtlId Qty Map:", inwardQtyMap); + const isExceeded = Object.values(inwardQtyMap).some( + (qty) => qty > maxQtyLimit + ); + + if (isExceeded) { + setMaxLimitExceeded(true); + // Reset after 3 seconds + setMaxLimitExceededMessage(`Item Quantity Limit Exceeds than ${maxQtyLimit}`); + setTimeout(() => { + setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); + }, 2000); + return; + } + } + } const isItemInCart = KioskOrderDetails?.find( (cartItem) => cartItem.ProdId === item.ProdId && @@ -625,7 +668,7 @@ const CardPage4 = (props) => { )}

- Maximum Quantity ({maxQtyLimit}) Reached + {maxLimitExceededMessage}

{ const dispatch = useDispatch(); + const [maxLimitExceededMessage, setMaxLimitExceededMessage] = useState(null); const [maxLimitExceeded, setMaxLimitExceeded] = useState(false); const preferenceDatas = useSelector(PreferenceData); const overAllLimitPreferenece = @@ -45,10 +47,51 @@ const KisokOrderCart1 = (props) => { if ((calculatedOverAllQty + 1) > maxQtyLimit) { setMaxLimitExceeded(true); // Reset after 3 seconds + setMaxLimitExceededMessage(`Maximum Quantity (${maxQtyLimit}) Reached`); setTimeout(() => { setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); }, 2000); + return; + } + } else if (itemWiseLimitPreferenece) { + + const inwardQtyMap = KioskOrderDetails.reduce((acc, curr) => { + const inwardId = curr?.InwardDtlId; + const qty = Number(curr?.OrderQty) || 0; + + if (acc[inwardId]) { + acc[inwardId] += qty; + } else { + acc[inwardId] = qty; + } + + return acc; + }, {}); + + const currentInwardId = item?.InwardDtlId; + const addQty = 1; + + if (inwardQtyMap[currentInwardId]) { + inwardQtyMap[currentInwardId] += addQty; + } else { + inwardQtyMap[currentInwardId] = addQty; + } + + console.log("Final InwardDtlId Qty Map:", inwardQtyMap); + const isExceeded = Object.values(inwardQtyMap).some( + (qty) => qty > maxQtyLimit + ); + + if (isExceeded) { + setMaxLimitExceeded(true); + // Reset after 3 seconds + setMaxLimitExceededMessage(`Item Quantity Limit Exceeds than ${maxQtyLimit}`); + setTimeout(() => { + setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); + }, 2000); return; } } @@ -209,13 +252,14 @@ const KisokOrderCart1 = (props) => { remove -
-

- Maximum Quantity ({maxQtyLimit}) Reached -

-
+ ))} +
+

+ {maxLimitExceededMessage} +

+
); diff --git a/src/Pages/Kiosk/OrderCart/OrderCart2.jsx b/src/Pages/Kiosk/OrderCart/OrderCart2.jsx index 697d723..c7092cc 100644 --- a/src/Pages/Kiosk/OrderCart/OrderCart2.jsx +++ b/src/Pages/Kiosk/OrderCart/OrderCart2.jsx @@ -17,6 +17,7 @@ const KisokOrderCart2 = (props) => { const dispatch = useDispatch(); const preferenceDatas = useSelector(PreferenceData); const [maxLimitExceeded, setMaxLimitExceeded] = useState(false); + const [maxLimitExceededMessage, setMaxLimitExceededMessage] = useState(null); const overAllLimitPreferenece = preferenceDatas?.[0]?.['SettingDtlDetails']?.find( (item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y'); @@ -49,8 +50,50 @@ const KisokOrderCart2 = (props) => { if ((calculatedOverAllQty + 1) > maxQtyLimit) { setMaxLimitExceeded(true); // Reset after 3 seconds + setMaxLimitExceededMessage(`Maximum Quantity (${maxQtyLimit}) Reached`); setTimeout(() => { setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); + }, 2000); + + return; + } + } else if (itemWiseLimitPreferenece) { + + const inwardQtyMap = KioskOrderDetails.reduce((acc, curr) => { + const inwardId = curr?.InwardDtlId; + const qty = Number(curr?.OrderQty) || 0; + + if (acc[inwardId]) { + acc[inwardId] += qty; + } else { + acc[inwardId] = qty; + } + + return acc; + }, {}); + + const currentInwardId = item?.InwardDtlId; + const addQty = 1; + + if (inwardQtyMap[currentInwardId]) { + inwardQtyMap[currentInwardId] += addQty; + } else { + inwardQtyMap[currentInwardId] = addQty; + } + + console.log("Final InwardDtlId Qty Map:", inwardQtyMap); + const isExceeded = Object.values(inwardQtyMap).some( + (qty) => qty > maxQtyLimit + ); + + if (isExceeded) { + setMaxLimitExceeded(true); + // Reset after 3 seconds + setMaxLimitExceededMessage(`Item Quantity Limit Exceeds than ${maxQtyLimit}`); + setTimeout(() => { + setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); }, 2000); return; } @@ -232,7 +275,7 @@ const KisokOrderCart2 = (props) => {

- Maximum Quantity ({maxQtyLimit}) Reached + {maxLimitExceededMessage}

diff --git a/src/Pages/Kiosk/OrderCart/OrderCart3.jsx b/src/Pages/Kiosk/OrderCart/OrderCart3.jsx index 3fd5c13..f3a3824 100644 --- a/src/Pages/Kiosk/OrderCart/OrderCart3.jsx +++ b/src/Pages/Kiosk/OrderCart/OrderCart3.jsx @@ -19,6 +19,7 @@ const KisokOrderCart3 = (props) => { const [maxLimitExceeded, setMaxLimitExceeded] = useState(false); const getKioskDarkColourdata = useSelector(getKioskDarkColour); const preferenceDatas = useSelector(PreferenceData); + const [maxLimitExceededMessage, setMaxLimitExceededMessage] = useState(null); const overAllLimitPreferenece = preferenceDatas?.[0]?.['SettingDtlDetails']?.find( (item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y'); @@ -52,8 +53,50 @@ const KisokOrderCart3 = (props) => { if ((calculatedOverAllQty + 1) > maxQtyLimit) { setMaxLimitExceeded(true); // Reset after 3 seconds + setMaxLimitExceededMessage(`Maximum Quantity (${maxQtyLimit}) Reached`); setTimeout(() => { setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); + }, 2000); + + return; + } + } else if (itemWiseLimitPreferenece) { + + const inwardQtyMap = KioskOrderDetails.reduce((acc, curr) => { + const inwardId = curr?.InwardDtlId; + const qty = Number(curr?.OrderQty) || 0; + + if (acc[inwardId]) { + acc[inwardId] += qty; + } else { + acc[inwardId] = qty; + } + + return acc; + }, {}); + + const currentInwardId = item?.InwardDtlId; + const addQty = 1; + + if (inwardQtyMap[currentInwardId]) { + inwardQtyMap[currentInwardId] += addQty; + } else { + inwardQtyMap[currentInwardId] = addQty; + } + + console.log("Final InwardDtlId Qty Map:", inwardQtyMap); + const isExceeded = Object.values(inwardQtyMap).some( + (qty) => qty > maxQtyLimit + ); + + if (isExceeded) { + setMaxLimitExceeded(true); + // Reset after 3 seconds + setMaxLimitExceededMessage(`Item Quantity Limit Exceeds than ${maxQtyLimit}`); + setTimeout(() => { + setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); }, 2000); return; } @@ -245,7 +288,7 @@ const KisokOrderCart3 = (props) => {

- Maximum Quantity ({maxQtyLimit}) Reached + {maxLimitExceededMessage}

diff --git a/src/Pages/Kiosk/OrderView/OrderView1.jsx b/src/Pages/Kiosk/OrderView/OrderView1.jsx index c3d39bc..80f2e2d 100644 --- a/src/Pages/Kiosk/OrderView/OrderView1.jsx +++ b/src/Pages/Kiosk/OrderView/OrderView1.jsx @@ -27,6 +27,7 @@ const OrderView1 = (props) => { : null; const dispatch = useDispatch(); const [maxLimitExceeded, setMaxLimitExceeded] = useState(false); + const [maxLimitExceededMessage, setMaxLimitExceededMessage] = useState(null); const KioskOrderDetails = useSelector(GlobalKioskOrderDetails); const getKioskLightColourdata = useSelector(getKioskLightColour); const preferenceDatas = useSelector(PreferenceData); @@ -57,16 +58,56 @@ const OrderView1 = (props) => { ); }; const increase = async (item) => { - - if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { if (overAllLimitPreferenece) { const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); if ((calculatedOverAllQty + 1) > maxQtyLimit) { setMaxLimitExceeded(true); // Reset after 3 seconds + setMaxLimitExceededMessage(`Maximum Quantity (${maxQtyLimit}) Reached`); setTimeout(() => { setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); + }, 2000); + + return; + } + } else if (itemWiseLimitPreferenece) { + + const inwardQtyMap = KioskOrderDetails.reduce((acc, curr) => { + const inwardId = curr?.InwardDtlId; + const qty = Number(curr?.OrderQty) || 0; + + if (acc[inwardId]) { + acc[inwardId] += qty; + } else { + acc[inwardId] = qty; + } + + return acc; + }, {}); + + const currentInwardId = item?.InwardDtlId; + const addQty = 1; + + if (inwardQtyMap[currentInwardId]) { + inwardQtyMap[currentInwardId] += addQty; + } else { + inwardQtyMap[currentInwardId] = addQty; + } + + console.log("Final InwardDtlId Qty Map:", inwardQtyMap); + const isExceeded = Object.values(inwardQtyMap).some( + (qty) => qty > maxQtyLimit + ); + + if (isExceeded) { + setMaxLimitExceeded(true); + // Reset after 3 seconds + setMaxLimitExceededMessage(`Item Quantity Limit Exceeds than ${maxQtyLimit}`); + setTimeout(() => { + setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); }, 2000); return; } @@ -258,13 +299,14 @@ const OrderView1 = (props) => { remove -
-

- Maximum Quantity ({maxQtyLimit}) Reached -

-
+ ))} +
+

+ {maxLimitExceededMessage} +

+
{ : null; const dispatch = useDispatch(); const preferenceDatas = useSelector(PreferenceData); + const [maxLimitExceededMessage, setMaxLimitExceededMessage] = useState(null); const [maxLimitExceeded, setMaxLimitExceeded] = useState(false); const overAllLimitPreferenece = preferenceDatas?.[0]?.['SettingDtlDetails']?.find( @@ -73,8 +74,50 @@ const KioskOrderView2 = (props) => { if ((calculatedOverAllQty + 1) > maxQtyLimit) { setMaxLimitExceeded(true); // Reset after 3 seconds + setMaxLimitExceededMessage(`Maximum Quantity (${maxQtyLimit}) Reached`); setTimeout(() => { setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); + }, 2000); + + return; + } + } else if (itemWiseLimitPreferenece) { + + const inwardQtyMap = KioskOrderDetails.reduce((acc, curr) => { + const inwardId = curr?.InwardDtlId; + const qty = Number(curr?.OrderQty) || 0; + + if (acc[inwardId]) { + acc[inwardId] += qty; + } else { + acc[inwardId] = qty; + } + + return acc; + }, {}); + + const currentInwardId = item?.InwardDtlId; + const addQty = 1; + + if (inwardQtyMap[currentInwardId]) { + inwardQtyMap[currentInwardId] += addQty; + } else { + inwardQtyMap[currentInwardId] = addQty; + } + + console.log("Final InwardDtlId Qty Map:", inwardQtyMap); + const isExceeded = Object.values(inwardQtyMap).some( + (qty) => qty > maxQtyLimit + ); + + if (isExceeded) { + setMaxLimitExceeded(true); + // Reset after 3 seconds + setMaxLimitExceededMessage(`Item Quantity Limit Exceeds than ${maxQtyLimit}`); + setTimeout(() => { + setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); }, 2000); return; } @@ -339,7 +382,7 @@ const KioskOrderView2 = (props) => {

- Maximum Quantity ({maxQtyLimit}) Reached + {maxLimitExceededMessage}

diff --git a/src/Pages/Kiosk/OrderView/OrderView3.jsx b/src/Pages/Kiosk/OrderView/OrderView3.jsx index f9ff4a5..be6f334 100644 --- a/src/Pages/Kiosk/OrderView/OrderView3.jsx +++ b/src/Pages/Kiosk/OrderView/OrderView3.jsx @@ -32,6 +32,7 @@ const KioskOrderView = (props) => { const KioskOrderDetails = useSelector(GlobalKioskOrderDetails); const getKioskLightColourdata = useSelector(getKioskLightColour); const preferenceDatas = useSelector(PreferenceData); + const [maxLimitExceededMessage, setMaxLimitExceededMessage] = useState(null); const [maxLimitExceeded, setMaxLimitExceeded] = useState(false); const overAllLimitPreferenece = preferenceDatas?.[0]?.['SettingDtlDetails']?.find( @@ -60,15 +61,56 @@ const KioskOrderView = (props) => { ); }; const increase = async (item) => { - if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { if (overAllLimitPreferenece) { const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); if ((calculatedOverAllQty + 1) > maxQtyLimit) { setMaxLimitExceeded(true); // Reset after 3 seconds + setMaxLimitExceededMessage(`Maximum Quantity (${maxQtyLimit}) Reached`); setTimeout(() => { setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); + }, 2000); + + return; + } + } else if (itemWiseLimitPreferenece) { + + const inwardQtyMap = KioskOrderDetails.reduce((acc, curr) => { + const inwardId = curr?.InwardDtlId; + const qty = Number(curr?.OrderQty) || 0; + + if (acc[inwardId]) { + acc[inwardId] += qty; + } else { + acc[inwardId] = qty; + } + + return acc; + }, {}); + + const currentInwardId = item?.InwardDtlId; + const addQty = 1; + + if (inwardQtyMap[currentInwardId]) { + inwardQtyMap[currentInwardId] += addQty; + } else { + inwardQtyMap[currentInwardId] = addQty; + } + + console.log("Final InwardDtlId Qty Map:", inwardQtyMap); + const isExceeded = Object.values(inwardQtyMap).some( + (qty) => qty > maxQtyLimit + ); + + if (isExceeded) { + setMaxLimitExceeded(true); + // Reset after 3 seconds + setMaxLimitExceededMessage(`Item Quantity Limit Exceeds than ${maxQtyLimit}`); + setTimeout(() => { + setMaxLimitExceeded(false); + setMaxLimitExceededMessage(null); }, 2000); return; } @@ -331,7 +373,7 @@ const KioskOrderView = (props) => {

- Maximum Quantity ({maxQtyLimit}) Reached + {maxLimitExceededMessage}