Merge pull request 'added time and qty limit' (#209) from qty-limit-time-limit into main

Reviewed-on: Pozomind/pozo-retail-app#209
This commit is contained in:
karthikalakshmi 2026-03-03 10:06:16 +05:30
commit 1869b0afb7
13 changed files with 276 additions and 30 deletions

View File

@ -18,6 +18,8 @@ import {
import horizontal from '../../../Images/defaultItemImg.png'; import horizontal from '../../../Images/defaultItemImg.png';
import { getConfigType, PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; import { getConfigType, PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData';
import { calculateOverAllQtyLimit } from '../../../utils/calculations.js'; import { calculateOverAllQtyLimit } from '../../../utils/calculations.js';
import { IoIosWarning } from "react-icons/io";
const CardPage1 = (props) => { const CardPage1 = (props) => {
const dispatch = useDispatch(); const dispatch = useDispatch();
@ -32,6 +34,7 @@ const CardPage1 = (props) => {
const [qtydata, setQtydata] = useState(); const [qtydata, setQtydata] = useState();
const [QtyIndex, setQtyIndex] = useState(0); const [QtyIndex, setQtyIndex] = useState(0);
const [ConfigDataList, setConfigDataList] = useState([]); const [ConfigDataList, setConfigDataList] = useState([]);
const [maxLimitExceeded, setMaxLimitExceeded] = useState(false);
const kioskTemplateData = props?.data; const kioskTemplateData = props?.data;
const SettingDataSelector = useSelector(settingDataSelector); const SettingDataSelector = useSelector(settingDataSelector);
const UomPrint = SettingDataSelector?.[0]?.SettingDtlDetails.filter( const UomPrint = SettingDataSelector?.[0]?.SettingDtlDetails.filter(
@ -61,7 +64,12 @@ const CardPage1 = (props) => {
if (overAllLimitPreferenece) { if (overAllLimitPreferenece) {
const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails);
if ((calculatedOverAllQty + 1) > maxQtyLimit) { if ((calculatedOverAllQty + 1) > maxQtyLimit) {
message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) setMaxLimitExceeded(true);
// Reset after 3 seconds
setTimeout(() => {
setMaxLimitExceeded(false);
}, 2000);
return; return;
} }
} }
@ -782,6 +790,11 @@ const CardPage1 = (props) => {
</> </>
} }
/> />
<div className={`Item3Warning ${maxLimitExceeded ? 'showing' : ''}`}>
<p>
<IoIosWarning size={30} color='#b99400' />Maximum Quantity ({maxQtyLimit}) Reached
</p>
</div>
</div> </div>
); );
}; };

View File

@ -17,6 +17,7 @@ import {
import horizontal from '../../../Images/defaultItemImg.png'; import horizontal from '../../../Images/defaultItemImg.png';
import { getConfigType, PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; import { getConfigType, PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData';
import { calculateOverAllQtyLimit } from '../../../utils/calculations.js'; import { calculateOverAllQtyLimit } from '../../../utils/calculations.js';
import { IoIosWarning } from 'react-icons/io';
const CardPage2 = (props) => { const CardPage2 = (props) => {
const dispatch = useDispatch(); const dispatch = useDispatch();
@ -26,6 +27,7 @@ const CardPage2 = (props) => {
const getKioskLightColourdata = useSelector(getKioskLightColour); const getKioskLightColourdata = useSelector(getKioskLightColour);
const BookingType = useSelector(GlobalBookingTypeKiosk); const BookingType = useSelector(GlobalBookingTypeKiosk);
const kioskTemplateData = props?.data; const kioskTemplateData = props?.data;
const [maxLimitExceeded, setMaxLimitExceeded] = useState(false);
const [openQuantity, setopenQuantity] = useState(false); const [openQuantity, setopenQuantity] = useState(false);
const [VariantOpen, setVariantOpen] = useState(false); const [VariantOpen, setVariantOpen] = useState(false);
const [onePeiceFlow, setOnePeiceFlow] = useState(false); const [onePeiceFlow, setOnePeiceFlow] = useState(false);
@ -61,7 +63,11 @@ const CardPage2 = (props) => {
if (overAllLimitPreferenece) { if (overAllLimitPreferenece) {
const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails);
if ((calculatedOverAllQty + 1) > maxQtyLimit) { if ((calculatedOverAllQty + 1) > maxQtyLimit) {
message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) setMaxLimitExceeded(true);
// Reset after 3 seconds
setTimeout(() => {
setMaxLimitExceeded(false);
}, 2000);
return; return;
} }
} }
@ -593,6 +599,11 @@ const CardPage2 = (props) => {
</div> </div>
) )
)} )}
<div className={`Item3Warning ${maxLimitExceeded ? 'showing' : ''}`}>
<p>
<IoIosWarning size={30} color='#b99400' />Maximum Quantity ({maxQtyLimit}) Reached
</p>
</div>
<Drawer <Drawer
title={<p className="cardpage-title">Select Quantity</p>} title={<p className="cardpage-title">Select Quantity</p>}
height={'max-content'} height={'max-content'}

View File

@ -16,6 +16,7 @@ import horizontal from '../../../Images/defaultItemImg.png';
import { getKioskLightColour } from '../../../Features/Kiosk/kiosk'; import { getKioskLightColour } from '../../../Features/Kiosk/kiosk';
import { getConfigType, PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; import { getConfigType, PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData';
import { calculateOverAllQtyLimit } from '../../../utils/calculations.js'; import { calculateOverAllQtyLimit } from '../../../utils/calculations.js';
import { IoIosWarning } from 'react-icons/io';
const CardPage3 = (props) => { const CardPage3 = (props) => {
const dispatch = useDispatch(); const dispatch = useDispatch();
@ -25,6 +26,7 @@ const CardPage3 = (props) => {
console.log(KioskOrderDetails, 'KioskOrderDetailsKioskOrderDetails'); console.log(KioskOrderDetails, 'KioskOrderDetailsKioskOrderDetails');
const getKioskLightColourdata = useSelector(getKioskLightColour); const getKioskLightColourdata = useSelector(getKioskLightColour);
const BookingType = useSelector(GlobalBookingTypeKiosk); const BookingType = useSelector(GlobalBookingTypeKiosk);
const [maxLimitExceeded, setMaxLimitExceeded] = useState(false);
const [openQuantity, setopenQuantity] = useState(false); const [openQuantity, setopenQuantity] = useState(false);
const [VariantOpen, setVariantOpen] = useState(false); const [VariantOpen, setVariantOpen] = useState(false);
const [onePeiceFlow, setOnePeiceFlow] = useState(false); const [onePeiceFlow, setOnePeiceFlow] = useState(false);
@ -60,7 +62,11 @@ const CardPage3 = (props) => {
if (overAllLimitPreferenece) { if (overAllLimitPreferenece) {
const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails);
if ((calculatedOverAllQty + 1) > maxQtyLimit) { if ((calculatedOverAllQty + 1) > maxQtyLimit) {
message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) setMaxLimitExceeded(true);
// Reset after 3 seconds
setTimeout(() => {
setMaxLimitExceeded(false);
}, 2000);
return; return;
} }
} }
@ -596,6 +602,11 @@ const CardPage3 = (props) => {
</div> </div>
) )
)} )}
<div className={`Item3Warning ${maxLimitExceeded ? 'showing' : ''}`}>
<p>
<IoIosWarning size={30} color='#b99400' />Maximum Quantity ({maxQtyLimit}) Reached
</p>
</div>
<Drawer <Drawer
title={<p className="cardpage-title">Select Quantity</p>} title={<p className="cardpage-title">Select Quantity</p>}
height={'max-content'} height={'max-content'}

View File

@ -16,6 +16,7 @@ import horizontal from '../../../Images/defaultItemImg.png';
import { getKioskLightColour } from '../../../Features/Kiosk/kiosk'; import { getKioskLightColour } from '../../../Features/Kiosk/kiosk';
import { getConfigType, PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; import { getConfigType, PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData';
import { calculateOverAllQtyLimit } from '../../../utils/calculations.js'; import { calculateOverAllQtyLimit } from '../../../utils/calculations.js';
import { IoIosWarning } from 'react-icons/io';
const CardPage4 = (props) => { const CardPage4 = (props) => {
const dispatch = useDispatch(); const dispatch = useDispatch();
@ -25,6 +26,7 @@ const CardPage4 = (props) => {
console.log(KioskOrderDetails, 'KioskOrderDetails'); console.log(KioskOrderDetails, 'KioskOrderDetails');
const getKioskLightColourdata = useSelector(getKioskLightColour); const getKioskLightColourdata = useSelector(getKioskLightColour);
const BookingType = useSelector(GlobalBookingTypeKiosk); const BookingType = useSelector(GlobalBookingTypeKiosk);
const [maxLimitExceeded, setMaxLimitExceeded] = useState(false);
const [quantities, setQuantities] = useState({}); const [quantities, setQuantities] = useState({});
const [openQuantity, setopenQuantity] = useState(false); const [openQuantity, setopenQuantity] = useState(false);
const [VariantOpen, setVariantOpen] = useState(false); const [VariantOpen, setVariantOpen] = useState(false);
@ -91,7 +93,11 @@ const CardPage4 = (props) => {
if (overAllLimitPreferenece) { if (overAllLimitPreferenece) {
const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails);
if ((calculatedOverAllQty + 1) > maxQtyLimit) { if ((calculatedOverAllQty + 1) > maxQtyLimit) {
message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) setMaxLimitExceeded(true);
// Reset after 3 seconds
setTimeout(() => {
setMaxLimitExceeded(false);
}, 2000);
return; return;
} }
} }
@ -617,7 +623,11 @@ const CardPage4 = (props) => {
</div> </div>
) )
)} )}
<div className={`Item3Warning ${maxLimitExceeded ? 'showing' : ''}`}>
<p>
<IoIosWarning size={30} color='#b99400' />Maximum Quantity ({maxQtyLimit}) Reached
</p>
</div>
<Drawer <Drawer
title={<p className="cardpage-title">Select Quantity</p>} title={<p className="cardpage-title">Select Quantity</p>}
height={'max-content'} height={'max-content'}

View File

@ -6,11 +6,13 @@ import TakeAway from '../KioskIcons/KioskTakeAway';
import '../../../Styles/Kiosk/OrderCart/OrderCart1.scss'; import '../../../Styles/Kiosk/OrderCart/OrderCart1.scss';
import { useSelector } from 'react-redux'; import { useSelector } from 'react-redux';
import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData';
import { message } from 'antd';
import { calculateOverAllQtyLimit } from '../../../utils/calculations'; import { calculateOverAllQtyLimit } from '../../../utils/calculations';
import { IoIosWarning } from 'react-icons/io';
import { useState } from 'react';
const KisokOrderCart1 = (props) => { const KisokOrderCart1 = (props) => {
const dispatch = useDispatch(); const dispatch = useDispatch();
const [maxLimitExceeded, setMaxLimitExceeded] = useState(false);
const preferenceDatas = useSelector(PreferenceData); const preferenceDatas = useSelector(PreferenceData);
const overAllLimitPreferenece = const overAllLimitPreferenece =
preferenceDatas?.[0]?.['SettingDtlDetails']?.find( preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
@ -41,7 +43,12 @@ const KisokOrderCart1 = (props) => {
if (overAllLimitPreferenece) { if (overAllLimitPreferenece) {
const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails);
if ((calculatedOverAllQty + 1) > maxQtyLimit) { if ((calculatedOverAllQty + 1) > maxQtyLimit) {
message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) setMaxLimitExceeded(true);
// Reset after 3 seconds
setTimeout(() => {
setMaxLimitExceeded(false);
}, 2000);
return; return;
} }
} }
@ -202,6 +209,11 @@ const KisokOrderCart1 = (props) => {
remove remove
</div> </div>
</div> </div>
<div className={`Item3Warning ${maxLimitExceeded ? 'showing' : ''}`}>
<p>
<IoIosWarning size={30} color='#b99400' />Maximum Quantity ({maxQtyLimit}) Reached
</p>
</div>
</div> </div>
))} ))}
</div> </div>

View File

@ -10,10 +10,13 @@ import { calculateOverAllQtyLimit } from '../../../utils/calculations';
import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData';
import { useSelector } from 'react-redux'; import { useSelector } from 'react-redux';
import { message } from 'antd'; import { message } from 'antd';
import { useState } from 'react';
import { IoIosWarning } from 'react-icons/io';
const KisokOrderCart2 = (props) => { const KisokOrderCart2 = (props) => {
const dispatch = useDispatch(); const dispatch = useDispatch();
const preferenceDatas = useSelector(PreferenceData); const preferenceDatas = useSelector(PreferenceData);
const [maxLimitExceeded, setMaxLimitExceeded] = useState(false);
const overAllLimitPreferenece = const overAllLimitPreferenece =
preferenceDatas?.[0]?.['SettingDtlDetails']?.find( preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
(item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y'); (item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y');
@ -44,7 +47,11 @@ const KisokOrderCart2 = (props) => {
if (overAllLimitPreferenece) { if (overAllLimitPreferenece) {
const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails);
if ((calculatedOverAllQty + 1) > maxQtyLimit) { if ((calculatedOverAllQty + 1) > maxQtyLimit) {
message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) setMaxLimitExceeded(true);
// Reset after 3 seconds
setTimeout(() => {
setMaxLimitExceeded(false);
}, 2000);
return; return;
} }
} }
@ -223,6 +230,11 @@ const KisokOrderCart2 = (props) => {
</div> </div>
))} ))}
</div> </div>
<div className={`Item3Warning ${maxLimitExceeded ? 'showing' : ''}`}>
<p>
<IoIosWarning size={30} color='#b99400' />Maximum Quantity ({maxQtyLimit}) Reached
</p>
</div>
</div> </div>
); );
}; };

View File

@ -11,9 +11,12 @@ import '../../../Styles/Kiosk/OrderCart/OrderCart3.scss';
import { calculateOverAllQtyLimit } from '../../../utils/calculations'; import { calculateOverAllQtyLimit } from '../../../utils/calculations';
import { message } from 'antd'; import { message } from 'antd';
import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData';
import { IoIosWarning } from 'react-icons/io';
import { useState } from 'react';
const KisokOrderCart3 = (props) => { const KisokOrderCart3 = (props) => {
const dispatch = useDispatch(); const dispatch = useDispatch();
const [maxLimitExceeded, setMaxLimitExceeded] = useState(false);
const getKioskDarkColourdata = useSelector(getKioskDarkColour); const getKioskDarkColourdata = useSelector(getKioskDarkColour);
const preferenceDatas = useSelector(PreferenceData); const preferenceDatas = useSelector(PreferenceData);
const overAllLimitPreferenece = const overAllLimitPreferenece =
@ -47,7 +50,11 @@ const KisokOrderCart3 = (props) => {
if (overAllLimitPreferenece) { if (overAllLimitPreferenece) {
const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails);
if ((calculatedOverAllQty + 1) > maxQtyLimit) { if ((calculatedOverAllQty + 1) > maxQtyLimit) {
message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) setMaxLimitExceeded(true);
// Reset after 3 seconds
setTimeout(() => {
setMaxLimitExceeded(false);
}, 2000);
return; return;
} }
} }
@ -236,6 +243,11 @@ const KisokOrderCart3 = (props) => {
</div> </div>
))} ))}
</div> </div>
<div className={`Item3Warning ${maxLimitExceeded ? 'showing' : ''}`}>
<p>
<IoIosWarning size={30} color='#b99400' />Maximum Quantity ({maxQtyLimit}) Reached
</p>
</div>
</div> </div>
); );
}; };

View File

@ -1,4 +1,4 @@
import React from 'react'; import React, { useState } from 'react';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import { MdCurrencyRupee } from 'react-icons/md'; import { MdCurrencyRupee } from 'react-icons/md';
import KioskHeader from '../Components/KioskHeader'; import KioskHeader from '../Components/KioskHeader';
@ -19,12 +19,14 @@ import '../../../Styles/Kiosk/OrderView/OrderView1.scss';
import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData';
import { calculateOverAllQtyLimit } from '../../../utils/calculations'; import { calculateOverAllQtyLimit } from '../../../utils/calculations';
import { message } from 'antd'; import { message } from 'antd';
import { IoIosWarning } from 'react-icons/io';
const OrderView1 = (props) => { const OrderView1 = (props) => {
const KioskThemeData = props?.hasOwnProperty('KioskThemeData') const KioskThemeData = props?.hasOwnProperty('KioskThemeData')
? props['KioskThemeData'] ? props['KioskThemeData']
: null; : null;
const dispatch = useDispatch(); const dispatch = useDispatch();
const [maxLimitExceeded, setMaxLimitExceeded] = useState(false);
const KioskOrderDetails = useSelector(GlobalKioskOrderDetails); const KioskOrderDetails = useSelector(GlobalKioskOrderDetails);
const getKioskLightColourdata = useSelector(getKioskLightColour); const getKioskLightColourdata = useSelector(getKioskLightColour);
const preferenceDatas = useSelector(PreferenceData); const preferenceDatas = useSelector(PreferenceData);
@ -61,7 +63,11 @@ const OrderView1 = (props) => {
if (overAllLimitPreferenece) { if (overAllLimitPreferenece) {
const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails);
if ((calculatedOverAllQty + 1) > maxQtyLimit) { if ((calculatedOverAllQty + 1) > maxQtyLimit) {
message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) setMaxLimitExceeded(true);
// Reset after 3 seconds
setTimeout(() => {
setMaxLimitExceeded(false);
}, 2000);
return; return;
} }
} }
@ -172,7 +178,6 @@ const OrderView1 = (props) => {
KioskThemeData={KioskThemeData} KioskThemeData={KioskThemeData}
SessionDtl={props?.SessionDtl} SessionDtl={props?.SessionDtl}
/> />
<div <div
className={ className={
props?.Footer === '3' props?.Footer === '3'
@ -253,6 +258,11 @@ const OrderView1 = (props) => {
remove remove
</div> </div>
</div> </div>
<div className={`Item3Warning ${maxLimitExceeded ? 'showing' : ''}`}>
<p>
<IoIosWarning size={30} color='#b99400' />Maximum Quantity ({maxQtyLimit}) Reached
</p>
</div>
</div> </div>
))} ))}
</div> </div>

View File

@ -1,4 +1,4 @@
import React from 'react'; import React, { useState } from 'react';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import { MdCurrencyRupee } from 'react-icons/md'; import { MdCurrencyRupee } from 'react-icons/md';
import '../../../Styles/Kiosk/OrderView/OrderView2.scss'; import '../../../Styles/Kiosk/OrderView/OrderView2.scss';
@ -14,7 +14,7 @@ import {
changeKioskOrderDetails, changeKioskOrderDetails,
} from '../../../Features/BookingScreen/BookingData/KioskBookingData'; } from '../../../Features/BookingScreen/BookingData/KioskBookingData';
import KioskFooter3 from '../Components/KioskFooter3'; import KioskFooter3 from '../Components/KioskFooter3';
import { IoMdClose } from 'react-icons/io'; import { IoIosWarning, IoMdClose } from 'react-icons/io';
import defaultImg from '../../../Images/defaultItemImg.png'; import defaultImg from '../../../Images/defaultItemImg.png';
import PozoDineInIcon from '../KioskIcons/KioskDineIn'; import PozoDineInIcon from '../KioskIcons/KioskDineIn';
import TakeAway from '../KioskIcons/KioskTakeAway'; import TakeAway from '../KioskIcons/KioskTakeAway';
@ -29,6 +29,7 @@ const KioskOrderView2 = (props) => {
: null; : null;
const dispatch = useDispatch(); const dispatch = useDispatch();
const preferenceDatas = useSelector(PreferenceData); const preferenceDatas = useSelector(PreferenceData);
const [maxLimitExceeded, setMaxLimitExceeded] = useState(false);
const overAllLimitPreferenece = const overAllLimitPreferenece =
preferenceDatas?.[0]?.['SettingDtlDetails']?.find( preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
(item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y'); (item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y');
@ -70,7 +71,11 @@ const KioskOrderView2 = (props) => {
if (overAllLimitPreferenece) { if (overAllLimitPreferenece) {
const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails);
if ((calculatedOverAllQty + 1) > maxQtyLimit) { if ((calculatedOverAllQty + 1) > maxQtyLimit) {
message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) setMaxLimitExceeded(true);
// Reset after 3 seconds
setTimeout(() => {
setMaxLimitExceeded(false);
}, 2000);
return; return;
} }
} }
@ -332,6 +337,11 @@ const KioskOrderView2 = (props) => {
)} )}
</div> </div>
</div> </div>
<div className={`Item3Warning ${maxLimitExceeded ? 'showing' : ''}`}>
<p>
<IoIosWarning size={30} color='#b99400' />Maximum Quantity ({maxQtyLimit}) Reached
</p>
</div>
</div> </div>
); );
}; };

View File

@ -1,5 +1,5 @@
import { RiDeleteBin6Line } from 'react-icons/ri'; import { RiDeleteBin6Line } from 'react-icons/ri';
import React from 'react'; import React, { useState } from 'react';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import { MdCurrencyRupee } from 'react-icons/md'; import { MdCurrencyRupee } from 'react-icons/md';
import horizontal from '../../../Images/defaultItemImg.png'; import horizontal from '../../../Images/defaultItemImg.png';
@ -21,6 +21,7 @@ import TakeAway from '../KioskIcons/KioskTakeAway';
import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData'; import { PreferenceData } from '../../../Features/BookingScreen/BookingData/BookingData';
import { calculateOverAllQtyLimit } from '../../../utils/calculations'; import { calculateOverAllQtyLimit } from '../../../utils/calculations';
import { message } from 'antd'; import { message } from 'antd';
import { IoIosWarning } from 'react-icons/io';
const KioskOrderView = (props) => { const KioskOrderView = (props) => {
console.log(props, 'propsprops'); console.log(props, 'propsprops');
@ -31,6 +32,7 @@ const KioskOrderView = (props) => {
const KioskOrderDetails = useSelector(GlobalKioskOrderDetails); const KioskOrderDetails = useSelector(GlobalKioskOrderDetails);
const getKioskLightColourdata = useSelector(getKioskLightColour); const getKioskLightColourdata = useSelector(getKioskLightColour);
const preferenceDatas = useSelector(PreferenceData); const preferenceDatas = useSelector(PreferenceData);
const [maxLimitExceeded, setMaxLimitExceeded] = useState(false);
const overAllLimitPreferenece = const overAllLimitPreferenece =
preferenceDatas?.[0]?.['SettingDtlDetails']?.find( preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
(item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y'); (item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y');
@ -63,7 +65,11 @@ const KioskOrderView = (props) => {
if (overAllLimitPreferenece) { if (overAllLimitPreferenece) {
const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails); const calculatedOverAllQty = calculateOverAllQtyLimit(KioskOrderDetails);
if ((calculatedOverAllQty + 1) > maxQtyLimit) { if ((calculatedOverAllQty + 1) > maxQtyLimit) {
message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`) setMaxLimitExceeded(true);
// Reset after 3 seconds
setTimeout(() => {
setMaxLimitExceeded(false);
}, 2000);
return; return;
} }
} }
@ -323,6 +329,11 @@ const KioskOrderView = (props) => {
)} )}
</div> </div>
</div> </div>
<div className={`Item3Warning ${maxLimitExceeded ? 'showing' : ''}`}>
<p>
<IoIosWarning size={30} color='#b99400' />Maximum Quantity ({maxQtyLimit}) Reached
</p>
</div>
</div> </div>
); );
}; };

View File

@ -28,6 +28,7 @@ import {
GlobalKioskPrinterDetails, GlobalKioskPrinterDetails,
getKioskPrinterDetails, getKioskPrinterDetails,
} from '../../../Features/Kiosk/kiosk'; } from '../../../Features/Kiosk/kiosk';
import '../../../Styles/Kiosk/CardPage/CardPage1.scss';
import { import {
GlobalBookingTypeKiosk, GlobalBookingTypeKiosk,
GlobalKioskBookingTypeBoth, GlobalKioskBookingTypeBoth,
@ -83,6 +84,7 @@ import PaymentGatewayEmbedded from '../../BookingScreen/Components/UtillComponen
import MobileMultiPdfPrintTrigger from '../../BookingScreen/Components/UtillComponents/MobileMultiPdfPrintTrigger.jsx'; import MobileMultiPdfPrintTrigger from '../../BookingScreen/Components/UtillComponents/MobileMultiPdfPrintTrigger.jsx';
import { checkLastOrderTimeLimit, sendupiotp } from '../../../Features/UpiDetails/UpiDetails.js'; import { checkLastOrderTimeLimit, sendupiotp } from '../../../Features/UpiDetails/UpiDetails.js';
import { isIndianMobile } from '../../../utils/calculations.js'; import { isIndianMobile } from '../../../utils/calculations.js';
import { IoIosWarning } from 'react-icons/io';
const CustomPaymentUrl = import.meta.env.ENV_CUSTOM_PAYMENT_URL; const CustomPaymentUrl = import.meta.env.ENV_CUSTOM_PAYMENT_URL;
@ -165,6 +167,8 @@ const KioskPayment = (props) => {
const bookingTypePreference = appPreferences?.find( const bookingTypePreference = appPreferences?.find(
(preference) => preference?.PreferredCatName === 'Booking Type' (preference) => preference?.PreferredCatName === 'Booking Type'
)?.PreferenceCatDetails; )?.PreferenceCatDetails;
const [maxLimitExceeded, setMaxLimitExceeded] = useState(null);
const [maxLimitExceededMessage, setMaxLimitExceededMessage] = useState(null);
const [showPaymentMethods, setShowPaymentMethods] = useState(null); const [showPaymentMethods, setShowPaymentMethods] = useState(null);
const [resendTimer, setResendTimer] = useState(0) const [resendTimer, setResendTimer] = useState(0)
const [canResend, setCanResend] = useState(true) const [canResend, setCanResend] = useState(true)
@ -773,12 +777,18 @@ const KioskPayment = (props) => {
}; };
const handlePaymentOption = async (option) => { const handlePaymentOption = async (option) => {
if (isTimeLimitEnabled) { if (isTimeLimitEnabled) {
const withinTimeLimit = await checkLast30MinOrder(number); const withinTimeLimit = await checkLast30MinOrder(number);
if (withinTimeLimit?.IsEligible === false) { if (withinTimeLimit?.IsEligible === false) {
setMessageData(withinTimeLimit?.response); // setMessageData(withinTimeLimit?.response);
setMessageType('warning'); // setMessageType('warning');
setMaxLimitExceededMessage(withinTimeLimit?.response);
setMaxLimitExceeded(true);
// Reset after 3 seconds
setTimeout(() => {
setMaxLimitExceeded(false);
setMaxLimitExceededMessage(null);
}, 2500);
return; return;
} }
} }
@ -1840,8 +1850,15 @@ const KioskPayment = (props) => {
if (isTimeLimitEnabled) { if (isTimeLimitEnabled) {
const withinTimeLimit = await checkLast30MinOrder(number); const withinTimeLimit = await checkLast30MinOrder(number);
if (withinTimeLimit?.IsEligible === false) { if (withinTimeLimit?.IsEligible === false) {
setMessageData(withinTimeLimit?.response); // setMessageData(withinTimeLimit?.response);
setMessageType('warning'); // setMessageType('warning');
setMaxLimitExceededMessage(withinTimeLimit?.response);
setMaxLimitExceeded(true);
// Reset after 3 seconds
setTimeout(() => {
setMaxLimitExceeded(false);
setMaxLimitExceededMessage(null);
}, 2500);
return; return;
} }
} }
@ -2033,6 +2050,7 @@ const KioskPayment = (props) => {
icon={<ArrowRightOutlined />} icon={<ArrowRightOutlined />}
></Buttons> ></Buttons>
</div> </div>
</div> </div>
) : ( ) : (
<div className="paymentModal-Master"> <div className="paymentModal-Master">
@ -2042,10 +2060,10 @@ const KioskPayment = (props) => {
<div className="paymentModal_main"> <div className="paymentModal_main">
{!otpSent && !otpVerifed && (<> {!otpSent && !otpVerifed && (<>
<div className="prompt"> <div className="prompt">
<p style={{ fontFamily: 'Poppins', fontWeight: '600' }}> {/* <p style={{ fontFamily: 'Poppins', fontWeight: '600' }}>
Get your order bill on your mobile <br /> Get your order bill on your mobile <br />
via SMS / Whatsapp via SMS / Whatsapp
</p> </p> */}
</div> </div>
<div <div
@ -2106,7 +2124,7 @@ const KioskPayment = (props) => {
</>)} </>)}
{(isOtpEnabled && otpSent) && ( {(isOtpEnabled && otpSent) && (
<div className="otp-section"> <div className="otp-section">
<div style={{ fontFamily: 'Poppins', fontSize: '16px' }}>Enter OTP</div>
{/* Mobile Number + Edit */} {/* Mobile Number + Edit */}
<div className="otp-mobile-row"> <div className="otp-mobile-row">
<span className="otp-mobile-number">{number}</span> <span className="otp-mobile-number">{number}</span>
@ -2245,10 +2263,16 @@ const KioskPayment = (props) => {
</div> </div>
</>} </>}
</div> </div>
<div className={`Item3Warning ${maxLimitExceeded ? 'showing' : ''}`}>
<p>
<IoIosWarning size={30} color='#b99400' />{maxLimitExceededMessage}
</p>
</div>
</div> </div>
) )
} }
></DefaultModal> ></DefaultModal>
{PrintOrderDetails?.length > 0 && {PrintOrderDetails?.length > 0 &&
PrintOrderDetails?.[0]?.OrderDetails?.map((orderDetail, index) => ( PrintOrderDetails?.[0]?.OrderDetails?.map((orderDetail, index) => (
<div style={{ display: 'none' }}> <div style={{ display: 'none' }}>

View File

@ -416,7 +416,8 @@
background-color: #ffebee; background-color: #ffebee;
border-color: #f44336; border-color: #f44336;
} }
&.selected {
&.selected {
background-color: #ffebee; background-color: #ffebee;
border-color: #9e1c60; border-color: #9e1c60;
} }
@ -443,7 +444,7 @@
width: 48%; width: 48%;
white-space: nowrap; white-space: nowrap;
> div:nth-child(1) { >div:nth-child(1) {
font-size: 14px; font-size: 14px;
font-weight: 500; font-weight: 500;
line-height: 1.1; line-height: 1.1;
@ -674,9 +675,63 @@
flex-wrap: wrap; flex-wrap: wrap;
gap: 10px; gap: 10px;
} }
.sportsCardContinueButton{
.sportsCardContinueButton {
display: flex; display: flex;
flex-direction: row-reverse; flex-direction: row-reverse;
align-items: center; align-items: center;
} }
.Item3Warning {
position: fixed;
top: 0%;
left: 0%;
bottom: 0;
right: 0%;
background-color: #00000096;
z-index: 100;
font-family: "Poppins";
font-size: 16px;
font-weight: 500;
width: 100%;
height: 100%;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
flex-direction: column;
backdrop-filter: blur(4px);
/* Animation initial state */
opacity: 0;
visibility: hidden;
transition: opacity 0.3s ease, visibility 0.3s ease;
p {
display: flex;
box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px,
rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;
align-items: center;
justify-content: center;
gap: 10px;
background-color: #fff;
padding: 15px 20px;
border-radius: 8px;
/* popup animation */
transform: scale(0.8);
transition: transform 0.3s ease;
}
}
/* When visible */
.Item3Warning.showing {
opacity: 1;
visibility: visible;
p {
transform: scale(1);
}
}

View File

@ -57,6 +57,7 @@
text-transform: uppercase; text-transform: uppercase;
text-wrap: wrap; text-wrap: wrap;
} }
p { p {
width: 65%; width: 65%;
} }
@ -122,4 +123,58 @@
justify-content: center; justify-content: center;
padding: 2px 6px; padding: 2px 6px;
} }
//mohan //mohan
.Item3Warning {
position: fixed;
top: 0%;
left: 0%;
bottom: 0;
right: 0%;
background-color: #00000096;
z-index: 100;
font-family: "Poppins";
font-size: 16px;
font-weight: 500;
width: 100%;
height: 100%;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
flex-direction: column;
backdrop-filter: blur(4px);
/* Animation initial state */
opacity: 0;
visibility: hidden;
transition: opacity 0.3s ease, visibility 0.3s ease;
p {
display: flex;
box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px,
rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;
align-items: center;
justify-content: center;
gap: 10px;
background-color: #fff;
padding: 15px 20px;
border-radius: 8px;
/* popup animation */
transform: scale(0.8);
transition: transform 0.3s ease;
}
}
/* When visible */
.Item3Warning.showing {
opacity: 1;
visibility: visible;
p {
transform: scale(1);
}
}