2288 lines
87 KiB
JavaScript
2288 lines
87 KiB
JavaScript
import React, { useEffect, useState, Suspense } from 'react';
|
|
import { useDispatch, useSelector } from 'react-redux';
|
|
import { Badge, message } from 'antd';
|
|
import defaultimage from '../../../../../Images/defaultItemImg.png';
|
|
import {
|
|
GlobalOrderCardDetails,
|
|
changeOrderCardDetails,
|
|
GlobalBookingType,
|
|
GlobalUnpaidData,
|
|
GlobalPreviousOrderLength,
|
|
GlobalHoldOrderDtl,
|
|
changeReorderHoldDetails,
|
|
changeUnpaidData,
|
|
changeothersdata,
|
|
GlobalSelProdWiseEst,
|
|
GlobalBookingTypeBoth,
|
|
GlobalOrderType,
|
|
changeReorderProductDetails,
|
|
changeBookingType,
|
|
GlobalReorderProductDetails,
|
|
changeAllProductTokenAvailable,
|
|
changeTokenOnly,
|
|
changeOrderType,
|
|
ChangeNavHoldData,
|
|
changeCustomerID,
|
|
changeSelectedCustId,
|
|
changeSelectedOption,
|
|
ChangeSelectedCustDisable,
|
|
GlobalEstimateBooking,
|
|
changeSelProdWiseEst,
|
|
PreferenceData,
|
|
GlobalOtherSevices,
|
|
GlobalDefaultBookingType,
|
|
GlobalSelOption,
|
|
GlobalCustId,
|
|
changeBillEditingMode,
|
|
changePreviousOrderPayment,
|
|
changePreviousOrderOfferDetail,
|
|
} from '../../../../../Features/BookingScreen/BookingData/BookingData';
|
|
import {
|
|
getTemplateData,
|
|
SelectedGlobalBillingColorDetail,
|
|
SelectedGlobalBillingFont,
|
|
} from '../../../../../Features/ThemeChange/ThemeChange';
|
|
import BSBillingEditQuantity from '../BSBillingEditQuantity/BSBillingEditQuantity';
|
|
import { settingDataSelector } from '../../../../../Features/PreferenceMaster/PreferenceMaster';
|
|
import WebFont from 'webfontloader';
|
|
import dineInIcon from '../../../../../Images/Dine In.svg';
|
|
import TakeAwayIcon from '../../../../../Images/Take away.svg';
|
|
import { getCustomerDisplayWindow } from '../../../../../Features/customerDisplayWindow/customerDisplayWindow.js';
|
|
import {
|
|
ChangeTotalAmount,
|
|
globalExtraTotalAmount,
|
|
} from '../../../../../Features/ExteraCharges/ExtraCharges.js';
|
|
import BSImeiDetails from '../BSImeiDetails/BSImeiDetails.jsx';
|
|
import { useApplyOfferto_CardDetail } from '../../UtillComponents/BSNavBarOffer/BSNavBarOffer_CustomHooks.jsx';
|
|
import { ClearOfferAppliedProducts } from '../../../../../Features/Offer/Offernew/BookingOffernew.js';
|
|
import { useUtilsComponent } from '../../../../../Services/utils.js';
|
|
import CustomerPriceHistory from '../../UtillComponents/CustomerPriceHistory.jsx';
|
|
import { calculateOverAllQtyLimit } from '../../../../../utils/calculations.js';
|
|
|
|
const MinusOutlined = React.lazy(
|
|
() => import('@ant-design/icons/MinusOutlined')
|
|
);
|
|
|
|
const PlusOutlined = React.lazy(() => import('@ant-design/icons/PlusOutlined'));
|
|
|
|
const EditOutlined = React.lazy(() => import('@ant-design/icons/EditOutlined'));
|
|
|
|
const BsBill2 = () => {
|
|
const { removeExtraCharge } = useUtilsComponent();
|
|
const dispatch = useDispatch();
|
|
const templateData = useSelector(getTemplateData);
|
|
const OfferCheckedInSetup = templateData?.BookingNavbar?.[1].some(
|
|
(item) => item?.OptionName == 'Offer'
|
|
);
|
|
const applyOffer = useApplyOfferto_CardDetail();
|
|
const preferenceDatas = useSelector(PreferenceData);
|
|
const preferenceOffer =
|
|
preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
|
|
(item) => item.SettingIdName === 'Offer'
|
|
)?.SettingValue === 'Y';
|
|
const allowDecimal = preferenceDatas?.[0]?.SettingDtlDetails?.find(
|
|
(setting) =>
|
|
setting?.SettingIdName?.toLowerCase() === 'decimal' &&
|
|
setting?.SettingValue === 'Y'
|
|
);
|
|
const [shortKeyMethod, setshortKeyMethod] = useState('');
|
|
const preferenceshortcutkey = preferenceDatas?.[0]?.SettingDtlDetails?.find(
|
|
(setting) =>
|
|
setting?.SettingIdName?.toLowerCase() === 'shortcutkeys' &&
|
|
setting?.SettingValue === 'Y'
|
|
);
|
|
const imeiModal = preferenceDatas?.[0]?.SettingDtlDetails?.some(
|
|
(setting) =>
|
|
setting?.SettingIdName?.toLowerCase() === 'imeidetails' &&
|
|
setting?.SettingValue === 'Y'
|
|
);
|
|
console.log(imeiModal, "imeiModalimeiModal")
|
|
const [count, setCount] = useState(1);
|
|
const ReorderProductData = useSelector(GlobalReorderProductDetails);
|
|
const CartOrderDetails = useSelector(GlobalOrderCardDetails);
|
|
const BookingType = useSelector(GlobalBookingType);
|
|
const defaultBookingType = useSelector(GlobalDefaultBookingType);
|
|
|
|
const PreviousOrderLength = useSelector(GlobalPreviousOrderLength);
|
|
const HoldOrderDtl = useSelector(GlobalHoldOrderDtl);
|
|
const UnpaidData = useSelector(GlobalUnpaidData);
|
|
const GlobProdwisedata = useSelector(GlobalSelProdWiseEst);
|
|
const SelectedBillColor = useSelector(SelectedGlobalBillingColorDetail);
|
|
const SettingDataSelector = useSelector(PreferenceData);
|
|
const SelectedFont = useSelector(SelectedGlobalBillingFont);
|
|
const BookingTypeBoth = useSelector(GlobalBookingTypeBoth);
|
|
const OrderType = useSelector(GlobalOrderType);
|
|
const GlobEstBooking = useSelector(GlobalEstimateBooking);
|
|
|
|
const OtherServicesglobal = useSelector(GlobalOtherSevices);
|
|
const GetCustId = useSelector(GlobalCustId);
|
|
const selectedCustomer = useSelector(GlobalSelOption);
|
|
|
|
const [customerPriceHistoryOpen, setCustomerPriceHistoryOpen] =
|
|
useState(false);
|
|
const [customerProduct, setCustomerProduct] = useState(null);
|
|
|
|
const BillOrderPre = preferenceDatas?.[0]?.SettingDtlDetails?.find(
|
|
(item) => item.SettingIdName === 'BillItemsOrder'
|
|
)?.SettingValue;
|
|
const [PreviousdataLength, setPreviousdataLength] =
|
|
useState(PreviousOrderLength);
|
|
const [Index, setIndex] = useState(null);
|
|
const [triggerAnimation, setTriggerAnimation] = useState(true);
|
|
const [EditQuantity, setEditQuantity] = useState(false);
|
|
const [Modaldata, setModaldata] = useState([]);
|
|
const [OpenImeiDetail, setOpenImeiDetail] = useState(false);
|
|
const GlobalExtraCharge = useSelector(globalExtraTotalAmount);
|
|
const productBasedExtraCharges = GlobalExtraCharge.filter(
|
|
(obj) => 'ProdName' in obj
|
|
);
|
|
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 tableDataDinein = CartOrderDetails?.filter(
|
|
(a, b) => a.BookingTypeName === 'Dine In' && !a?.SalesId
|
|
);
|
|
const tableDataTakeAway =
|
|
OrderType === 'Hold'
|
|
? CartOrderDetails?.filter((a, b) => a.BookingTypeName === 'TakeAway')
|
|
: CartOrderDetails?.filter(
|
|
(a, b) => a.BookingTypeName === 'TakeAway' && !a?.SalesId
|
|
);
|
|
const OldtableDataDinein = CartOrderDetails?.filter(
|
|
(a, b) => a.BookingTypeName === 'Dine In' && a?.SalesId
|
|
);
|
|
const OldtableDataTakeAway =
|
|
OrderType != 'Hold'
|
|
? CartOrderDetails?.filter(
|
|
(a, b) => a.BookingTypeName === 'TakeAway' && a?.SalesId
|
|
)
|
|
: [];
|
|
|
|
useEffect(() => {
|
|
if (SelectedFont) {
|
|
WebFont.load({
|
|
google: {
|
|
families: [SelectedFont], // Load the selected font
|
|
},
|
|
});
|
|
}
|
|
}, [SelectedFont]);
|
|
|
|
useEffect(() => {
|
|
const handleKeyDown = (e) => {
|
|
if (e.ctrlKey && e.key.toLowerCase() === 'i') {
|
|
e.preventDefault();
|
|
|
|
const prodId = CartOrderDetails?.[0]?.ProdId;
|
|
|
|
if (GetCustId && prodId) {
|
|
setCustomerPriceHistoryOpen(true);
|
|
setCustomerProduct(prodId);
|
|
}
|
|
}
|
|
};
|
|
|
|
window.addEventListener('keydown', handleKeyDown);
|
|
|
|
return () => {
|
|
window.removeEventListener('keydown', handleKeyDown);
|
|
};
|
|
}, [GetCustId, CartOrderDetails]);
|
|
|
|
useEffect(() => {
|
|
if (CartOrderDetails?.length === 0) {
|
|
dispatch(ClearOfferAppliedProducts());
|
|
}
|
|
setTriggerAnimation(true);
|
|
const customerDisplayWindow = getCustomerDisplayWindow();
|
|
if (customerDisplayWindow && !customerDisplayWindow.closed) {
|
|
const updatedData = {
|
|
userData: CartOrderDetails,
|
|
};
|
|
customerDisplayWindow.postMessage(updatedData, '*');
|
|
}
|
|
const timer = setTimeout(() => {
|
|
setTriggerAnimation(false);
|
|
}, 400);
|
|
|
|
return () => clearTimeout(timer);
|
|
}, [CartOrderDetails]);
|
|
|
|
useEffect(() => {
|
|
const getSelectedItem = () => {
|
|
const getItem = (data = []) => {
|
|
if (!data.length) return null;
|
|
return BillOrderPre === 'Y' ? data[0] : data[data.length - 1];
|
|
};
|
|
|
|
if (tableDataTakeAway?.length > 0) {
|
|
return getItem(tableDataTakeAway);
|
|
} else if (tableDataDinein?.length > 0) {
|
|
return getItem(tableDataDinein);
|
|
}
|
|
return null;
|
|
};
|
|
|
|
const handleShortcut = (method) => {
|
|
const item = getSelectedItem();
|
|
if (!item) return;
|
|
|
|
handleEditQuantity(item);
|
|
setshortKeyMethod(method);
|
|
};
|
|
|
|
const handleKeyDown = (event) => {
|
|
if (!preferenceshortcutkey) return;
|
|
if (!event.ctrlKey) return;
|
|
|
|
const key = event.key.toLowerCase();
|
|
|
|
if (key === 'q') {
|
|
event.preventDefault();
|
|
handleShortcut('qty');
|
|
}
|
|
|
|
if (key === 'e') {
|
|
event.preventDefault();
|
|
handleShortcut('price');
|
|
}
|
|
};
|
|
window.addEventListener('keydown', handleKeyDown);
|
|
|
|
return () => {
|
|
window.removeEventListener('keydown', handleKeyDown);
|
|
};
|
|
}, [preferenceshortcutkey, tableDataTakeAway, tableDataDinein, BillOrderPre]);
|
|
function safeRound(amountStr) {
|
|
if (amountStr == null) return allowDecimal ? '0.00' : '0';
|
|
|
|
const cleaned = String(amountStr).replace(/[^0-9.-]+/g, '');
|
|
const num = Number(cleaned);
|
|
|
|
if (isNaN(num)) return allowDecimal ? '0.00' : '0';
|
|
|
|
return allowDecimal ? num.toFixed(2) : Math.round(num).toString();
|
|
}
|
|
|
|
// useEffect(() => {
|
|
// setPreviousdataLength(PreviousOrderLength);
|
|
// }, [PreviousOrderLength]);
|
|
|
|
const handleImeiDetails = (value) => {
|
|
setOpenImeiDetail(true);
|
|
setModaldata(value);
|
|
};
|
|
const handleImeiDetailClose = () => {
|
|
setOpenImeiDetail(false);
|
|
};
|
|
const handleCustomerProductPriceHistory = (item) => {
|
|
setCustomerPriceHistoryOpen(true);
|
|
setCustomerProduct(item?.ProdId);
|
|
};
|
|
const increase = async (item) => {
|
|
if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) {
|
|
if (overAllLimitPreferenece) {
|
|
const calculatedOverAllQty = calculateOverAllQtyLimit(CartOrderDetails);
|
|
if (calculatedOverAllQty + 1 > maxQtyLimit) {
|
|
message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`);
|
|
return;
|
|
}
|
|
} else if (itemWiseLimitPreferenece) {
|
|
|
|
const inwardQtyMap = CartOrderDetails.reduce((acc, curr) => {
|
|
const inwardId = curr.InwardDtlId;
|
|
const qty = Number(curr.OrderQty) || 0;
|
|
|
|
if (acc[inwardId]) {
|
|
acc[inwardId] += qty;
|
|
} else {
|
|
acc[inwardId] = qty;
|
|
}
|
|
|
|
return acc;
|
|
}, {});
|
|
|
|
const currentInwardId = item?.InwardDtlId;
|
|
const addQty = 1;
|
|
|
|
if (inwardQtyMap[currentInwardId]) {
|
|
inwardQtyMap[currentInwardId] += addQty;
|
|
} else {
|
|
inwardQtyMap[currentInwardId] = addQty;
|
|
}
|
|
|
|
console.log("Final InwardDtlId Qty Map:", inwardQtyMap);
|
|
const isExceeded = Object.values(inwardQtyMap).some(
|
|
(qty) => qty > maxQtyLimit
|
|
);
|
|
|
|
if (isExceeded) {
|
|
message.warning(`Item Quantity Limit Exceeds than ${maxQtyLimit}`);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
const OtherOrderDatas = CartOrderDetails?.filter(
|
|
(cartItem) =>
|
|
!(
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName
|
|
) && !cartItem?.SalesId
|
|
);
|
|
const OtherOrderDatawithsales = CartOrderDetails?.filter(
|
|
(cartItem) => cartItem?.SalesId
|
|
);
|
|
const OtherorderDataforNormal = CartOrderDetails?.filter(
|
|
(cartItem) =>
|
|
!(
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName &&
|
|
!cartItem?.SalesId
|
|
)
|
|
);
|
|
const isItemInCart = CartOrderDetails?.find(
|
|
(cartItem) =>
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName &&
|
|
!cartItem?.SalesId
|
|
); // check if the item is already in the cart
|
|
const isItemNotInDine = CartOrderDetails?.find(
|
|
(cartItem) =>
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName &&
|
|
!cartItem?.SalesId
|
|
); // check if the item is already in the cart
|
|
const isItemInCartHold = CartOrderDetails?.find(
|
|
(cartItem) =>
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName
|
|
); // check if the item is already in the cart
|
|
const OtherorderDataforNormalWithoutSalesId = CartOrderDetails?.filter(
|
|
(cartItem) =>
|
|
!(
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName
|
|
)
|
|
);
|
|
|
|
const BookingTypeProd = item?.BookingTypeName;
|
|
if (isItemInCart && BookingTypeProd != 'Dine In' && OrderType != 'Hold') {
|
|
if (BillOrderPre === 'Y') {
|
|
const UpdatedCartItem =
|
|
// if the item is already in the cart, increase the quantity of the item
|
|
{
|
|
...isItemInCart,
|
|
OrderQty: isItemInCart?.OrderQty + 1,
|
|
TotalAmt: (isItemInCart?.OrderQty + 1) * isItemInCart?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemInCart?.OrderQty + 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemInCart?.OrderQty + 1) * isItemInCart?.OrderRate -
|
|
(
|
|
((isItemInCart?.OrderQty + 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
|
|
const UpdatedData = [UpdatedCartItem, ...OtherorderDataforNormal];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
} else {
|
|
const UpdatedCartItem =
|
|
// if the item is already in the cart, increase the quantity of the item
|
|
{
|
|
...isItemInCart,
|
|
OrderQty: isItemInCart?.OrderQty + 1,
|
|
TotalAmt: (isItemInCart?.OrderQty + 1) * isItemInCart?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemInCart?.OrderQty + 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemInCart?.OrderQty + 1) * isItemInCart?.OrderRate -
|
|
(
|
|
((isItemInCart?.OrderQty + 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
|
|
const UpdatedData = [...OtherorderDataforNormal, UpdatedCartItem];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
}
|
|
}
|
|
//mohan for both
|
|
else if (
|
|
isItemInCart &&
|
|
BookingTypeProd === 'Dine In' &&
|
|
OrderType != 'Hold'
|
|
) {
|
|
if (BillOrderPre === 'Y') {
|
|
const UpdatedCartItem =
|
|
// if the item is already in the cart, increase the quantity of the item
|
|
{
|
|
...isItemInCart,
|
|
OrderQty: isItemInCart?.OrderQty + 1,
|
|
TotalAmt: (isItemInCart?.OrderQty + 1) * isItemInCart?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemInCart?.OrderQty + 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemInCart?.OrderQty + 1) * isItemInCart?.OrderRate -
|
|
(
|
|
((isItemInCart?.OrderQty + 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
|
|
const UpdatedData = [UpdatedCartItem, ...OtherorderDataforNormal];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
} else {
|
|
const UpdatedCartItem =
|
|
// if the item is already in the cart, increase the quantity of the item
|
|
{
|
|
...isItemInCart,
|
|
OrderQty: isItemInCart?.OrderQty + 1,
|
|
TotalAmt: (isItemInCart?.OrderQty + 1) * isItemInCart?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemInCart?.OrderQty + 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemInCart?.OrderQty + 1) * isItemInCart?.OrderRate -
|
|
(
|
|
((isItemInCart?.OrderQty + 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
|
|
const UpdatedData = [...OtherorderDataforNormal, UpdatedCartItem];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
}
|
|
} else if (isItemInCartHold && OrderType === 'Hold') {
|
|
if (BillOrderPre === 'Y') {
|
|
const UpdatedCartItem =
|
|
// if the item is already in the cart, increase the quantity of the item
|
|
{
|
|
...isItemInCartHold,
|
|
OrderQty: isItemInCartHold?.OrderQty + 1,
|
|
TotalAmt:
|
|
(isItemInCartHold?.OrderQty + 1) * isItemInCartHold?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemInCartHold?.OrderQty + 1) *
|
|
isItemInCartHold?.OrderRate *
|
|
isItemInCartHold?.TaxPercentage) /
|
|
(100 + isItemInCartHold?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemInCartHold?.OrderQty + 1) * isItemInCartHold?.OrderRate -
|
|
(
|
|
((isItemInCartHold?.OrderQty + 1) *
|
|
isItemInCartHold?.OrderRate *
|
|
isItemInCartHold?.TaxPercentage) /
|
|
(100 + isItemInCartHold?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
|
|
const UpdatedData = [
|
|
UpdatedCartItem,
|
|
...OtherorderDataforNormalWithoutSalesId,
|
|
];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
} else {
|
|
const UpdatedCartItem =
|
|
// if the item is already in the cart, increase the quantity of the item
|
|
{
|
|
...isItemInCartHold,
|
|
OrderQty: isItemInCartHold?.OrderQty + 1,
|
|
TotalAmt:
|
|
(isItemInCartHold?.OrderQty + 1) * isItemInCartHold?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemInCartHold?.OrderQty + 1) *
|
|
isItemInCartHold?.OrderRate *
|
|
isItemInCartHold?.TaxPercentage) /
|
|
(100 + isItemInCartHold?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemInCartHold?.OrderQty + 1) * isItemInCartHold?.OrderRate -
|
|
(
|
|
((isItemInCartHold?.OrderQty + 1) *
|
|
isItemInCartHold?.OrderRate *
|
|
isItemInCartHold?.TaxPercentage) /
|
|
(100 + isItemInCartHold?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
|
|
const UpdatedData = [
|
|
...OtherorderDataforNormalWithoutSalesId,
|
|
UpdatedCartItem,
|
|
];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
}
|
|
} else if (
|
|
isItemNotInDine &&
|
|
BookingTypeProd == 'Dine In' &&
|
|
OrderType != 'Hold'
|
|
) {
|
|
if (BillOrderPre === 'Y') {
|
|
const UpdatedCartItem = {
|
|
...isItemNotInDine,
|
|
OrderQty: isItemNotInDine?.OrderQty + 1,
|
|
TotalAmt:
|
|
(isItemNotInDine?.OrderQty + 1) * isItemNotInDine?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemNotInDine?.OrderQty + 1) *
|
|
isItemNotInDine?.OrderRate *
|
|
isItemNotInDine?.TaxPercentage) /
|
|
(100 + isItemNotInDine?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemNotInDine?.OrderQty + 1) * isItemNotInDine?.OrderRate -
|
|
(
|
|
((isItemNotInDine?.OrderQty + 1) *
|
|
isItemNotInDine?.OrderRate *
|
|
isItemNotInDine?.TaxPercentage) /
|
|
(100 + isItemNotInDine?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
// otherwise, return the cart item
|
|
const UpdatedData = [
|
|
UpdatedCartItem,
|
|
...OtherOrderDatas,
|
|
...OtherOrderDatawithsales,
|
|
];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
} else {
|
|
const UpdatedCartItem = {
|
|
...isItemNotInDine,
|
|
OrderQty: isItemNotInDine?.OrderQty + 1,
|
|
TotalAmt:
|
|
(isItemNotInDine?.OrderQty + 1) * isItemNotInDine?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemNotInDine?.OrderQty + 1) *
|
|
isItemNotInDine?.OrderRate *
|
|
isItemNotInDine?.TaxPercentage) /
|
|
(100 + isItemNotInDine?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemNotInDine?.OrderQty + 1) * isItemNotInDine?.OrderRate -
|
|
(
|
|
((isItemNotInDine?.OrderQty + 1) *
|
|
isItemNotInDine?.OrderRate *
|
|
isItemNotInDine?.TaxPercentage) /
|
|
(100 + isItemNotInDine?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
// otherwise, return the cart item
|
|
const UpdatedData = [
|
|
...OtherOrderDatawithsales,
|
|
...OtherOrderDatas,
|
|
UpdatedCartItem,
|
|
];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
}
|
|
}
|
|
await dispatch(changeothersdata({}));
|
|
|
|
setCount(count + 1);
|
|
};
|
|
const decline = async (item) => {
|
|
setPreviousdataLength(CartOrderDetails?.length);
|
|
const isItemInCart = CartOrderDetails?.find(
|
|
(cartItem) =>
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName
|
|
); // check if the item is already in the cart
|
|
if (isItemInCart) {
|
|
if (isItemInCart?.OrderQty > 1) {
|
|
const OtherOrderDatas = CartOrderDetails?.filter(
|
|
(cartItem) =>
|
|
!(
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName
|
|
) && !cartItem?.SalesId
|
|
);
|
|
const OtherOrderDatawithsales = CartOrderDetails?.filter(
|
|
(cartItem) => cartItem?.SalesId
|
|
);
|
|
|
|
const OtherorderDataforNormal = CartOrderDetails?.filter(
|
|
(cartItem) =>
|
|
!(
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName &&
|
|
!cartItem?.SalesId
|
|
)
|
|
);
|
|
const isItemInCart = CartOrderDetails?.find(
|
|
(cartItem) =>
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName &&
|
|
!cartItem?.SalesId
|
|
); // check if the item is already in the cart
|
|
const isItemNotInDine = CartOrderDetails?.find(
|
|
(cartItem) =>
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName &&
|
|
!cartItem?.SalesId
|
|
); // check if the item is already in the cart
|
|
const isItemInCartHold = CartOrderDetails?.find(
|
|
(cartItem) =>
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName
|
|
); // check if the item is already in the cart
|
|
const OtherorderDataforNormalWithoutSalesId = CartOrderDetails?.filter(
|
|
(cartItem) =>
|
|
!(
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName
|
|
)
|
|
);
|
|
|
|
const BookingTypeProd = item?.BookingTypeName;
|
|
if (
|
|
isItemInCart &&
|
|
BookingTypeProd !== 'Dine In' &&
|
|
OrderType !== 'Hold'
|
|
) {
|
|
if (BillOrderPre === 'Y') {
|
|
const UpdatedCartItem =
|
|
// if the item is already in the cart, increase the quantity of the item
|
|
{
|
|
...isItemInCart,
|
|
OrderQty: isItemInCart?.OrderQty - 1,
|
|
TotalAmt:
|
|
(isItemInCart?.OrderQty - 1) * isItemInCart?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemInCart?.OrderQty - 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemInCart?.OrderQty - 1) * isItemInCart?.OrderRate -
|
|
(
|
|
((isItemInCart?.OrderQty - 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
|
|
const UpdatedData = [UpdatedCartItem, ...OtherorderDataforNormal];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
} else {
|
|
const UpdatedCartItem =
|
|
// if the item is already in the cart, increase the quantity of the item
|
|
{
|
|
...isItemInCart,
|
|
OrderQty: isItemInCart?.OrderQty - 1,
|
|
TotalAmt:
|
|
(isItemInCart?.OrderQty - 1) * isItemInCart?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemInCart?.OrderQty - 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemInCart?.OrderQty - 1) * isItemInCart?.OrderRate -
|
|
(
|
|
((isItemInCart?.OrderQty - 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
|
|
const UpdatedData = [...OtherorderDataforNormal, UpdatedCartItem];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
}
|
|
}
|
|
//mohan for both
|
|
else if (
|
|
isItemInCart &&
|
|
BookingTypeProd === 'Dine In' &&
|
|
OrderType != 'Hold'
|
|
) {
|
|
if (BillOrderPre === 'Y') {
|
|
const UpdatedCartItem =
|
|
// if the item is already in the cart, increase the quantity of the item
|
|
{
|
|
...isItemInCart,
|
|
OrderQty: isItemInCart?.OrderQty - 1,
|
|
TotalAmt:
|
|
(isItemInCart?.OrderQty - 1) * isItemInCart?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemInCart?.OrderQty - 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemInCart?.OrderQty - 1) * isItemInCart?.OrderRate -
|
|
(
|
|
((isItemInCart?.OrderQty - 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
|
|
const UpdatedData = [UpdatedCartItem, ...OtherorderDataforNormal];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
} else {
|
|
const UpdatedCartItem =
|
|
// if the item is already in the cart, increase the quantity of the item
|
|
{
|
|
...isItemInCart,
|
|
OrderQty: isItemInCart?.OrderQty - 1,
|
|
TotalAmt:
|
|
(isItemInCart?.OrderQty - 1) * isItemInCart?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemInCart?.OrderQty - 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemInCart?.OrderQty - 1) * isItemInCart?.OrderRate -
|
|
(
|
|
((isItemInCart?.OrderQty - 1) *
|
|
isItemInCart?.OrderRate *
|
|
isItemInCart?.TaxPercentage) /
|
|
(100 + isItemInCart?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
|
|
const UpdatedData = [...OtherorderDataforNormal, UpdatedCartItem];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
}
|
|
} else if (isItemInCartHold && OrderType === 'Hold') {
|
|
if (BillOrderPre === 'Y') {
|
|
const UpdatedCartItem =
|
|
// if the item is already in the cart, increase the quantity of the item
|
|
{
|
|
...isItemInCartHold,
|
|
OrderQty: isItemInCartHold?.OrderQty - 1,
|
|
TotalAmt:
|
|
(isItemInCartHold?.OrderQty - 1) *
|
|
isItemInCartHold?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemInCartHold?.OrderQty - 1) *
|
|
isItemInCartHold?.OrderRate *
|
|
isItemInCartHold?.TaxPercentage) /
|
|
(100 + isItemInCartHold?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemInCartHold?.OrderQty - 1) *
|
|
isItemInCartHold?.OrderRate -
|
|
(
|
|
((isItemInCartHold?.OrderQty - 1) *
|
|
isItemInCartHold?.OrderRate *
|
|
isItemInCartHold?.TaxPercentage) /
|
|
(100 + isItemInCartHold?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
|
|
const UpdatedData = [
|
|
UpdatedCartItem,
|
|
...OtherorderDataforNormalWithoutSalesId,
|
|
];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
} else {
|
|
const UpdatedCartItem =
|
|
// if the item is already in the cart, increase the quantity of the item
|
|
{
|
|
...isItemInCartHold,
|
|
OrderQty: isItemInCartHold?.OrderQty - 1,
|
|
TotalAmt:
|
|
(isItemInCartHold?.OrderQty - 1) *
|
|
isItemInCartHold?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemInCartHold?.OrderQty - 1) *
|
|
isItemInCartHold?.OrderRate *
|
|
isItemInCartHold?.TaxPercentage) /
|
|
(100 + isItemInCartHold?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemInCartHold?.OrderQty - 1) *
|
|
isItemInCartHold?.OrderRate -
|
|
(
|
|
((isItemInCartHold?.OrderQty - 1) *
|
|
isItemInCartHold?.OrderRate *
|
|
isItemInCartHold?.TaxPercentage) /
|
|
(100 + isItemInCartHold?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
|
|
const UpdatedData = [
|
|
...OtherorderDataforNormalWithoutSalesId,
|
|
UpdatedCartItem,
|
|
];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
}
|
|
} else if (
|
|
isItemNotInDine &&
|
|
BookingTypeProd == 'Dine In' &&
|
|
OrderType != 'Hold'
|
|
) {
|
|
if (BillOrderPre === 'Y') {
|
|
const UpdatedCartItem = {
|
|
...isItemNotInDine,
|
|
OrderQty: isItemNotInDine?.OrderQty - 1,
|
|
TotalAmt:
|
|
(isItemNotInDine?.OrderQty - 1) * isItemNotInDine?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemNotInDine?.OrderQty - 1) *
|
|
isItemNotInDine?.OrderRate *
|
|
isItemNotInDine?.TaxPercentage) /
|
|
(100 + isItemNotInDine?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemNotInDine?.OrderQty - 1) * isItemNotInDine?.OrderRate -
|
|
(
|
|
((isItemNotInDine?.OrderQty - 1) *
|
|
isItemNotInDine?.OrderRate *
|
|
isItemNotInDine?.TaxPercentage) /
|
|
(100 + isItemNotInDine?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
// otherwise, return the cart item
|
|
const UpdatedData = [
|
|
UpdatedCartItem,
|
|
...OtherOrderDatas,
|
|
...OtherOrderDatawithsales,
|
|
];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
} else {
|
|
const UpdatedCartItem = {
|
|
...isItemNotInDine,
|
|
OrderQty: isItemNotInDine?.OrderQty - 1,
|
|
TotalAmt:
|
|
(isItemNotInDine?.OrderQty - 1) * isItemNotInDine?.OrderRate,
|
|
TaxAmt: (
|
|
((isItemNotInDine?.OrderQty - 1) *
|
|
isItemNotInDine?.OrderRate *
|
|
isItemNotInDine?.TaxPercentage) /
|
|
(100 + isItemNotInDine?.TaxPercentage)
|
|
).toFixed(2),
|
|
WithoutTaxRate:
|
|
(isItemNotInDine?.OrderQty - 1) * isItemNotInDine?.OrderRate -
|
|
(
|
|
((isItemNotInDine?.OrderQty - 1) *
|
|
isItemNotInDine?.OrderRate *
|
|
isItemNotInDine?.TaxPercentage) /
|
|
(100 + isItemNotInDine?.TaxPercentage)
|
|
).toFixed(2),
|
|
};
|
|
// otherwise, return the cart item
|
|
const UpdatedData = [
|
|
...OtherOrderDatawithsales,
|
|
...OtherOrderDatas,
|
|
UpdatedCartItem,
|
|
];
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
removeExtraCharge(item);
|
|
await dispatch(
|
|
ChangeTotalAmount(
|
|
GlobalExtraCharge?.filter((extra) => {
|
|
if (BookingType === 'Dine In') {
|
|
// Remove extra charges linked to the removed product
|
|
return !(extra.ProdId === item?.ProdId && !extra.SalesId);
|
|
} else if (BookingType === 'TakeAway') {
|
|
// Remove extra charges only if SalesId is not present
|
|
return extra.ProdId !== item?.ProdId;
|
|
}
|
|
return true; // Keep everything else
|
|
})
|
|
)
|
|
); // if the quantity of the item is 1, remove the item from the cart
|
|
if (item?.BookingTypeName !== 'Dine In' && OrderType !== 'Hold') {
|
|
const UpdatedData = CartOrderDetails?.filter(
|
|
(cartItem) =>
|
|
!(
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName &&
|
|
!cartItem?.SalesId
|
|
)
|
|
);
|
|
// if the quantity of the item is 1, remove the item from the cart
|
|
if (CartOrderDetails?.length <= 1) {
|
|
await dispatch(changeReorderHoldDetails({}));
|
|
await dispatch(changeReorderProductDetails([]));
|
|
await dispatch(changeUnpaidData(false));
|
|
await dispatch(changeBookingType(defaultBookingType || 'TakeAway'));
|
|
await dispatch(changeTokenOnly(false));
|
|
await dispatch(changeAllProductTokenAvailable(false));
|
|
await dispatch(changeSelProdWiseEst([]));
|
|
await dispatch(ChangeTotalAmount([]));
|
|
dispatch(changeBillEditingMode(false));
|
|
await dispatch(changePreviousOrderPayment([]));
|
|
await dispatch(changePreviousOrderOfferDetail([]));
|
|
}
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
} else if (
|
|
item?.BookingTypeName !== 'Dine In' &&
|
|
OrderType === 'Hold'
|
|
) {
|
|
const UpdatedData = CartOrderDetails?.filter(
|
|
(cartItem) =>
|
|
!(
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName
|
|
)
|
|
);
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
|
|
// if the quantity of the item is 1, remove the item from the cart
|
|
if (CartOrderDetails?.length <= 1) {
|
|
await dispatch(changeReorderHoldDetails({}));
|
|
await dispatch(changeUnpaidData(false));
|
|
await dispatch(changeBookingType('TakeAway'));
|
|
await dispatch(changeTokenOnly(false));
|
|
await dispatch(changeAllProductTokenAvailable(false));
|
|
await dispatch(changeSelProdWiseEst([]));
|
|
await dispatch(ChangeTotalAmount([]));
|
|
dispatch(changeBillEditingMode(false));
|
|
await dispatch(changePreviousOrderPayment([]));
|
|
await dispatch(changePreviousOrderOfferDetail([]));
|
|
}
|
|
} else if (item?.BookingTypeName === 'Dine In') {
|
|
const UpdatedData = CartOrderDetails?.filter(
|
|
(cartItem) =>
|
|
!(
|
|
cartItem?.ProdId === item?.ProdId &&
|
|
cartItem?.InwardDtlId === item?.InwardDtlId &&
|
|
cartItem?.OrderRate === item?.OrderRate &&
|
|
cartItem?.BookingTypeName === item?.BookingTypeName &&
|
|
!cartItem?.SalesId
|
|
)
|
|
);
|
|
|
|
if (OfferCheckedInSetup && preferenceOffer) {
|
|
await applyOffer(UpdatedData);
|
|
} else {
|
|
dispatch(changeOrderCardDetails(UpdatedData));
|
|
}
|
|
if (CartOrderDetails?.length <= 1) {
|
|
await dispatch(changeReorderHoldDetails({}));
|
|
await dispatch(changeUnpaidData(false));
|
|
await dispatch(ChangeSelectedCustDisable(false));
|
|
await dispatch(changeSelectedOption(false));
|
|
await dispatch(changeBookingType('TakeAway'));
|
|
await dispatch(changeTokenOnly(false));
|
|
await dispatch(changeAllProductTokenAvailable(false));
|
|
await dispatch(changeSelProdWiseEst([]));
|
|
await dispatch(ChangeTotalAmount([]));
|
|
dispatch(changeBillEditingMode(false));
|
|
await dispatch(changePreviousOrderPayment([]));
|
|
await dispatch(changePreviousOrderOfferDetail([]));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
const returnCount = (item) => {
|
|
console.log(item, 'itemitem');
|
|
if (item?.SinglePc === 'Y') {
|
|
let SelectedProduct = ReorderProductData?.filter(
|
|
(a) =>
|
|
a?.ProdId === item?.ProdId && a?.InwardDtlId === item?.InwardDtlId
|
|
);
|
|
let totalSelectedProductQty = SelectedProduct?.reduce(
|
|
(accumulator, card) => {
|
|
return (
|
|
accumulator +
|
|
parseInt(
|
|
card?.StockAvailable === 'Y'
|
|
? card.SinglePc !== 'Y'
|
|
? card.OrderQty * card.NoOfPcs
|
|
: card.OrderQty
|
|
: 0
|
|
)
|
|
);
|
|
},
|
|
0
|
|
);
|
|
let getCurrentProdDtl = CartOrderDetails?.filter(
|
|
(a) =>
|
|
a?.ProdId === item?.ProdId && a?.InwardDtlId === item?.InwardDtlId
|
|
);
|
|
let totalOrderQty = getCurrentProdDtl?.reduce((accumulator, card) => {
|
|
return (
|
|
accumulator +
|
|
parseInt(
|
|
card.SinglePc !== 'Y' ? card.OrderQty * card.NoOfPcs : card.OrderQty
|
|
)
|
|
);
|
|
}, 0);
|
|
|
|
let OverallProdQty = totalOrderQty - totalSelectedProductQty;
|
|
if (
|
|
parseInt(item?.OverAllPcs) >
|
|
parseInt(
|
|
Object.keys(ReorderProductData)?.length > 0 && totalOrderQty
|
|
? OverallProdQty
|
|
: getCurrentProdDtl
|
|
? totalOrderQty
|
|
: 0
|
|
)
|
|
) {
|
|
let count =
|
|
parseInt(item?.OverAllPcs) -
|
|
parseInt(
|
|
Object.keys(ReorderProductData)?.length > 0 && totalOrderQty
|
|
? OverallProdQty
|
|
: getCurrentProdDtl
|
|
? totalOrderQty
|
|
: 0
|
|
);
|
|
return parseInt(count);
|
|
} else {
|
|
let count = 0;
|
|
return count;
|
|
}
|
|
} else {
|
|
let SelectedProduct = ReorderProductData?.filter(
|
|
(a) =>
|
|
a?.ProdId === item?.ProdId && a?.InwardDtlId === item?.InwardDtlId
|
|
);
|
|
let totalSelectedProductQty = SelectedProduct?.reduce(
|
|
(accumulator, card) => {
|
|
return (
|
|
accumulator +
|
|
parseInt(
|
|
card?.StockAvailable === 'Y'
|
|
? card.SinglePc !== 'Y'
|
|
? card.OrderQty
|
|
: card.OverAllPcs % card.NoOfPcs >= card.OrderQty
|
|
? 0
|
|
: card.OrderQty % card.NoOfPcs === 0
|
|
? Math.floor(card.OrderQty / card.NoOfPcs)
|
|
: Math.floor(card.OrderQty / card.NoOfPcs) + 1
|
|
: 0
|
|
)
|
|
);
|
|
},
|
|
0
|
|
);
|
|
let getCurrentProdDtl = CartOrderDetails?.filter(
|
|
(a) =>
|
|
a?.ProdId === item?.ProdId && a?.InwardDtlId === item?.InwardDtlId
|
|
);
|
|
|
|
let totalOrderQty = getCurrentProdDtl?.reduce((accumulator, card) => {
|
|
return (
|
|
accumulator +
|
|
parseInt(
|
|
card.SinglePc !== 'Y'
|
|
? card.OrderQty
|
|
: card.OverAllPcs % card.NoOfPcs >= card.OrderQty
|
|
? 0
|
|
: card.OrderQty % card.NoOfPcs === 0
|
|
? Math.floor(card.OrderQty / card.NoOfPcs)
|
|
: Math.floor(card.OrderQty / card.NoOfPcs) + 1
|
|
)
|
|
);
|
|
}, 0);
|
|
|
|
let OverallProdQty = totalOrderQty - totalSelectedProductQty;
|
|
|
|
if (
|
|
parseInt(item?.BalanceQty) >
|
|
parseInt(
|
|
Object.keys(ReorderProductData)?.length > 0 && totalOrderQty
|
|
? OverallProdQty
|
|
: getCurrentProdDtl
|
|
? totalOrderQty
|
|
: 0
|
|
)
|
|
) {
|
|
let count =
|
|
parseInt(item?.BalanceQty) -
|
|
parseInt(
|
|
Object.keys(ReorderProductData)?.length > 0 && totalOrderQty
|
|
? OverallProdQty
|
|
: getCurrentProdDtl
|
|
? totalOrderQty
|
|
: 0
|
|
);
|
|
return parseInt(count);
|
|
} else {
|
|
let count = 0;
|
|
return count;
|
|
}
|
|
}
|
|
};
|
|
|
|
const handleEditQuantityCancel = () => {
|
|
setEditQuantity(false);
|
|
};
|
|
|
|
const handleEditQuantity = (value) => {
|
|
if (OtherServicesglobal && value.Type == 'OS' && value.ServiceType == 'I') {
|
|
setEditQuantity(false);
|
|
} else {
|
|
setEditQuantity(true);
|
|
setModaldata(value);
|
|
setIndex(value?.localId);
|
|
}
|
|
};
|
|
|
|
const ClearAllFun = async () => {
|
|
await dispatch(changeOrderType(''));
|
|
await dispatch(changeOrderCardDetails([]));
|
|
await dispatch(ChangeTotalAmount([]));
|
|
await dispatch(changeReorderHoldDetails({}));
|
|
await dispatch(changeReorderProductDetails([]));
|
|
await dispatch(ChangeNavHoldData(false));
|
|
await dispatch(changeCustomerID(null));
|
|
await dispatch(changeSelectedCustId());
|
|
await dispatch(changeSelectedOption(null));
|
|
await dispatch(changeBookingType('TakeAway'));
|
|
};
|
|
|
|
return (
|
|
<>
|
|
<div
|
|
style={{ display: 'flex', justifyContent: 'flex-end', width: '99%' }}
|
|
>
|
|
{OrderType === 'Failed' && (
|
|
<button
|
|
style={{
|
|
backgroundColor: '#1292ee',
|
|
color: '#fff',
|
|
padding: '5px 6px',
|
|
border: 'none',
|
|
borderRadius: '5px',
|
|
cursor: 'pointer',
|
|
}}
|
|
onClick={() => {
|
|
ClearAllFun();
|
|
}}
|
|
>
|
|
Clear
|
|
</button>
|
|
)}
|
|
</div>
|
|
<div style={{ display: 'flex' }}>
|
|
<div style={{ width: '100%' }} className="BSBillingTable2-div">
|
|
{/* oldTakeAway */}
|
|
<div className="BSBill2-cont">
|
|
{OldtableDataTakeAway?.map((item, index) => (
|
|
<div style={{ display: 'flex' }}>
|
|
{BookingTypeBoth && (
|
|
<div
|
|
style={{
|
|
width: '40px',
|
|
backgroundColor: '#CFB59D',
|
|
display: 'flex',
|
|
flexDirection: 'column',
|
|
alignItems: 'center', // Center align items horizontally
|
|
justifyContent: 'center', // Center align items vertically
|
|
}}
|
|
>
|
|
{index ===
|
|
Math.floor((OldtableDataTakeAway.length - 1) / 2) && (
|
|
<img width="35px" alt="" src={TakeAwayIcon} />
|
|
)}
|
|
</div>
|
|
)}
|
|
<div
|
|
className={
|
|
BookingType === 'Dine In' && item?.SalesId
|
|
? 'summary-list-disabled'
|
|
: 'summary-list'
|
|
}
|
|
style={{
|
|
fontFamily: SelectedFont,
|
|
|
|
backgroundColor:
|
|
BillOrderPre === 'Y'
|
|
? item?.SalesId && OrderType !== 'Hold'
|
|
? 'rgb(243, 248, 213)'
|
|
: triggerAnimation &&
|
|
index === 0 &&
|
|
!item?.SalesId &&
|
|
tableDataTakeAway?.length >= PreviousdataLength
|
|
? 'wheat'
|
|
: triggerAnimation &&
|
|
index === 0 &&
|
|
tableDataTakeAway?.length >=
|
|
PreviousdataLength &&
|
|
!HoldOrderDtl &&
|
|
!UnpaidData
|
|
? 'wheat'
|
|
: 'inherit'
|
|
: 'none',
|
|
background:
|
|
item?.SalesId && OrderType !== 'Hold'
|
|
? 'rgb(243, 248, 213)'
|
|
: GlobEstBooking === 'ParEst' &&
|
|
GlobProdwisedata?.includes(
|
|
item?.InwardDtlId + ' ' + item?.BookingTypeName
|
|
)
|
|
? '#b2d1f7'
|
|
: index % 2 === 0
|
|
? 'white'
|
|
: SelectedBillColor?.['OverallBackgroundColor']
|
|
? SelectedBillColor?.['OverallBackgroundColor']
|
|
: '#d6d6d6',
|
|
animation:
|
|
BillOrderPre === 'Y' && !BookingTypeBoth
|
|
? triggerAnimation &&
|
|
index === 0 &&
|
|
!item?.SalesId &&
|
|
tableDataTakeAway?.length >= PreviousdataLength &&
|
|
!HoldOrderDtl &&
|
|
!UnpaidData
|
|
? 'splashAnimation 0.5s ease-in-out'
|
|
: 'none'
|
|
: 'none',
|
|
}}
|
|
>
|
|
<img
|
|
alt="pozo"
|
|
className=""
|
|
style={{ width: '4rem', height: '4rem' }}
|
|
loading="lazy"
|
|
src={
|
|
item?.ProdLogo &&
|
|
item?.ProdLogo != null &&
|
|
item?.ProdLogo != undefined
|
|
? item?.ProdLogo
|
|
: defaultimage
|
|
}
|
|
/>
|
|
<div className="sum-item-cont">
|
|
<p
|
|
className="sum-item-name"
|
|
style={{ fontFamily: SelectedFont }}
|
|
onClick={() =>
|
|
(item.FullProductIdentifierDtls?.length > 0 ||
|
|
item.ProductIdentifierDtls?.length > 0 || imeiModal) &&
|
|
handleImeiDetails(item)
|
|
}
|
|
>
|
|
{' '}
|
|
{item?.ProdName} {' '}
|
|
{item.BrandName !== null ? item.BrandName : ''}
|
|
<p
|
|
className="Tbl2-Variant"
|
|
style={{ fontFamily: SelectedFont }}
|
|
>
|
|
{item?.Type != 'C' && (
|
|
<>
|
|
<p
|
|
className="Tbl2-Variant"
|
|
style={{ fontFamily: SelectedFont }}
|
|
>
|
|
(
|
|
{!item?.ProdVariantName?.toLowerCase()?.includes(
|
|
'variant'
|
|
) && <span>{item?.ProdVariantName} </span>}
|
|
{item?.Size}
|
|
{item?.SinglePc == 'Y' ? 'PCS' : item?.UomName})
|
|
</p>
|
|
{item?.OfferMessage &&
|
|
!Array.isArray(item.OfferMessage) && (
|
|
<p
|
|
className={`offermessageTag ${!isMobile ? 'desktop' : ''}`}
|
|
>
|
|
{item.OfferMessage?.split('>')?.[0] +
|
|
`> ${item?.OrderQty} Eligible Free`}
|
|
</p>
|
|
)}
|
|
</>
|
|
)}
|
|
{item?.Type === 'C' && (
|
|
<div
|
|
className="Tbl2-Variant"
|
|
style={{ fontFamily: SelectedFont }}
|
|
>
|
|
{item.ProdDetail?.map((prod, index) => (
|
|
<p key={index}>
|
|
{prod.ProdName} - {prod.Size} {prod.UomName}
|
|
</p>
|
|
))}
|
|
</div>
|
|
)}
|
|
</p>
|
|
{productBasedExtraCharges?.find(
|
|
(find) => find.ProdId === item.ProdId
|
|
) !== undefined && (
|
|
<div
|
|
style={{
|
|
fontSize: '10px',
|
|
fontWeight: '500',
|
|
whiteSpace: 'nowrap',
|
|
}}
|
|
>
|
|
Extra Charges :{' '}
|
|
{
|
|
productBasedExtraCharges?.find(
|
|
(find) => find.ProdId === item.ProdId
|
|
)?.TotalAmt
|
|
}
|
|
</div>
|
|
)}
|
|
</p>
|
|
|
|
<p
|
|
className="sum-item-amt"
|
|
style={{ fontFamily: SelectedFont }}
|
|
onClick={(e) => {
|
|
e.stopPropagation();
|
|
if (GetCustId) {
|
|
handleCustomerProductPriceHistory(item);
|
|
}
|
|
}}
|
|
>
|
|
<span style={{ color: '#FF4D4F', marginRight: '0.5rem' }}>
|
|
-{' '}
|
|
{item?.Type != 'C'
|
|
? item.Offer
|
|
? item.Offer
|
|
: '-'
|
|
: item?.OfferPrice
|
|
? item.OfferPrice
|
|
: '-'}{' '}
|
|
/-
|
|
</span>
|
|
Rs {item?.TotalAmt}/-
|
|
</p>
|
|
|
|
<div className="summary-listedit-div">
|
|
<div className="items-editables">
|
|
<MinusOutlined onClick={() => decline(item)} />
|
|
|
|
<Badge count={item?.OrderQty} overflowCount={10000}>
|
|
{' '}
|
|
</Badge>
|
|
{item?.StockAvailable === 'Y' ? (
|
|
returnCount(item) > 0 && (
|
|
<PlusOutlined onClick={() => increase(item)} />
|
|
)
|
|
) : (
|
|
<PlusOutlined onClick={() => increase(item)} />
|
|
)}
|
|
|
|
<EditOutlined
|
|
style={{ fontSize: '14px' }}
|
|
onClick={() => handleEditQuantity(item)}
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
))}
|
|
{EditQuantity && OldtableDataTakeAway?.length > 0 && (
|
|
<BSBillingEditQuantity
|
|
handleEditQuantityCancel={handleEditQuantityCancel}
|
|
BSBillingEditQuantity={EditQuantity}
|
|
Productdata={Modaldata}
|
|
Index={Index}
|
|
shortKeyMethod={shortKeyMethod}
|
|
/>
|
|
)}
|
|
</div>
|
|
{/* oldDineAway */}
|
|
<div className="BSBill2-cont">
|
|
{OldtableDataDinein?.map((item, index) => (
|
|
<div style={{ display: 'flex' }}>
|
|
{BookingTypeBoth && (
|
|
<div
|
|
style={{
|
|
width: '40px',
|
|
backgroundColor: '#A2C3CD',
|
|
display: 'flex',
|
|
flexDirection: 'column',
|
|
alignItems: 'center', // Center align items horizontally
|
|
justifyContent: 'center', // Center align items vertically
|
|
}}
|
|
>
|
|
{index ==
|
|
Math.round(OldtableDataDinein?.length / 2 - 0.1) && (
|
|
<img width="35px" alt="" src={dineInIcon} />
|
|
)}
|
|
</div>
|
|
)}
|
|
<div
|
|
className={
|
|
BookingType === 'Dine In' && item?.SalesId
|
|
? 'summary-list-disabled'
|
|
: 'summary-list'
|
|
}
|
|
style={{
|
|
fontFamily: SelectedFont,
|
|
|
|
backgroundColor:
|
|
BillOrderPre === 'Y'
|
|
? item?.SalesId
|
|
? 'rgb(243, 248, 213)'
|
|
: BookingType === 'Dine In' &&
|
|
triggerAnimation &&
|
|
OldtableDataTakeAway?.length + index === 0 &&
|
|
!item?.SalesId &&
|
|
tableDataDinein?.length >= PreviousdataLength
|
|
? 'wheat'
|
|
: BookingType !== 'Dine In' &&
|
|
triggerAnimation &&
|
|
OldtableDataTakeAway?.length + index === 0 &&
|
|
tableDataDinein?.length >= PreviousdataLength &&
|
|
!HoldOrderDtl &&
|
|
!UnpaidData
|
|
? 'wheat'
|
|
: 'inherit'
|
|
: 'none',
|
|
background: item?.SalesId
|
|
? 'rgb(243, 248, 213)'
|
|
: GlobEstBooking === 'ParEst' &&
|
|
GlobProdwisedata?.includes(
|
|
item?.InwardDtlId + ' ' + item?.BookingTypeName
|
|
)
|
|
? '#b2d1f7'
|
|
: (OldtableDataTakeAway?.length + index) % 2 === 0
|
|
? 'white'
|
|
: SelectedBillColor?.['OverallBackgroundColor']
|
|
? SelectedBillColor?.['OverallBackgroundColor']
|
|
: '#d6d6d6',
|
|
animation:
|
|
BillOrderPre === 'Y' && !BookingTypeBoth
|
|
? triggerAnimation &&
|
|
OldtableDataTakeAway?.length + index === 0 &&
|
|
!item?.SalesId &&
|
|
tableDataDinein?.length >= PreviousdataLength &&
|
|
!HoldOrderDtl &&
|
|
!UnpaidData
|
|
? 'splashAnimation 0.5s ease-in-out'
|
|
: 'none'
|
|
: 'none',
|
|
}}
|
|
>
|
|
<img
|
|
alt="pozo"
|
|
className=""
|
|
style={{ width: '4rem', height: '4rem' }}
|
|
loading="lazy"
|
|
src={
|
|
item?.ProdLogo &&
|
|
item?.ProdLogo != null &&
|
|
item?.ProdLogo != undefined
|
|
? item?.ProdLogo
|
|
: defaultimage
|
|
}
|
|
/>
|
|
<div className="sum-item-cont">
|
|
<p
|
|
className="sum-item-name"
|
|
style={{ fontFamily: SelectedFont }}
|
|
>
|
|
{' '}
|
|
{item?.ProdName} {' '}
|
|
{item.BrandName !== null ? item.BrandName : ''}
|
|
<p
|
|
className="Tbl2-Variant"
|
|
style={{ fontFamily: SelectedFont }}
|
|
>
|
|
{item?.Type != 'C' && (
|
|
<>
|
|
<p
|
|
className="Tbl2-Variant"
|
|
style={{ fontFamily: SelectedFont }}
|
|
>
|
|
(
|
|
{!item?.ProdVariantName?.toLowerCase()?.includes(
|
|
'variant'
|
|
) && <span>{item?.ProdVariantName} </span>}
|
|
{item?.Size}
|
|
{item?.SinglePc == 'Y' ? 'PCS' : item?.UomName})
|
|
</p>
|
|
{item?.OfferMessage &&
|
|
!Array.isArray(item.OfferMessage) && (
|
|
<p
|
|
className={`offermessageTag ${!isMobile ? 'desktop' : ''}`}
|
|
>
|
|
{item.OfferMessage?.split('>')?.[0] +
|
|
`> ${item?.OrderQty} Eligible Free`}
|
|
</p>
|
|
)}
|
|
</>
|
|
)}
|
|
{item?.Type === 'C' && (
|
|
<div
|
|
className="Tbl2-Variant"
|
|
style={{ fontFamily: SelectedFont }}
|
|
>
|
|
{item.ProdDetail?.map((prod, index) => (
|
|
<p key={index}>
|
|
{prod.ProdName} - {prod.Size} {prod.UomName}
|
|
</p>
|
|
))}
|
|
</div>
|
|
)}
|
|
</p>
|
|
{productBasedExtraCharges?.find(
|
|
(find) => find.ProdId === item.ProdId
|
|
) !== undefined && (
|
|
<div
|
|
style={{
|
|
fontSize: '10px',
|
|
fontWeight: '500',
|
|
whiteSpace: 'nowrap',
|
|
}}
|
|
>
|
|
Extra Charges :{' '}
|
|
{
|
|
productBasedExtraCharges?.find(
|
|
(find) => find.ProdId === item.ProdId
|
|
)?.TotalAmt
|
|
}
|
|
</div>
|
|
)}
|
|
</p>
|
|
|
|
<p
|
|
className="sum-item-amt"
|
|
style={{ fontFamily: SelectedFont }}
|
|
onClick={(e) => {
|
|
e.stopPropagation();
|
|
if (GetCustId) {
|
|
handleCustomerProductPriceHistory(item);
|
|
}
|
|
}}
|
|
>
|
|
<span style={{ color: '#FF4D4F', marginRight: '0.5rem' }}>
|
|
-{' '}
|
|
{item?.Type != 'C'
|
|
? item.Offer
|
|
? item.Offer
|
|
: '-'
|
|
: item?.OfferPrice
|
|
? item.OfferPrice
|
|
: '-'}{' '}
|
|
/-
|
|
</span>
|
|
Rs {item?.TotalAmt}/-
|
|
</p>
|
|
|
|
<div className="summary-listedit-div">
|
|
<div className="items-editables">
|
|
{/* <MinusOutlined onClick={() => decline(item)} />
|
|
*/}
|
|
<MinusOutlined onClick={() => decline(item)} />
|
|
<Badge count={item?.OrderQty} overflowCount={10000}>
|
|
{' '}
|
|
</Badge>
|
|
{item?.StockAvailable === 'Y' ? (
|
|
returnCount(item) > 0 && (
|
|
<PlusOutlined onClick={() => increase(item)} />
|
|
)
|
|
) : (
|
|
<PlusOutlined onClick={() => increase(item)} />
|
|
)}
|
|
|
|
<EditOutlined
|
|
style={{ fontSize: '14px' }}
|
|
onClick={() => handleEditQuantity(item)}
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
))}
|
|
{OldtableDataDinein?.length > 0 && EditQuantity && (
|
|
<BSBillingEditQuantity
|
|
handleEditQuantityCancel={handleEditQuantityCancel}
|
|
BSBillingEditQuantity={EditQuantity}
|
|
Productdata={Modaldata}
|
|
Index={Index}
|
|
shortKeyMethod={shortKeyMethod}
|
|
/>
|
|
)}
|
|
</div>
|
|
{/* TakeAway */}
|
|
<div className="BSBill2-cont">
|
|
{tableDataTakeAway?.map((item, index) => (
|
|
<div style={{ display: 'flex' }}>
|
|
{BookingTypeBoth && (
|
|
<div
|
|
style={{
|
|
width: '40px',
|
|
backgroundColor: '#CFB59D',
|
|
display: 'flex',
|
|
flexDirection: 'column',
|
|
alignItems: 'center', // Center align items horizontally
|
|
justifyContent: 'center', // Center align items vertically
|
|
}}
|
|
>
|
|
{index ==
|
|
Math.round(tableDataTakeAway?.length / 2 - 0.1) && (
|
|
<img width="35px" alt="" src={TakeAwayIcon} />
|
|
)}
|
|
</div>
|
|
)}
|
|
<div
|
|
className={
|
|
BookingType === 'Dine In' && item?.SalesId
|
|
? 'summary-list-disabled'
|
|
: 'summary-list'
|
|
}
|
|
style={{
|
|
fontFamily: SelectedFont,
|
|
|
|
backgroundColor:
|
|
BillOrderPre === 'Y'
|
|
? BookingType === 'Dine In' && item?.SalesId
|
|
? 'rgb(243, 248, 213)'
|
|
: BookingType === 'Dine In' &&
|
|
triggerAnimation &&
|
|
OldtableDataDinein?.length +
|
|
OldtableDataTakeAway?.length +
|
|
index ===
|
|
0 &&
|
|
!item?.SalesId &&
|
|
tableDataTakeAway?.length >= PreviousdataLength
|
|
? 'wheat'
|
|
: BookingType !== 'Dine In' &&
|
|
triggerAnimation &&
|
|
OldtableDataDinein?.length +
|
|
OldtableDataTakeAway?.length +
|
|
index ===
|
|
0 &&
|
|
tableDataTakeAway?.length >=
|
|
PreviousdataLength &&
|
|
!HoldOrderDtl &&
|
|
!UnpaidData
|
|
? 'wheat'
|
|
: (OldtableDataDinein?.length +
|
|
OldtableDataTakeAway?.length +
|
|
index) %
|
|
2 ===
|
|
0
|
|
? 'white'
|
|
: SelectedBillColor?.['OverallBackgroundColor']
|
|
? SelectedBillColor?.[
|
|
'OverallBackgroundColor'
|
|
]
|
|
: '#d6d6d6'
|
|
: (OldtableDataDinein?.length +
|
|
OldtableDataTakeAway?.length +
|
|
index) %
|
|
2 ===
|
|
0
|
|
? 'white'
|
|
: SelectedBillColor?.['OverallBackgroundColor']
|
|
? SelectedBillColor?.['OverallBackgroundColor']
|
|
: '#d6d6d6',
|
|
background:
|
|
BookingType === 'Dine In' && item?.SalesId
|
|
? 'rgb(243, 248, 213)'
|
|
: GlobEstBooking === 'ParEst' &&
|
|
GlobProdwisedata?.includes(
|
|
item?.InwardDtlId + ' ' + item?.BookingTypeName
|
|
)
|
|
? '#b2d1f7'
|
|
: (OldtableDataDinein?.length +
|
|
OldtableDataTakeAway?.length +
|
|
index) %
|
|
2 ===
|
|
0
|
|
? 'white'
|
|
: SelectedBillColor?.['OverallBackgroundColor']
|
|
? SelectedBillColor?.['OverallBackgroundColor']
|
|
: '#d6d6d6',
|
|
animation:
|
|
BillOrderPre === 'Y' && !BookingTypeBoth
|
|
? triggerAnimation &&
|
|
OldtableDataDinein?.length +
|
|
OldtableDataTakeAway?.length +
|
|
index ===
|
|
0 &&
|
|
!item?.SalesId &&
|
|
tableDataTakeAway?.length >= PreviousdataLength &&
|
|
!HoldOrderDtl &&
|
|
!UnpaidData
|
|
? 'splashAnimation 0.5s ease-in-out'
|
|
: 'none'
|
|
: 'none',
|
|
}}
|
|
>
|
|
<img
|
|
alt="pozo"
|
|
className=""
|
|
style={{ width: '4rem', height: '4rem' }}
|
|
loading="lazy"
|
|
src={
|
|
item?.ProdLogo &&
|
|
item?.ProdLogo != null &&
|
|
item?.ProdLogo != undefined
|
|
? item?.ProdLogo
|
|
: defaultimage
|
|
}
|
|
/>
|
|
<div className="sum-item-cont">
|
|
<p
|
|
className="sum-item-name"
|
|
style={{ fontFamily: SelectedFont }}
|
|
onClick={() =>
|
|
(item.FullProductIdentifierDtls?.length > 0 ||
|
|
item.ProductIdentifierDtls?.length > 0 || imeiModal) &&
|
|
handleImeiDetails(item)
|
|
}
|
|
>
|
|
{' '}
|
|
{item?.Type !== 'OS'
|
|
? item.ProdName
|
|
: item.ServiceName}{' '}
|
|
{item.BrandName !== null ? item.BrandName : ''}
|
|
<p
|
|
className="Tbl2-Variant"
|
|
style={{ fontFamily: SelectedFont }}
|
|
>
|
|
<p
|
|
className="Tbl2-Variant"
|
|
style={{ fontFamily: SelectedFont }}
|
|
>
|
|
{item?.Type !== 'OS' && (
|
|
<>
|
|
(
|
|
{!item?.ProdVariantName?.toLowerCase()?.includes(
|
|
'variant'
|
|
) && <span>{item?.ProdVariantName} </span>}
|
|
{item?.Size}
|
|
{item?.SinglePc == 'Y' ? 'PCS' : item?.UomName})
|
|
</>
|
|
)}
|
|
</p>
|
|
{item?.Type === 'C' && (
|
|
<div
|
|
className="Tbl2-Variant"
|
|
style={{ fontFamily: SelectedFont }}
|
|
>
|
|
{item.ProdDetail?.map((prod, index) => (
|
|
<p key={index}>
|
|
{prod.ProdName} - {prod.Size} {prod.UomName}
|
|
</p>
|
|
))}
|
|
</div>
|
|
)}
|
|
</p>
|
|
{productBasedExtraCharges?.find(
|
|
(find) => find.ProdId === item.ProdId
|
|
) !== undefined && (
|
|
<div
|
|
style={{
|
|
fontSize: '10px',
|
|
fontWeight: '500',
|
|
whiteSpace: 'nowrap',
|
|
}}
|
|
>
|
|
Extra Charges :{' '}
|
|
{
|
|
productBasedExtraCharges?.find(
|
|
(find) => find.ProdId === item.ProdId
|
|
)?.TotalAmt
|
|
}
|
|
</div>
|
|
)}
|
|
</p>
|
|
|
|
<p
|
|
className="sum-item-amt"
|
|
style={{ fontFamily: SelectedFont }}
|
|
onClick={(e) => {
|
|
e.stopPropagation();
|
|
if (GetCustId) {
|
|
handleCustomerProductPriceHistory(item);
|
|
}
|
|
}}
|
|
>
|
|
<span style={{ color: '#FF4D4F', marginRight: '0.5rem' }}>
|
|
{item?.OfferPrice > 0 ||
|
|
(item?.Offer > 0 && (
|
|
<>
|
|
-{' '}
|
|
{item?.Type !== 'C'
|
|
? item.Offer
|
|
? item.Offer
|
|
: '-'
|
|
: item?.OfferPrice
|
|
? item.OfferPrice
|
|
: '-'}{' '}
|
|
/-
|
|
</>
|
|
))}
|
|
</span>
|
|
Rs {item?.TotalAmt}/-
|
|
</p>
|
|
|
|
<div className="summary-listedit-div">
|
|
<div className="items-editables">
|
|
<MinusOutlined onClick={() => decline(item)} />
|
|
<Badge count={item?.OrderQty} overflowCount={10000}>
|
|
{' '}
|
|
</Badge>
|
|
{item?.StockAvailable === 'Y' ? (
|
|
returnCount(item) > 0 && (
|
|
<PlusOutlined
|
|
onClick={() =>
|
|
item.Type == 'P' || item.Type == 'C'
|
|
? increase(item)
|
|
: item.ServiceType == 'G'
|
|
? increase(item)
|
|
: ''
|
|
}
|
|
/>
|
|
)
|
|
) : (
|
|
<PlusOutlined
|
|
onClick={() =>
|
|
item.Type == 'P' || item.Type == 'C'
|
|
? increase(item)
|
|
: item.ServiceType == 'G'
|
|
? increase(item)
|
|
: ''
|
|
}
|
|
/>
|
|
)}
|
|
|
|
<EditOutlined
|
|
style={{ fontSize: '14px' }}
|
|
onClick={() => handleEditQuantity(item)}
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
))}
|
|
{tableDataTakeAway?.length > 0 && EditQuantity && (
|
|
<BSBillingEditQuantity
|
|
handleEditQuantityCancel={handleEditQuantityCancel}
|
|
BSBillingEditQuantity={EditQuantity}
|
|
Productdata={Modaldata}
|
|
Index={Index}
|
|
shortKeyMethod={shortKeyMethod}
|
|
/>
|
|
)}
|
|
</div>
|
|
{/* Dine in */}
|
|
<div className="BSBill2-cont">
|
|
{tableDataDinein?.map((item, index) => (
|
|
<div style={{ display: 'flex' }}>
|
|
{BookingTypeBoth && (
|
|
<div
|
|
style={{
|
|
width: '40px',
|
|
backgroundColor: '#A2C3CD',
|
|
display: 'flex',
|
|
flexDirection: 'column',
|
|
alignItems: 'center', // Center align items horizontally
|
|
justifyContent: 'center', // Center align items vertically
|
|
}}
|
|
>
|
|
{index == Math.round(tableDataDinein?.length / 2 - 0.1) && (
|
|
<img width="35px" alt="" src={dineInIcon} />
|
|
)}
|
|
</div>
|
|
)}
|
|
<div
|
|
className={
|
|
BookingType === 'Dine In' && item?.SalesId
|
|
? 'summary-list-disabled'
|
|
: 'summary-list'
|
|
}
|
|
style={{
|
|
fontFamily: SelectedFont,
|
|
|
|
backgroundColor:
|
|
BillOrderPre === 'Y' && !BookingTypeBoth
|
|
? BookingType === 'Dine In' &&
|
|
item?.SalesId &&
|
|
!BookingTypeBoth
|
|
? 'rgb(243, 248, 213)'
|
|
: BookingType === 'Dine In' &&
|
|
triggerAnimation &&
|
|
OldtableDataTakeAway?.length +
|
|
OldtableDataDinein?.length +
|
|
tableDataTakeAway?.length +
|
|
index ===
|
|
0 &&
|
|
!item?.SalesId &&
|
|
tableDataDinein?.length >= PreviousdataLength
|
|
? 'wheat'
|
|
: BookingType !== 'Dine In' &&
|
|
triggerAnimation &&
|
|
OldtableDataTakeAway?.length +
|
|
OldtableDataDinein?.length +
|
|
tableDataTakeAway?.length +
|
|
index ===
|
|
0 &&
|
|
tableDataDinein?.length >= PreviousdataLength &&
|
|
!HoldOrderDtl &&
|
|
!UnpaidData
|
|
? 'wheat'
|
|
: 'inherit'
|
|
: 'none',
|
|
background:
|
|
BookingType === 'Dine In' &&
|
|
item?.SalesId &&
|
|
!BookingTypeBoth
|
|
? 'rgb(243, 248, 213)'
|
|
: GlobEstBooking === 'ParEst' &&
|
|
GlobProdwisedata?.includes(
|
|
item?.InwardDtlId + ' ' + item?.BookingTypeName
|
|
)
|
|
? '#b2d1f7'
|
|
: (OldtableDataTakeAway?.length +
|
|
OldtableDataDinein?.length +
|
|
tableDataTakeAway?.length +
|
|
index) %
|
|
2 ===
|
|
0
|
|
? 'white'
|
|
: SelectedBillColor?.['OverallBackgroundColor']
|
|
? SelectedBillColor?.['OverallBackgroundColor']
|
|
: '#d6d6d6',
|
|
animation:
|
|
BillOrderPre === 'Y' && !BookingTypeBoth
|
|
? triggerAnimation &&
|
|
OldtableDataTakeAway?.length +
|
|
OldtableDataDinein?.length +
|
|
tableDataTakeAway?.length +
|
|
index ===
|
|
0 &&
|
|
!item?.SalesId &&
|
|
tableDataDinein?.length >= PreviousdataLength &&
|
|
!HoldOrderDtl &&
|
|
!UnpaidData
|
|
? 'splashAnimation 0.5s ease-in-out'
|
|
: 'none'
|
|
: 'none',
|
|
}}
|
|
>
|
|
<img
|
|
alt="pozo"
|
|
className=""
|
|
style={{ width: '4rem', height: '4rem' }}
|
|
loading="lazy"
|
|
src={
|
|
item?.ProdLogo &&
|
|
item?.ProdLogo != null &&
|
|
item?.ProdLogo != undefined
|
|
? item?.ProdLogo
|
|
: defaultimage
|
|
}
|
|
/>
|
|
<div className="sum-item-cont">
|
|
<p
|
|
className="sum-item-name"
|
|
style={{ fontFamily: SelectedFont }}
|
|
>
|
|
{' '}
|
|
{item?.ProdName} {' '}
|
|
{item.BrandName !== null ? item.BrandName : ''}
|
|
<p
|
|
className="Tbl2-Variant"
|
|
style={{ fontFamily: SelectedFont }}
|
|
>
|
|
{item?.Type != 'C' && (
|
|
<>
|
|
<p
|
|
className="Tbl2-Variant"
|
|
style={{ fontFamily: SelectedFont }}
|
|
>
|
|
(
|
|
{!item?.ProdVariantName?.toLowerCase()?.includes(
|
|
'variant'
|
|
) && <span>{item?.ProdVariantName} </span>}
|
|
{item?.Size}
|
|
{item?.SinglePc == 'Y' ? 'PCS' : item?.UomName})
|
|
</p>
|
|
{item?.OfferMessage &&
|
|
!Array.isArray(item.OfferMessage) && (
|
|
<p
|
|
className={`offermessageTag ${!isMobile ? 'desktop' : ''}`}
|
|
>
|
|
{item.OfferMessage?.split('>')?.[0] +
|
|
`> ${item?.OrderQty} Eligible Free`}
|
|
</p>
|
|
)}
|
|
</>
|
|
)}
|
|
{item?.Type === 'C' && (
|
|
<div
|
|
className="Tbl2-Variant"
|
|
style={{ fontFamily: SelectedFont }}
|
|
>
|
|
{item.ProdDetail?.map((prod, index) => (
|
|
<p key={index}>
|
|
{prod.ProdName} - {prod.Size} {prod.UomName}
|
|
</p>
|
|
))}
|
|
</div>
|
|
)}
|
|
</p>
|
|
{productBasedExtraCharges?.find(
|
|
(find) => find.ProdId === item.ProdId
|
|
) !== undefined && (
|
|
<div
|
|
style={{
|
|
fontSize: '10px',
|
|
fontWeight: '500',
|
|
whiteSpace: 'nowrap',
|
|
}}
|
|
>
|
|
Extra Charges :{' '}
|
|
{
|
|
productBasedExtraCharges?.find(
|
|
(find) => find.ProdId === item.ProdId
|
|
)?.TotalAmt
|
|
}
|
|
</div>
|
|
)}
|
|
</p>
|
|
|
|
<p
|
|
className="sum-item-amt"
|
|
style={{ fontFamily: SelectedFont }}
|
|
onClick={(e) => {
|
|
e.stopPropagation();
|
|
if (GetCustId) {
|
|
handleCustomerProductPriceHistory(item);
|
|
}
|
|
}}
|
|
>
|
|
<span style={{ color: '#FF4D4F', marginRight: '0.5rem' }}>
|
|
-{' '}
|
|
{item?.Type != 'C'
|
|
? item.Offer
|
|
? item.Offer
|
|
: '-'
|
|
: item?.OfferPrice
|
|
? item.OfferPrice
|
|
: '-'}{' '}
|
|
/-
|
|
</span>
|
|
Rs {item?.TotalAmt}/-
|
|
</p>
|
|
|
|
<div className="summary-listedit-div">
|
|
<div className="items-editables">
|
|
<MinusOutlined onClick={() => decline(item)} />
|
|
<Badge count={item?.OrderQty} overflowCount={10000}>
|
|
{' '}
|
|
</Badge>
|
|
{item?.StockAvailable === 'Y' ? (
|
|
returnCount(item) > 0 && (
|
|
<PlusOutlined onClick={() => increase(item)} />
|
|
)
|
|
) : (
|
|
<PlusOutlined onClick={() => increase(item)} />
|
|
)}
|
|
|
|
<EditOutlined
|
|
style={{ fontSize: '14px' }}
|
|
onClick={() => handleEditQuantity(item)}
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
))}
|
|
{tableDataDinein?.length > 0 && EditQuantity && (
|
|
<BSBillingEditQuantity
|
|
handleEditQuantityCancel={handleEditQuantityCancel}
|
|
BSBillingEditQuantity={EditQuantity}
|
|
Productdata={Modaldata}
|
|
Index={Index}
|
|
shortKeyMethod={shortKeyMethod}
|
|
/>
|
|
)}
|
|
{OpenImeiDetail && (
|
|
<BSImeiDetails
|
|
DeviceDetails={OpenImeiDetail}
|
|
handleDeviceDetailClose={handleImeiDetailClose}
|
|
ProductDetail={Modaldata}
|
|
/>
|
|
)}
|
|
{customerPriceHistoryOpen && GetCustId && (
|
|
<CustomerPriceHistory
|
|
open={customerPriceHistoryOpen}
|
|
custId={GetCustId}
|
|
setCustomerPriceHistoryOpen={setCustomerPriceHistoryOpen}
|
|
customerProduct={customerProduct}
|
|
setCustomerProduct={setCustomerProduct}
|
|
selectedCustomer={selectedCustomer}
|
|
/>
|
|
)}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default BsBill2;
|