constrain Qty

This commit is contained in:
unknown 2026-02-24 14:59:52 +05:30
parent 608aa917b3
commit 5f5ca99409
2 changed files with 208 additions and 159 deletions

View File

@ -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 { Popconfirm, Tooltip } from 'antd';
import { AiOutlineClose, AiFillDelete } from 'react-icons/ai';
@ -79,6 +79,8 @@ import BSEditTotalAmt from '../BSEditTotalAmount/BSEditTotalAmt.jsx';
import BSImeiDetails from '../BSImeiDetails/BSImeiDetails.jsx';
import { useUtilsComponent } from '../../../../../Services/utils.js';
import CustomerPriceHistory from '../../UtillComponents/CustomerPriceHistory.jsx';
import { calculateOverAllQtyLimit } from '../../../../../utils/calculations.js';
import { Messages } from '../../../../../../ownLib/my-ui-lib.js';
const BsBill = () => {
const { removeExtraCharge } = useUtilsComponent();
@ -108,6 +110,8 @@ const BsBill = () => {
setting?.SettingValue === 'Y'
);
const [count, setCount] = useState(1);
const [messageType, setMessageType] = useState(null);
const [messageData, setMessageData] = useState(null);
const [EditQuantity, setEditQuantity] = useState(false);
const [Modaldata, setModaldata] = useState([]);
const TableData = useSelector(GlobalOrderCardDetails);
@ -141,6 +145,14 @@ const BsBill = () => {
const OrderType = useSelector(GlobalOrderType);
const GlobEstBooking = useSelector(GlobalEstimateBooking);
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);
@ -2123,8 +2135,22 @@ const BsBill = () => {
const handleEditQuantityCancel = () => {
setEditQuantity(false);
};
const onComplete = useCallback(() => {
setMessageData(null);
setMessageType(null);
}, []);
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(
(cartItem) =>
!(
@ -3049,6 +3075,11 @@ const BsBill = () => {
};
return (
<div className="BSBillingTable5-billtable">
<Messages
messageType={messageType}
messageData={messageData}
onComplete={onComplete}
/>
<table className="BSBillingTable5-tablediv">
<thead className="BSBillingTable5-thead">
<tr

View File

@ -65,13 +65,11 @@ const FeaturesFunctionalities = lazy(
() => import('../BookingFunctionality/FeaturesFunctionalities')
);
import { isMobile } from 'react-device-detect';
import BarcodeScanner from '../UtillComponents/BarcodeScanner.jsx';
import {
getTemplateData,
StoredSessionData,
} from '../../../../Features/ThemeChange/ThemeChange.js';
import { v4 as uuidv4 } from 'uuid';
import BSNavBarWeightScale from '../UtillComponents/BSNavBarWeightScale.jsx';
import {
changeFreeProductForLoyalty,
ChangeFreeProductList,
@ -89,6 +87,7 @@ import {
import { Global_PromoCodeOffers } from '../../../../Features/Offer/Offer.js';
import { validateOffers } from '../BSItemCards/ValidateOffer.jsx';
import { useSaleswiseOfferWatcher } from '../BSItemCards/SalesWiseOffer.jsx';
import { calculateOverAllQtyLimit } from '../../../../utils/calculations.js';
const ExpireConfirmModal = lazy(
() => import('../BookingFunctionality/ExpireConfirmModal.jsx')
);
@ -134,6 +133,13 @@ export default function BSC1Search(props) {
const FeatureAddonData = useSelector(GlobalFeatAddOnData);
useSaleswiseOfferWatcher();
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 =
preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
(item) => item.SettingIdName === 'Offer'
@ -1171,7 +1177,7 @@ export default function BSC1Search(props) {
const getPreferenceStock = async () => {
const PreferenceStckDtl = preferenceDatas?.[0]?.SettingDtlDetails;
const StockPreference = PreferenceStckDtl.find(
const StockPreference = PreferenceStckDtl?.find(
(item) => item.SettingIdName === 'StockSelection'
);
@ -2821,6 +2827,18 @@ export default function BSC1Search(props) {
};
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) {
await handlePreOrder(item);
} else {