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 { 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

View File

@ -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'
@ -705,7 +711,7 @@ export default function BSC1Search(props) {
WithoutTaxRate: WithoutTaxRate:
availableFreeQty * item.OrderRate - availableFreeQty * item.OrderRate -
(availableFreeQty * item.OrderRate * item.TaxPercentage) / (availableFreeQty * item.OrderRate * item.TaxPercentage) /
100, 100,
Offer: availableFreeQty * item.OrderRate, Offer: availableFreeQty * item.OrderRate,
}; };
@ -754,7 +760,7 @@ export default function BSC1Search(props) {
((existingPaidItem.OrderQty + excessQty) * ((existingPaidItem.OrderQty + excessQty) *
item.OrderRate * item.OrderRate *
item.TaxPercentage) / item.TaxPercentage) /
100, 100,
}; };
ModifiedData.push(mergedPaidItem); ModifiedData.push(mergedPaidItem);
@ -789,7 +795,7 @@ export default function BSC1Search(props) {
data?.InwardDtlId === item?.InwardDtlId && data?.InwardDtlId === item?.InwardDtlId &&
data?.ProdId === item?.ProdId && data?.ProdId === item?.ProdId &&
data?.OfferMessage?.[0]?.OfferId === data?.OfferMessage?.[0]?.OfferId ===
item?.OfferMessage?.[0]?.OfferId item?.OfferMessage?.[0]?.OfferId
); );
if (isAlreadyExists !== -1) { if (isAlreadyExists !== -1) {
@ -809,11 +815,11 @@ export default function BSC1Search(props) {
).toFixed(2), ).toFixed(2),
WithoutTaxRate: WithoutTaxRate:
(ModifiedData[isAlreadyExists].OrderQty + item.OrderQty) * (ModifiedData[isAlreadyExists].OrderQty + item.OrderQty) *
item.OrderRate - item.OrderRate -
((ModifiedData[isAlreadyExists].OrderQty + item.OrderQty) * ((ModifiedData[isAlreadyExists].OrderQty + item.OrderQty) *
item.OrderRate * item.OrderRate *
item.TaxPercentage) / item.TaxPercentage) /
100, 100,
Offer: Offer:
(ModifiedData[isAlreadyExists].OrderQty + item.OrderQty) * (ModifiedData[isAlreadyExists].OrderQty + item.OrderQty) *
item.OrderRate, item.OrderRate,
@ -839,10 +845,10 @@ export default function BSC1Search(props) {
const appliedOfferAlreadyExists = AppliedOffers.findIndex( const appliedOfferAlreadyExists = AppliedOffers.findIndex(
(offer) => (offer) =>
offer?.FreeProductsList?.FreeProdId === offer?.FreeProductsList?.FreeProdId ===
matchingFreeProduct?.FreeProdId && matchingFreeProduct?.FreeProdId &&
offer?.TableName === matchingFreeProduct?.TableName && offer?.TableName === matchingFreeProduct?.TableName &&
offer?.TableUniqueName === offer?.TableUniqueName ===
matchingFreeProduct?.TableUniqueName && matchingFreeProduct?.TableUniqueName &&
offer?.OfferId === matchingFreeProduct?.OfferId && offer?.OfferId === matchingFreeProduct?.OfferId &&
offer?.OfferMode === matchingFreeProduct?.OfferMode && offer?.OfferMode === matchingFreeProduct?.OfferMode &&
offer?.FreeProductsList?.ProdVariantDetails?.[0] offer?.FreeProductsList?.ProdVariantDetails?.[0]
@ -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'
); );
@ -1673,7 +1679,7 @@ export default function BSC1Search(props) {
<span <span
style={ style={
record.StockCount > 0 || record.StockCount > 0 ||
record.StockCount === 'Stock Not Maintained' record.StockCount === 'Stock Not Maintained'
? { color: '#000', cursor: 'pointer' } ? { color: '#000', cursor: 'pointer' }
: { color: '#f49898', cursor: 'not-allowed' } : { color: '#f49898', cursor: 'not-allowed' }
} }
@ -1703,7 +1709,7 @@ export default function BSC1Search(props) {
<span <span
style={ style={
record.StockCount > 0 || record.StockCount > 0 ||
record.StockCount === 'Stock Not Maintained' record.StockCount === 'Stock Not Maintained'
? { color: '#000', cursor: 'pointer' } ? { color: '#000', cursor: 'pointer' }
: { color: '#f49898', cursor: 'not-allowed' } : { color: '#f49898', cursor: 'not-allowed' }
} }
@ -1733,7 +1739,7 @@ export default function BSC1Search(props) {
<span <span
style={ style={
record.StockCount > 0 || record.StockCount > 0 ||
record.StockCount === 'Stock Not Maintained' record.StockCount === 'Stock Not Maintained'
? { color: '#000', cursor: 'pointer' } ? { color: '#000', cursor: 'pointer' }
: { color: '#f49898', cursor: 'not-allowed' } : { color: '#f49898', cursor: 'not-allowed' }
} }
@ -1897,11 +1903,11 @@ export default function BSC1Search(props) {
StockCount: StockCount:
qtydata?.ProductDetail?.[0]?.StockAvailable === 'Y' qtydata?.ProductDetail?.[0]?.StockAvailable === 'Y'
? returnVariantStock( ? returnVariantStock(
qtydata?.ProductDetail?.[QtyIndex]?.ProdId, qtydata?.ProductDetail?.[QtyIndex]?.ProdId,
item?.OverAllQty, item?.OverAllQty,
CartOrderDetails, CartOrderDetails,
item?.ProdVariantName item?.ProdVariantName
) )
: 'Stock Not Maintained', : 'Stock Not Maintained',
}); });
}); });
@ -1917,17 +1923,17 @@ export default function BSC1Search(props) {
'Batch No': item?.BatchRef, 'Batch No': item?.BatchRef,
StockCount: onePeiceFlow StockCount: onePeiceFlow
? returnCountStock( ? returnCountStock(
item?.ProdId, item?.ProdId,
item?.BalanceQty, item?.BalanceQty,
CartOrderDetails, CartOrderDetails,
item?.InwardDtlId item?.InwardDtlId
) * item?.NoOfPcs ) * item?.NoOfPcs
: returnCountStock( : returnCountStock(
item?.ProdId, item?.ProdId,
item?.BalanceQty, item?.BalanceQty,
CartOrderDetails, CartOrderDetails,
item?.InwardDtlId item?.InwardDtlId
), ),
'Stock Date': StockDate(item?.InwardDate), 'Stock Date': StockDate(item?.InwardDate),
Price: onePeiceFlow ? item?.OnePcsPrice : item?.SellPrice, Price: onePeiceFlow ? item?.OnePcsPrice : item?.SellPrice,
ExpDate: ExpDate:
@ -1981,13 +1987,13 @@ export default function BSC1Search(props) {
(cartItem) => (cartItem) =>
cartItem?.ProdId === item?.ProductDetail?.[QtyIndex]?.ProdId && cartItem?.ProdId === item?.ProductDetail?.[QtyIndex]?.ProdId &&
cartItem?.InwardDtlId === cartItem?.InwardDtlId ===
item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[
VarientIndex VarientIndex
]?.StockDetails?.[0]?.InwardDtlId && ]?.StockDetails?.[0]?.InwardDtlId &&
cartItem?.OrderRate === cartItem?.OrderRate ===
item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[
VarientIndex VarientIndex
]?.StockDetails?.[0]?.SellPrice && ]?.StockDetails?.[0]?.SellPrice &&
!cartItem?.SalesId !cartItem?.SalesId
); );
@ -1996,9 +2002,9 @@ export default function BSC1Search(props) {
(cartItem) => (cartItem) =>
cartItem?.ProdId === item?.ProductDetail?.[QtyIndex]?.ProdId && cartItem?.ProdId === item?.ProductDetail?.[QtyIndex]?.ProdId &&
cartItem?.InwardDtlId === cartItem?.InwardDtlId ===
item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[
VarientIndex VarientIndex
]?.StockDetails?.[0]?.InwardDtlId && ]?.StockDetails?.[0]?.InwardDtlId &&
// (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice) // (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice)
!cartItem?.SalesId !cartItem?.SalesId
); );
@ -2040,11 +2046,11 @@ export default function BSC1Search(props) {
(cartItem) => (cartItem) =>
cartItem?.ProdId === item?.ProductDetail?.[QtyIndex]?.ProdId && cartItem?.ProdId === item?.ProductDetail?.[QtyIndex]?.ProdId &&
cartItem?.InwardDtlId === cartItem?.InwardDtlId ===
item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]
?.StockDetails?.[0]?.InwardDtlId && ?.StockDetails?.[0]?.InwardDtlId &&
cartItem?.OrderRate === cartItem?.OrderRate ===
item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]
?.StockDetails?.[0]?.SellPrice && ?.StockDetails?.[0]?.SellPrice &&
!cartItem?.SalesId !cartItem?.SalesId
); );
@ -2053,9 +2059,9 @@ export default function BSC1Search(props) {
(cartItem) => (cartItem) =>
cartItem?.ProdId === item?.ProductDetail?.[QtyIndex]?.ProdId && cartItem?.ProdId === item?.ProductDetail?.[QtyIndex]?.ProdId &&
cartItem?.InwardDtlId === cartItem?.InwardDtlId ===
item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[
VarientIndex VarientIndex
]?.StockDetails?.[0]?.InwardDtlId && ]?.StockDetails?.[0]?.InwardDtlId &&
// (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice) // (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice)
!cartItem?.SalesId !cartItem?.SalesId
); );
@ -2133,13 +2139,13 @@ export default function BSC1Search(props) {
(cartItem) => (cartItem) =>
cartItem?.ProdId === qtydata?.ProductDetail?.[QtyIndex]?.ProdId && cartItem?.ProdId === qtydata?.ProductDetail?.[QtyIndex]?.ProdId &&
cartItem?.InwardDtlId === cartItem?.InwardDtlId ===
qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[
index.key index.key
]?.StockDetails?.[0]?.InwardDtlId && ]?.StockDetails?.[0]?.InwardDtlId &&
cartItem?.OrderRate === cartItem?.OrderRate ===
qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[
index.key index.key
]?.StockDetails?.[0]?.SellPrice && ]?.StockDetails?.[0]?.SellPrice &&
!cartItem?.SalesId !cartItem?.SalesId
); );
@ -2147,11 +2153,11 @@ export default function BSC1Search(props) {
let Isincartonepc = CartOrderDetails?.filter( let Isincartonepc = CartOrderDetails?.filter(
(cartItem) => (cartItem) =>
cartItem?.ProdId === cartItem?.ProdId ===
qtydata?.ProductDetail?.[QtyIndex]?.ProdId && qtydata?.ProductDetail?.[QtyIndex]?.ProdId &&
cartItem?.InwardDtlId === cartItem?.InwardDtlId ===
qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[
VarientIndex VarientIndex
]?.StockDetails?.[0]?.InwardDtlId && ]?.StockDetails?.[0]?.InwardDtlId &&
// (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice) // (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice)
!cartItem?.SalesId !cartItem?.SalesId
); );
@ -2215,11 +2221,11 @@ export default function BSC1Search(props) {
(cartItem) => (cartItem) =>
cartItem?.ProdId === qtydata?.ProductDetail?.[QtyIndex]?.ProdId && cartItem?.ProdId === qtydata?.ProductDetail?.[QtyIndex]?.ProdId &&
cartItem?.InwardDtlId === cartItem?.InwardDtlId ===
qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[index.key] qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[index.key]
?.StockDetails?.[0]?.InwardDtlId && ?.StockDetails?.[0]?.InwardDtlId &&
cartItem?.OrderRate === cartItem?.OrderRate ===
qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[index.key] qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[index.key]
?.StockDetails?.[0]?.SellPrice && ?.StockDetails?.[0]?.SellPrice &&
!cartItem?.SalesId !cartItem?.SalesId
); );
@ -2228,9 +2234,9 @@ export default function BSC1Search(props) {
(cartItem) => (cartItem) =>
cartItem?.ProdId === qtydata?.ProductDetail?.[QtyIndex]?.ProdId && cartItem?.ProdId === qtydata?.ProductDetail?.[QtyIndex]?.ProdId &&
cartItem?.InwardDtlId === cartItem?.InwardDtlId ===
qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[ qtydata?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[
VarientIndex VarientIndex
]?.StockDetails?.[0]?.InwardDtlId && ]?.StockDetails?.[0]?.InwardDtlId &&
// (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice) // (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice)
!cartItem?.SalesId !cartItem?.SalesId
); );
@ -2305,15 +2311,15 @@ export default function BSC1Search(props) {
let Isincart = CartOrderDetails?.find( let Isincart = CartOrderDetails?.find(
(cartItem) => (cartItem) =>
cartItem?.ProdId === cartItem?.ProdId ===
qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId && qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId &&
cartItem?.InwardDtlId === cartItem?.InwardDtlId ===
qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[
item?.VarientIndex item?.VarientIndex
]?.StockDetails?.[0]?.InwardDtlId && ]?.StockDetails?.[0]?.InwardDtlId &&
cartItem?.OrderRate === cartItem?.OrderRate ===
qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[
item?.VarientIndex item?.VarientIndex
]?.StockDetails?.[0]?.SellPrice && ]?.StockDetails?.[0]?.SellPrice &&
!cartItem?.SalesId !cartItem?.SalesId
); );
@ -2321,11 +2327,11 @@ export default function BSC1Search(props) {
let Isincartonepc = CartOrderDetails?.filter( let Isincartonepc = CartOrderDetails?.filter(
(cartItem) => (cartItem) =>
cartItem?.ProdId === cartItem?.ProdId ===
qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId && qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId &&
cartItem?.InwardDtlId === cartItem?.InwardDtlId ===
qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[
item?.VarientIndexs item?.VarientIndexs
]?.StockDetails?.[0]?.InwardDtlId && ]?.StockDetails?.[0]?.InwardDtlId &&
// (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice) // (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice)
!cartItem?.SalesId !cartItem?.SalesId
); );
@ -2403,15 +2409,15 @@ export default function BSC1Search(props) {
let Isincart = CartOrderDetails?.find( let Isincart = CartOrderDetails?.find(
(cartItem) => (cartItem) =>
cartItem?.ProdId === cartItem?.ProdId ===
qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId && qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId &&
cartItem?.InwardDtlId === cartItem?.InwardDtlId ===
qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[
item?.VarientIndex item?.VarientIndex
]?.StockDetails?.[0]?.InwardDtlId && ]?.StockDetails?.[0]?.InwardDtlId &&
cartItem?.OrderRate === cartItem?.OrderRate ===
qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[
item?.VarientIndex item?.VarientIndex
]?.StockDetails?.[0]?.SellPrice && ]?.StockDetails?.[0]?.SellPrice &&
!cartItem?.SalesId !cartItem?.SalesId
); );
@ -2419,11 +2425,11 @@ export default function BSC1Search(props) {
let Isincartonepc = CartOrderDetails?.filter( let Isincartonepc = CartOrderDetails?.filter(
(cartItem) => (cartItem) =>
cartItem?.ProdId === cartItem?.ProdId ===
qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId && qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdId &&
cartItem?.InwardDtlId === cartItem?.InwardDtlId ===
qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[ qtydata?.ProductDetail?.[item?.QtyIndex]?.ProdVariantDetails?.[
item?.VarientIndex item?.VarientIndex
]?.StockDetails?.[0]?.InwardDtlId && ]?.StockDetails?.[0]?.InwardDtlId &&
// (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice) // (cartItem?.OrderRate === item?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]?.StockDetails?.[0]?.SellPrice)
!cartItem?.SalesId !cartItem?.SalesId
); );
@ -2543,7 +2549,7 @@ export default function BSC1Search(props) {
const isKgsProduct = const isKgsProduct =
(a?.ProductDetail?.[QtyIndex]?.UomName?.toLowerCase() === 'kgs' || (a?.ProductDetail?.[QtyIndex]?.UomName?.toLowerCase() === 'kgs' ||
a?.ProductDetail?.[QtyIndex]?.UomName?.toLowerCase() === a?.ProductDetail?.[QtyIndex]?.UomName?.toLowerCase() ===
'kg'?.toLowerCase()) && 'kg'?.toLowerCase()) &&
a?.ProductDetail?.[QtyIndex]?.Size === '1'; a?.ProductDetail?.[QtyIndex]?.Size === '1';
if ( if (
@ -2556,11 +2562,11 @@ export default function BSC1Search(props) {
parseFloat( parseFloat(
onePcs onePcs
? (a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] ? (a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]
?.StockDetails?.[stockIndex]?.OnePcsPrice / ?.StockDetails?.[stockIndex]?.OnePcsPrice /
1000) * 1000) *
(parseFloat(WeightScaleWeight) * 1000) (parseFloat(WeightScaleWeight) * 1000)
: a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] : a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]
?.StockDetails?.[stockIndex]?.SellPrice / 1000 ?.StockDetails?.[stockIndex]?.SellPrice / 1000
) * ) *
(parseFloat(WeightScaleWeight) * 1000); (parseFloat(WeightScaleWeight) * 1000);
let data = { let data = {
@ -2616,9 +2622,9 @@ export default function BSC1Search(props) {
?.StockDetails?.[stockIndex]?.InwardId, ?.StockDetails?.[stockIndex]?.InwardId,
MRP: onePcs MRP: onePcs
? a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] ? a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]
?.StockDetails?.[stockIndex]?.OnePcsPrice ?.StockDetails?.[stockIndex]?.OnePcsPrice
: a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] : a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]
?.StockDetails?.[stockIndex]?.MRP, ?.StockDetails?.[stockIndex]?.MRP,
FullProductIdentifierDtls: FullProductIdentifierDtls:
a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]
?.StockDetails?.[stockIndex]?.ProductIdentifierDtls, ?.StockDetails?.[stockIndex]?.ProductIdentifierDtls,
@ -2726,19 +2732,19 @@ export default function BSC1Search(props) {
?.StockDetails?.[stockIndex]?.InwardId, ?.StockDetails?.[stockIndex]?.InwardId,
MRP: onePcs MRP: onePcs
? a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] ? a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]
?.StockDetails?.[stockIndex]?.OnePcsPrice ?.StockDetails?.[stockIndex]?.OnePcsPrice
: a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] : a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]
?.StockDetails?.[stockIndex]?.MRP, ?.StockDetails?.[stockIndex]?.MRP,
OrderRate: onePcs OrderRate: onePcs
? a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] ? a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]
?.StockDetails?.[stockIndex]?.OnePcsPrice ?.StockDetails?.[stockIndex]?.OnePcsPrice
: a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] : a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]
?.StockDetails?.[stockIndex]?.SellPrice, ?.StockDetails?.[stockIndex]?.SellPrice,
SellingPrice: onePcs SellingPrice: onePcs
? a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] ? a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]
?.StockDetails?.[stockIndex]?.OnePcsPrice ?.StockDetails?.[stockIndex]?.OnePcsPrice
: a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] : a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]
?.StockDetails?.[stockIndex]?.SellPrice, ?.StockDetails?.[stockIndex]?.SellPrice,
SuppId: SuppId:
a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex] a?.ProductDetail?.[QtyIndex]?.ProdVariantDetails?.[VarientIndex]
?.StockDetails?.[stockIndex]?.SuppId, ?.StockDetails?.[stockIndex]?.SuppId,
@ -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 {
@ -2911,15 +2929,15 @@ export default function BSC1Search(props) {
const isExistsInFreeProdList = hasOffer const isExistsInFreeProdList = hasOffer
? FreeProdList?.filter( ? FreeProdList?.filter(
(f) => (f) =>
f?.FreeProdId === item?.ProdId && f?.FreeProdId === item?.ProdId &&
f?.ProdVariantDetails?.some((variant) => f?.ProdVariantDetails?.some((variant) =>
variant?.StockDetails?.some( variant?.StockDetails?.some(
(stock) => stock?.FreeInwardDtlId === item?.InwardDtlId (stock) => stock?.FreeInwardDtlId === item?.InwardDtlId
) )
) && ) &&
f?.RemainingQty > 0 f?.RemainingQty > 0
) )
: []; : [];
const calculateTaxAmounts = (qty, rate, taxPercentage) => { const calculateTaxAmounts = (qty, rate, taxPercentage) => {
@ -2986,10 +3004,10 @@ export default function BSC1Search(props) {
((cartItem?.OfferModeType && cartItem?.OfferMode === 'B' ((cartItem?.OfferModeType && cartItem?.OfferMode === 'B'
? true ? true
: cartItem?.OfferMode !== 'B') && : cartItem?.OfferMode !== 'B') &&
cartItem?.OfferMode !== 'P' && cartItem?.OfferMode !== 'P' &&
cartItem?.OfferMode !== 'C' && cartItem?.OfferMode !== 'C' &&
cartItem?.OfferMode !== 'O' && cartItem?.OfferMode !== 'O' &&
cartItem?.OfferMode !== 'L' cartItem?.OfferMode !== 'L'
? true ? true
: cartItem?.Offer === 0) : cartItem?.Offer === 0)
); );
@ -3006,10 +3024,10 @@ export default function BSC1Search(props) {
(cartItem) => (cartItem) =>
itemMatchCondition(cartItem) && itemMatchCondition(cartItem) &&
(cartItem?.OfferMode !== 'B' && (cartItem?.OfferMode !== 'B' &&
cartItem?.OfferMode !== 'P' && cartItem?.OfferMode !== 'P' &&
cartItem?.OfferMode !== 'C' && cartItem?.OfferMode !== 'C' &&
cartItem?.OfferMode !== 'O' && cartItem?.OfferMode !== 'O' &&
cartItem?.OfferMode !== 'L' cartItem?.OfferMode !== 'L'
? true ? true
: cartItem?.Offer === 0) : cartItem?.Offer === 0)
); );
@ -3023,10 +3041,10 @@ export default function BSC1Search(props) {
((cartItem?.OfferModeType && cartItem?.OfferMode === 'B' ((cartItem?.OfferModeType && cartItem?.OfferMode === 'B'
? true ? true
: cartItem?.OfferMode !== 'B') && : cartItem?.OfferMode !== 'B') &&
cartItem?.OfferMode !== 'P' && cartItem?.OfferMode !== 'P' &&
cartItem?.OfferMode !== 'L' && cartItem?.OfferMode !== 'L' &&
cartItem?.OfferMode !== 'C' && cartItem?.OfferMode !== 'C' &&
cartItem?.OfferMode !== 'O' cartItem?.OfferMode !== 'O'
? true ? true
: cartItem?.Offer === 0) : cartItem?.Offer === 0)
) )
@ -3037,10 +3055,10 @@ export default function BSC1Search(props) {
!( !(
itemMatchCondition(cartItem) && itemMatchCondition(cartItem) &&
(cartItem?.OfferMode !== 'B' && (cartItem?.OfferMode !== 'B' &&
cartItem?.OfferMode !== 'P' && cartItem?.OfferMode !== 'P' &&
cartItem?.OfferMode !== 'L' && cartItem?.OfferMode !== 'L' &&
cartItem?.OfferMode !== 'C' && cartItem?.OfferMode !== 'C' &&
cartItem?.OfferMode !== 'O' cartItem?.OfferMode !== 'O'
? true ? true
: cartItem?.Offer === 0) : cartItem?.Offer === 0)
) )
@ -3113,8 +3131,8 @@ export default function BSC1Search(props) {
isItemInCart, isItemInCart,
item?.OtherProduct === 'Others' || item?.ScaleType === 'weight' item?.OtherProduct === 'Others' || item?.ScaleType === 'weight'
? ( ? (
(item?.OrderQty || 0) + parseFloat(isItemInCart?.OrderQty) (item?.OrderQty || 0) + parseFloat(isItemInCart?.OrderQty)
)?.toFixed(3) )?.toFixed(3)
: null : null
); );
const updatedData = addFirst const updatedData = addFirst
@ -3241,9 +3259,9 @@ export default function BSC1Search(props) {
isItemInCartHold, isItemInCartHold,
item?.OtherProduct === 'Others' || item?.ScaleType === 'weight' item?.OtherProduct === 'Others' || item?.ScaleType === 'weight'
? ( ? (
(item?.OrderQty || 0) + (item?.OrderQty || 0) +
parseFloat(isItemInCartHold?.OrderQty) parseFloat(isItemInCartHold?.OrderQty)
)?.toFixed(3) )?.toFixed(3)
: null : null
); );
const updatedData = addFirst const updatedData = addFirst
@ -3495,14 +3513,14 @@ export default function BSC1Search(props) {
updatedCartData = cartData.map((item, idx) => updatedCartData = cartData.map((item, idx) =>
idx === indexToCheck idx === indexToCheck
? { ? {
...item, ...item,
Offer: null, Offer: null,
OfferMessage: undefined, OfferMessage: undefined,
OfferMode: undefined, OfferMode: undefined,
OfferModeType: false, OfferModeType: false,
OfferType: undefined, OfferType: undefined,
OfferValue: null, OfferValue: null,
} }
: item : item
); );
} }
@ -3553,8 +3571,8 @@ export default function BSC1Search(props) {
...item, ...item,
Offer: Offer:
sameProduct || sameProduct ||
bestOffer?.OfferMode === 'I' || bestOffer?.OfferMode === 'I' ||
bestOffer?.OfferMode === 'Q' bestOffer?.OfferMode === 'Q'
? bestOffer?.OfferAmount || item.Offer ? bestOffer?.OfferAmount || item.Offer
: item.Offer || bestOffer?.OfferAmount, : item.Offer || bestOffer?.OfferAmount,
OfferType: item?.OfferType || bestOffer?.OfferType, OfferType: item?.OfferType || bestOffer?.OfferType,
@ -3571,10 +3589,10 @@ export default function BSC1Search(props) {
((c?.OfferModeType && c?.OfferMode === 'B' ((c?.OfferModeType && c?.OfferMode === 'B'
? true ? true
: c?.OfferMode !== 'B') && : c?.OfferMode !== 'B') &&
c?.OfferMode !== 'P' && c?.OfferMode !== 'P' &&
c?.OfferMode !== 'C' && c?.OfferMode !== 'C' &&
c?.OfferMode !== 'O' && c?.OfferMode !== 'O' &&
c?.OfferMode !== 'L' c?.OfferMode !== 'L'
? true ? true
: c?.Offer === 0); : c?.Offer === 0);
@ -3882,10 +3900,10 @@ export default function BSC1Search(props) {
return FreeProdList.map((f, i) => return FreeProdList.map((f, i) =>
i === index i === index
? { ? {
...existing, ...existing,
...newFreeProd, ...newFreeProd,
ProdVariantDetails: existing.ProdVariantDetails, ProdVariantDetails: existing.ProdVariantDetails,
} }
: f : f
); );
} else { } else {
@ -3955,7 +3973,7 @@ export default function BSC1Search(props) {
const cycleSize = buyQty + getQty; const cycleSize = buyQty + getQty;
const fullCycles = Math.floor( const fullCycles = Math.floor(
freeCartItem?.reduce((acc, fc) => acc + (fc?.OrderQty || 0), 0) / freeCartItem?.reduce((acc, fc) => acc + (fc?.OrderQty || 0), 0) /
cycleSize cycleSize
); );
const totalFreeQty = fullCycles * getQty; const totalFreeQty = fullCycles * getQty;
@ -4559,15 +4577,15 @@ export default function BSC1Search(props) {
{option.ProductDetail?.filter( {option.ProductDetail?.filter(
(item) => item.OnePcsAvailable == 'Y' (item) => item.OnePcsAvailable == 'Y'
).length !== 0 && ( ).length !== 0 && (
<GoTriangleRight <GoTriangleRight
style={{ style={{
fontSize: '25px', fontSize: '25px',
}} }}
onClick={() => { onClick={() => {
setOnePeiceFlow(true); setOnePeiceFlow(true);
}} }}
/> />
)} )}
</div> </div>
</div> </div>
), ),
@ -4601,7 +4619,7 @@ export default function BSC1Search(props) {
<FiSearch <FiSearch
className="BSC1Search-searchicon" className="BSC1Search-searchicon"
// onClick={() => OnfocusTrue()} // onClick={() => OnfocusTrue()}
/> />
</div> </div>
{ProductSearch?.length > 5 && {ProductSearch?.length > 5 &&
@ -4697,8 +4715,8 @@ export default function BSC1Search(props) {
<img <img
src={ src={
item?.ProdLogo && item?.ProdLogo &&
item?.ProdLogo != null && item?.ProdLogo != null &&
item?.ProdLogo != undefined item?.ProdLogo != undefined
? item?.ProdLogo ? item?.ProdLogo
: defaultimage : defaultimage
} }