2026-01-27 18:27:29 +05:30
|
|
|
import React, { useEffect, useState } from 'react';
|
|
|
|
|
import { useDispatch, useSelector } from 'react-redux';
|
|
|
|
|
import '../../../../../Styles/BookingScreen/Components/BSBillingTables/BSBillingTable7/BSBillingTable7.scss';
|
|
|
|
|
import {
|
|
|
|
|
getTemplateData,
|
|
|
|
|
SelectedGlobalBillingColorDetail,
|
|
|
|
|
SelectedGlobalBillingFont,
|
|
|
|
|
} from '../../../../../Features/ThemeChange/ThemeChange';
|
|
|
|
|
import { Tooltip } from 'antd';
|
|
|
|
|
import {
|
|
|
|
|
GlobalBookingType,
|
|
|
|
|
GlobalHoldOrderDtl,
|
|
|
|
|
GlobalOrderCardDetails,
|
|
|
|
|
GlobalPreviousOrderLength,
|
|
|
|
|
GlobalUnpaidData,
|
|
|
|
|
changeOrderCardDetails,
|
|
|
|
|
ChangeSelectedCustDisable,
|
|
|
|
|
changeReorderHoldDetails,
|
|
|
|
|
changeBookingType,
|
|
|
|
|
changeSelectedOption,
|
|
|
|
|
GlobalSelProdWiseEst,
|
|
|
|
|
GlobalBookingTypeBoth,
|
|
|
|
|
GlobalOrderType,
|
|
|
|
|
changeAllProductTokenAvailable,
|
|
|
|
|
changeTokenOnly,
|
|
|
|
|
changeOrderType,
|
|
|
|
|
changeReorderProductDetails,
|
|
|
|
|
changeSelectedCustId,
|
|
|
|
|
changeCustomerID,
|
|
|
|
|
ChangeNavHoldData,
|
|
|
|
|
PreferenceData,
|
|
|
|
|
GlobalEstimateBooking,
|
|
|
|
|
ChangeOverAllDiscSales,
|
|
|
|
|
ChangeOverAllDiscEstimate,
|
|
|
|
|
changeSelProdWiseEst,
|
|
|
|
|
changeUnpaidData,
|
|
|
|
|
GlobalOtherSevices,
|
|
|
|
|
GlobalDefaultBookingType,
|
2026-02-05 15:53:37 +05:30
|
|
|
GlobalCustId,
|
|
|
|
|
GlobalSelOption,
|
2026-02-18 19:41:06 +05:30
|
|
|
changeBillEditingMode,
|
|
|
|
|
changePreviousOrderPayment,
|
|
|
|
|
changePreviousOrderOfferDetail,
|
2026-01-27 18:27:29 +05:30
|
|
|
} from '../../../../../Features/BookingScreen/BookingData/BookingData';
|
|
|
|
|
import {
|
|
|
|
|
ChangeFullFreeProductList,
|
|
|
|
|
changeFullOfferAppliedProducts,
|
|
|
|
|
ClearOfferAppliedProducts,
|
|
|
|
|
GlobalFreeProdList,
|
|
|
|
|
GlobalOfferAppliedProducts,
|
|
|
|
|
} from '../../../../../Features/Offer/Offernew/BookingOffernew.js';
|
|
|
|
|
|
|
|
|
|
import BSBillingEditQuantity from '../BSBillingEditQuantity/BSBillingEditQuantity';
|
|
|
|
|
import {
|
|
|
|
|
ChangeTotalAmount,
|
|
|
|
|
globalExtraTotalAmount,
|
|
|
|
|
} from '../../../../../Features/ExteraCharges/ExtraCharges';
|
|
|
|
|
import WebFont from 'webfontloader';
|
|
|
|
|
import { isMobile } from 'react-device-detect';
|
|
|
|
|
import dineInIcon from '../../../../../Images/Dine In.svg';
|
|
|
|
|
import TakeAwayIcon from '../../../../../Images/Take away.svg';
|
|
|
|
|
import { getCustomerDisplayWindow } from '../../../../../Features/customerDisplayWindow/customerDisplayWindow.js';
|
|
|
|
|
import { useApplyOfferto_CardDetail } from '../../UtillComponents/BSNavBarOffer/BSNavBarOffer_CustomHooks.jsx';
|
|
|
|
|
import BSEditTotalAmt from '../BSEditTotalAmount/BSEditTotalAmt.jsx';
|
|
|
|
|
import BSImeiDetails from '../BSImeiDetails/BSImeiDetails.jsx';
|
|
|
|
|
import { getSession } from '../../../../../Services/Others.js';
|
|
|
|
|
import { useUtilsComponent } from '../../../../../Services/utils.js';
|
2026-02-05 15:53:37 +05:30
|
|
|
import CustomerPriceHistory from '../../UtillComponents/CustomerPriceHistory.jsx';
|
2026-01-27 18:27:29 +05:30
|
|
|
|
|
|
|
|
const BSBillingTable7 = () => {
|
|
|
|
|
const { removeExtraCharge } = useUtilsComponent();
|
|
|
|
|
const dispatch = useDispatch();
|
|
|
|
|
|
|
|
|
|
const preferenceDatas = useSelector(PreferenceData);
|
|
|
|
|
const preferenceOffer =
|
|
|
|
|
preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
|
|
|
|
|
(item) => item.SettingIdName === 'Offer'
|
|
|
|
|
)?.SettingValue === 'Y';
|
|
|
|
|
const applyOffer = useApplyOfferto_CardDetail();
|
|
|
|
|
const SelectedBillColor = useSelector(SelectedGlobalBillingColorDetail);
|
|
|
|
|
const SelectedFont = useSelector(SelectedGlobalBillingFont);
|
|
|
|
|
const tableData = useSelector(GlobalOrderCardDetails);
|
|
|
|
|
const GlobalOfferAppliedProductsData = useSelector(
|
|
|
|
|
GlobalOfferAppliedProducts
|
|
|
|
|
);
|
|
|
|
|
const OfferFreeProduct = useSelector(GlobalFreeProdList);
|
|
|
|
|
const templateData = useSelector(getTemplateData);
|
|
|
|
|
const allowDecimal = preferenceDatas?.[0]?.SettingDtlDetails?.find(
|
|
|
|
|
(setting) =>
|
|
|
|
|
setting?.SettingIdName?.toLowerCase() === 'decimal' &&
|
|
|
|
|
setting?.SettingValue === 'Y'
|
|
|
|
|
);
|
|
|
|
|
const tableOptions = templateData?.BookingBilling?.[1];
|
|
|
|
|
const OfferCheckedInSetup = templateData?.BookingNavbar?.[1].some(
|
|
|
|
|
(item) => item?.OptionName == 'Offer'
|
|
|
|
|
);
|
|
|
|
|
const BookingType = useSelector(GlobalBookingType);
|
|
|
|
|
const defaultBookingType = useSelector(GlobalDefaultBookingType);
|
2026-02-05 15:53:37 +05:30
|
|
|
const GetCustId = useSelector(GlobalCustId);
|
|
|
|
|
const selectedCustomer = useSelector(GlobalSelOption);
|
2026-01-27 18:27:29 +05:30
|
|
|
|
2026-02-05 15:53:37 +05:30
|
|
|
const [customerPriceHistoryOpen, setCustomerPriceHistoryOpen] = useState(false);
|
|
|
|
|
const [customerProduct, setCustomerProduct] = useState(null);
|
2026-01-27 18:27:29 +05:30
|
|
|
const [EditQuantity, setEditQuantity] = useState(false);
|
|
|
|
|
const [Modaldata, setModaldata] = useState([]);
|
|
|
|
|
const [editdelete, seteditdelete] = useState('');
|
|
|
|
|
const [PreviousdataLength, setPreviousdataLength] = useState();
|
|
|
|
|
const [triggerAnimation, setTriggerAnimation] = useState(true);
|
|
|
|
|
const PreviousOrderLength = useSelector(GlobalPreviousOrderLength);
|
|
|
|
|
const HoldOrderDtl = useSelector(GlobalHoldOrderDtl);
|
|
|
|
|
const UnpaidData = useSelector(GlobalUnpaidData);
|
|
|
|
|
const GlobProdwisedata = useSelector(GlobalSelProdWiseEst);
|
|
|
|
|
const [editField, setEditField] = useState(false);
|
|
|
|
|
const [deleteField, setDeleteField] = useState(false);
|
|
|
|
|
const [Index, setIndex] = useState(null);
|
|
|
|
|
const [shortKeyMethod, setshortKeyMethod] = useState(null);
|
|
|
|
|
|
|
|
|
|
const BillOrderPre = preferenceDatas?.[0]?.SettingDtlDetails?.find(
|
|
|
|
|
(item) => item.SettingIdName === 'BillItemsOrder'
|
|
|
|
|
)?.SettingValue;
|
|
|
|
|
const BookingTypeBoth = useSelector(GlobalBookingTypeBoth);
|
|
|
|
|
const OrderType = useSelector(GlobalOrderType);
|
|
|
|
|
const GlobEstBooking = useSelector(GlobalEstimateBooking);
|
|
|
|
|
const [OpenImeiDetail, setOpenImeiDetail] = useState(false);
|
|
|
|
|
const GlobalExtraCharge = useSelector(globalExtraTotalAmount);
|
|
|
|
|
const OtherServicesglobal = useSelector(GlobalOtherSevices);
|
|
|
|
|
|
|
|
|
|
const [OpenEditTotalAmt, setOpenEditTotalAmt] = useState(false);
|
|
|
|
|
const tableDataDinein = tableData?.filter(
|
|
|
|
|
(a, b) => a.BookingTypeName === 'Dine In' && !a?.SalesId
|
|
|
|
|
);
|
|
|
|
|
const tableDataTakeAway =
|
|
|
|
|
OrderType === 'Hold'
|
|
|
|
|
? tableData?.filter((a, b) => a.BookingTypeName === 'TakeAway')
|
|
|
|
|
: tableData?.filter(
|
2026-02-05 15:53:37 +05:30
|
|
|
(a, b) => a.BookingTypeName === 'TakeAway' && !a?.SalesId
|
|
|
|
|
);
|
2026-01-27 18:27:29 +05:30
|
|
|
const OldtableDataDinein = tableData?.filter(
|
|
|
|
|
(a, b) => a.BookingTypeName === 'Dine In' && a?.SalesId
|
|
|
|
|
);
|
|
|
|
|
const OldtableDataTakeAway =
|
|
|
|
|
OrderType != 'Hold'
|
|
|
|
|
? tableData?.filter(
|
2026-02-05 15:53:37 +05:30
|
|
|
(a, b) => a.BookingTypeName === 'TakeAway' && a?.SalesId
|
|
|
|
|
)
|
2026-01-27 18:27:29 +05:30
|
|
|
: [];
|
|
|
|
|
const productBasedExtraCharges = GlobalExtraCharge.filter(
|
|
|
|
|
(obj) => 'ProdName' in obj
|
|
|
|
|
);
|
|
|
|
|
const preferenceshortcutkey = preferenceDatas?.[0]?.SettingDtlDetails?.find(
|
|
|
|
|
(setting) =>
|
|
|
|
|
setting?.SettingIdName?.toLowerCase() === 'shortcutkeys' &&
|
|
|
|
|
setting?.SettingValue === 'Y'
|
|
|
|
|
);
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (SelectedFont) {
|
|
|
|
|
WebFont.load({
|
|
|
|
|
google: {
|
|
|
|
|
families: [SelectedFont], // Load the selected font
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}, [SelectedFont]);
|
2026-02-05 15:53:37 +05:30
|
|
|
useEffect(() => {
|
|
|
|
|
const handleKeyDown = (e) => {
|
|
|
|
|
if (e.ctrlKey && e.key.toLowerCase() === 'i') {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
|
|
const prodId = tableData?.[0]?.ProdId;
|
|
|
|
|
|
|
|
|
|
if (GetCustId && prodId) {
|
|
|
|
|
setCustomerPriceHistoryOpen(true);
|
|
|
|
|
setCustomerProduct(prodId);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
window.addEventListener('keydown', handleKeyDown);
|
|
|
|
|
|
|
|
|
|
return () => {
|
|
|
|
|
window.removeEventListener('keydown', handleKeyDown);
|
|
|
|
|
};
|
|
|
|
|
}, [GetCustId, tableData]);
|
2026-01-27 18:27:29 +05:30
|
|
|
useEffect(() => {
|
|
|
|
|
if (tableData?.length === 0) {
|
|
|
|
|
dispatch(ClearOfferAppliedProducts());
|
|
|
|
|
}
|
|
|
|
|
// setTriggerAnimation(true);
|
|
|
|
|
if (!isMobile) {
|
|
|
|
|
const customerDisplayWindow = getCustomerDisplayWindow();
|
|
|
|
|
console.log('customerDisplayWindowtableData', customerDisplayWindow);
|
|
|
|
|
if (customerDisplayWindow && !customerDisplayWindow.closed) {
|
|
|
|
|
const updatedData = {
|
|
|
|
|
userData: tableData,
|
|
|
|
|
};
|
|
|
|
|
customerDisplayWindow.postMessage(updatedData, '*');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const timer = setTimeout(() => {
|
|
|
|
|
setTriggerAnimation(false);
|
|
|
|
|
}, 400);
|
|
|
|
|
|
|
|
|
|
return () => clearTimeout(timer);
|
|
|
|
|
}
|
|
|
|
|
}, [tableData]);
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (tableOptions?.length > 0) {
|
|
|
|
|
let editFieldValue = tableOptions?.filter(
|
|
|
|
|
(item) => item.OptionName == 'Edit'
|
|
|
|
|
);
|
|
|
|
|
if (editFieldValue?.length > 0) {
|
|
|
|
|
setEditField(true);
|
|
|
|
|
} else {
|
|
|
|
|
setEditField(false);
|
|
|
|
|
}
|
|
|
|
|
let DeleteFieldValue = tableOptions?.filter(
|
|
|
|
|
(item) => item.OptionName == 'Delete'
|
|
|
|
|
);
|
|
|
|
|
if (DeleteFieldValue?.length > 0) {
|
|
|
|
|
setDeleteField(true);
|
|
|
|
|
} else {
|
|
|
|
|
setDeleteField(false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}, [tableOptions]);
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
setPreviousdataLength(PreviousOrderLength);
|
|
|
|
|
}, [PreviousOrderLength]);
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (!preferenceshortcutkey) return;
|
|
|
|
|
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) => {
|
2026-02-18 19:41:06 +05:30
|
|
|
const key = event.key.toLowerCase();
|
|
|
|
|
// 👉 ALT + P → Open Edit Total Amount
|
|
|
|
|
if (event.altKey && key === 'p') {
|
|
|
|
|
event.preventDefault();
|
|
|
|
|
if (tableData?.length > 0) {
|
|
|
|
|
OpenEditTotalAmount();
|
|
|
|
|
}
|
|
|
|
|
return;
|
2026-01-27 18:27:29 +05:30
|
|
|
}
|
2026-02-18 19:41:06 +05:30
|
|
|
if (!event.ctrlKey) return;
|
|
|
|
|
if (key === 'q') {
|
2026-02-09 17:37:12 +05:30
|
|
|
event.preventDefault();
|
|
|
|
|
handleShortcut('qty');
|
|
|
|
|
} else if (key === 'e') {
|
|
|
|
|
event.preventDefault();
|
|
|
|
|
handleShortcut('price');
|
|
|
|
|
} else if (key === 'y') {
|
|
|
|
|
event.preventDefault();
|
|
|
|
|
handleShortcut('Parcel');
|
|
|
|
|
} else if (key === 'b') {
|
|
|
|
|
event.preventDefault();
|
|
|
|
|
handleShortcut('weightAmount');
|
|
|
|
|
}
|
2026-02-18 19:41:06 +05:30
|
|
|
|
|
|
|
|
};
|
2026-01-27 18:27:29 +05:30
|
|
|
window.addEventListener('keydown', handleKeyDown);
|
|
|
|
|
|
|
|
|
|
return () => {
|
|
|
|
|
window.removeEventListener('keydown', handleKeyDown);
|
|
|
|
|
};
|
|
|
|
|
}, [preferenceshortcutkey, tableDataTakeAway, tableDataDinein, BillOrderPre]);
|
|
|
|
|
|
|
|
|
|
const handleImeiDetails = (value) => {
|
|
|
|
|
setOpenImeiDetail(true);
|
|
|
|
|
setModaldata(value);
|
|
|
|
|
};
|
|
|
|
|
const handleImeiDetailClose = () => {
|
|
|
|
|
setOpenImeiDetail(false);
|
|
|
|
|
};
|
|
|
|
|
const calculateAmounts = (
|
|
|
|
|
OrderQty,
|
|
|
|
|
OrderRate,
|
|
|
|
|
TaxPercentage,
|
|
|
|
|
IsPaid = true
|
|
|
|
|
) => {
|
|
|
|
|
const total = OrderQty * OrderRate;
|
|
|
|
|
|
|
|
|
|
const withoutTax = total - (total * TaxPercentage) / (100 + TaxPercentage);
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
TotalAmt: total,
|
|
|
|
|
...(IsPaid && { Offer: total }),
|
|
|
|
|
WithoutTaxRate: +withoutTax.toFixed(2),
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const ChangeOrderCardDetailsFn = async ({
|
|
|
|
|
OrderQty,
|
|
|
|
|
InwardDtlId,
|
|
|
|
|
Offer,
|
|
|
|
|
CompleteRemove = false,
|
|
|
|
|
RemoveAndUpdate = false,
|
|
|
|
|
BuyInwardDtlId,
|
|
|
|
|
BuyProdQty,
|
|
|
|
|
UpdateBuyAndFree = false,
|
|
|
|
|
CompleteRemoveBuyAndAddWithPaid = false,
|
|
|
|
|
CompleteRemoveconvertFreetoPaid = false,
|
|
|
|
|
CompleteRemoveconvertFreetoPaidTwoTypes = false,
|
|
|
|
|
CompleteRemoveconvertFreetoPaidNotCompletely = false,
|
|
|
|
|
CompleteRemoveAndPaidToFreeOtherType = false,
|
|
|
|
|
CompleteRemoveAndPaidToFreeOtherTypeWithoutMerge = false,
|
|
|
|
|
RemoveAndUpdateOtherBookingType = false,
|
|
|
|
|
BookingTypeName,
|
|
|
|
|
OrderRate,
|
|
|
|
|
}) => {
|
|
|
|
|
let ModifiedOrderCardDetail = JSON.parse(JSON.stringify(tableData));
|
|
|
|
|
|
|
|
|
|
if (RemoveAndUpdate) {
|
|
|
|
|
const data = ModifiedOrderCardDetail?.filter(
|
|
|
|
|
(e) =>
|
|
|
|
|
!(
|
|
|
|
|
e?.InwardDtlId === InwardDtlId &&
|
|
|
|
|
e?.Offer === Offer &&
|
|
|
|
|
e?.BookingTypeName === BookingTypeName
|
|
|
|
|
)
|
|
|
|
|
)?.map((e) => {
|
|
|
|
|
if (
|
|
|
|
|
e?.InwardDtlId == InwardDtlId &&
|
|
|
|
|
e?.Offer > 0 &&
|
|
|
|
|
e?.BookingTypeName === BookingTypeName
|
|
|
|
|
) {
|
|
|
|
|
const newQty = OrderQty;
|
|
|
|
|
return {
|
|
|
|
|
...e,
|
|
|
|
|
OrderQty: newQty,
|
|
|
|
|
...calculateAmounts(newQty, e.OrderRate, e.TaxPercentage),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (e?.InwardDtlId == BuyInwardDtlId) {
|
|
|
|
|
return {
|
|
|
|
|
...e,
|
|
|
|
|
OrderQty: BuyProdQty,
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
BuyProdQty,
|
|
|
|
|
e.OrderRate,
|
|
|
|
|
e.TaxPercentage,
|
|
|
|
|
false
|
|
|
|
|
),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return e;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return dispatch(changeOrderCardDetails(data));
|
|
|
|
|
}
|
|
|
|
|
if (RemoveAndUpdateOtherBookingType) {
|
|
|
|
|
const data = ModifiedOrderCardDetail?.filter(
|
|
|
|
|
(e) =>
|
|
|
|
|
!(
|
|
|
|
|
e?.InwardDtlId === InwardDtlId &&
|
|
|
|
|
e?.Offer === Offer &&
|
|
|
|
|
e?.BookingTypeName === BookingTypeName
|
|
|
|
|
)
|
|
|
|
|
)?.flatMap((e) => {
|
|
|
|
|
if (
|
|
|
|
|
e?.InwardDtlId == InwardDtlId &&
|
|
|
|
|
e?.Offer > 0 &&
|
|
|
|
|
e?.BookingTypeName === BookingTypeName
|
|
|
|
|
) {
|
|
|
|
|
const newQty = e?.OrderQty - BuyProdQty;
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
...e,
|
|
|
|
|
OrderQty: newQty,
|
|
|
|
|
...calculateAmounts(newQty, e.OrderRate, e.TaxPercentage),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
if (
|
|
|
|
|
e?.InwardDtlId == InwardDtlId &&
|
|
|
|
|
e?.Offer == 0 &&
|
|
|
|
|
e?.BookingTypeName !== BookingTypeName
|
|
|
|
|
) {
|
|
|
|
|
const newQty = e?.OrderQty - BuyProdQty;
|
|
|
|
|
|
|
|
|
|
let first = {
|
|
|
|
|
...e,
|
|
|
|
|
OrderQty: BuyProdQty,
|
|
|
|
|
...calculateAmounts(BuyProdQty, e.OrderRate, e.TaxPercentage),
|
|
|
|
|
};
|
|
|
|
|
if (newQty > 0) {
|
|
|
|
|
let second = {
|
|
|
|
|
...e,
|
|
|
|
|
Offer: 0,
|
|
|
|
|
OrderQty: newQty,
|
|
|
|
|
...calculateAmounts(newQty, e.OrderRate, e.TaxPercentage, false),
|
|
|
|
|
};
|
|
|
|
|
return [first, second];
|
|
|
|
|
}
|
|
|
|
|
return [first];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (e?.InwardDtlId == BuyInwardDtlId) {
|
|
|
|
|
return {
|
|
|
|
|
...e,
|
|
|
|
|
OrderQty: BuyProdQty,
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
BuyProdQty,
|
|
|
|
|
e.OrderRate,
|
|
|
|
|
e.TaxPercentage,
|
|
|
|
|
false
|
|
|
|
|
),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return e;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return dispatch(changeOrderCardDetails(data));
|
|
|
|
|
}
|
|
|
|
|
if (CompleteRemove) {
|
|
|
|
|
const data = ModifiedOrderCardDetail?.filter(
|
|
|
|
|
(e) =>
|
|
|
|
|
!(
|
|
|
|
|
e?.InwardDtlId === InwardDtlId &&
|
|
|
|
|
e?.Offer === Offer &&
|
|
|
|
|
e?.BookingTypeName === BookingTypeName &&
|
|
|
|
|
e?.OrderRate == OrderRate
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
return dispatch(changeOrderCardDetails(data));
|
|
|
|
|
}
|
|
|
|
|
if (CompleteRemoveAndPaidToFreeOtherType) {
|
|
|
|
|
let data = ModifiedOrderCardDetail?.filter(
|
|
|
|
|
(e) =>
|
|
|
|
|
!(
|
|
|
|
|
e?.InwardDtlId === InwardDtlId &&
|
|
|
|
|
e?.Offer === Offer &&
|
|
|
|
|
e?.BookingTypeName === BookingTypeName
|
|
|
|
|
)
|
|
|
|
|
)?.flatMap((exp) => {
|
|
|
|
|
// Same product but different booking type and not an offer
|
|
|
|
|
if (
|
|
|
|
|
exp?.InwardDtlId == InwardDtlId &&
|
|
|
|
|
exp?.Offer == 0 &&
|
|
|
|
|
exp?.BookingTypeName !== BookingTypeName
|
|
|
|
|
) {
|
|
|
|
|
const remainingQty = exp.OrderQty - OrderQty;
|
|
|
|
|
|
|
|
|
|
if (remainingQty === 0) {
|
|
|
|
|
return {
|
|
|
|
|
...exp,
|
|
|
|
|
OfferMode: 'B',
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
exp.OrderQty,
|
|
|
|
|
exp.OrderRate,
|
|
|
|
|
exp.TaxPercentage,
|
|
|
|
|
true
|
|
|
|
|
),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (remainingQty > 0) {
|
|
|
|
|
return [
|
|
|
|
|
{
|
|
|
|
|
...exp,
|
|
|
|
|
OrderQty: remainingQty,
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
remainingQty,
|
|
|
|
|
exp.OrderRate,
|
|
|
|
|
exp.TaxPercentage,
|
|
|
|
|
false
|
|
|
|
|
),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
...exp,
|
|
|
|
|
OrderQty: OrderQty,
|
|
|
|
|
Offer: 0,
|
|
|
|
|
OfferMode: 'B',
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
OrderQty,
|
|
|
|
|
exp.OrderRate,
|
|
|
|
|
exp.TaxPercentage,
|
|
|
|
|
true
|
|
|
|
|
),
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return exp;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// ===== Merge duplicates for free offers =====
|
|
|
|
|
const mergedData = [];
|
|
|
|
|
data?.forEach((item) => {
|
|
|
|
|
if (item?.OfferMode === 'B') {
|
|
|
|
|
// Check if a free item already exists for this product + booking type
|
|
|
|
|
const existingIndex = mergedData.findIndex(
|
|
|
|
|
(e) =>
|
|
|
|
|
e.InwardDtlId === item.InwardDtlId &&
|
|
|
|
|
e.BookingTypeName === item.BookingTypeName &&
|
|
|
|
|
e.OfferMode === 'B'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (existingIndex > -1) {
|
|
|
|
|
// Merge quantities
|
|
|
|
|
const existing = mergedData[existingIndex];
|
|
|
|
|
const newQty = existing.OrderQty + item.OrderQty;
|
|
|
|
|
mergedData[existingIndex] = {
|
|
|
|
|
...existing,
|
|
|
|
|
OrderQty: newQty,
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
newQty,
|
|
|
|
|
item.OrderRate,
|
|
|
|
|
item.TaxPercentage,
|
|
|
|
|
true
|
|
|
|
|
),
|
|
|
|
|
};
|
|
|
|
|
} else {
|
|
|
|
|
mergedData.push(item);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
mergedData.push(item);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return dispatch(changeOrderCardDetails(mergedData));
|
|
|
|
|
}
|
|
|
|
|
if (CompleteRemoveAndPaidToFreeOtherTypeWithoutMerge) {
|
|
|
|
|
let data = ModifiedOrderCardDetail?.filter(
|
|
|
|
|
(e) =>
|
|
|
|
|
!(
|
|
|
|
|
e?.InwardDtlId === InwardDtlId &&
|
|
|
|
|
e?.Offer === Offer &&
|
|
|
|
|
e?.BookingTypeName === BookingTypeName
|
|
|
|
|
)
|
|
|
|
|
)?.flatMap((exp) => {
|
|
|
|
|
// Same product but different booking type and not an offer
|
|
|
|
|
if (
|
|
|
|
|
exp?.InwardDtlId == InwardDtlId &&
|
|
|
|
|
exp?.Offer == 0 &&
|
|
|
|
|
exp?.BookingTypeName !== BookingTypeName
|
|
|
|
|
) {
|
|
|
|
|
const remainingQty = exp.OrderQty - OrderQty;
|
|
|
|
|
|
|
|
|
|
if (remainingQty === 0) {
|
|
|
|
|
return {
|
|
|
|
|
...exp,
|
|
|
|
|
OfferMode: 'B',
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
exp.OrderQty,
|
|
|
|
|
exp.OrderRate,
|
|
|
|
|
exp.TaxPercentage,
|
|
|
|
|
true
|
|
|
|
|
),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (remainingQty < 0) {
|
|
|
|
|
return [
|
|
|
|
|
{
|
|
|
|
|
...exp,
|
|
|
|
|
OrderQty: exp.OrderQty,
|
|
|
|
|
OfferMode: 'B',
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
exp.OrderQty,
|
|
|
|
|
exp.OrderRate,
|
|
|
|
|
exp.TaxPercentage,
|
|
|
|
|
true
|
|
|
|
|
),
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return exp;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return dispatch(changeOrderCardDetails(data));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (CompleteRemoveconvertFreetoPaid) {
|
|
|
|
|
const data = ModifiedOrderCardDetail?.filter(
|
|
|
|
|
(e) =>
|
|
|
|
|
!(
|
|
|
|
|
e?.InwardDtlId === BuyInwardDtlId &&
|
|
|
|
|
e?.BookingTypeName === BookingTypeName
|
|
|
|
|
)
|
|
|
|
|
)?.map((exp) => {
|
|
|
|
|
if (
|
|
|
|
|
exp?.InwardDtlId == InwardDtlId &&
|
|
|
|
|
exp?.Offer > 0 &&
|
|
|
|
|
exp?.BookingTypeName === BookingTypeName
|
|
|
|
|
) {
|
|
|
|
|
const { OfferType, OfferMessage, ...exp1 } = exp;
|
|
|
|
|
return {
|
|
|
|
|
...exp1,
|
|
|
|
|
Offer: 0,
|
|
|
|
|
OrderQty: OrderQty,
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
OrderQty,
|
|
|
|
|
exp.OrderRate,
|
|
|
|
|
exp.TaxPercentage,
|
|
|
|
|
false
|
|
|
|
|
),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
return exp; // keep unchanged item
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return dispatch(changeOrderCardDetails(data));
|
|
|
|
|
}
|
|
|
|
|
if (CompleteRemoveconvertFreetoPaidNotCompletely) {
|
|
|
|
|
const data = ModifiedOrderCardDetail?.filter(
|
|
|
|
|
(e) =>
|
|
|
|
|
!(
|
|
|
|
|
e?.InwardDtlId === BuyInwardDtlId &&
|
|
|
|
|
e?.BookingTypeName === BookingTypeName
|
|
|
|
|
)
|
|
|
|
|
)?.flatMap((exp) => {
|
|
|
|
|
if (
|
|
|
|
|
exp?.InwardDtlId == InwardDtlId &&
|
|
|
|
|
exp?.Offer > 0 &&
|
|
|
|
|
exp?.BookingTypeName === BookingTypeName
|
|
|
|
|
) {
|
|
|
|
|
const { OfferType, OfferMessage, ...exp1 } = exp;
|
|
|
|
|
let first = {
|
|
|
|
|
...exp1,
|
|
|
|
|
Offer: 0,
|
|
|
|
|
OrderQty: BuyProdQty,
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
OrderQty,
|
|
|
|
|
exp.OrderRate,
|
|
|
|
|
exp.TaxPercentage,
|
|
|
|
|
false
|
|
|
|
|
),
|
|
|
|
|
};
|
|
|
|
|
if (BuyProdQty < OrderQty) {
|
|
|
|
|
let second = {
|
|
|
|
|
...exp1,
|
|
|
|
|
Offer: 0,
|
|
|
|
|
OrderQty: exp1?.OrderQty - BuyProdQty,
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
exp1?.OrderQty - BuyProdQty,
|
|
|
|
|
exp.OrderRate,
|
|
|
|
|
exp.TaxPercentage,
|
|
|
|
|
true
|
|
|
|
|
),
|
|
|
|
|
};
|
|
|
|
|
return [first, second];
|
|
|
|
|
}
|
|
|
|
|
return [first];
|
|
|
|
|
}
|
|
|
|
|
return exp; // keep unchanged item
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return dispatch(changeOrderCardDetails(data));
|
|
|
|
|
}
|
|
|
|
|
if (CompleteRemoveBuyAndAddWithPaid) {
|
|
|
|
|
const data = ModifiedOrderCardDetail?.filter(
|
|
|
|
|
(e) =>
|
|
|
|
|
!(
|
|
|
|
|
(e?.InwardDtlId === BuyInwardDtlId &&
|
|
|
|
|
e?.BookingTypeName === BookingTypeName) ||
|
|
|
|
|
(e?.InwardDtlId == InwardDtlId &&
|
|
|
|
|
e?.Offer > 0 &&
|
|
|
|
|
e?.BookingTypeName === BookingTypeName)
|
|
|
|
|
)
|
|
|
|
|
)?.map((exp) => {
|
|
|
|
|
if (
|
|
|
|
|
exp?.InwardDtlId == InwardDtlId &&
|
|
|
|
|
exp?.Offer == 0 &&
|
|
|
|
|
exp?.BookingTypeName === BookingTypeName
|
|
|
|
|
) {
|
|
|
|
|
return {
|
|
|
|
|
...exp, // keep existing fields
|
|
|
|
|
OrderQty: OrderQty,
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
OrderQty,
|
|
|
|
|
exp.OrderRate,
|
|
|
|
|
exp.TaxPercentage,
|
|
|
|
|
false
|
|
|
|
|
),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
return exp; // keep unchanged item
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return dispatch(changeOrderCardDetails(data));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (UpdateBuyAndFree) {
|
|
|
|
|
const data = ModifiedOrderCardDetail?.map((e) => {
|
|
|
|
|
if (
|
|
|
|
|
e?.InwardDtlId == InwardDtlId &&
|
|
|
|
|
e?.Offer > 0 &&
|
|
|
|
|
e?.BookingTypeName === BookingTypeName
|
|
|
|
|
) {
|
|
|
|
|
const newQty = e?.OrderQty + OrderQty;
|
|
|
|
|
return {
|
|
|
|
|
...e,
|
|
|
|
|
OrderQty: newQty,
|
|
|
|
|
...calculateAmounts(newQty, e.OrderRate, e.TaxPercentage),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
if (e?.InwardDtlId == InwardDtlId && e?.Offer == Offer) {
|
|
|
|
|
const newQty = e?.OrderQty - OrderQty;
|
|
|
|
|
return {
|
|
|
|
|
...e,
|
|
|
|
|
OrderQty: newQty,
|
|
|
|
|
|
|
|
|
|
...calculateAmounts(newQty, e.OrderRate, e.TaxPercentage, false),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (
|
|
|
|
|
e?.InwardDtlId == BuyInwardDtlId &&
|
|
|
|
|
e?.BookingTypeName === BookingTypeName
|
|
|
|
|
) {
|
|
|
|
|
return {
|
|
|
|
|
...e,
|
|
|
|
|
OrderQty: BuyProdQty,
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
BuyProdQty,
|
|
|
|
|
e.OrderRate,
|
|
|
|
|
e.TaxPercentage,
|
|
|
|
|
false
|
|
|
|
|
),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return e;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return dispatch(changeOrderCardDetails(data));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (CompleteRemoveconvertFreetoPaidTwoTypes) {
|
|
|
|
|
const data = ModifiedOrderCardDetail?.filter(
|
|
|
|
|
(e) =>
|
|
|
|
|
!(
|
|
|
|
|
e?.InwardDtlId === BuyInwardDtlId &&
|
|
|
|
|
e?.BookingTypeName === BookingTypeName
|
|
|
|
|
)
|
|
|
|
|
)?.flatMap((exp) => {
|
|
|
|
|
if (
|
|
|
|
|
exp?.InwardDtlId == InwardDtlId &&
|
|
|
|
|
exp?.Offer > 0 &&
|
|
|
|
|
exp?.BookingTypeName === BookingTypeName
|
|
|
|
|
) {
|
|
|
|
|
const { OfferType, OfferMessage, ...exp1 } = exp;
|
|
|
|
|
return {
|
|
|
|
|
...exp1,
|
|
|
|
|
Offer: 0,
|
|
|
|
|
OrderQty: OrderQty,
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
OrderQty,
|
|
|
|
|
exp.OrderRate,
|
|
|
|
|
exp.TaxPercentage,
|
|
|
|
|
false
|
|
|
|
|
),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
if (
|
|
|
|
|
exp?.InwardDtlId == InwardDtlId &&
|
|
|
|
|
exp?.Offer > 0 &&
|
|
|
|
|
exp?.BookingTypeName !== BookingTypeName
|
|
|
|
|
) {
|
|
|
|
|
const { ...exp1 } = exp;
|
|
|
|
|
let first = {
|
|
|
|
|
...exp1,
|
|
|
|
|
// Offer: 0,
|
|
|
|
|
OrderQty: exp1?.OrderQty - BuyProdQty,
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
exp1?.OrderQty - BuyProdQty,
|
|
|
|
|
exp.OrderRate,
|
|
|
|
|
exp.TaxPercentage,
|
|
|
|
|
true
|
|
|
|
|
),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
let second = {
|
|
|
|
|
...exp1,
|
|
|
|
|
Offer: 0,
|
|
|
|
|
OrderQty: BuyProdQty,
|
|
|
|
|
...calculateAmounts(
|
|
|
|
|
BuyProdQty,
|
|
|
|
|
exp.OrderRate,
|
|
|
|
|
exp.TaxPercentage,
|
|
|
|
|
false
|
|
|
|
|
),
|
|
|
|
|
};
|
|
|
|
|
delete second?.OfferMessage;
|
|
|
|
|
delete second?.OfferType;
|
|
|
|
|
return [first, second];
|
|
|
|
|
}
|
|
|
|
|
return exp; // keep unchanged item
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return dispatch(changeOrderCardDetails(data));
|
|
|
|
|
}
|
|
|
|
|
// Update qty for normal case
|
|
|
|
|
|
|
|
|
|
const data = ModifiedOrderCardDetail?.map((e) => {
|
|
|
|
|
if (
|
|
|
|
|
e?.InwardDtlId == InwardDtlId &&
|
|
|
|
|
e?.Offer == Offer &&
|
|
|
|
|
e?.BookingTypeName === BookingTypeName
|
|
|
|
|
) {
|
|
|
|
|
return {
|
|
|
|
|
...e,
|
|
|
|
|
OrderQty,
|
|
|
|
|
...calculateAmounts(OrderQty, e.OrderRate, e.TaxPercentage, false),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
return e;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
dispatch(changeOrderCardDetails(data));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const ChangeFreeprodlistFn = async ({
|
|
|
|
|
FreeProdId,
|
|
|
|
|
OfferId,
|
|
|
|
|
OverAllFreeQty,
|
|
|
|
|
RemainingQty,
|
|
|
|
|
FreeQty,
|
|
|
|
|
CompleteRemove = false,
|
|
|
|
|
}) => {
|
|
|
|
|
const deepCopy = JSON.parse(JSON.stringify(OfferFreeProduct));
|
|
|
|
|
|
|
|
|
|
let ModifyedData;
|
|
|
|
|
|
|
|
|
|
if (CompleteRemove) {
|
|
|
|
|
// 🔹 Remove the matching FreeProd completely
|
|
|
|
|
ModifyedData = deepCopy?.filter(
|
|
|
|
|
(exp) => !(exp?.OfferId == OfferId && exp?.FreeProdId == FreeProdId)
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
// 🔹 Update the matching FreeProd
|
|
|
|
|
ModifyedData = deepCopy?.map((exp) => {
|
|
|
|
|
if (exp?.OfferId == OfferId && FreeProdId == exp?.FreeProdId) {
|
|
|
|
|
return {
|
|
|
|
|
...exp,
|
|
|
|
|
OverAllFreeQty,
|
|
|
|
|
RemainingQty,
|
|
|
|
|
FreeQty,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
return { ...exp };
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dispatch(ChangeFullFreeProductList(ModifyedData));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const ChangeOfferAppliedProdsFn = async ({
|
|
|
|
|
inwardDtlId,
|
|
|
|
|
OfferAmount,
|
|
|
|
|
FreeQty,
|
|
|
|
|
CompleteRemove = false,
|
|
|
|
|
insideinwardDtlId = false,
|
|
|
|
|
}) => {
|
|
|
|
|
const deepCopy = JSON.parse(JSON.stringify(GlobalOfferAppliedProductsData));
|
|
|
|
|
|
|
|
|
|
let ModifyedData;
|
|
|
|
|
|
|
|
|
|
if (CompleteRemove) {
|
|
|
|
|
// 🔹 Remove case
|
|
|
|
|
if (!insideinwardDtlId) {
|
|
|
|
|
ModifyedData = deepCopy?.filter(
|
|
|
|
|
(exp) => exp?.InwardDtlId !== inwardDtlId
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
ModifyedData = deepCopy?.filter(
|
|
|
|
|
(exp) =>
|
|
|
|
|
!(
|
|
|
|
|
Array?.isArray(exp?.FreeProductsList)
|
|
|
|
|
? exp?.FreeProductsList
|
|
|
|
|
: [exp?.FreeProductsList]
|
|
|
|
|
)?.some((freeProd) =>
|
|
|
|
|
freeProd?.ProdVariantDetails?.some((variant) =>
|
|
|
|
|
variant?.StockDetails?.some(
|
|
|
|
|
(stock) => stock?.FreeInwardDtlId === inwardDtlId
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 🔹 Update case
|
|
|
|
|
ModifyedData = deepCopy?.map((exp) => {
|
|
|
|
|
let shouldUpdate = false;
|
|
|
|
|
|
|
|
|
|
if (!insideinwardDtlId) {
|
|
|
|
|
shouldUpdate = exp?.InwardDtlId == inwardDtlId;
|
|
|
|
|
} else {
|
|
|
|
|
shouldUpdate = (
|
|
|
|
|
Array?.isArray(exp?.FreeProductsList)
|
|
|
|
|
? exp?.FreeProductsList
|
|
|
|
|
: [exp?.FreeProductsList]
|
|
|
|
|
)?.some((freeProd) =>
|
|
|
|
|
freeProd?.ProdVariantDetails?.some((variant) =>
|
|
|
|
|
variant?.StockDetails?.some(
|
|
|
|
|
(stock) => stock?.FreeInwardDtlId === inwardDtlId
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (shouldUpdate) {
|
|
|
|
|
return {
|
|
|
|
|
...exp,
|
|
|
|
|
OfferAmount,
|
|
|
|
|
ActualFreeQty: FreeQty,
|
|
|
|
|
FreeProductsList: (Array?.isArray(exp?.FreeProductsList)
|
|
|
|
|
? exp?.FreeProductsList
|
|
|
|
|
: [exp?.FreeProductsList]
|
|
|
|
|
)?.map((item, idx) =>
|
|
|
|
|
idx === 0
|
|
|
|
|
? {
|
2026-02-05 15:53:37 +05:30
|
|
|
...item,
|
|
|
|
|
FreeQty,
|
|
|
|
|
}
|
2026-01-27 18:27:29 +05:30
|
|
|
: item
|
|
|
|
|
),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return { ...exp };
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dispatch(changeFullOfferAppliedProducts(ModifyedData));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const removeFromCart = async (item) => {
|
|
|
|
|
removeExtraCharge(item);
|
|
|
|
|
setPreviousdataLength(tableData?.length);
|
|
|
|
|
|
|
|
|
|
let ischeckBothBookingType = tableData?.find(
|
|
|
|
|
(e) =>
|
|
|
|
|
e?.InwardDtlId == item?.InwardDtlId &&
|
|
|
|
|
e?.Offer > 0 &&
|
|
|
|
|
e?.BookingTypeName != item?.BookingTypeName
|
|
|
|
|
);
|
2026-02-18 19:41:06 +05:30
|
|
|
if (tableData?.length <= 1) {
|
|
|
|
|
await dispatch(changeReorderHoldDetails({}));
|
|
|
|
|
await dispatch(changeReorderProductDetails([]));
|
|
|
|
|
await dispatch(changeUnpaidData(false));
|
|
|
|
|
await dispatch(changeBookingType('TakeAway'));
|
|
|
|
|
await dispatch(changeTokenOnly(false));
|
|
|
|
|
await dispatch(ChangeTotalAmount([]));
|
|
|
|
|
await dispatch(changeAllProductTokenAvailable(false));
|
|
|
|
|
await dispatch(ChangeOverAllDiscSales(null));
|
|
|
|
|
await dispatch(ChangeOverAllDiscEstimate(null));
|
|
|
|
|
await dispatch(changeSelProdWiseEst([]));
|
|
|
|
|
dispatch(changeBillEditingMode(false));
|
|
|
|
|
await dispatch(changePreviousOrderPayment([]));
|
|
|
|
|
await dispatch(changePreviousOrderOfferDetail([]));
|
|
|
|
|
}
|
2026-01-27 18:27:29 +05:30
|
|
|
if (item?.Offer > 0) {
|
|
|
|
|
//check is Buyxgetx Or something
|
|
|
|
|
// let ischeck= GlobalOfferAppliedProductsData?.some((e)=>e?.FreeProductsList?.[0]??.
|
|
|
|
|
const isBuyAndGetX =
|
|
|
|
|
GlobalOfferAppliedProductsData?.find((data) =>
|
|
|
|
|
(Array?.isArray(data?.FreeProductsList)
|
|
|
|
|
? data?.FreeProductsList
|
|
|
|
|
: [data?.FreeProductsList]
|
|
|
|
|
)?.some((freeProd) =>
|
|
|
|
|
freeProd?.ProdVariantDetails?.some((variant) =>
|
|
|
|
|
variant?.StockDetails?.some(
|
|
|
|
|
(stock) => stock?.FreeInwardDtlId === item?.InwardDtlId
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)?.OfferMode == 'B';
|
|
|
|
|
|
|
|
|
|
const isItemWiseOrQuantityProduct = GlobalOfferAppliedProductsData?.find(
|
|
|
|
|
(data) =>
|
|
|
|
|
data?.ProdId === item?.ProdId &&
|
|
|
|
|
data?.InwardDtlId === item?.InwardDtlId &&
|
|
|
|
|
(data?.OfferMode === 'I' || data?.OfferMode === 'Q') &&
|
|
|
|
|
data?.OfferAmount === item?.Offer
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const isCheckFreeProduct = GlobalOfferAppliedProductsData?.find((off) =>
|
|
|
|
|
(Array.isArray(off?.FreeProductsList)
|
|
|
|
|
? off?.FreeProductsList
|
|
|
|
|
: [off?.FreeProductsList]
|
|
|
|
|
)?.some((prod) =>
|
|
|
|
|
prod?.ProdVariantDetails?.some((variant) =>
|
|
|
|
|
variant?.StockDetails?.some(
|
|
|
|
|
(stock) => stock.FreeInwardDtlId === item?.InwardDtlId
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (isBuyAndGetX) {
|
|
|
|
|
let isPaidproduct = tableData?.find(
|
|
|
|
|
(e) =>
|
|
|
|
|
e?.InwardDtlId == item?.InwardDtlId &&
|
|
|
|
|
e?.Offer == 0 &&
|
|
|
|
|
item?.BookingTypeName == e?.BookingTypeName
|
|
|
|
|
);
|
|
|
|
|
const isCheckFreeProduct = OfferFreeProduct?.find((exp) =>
|
|
|
|
|
exp?.ProdVariantDetails?.some((variant) =>
|
|
|
|
|
variant?.StockDetails?.some(
|
|
|
|
|
(stock) => stock?.FreeInwardDtlId === item?.InwardDtlId
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
if (isPaidproduct) {
|
|
|
|
|
if (isPaidproduct?.OrderQty == item?.OrderQty) {
|
|
|
|
|
//just remove Paid Qty
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: isPaidproduct?.OrderQty,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
InwardDtlId: isPaidproduct?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: 0,
|
|
|
|
|
});
|
|
|
|
|
} else if (isPaidproduct?.OrderQty > item?.OrderQty) {
|
|
|
|
|
// Just Decrease Paid Qty
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: isPaidproduct?.OrderQty - item?.OrderQty,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
InwardDtlId: isPaidproduct?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: 0,
|
|
|
|
|
});
|
|
|
|
|
} else if (isPaidproduct?.OrderQty < item?.OrderQty) {
|
|
|
|
|
//just remove Paid Qty
|
|
|
|
|
//decrease FreeQty
|
|
|
|
|
|
|
|
|
|
if (ischeckBothBookingType) {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: -isPaidproduct?.OrderQty,
|
|
|
|
|
RemoveAndUpdate: true,
|
|
|
|
|
InwardDtlId: isPaidproduct?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: 0,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: isCheckFreeProduct?.OverAllFreeQty,
|
|
|
|
|
RemainingQty:
|
|
|
|
|
isCheckFreeProduct?.OverAllFreeQty -
|
|
|
|
|
(ischeckBothBookingType?.OrderQty + isPaidproduct?.OrderQty),
|
|
|
|
|
FreeQty:
|
|
|
|
|
ischeckBothBookingType?.OrderQty + isPaidproduct?.OrderQty,
|
|
|
|
|
FreeProdId: isPaidproduct?.ProdId,
|
|
|
|
|
OfferId: isCheckFreeProduct?.OfferId,
|
|
|
|
|
});
|
|
|
|
|
// await ChangeOfferAppliedProdsFn(isPaidproduct?.InwardDtlId, (isPaidproduct?.OrderRate * isPaidproduct?.OrderQty), isPaidproduct?.OrderQty, true, insideinwardDtlId true)
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: isPaidproduct?.InwardDtlId,
|
|
|
|
|
OfferAmount: isPaidproduct?.OrderRate * isPaidproduct?.OrderQty,
|
|
|
|
|
FreeQty: isPaidproduct?.OrderQty,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
insideinwardDtlId: true,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
let FreeProdcutinPaidModeOtherBookingType = tableData?.find(
|
|
|
|
|
(e) =>
|
|
|
|
|
e?.InwardDtlId == item?.InwardDtlId &&
|
|
|
|
|
e?.Offer == 0 &&
|
|
|
|
|
item?.BookingTypeName != e?.BookingTypeName
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (FreeProdcutinPaidModeOtherBookingType) {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: item?.OrderQty - isPaidproduct?.OrderQty,
|
|
|
|
|
OrderQty: item.OrderQty,
|
|
|
|
|
RemoveAndUpdateOtherBookingType: true,
|
|
|
|
|
InwardDtlId: isPaidproduct?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: 0,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: item?.OrderQty,
|
|
|
|
|
RemainingQty:
|
|
|
|
|
item?.OrderQty -
|
|
|
|
|
(isPaidproduct?.OrderQty +
|
|
|
|
|
(FreeProdcutinPaidModeOtherBookingType?.OrderQty -
|
|
|
|
|
(item?.OrderQty - isPaidproduct?.OrderQty) ||
|
|
|
|
|
FreeProdcutinPaidModeOtherBookingType?.OrderQty)),
|
|
|
|
|
FreeQty:
|
|
|
|
|
isPaidproduct?.OrderQty +
|
|
|
|
|
(FreeProdcutinPaidModeOtherBookingType?.OrderQty -
|
|
|
|
|
(item?.OrderQty - isPaidproduct?.OrderQty) ||
|
|
|
|
|
FreeProdcutinPaidModeOtherBookingType?.OrderQty),
|
|
|
|
|
FreeProdId: isPaidproduct?.ProdId,
|
|
|
|
|
OfferId: isCheckFreeProduct?.OfferId,
|
|
|
|
|
});
|
|
|
|
|
// await ChangeOfferAppliedProdsFn(isPaidproduct?.InwardDtlId, (isPaidproduct?.OrderRate * isPaidproduct?.OrderQty), isPaidproduct?.OrderQty, true, insideinwardDtlId true)
|
|
|
|
|
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: isPaidproduct?.InwardDtlId,
|
|
|
|
|
OfferAmount:
|
|
|
|
|
isPaidproduct?.OrderRate *
|
|
|
|
|
(isPaidproduct?.OrderQty +
|
|
|
|
|
(FreeProdcutinPaidModeOtherBookingType?.OrderQty -
|
|
|
|
|
(item?.OrderQty - isPaidproduct?.OrderQty) ||
|
|
|
|
|
FreeProdcutinPaidModeOtherBookingType?.OrderQty)),
|
|
|
|
|
FreeQty:
|
|
|
|
|
isPaidproduct?.OrderQty +
|
|
|
|
|
(FreeProdcutinPaidModeOtherBookingType?.OrderQty -
|
|
|
|
|
(item?.OrderQty - isPaidproduct?.OrderQty) ||
|
|
|
|
|
FreeProdcutinPaidModeOtherBookingType?.OrderQty),
|
|
|
|
|
insideinwardDtlId: true,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: isPaidproduct?.OrderQty,
|
|
|
|
|
RemoveAndUpdate: true,
|
|
|
|
|
InwardDtlId: isPaidproduct?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: 0,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: item?.OrderQty,
|
|
|
|
|
RemainingQty: item?.OrderQty - isPaidproduct?.OrderQty,
|
|
|
|
|
FreeQty: isPaidproduct?.OrderQty,
|
|
|
|
|
FreeProdId: isPaidproduct?.ProdId,
|
|
|
|
|
OfferId: isCheckFreeProduct?.OfferId,
|
|
|
|
|
});
|
|
|
|
|
// await ChangeOfferAppliedProdsFn(isPaidproduct?.InwardDtlId, (isPaidproduct?.OrderRate * isPaidproduct?.OrderQty), isPaidproduct?.OrderQty, true, insideinwardDtlId true)
|
|
|
|
|
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: isPaidproduct?.InwardDtlId,
|
|
|
|
|
OfferAmount:
|
|
|
|
|
isPaidproduct?.OrderRate * isPaidproduct?.OrderQty,
|
|
|
|
|
FreeQty: isPaidproduct?.OrderQty,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
insideinwardDtlId: true,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (ischeckBothBookingType) {
|
|
|
|
|
// //Free Product in Paid Mode
|
|
|
|
|
let FreeProdcutinPaidModeOtherBookingType = tableData?.find(
|
|
|
|
|
(e) =>
|
|
|
|
|
e?.InwardDtlId == item?.InwardDtlId &&
|
|
|
|
|
e?.Offer == 0 &&
|
|
|
|
|
item?.BookingTypeName != e?.BookingTypeName
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
//if free product is available in paid mode in other booking type then just decrease the free qty from that product
|
|
|
|
|
if (FreeProdcutinPaidModeOtherBookingType) {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: item?.OrderQty,
|
|
|
|
|
CompleteRemoveAndPaidToFreeOtherType: true,
|
|
|
|
|
InwardDtlId: item?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
});
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: isCheckFreeProduct?.OverAllFreeQty,
|
|
|
|
|
RemainingQty: isCheckFreeProduct?.OverAllFreeQty,
|
|
|
|
|
FreeQty: isCheckFreeProduct?.FreeQty,
|
|
|
|
|
FreeProdId: isCheckFreeProduct?.FreeProdId,
|
|
|
|
|
OfferId: isCheckFreeProduct?.OfferId,
|
|
|
|
|
});
|
|
|
|
|
// await ChangeOfferAppliedProdsFn(isPaidproduct?.InwardDtlId, (isPaidproduct?.OrderRate * Quantity), Quantity, true,)
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: item?.InwardDtlId,
|
|
|
|
|
OfferAmount: isCheckFreeProduct?.FreeQty * item?.OrderRate,
|
|
|
|
|
FreeQty: item?.OrderQty,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
insideinwardDtlId: true,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: isPaidproduct?.OrderQty,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
InwardDtlId: item?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
});
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: isCheckFreeProduct?.OverAllFreeQty,
|
|
|
|
|
RemainingQty:
|
|
|
|
|
isCheckFreeProduct?.OverAllFreeQty - item?.OrderQty,
|
|
|
|
|
FreeQty: isCheckFreeProduct?.FreeQty - item?.OrderQty,
|
|
|
|
|
FreeProdId: isCheckFreeProduct?.FreeProdId,
|
|
|
|
|
OfferId: isCheckFreeProduct?.OfferId,
|
|
|
|
|
});
|
|
|
|
|
// await ChangeOfferAppliedProdsFn(isPaidproduct?.InwardDtlId, (isPaidproduct?.OrderRate * Quantity), Quantity, true,)
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: item?.InwardDtlId,
|
|
|
|
|
OfferAmount:
|
|
|
|
|
(isCheckFreeProduct?.FreeQty - item?.OrderQty) *
|
|
|
|
|
item?.OrderRate,
|
|
|
|
|
FreeQty: item?.OrderQty,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
insideinwardDtlId: true,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
else {
|
|
|
|
|
let isPaidProductAvailableInCartOtherType = tableData?.find(
|
|
|
|
|
(e) =>
|
|
|
|
|
e?.InwardDtlId == item?.InwardDtlId &&
|
|
|
|
|
e?.Offer == 0 &&
|
|
|
|
|
item?.BookingTypeName != e?.BookingTypeName
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (isPaidProductAvailableInCartOtherType) {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: item?.OrderQty,
|
|
|
|
|
CompleteRemoveAndPaidToFreeOtherTypeWithoutMerge: true,
|
|
|
|
|
InwardDtlId: item?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
});
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: isCheckFreeProduct?.OverAllFreeQty,
|
|
|
|
|
RemainingQty:
|
|
|
|
|
isCheckFreeProduct?.OverAllFreeQty -
|
|
|
|
|
(isCheckFreeProduct?.FreeQty -
|
|
|
|
|
(item?.OrderQty -
|
|
|
|
|
isPaidProductAvailableInCartOtherType?.OrderQty)),
|
|
|
|
|
FreeQty:
|
|
|
|
|
isCheckFreeProduct?.FreeQty -
|
|
|
|
|
(item?.OrderQty -
|
|
|
|
|
isPaidProductAvailableInCartOtherType?.OrderQty),
|
|
|
|
|
FreeProdId: isCheckFreeProduct?.FreeProdId,
|
|
|
|
|
OfferId: isCheckFreeProduct?.OfferId,
|
|
|
|
|
});
|
|
|
|
|
// await ChangeOfferAppliedProdsFn(isPaidproduct?.InwardDtlId, (isPaidproduct?.OrderRate * Quantity), Quantity, true,)
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: item?.InwardDtlId,
|
|
|
|
|
OfferAmount:
|
|
|
|
|
item?.OrderRate *
|
|
|
|
|
(isCheckFreeProduct?.FreeQty -
|
|
|
|
|
(item?.OrderQty -
|
|
|
|
|
isPaidProductAvailableInCartOtherType?.OrderQty)),
|
|
|
|
|
FreeQty:
|
|
|
|
|
isCheckFreeProduct?.FreeQty -
|
|
|
|
|
(item?.OrderQty -
|
|
|
|
|
isPaidProductAvailableInCartOtherType?.OrderQty),
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
insideinwardDtlId: true,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: isPaidproduct?.OrderQty,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
InwardDtlId: item?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
});
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: isCheckFreeProduct?.OverAllFreeQty,
|
|
|
|
|
RemainingQty: isCheckFreeProduct?.OverAllFreeQty,
|
|
|
|
|
FreeQty: 0,
|
|
|
|
|
FreeProdId: isCheckFreeProduct?.FreeProdId,
|
|
|
|
|
OfferId: isCheckFreeProduct?.OfferId,
|
|
|
|
|
});
|
|
|
|
|
// await ChangeOfferAppliedProdsFn(isPaidproduct?.InwardDtlId, (isPaidproduct?.OrderRate * Quantity), Quantity, true,)
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: item?.InwardDtlId,
|
|
|
|
|
OfferAmount: item?.OrderRate * item?.OrderQty,
|
|
|
|
|
FreeQty: item?.OrderQty,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
insideinwardDtlId: true,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//Change Remove OrderCartDetail
|
|
|
|
|
//Remove FreeprodList
|
|
|
|
|
//ChangeOfferApplied Products
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
///remove item wise offer
|
|
|
|
|
if (isItemWiseOrQuantityProduct) {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: item?.OrderQty,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
InwardDtlId: item?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
});
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: item?.InwardDtlId,
|
|
|
|
|
OfferAmount: item?.OrderRate * item?.OrderQty,
|
|
|
|
|
FreeQty: item?.OrderQty,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
});
|
|
|
|
|
} else if (isCheckFreeProduct) {
|
|
|
|
|
// remove or update loyalty/code based free product which is added in cart
|
|
|
|
|
const freeProdList = Array?.isArray(
|
|
|
|
|
isCheckFreeProduct?.FreeProductsList
|
|
|
|
|
)
|
|
|
|
|
? isCheckFreeProduct?.FreeProductsList?.[0]
|
|
|
|
|
: isCheckFreeProduct?.FreeProductsList;
|
|
|
|
|
let isPaidProductAvailableInCart = tableData?.find(
|
|
|
|
|
(e) =>
|
|
|
|
|
e?.InwardDtlId == item?.InwardDtlId &&
|
|
|
|
|
e?.Offer == 0 &&
|
|
|
|
|
item?.BookingTypeName == e?.BookingTypeName
|
|
|
|
|
);
|
|
|
|
|
if (isPaidProductAvailableInCart) {
|
|
|
|
|
if (isPaidProductAvailableInCart?.OrderQty === item?.OrderQty) {
|
|
|
|
|
//just remove Paid Qty
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: isPaidProductAvailableInCart?.OrderQty,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
InwardDtlId: isPaidProductAvailableInCart?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: 0,
|
|
|
|
|
});
|
|
|
|
|
} else if (
|
|
|
|
|
isPaidProductAvailableInCart?.OrderQty > item?.OrderQty
|
|
|
|
|
) {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty:
|
|
|
|
|
isPaidProductAvailableInCart?.OrderQty - item?.OrderQty,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
InwardDtlId: isPaidProductAvailableInCart?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: 0,
|
|
|
|
|
});
|
|
|
|
|
} else if (
|
|
|
|
|
isPaidProductAvailableInCart?.OrderQty < item?.OrderQty
|
|
|
|
|
) {
|
|
|
|
|
//just remove Paid Qty
|
|
|
|
|
//decrease FreeQty
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: -isPaidProductAvailableInCart?.OrderQty,
|
|
|
|
|
RemoveAndUpdate: true,
|
|
|
|
|
InwardDtlId: isPaidProductAvailableInCart?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: 0,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (ischeckBothBookingType) {
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: freeProdList?.OverAllFreeQty,
|
|
|
|
|
RemainingQty:
|
|
|
|
|
freeProdList?.OverAllFreeQty -
|
|
|
|
|
(ischeckBothBookingType?.OrderQty +
|
|
|
|
|
isPaidProductAvailableInCart?.OrderQty),
|
|
|
|
|
FreeQty:
|
|
|
|
|
ischeckBothBookingType?.OrderQty +
|
|
|
|
|
isPaidProductAvailableInCart?.OrderQty,
|
|
|
|
|
FreeProdId: isPaidProductAvailableInCart?.ProdId,
|
|
|
|
|
OfferId: freeProdList?.OfferId,
|
|
|
|
|
});
|
|
|
|
|
// await ChangeOfferAppliedProdsFn(isPaidproduct?.InwardDtlId, (isPaidproduct?.OrderRate * isPaidproduct?.OrderQty), isPaidproduct?.OrderQty, true, insideinwardDtlId true)
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: isPaidProductAvailableInCart?.InwardDtlId,
|
|
|
|
|
OfferAmount:
|
|
|
|
|
isPaidProductAvailableInCart?.OrderRate *
|
|
|
|
|
isPaidProductAvailableInCart?.OrderQty,
|
|
|
|
|
FreeQty: isPaidProductAvailableInCart?.OrderQty,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
insideinwardDtlId: true,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: item?.OrderQty,
|
|
|
|
|
RemainingQty:
|
|
|
|
|
item?.OrderQty - isPaidProductAvailableInCart?.OrderQty,
|
|
|
|
|
FreeQty: isPaidProductAvailableInCart?.OrderQty,
|
|
|
|
|
FreeProdId: isPaidProductAvailableInCart?.ProdId,
|
|
|
|
|
OfferId: freeProdList?.OfferId,
|
|
|
|
|
});
|
|
|
|
|
// await ChangeOfferAppliedProdsFn(isPaidproduct?.InwardDtlId, (isPaidproduct?.OrderRate * isPaidproduct?.OrderQty), isPaidproduct?.OrderQty, true, insideinwardDtlId true)
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: isPaidProductAvailableInCart?.InwardDtlId,
|
|
|
|
|
OfferAmount:
|
|
|
|
|
isPaidProductAvailableInCart?.OrderRate *
|
|
|
|
|
isPaidProductAvailableInCart?.OrderQty,
|
|
|
|
|
FreeQty: isPaidProductAvailableInCart?.OrderQty,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
insideinwardDtlId: true,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (ischeckBothBookingType) {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: isPaidProductAvailableInCart?.OrderQty,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
InwardDtlId: item?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
});
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: freeProdList?.OverAllFreeQty,
|
|
|
|
|
RemainingQty: freeProdList?.OverAllFreeQty - item?.OrderQty,
|
|
|
|
|
FreeQty: freeProdList?.FreeQty - item?.OrderQty,
|
|
|
|
|
FreeProdId: freeProdList?.FreeProdId,
|
|
|
|
|
OfferId: freeProdList?.OfferId,
|
|
|
|
|
});
|
|
|
|
|
// await ChangeOfferAppliedProdsFn(isPaidproduct?.InwardDtlId, (isPaidproduct?.OrderRate * Quantity), Quantity, true,)
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: item?.InwardDtlId,
|
|
|
|
|
OfferAmount:
|
|
|
|
|
(freeProdList?.FreeQty - item?.OrderQty) * item?.OrderRate,
|
|
|
|
|
FreeQty: item?.OrderQty,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
insideinwardDtlId: true,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: isPaidProductAvailableInCart?.OrderQty,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
InwardDtlId: item?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
});
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: freeProdList?.OverAllFreeQty,
|
|
|
|
|
RemainingQty: freeProdList?.OverAllFreeQty,
|
|
|
|
|
FreeQty: 0,
|
|
|
|
|
FreeProdId: freeProdList?.FreeProdId,
|
|
|
|
|
OfferId: freeProdList?.OfferId,
|
|
|
|
|
});
|
|
|
|
|
// await ChangeOfferAppliedProdsFn(isPaidproduct?.InwardDtlId, (isPaidproduct?.OrderRate * Quantity), Quantity, true,)
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: item?.InwardDtlId,
|
|
|
|
|
OfferAmount: item?.OrderRate * item?.OrderQty,
|
|
|
|
|
FreeQty: item?.OrderQty,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
insideinwardDtlId: true,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
let ModifiedOrderCardDetail = JSON.parse(JSON.stringify(tableData));
|
|
|
|
|
|
|
|
|
|
const data = ModifiedOrderCardDetail?.filter(
|
|
|
|
|
(e) =>
|
|
|
|
|
!(
|
|
|
|
|
e?.InwardDtlId === item?.InwardDtlId &&
|
|
|
|
|
e?.Offer === item?.Offer &&
|
|
|
|
|
e?.BookingTypeName === item?.BookingTypeName &&
|
|
|
|
|
(!e?.SalesId || OrderType == 'Hold')
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
return dispatch(changeOrderCardDetails(data));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
const isCheckFreeProductOutside = OfferFreeProduct?.find(
|
|
|
|
|
(exp) => exp?.InwardDtlId == item?.InwardDtlId
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (!isCheckFreeProductOutside) {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: item?.OrderQty,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
InwardDtlId: item?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: null,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
OrderRate: item?.OrderRate,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
const isCheck = GlobalOfferAppliedProductsData?.find(
|
|
|
|
|
(exp) => exp?.InwardDtlId === item?.InwardDtlId
|
|
|
|
|
);
|
|
|
|
|
const FreeProd = OfferFreeProduct?.find(
|
|
|
|
|
(exp) => exp?.InwardDtlId === item?.InwardDtlId
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (isCheck) {
|
|
|
|
|
let inward =
|
|
|
|
|
isCheck?.FreeProductsList?.[0]?.ProdVariantDetails?.[0]
|
|
|
|
|
?.StockDetails?.[0]?.FreeInwardDtlId;
|
|
|
|
|
|
|
|
|
|
let isPaidproduct = tableData?.find(
|
|
|
|
|
(e) =>
|
|
|
|
|
e?.InwardDtlId == inward &&
|
|
|
|
|
e?.Offer == 0 &&
|
|
|
|
|
e?.BookingTypeName == item?.BookingTypeName
|
|
|
|
|
);
|
|
|
|
|
if (isPaidproduct) {
|
|
|
|
|
let ischeckBothBookingType = tableData?.find(
|
|
|
|
|
(e) =>
|
|
|
|
|
e?.InwardDtlId == inward &&
|
|
|
|
|
e?.Offer > 0 &&
|
|
|
|
|
e?.BookingTypeName != item?.BookingTypeName
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
//if any Paid Product is there, we have to Merge With That
|
|
|
|
|
if (ischeckBothBookingType) {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty:
|
|
|
|
|
isPaidproduct?.OrderQty +
|
|
|
|
|
isCheck?.ActualFreeQty -
|
|
|
|
|
ischeckBothBookingType?.OrderQty,
|
|
|
|
|
CompleteRemoveBuyAndAddWithPaid: true,
|
|
|
|
|
InwardDtlId: isPaidproduct?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: item?.InwardDtlId,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: FreeProd?.OverAllFreeQty - item?.OrderQty,
|
|
|
|
|
RemainingQty:
|
|
|
|
|
FreeProd?.OverAllFreeQty -
|
|
|
|
|
item?.OrderQty -
|
|
|
|
|
(FreeProd?.FreeQty - item?.OrderQty),
|
|
|
|
|
FreeQty: FreeProd?.FreeQty - item?.OrderQty,
|
|
|
|
|
FreeProdId: FreeProd?.FreeProdId,
|
|
|
|
|
OfferId: FreeProd?.OfferId,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
});
|
|
|
|
|
// await ChangeOfferAppliedProdsFn(isPaidproduct?.InwardDtlId, (isPaidproduct?.OrderRate * isPaidproduct?.OrderQty), isPaidproduct?.OrderQty, true, insideinwardDtlId true)
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: item?.InwardDtlId,
|
|
|
|
|
OfferAmount:
|
|
|
|
|
isPaidproduct?.OrderRate *
|
|
|
|
|
(FreeProd?.FreeQty - item?.OrderQty),
|
|
|
|
|
FreeQty: FreeProd?.FreeQty - item?.OrderQty,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
insideinwardDtlId: false,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: isPaidproduct?.OrderQty + isCheck?.ActualFreeQty,
|
|
|
|
|
CompleteRemoveBuyAndAddWithPaid: true,
|
|
|
|
|
InwardDtlId: isPaidproduct?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: item?.InwardDtlId,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: item?.OrderQty,
|
|
|
|
|
RemainingQty: item?.OrderQty - isPaidproduct?.OrderQty,
|
|
|
|
|
FreeQty: isPaidproduct?.OrderQty,
|
|
|
|
|
FreeProdId: FreeProd?.FreeProdId,
|
|
|
|
|
OfferId: FreeProd?.OfferId,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
});
|
|
|
|
|
// await ChangeOfferAppliedProdsFn(isPaidproduct?.InwardDtlId, (isPaidproduct?.OrderRate * isPaidproduct?.OrderQty), isPaidproduct?.OrderQty, true, insideinwardDtlId true)
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: item?.InwardDtlId,
|
|
|
|
|
OfferAmount: isPaidproduct?.OrderRate * isPaidproduct?.OrderQty,
|
|
|
|
|
FreeQty: isPaidproduct?.OrderQty,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
insideinwardDtlId: false,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//have to find if thereis two Booking Type is there
|
|
|
|
|
//Convert That Free Product To Paid Product
|
|
|
|
|
let ischeckBothBookingType = tableData?.find(
|
|
|
|
|
(e) =>
|
|
|
|
|
e?.InwardDtlId == inward &&
|
|
|
|
|
e?.Offer > 0 &&
|
|
|
|
|
e?.BookingTypeName != item?.BookingTypeName
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
let FreeProductSameBookingType = tableData?.find(
|
|
|
|
|
(e) =>
|
|
|
|
|
e?.InwardDtlId == inward &&
|
|
|
|
|
e?.Offer > 0 &&
|
|
|
|
|
e?.BookingTypeName == item?.BookingTypeName
|
|
|
|
|
);
|
|
|
|
|
if (ischeckBothBookingType) {
|
|
|
|
|
//Convert That Free Product To Paid Product
|
|
|
|
|
|
|
|
|
|
//merge that paid product with same booking type
|
|
|
|
|
//decrease free prod list qty
|
|
|
|
|
//change offer applied product qty
|
|
|
|
|
// await ChangeOrderCardDetailsFn(item?.BookingTypeName, null, ischeckBothBookingType?.OrderQty + FreeProductSameBookingType?.OrderQty, false, ischeckBothBookingType?.InwardDtlId, item?.InwardDtlId, item?.Offer, true)
|
|
|
|
|
if (FreeProductSameBookingType?.OrderQty >= item?.OrderQty) {
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: FreeProd?.OverAllFreeQty - item?.OrderQty,
|
|
|
|
|
RemainingQty:
|
|
|
|
|
FreeProd?.OverAllFreeQty -
|
|
|
|
|
item?.OrderQty -
|
|
|
|
|
(FreeProd?.FreeQty - item?.OrderQty),
|
|
|
|
|
FreeQty: FreeProd?.FreeQty - item?.OrderQty,
|
|
|
|
|
FreeProdId: FreeProd?.FreeProdId,
|
|
|
|
|
OfferId: FreeProd?.OfferId,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
});
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: item?.OrderQty,
|
|
|
|
|
OrderQty: FreeProductSameBookingType?.OrderQty,
|
|
|
|
|
CompleteRemoveconvertFreetoPaidNotCompletely: true,
|
|
|
|
|
InwardDtlId: inward,
|
|
|
|
|
BuyInwardDtlId: item?.InwardDtlId,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
});
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: item?.InwardDtlId,
|
|
|
|
|
OfferAmount:
|
|
|
|
|
(FreeProd?.FreeQty - item?.OrderQty) *
|
|
|
|
|
ischeckBothBookingType?.OrderRate,
|
|
|
|
|
FreeQty: FreeProd?.FreeQty - item?.OrderQty,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
insideinwardDtlId: false,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
let data = isCheckFreeProductOutside?.FreeQty - item?.OrderQty;
|
|
|
|
|
//First i Calculate Another Booking Type Qty
|
|
|
|
|
let anotherBookingType = tableData?.find(
|
|
|
|
|
(e) =>
|
|
|
|
|
e?.InwardDtlId == item?.InwardDtlId &&
|
|
|
|
|
e?.Offer == 0 &&
|
|
|
|
|
e?.BookingTypeName != item?.BookingTypeName
|
|
|
|
|
);
|
|
|
|
|
let anotherBookingTypeOffer = tableData?.find(
|
|
|
|
|
(e) =>
|
|
|
|
|
e?.InwardDtlId == inward &&
|
|
|
|
|
e?.Offer > 0 &&
|
|
|
|
|
e?.BookingTypeName != item?.BookingTypeName
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
let diff =
|
|
|
|
|
item?.OrderQty - FreeProductSameBookingType?.OrderQty;
|
|
|
|
|
|
|
|
|
|
//SameBookingFreeQty
|
|
|
|
|
//FreeProductSameBookingType?.OrderQty
|
|
|
|
|
|
|
|
|
|
//Another BookingType Paid Qty
|
|
|
|
|
//anotherBookingType
|
|
|
|
|
|
|
|
|
|
//anotherBookingType?.Free OrderQty
|
|
|
|
|
//ischeckBothBookingType
|
|
|
|
|
|
|
|
|
|
//anotherBookingType?.OrderQty-ischeckBothBookingType?.OrderQty
|
|
|
|
|
//convert another Booking Type Qty also Free to Paid
|
|
|
|
|
|
|
|
|
|
if (
|
|
|
|
|
(anotherBookingType?.OrderQty || 0) <
|
|
|
|
|
anotherBookingTypeOffer?.OrderQty
|
|
|
|
|
) {
|
|
|
|
|
//paidproduct ischeckBothBookingType?.OrderQty-anotherBookingType?.OrderQty
|
|
|
|
|
//PaidProdcut Current BookingType FreeProductSameBookingType?.OrderQty
|
|
|
|
|
let paidproductAnotherType =
|
|
|
|
|
ischeckBothBookingType?.OrderQty -
|
|
|
|
|
anotherBookingType?.OrderQty;
|
|
|
|
|
let paidproductCurrentType =
|
|
|
|
|
FreeProductSameBookingType?.OrderQty;
|
|
|
|
|
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: paidproductAnotherType,
|
|
|
|
|
OrderQty: paidproductCurrentType,
|
|
|
|
|
CompleteRemoveconvertFreetoPaidTwoTypes: true,
|
|
|
|
|
InwardDtlId: inward,
|
|
|
|
|
BuyInwardDtlId: item?.InwardDtlId,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: FreeProd?.OverAllFreeQty - item?.OrderQty,
|
|
|
|
|
RemainingQty:
|
|
|
|
|
FreeProd?.OverAllFreeQty -
|
|
|
|
|
item?.OrderQty -
|
|
|
|
|
(FreeProd?.FreeQty -
|
|
|
|
|
(paidproductCurrentType + paidproductCurrentType)),
|
|
|
|
|
FreeQty:
|
|
|
|
|
FreeProd?.FreeQty -
|
|
|
|
|
(paidproductCurrentType + paidproductCurrentType),
|
|
|
|
|
FreeProdId: FreeProd?.FreeProdId,
|
|
|
|
|
OfferId: FreeProd?.OfferId,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
});
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: item?.InwardDtlId,
|
|
|
|
|
OfferAmount:
|
|
|
|
|
(FreeProd?.FreeQty - item?.OrderQty) *
|
|
|
|
|
ischeckBothBookingType?.OrderRate,
|
|
|
|
|
FreeQty: FreeProd?.FreeQty - item?.OrderQty,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
insideinwardDtlId: false,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: FreeProd?.OverAllFreeQty - item?.OrderQty,
|
|
|
|
|
RemainingQty:
|
|
|
|
|
FreeProd?.OverAllFreeQty -
|
|
|
|
|
item?.OrderQty -
|
|
|
|
|
(FreeProd?.FreeQty - item?.OrderQty),
|
|
|
|
|
FreeQty: FreeProd?.FreeQty - item?.OrderQty,
|
|
|
|
|
FreeProdId: FreeProd?.FreeProdId,
|
|
|
|
|
OfferId: FreeProd?.OfferId,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
});
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: FreeProductSameBookingType?.OrderQty,
|
|
|
|
|
CompleteRemoveconvertFreetoPaid: true,
|
|
|
|
|
InwardDtlId: inward,
|
|
|
|
|
BuyInwardDtlId: item?.InwardDtlId,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
});
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: item?.InwardDtlId,
|
|
|
|
|
OfferAmount:
|
|
|
|
|
(FreeProd?.FreeQty - item?.OrderQty) *
|
|
|
|
|
ischeckBothBookingType?.OrderRate,
|
|
|
|
|
FreeQty: FreeProd?.FreeQty - item?.OrderQty,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
insideinwardDtlId: false,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: item?.OrderQty,
|
|
|
|
|
RemainingQty: item?.OrderQty - isPaidproduct?.OrderQty,
|
|
|
|
|
FreeQty: isPaidproduct?.OrderQty,
|
|
|
|
|
FreeProdId: FreeProd?.FreeProdId,
|
|
|
|
|
OfferId: FreeProd?.OfferId,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
});
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: FreeProductSameBookingType?.OrderQty,
|
|
|
|
|
CompleteRemoveconvertFreetoPaid: true,
|
|
|
|
|
InwardDtlId: inward,
|
|
|
|
|
BuyInwardDtlId: item?.InwardDtlId,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
});
|
|
|
|
|
await ChangeOfferAppliedProdsFn({
|
|
|
|
|
inwardDtlId: item?.InwardDtlId,
|
|
|
|
|
OfferAmount:
|
|
|
|
|
(isCheck?.ActualFreeQty -
|
|
|
|
|
FreeProductSameBookingType?.OrderQty) *
|
|
|
|
|
isPaidproduct?.OrderQty,
|
|
|
|
|
FreeQty:
|
|
|
|
|
isCheck?.ActualFreeQty - FreeProductSameBookingType?.OrderQty,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
insideinwardDtlId: false,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
let ischeckBothBookingType = tableData?.find(
|
|
|
|
|
(e) =>
|
|
|
|
|
e?.InwardDtlId == item?.InwardDtlId &&
|
|
|
|
|
e?.Offer == 0 &&
|
|
|
|
|
e?.BookingTypeName != item?.BookingTypeName
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (ischeckBothBookingType) {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: 0,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
InwardDtlId: item?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: item?.InwardDtlId,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
});
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: FreeProd?.OverAllFreeQty - item?.OrderQty,
|
|
|
|
|
RemainingQty: FreeProd?.OverAllFreeQty - item?.OrderQty,
|
|
|
|
|
FreeQty: 0,
|
|
|
|
|
FreeProdId: FreeProd?.FreeProdId,
|
|
|
|
|
OfferId: FreeProd?.OfferId,
|
|
|
|
|
CompleteRemove: false,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
await ChangeOrderCardDetailsFn({
|
|
|
|
|
BookingTypeName: item?.BookingTypeName,
|
|
|
|
|
BuyProdQty: null,
|
|
|
|
|
OrderQty: 0,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
InwardDtlId: item?.InwardDtlId,
|
|
|
|
|
BuyInwardDtlId: item?.InwardDtlId,
|
|
|
|
|
Offer: item?.Offer,
|
|
|
|
|
});
|
|
|
|
|
await ChangeFreeprodlistFn({
|
|
|
|
|
OverAllFreeQty: item?.OrderQty,
|
|
|
|
|
RemainingQty: 0,
|
|
|
|
|
FreeQty: 0,
|
|
|
|
|
FreeProdId: FreeProd?.FreeProdId,
|
|
|
|
|
OfferId: FreeProd?.OfferId,
|
|
|
|
|
CompleteRemove: true,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
//Remove From Free ProdList That Entirely
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-02-18 19:41:06 +05:30
|
|
|
|
2026-01-27 18:27:29 +05:30
|
|
|
};
|
|
|
|
|
// const removeFromCart = async (item) => {
|
|
|
|
|
// setPreviousdataLength(tableData?.length);
|
|
|
|
|
// if (item?.BookingTypeName !== 'Dine In' && OrderType !== 'Hold') {
|
|
|
|
|
// const UpdatedData = tableData?.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));
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// 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 (tableData?.length <= 1) {
|
|
|
|
|
// await dispatch(changeReorderHoldDetails({}));
|
|
|
|
|
// await dispatch(changeReorderHoldDetails([]));
|
|
|
|
|
// await dispatch(changeUnpaidData(false));
|
|
|
|
|
// await dispatch(changeBookingType('TakeAway'));
|
|
|
|
|
// await dispatch(changeTokenOnly(false));
|
|
|
|
|
// await dispatch(changeAllProductTokenAvailable(false));
|
|
|
|
|
// await dispatch(ChangeOverAllDiscSales(null));
|
|
|
|
|
// await dispatch(ChangeOverAllDiscEstimate(null));
|
|
|
|
|
// await dispatch(changeSelProdWiseEst([]));
|
|
|
|
|
// await dispatch(ChangeTotalAmount([]));
|
|
|
|
|
// }
|
|
|
|
|
// } else if (item?.BookingTypeName !== 'Dine In' && OrderType === 'Hold') {
|
|
|
|
|
// const UpdatedData = tableData?.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));
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// 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 (tableData?.length <= 1) {
|
|
|
|
|
// await dispatch(changeReorderHoldDetails({}));
|
|
|
|
|
// await dispatch(changeReorderHoldDetails([]));
|
|
|
|
|
// await dispatch(changeUnpaidData(false));
|
|
|
|
|
// await dispatch(changeBookingType('TakeAway'));
|
|
|
|
|
// await dispatch(changeTokenOnly(false));
|
|
|
|
|
// await dispatch(changeAllProductTokenAvailable(false));
|
|
|
|
|
// await dispatch(ChangeOverAllDiscSales(null));
|
|
|
|
|
// await dispatch(ChangeOverAllDiscEstimate(null));
|
|
|
|
|
// await dispatch(changeSelProdWiseEst([]));
|
|
|
|
|
// await dispatch(ChangeTotalAmount([]));
|
|
|
|
|
// }
|
|
|
|
|
// } else if (item?.BookingTypeName === 'Dine In') {
|
|
|
|
|
// const UpdatedData = tableData?.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));
|
|
|
|
|
// }
|
|
|
|
|
// 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 (tableData?.length <= 1) {
|
|
|
|
|
// await dispatch(changeReorderHoldDetails({}));
|
|
|
|
|
// 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(ChangeOverAllDiscSales(null));
|
|
|
|
|
// await dispatch(ChangeOverAllDiscEstimate(null));
|
|
|
|
|
// await dispatch(changeSelProdWiseEst([]));
|
|
|
|
|
// await dispatch(ChangeTotalAmount([]));
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// };
|
|
|
|
|
|
|
|
|
|
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();
|
|
|
|
|
}
|
2026-02-05 15:53:37 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
const handleCustomerProductPriceHistory = (item) => {
|
|
|
|
|
setCustomerPriceHistoryOpen(true);
|
|
|
|
|
setCustomerProduct(item?.ProdId);
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-27 18:27:29 +05:30
|
|
|
const handlechange33 = () => {
|
|
|
|
|
if (editdelete === 'Edit') {
|
|
|
|
|
seteditdelete('');
|
|
|
|
|
} else {
|
|
|
|
|
seteditdelete('Edit');
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const handlechange22 = async () => {
|
|
|
|
|
if (editdelete === 'Delete') {
|
|
|
|
|
seteditdelete('');
|
|
|
|
|
} else {
|
|
|
|
|
seteditdelete('Delete');
|
|
|
|
|
if (OrderType === 'Failed') {
|
|
|
|
|
await dispatch(changeOrderType(''));
|
|
|
|
|
await dispatch(changeOrderCardDetails([]));
|
|
|
|
|
await dispatch(ChangeTotalAmount([]));
|
|
|
|
|
await dispatch(changeReorderHoldDetails({}));
|
|
|
|
|
await dispatch(changeReorderProductDetails([]));
|
|
|
|
|
setFirstPaymentclick(false);
|
|
|
|
|
await dispatch(ChangeNavHoldData(false));
|
|
|
|
|
await dispatch(changeCustomerID(null));
|
|
|
|
|
await dispatch(changeSelectedCustId());
|
|
|
|
|
await dispatch(changeSelectedOption(null));
|
|
|
|
|
await dispatch(changeBookingType(defaultBookingType || 'TakeAway'));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
const OpenEditTotalAmount = () => {
|
|
|
|
|
setOpenEditTotalAmt(true);
|
|
|
|
|
};
|
|
|
|
|
const handleEditTotalAmountCancel = () => {
|
|
|
|
|
setOpenEditTotalAmt(false);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const handleEditQuantity = (value) => {
|
|
|
|
|
console.log(value, 'value');
|
|
|
|
|
|
|
|
|
|
if (OtherServicesglobal && value.Type == 'OS' && value.ServiceType == 'I') {
|
|
|
|
|
setEditQuantity(false);
|
|
|
|
|
} else {
|
|
|
|
|
setEditQuantity(true);
|
|
|
|
|
setModaldata(value);
|
|
|
|
|
setIndex(value?.localId);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const handleEditQuantityCancel = () => {
|
|
|
|
|
setEditQuantity(false);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<>
|
|
|
|
|
<div
|
|
|
|
|
style={{
|
|
|
|
|
display: 'flex',
|
|
|
|
|
justifyContent: 'flex-end',
|
|
|
|
|
alignItems: 'center',
|
|
|
|
|
gap: '0.5rem',
|
|
|
|
|
// padding: "0.5rem 0.5rem",
|
|
|
|
|
position: 'sticky',
|
|
|
|
|
top: '0',
|
|
|
|
|
zIndex: '1',
|
|
|
|
|
}}
|
|
|
|
|
></div>
|
|
|
|
|
<div
|
|
|
|
|
class="radio-button-group mts"
|
|
|
|
|
style={{ position: 'sticky', padding: '3px' }}
|
|
|
|
|
>
|
|
|
|
|
{editField && (
|
|
|
|
|
<div class="item">
|
|
|
|
|
<input
|
|
|
|
|
type="radio"
|
|
|
|
|
name="button-group"
|
|
|
|
|
class="radio-button"
|
|
|
|
|
value="1"
|
|
|
|
|
id="button1"
|
|
|
|
|
checked={editdelete === 'Edit' && 'checked'}
|
|
|
|
|
/>
|
|
|
|
|
<label for="button1" onClick={handlechange33}>
|
|
|
|
|
{' '}
|
|
|
|
|
Edit{' '}
|
|
|
|
|
</label>
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
{deleteField && (
|
|
|
|
|
<div class="item">
|
|
|
|
|
<input
|
|
|
|
|
type="radio"
|
|
|
|
|
name="button-group"
|
|
|
|
|
class="radio-button"
|
|
|
|
|
value="2"
|
|
|
|
|
id="button2"
|
|
|
|
|
checked={editdelete === 'Delete' && 'checked'}
|
|
|
|
|
/>
|
|
|
|
|
<label for="button2" onClick={handlechange22}>
|
|
|
|
|
{' '}
|
|
|
|
|
Delete{' '}
|
|
|
|
|
</label>
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div
|
|
|
|
|
style={{ height: isMobile ? '40vh' : '' }}
|
|
|
|
|
className={
|
|
|
|
|
isMobile ? 'BSBilling-tablediv-mobile' : 'BSBilling7-tablediv'
|
|
|
|
|
}
|
|
|
|
|
>
|
|
|
|
|
<table className="BSBill-Table7">
|
|
|
|
|
<thead>
|
|
|
|
|
<tr
|
|
|
|
|
className="BSBill-Table7-throw"
|
|
|
|
|
style={{
|
|
|
|
|
backgroundColor: SelectedBillColor?.['BackgroundColor'],
|
|
|
|
|
color: SelectedBillColor?.['FontColor'],
|
|
|
|
|
fontFamily: SelectedFont,
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{tableOptions?.map((item) => (
|
|
|
|
|
<>
|
|
|
|
|
{item.OptionName == 'Sl.No' && BookingTypeBoth && (
|
|
|
|
|
<th
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: SelectedFont,
|
|
|
|
|
fontWeight: '600',
|
|
|
|
|
fontSize: '13px',
|
|
|
|
|
width: '15px',
|
|
|
|
|
padding: '1px',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{!isMobile ? (
|
|
|
|
|
<Tooltip title="Serial Number">{''}</Tooltip>
|
|
|
|
|
) : (
|
|
|
|
|
<div>{''}</div>
|
|
|
|
|
)}
|
|
|
|
|
</th>
|
|
|
|
|
)}
|
|
|
|
|
{item.OptionName == 'Sl.No' && (
|
|
|
|
|
<th
|
|
|
|
|
className="BillTable7-th"
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: SelectedFont,
|
|
|
|
|
fontWeight: '600',
|
|
|
|
|
padding: '8px',
|
|
|
|
|
fontSize: '16px',
|
|
|
|
|
width: '10px',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{!isMobile ? (
|
|
|
|
|
<Tooltip title="Serial Number">Sl.No</Tooltip>
|
|
|
|
|
) : (
|
|
|
|
|
<div>Sl.No</div>
|
|
|
|
|
)}
|
|
|
|
|
</th>
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
{item.OptionName == 'Item' && (
|
|
|
|
|
<th
|
|
|
|
|
className="BillTable7-th"
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: SelectedFont,
|
|
|
|
|
fontWeight: '600',
|
|
|
|
|
padding: '8px',
|
|
|
|
|
fontSize: '16px',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{!isMobile ? (
|
|
|
|
|
<Tooltip title="Item Name">Item</Tooltip>
|
|
|
|
|
) : (
|
|
|
|
|
<div> Item </div>
|
|
|
|
|
)}
|
|
|
|
|
</th>
|
|
|
|
|
)}
|
|
|
|
|
{item.OptionName == 'MRP' && (
|
|
|
|
|
<th
|
|
|
|
|
className="BillTable7-th"
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: SelectedFont,
|
|
|
|
|
padding: '8px',
|
|
|
|
|
fontSize: '16px',
|
|
|
|
|
width: '5%',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{!isMobile ? (
|
|
|
|
|
<Tooltip title="MRP">MRP</Tooltip>
|
|
|
|
|
) : (
|
|
|
|
|
<div>MRP</div>
|
|
|
|
|
)}
|
|
|
|
|
</th>
|
|
|
|
|
)}
|
|
|
|
|
{item.OptionName == 'Discount' && (
|
|
|
|
|
<th
|
|
|
|
|
className="BillTable7-th"
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: SelectedFont,
|
|
|
|
|
fontWeight: '600',
|
|
|
|
|
padding: '8px',
|
|
|
|
|
fontSize: '16px',
|
|
|
|
|
width: '5%',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{!isMobile ? (
|
|
|
|
|
<Tooltip title="Discount">₹/%</Tooltip>
|
|
|
|
|
) : (
|
|
|
|
|
<div>₹/% </div>
|
|
|
|
|
)}
|
|
|
|
|
</th>
|
|
|
|
|
)}
|
|
|
|
|
{item.OptionName == 'Quantity' && (
|
|
|
|
|
<th
|
|
|
|
|
className="BillTable7-th"
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: SelectedFont,
|
|
|
|
|
fontWeight: '600',
|
|
|
|
|
fontSize: '16px',
|
|
|
|
|
padding: '8px',
|
|
|
|
|
width: '5%',
|
|
|
|
|
}}
|
|
|
|
|
// onClick={tableData?.length>0? OpenEditTotalAmount :""}
|
|
|
|
|
onClick={() => {
|
|
|
|
|
if (tableData?.length > 0) {
|
|
|
|
|
OpenEditTotalAmount();
|
|
|
|
|
}
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{!isMobile ? (
|
|
|
|
|
<Tooltip title="Quantity">Qty</Tooltip>
|
|
|
|
|
) : (
|
|
|
|
|
<div>Qty</div>
|
|
|
|
|
)}
|
|
|
|
|
</th>
|
|
|
|
|
)}
|
|
|
|
|
{item.OptionName == 'Rate' && (
|
|
|
|
|
<th
|
|
|
|
|
className="BillTable7-th"
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: SelectedFont,
|
|
|
|
|
fontWeight: '600',
|
|
|
|
|
fontSize: '16px',
|
|
|
|
|
width: '5%',
|
|
|
|
|
padding: '8px',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{!isMobile ? (
|
|
|
|
|
<Tooltip title="Rate">Rt</Tooltip>
|
|
|
|
|
) : (
|
|
|
|
|
<div> Rt </div>
|
|
|
|
|
)}
|
|
|
|
|
</th>
|
|
|
|
|
)}
|
|
|
|
|
{item.OptionName == 'Amount' && (
|
|
|
|
|
<th
|
|
|
|
|
className="BillTable7-th"
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: SelectedFont,
|
|
|
|
|
fontWeight: '600',
|
|
|
|
|
fontSize: '16px',
|
|
|
|
|
width: '5%',
|
|
|
|
|
padding: '8px',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{!isMobile ? (
|
|
|
|
|
<Tooltip title="Amount">Amt</Tooltip>
|
|
|
|
|
) : (
|
|
|
|
|
<div>Amt</div>
|
|
|
|
|
)}
|
|
|
|
|
</th>
|
|
|
|
|
)}
|
|
|
|
|
</>
|
|
|
|
|
))}
|
|
|
|
|
</tr>
|
|
|
|
|
</thead>
|
|
|
|
|
{/* For Reorder TakeWay */}
|
|
|
|
|
{OldtableDataTakeAway?.length > 0 && (
|
|
|
|
|
<tbody className="Table7-tbody">
|
|
|
|
|
{OldtableDataTakeAway?.map((item, index) => (
|
|
|
|
|
<tr
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: SelectedFont ? SelectedFont : '',
|
|
|
|
|
|
|
|
|
|
backgroundColor:
|
|
|
|
|
BillOrderPre === 'Y'
|
|
|
|
|
? item?.SalesId && OrderType !== 'Hold'
|
|
|
|
|
? 'rgb(243, 248, 213)'
|
|
|
|
|
: triggerAnimation &&
|
2026-02-05 15:53:37 +05:30
|
|
|
index === 0 &&
|
|
|
|
|
!item?.SalesId &&
|
|
|
|
|
tableDataTakeAway?.length >= PreviousdataLength
|
2026-01-27 18:27:29 +05:30
|
|
|
? 'wheat'
|
|
|
|
|
: triggerAnimation &&
|
2026-02-05 15:53:37 +05:30
|
|
|
index === 0 &&
|
|
|
|
|
tableDataTakeAway?.length >=
|
|
|
|
|
PreviousdataLength &&
|
|
|
|
|
!HoldOrderDtl &&
|
|
|
|
|
!UnpaidData
|
2026-01-27 18:27:29 +05:30
|
|
|
? 'wheat'
|
|
|
|
|
: 'inherit'
|
|
|
|
|
: 'none',
|
|
|
|
|
background:
|
|
|
|
|
item?.SalesId && OrderType !== 'Hold'
|
|
|
|
|
? 'rgb(243, 248, 213)'
|
|
|
|
|
: GlobEstBooking === 'ParEst' &&
|
2026-02-05 15:53:37 +05:30
|
|
|
GlobProdwisedata?.includes(
|
|
|
|
|
item?.InwardDtlId + ' ' + item?.BookingTypeName
|
|
|
|
|
)
|
2026-01-27 18:27:29 +05:30
|
|
|
? '#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',
|
|
|
|
|
}}
|
|
|
|
|
key={index}
|
|
|
|
|
onClick={
|
|
|
|
|
editdelete === 'Edit'
|
|
|
|
|
? () => handleEditQuantity(item)
|
|
|
|
|
: editdelete === 'Delete'
|
|
|
|
|
? () => removeFromCart(item)
|
2026-02-05 15:53:37 +05:30
|
|
|
: () => { }
|
2026-01-27 18:27:29 +05:30
|
|
|
}
|
|
|
|
|
// onClick={editdelete === "Edit" ? () => handleEditQuantity(item) : editdelete === "Delete" ? () => removeFromCart(item) : ""}
|
|
|
|
|
|
2026-02-05 15:53:37 +05:30
|
|
|
className={`${item?.SalesId && OrderType !== 'Hold'
|
|
|
|
|
? 'BSBill-Table7-content-disabled'
|
|
|
|
|
: 'BSBill-Table7-content'
|
|
|
|
|
}
|
2026-01-27 18:27:29 +05:30
|
|
|
|
|
|
|
|
`}
|
|
|
|
|
>
|
|
|
|
|
{tableOptions?.map((tableitem) => (
|
|
|
|
|
<>
|
|
|
|
|
{BookingTypeBoth &&
|
|
|
|
|
index == 0 &&
|
|
|
|
|
tableitem.OptionName == 'Sl.No' && (
|
|
|
|
|
<td
|
|
|
|
|
rowspan={tableData.length}
|
|
|
|
|
style={{ backgroundColor: '#CFB59D' }}
|
|
|
|
|
>
|
|
|
|
|
<img width="30px" alt="" src={TakeAwayIcon} />
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
{tableitem.OptionName == 'Sl.No' && (
|
|
|
|
|
<td
|
|
|
|
|
className="Table-3_qty"
|
|
|
|
|
style={{
|
|
|
|
|
width: '0px',
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{index + 1}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Item' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
textAlign: 'left',
|
|
|
|
|
padding: '8px',
|
|
|
|
|
}}
|
|
|
|
|
onClick={() =>
|
|
|
|
|
(item.FullProductIdentifierDtls?.length > 0 ||
|
|
|
|
|
item.ProductIdentifierDtls?.length > 0) &&
|
|
|
|
|
handleImeiDetails(item)
|
|
|
|
|
}
|
|
|
|
|
>
|
|
|
|
|
{item?.ProdName}
|
|
|
|
|
{item?.Type != 'C' && (
|
|
|
|
|
<>
|
|
|
|
|
<p
|
|
|
|
|
className="Tbl3-Variant"
|
|
|
|
|
style={{ fontFamily: 'Poppins' }}
|
|
|
|
|
>
|
|
|
|
|
(
|
|
|
|
|
{!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="Tbl3-Variant"
|
|
|
|
|
style={{ fontFamily: 'Poppins' }}
|
|
|
|
|
>
|
|
|
|
|
{item.ProdDetail?.map((prod, index) => (
|
|
|
|
|
<p key={index}>
|
|
|
|
|
{prod.ProdName} - {prod.Size} {prod.UomName}
|
|
|
|
|
</p>
|
|
|
|
|
))}
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
{productBasedExtraCharges?.find(
|
|
|
|
|
(find) => find.ProdId === item.ProdId
|
|
|
|
|
) !== undefined && (
|
2026-02-05 15:53:37 +05:30
|
|
|
<div
|
|
|
|
|
style={{
|
|
|
|
|
fontSize: '10px',
|
|
|
|
|
fontWeight: '500',
|
|
|
|
|
whiteSpace: 'nowrap',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
Extra Charges :{' '}
|
|
|
|
|
{
|
|
|
|
|
productBasedExtraCharges?.find(
|
|
|
|
|
(find) => find.ProdId === item.ProdId
|
|
|
|
|
)?.TotalAmt
|
|
|
|
|
}
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
2026-01-27 18:27:29 +05:30
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'MRP' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.MRP}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Discount' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.Type != 'C'
|
|
|
|
|
? item.Offer
|
|
|
|
|
? item.Offer
|
|
|
|
|
: '-'
|
|
|
|
|
: item?.OfferPrice && item?.OfferPrice > 0
|
|
|
|
|
? item?.OfferType === 'F'
|
|
|
|
|
? `₹${safeRound(item.OfferPrice)}`
|
|
|
|
|
: `${item.OfferPrice}%`
|
|
|
|
|
: '-'}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Quantity' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.OrderQty}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Rate' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.OrderRate}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Amount' && (
|
2026-02-05 15:53:37 +05:30
|
|
|
<td
|
|
|
|
|
onClick={(e) => {
|
|
|
|
|
e.stopPropagation();
|
|
|
|
|
if (GetCustId) {
|
|
|
|
|
handleCustomerProductPriceHistory(item);
|
|
|
|
|
}
|
|
|
|
|
}}
|
|
|
|
|
style={{ fontFamily: 'Poppins' }}>
|
2026-01-27 18:27:29 +05:30
|
|
|
{safeRound(item?.TotalAmt)}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
</>
|
|
|
|
|
))}
|
|
|
|
|
</tr>
|
|
|
|
|
))}
|
|
|
|
|
</tbody>
|
|
|
|
|
)}
|
|
|
|
|
{/* Reorder DineIn */}
|
|
|
|
|
{OldtableDataDinein?.length > 0 && (
|
|
|
|
|
<tbody className="Table7-tbody">
|
|
|
|
|
{OldtableDataDinein?.map((item, index) => (
|
|
|
|
|
<tr
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: SelectedFont ? SelectedFont : '',
|
|
|
|
|
|
|
|
|
|
backgroundColor:
|
|
|
|
|
BillOrderPre === 'Y'
|
|
|
|
|
? item?.SalesId
|
|
|
|
|
? 'rgb(243, 248, 213)'
|
|
|
|
|
: BookingType === 'Dine In' &&
|
2026-02-05 15:53:37 +05:30
|
|
|
triggerAnimation &&
|
|
|
|
|
OldtableDataTakeAway?.length + index === 0 &&
|
|
|
|
|
!item?.SalesId &&
|
|
|
|
|
tableDataDinein?.length >= PreviousdataLength
|
2026-01-27 18:27:29 +05:30
|
|
|
? 'wheat'
|
|
|
|
|
: BookingType !== 'Dine In' &&
|
2026-02-05 15:53:37 +05:30
|
|
|
triggerAnimation &&
|
|
|
|
|
OldtableDataTakeAway?.length + index === 0 &&
|
|
|
|
|
tableDataDinein?.length >= PreviousdataLength &&
|
|
|
|
|
!HoldOrderDtl &&
|
|
|
|
|
!UnpaidData
|
2026-01-27 18:27:29 +05:30
|
|
|
? 'wheat'
|
|
|
|
|
: 'inherit'
|
|
|
|
|
: 'none',
|
|
|
|
|
background: item?.SalesId
|
|
|
|
|
? 'rgb(243, 248, 213)'
|
|
|
|
|
: GlobEstBooking === 'ParEst' &&
|
2026-02-05 15:53:37 +05:30
|
|
|
GlobProdwisedata?.includes(
|
|
|
|
|
item?.InwardDtlId + ' ' + item?.BookingTypeName
|
|
|
|
|
)
|
2026-01-27 18:27:29 +05:30
|
|
|
? '#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',
|
|
|
|
|
}}
|
|
|
|
|
key={OldtableDataTakeAway?.length + index}
|
|
|
|
|
onClick={
|
|
|
|
|
editdelete === 'Edit'
|
|
|
|
|
? () => handleEditQuantity(item)
|
|
|
|
|
: editdelete === 'Delete'
|
|
|
|
|
? () => removeFromCart(item)
|
2026-02-05 15:53:37 +05:30
|
|
|
: () => { }
|
2026-01-27 18:27:29 +05:30
|
|
|
}
|
|
|
|
|
// onClick={editdelete === "Edit" ? () => handleEditQuantity(item) : editdelete === "Delete" ? () => removeFromCart(item) : ""}
|
|
|
|
|
|
2026-02-05 15:53:37 +05:30
|
|
|
className={`${item?.SalesId
|
|
|
|
|
? 'BSBill-Table7-content-disabled'
|
|
|
|
|
: 'BSBill-Table7-content'
|
|
|
|
|
}
|
2026-01-27 18:27:29 +05:30
|
|
|
|
|
|
|
|
`}
|
|
|
|
|
>
|
|
|
|
|
{tableOptions?.map((tableitem) => (
|
|
|
|
|
<>
|
|
|
|
|
{BookingTypeBoth &&
|
|
|
|
|
index == 0 &&
|
|
|
|
|
tableitem.OptionName == 'Sl.No' && (
|
|
|
|
|
<td
|
|
|
|
|
rowspan={tableData.length}
|
|
|
|
|
style={{ backgroundColor: '#A2C3CD' }}
|
|
|
|
|
>
|
|
|
|
|
<img width="30px" alt="" src={dineInIcon} />
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
{tableitem.OptionName == 'Sl.No' && (
|
|
|
|
|
<td
|
|
|
|
|
className="Table-3_qty"
|
|
|
|
|
style={{
|
|
|
|
|
width: '0px',
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{OldtableDataTakeAway?.length + index + 1}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Item' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
textAlign: 'left',
|
|
|
|
|
padding: '8px',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.ProdName}
|
|
|
|
|
|
|
|
|
|
{item?.Type != 'C' && (
|
|
|
|
|
<>
|
|
|
|
|
<p
|
|
|
|
|
className="Tbl3-Variant"
|
|
|
|
|
style={{ fontFamily: 'Poppins' }}
|
|
|
|
|
>
|
|
|
|
|
(
|
|
|
|
|
{!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="Tbl3-Variant"
|
|
|
|
|
style={{ fontFamily: 'Poppins' }}
|
|
|
|
|
>
|
|
|
|
|
{item.ProdDetail?.map((prod, index) => (
|
|
|
|
|
<p key={index}>
|
|
|
|
|
{prod.ProdName} - {prod.Size} {prod.UomName}
|
|
|
|
|
</p>
|
|
|
|
|
))}
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
{productBasedExtraCharges?.find(
|
|
|
|
|
(find) => find.ProdId === item.ProdId
|
|
|
|
|
) !== undefined && (
|
2026-02-05 15:53:37 +05:30
|
|
|
<div
|
|
|
|
|
style={{
|
|
|
|
|
fontSize: '10px',
|
|
|
|
|
fontWeight: '500',
|
|
|
|
|
whiteSpace: 'nowrap',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
Extra Charges :{' '}
|
|
|
|
|
{
|
|
|
|
|
productBasedExtraCharges?.find(
|
|
|
|
|
(find) => find.ProdId === item.ProdId
|
|
|
|
|
)?.TotalAmt
|
|
|
|
|
}
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
2026-01-27 18:27:29 +05:30
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'MRP' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.MRP}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Discount' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.Type != 'C'
|
|
|
|
|
? item.Offer
|
|
|
|
|
? item.Offer
|
|
|
|
|
: '-'
|
|
|
|
|
: item?.OfferPrice && item?.OfferPrice > 0
|
|
|
|
|
? item?.OfferType === 'F'
|
|
|
|
|
? `₹${safeRound(item.OfferPrice)}`
|
|
|
|
|
: `${item.OfferPrice}%`
|
|
|
|
|
: '-'}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Quantity' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.OrderQty}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Rate' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.OrderRate}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Amount' && (
|
2026-02-05 15:53:37 +05:30
|
|
|
<td onClick={(e) => {
|
|
|
|
|
e.stopPropagation();
|
|
|
|
|
if (GetCustId) {
|
|
|
|
|
handleCustomerProductPriceHistory(item);
|
|
|
|
|
}
|
|
|
|
|
}} style={{ fontFamily: 'Poppins' }}>
|
2026-01-27 18:27:29 +05:30
|
|
|
{safeRound(item?.TotalAmt)}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
</>
|
|
|
|
|
))}
|
|
|
|
|
</tr>
|
|
|
|
|
))}
|
|
|
|
|
</tbody>
|
|
|
|
|
)}
|
|
|
|
|
{/* TakeWay */}
|
|
|
|
|
{tableDataTakeAway?.length > 0 && (
|
|
|
|
|
<tbody className="Table7-tbody">
|
|
|
|
|
{tableDataTakeAway?.map((item, index) => (
|
|
|
|
|
<tr
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: SelectedFont,
|
|
|
|
|
|
|
|
|
|
backgroundColor:
|
|
|
|
|
BillOrderPre === 'Y'
|
|
|
|
|
? BookingType === 'Dine In' && item?.SalesId
|
|
|
|
|
? 'rgb(243, 248, 213)'
|
|
|
|
|
: BookingType === 'Dine In' &&
|
2026-02-05 15:53:37 +05:30
|
|
|
triggerAnimation &&
|
|
|
|
|
OldtableDataDinein?.length +
|
|
|
|
|
OldtableDataTakeAway?.length +
|
|
|
|
|
index ===
|
|
|
|
|
0 &&
|
|
|
|
|
!item?.SalesId &&
|
|
|
|
|
tableDataTakeAway?.length >= PreviousdataLength
|
2026-01-27 18:27:29 +05:30
|
|
|
? 'wheat'
|
|
|
|
|
: BookingType !== 'Dine In' &&
|
2026-02-05 15:53:37 +05:30
|
|
|
triggerAnimation &&
|
|
|
|
|
OldtableDataDinein?.length +
|
|
|
|
|
OldtableDataTakeAway?.length +
|
|
|
|
|
index ===
|
|
|
|
|
0 &&
|
|
|
|
|
tableDataTakeAway?.length >=
|
|
|
|
|
PreviousdataLength &&
|
|
|
|
|
!HoldOrderDtl &&
|
|
|
|
|
!UnpaidData
|
2026-01-27 18:27:29 +05:30
|
|
|
? 'wheat'
|
|
|
|
|
: (OldtableDataDinein?.length +
|
2026-02-05 15:53:37 +05:30
|
|
|
OldtableDataTakeAway?.length +
|
|
|
|
|
index) %
|
|
|
|
|
2 ===
|
|
|
|
|
0
|
2026-01-27 18:27:29 +05:30
|
|
|
? 'white'
|
|
|
|
|
: SelectedBillColor?.['OverallBackgroundColor']
|
|
|
|
|
? SelectedBillColor?.[
|
2026-02-05 15:53:37 +05:30
|
|
|
'OverallBackgroundColor'
|
|
|
|
|
]
|
2026-01-27 18:27:29 +05:30
|
|
|
: '#d6d6d6'
|
|
|
|
|
: (OldtableDataDinein?.length +
|
2026-02-05 15:53:37 +05:30
|
|
|
OldtableDataTakeAway?.length +
|
|
|
|
|
index) %
|
|
|
|
|
2 ===
|
|
|
|
|
0
|
2026-01-27 18:27:29 +05:30
|
|
|
? 'white'
|
|
|
|
|
: SelectedBillColor?.['OverallBackgroundColor']
|
|
|
|
|
? SelectedBillColor?.['OverallBackgroundColor']
|
|
|
|
|
: '#d6d6d6',
|
|
|
|
|
background:
|
|
|
|
|
BookingType === 'Dine In' && item?.SalesId
|
|
|
|
|
? 'rgb(243, 248, 213)'
|
|
|
|
|
: GlobEstBooking === 'ParEst' &&
|
2026-02-05 15:53:37 +05:30
|
|
|
GlobProdwisedata?.includes(
|
|
|
|
|
item?.InwardDtlId + ' ' + item?.BookingTypeName
|
|
|
|
|
)
|
2026-01-27 18:27:29 +05:30
|
|
|
? '#b2d1f7'
|
|
|
|
|
: (OldtableDataDinein?.length +
|
2026-02-05 15:53:37 +05:30
|
|
|
OldtableDataTakeAway?.length +
|
|
|
|
|
index) %
|
|
|
|
|
2 ===
|
|
|
|
|
0
|
2026-01-27 18:27:29 +05:30
|
|
|
? 'white'
|
|
|
|
|
: SelectedBillColor?.['OverallBackgroundColor']
|
|
|
|
|
? SelectedBillColor?.['OverallBackgroundColor']
|
|
|
|
|
: '#d6d6d6',
|
|
|
|
|
animation:
|
|
|
|
|
BillOrderPre === 'Y' && !BookingTypeBoth
|
|
|
|
|
? triggerAnimation &&
|
|
|
|
|
OldtableDataDinein?.length +
|
2026-02-05 15:53:37 +05:30
|
|
|
OldtableDataTakeAway?.length +
|
|
|
|
|
index ===
|
|
|
|
|
0 &&
|
2026-01-27 18:27:29 +05:30
|
|
|
!item?.SalesId &&
|
|
|
|
|
tableDataTakeAway?.length >= PreviousdataLength &&
|
|
|
|
|
!HoldOrderDtl &&
|
|
|
|
|
!UnpaidData
|
|
|
|
|
? 'splashAnimation 0.5s ease-in-out'
|
|
|
|
|
: 'none'
|
|
|
|
|
: 'none',
|
|
|
|
|
}}
|
|
|
|
|
key={
|
|
|
|
|
OldtableDataDinein?.length +
|
|
|
|
|
OldtableDataTakeAway?.length +
|
|
|
|
|
index
|
|
|
|
|
}
|
|
|
|
|
onClick={
|
|
|
|
|
editdelete === 'Edit'
|
|
|
|
|
? () =>
|
2026-02-05 15:53:37 +05:30
|
|
|
item.Type == 'P' || item.Type == 'C'
|
|
|
|
|
? handleEditQuantity(item)
|
|
|
|
|
: item.ServiceType == 'G'
|
2026-01-27 18:27:29 +05:30
|
|
|
? handleEditQuantity(item)
|
2026-02-05 15:53:37 +05:30
|
|
|
: ''
|
2026-01-27 18:27:29 +05:30
|
|
|
: editdelete === 'Delete'
|
|
|
|
|
? () => removeFromCart(item)
|
2026-02-05 15:53:37 +05:30
|
|
|
: () => { }
|
2026-01-27 18:27:29 +05:30
|
|
|
}
|
|
|
|
|
// onClick={editdelete === "Edit" ? () => handleEditQuantity(item) : editdelete === "Delete" ? () => removeFromCart(item) : ""}
|
|
|
|
|
|
2026-02-05 15:53:37 +05:30
|
|
|
className={`${BookingType === 'Dine In' && item?.SalesId
|
|
|
|
|
? 'BSBill-Table7-content-disabled'
|
|
|
|
|
: 'BSBill-Table7-content'
|
|
|
|
|
}
|
2026-01-27 18:27:29 +05:30
|
|
|
|
|
|
|
|
`}
|
|
|
|
|
>
|
|
|
|
|
{tableOptions?.map((tableitem) => (
|
|
|
|
|
<>
|
|
|
|
|
{BookingTypeBoth &&
|
|
|
|
|
index == 0 &&
|
|
|
|
|
tableitem.OptionName == 'Sl.No' && (
|
|
|
|
|
<td
|
|
|
|
|
rowspan={tableData.length}
|
|
|
|
|
style={{ backgroundColor: '#CFB59D' }}
|
|
|
|
|
>
|
|
|
|
|
<img width="30px" alt="" src={TakeAwayIcon} />
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
{tableitem.OptionName == 'Sl.No' && (
|
|
|
|
|
<td
|
|
|
|
|
className="Table-3_qty"
|
|
|
|
|
style={{
|
|
|
|
|
width: '0px',
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{OldtableDataDinein?.length +
|
|
|
|
|
OldtableDataTakeAway?.length +
|
|
|
|
|
index +
|
|
|
|
|
1}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Item' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
textAlign: 'left',
|
|
|
|
|
padding: '8px',
|
|
|
|
|
}}
|
|
|
|
|
onClick={() =>
|
|
|
|
|
(item.FullProductIdentifierDtls?.length > 0 ||
|
|
|
|
|
item.ProductIdentifierDtls?.length > 0) &&
|
|
|
|
|
handleImeiDetails(item)
|
|
|
|
|
}
|
|
|
|
|
>
|
|
|
|
|
{item?.Type !== 'OS'
|
|
|
|
|
? item.ProdName
|
|
|
|
|
: item.ServiceName}
|
|
|
|
|
|
|
|
|
|
{item?.Type != 'C' && (
|
|
|
|
|
<>
|
|
|
|
|
<p
|
|
|
|
|
className="Tbl3-Variant"
|
|
|
|
|
style={{ fontFamily: 'Poppins' }}
|
|
|
|
|
>
|
|
|
|
|
{/* (
|
|
|
|
|
{!item?.ProdVariantName?.toLowerCase()?.includes(
|
|
|
|
|
'variant'
|
|
|
|
|
) && <span>{item?.ProdVariantName} </span>}
|
|
|
|
|
{item?.Size}
|
|
|
|
|
{item?.SinglePc == 'Y' ? 'PCS' : item?.UomName}) */}
|
|
|
|
|
{item?.Type !== 'OS' && (
|
|
|
|
|
<>
|
|
|
|
|
{!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="Tbl3-Variant"
|
|
|
|
|
style={{ fontFamily: 'Poppins' }}
|
|
|
|
|
>
|
|
|
|
|
{item.ProdDetail?.map((prod, index) => (
|
|
|
|
|
<p key={index}>
|
|
|
|
|
{prod.ProdName} - {prod.Size} {prod.UomName}
|
|
|
|
|
</p>
|
|
|
|
|
))}
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
{productBasedExtraCharges?.find(
|
|
|
|
|
(find) => find.ProdId === item.ProdId
|
|
|
|
|
) !== undefined && (
|
2026-02-05 15:53:37 +05:30
|
|
|
<div
|
|
|
|
|
style={{
|
|
|
|
|
fontSize: '10px',
|
|
|
|
|
fontWeight: '500',
|
|
|
|
|
whiteSpace: 'nowrap',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
Extra Charges :{' '}
|
|
|
|
|
{
|
|
|
|
|
productBasedExtraCharges?.find(
|
|
|
|
|
(find) => find.ProdId === item.ProdId
|
|
|
|
|
)?.TotalAmt
|
|
|
|
|
}
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
2026-01-27 18:27:29 +05:30
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'MRP' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.MRP}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Discount' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.Type != 'C'
|
|
|
|
|
? item.Offer
|
|
|
|
|
? item.Offer
|
|
|
|
|
: '-'
|
|
|
|
|
: item?.OfferPrice && item?.OfferPrice > 0
|
|
|
|
|
? item?.OfferType === 'F'
|
|
|
|
|
? `₹${safeRound(item.OfferPrice)}`
|
|
|
|
|
: `${item.OfferPrice}%`
|
|
|
|
|
: '-'}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Quantity' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.OrderQty}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Rate' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{safeRound(item?.OrderRate)}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Amount' && (
|
2026-02-05 15:53:37 +05:30
|
|
|
<td onClick={(e) => {
|
|
|
|
|
e.stopPropagation();
|
|
|
|
|
if (GetCustId) {
|
|
|
|
|
handleCustomerProductPriceHistory(item);
|
|
|
|
|
}
|
|
|
|
|
}} style={{ fontFamily: 'Poppins' }}>
|
2026-01-27 18:27:29 +05:30
|
|
|
{item?.TotalAmt}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
</>
|
|
|
|
|
))}
|
|
|
|
|
</tr>
|
|
|
|
|
))}
|
|
|
|
|
</tbody>
|
|
|
|
|
)}
|
|
|
|
|
{/* DineIn */}
|
|
|
|
|
{tableDataDinein?.length > 0 && (
|
|
|
|
|
<tbody className="Table7-tbody">
|
|
|
|
|
{tableDataDinein?.map((item, index) => (
|
|
|
|
|
<tr
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: SelectedFont,
|
|
|
|
|
|
|
|
|
|
backgroundColor:
|
|
|
|
|
BillOrderPre === 'Y' && !BookingTypeBoth
|
|
|
|
|
? BookingType === 'Dine In' &&
|
|
|
|
|
item?.SalesId &&
|
|
|
|
|
!BookingTypeBoth
|
|
|
|
|
? 'rgb(243, 248, 213)'
|
|
|
|
|
: BookingType === 'Dine In' &&
|
2026-02-05 15:53:37 +05:30
|
|
|
triggerAnimation &&
|
|
|
|
|
OldtableDataTakeAway?.length +
|
|
|
|
|
OldtableDataDinein?.length +
|
|
|
|
|
tableDataTakeAway?.length +
|
|
|
|
|
index ===
|
|
|
|
|
0 &&
|
|
|
|
|
!item?.SalesId &&
|
|
|
|
|
tableDataDinein?.length >= PreviousdataLength
|
2026-01-27 18:27:29 +05:30
|
|
|
? 'wheat'
|
|
|
|
|
: BookingType !== 'Dine In' &&
|
2026-02-05 15:53:37 +05:30
|
|
|
triggerAnimation &&
|
|
|
|
|
OldtableDataTakeAway?.length +
|
|
|
|
|
OldtableDataDinein?.length +
|
|
|
|
|
tableDataTakeAway?.length +
|
|
|
|
|
index ===
|
|
|
|
|
0 &&
|
|
|
|
|
tableDataDinein?.length >= PreviousdataLength &&
|
|
|
|
|
!HoldOrderDtl &&
|
|
|
|
|
!UnpaidData
|
2026-01-27 18:27:29 +05:30
|
|
|
? 'wheat'
|
|
|
|
|
: 'inherit'
|
|
|
|
|
: 'none',
|
|
|
|
|
background:
|
|
|
|
|
BookingType === 'Dine In' &&
|
2026-02-05 15:53:37 +05:30
|
|
|
item?.SalesId &&
|
|
|
|
|
!BookingTypeBoth
|
2026-01-27 18:27:29 +05:30
|
|
|
? 'rgb(243, 248, 213)'
|
|
|
|
|
: GlobEstBooking === 'ParEst' &&
|
2026-02-05 15:53:37 +05:30
|
|
|
GlobProdwisedata?.includes(
|
|
|
|
|
item?.InwardDtlId + ' ' + item?.BookingTypeName
|
|
|
|
|
)
|
2026-01-27 18:27:29 +05:30
|
|
|
? '#b2d1f7'
|
|
|
|
|
: (OldtableDataTakeAway?.length +
|
2026-02-05 15:53:37 +05:30
|
|
|
OldtableDataDinein?.length +
|
|
|
|
|
tableDataTakeAway?.length +
|
|
|
|
|
index) %
|
|
|
|
|
2 ===
|
|
|
|
|
0
|
2026-01-27 18:27:29 +05:30
|
|
|
? 'white'
|
|
|
|
|
: SelectedBillColor?.['OverallBackgroundColor']
|
|
|
|
|
? SelectedBillColor?.['OverallBackgroundColor']
|
|
|
|
|
: '#d6d6d6',
|
|
|
|
|
animation:
|
|
|
|
|
BillOrderPre === 'Y' && !BookingTypeBoth
|
|
|
|
|
? triggerAnimation &&
|
|
|
|
|
OldtableDataTakeAway?.length +
|
2026-02-05 15:53:37 +05:30
|
|
|
OldtableDataDinein?.length +
|
|
|
|
|
tableDataTakeAway?.length +
|
|
|
|
|
index ===
|
|
|
|
|
0 &&
|
2026-01-27 18:27:29 +05:30
|
|
|
!item?.SalesId &&
|
|
|
|
|
tableDataDinein?.length >= PreviousdataLength &&
|
|
|
|
|
!HoldOrderDtl &&
|
|
|
|
|
!UnpaidData
|
|
|
|
|
? 'splashAnimation 0.5s ease-in-out'
|
|
|
|
|
: 'none'
|
|
|
|
|
: 'none',
|
|
|
|
|
}}
|
|
|
|
|
key={
|
|
|
|
|
OldtableDataTakeAway?.length +
|
|
|
|
|
OldtableDataDinein?.length +
|
|
|
|
|
tableDataTakeAway?.length +
|
|
|
|
|
index
|
|
|
|
|
}
|
|
|
|
|
onClick={
|
|
|
|
|
editdelete === 'Edit'
|
|
|
|
|
? () => handleEditQuantity(item)
|
|
|
|
|
: editdelete === 'Delete'
|
|
|
|
|
? () => removeFromCart(item)
|
2026-02-05 15:53:37 +05:30
|
|
|
: () => { }
|
2026-01-27 18:27:29 +05:30
|
|
|
}
|
|
|
|
|
// onClick={editdelete === "Edit" ? () => handleEditQuantity(item) : editdelete === "Delete" ? () => removeFromCart(item) : ""}
|
|
|
|
|
|
2026-02-05 15:53:37 +05:30
|
|
|
className={`${BookingType === 'Dine In' && item?.SalesId
|
|
|
|
|
? 'BSBill-Table7-content-disabled'
|
|
|
|
|
: 'BSBill-Table7-content'
|
|
|
|
|
}
|
2026-01-27 18:27:29 +05:30
|
|
|
|
|
|
|
|
`}
|
|
|
|
|
>
|
|
|
|
|
{tableOptions?.map((tableitem) => (
|
|
|
|
|
<>
|
|
|
|
|
{BookingTypeBoth &&
|
|
|
|
|
index == 0 &&
|
|
|
|
|
tableitem.OptionName == 'Sl.No' && (
|
|
|
|
|
<td
|
|
|
|
|
rowspan={tableData.length}
|
|
|
|
|
style={{ backgroundColor: '#A2C3CD' }}
|
|
|
|
|
>
|
|
|
|
|
<img width="30px" alt="" src={dineInIcon} />
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
{tableitem.OptionName == 'Sl.No' && (
|
|
|
|
|
<td
|
|
|
|
|
className="Table-3_qty"
|
|
|
|
|
style={{
|
|
|
|
|
width: '0px',
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{OldtableDataTakeAway?.length +
|
|
|
|
|
OldtableDataDinein?.length +
|
|
|
|
|
tableDataTakeAway?.length +
|
|
|
|
|
index +
|
|
|
|
|
1}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Item' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
textAlign: 'left',
|
|
|
|
|
padding: '8px',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.ProdName}
|
|
|
|
|
|
|
|
|
|
{item?.Type != 'C' && (
|
|
|
|
|
<>
|
|
|
|
|
<p
|
|
|
|
|
className="Tbl3-Variant"
|
|
|
|
|
style={{ fontFamily: 'Poppins' }}
|
|
|
|
|
>
|
|
|
|
|
(
|
|
|
|
|
{!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="Tbl3-Variant"
|
|
|
|
|
style={{ fontFamily: 'Poppins' }}
|
|
|
|
|
>
|
|
|
|
|
{item.ProdDetail?.map((prod, index) => (
|
|
|
|
|
<p key={index}>
|
|
|
|
|
{prod.ProdName} - {prod.Size} {prod.UomName}
|
|
|
|
|
</p>
|
|
|
|
|
))}
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
{productBasedExtraCharges?.find(
|
|
|
|
|
(find) => find.ProdId === item.ProdId
|
|
|
|
|
) !== undefined && (
|
2026-02-05 15:53:37 +05:30
|
|
|
<div
|
|
|
|
|
style={{
|
|
|
|
|
fontSize: '10px',
|
|
|
|
|
fontWeight: '500',
|
|
|
|
|
whiteSpace: 'nowrap',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
Extra Charges :{' '}
|
|
|
|
|
{
|
|
|
|
|
productBasedExtraCharges?.find(
|
|
|
|
|
(find) => find.ProdId === item.ProdId
|
|
|
|
|
)?.TotalAmt
|
|
|
|
|
}
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
2026-01-27 18:27:29 +05:30
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'MRP' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.MRP}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Discount' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.Type != 'C'
|
|
|
|
|
? item.Offer
|
|
|
|
|
? item.Offer
|
|
|
|
|
: '-'
|
|
|
|
|
: item?.OfferPrice && item?.OfferPrice > 0
|
|
|
|
|
? item?.OfferType === 'F'
|
|
|
|
|
? `₹${safeRound(item.OfferPrice)}`
|
|
|
|
|
: `${item.OfferPrice}%`
|
|
|
|
|
: '-'}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Quantity' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.OrderQty}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Rate' && (
|
|
|
|
|
<td
|
|
|
|
|
style={{
|
|
|
|
|
fontFamily: 'Poppins',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.OrderRate}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
{tableitem.OptionName == 'Amount' && (
|
2026-02-05 15:53:37 +05:30
|
|
|
<td
|
|
|
|
|
onClick={(e) => {
|
|
|
|
|
e.stopPropagation();
|
|
|
|
|
if (GetCustId) {
|
|
|
|
|
handleCustomerProductPriceHistory(item);
|
|
|
|
|
}
|
|
|
|
|
}}
|
|
|
|
|
style={{ fontFamily: 'Poppins' }}>
|
2026-01-27 18:27:29 +05:30
|
|
|
{safeRound(item?.TotalAmt)}
|
|
|
|
|
</td>
|
|
|
|
|
)}
|
|
|
|
|
</>
|
|
|
|
|
))}
|
|
|
|
|
</tr>
|
|
|
|
|
))}
|
|
|
|
|
</tbody>
|
|
|
|
|
)}
|
|
|
|
|
</table>
|
|
|
|
|
{OpenEditTotalAmt && (
|
|
|
|
|
<BSEditTotalAmt
|
|
|
|
|
EditTotalOpen={OpenEditTotalAmt}
|
|
|
|
|
EditTotalClose={handleEditTotalAmountCancel}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|
{EditQuantity && (
|
|
|
|
|
<BSBillingEditQuantity
|
|
|
|
|
handleEditQuantityCancel={handleEditQuantityCancel}
|
|
|
|
|
BSBillingEditQuantity={EditQuantity}
|
|
|
|
|
Productdata={Modaldata}
|
|
|
|
|
Index={Index}
|
|
|
|
|
shortKeyMethod={shortKeyMethod}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
|
|
|
|
{OpenImeiDetail && (
|
|
|
|
|
<BSImeiDetails
|
|
|
|
|
DeviceDetails={OpenImeiDetail}
|
|
|
|
|
handleDeviceDetailClose={handleImeiDetailClose}
|
|
|
|
|
ProductDetail={Modaldata}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
2026-02-05 15:53:37 +05:30
|
|
|
{(customerPriceHistoryOpen && GetCustId) &&
|
|
|
|
|
<CustomerPriceHistory
|
|
|
|
|
open={customerPriceHistoryOpen}
|
|
|
|
|
custId={GetCustId}
|
|
|
|
|
setCustomerPriceHistoryOpen={setCustomerPriceHistoryOpen}
|
|
|
|
|
customerProduct={customerProduct}
|
|
|
|
|
setCustomerProduct={setCustomerProduct}
|
|
|
|
|
selectedCustomer={selectedCustomer}
|
|
|
|
|
/>
|
|
|
|
|
}
|
2026-01-27 18:27:29 +05:30
|
|
|
</>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default BSBillingTable7;
|