Android_Retail/src/Pages/BookingScreen/Components/BSItemCards/CodeWiseOffer.jsx

102 lines
2.9 KiB
JavaScript

import { ChangeFreeProductList, ChangeOfferAppliedProducts, ClearOfferAppliedProducts } from "../../../../Features/Offer/Offernew/BookingOffernew";
// codewiseOfferLogic.js
export const codewiseOfferLogic = (
CodeOfferData,
cartItems,
OverAllproductBasedOfferDatas,
OfferAppliedProduct,
dispatch,
multipleNotApply = true
) => {
const NetAmt = cartItems?.reduce((sum, item) => sum + (item.TotalAmt || 0), 0) || 0;
const CodeData = CodeOfferData?.[0];
if (!CodeData) {
throw new Error("No offer data found");
}
if (NetAmt < CodeData.MinPurchase) {
throw new Error(`User must have a minimum purchase of ${CodeData.MinPurchase}`);
}
let Multiple = false;
Multiple && dispatch(ClearOfferAppliedProducts())
if (CodeData?.ProdOfferDetails?.length > 0) {
CodeData.ProdOfferDetails.forEach((freeProd) => {
const freeProdObj = {
OfferId: CodeData.OfferCodeId,
FreeProdId: freeProd.ProdId,
FreeProdName: freeProd.ProdName,
isCodeBase: "Y",
OfferMode: CodeData.OfferType || "",
TableName: CodeData.TableName,
TableUniqueName: CodeData.TableUniqueName,
OverAllFreeQty: 1,
UsedFreeQty: 0,
RemainingQty: 1,
ProdVariantDetails: freeProd.ProdVariantDetails?.map((variant) => ({
FreeProdVariantName: variant.ProdVariantName,
StockDetails: variant.StockDetails?.map((stock) => ({
FreeInwardDtlId: stock.InwardDtlId,
ProdOfferId: stock.ProdOfferId,
ActiveStatus: stock.ActiveStatus,
EligibleFree: 1,
UsedFree: 0,
RemainingFree: 1
}))
}))
};
dispatch(ChangeFreeProductList(freeProdObj));
});
}
else {
const OfferAmount = CodeData.RewardType === "F"
? CodeData.RewardValue
: CodeData.RewardType === "P"
? (CodeData.RewardValue * NetAmt) / 100
: null;
const base = {
OfferId: CodeData.OfferCodeId || "",
OfferAmount: OfferAmount || 0,
OfferMode: CodeData.OfferType || "",
ActualOfferAmount: OfferAmount || 0,
OfferValue: OfferAmount || 0,
TableName: CodeData.TableName || "",
TableUniqueName: CodeData.TableUniqueName || "",
TableUniqueId: CodeData.UniqueId || "",
ActualFreeQty: 0,
OfferType: CodeData.RewardType || "",
Detail: [],
OfferCode: CodeData.OfferCode || "",
CustId: CodeData.CustId || "",
UsedCount: null,
AppliesTo: null,
isCodeBase: "Y",
BookingType: "DineIn",
FreeProductsList: (CodeData.ProdOfferDetails || []).map((fp) => ({
FreeProdId: fp.ProdId || "",
FreeQty: 1,
FreeProdName: fp.ProdName || "",
ProdVariantDetails: fp.ProdVariantDetails || [],
OfferId: CodeData.OfferCodeId
})),
};
dispatch(ChangeOfferAppliedProducts(base));
}
return { success: true };
};