constrain Qty
This commit is contained in:
parent
608aa917b3
commit
5f5ca99409
|
|
@ -1,4 +1,4 @@
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useCallback, useEffect, useState } from 'react';
|
||||||
import { shallowEqual, useDispatch, useSelector } from 'react-redux';
|
import { shallowEqual, useDispatch, useSelector } from 'react-redux';
|
||||||
import { Popconfirm, Tooltip } from 'antd';
|
import { Popconfirm, Tooltip } from 'antd';
|
||||||
import { AiOutlineClose, AiFillDelete } from 'react-icons/ai';
|
import { AiOutlineClose, AiFillDelete } from 'react-icons/ai';
|
||||||
|
|
@ -79,6 +79,8 @@ import BSEditTotalAmt from '../BSEditTotalAmount/BSEditTotalAmt.jsx';
|
||||||
import BSImeiDetails from '../BSImeiDetails/BSImeiDetails.jsx';
|
import BSImeiDetails from '../BSImeiDetails/BSImeiDetails.jsx';
|
||||||
import { useUtilsComponent } from '../../../../../Services/utils.js';
|
import { useUtilsComponent } from '../../../../../Services/utils.js';
|
||||||
import CustomerPriceHistory from '../../UtillComponents/CustomerPriceHistory.jsx';
|
import CustomerPriceHistory from '../../UtillComponents/CustomerPriceHistory.jsx';
|
||||||
|
import { calculateOverAllQtyLimit } from '../../../../../utils/calculations.js';
|
||||||
|
import { Messages } from '../../../../../../ownLib/my-ui-lib.js';
|
||||||
|
|
||||||
const BsBill = () => {
|
const BsBill = () => {
|
||||||
const { removeExtraCharge } = useUtilsComponent();
|
const { removeExtraCharge } = useUtilsComponent();
|
||||||
|
|
@ -108,6 +110,8 @@ const BsBill = () => {
|
||||||
setting?.SettingValue === 'Y'
|
setting?.SettingValue === 'Y'
|
||||||
);
|
);
|
||||||
const [count, setCount] = useState(1);
|
const [count, setCount] = useState(1);
|
||||||
|
const [messageType, setMessageType] = useState(null);
|
||||||
|
const [messageData, setMessageData] = useState(null);
|
||||||
const [EditQuantity, setEditQuantity] = useState(false);
|
const [EditQuantity, setEditQuantity] = useState(false);
|
||||||
const [Modaldata, setModaldata] = useState([]);
|
const [Modaldata, setModaldata] = useState([]);
|
||||||
const TableData = useSelector(GlobalOrderCardDetails);
|
const TableData = useSelector(GlobalOrderCardDetails);
|
||||||
|
|
@ -141,6 +145,14 @@ const BsBill = () => {
|
||||||
const OrderType = useSelector(GlobalOrderType);
|
const OrderType = useSelector(GlobalOrderType);
|
||||||
const GlobEstBooking = useSelector(GlobalEstimateBooking);
|
const GlobEstBooking = useSelector(GlobalEstimateBooking);
|
||||||
const GlobalExtraCharge = useSelector(globalExtraTotalAmount);
|
const GlobalExtraCharge = useSelector(globalExtraTotalAmount);
|
||||||
|
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 OtherServicesglobal = useSelector(GlobalOtherSevices);
|
const OtherServicesglobal = useSelector(GlobalOtherSevices);
|
||||||
|
|
||||||
|
|
@ -2123,8 +2135,22 @@ const BsBill = () => {
|
||||||
const handleEditQuantityCancel = () => {
|
const handleEditQuantityCancel = () => {
|
||||||
setEditQuantity(false);
|
setEditQuantity(false);
|
||||||
};
|
};
|
||||||
|
const onComplete = useCallback(() => {
|
||||||
|
setMessageData(null);
|
||||||
|
setMessageType(null);
|
||||||
|
}, []);
|
||||||
const increase = async (item) => {
|
const increase = async (item) => {
|
||||||
|
|
||||||
|
if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) {
|
||||||
|
if (overAllLimitPreferenece) {
|
||||||
|
const calculatedOverAllQty = calculateOverAllQtyLimit(TableData);
|
||||||
|
if ((calculatedOverAllQty + 1) > maxQtyLimit) {
|
||||||
|
setMessageData(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`);
|
||||||
|
setMessageType('warning');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
const OtherOrderDatas = TableData?.filter(
|
const OtherOrderDatas = TableData?.filter(
|
||||||
(cartItem) =>
|
(cartItem) =>
|
||||||
!(
|
!(
|
||||||
|
|
@ -3049,6 +3075,11 @@ const BsBill = () => {
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
<div className="BSBillingTable5-billtable">
|
<div className="BSBillingTable5-billtable">
|
||||||
|
<Messages
|
||||||
|
messageType={messageType}
|
||||||
|
messageData={messageData}
|
||||||
|
onComplete={onComplete}
|
||||||
|
/>
|
||||||
<table className="BSBillingTable5-tablediv">
|
<table className="BSBillingTable5-tablediv">
|
||||||
<thead className="BSBillingTable5-thead">
|
<thead className="BSBillingTable5-thead">
|
||||||
<tr
|
<tr
|
||||||
|
|
|
||||||
|
|
@ -65,13 +65,11 @@ const FeaturesFunctionalities = lazy(
|
||||||
() => import('../BookingFunctionality/FeaturesFunctionalities')
|
() => import('../BookingFunctionality/FeaturesFunctionalities')
|
||||||
);
|
);
|
||||||
import { isMobile } from 'react-device-detect';
|
import { isMobile } from 'react-device-detect';
|
||||||
import BarcodeScanner from '../UtillComponents/BarcodeScanner.jsx';
|
|
||||||
import {
|
import {
|
||||||
getTemplateData,
|
getTemplateData,
|
||||||
StoredSessionData,
|
StoredSessionData,
|
||||||
} from '../../../../Features/ThemeChange/ThemeChange.js';
|
} from '../../../../Features/ThemeChange/ThemeChange.js';
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
import BSNavBarWeightScale from '../UtillComponents/BSNavBarWeightScale.jsx';
|
|
||||||
import {
|
import {
|
||||||
changeFreeProductForLoyalty,
|
changeFreeProductForLoyalty,
|
||||||
ChangeFreeProductList,
|
ChangeFreeProductList,
|
||||||
|
|
@ -89,6 +87,7 @@ import {
|
||||||
import { Global_PromoCodeOffers } from '../../../../Features/Offer/Offer.js';
|
import { Global_PromoCodeOffers } from '../../../../Features/Offer/Offer.js';
|
||||||
import { validateOffers } from '../BSItemCards/ValidateOffer.jsx';
|
import { validateOffers } from '../BSItemCards/ValidateOffer.jsx';
|
||||||
import { useSaleswiseOfferWatcher } from '../BSItemCards/SalesWiseOffer.jsx';
|
import { useSaleswiseOfferWatcher } from '../BSItemCards/SalesWiseOffer.jsx';
|
||||||
|
import { calculateOverAllQtyLimit } from '../../../../utils/calculations.js';
|
||||||
const ExpireConfirmModal = lazy(
|
const ExpireConfirmModal = lazy(
|
||||||
() => import('../BookingFunctionality/ExpireConfirmModal.jsx')
|
() => import('../BookingFunctionality/ExpireConfirmModal.jsx')
|
||||||
);
|
);
|
||||||
|
|
@ -134,6 +133,13 @@ export default function BSC1Search(props) {
|
||||||
const FeatureAddonData = useSelector(GlobalFeatAddOnData);
|
const FeatureAddonData = useSelector(GlobalFeatAddOnData);
|
||||||
useSaleswiseOfferWatcher();
|
useSaleswiseOfferWatcher();
|
||||||
const preferenceDatas = useSelector(PreferenceData);
|
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 preferenceOffer =
|
const preferenceOffer =
|
||||||
preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
|
preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
|
||||||
(item) => item.SettingIdName === 'Offer'
|
(item) => item.SettingIdName === 'Offer'
|
||||||
|
|
@ -1171,7 +1177,7 @@ export default function BSC1Search(props) {
|
||||||
|
|
||||||
const getPreferenceStock = async () => {
|
const getPreferenceStock = async () => {
|
||||||
const PreferenceStckDtl = preferenceDatas?.[0]?.SettingDtlDetails;
|
const PreferenceStckDtl = preferenceDatas?.[0]?.SettingDtlDetails;
|
||||||
const StockPreference = PreferenceStckDtl.find(
|
const StockPreference = PreferenceStckDtl?.find(
|
||||||
(item) => item.SettingIdName === 'StockSelection'
|
(item) => item.SettingIdName === 'StockSelection'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -2821,6 +2827,18 @@ export default function BSC1Search(props) {
|
||||||
};
|
};
|
||||||
|
|
||||||
const AddOrderDetails = async (item) => {
|
const AddOrderDetails = async (item) => {
|
||||||
|
|
||||||
|
if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) {
|
||||||
|
if (overAllLimitPreferenece) {
|
||||||
|
const calculatedOverAllQty = calculateOverAllQtyLimit(CartOrderDetails);
|
||||||
|
if ((calculatedOverAllQty + 1) > maxQtyLimit) {
|
||||||
|
setMessageData(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`);
|
||||||
|
setMessageType('warning');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (preOrder) {
|
if (preOrder) {
|
||||||
await handlePreOrder(item);
|
await handlePreOrder(item);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue