From 70444d3028674390e2200b057f4ef8c0383328ea Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 24 Feb 2026 14:33:29 +0530 Subject: [PATCH] kisok quantity constrain --- src/Pages/Kiosk/CardPage/CardPage1.jsx | 23 ++++- src/Pages/Kiosk/CardPage/CardPage2.jsx | 123 +++++++++++++---------- src/Pages/Kiosk/CardPage/CardPage3.jsx | 122 ++++++++++++---------- src/Pages/Kiosk/CardPage/CardPage4.jsx | 95 ++++++++++------- src/Pages/Kiosk/KioskBookingPage.jsx | 19 ++-- src/Pages/Kiosk/OrderCart/OrderCart1.jsx | 86 ++++++++++------ src/Pages/Kiosk/OrderCart/OrderCart2.jsx | 87 ++++++++++------ src/Pages/Kiosk/OrderCart/OrderCart3.jsx | 85 ++++++++++------ src/Pages/Kiosk/OrderView/OrderView1.jsx | 86 ++++++++++------ src/Pages/Kiosk/OrderView/OrderView2.jsx | 85 ++++++++++------ src/Pages/Kiosk/OrderView/OrderView3.jsx | 93 ++++++++++------- 11 files changed, 556 insertions(+), 348 deletions(-) diff --git a/src/Pages/Kiosk/CardPage/CardPage1.jsx b/src/Pages/Kiosk/CardPage/CardPage1.jsx index 1a228b5..414ba88 100644 --- a/src/Pages/Kiosk/CardPage/CardPage1.jsx +++ b/src/Pages/Kiosk/CardPage/CardPage1.jsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; -import { Drawer } from 'antd'; +import { Drawer, message } from 'antd'; import { DefaultModal } from '../../../Components/Modal/DefaultModal'; import { changeKioskPageName, @@ -16,10 +16,12 @@ import { GlobalBookingTypeKiosk, } from '../../../Features/BookingScreen/BookingData/KioskBookingData'; import horizontal from '../../../Images/defaultItemImg.png'; -import { getConfigType } from '../../../Features/BookingScreen/BookingData/BookingData'; +import { getConfigType, PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; +import { calculateOverAllQtyLimit } from '../../../utils/calculations.js'; const CardPage1 = (props) => { const dispatch = useDispatch(); + const preferenceDatas = useSelector(PreferenceData); const kioskCategoriesCard = useSelector(GlobalProductCardListKiosk); const KioskOrderDetails = useSelector(GlobalKioskOrderDetails); const getKioskLightColourdata = useSelector(getKioskLightColour); @@ -35,7 +37,13 @@ const CardPage1 = (props) => { const UomPrint = SettingDataSelector?.[0]?.SettingDtlDetails.filter( (i) => i.SettingIdName === 'PrintUom' )?.[0]; - + const overAllLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y'); + const itemWiseLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => item.SettingIdName?.toLowerCase() === 'itemwiselimit' && item?.SettingValue === 'Y'); + const maxQtyLimit = itemWiseLimitPreferenece?.SettingCount || overAllLimitPreferenece?.SettingCount || null; useEffect(() => { getBookingTypeId(); }, []); @@ -49,6 +57,15 @@ 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) { + message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) + return; + } + } + } setOnePeiceFlow(Parameter === 'OnePeiceProduct'); const transformedItem = { diff --git a/src/Pages/Kiosk/CardPage/CardPage2.jsx b/src/Pages/Kiosk/CardPage/CardPage2.jsx index 64696bf..d694a4a 100644 --- a/src/Pages/Kiosk/CardPage/CardPage2.jsx +++ b/src/Pages/Kiosk/CardPage/CardPage2.jsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; -import { Drawer } from 'antd'; +import { Drawer, message } from 'antd'; import { DefaultModal } from '../../../Components/Modal/DefaultModal'; import { changeKioskPageName, @@ -15,10 +15,12 @@ import { changeKioskOrderDetails, } from '../../../Features/BookingScreen/BookingData/KioskBookingData'; import horizontal from '../../../Images/defaultItemImg.png'; -import { getConfigType } from '../../../Features/BookingScreen/BookingData/BookingData'; +import { getConfigType, PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; +import { calculateOverAllQtyLimit } from '../../../utils/calculations.js'; const CardPage2 = (props) => { const dispatch = useDispatch(); + const preferenceDatas = useSelector(PreferenceData); const kioskCategoriesCard = useSelector(GlobalProductCardListKiosk); const KioskOrderDetails = useSelector(GlobalKioskOrderDetails); const getKioskLightColourdata = useSelector(getKioskLightColour); @@ -35,6 +37,13 @@ const CardPage2 = (props) => { (i) => i.SettingIdName === 'PrintUom' )?.[0]; + const overAllLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y'); + const itemWiseLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => item.SettingIdName?.toLowerCase() === 'itemwiselimit' && item?.SettingValue === 'Y'); + const maxQtyLimit = itemWiseLimitPreferenece?.SettingCount || overAllLimitPreferenece?.SettingCount || null; useEffect(() => { getBookingTypeId(); }, []); @@ -48,6 +57,16 @@ 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) { + message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) + return; + } + } + } + setOnePeiceFlow(Parameter === 'OnePeiceProduct'); const transformedItem = { @@ -81,11 +100,11 @@ const CardPage2 = (props) => { (cartItem) => cartItem?.ProdId === item?.ProductDetail?.[0]?.ProdId && cartItem?.InwardDtlId === - item?.ProductDetail?.[0]?.ProdVariantDetails?.[0]?.StockDetails?.[0] - ?.InwardDtlId && + item?.ProductDetail?.[0]?.ProdVariantDetails?.[0]?.StockDetails?.[0] + ?.InwardDtlId && cartItem?.OrderRate === - item?.ProductDetail?.[0]?.ProdVariantDetails?.[0]?.StockDetails?.[0] - ?.SellPrice + item?.ProductDetail?.[0]?.ProdVariantDetails?.[0]?.StockDetails?.[0] + ?.SellPrice ); if (Isincart && Isincart?.StockAvailable === 'Y') { if (Isincart?.BalanceQty > Isincart?.OrderQty) { @@ -131,13 +150,13 @@ const CardPage2 = (props) => { (cartItem) => cartItem?.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 ); console.log(Isincart, item, KioskOrderDetails, 'IsincartsingleVarient'); if (Isincart && Isincart?.StockAvailable === 'Y') { @@ -236,7 +255,7 @@ const CardPage2 = (props) => { SinglePc: onePcs ? 'Y' : 'N', NoOfPcs: onePcs ? a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] - ?.StockDetails?.[stockIndex]?.NoOfPcs + ?.StockDetails?.[stockIndex]?.NoOfPcs : null, ProdVariantName: a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] @@ -261,14 +280,14 @@ const CardPage2 = (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, SuppId: a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] ?.StockDetails?.[stockIndex]?.SuppId, @@ -312,28 +331,28 @@ const CardPage2 = (props) => { cartItem // if the item is already in the cart, increase the quantity of the item ) => cartItem.ProdId === item.ProdId && - cartItem.InwardDtlId === item.InwardDtlId && - cartItem.OrderRate === item.OrderRate && - cartItem.BookingTypeName === item.BookingTypeName + cartItem.InwardDtlId === item.InwardDtlId && + cartItem.OrderRate === item.OrderRate && + cartItem.BookingTypeName === item.BookingTypeName ? { - ...cartItem, - OrderQty: cartItem.OrderQty + 1, - TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, - TaxAmt: ( + ...cartItem, + OrderQty: cartItem.OrderQty + 1, + TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, + TaxAmt: ( + ((cartItem.OrderQty + 1) * + cartItem.OrderRate * + cartItem.TaxPercentage) / + (100 + cartItem.TaxPercentage) + ).toFixed(2), + WithoutTaxRate: + (cartItem.OrderQty + 1) * cartItem.OrderRate - + ( ((cartItem.OrderQty + 1) * cartItem.OrderRate * cartItem.TaxPercentage) / (100 + cartItem.TaxPercentage) ).toFixed(2), - WithoutTaxRate: - (cartItem.OrderQty + 1) * cartItem.OrderRate - - ( - ((cartItem.OrderQty + 1) * - cartItem.OrderRate * - cartItem.TaxPercentage) / - (100 + cartItem.TaxPercentage) - ).toFixed(2), - } + } : cartItem // otherwise, return the cart item ) ) @@ -515,9 +534,9 @@ const CardPage2 = (props) => { card?.OverAllQty, KioskOrderDetails ) > 0) || - card?.ProductDetail?.some( - (item) => item?.StockAvailable !== 'Y' - ) + card?.ProductDetail?.some( + (item) => item?.StockAvailable !== 'Y' + ) ? 'CardPage2-container' : 'CardPage2-container-dis ' } @@ -540,9 +559,9 @@ const CardPage2 = (props) => { card?.OverAllQty, KioskOrderDetails ) > 0) || - card?.ProductDetail?.some( - (item) => item?.StockAvailable !== 'Y' - ) ? ( + card?.ProductDetail?.some( + (item) => item?.StockAvailable !== 'Y' + ) ? ( '' ) : (
{ card?.ProductDetail?.some( (item) => item?.StockAvailable !== 'Y' )) && ( -

- {' '} - - ₹ - - {ItemSellingPrice(card)}  - - ({ItemSize(card)} {ItemUomName(card)}) - -

- )} +

+ {' '} + + ₹ + + {ItemSellingPrice(card)}  + + ({ItemSize(card)} {ItemUomName(card)}) + +

+ )}
) )} @@ -723,7 +742,7 @@ const CardPage2 = (props) => { KioskOrderDetails, item?.ProdVariantName ) > 0 || - qtydata?.ProductDetail?.[QtyIndex]?.StockAvailable !== + qtydata?.ProductDetail?.[QtyIndex]?.StockAvailable !== 'Y' ? 'ProVariantCard' : 'ProVariantCard-dis' @@ -739,7 +758,7 @@ const CardPage2 = (props) => { KioskOrderDetails, item?.ProdVariantName ) > 0 || - qtydata?.ProductDetail?.[QtyIndex]?.StockAvailable !== + qtydata?.ProductDetail?.[QtyIndex]?.StockAvailable !== 'Y' ? (
₹ {item?.StockDetails?.[0]?.SellPrice}
) : ( diff --git a/src/Pages/Kiosk/CardPage/CardPage3.jsx b/src/Pages/Kiosk/CardPage/CardPage3.jsx index 2ac1b9f..d1553b5 100644 --- a/src/Pages/Kiosk/CardPage/CardPage3.jsx +++ b/src/Pages/Kiosk/CardPage/CardPage3.jsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react'; -import { Drawer } from 'antd'; +import { Drawer, message } from 'antd'; import { IoCheckmarkCircle } from 'react-icons/io5'; import { DefaultModal } from '../../../Components/Modal/DefaultModal'; import defaultimage from '../../../Images/defaultItemImg.png'; @@ -14,10 +14,12 @@ import { import { settingDataSelector } from '../../../Features/PreferenceMaster/PreferenceMaster.js'; import horizontal from '../../../Images/defaultItemImg.png'; import { getKioskLightColour } from '../../../Features/Kiosk/kiosk'; -import { getConfigType } from '../../../Features/BookingScreen/BookingData/BookingData'; +import { getConfigType, PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; +import { calculateOverAllQtyLimit } from '../../../utils/calculations.js'; const CardPage3 = (props) => { const dispatch = useDispatch(); + const preferenceDatas = useSelector(PreferenceData); const kioskCategoriesCard = useSelector(GlobalProductCardListKiosk); const KioskOrderDetails = useSelector(GlobalKioskOrderDetails); console.log(KioskOrderDetails, 'KioskOrderDetailsKioskOrderDetails'); @@ -35,6 +37,13 @@ const CardPage3 = (props) => { const UomPrint = SettingDataSelector?.[0]?.SettingDtlDetails.filter( (i) => i.SettingIdName === 'PrintUom' )?.[0]; + const overAllLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y'); + const itemWiseLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => item.SettingIdName?.toLowerCase() === 'itemwiselimit' && item?.SettingValue === 'Y'); + const maxQtyLimit = itemWiseLimitPreferenece?.SettingCount || overAllLimitPreferenece?.SettingCount || null; const onClose = () => { setopenQuantity(false); }; @@ -47,6 +56,15 @@ 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) { + message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) + return; + } + } + } setOnePeiceFlow(Parameter === 'OnePeiceProduct'); const transformedItem = { @@ -80,11 +98,11 @@ const CardPage3 = (props) => { (cartItem) => cartItem?.ProdId === item?.ProductDetail?.[0]?.ProdId && cartItem?.InwardDtlId === - item?.ProductDetail?.[0]?.ProdVariantDetails?.[0]?.StockDetails?.[0] - ?.InwardDtlId && + item?.ProductDetail?.[0]?.ProdVariantDetails?.[0]?.StockDetails?.[0] + ?.InwardDtlId && cartItem?.OrderRate === - item?.ProductDetail?.[0]?.ProdVariantDetails?.[0]?.StockDetails?.[0] - ?.SellPrice + item?.ProductDetail?.[0]?.ProdVariantDetails?.[0]?.StockDetails?.[0] + ?.SellPrice ); if (Isincart && Isincart?.StockAvailable === 'Y') { if (Isincart?.BalanceQty > Isincart?.OrderQty) { @@ -131,13 +149,13 @@ const CardPage3 = (props) => { (cartItem) => cartItem?.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 ); console.log(Isincart, item, KioskOrderDetails, 'IsincartsingleVarient'); if (Isincart && Isincart?.StockAvailable === 'Y') { @@ -234,7 +252,7 @@ const CardPage3 = (props) => { SinglePc: onePcs ? 'Y' : 'N', NoOfPcs: onePcs ? a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] - ?.StockDetails?.[stockIndex]?.NoOfPcs + ?.StockDetails?.[stockIndex]?.NoOfPcs : null, ProdVariantName: a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] @@ -259,14 +277,14 @@ const CardPage3 = (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, SuppId: a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] ?.StockDetails?.[stockIndex]?.SuppId, @@ -310,28 +328,28 @@ const CardPage3 = (props) => { cartItem // if the item is already in the cart, increase the quantity of the item ) => cartItem.ProdId === item.ProdId && - cartItem.InwardDtlId === item.InwardDtlId && - cartItem.OrderRate === item.OrderRate && - cartItem.BookingTypeName === item.BookingTypeName + cartItem.InwardDtlId === item.InwardDtlId && + cartItem.OrderRate === item.OrderRate && + cartItem.BookingTypeName === item.BookingTypeName ? { - ...cartItem, - OrderQty: cartItem.OrderQty + 1, - TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, - TaxAmt: ( + ...cartItem, + OrderQty: cartItem.OrderQty + 1, + TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, + TaxAmt: ( + ((cartItem.OrderQty + 1) * + cartItem.OrderRate * + cartItem.TaxPercentage) / + (100 + cartItem.TaxPercentage) + ).toFixed(2), + WithoutTaxRate: + (cartItem.OrderQty + 1) * cartItem.OrderRate - + ( ((cartItem.OrderQty + 1) * cartItem.OrderRate * cartItem.TaxPercentage) / (100 + cartItem.TaxPercentage) ).toFixed(2), - WithoutTaxRate: - (cartItem.OrderQty + 1) * cartItem.OrderRate - - ( - ((cartItem.OrderQty + 1) * - cartItem.OrderRate * - cartItem.TaxPercentage) / - (100 + cartItem.TaxPercentage) - ).toFixed(2), - } + } : cartItem // otherwise, return the cart item ) ) @@ -516,9 +534,9 @@ const CardPage3 = (props) => { card?.OverAllQty, KioskOrderDetails ) > 0) || - card?.ProductDetail?.some( - (item) => item?.StockAvailable !== 'Y' - ) + card?.ProductDetail?.some( + (item) => item?.StockAvailable !== 'Y' + ) ? 'CardPage3-container' : 'CardPage3-container-dis' } @@ -529,10 +547,10 @@ const CardPage3 = (props) => { {KioskOrderDetails?.some( (item) => item?.ProdName === card?.ProdName ) && ( -
- -
- )} +
+ +
+ )} { card?.OverAllQty, KioskOrderDetails ) > 0) || - card?.ProductDetail?.some( - (item) => item?.StockAvailable !== 'Y' - ) ? ( + card?.ProductDetail?.some( + (item) => item?.StockAvailable !== 'Y' + ) ? ( '' ) : (
{ card?.ProductDetail?.some( (item) => item?.StockAvailable !== 'Y' )) && ( -

- ₹{ItemSellingPrice(card)}  - - ({ItemSize(card)} {ItemUomName(card)}) - -

- )} +

+ ₹{ItemSellingPrice(card)}  + + ({ItemSize(card)} {ItemUomName(card)}) + +

+ )}
) )} @@ -724,7 +742,7 @@ const CardPage3 = (props) => { KioskOrderDetails, item?.ProdVariantName ) > 0 || - qtydata?.ProductDetail?.[QtyIndex]?.StockAvailable !== + qtydata?.ProductDetail?.[QtyIndex]?.StockAvailable !== 'Y' ? 'ProVariantCard' : 'ProVariantCard-dis' @@ -740,7 +758,7 @@ const CardPage3 = (props) => { KioskOrderDetails, item?.ProdVariantName ) > 0 || - qtydata?.ProductDetail?.[QtyIndex]?.StockAvailable !== + qtydata?.ProductDetail?.[QtyIndex]?.StockAvailable !== 'Y' ? (
₹{item?.StockDetails?.[0]?.SellPrice}
) : ( diff --git a/src/Pages/Kiosk/CardPage/CardPage4.jsx b/src/Pages/Kiosk/CardPage/CardPage4.jsx index dbee12c..c11ccfd 100644 --- a/src/Pages/Kiosk/CardPage/CardPage4.jsx +++ b/src/Pages/Kiosk/CardPage/CardPage4.jsx @@ -3,7 +3,7 @@ import { useDispatch, useSelector } from 'react-redux'; import { AiFillPlusCircle, AiFillMinusCircle } from 'react-icons/ai'; import { BsHandbag } from 'react-icons/bs'; import { DefaultModal } from '../../../Components/Modal/DefaultModal'; -import { Drawer } from 'antd'; +import { Drawer, message } from 'antd'; import '../../../Styles/Kiosk/CardPage/CardPage4.scss'; import { GlobalBookingTypeKiosk, @@ -14,10 +14,12 @@ import { import { settingDataSelector } from '../../../Features/PreferenceMaster/PreferenceMaster.js'; import horizontal from '../../../Images/defaultItemImg.png'; import { getKioskLightColour } from '../../../Features/Kiosk/kiosk'; -import { getConfigType } from '../../../Features/BookingScreen/BookingData/BookingData'; +import { getConfigType, PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; +import { calculateOverAllQtyLimit } from '../../../utils/calculations.js'; const CardPage4 = (props) => { const dispatch = useDispatch(); + const preferenceDatas = useSelector(PreferenceData); const kioskCategoriesCard = useSelector(GlobalProductCardListKiosk); const KioskOrderDetails = useSelector(GlobalKioskOrderDetails); console.log(KioskOrderDetails, 'KioskOrderDetails'); @@ -36,7 +38,13 @@ const CardPage4 = (props) => { const UomPrint = SettingDataSelector?.[0]?.SettingDtlDetails.filter( (i) => i.SettingIdName === 'PrintUom' )?.[0]; - + const overAllLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y'); + const itemWiseLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => item.SettingIdName?.toLowerCase() === 'itemwiselimit' && item?.SettingValue === 'Y'); + const maxQtyLimit = itemWiseLimitPreferenece?.SettingCount || overAllLimitPreferenece?.SettingCount || null; useEffect(() => { getBookingTypeId(); }, []); @@ -79,6 +87,15 @@ 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) { + message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) + return; + } + } + } setOnePeiceFlow(Parameter === 'OnePeiceProduct'); const transformedItem = { @@ -112,11 +129,11 @@ const CardPage4 = (props) => { (cartItem) => cartItem?.ProdId === item?.ProductDetail?.[0]?.ProdId && cartItem?.InwardDtlId === - item?.ProductDetail?.[0]?.ProdVariantDetails?.[0]?.StockDetails?.[0] - ?.InwardDtlId && + item?.ProductDetail?.[0]?.ProdVariantDetails?.[0]?.StockDetails?.[0] + ?.InwardDtlId && cartItem?.OrderRate === - item?.ProductDetail?.[0]?.ProdVariantDetails?.[0]?.StockDetails?.[0] - ?.SellPrice + item?.ProductDetail?.[0]?.ProdVariantDetails?.[0]?.StockDetails?.[0] + ?.SellPrice ); if (Isincart && Isincart?.StockAvailable === 'Y') { if (Isincart?.BalanceQty > Isincart?.OrderQty) { @@ -162,13 +179,13 @@ const CardPage4 = (props) => { (cartItem) => cartItem?.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 ); if (Isincart && Isincart?.StockAvailable === 'Y') { @@ -259,7 +276,7 @@ const CardPage4 = (props) => { SinglePc: onePcs ? 'Y' : 'N', NoOfPcs: onePcs ? a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] - ?.StockDetails?.[stockIndex]?.NoOfPcs + ?.StockDetails?.[stockIndex]?.NoOfPcs : null, ProdVariantName: a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] @@ -284,14 +301,14 @@ const CardPage4 = (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, SuppId: a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] ?.StockDetails?.[stockIndex]?.SuppId, @@ -335,28 +352,28 @@ const CardPage4 = (props) => { cartItem // if the item is already in the cart, increase the quantity of the item ) => cartItem.ProdId === item.ProdId && - cartItem.InwardDtlId === item.InwardDtlId && - cartItem.OrderRate === item.OrderRate && - cartItem?.BookingTypeName === item?.BookingTypeName + cartItem.InwardDtlId === item.InwardDtlId && + cartItem.OrderRate === item.OrderRate && + cartItem?.BookingTypeName === item?.BookingTypeName ? { - ...cartItem, - OrderQty: cartItem.OrderQty + 1, - TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, - TaxAmt: ( + ...cartItem, + OrderQty: cartItem.OrderQty + 1, + TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, + TaxAmt: ( + ((cartItem.OrderQty + 1) * + cartItem.OrderRate * + cartItem.TaxPercentage) / + (100 + cartItem.TaxPercentage) + ).toFixed(2), + WithoutTaxRate: + (cartItem.OrderQty + 1) * cartItem.OrderRate - + ( ((cartItem.OrderQty + 1) * cartItem.OrderRate * cartItem.TaxPercentage) / (100 + cartItem.TaxPercentage) ).toFixed(2), - WithoutTaxRate: - (cartItem.OrderQty + 1) * cartItem.OrderRate - - ( - ((cartItem.OrderQty + 1) * - cartItem.OrderRate * - cartItem.TaxPercentage) / - (100 + cartItem.TaxPercentage) - ).toFixed(2), - } + } : cartItem // otherwise, return the cart item ) ) @@ -583,9 +600,9 @@ const CardPage4 = (props) => { card?.OverAllQty, KioskOrderDetails ) > 0) || - card?.ProductDetail?.some( - (item) => item?.StockAvailable !== 'Y' - ) ? ( + card?.ProductDetail?.some( + (item) => item?.StockAvailable !== 'Y' + ) ? (
CardOnClick(card)} @@ -745,7 +762,7 @@ const CardPage4 = (props) => { KioskOrderDetails, item?.ProdVariantName ) > 0 || - qtydata?.ProductDetail?.[QtyIndex]?.StockAvailable !== + qtydata?.ProductDetail?.[QtyIndex]?.StockAvailable !== 'Y' ? 'ProVariantCard' : 'ProVariantCard-dis' @@ -761,7 +778,7 @@ const CardPage4 = (props) => { KioskOrderDetails, item?.ProdVariantName ) > 0 || - qtydata?.ProductDetail?.[QtyIndex]?.StockAvailable !== + qtydata?.ProductDetail?.[QtyIndex]?.StockAvailable !== 'Y' ? (
₹{item?.StockDetails?.[0]?.SellPrice}
) : ( diff --git a/src/Pages/Kiosk/KioskBookingPage.jsx b/src/Pages/Kiosk/KioskBookingPage.jsx index 8313af3..025d6c1 100644 --- a/src/Pages/Kiosk/KioskBookingPage.jsx +++ b/src/Pages/Kiosk/KioskBookingPage.jsx @@ -1,4 +1,4 @@ -import { useEffect, useState } from 'react'; +import { useEffect, useState } from 'react'; import { useSelector, useDispatch } from 'react-redux'; import axios from 'axios'; import { Skeleton } from 'antd'; @@ -70,6 +70,11 @@ const KioskBookingPage = () => { }, []); const fetchData = async () => { + dispatch(getPreferenceData({ + CompId: SessionDtl?.CompId, + BranchId: SessionDtl?.BranchId, + AppId: SessionDtl?.AppId, + })).unwrap(); const queryParams = await getQueryParams(); console.log('queryParams', queryParams); @@ -143,7 +148,7 @@ const KioskBookingPage = () => { responseData?.SessionId != null && responseData?.SessionId != undefined && sessionStore('SessionId', responseData?.SessionId); - responseData?.DeviceAddress != null && + responseData?.DeviceAddress != null && responseData?.DeviceAddress != undefined && sessionStore('DeviceAddress', MACAddress); sessionStore('hasRefreshed', true); @@ -160,10 +165,12 @@ const KioskBookingPage = () => { AppId: responseData?.AppId, DeviceMacAddress: MACAddress })).unwrap(); - - dispatch(getPreferenceData({ CompId: responseData?.CompId, + + dispatch(getPreferenceData({ + CompId: responseData?.CompId, BranchId: responseData?.BranchId, - AppId: responseData?.AppId,})).unwrap(); + AppId: responseData?.AppId, + })).unwrap(); dispatch( getProductCategories({ CompId: responseData?.CompId, @@ -274,7 +281,7 @@ const KioskBookingPage = () => { AppId: AppId, }) ).unwrap(); - + if (Response?.data?.statusCode == 1) { dispatch( getProductCardListKiosk({ diff --git a/src/Pages/Kiosk/OrderCart/OrderCart1.jsx b/src/Pages/Kiosk/OrderCart/OrderCart1.jsx index 39926b9..ab1f3d1 100644 --- a/src/Pages/Kiosk/OrderCart/OrderCart1.jsx +++ b/src/Pages/Kiosk/OrderCart/OrderCart1.jsx @@ -4,9 +4,22 @@ import { changeKioskOrderDetails } from '../../../Features/BookingScreen/Booking import PozoDineInIcon from '../KioskIcons/KioskDineIn'; import TakeAway from '../KioskIcons/KioskTakeAway'; import '../../../Styles/Kiosk/OrderCart/OrderCart1.scss'; +import { useSelector } from 'react-redux'; +import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; +import { message } from 'antd'; +import { calculateOverAllQtyLimit } from '../../../utils/calculations'; const KisokOrderCart1 = (props) => { const dispatch = useDispatch(); + const preferenceDatas = useSelector(PreferenceData); + const overAllLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y'); + const itemWiseLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => item.SettingIdName?.toLowerCase() === 'itemwiselimit' && item?.SettingValue === 'Y'); + const maxQtyLimit = itemWiseLimitPreferenece?.SettingCount || overAllLimitPreferenece?.SettingCount || null; + const KioskOrderDetails = props?.KioskOrderDetails; const removeFromCart = async (item) => { await dispatch( @@ -24,6 +37,15 @@ const KisokOrderCart1 = (props) => { ); }; const increase = async (item) => { + if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { + if (overAllLimitPreferenece) { + const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); + if ((calculatedOverAllQty + 1) > maxQtyLimit) { + message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) + return; + } + } + } await dispatch( changeKioskOrderDetails( KioskOrderDetails?.map( @@ -31,28 +53,28 @@ const KisokOrderCart1 = (props) => { cartItem // if the item is already in the cart, increase the quantity of the item ) => cartItem.ProdId === item.ProdId && - cartItem.InwardDtlId === item.InwardDtlId && - cartItem.OrderRate === item.OrderRate && - cartItem?.BookingTypeName === item?.BookingTypeName + cartItem.InwardDtlId === item.InwardDtlId && + cartItem.OrderRate === item.OrderRate && + cartItem?.BookingTypeName === item?.BookingTypeName ? { - ...cartItem, - OrderQty: cartItem.OrderQty + 1, - TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, - TaxAmt: ( + ...cartItem, + OrderQty: cartItem.OrderQty + 1, + TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, + TaxAmt: ( + ((cartItem.OrderQty + 1) * + cartItem.OrderRate * + cartItem.TaxPercentage) / + (100 + cartItem.TaxPercentage) + ).toFixed(2), + WithoutTaxRate: + (cartItem.OrderQty + 1) * cartItem.OrderRate - + ( ((cartItem.OrderQty + 1) * cartItem.OrderRate * cartItem.TaxPercentage) / (100 + cartItem.TaxPercentage) ).toFixed(2), - WithoutTaxRate: - (cartItem.OrderQty + 1) * cartItem.OrderRate - - ( - ((cartItem.OrderQty + 1) * - cartItem.OrderRate * - cartItem.TaxPercentage) / - (100 + cartItem.TaxPercentage) - ).toFixed(2), - } + } : cartItem // otherwise, return the cart item ) ) @@ -76,28 +98,28 @@ const KisokOrderCart1 = (props) => { cartItem // if the item is already in the cart, increase the quantity of the item ) => cartItem.ProdId === item.ProdId && - cartItem.InwardDtlId === item.InwardDtlId && - cartItem.OrderRate === item.OrderRate && - cartItem?.BookingTypeName === item?.BookingTypeName + cartItem.InwardDtlId === item.InwardDtlId && + cartItem.OrderRate === item.OrderRate && + cartItem?.BookingTypeName === item?.BookingTypeName ? { - ...cartItem, - OrderQty: cartItem.OrderQty - 1, - TotalAmt: (cartItem.OrderQty - 1) * cartItem.OrderRate, - TaxAmt: ( + ...cartItem, + OrderQty: cartItem.OrderQty - 1, + TotalAmt: (cartItem.OrderQty - 1) * cartItem.OrderRate, + TaxAmt: ( + ((cartItem.OrderQty - 1) * + cartItem.OrderRate * + cartItem.TaxPercentage) / + (100 + cartItem.TaxPercentage) + ).toFixed(2), + WithoutTaxRate: + (cartItem.OrderQty - 1) * cartItem.OrderRate - + ( ((cartItem.OrderQty - 1) * cartItem.OrderRate * cartItem.TaxPercentage) / (100 + cartItem.TaxPercentage) ).toFixed(2), - WithoutTaxRate: - (cartItem.OrderQty - 1) * cartItem.OrderRate - - ( - ((cartItem.OrderQty - 1) * - cartItem.OrderRate * - cartItem.TaxPercentage) / - (100 + cartItem.TaxPercentage) - ).toFixed(2), - } + } : cartItem // otherwise, return the cart item ) ) diff --git a/src/Pages/Kiosk/OrderCart/OrderCart2.jsx b/src/Pages/Kiosk/OrderCart/OrderCart2.jsx index 7789636..7b2e35d 100644 --- a/src/Pages/Kiosk/OrderCart/OrderCart2.jsx +++ b/src/Pages/Kiosk/OrderCart/OrderCart2.jsx @@ -6,9 +6,22 @@ import '../../../Styles/Kiosk/OrderCart/OrderCart2.scss'; import PozoDineInIcon from '../KioskIcons/KioskDineIn'; import TakeAway from '../KioskIcons/KioskTakeAway'; import { color } from 'highcharts'; +import { calculateOverAllQtyLimit } from '../../../utils/calculations'; +import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; +import { useSelector } from 'react-redux'; +import { message } from 'antd'; const KisokOrderCart2 = (props) => { const dispatch = useDispatch(); + const preferenceDatas = useSelector(PreferenceData); + const overAllLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y'); + const itemWiseLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => item.SettingIdName?.toLowerCase() === 'itemwiselimit' && item?.SettingValue === 'Y'); + const maxQtyLimit = itemWiseLimitPreferenece?.SettingCount || overAllLimitPreferenece?.SettingCount || null; + const KioskOrderDetails = props?.KioskOrderDetails; const removeFromCart = async (item) => { @@ -27,6 +40,16 @@ const KisokOrderCart2 = (props) => { ); }; const increase = async (item) => { + if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { + if (overAllLimitPreferenece) { + const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); + if ((calculatedOverAllQty + 1) > maxQtyLimit) { + message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) + return; + } + } + } + await dispatch( changeKioskOrderDetails( KioskOrderDetails?.map( @@ -34,28 +57,28 @@ const KisokOrderCart2 = (props) => { cartItem // if the item is already in the cart, increase the quantity of the item ) => cartItem.ProdId === item.ProdId && - cartItem.InwardDtlId === item.InwardDtlId && - cartItem.OrderRate === item.OrderRate && - cartItem?.BookingTypeName === item?.BookingTypeName + cartItem.InwardDtlId === item.InwardDtlId && + cartItem.OrderRate === item.OrderRate && + cartItem?.BookingTypeName === item?.BookingTypeName ? { - ...cartItem, - OrderQty: cartItem.OrderQty + 1, - TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, - TaxAmt: ( + ...cartItem, + OrderQty: cartItem.OrderQty + 1, + TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, + TaxAmt: ( + ((cartItem.OrderQty + 1) * + cartItem.OrderRate * + cartItem.TaxPercentage) / + (100 + cartItem.TaxPercentage) + ).toFixed(2), + WithoutTaxRate: + (cartItem.OrderQty + 1) * cartItem.OrderRate - + ( ((cartItem.OrderQty + 1) * cartItem.OrderRate * cartItem.TaxPercentage) / (100 + cartItem.TaxPercentage) ).toFixed(2), - WithoutTaxRate: - (cartItem.OrderQty + 1) * cartItem.OrderRate - - ( - ((cartItem.OrderQty + 1) * - cartItem.OrderRate * - cartItem.TaxPercentage) / - (100 + cartItem.TaxPercentage) - ).toFixed(2), - } + } : cartItem // otherwise, return the cart item ) ) @@ -79,28 +102,28 @@ const KisokOrderCart2 = (props) => { cartItem // if the item is already in the cart, increase the quantity of the item ) => cartItem.ProdId === item.ProdId && - cartItem.InwardDtlId === item.InwardDtlId && - cartItem.OrderRate === item.OrderRate && - cartItem.BookingTypeName === item.BookingTypeName + cartItem.InwardDtlId === item.InwardDtlId && + cartItem.OrderRate === item.OrderRate && + cartItem.BookingTypeName === item.BookingTypeName ? { - ...cartItem, - OrderQty: cartItem.OrderQty - 1, - TotalAmt: (cartItem.OrderQty - 1) * cartItem.OrderRate, - TaxAmt: ( + ...cartItem, + OrderQty: cartItem.OrderQty - 1, + TotalAmt: (cartItem.OrderQty - 1) * cartItem.OrderRate, + TaxAmt: ( + ((cartItem.OrderQty - 1) * + cartItem.OrderRate * + cartItem.TaxPercentage) / + (100 + cartItem.TaxPercentage) + ).toFixed(2), + WithoutTaxRate: + (cartItem.OrderQty - 1) * cartItem.OrderRate - + ( ((cartItem.OrderQty - 1) * cartItem.OrderRate * cartItem.TaxPercentage) / (100 + cartItem.TaxPercentage) ).toFixed(2), - WithoutTaxRate: - (cartItem.OrderQty - 1) * cartItem.OrderRate - - ( - ((cartItem.OrderQty - 1) * - cartItem.OrderRate * - cartItem.TaxPercentage) / - (100 + cartItem.TaxPercentage) - ).toFixed(2), - } + } : cartItem // otherwise, return the cart item ) ) diff --git a/src/Pages/Kiosk/OrderCart/OrderCart3.jsx b/src/Pages/Kiosk/OrderCart/OrderCart3.jsx index dfe3333..51f4a37 100644 --- a/src/Pages/Kiosk/OrderCart/OrderCart3.jsx +++ b/src/Pages/Kiosk/OrderCart/OrderCart3.jsx @@ -8,10 +8,22 @@ import { import PozoDineInIcon from '../KioskIcons/KioskDineIn'; import TakeAway from '../KioskIcons/KioskTakeAway'; import '../../../Styles/Kiosk/OrderCart/OrderCart3.scss'; +import { calculateOverAllQtyLimit } from '../../../utils/calculations'; +import { message } from 'antd'; +import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; const KisokOrderCart3 = (props) => { const dispatch = useDispatch(); const getKioskDarkColourdata = useSelector(getKioskDarkColour); + const preferenceDatas = useSelector(PreferenceData); + const overAllLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y'); + const itemWiseLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => item.SettingIdName?.toLowerCase() === 'itemwiselimit' && item?.SettingValue === 'Y'); + const maxQtyLimit = itemWiseLimitPreferenece?.SettingCount || overAllLimitPreferenece?.SettingCount || null; + const BookingTypeBoth = useSelector(GlobalKioskBookingTypeBoth); const KioskOrderDetails = props?.KioskOrderDetails; @@ -31,6 +43,15 @@ const KisokOrderCart3 = (props) => { ); }; const increase = async (item) => { + if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { + if (overAllLimitPreferenece) { + const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); + if ((calculatedOverAllQty + 1) > maxQtyLimit) { + message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) + return; + } + } + } await dispatch( changeKioskOrderDetails( KioskOrderDetails?.map( @@ -38,28 +59,28 @@ const KisokOrderCart3 = (props) => { cartItem // if the item is already in the cart, increase the quantity of the item ) => cartItem.ProdId === item.ProdId && - cartItem.InwardDtlId === item.InwardDtlId && - cartItem.OrderRate === item.OrderRate && - cartItem?.BookingTypeName === item?.BookingTypeName + cartItem.InwardDtlId === item.InwardDtlId && + cartItem.OrderRate === item.OrderRate && + cartItem?.BookingTypeName === item?.BookingTypeName ? { - ...cartItem, - OrderQty: cartItem.OrderQty + 1, - TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, - TaxAmt: ( + ...cartItem, + OrderQty: cartItem.OrderQty + 1, + TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, + TaxAmt: ( + ((cartItem.OrderQty + 1) * + cartItem.OrderRate * + cartItem.TaxPercentage) / + (100 + cartItem.TaxPercentage) + ).toFixed(2), + WithoutTaxRate: + (cartItem.OrderQty + 1) * cartItem.OrderRate - + ( ((cartItem.OrderQty + 1) * cartItem.OrderRate * cartItem.TaxPercentage) / (100 + cartItem.TaxPercentage) ).toFixed(2), - WithoutTaxRate: - (cartItem.OrderQty + 1) * cartItem.OrderRate - - ( - ((cartItem.OrderQty + 1) * - cartItem.OrderRate * - cartItem.TaxPercentage) / - (100 + cartItem.TaxPercentage) - ).toFixed(2), - } + } : cartItem // otherwise, return the cart item ) ) @@ -81,28 +102,28 @@ const KisokOrderCart3 = (props) => { cartItem // if the item is already in the cart, increase the quantity of the item ) => cartItem.ProdId === item.ProdId && - cartItem.InwardDtlId === item.InwardDtlId && - cartItem.OrderRate === item.OrderRate && - cartItem?.BookingTypeName === item?.BookingTypeName + cartItem.InwardDtlId === item.InwardDtlId && + cartItem.OrderRate === item.OrderRate && + cartItem?.BookingTypeName === item?.BookingTypeName ? { - ...cartItem, - OrderQty: cartItem.OrderQty - 1, - TotalAmt: (cartItem.OrderQty - 1) * cartItem.OrderRate, - TaxAmt: ( + ...cartItem, + OrderQty: cartItem.OrderQty - 1, + TotalAmt: (cartItem.OrderQty - 1) * cartItem.OrderRate, + TaxAmt: ( + ((cartItem.OrderQty - 1) * + cartItem.OrderRate * + cartItem.TaxPercentage) / + (100 + cartItem.TaxPercentage) + ).toFixed(2), + WithoutTaxRate: + (cartItem.OrderQty - 1) * cartItem.OrderRate - + ( ((cartItem.OrderQty - 1) * cartItem.OrderRate * cartItem.TaxPercentage) / (100 + cartItem.TaxPercentage) ).toFixed(2), - WithoutTaxRate: - (cartItem.OrderQty - 1) * cartItem.OrderRate - - ( - ((cartItem.OrderQty - 1) * - cartItem.OrderRate * - cartItem.TaxPercentage) / - (100 + cartItem.TaxPercentage) - ).toFixed(2), - } + } : cartItem // otherwise, return the cart item ) ) diff --git a/src/Pages/Kiosk/OrderView/OrderView1.jsx b/src/Pages/Kiosk/OrderView/OrderView1.jsx index 2e18916..d5fcf51 100644 --- a/src/Pages/Kiosk/OrderView/OrderView1.jsx +++ b/src/Pages/Kiosk/OrderView/OrderView1.jsx @@ -16,6 +16,9 @@ import KioskFooter3 from '../Components/KioskFooter3'; import PozoDineInIcon from '../KioskIcons/KioskDineIn'; import TakeAway from '../KioskIcons/KioskTakeAway'; import '../../../Styles/Kiosk/OrderView/OrderView1.scss'; +import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; +import { calculateOverAllQtyLimit } from '../../../utils/calculations'; +import { message } from 'antd'; const OrderView1 = (props) => { const KioskThemeData = props?.hasOwnProperty('KioskThemeData') @@ -24,6 +27,14 @@ const OrderView1 = (props) => { const dispatch = useDispatch(); const KioskOrderDetails = useSelector(GlobalKioskOrderDetails); const getKioskLightColourdata = useSelector(getKioskLightColour); + const preferenceDatas = useSelector(PreferenceData); + const overAllLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y'); + const itemWiseLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => item.SettingIdName?.toLowerCase() === 'itemwiselimit' && item?.SettingValue === 'Y'); + const maxQtyLimit = itemWiseLimitPreferenece?.SettingCount || overAllLimitPreferenece?.SettingCount || null; const BackToCategory = async () => { await dispatch(changeKioskPageName('categoryPage')); @@ -44,6 +55,17 @@ const OrderView1 = (props) => { ); }; const increase = async (item) => { + + + if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { + if (overAllLimitPreferenece) { + const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); + if ((calculatedOverAllQty + 1) > maxQtyLimit) { + message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) + return; + } + } + } await dispatch( changeKioskOrderDetails( KioskOrderDetails?.map( @@ -51,28 +73,28 @@ const OrderView1 = (props) => { cartItem // if the item is already in the cart, increase the quantity of the item ) => cartItem.ProdId === item.ProdId && - cartItem.InwardDtlId === item.InwardDtlId && - cartItem.OrderRate === item.OrderRate && - cartItem?.BookingTypeName === item?.BookingTypeName + cartItem.InwardDtlId === item.InwardDtlId && + cartItem.OrderRate === item.OrderRate && + cartItem?.BookingTypeName === item?.BookingTypeName ? { - ...cartItem, - OrderQty: cartItem.OrderQty + 1, - TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, - TaxAmt: ( + ...cartItem, + OrderQty: cartItem.OrderQty + 1, + TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, + TaxAmt: ( + ((cartItem.OrderQty + 1) * + cartItem.OrderRate * + cartItem.TaxPercentage) / + (100 + cartItem.TaxPercentage) + ).toFixed(2), + WithoutTaxRate: + (cartItem.OrderQty + 1) * cartItem.OrderRate - + ( ((cartItem.OrderQty + 1) * cartItem.OrderRate * cartItem.TaxPercentage) / (100 + cartItem.TaxPercentage) ).toFixed(2), - WithoutTaxRate: - (cartItem.OrderQty + 1) * cartItem.OrderRate - - ( - ((cartItem.OrderQty + 1) * - cartItem.OrderRate * - cartItem.TaxPercentage) / - (100 + cartItem.TaxPercentage) - ).toFixed(2), - } + } : cartItem // otherwise, return the cart item ) ) @@ -96,28 +118,28 @@ const OrderView1 = (props) => { cartItem // if the item is already in the cart, increase the quantity of the item ) => cartItem.ProdId === item.ProdId && - cartItem.InwardDtlId === item.InwardDtlId && - cartItem.OrderRate === item.OrderRate && - cartItem?.BookingTypeName === item?.BookingTypeName + cartItem.InwardDtlId === item.InwardDtlId && + cartItem.OrderRate === item.OrderRate && + cartItem?.BookingTypeName === item?.BookingTypeName ? { - ...cartItem, - OrderQty: cartItem.OrderQty - 1, - TotalAmt: (cartItem.OrderQty - 1) * cartItem.OrderRate, - TaxAmt: ( + ...cartItem, + OrderQty: cartItem.OrderQty - 1, + TotalAmt: (cartItem.OrderQty - 1) * cartItem.OrderRate, + TaxAmt: ( + ((cartItem.OrderQty - 1) * + cartItem.OrderRate * + cartItem.TaxPercentage) / + (100 + cartItem.TaxPercentage) + ).toFixed(2), + WithoutTaxRate: + (cartItem.OrderQty - 1) * cartItem.OrderRate - + ( ((cartItem.OrderQty - 1) * cartItem.OrderRate * cartItem.TaxPercentage) / (100 + cartItem.TaxPercentage) ).toFixed(2), - WithoutTaxRate: - (cartItem.OrderQty - 1) * cartItem.OrderRate - - ( - ((cartItem.OrderQty - 1) * - cartItem.OrderRate * - cartItem.TaxPercentage) / - (100 + cartItem.TaxPercentage) - ).toFixed(2), - } + } : cartItem // otherwise, return the cart item ) ) diff --git a/src/Pages/Kiosk/OrderView/OrderView2.jsx b/src/Pages/Kiosk/OrderView/OrderView2.jsx index 5acb0b6..28532c8 100644 --- a/src/Pages/Kiosk/OrderView/OrderView2.jsx +++ b/src/Pages/Kiosk/OrderView/OrderView2.jsx @@ -18,6 +18,9 @@ import { IoMdClose } from 'react-icons/io'; import defaultImg from '../../../Images/defaultItemImg.png'; import PozoDineInIcon from '../KioskIcons/KioskDineIn'; import TakeAway from '../KioskIcons/KioskTakeAway'; +import { calculateOverAllQtyLimit } from '../../../utils/calculations'; +import { message } from 'antd'; +import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; const KioskOrderView2 = (props) => { console.log(props, 'propsprops'); @@ -25,6 +28,15 @@ const KioskOrderView2 = (props) => { ? props['KioskThemeData'] : null; const dispatch = useDispatch(); + const preferenceDatas = useSelector(PreferenceData); + const overAllLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y'); + const itemWiseLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => item.SettingIdName?.toLowerCase() === 'itemwiselimit' && item?.SettingValue === 'Y'); + const maxQtyLimit = itemWiseLimitPreferenece?.SettingCount || overAllLimitPreferenece?.SettingCount || null; + const KioskOrderDetails = useSelector(GlobalKioskOrderDetails); const getKioskLightColourdata = useSelector(getKioskLightColour); console.log(KioskOrderDetails, 'KioskOrderDetailsh'); @@ -54,6 +66,15 @@ const KioskOrderView2 = (props) => { ); }; const increase = async (item) => { + if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { + if (overAllLimitPreferenece) { + const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); + if ((calculatedOverAllQty + 1) > maxQtyLimit) { + message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) + return; + } + } + } await dispatch( changeKioskOrderDetails( KioskOrderDetails?.map( @@ -61,28 +82,28 @@ const KioskOrderView2 = (props) => { cartItem // if the item is already in the cart, increase the quantity of the item ) => cartItem.ProdId === item.ProdId && - cartItem.InwardDtlId === item.InwardDtlId && - cartItem.OrderRate === item.OrderRate && - cartItem?.BookingTypeName === item?.BookingTypeName + cartItem.InwardDtlId === item.InwardDtlId && + cartItem.OrderRate === item.OrderRate && + cartItem?.BookingTypeName === item?.BookingTypeName ? { - ...cartItem, - OrderQty: cartItem.OrderQty + 1, - TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, - TaxAmt: ( + ...cartItem, + OrderQty: cartItem.OrderQty + 1, + TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, + TaxAmt: ( + ((cartItem.OrderQty + 1) * + cartItem.OrderRate * + cartItem.TaxPercentage) / + (100 + cartItem.TaxPercentage) + ).toFixed(2), + WithoutTaxRate: + (cartItem.OrderQty + 1) * cartItem.OrderRate - + ( ((cartItem.OrderQty + 1) * cartItem.OrderRate * cartItem.TaxPercentage) / (100 + cartItem.TaxPercentage) ).toFixed(2), - WithoutTaxRate: - (cartItem.OrderQty + 1) * cartItem.OrderRate - - ( - ((cartItem.OrderQty + 1) * - cartItem.OrderRate * - cartItem.TaxPercentage) / - (100 + cartItem.TaxPercentage) - ).toFixed(2), - } + } : cartItem // otherwise, return the cart item ) ) @@ -106,28 +127,28 @@ const KioskOrderView2 = (props) => { cartItem // if the item is already in the cart, increase the quantity of the item ) => cartItem.ProdId === item.ProdId && - cartItem.InwardDtlId === item.InwardDtlId && - cartItem.OrderRate === item.OrderRate && - cartItem.BookingTypeName === item.BookingTypeName + cartItem.InwardDtlId === item.InwardDtlId && + cartItem.OrderRate === item.OrderRate && + cartItem.BookingTypeName === item.BookingTypeName ? { - ...cartItem, - OrderQty: cartItem.OrderQty - 1, - TotalAmt: (cartItem.OrderQty - 1) * cartItem.OrderRate, - TaxAmt: ( + ...cartItem, + OrderQty: cartItem.OrderQty - 1, + TotalAmt: (cartItem.OrderQty - 1) * cartItem.OrderRate, + TaxAmt: ( + ((cartItem.OrderQty - 1) * + cartItem.OrderRate * + cartItem.TaxPercentage) / + (100 + cartItem.TaxPercentage) + ).toFixed(2), + WithoutTaxRate: + (cartItem.OrderQty - 1) * cartItem.OrderRate - + ( ((cartItem.OrderQty - 1) * cartItem.OrderRate * cartItem.TaxPercentage) / (100 + cartItem.TaxPercentage) ).toFixed(2), - WithoutTaxRate: - (cartItem.OrderQty - 1) * cartItem.OrderRate - - ( - ((cartItem.OrderQty - 1) * - cartItem.OrderRate * - cartItem.TaxPercentage) / - (100 + cartItem.TaxPercentage) - ).toFixed(2), - } + } : cartItem // otherwise, return the cart item ) ) diff --git a/src/Pages/Kiosk/OrderView/OrderView3.jsx b/src/Pages/Kiosk/OrderView/OrderView3.jsx index f87c047..d9ecf12 100644 --- a/src/Pages/Kiosk/OrderView/OrderView3.jsx +++ b/src/Pages/Kiosk/OrderView/OrderView3.jsx @@ -18,6 +18,9 @@ import { import KioskFooter3 from '../Components/KioskFooter3'; import PozoDineInIcon from '../KioskIcons/KioskDineIn'; import TakeAway from '../KioskIcons/KioskTakeAway'; +import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; +import { calculateOverAllQtyLimit } from '../../../utils/calculations'; +import { message } from 'antd'; const KioskOrderView = (props) => { console.log(props, 'propsprops'); @@ -27,6 +30,14 @@ const KioskOrderView = (props) => { const dispatch = useDispatch(); const KioskOrderDetails = useSelector(GlobalKioskOrderDetails); const getKioskLightColourdata = useSelector(getKioskLightColour); + const preferenceDatas = useSelector(PreferenceData); + const overAllLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y'); + const itemWiseLimitPreferenece = + preferenceDatas?.[0]?.['SettingDtlDetails']?.find( + (item) => item.SettingIdName?.toLowerCase() === 'itemwiselimit' && item?.SettingValue === 'Y'); + const maxQtyLimit = itemWiseLimitPreferenece?.SettingCount || overAllLimitPreferenece?.SettingCount || null; const BackToCategory = async () => { await dispatch(changeKioskPageName('categoryPage')); @@ -47,6 +58,16 @@ const KioskOrderView = (props) => { ); }; const increase = async (item) => { + + if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) { + if (overAllLimitPreferenece) { + const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); + if ((calculatedOverAllQty + 1) > maxQtyLimit) { + message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) + return; + } + } + } await dispatch( changeKioskOrderDetails( KioskOrderDetails?.map( @@ -54,28 +75,28 @@ const KioskOrderView = (props) => { cartItem // if the item is already in the cart, increase the quantity of the item ) => cartItem.ProdId === item.ProdId && - cartItem.InwardDtlId === item.InwardDtlId && - cartItem.OrderRate === item.OrderRate && - cartItem?.BookingTypeName === item?.BookingTypeName + cartItem.InwardDtlId === item.InwardDtlId && + cartItem.OrderRate === item.OrderRate && + cartItem?.BookingTypeName === item?.BookingTypeName ? { - ...cartItem, - OrderQty: cartItem.OrderQty + 1, - TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, - TaxAmt: ( + ...cartItem, + OrderQty: cartItem.OrderQty + 1, + TotalAmt: (cartItem.OrderQty + 1) * cartItem.OrderRate, + TaxAmt: ( + ((cartItem.OrderQty + 1) * + cartItem.OrderRate * + cartItem.TaxPercentage) / + (100 + cartItem.TaxPercentage) + ).toFixed(2), + WithoutTaxRate: + (cartItem.OrderQty + 1) * cartItem.OrderRate - + ( ((cartItem.OrderQty + 1) * cartItem.OrderRate * cartItem.TaxPercentage) / (100 + cartItem.TaxPercentage) ).toFixed(2), - WithoutTaxRate: - (cartItem.OrderQty + 1) * cartItem.OrderRate - - ( - ((cartItem.OrderQty + 1) * - cartItem.OrderRate * - cartItem.TaxPercentage) / - (100 + cartItem.TaxPercentage) - ).toFixed(2), - } + } : cartItem // otherwise, return the cart item ) ) @@ -98,28 +119,28 @@ const KioskOrderView = (props) => { cartItem // if the item is already in the cart, increase the quantity of the item ) => cartItem.ProdId === item.ProdId && - cartItem.InwardDtlId === item.InwardDtlId && - cartItem.OrderRate === item.OrderRate && - cartItem?.BookingTypeName === item?.BookingTypeName + cartItem.InwardDtlId === item.InwardDtlId && + cartItem.OrderRate === item.OrderRate && + cartItem?.BookingTypeName === item?.BookingTypeName ? { - ...cartItem, - OrderQty: cartItem.OrderQty - 1, - TotalAmt: (cartItem.OrderQty - 1) * cartItem.OrderRate, - TaxAmt: ( + ...cartItem, + OrderQty: cartItem.OrderQty - 1, + TotalAmt: (cartItem.OrderQty - 1) * cartItem.OrderRate, + TaxAmt: ( + ((cartItem.OrderQty - 1) * + cartItem.OrderRate * + cartItem.TaxPercentage) / + (100 + cartItem.TaxPercentage) + ).toFixed(2), + WithoutTaxRate: + (cartItem.OrderQty - 1) * cartItem.OrderRate - + ( ((cartItem.OrderQty - 1) * cartItem.OrderRate * cartItem.TaxPercentage) / (100 + cartItem.TaxPercentage) ).toFixed(2), - WithoutTaxRate: - (cartItem.OrderQty - 1) * cartItem.OrderRate - - ( - ((cartItem.OrderQty - 1) * - cartItem.OrderRate * - cartItem.TaxPercentage) / - (100 + cartItem.TaxPercentage) - ).toFixed(2), - } + } : cartItem // otherwise, return the cart item ) ) @@ -201,10 +222,10 @@ const KioskOrderView = (props) => { {!item?.ProdVariantName?.toLowerCase().includes( 'variant' ) && ( - - {item?.ProdVariantName}{' '} - - )}{' '} + + {item?.ProdVariantName}{' '} + + )}{' '} {item?.Size}{' '} {item?.SinglePc == 'Y' ? 'PCS' : item?.UomName}