diff --git a/src/Features/BookingScreen/BookingData/BookingData.js b/src/Features/BookingScreen/BookingData/BookingData.js
index d167ffd..6874547 100644
--- a/src/Features/BookingScreen/BookingData/BookingData.js
+++ b/src/Features/BookingScreen/BookingData/BookingData.js
@@ -1764,6 +1764,9 @@ const BookingData = createSlice({
changeothersdata: (state, action) => {
state.othersdata = action?.payload;
},
+ changePreferenceData: (state, action) => {
+ state.PreferenceData = action?.payload || [];
+ },
ChangeNewQrProduct: (state, action) => {
state.NewQrProduct = action?.payload;
},
@@ -2258,6 +2261,7 @@ export const {
changeBillEditingMode,
changePreviousOrderPayment,
changePreviousOrderOfferDetail,
+ changePreferenceData
} = BookingData.actions;
export const GlobalComboRedirectionToDefaultLayoutForParking = (state) =>
diff --git a/src/Pages/BookingScreen/Components/BSCategories/BSCategoryHorizontal.jsx b/src/Pages/BookingScreen/Components/BSCategories/BSCategoryHorizontal.jsx
index 29d0a7d..98bf184 100644
--- a/src/Pages/BookingScreen/Components/BSCategories/BSCategoryHorizontal.jsx
+++ b/src/Pages/BookingScreen/Components/BSCategories/BSCategoryHorizontal.jsx
@@ -1,13 +1,8 @@
import { useEffect, useRef, useState, useCallback } from 'react';
import { useSelector, useDispatch } from 'react-redux';
-import { Form, Tooltip, AutoComplete } from 'antd';
import horizontal from '../../../../Images/others.png';
-import {
- InfoCircleOutlined,
- SearchOutlined,
- ArrowRightOutlined,
-} from '@ant-design/icons';
import '../../../../Styles/BookingScreen/Components/BSCategories/BSCategoryHorizontal.scss';
+import '../../../../Styles/BookingScreen/Components/BSCategories/BSCategoryVertical.scss';
import {
SelectedGlobalCatgColorDetail,
SelectedGlobalCatgFont,
@@ -21,7 +16,6 @@ import {
GlobalCategorieData,
changeProductCategorie,
getSelectedFavItems,
- changeothersdata,
GlobalFocusCatCard,
ChangeFocusCatCard,
changeProductSubCategorieProdCatfun,
@@ -49,23 +43,8 @@ import {
GlobalProductCardTrigger,
} from '../../../../Features/BookingScreen/BookingData/BookingData.js';
import catLogo from '../../../../Images/heart-outline-19.png';
-import {
- othernamedrop,
- getproducttypeid,
- getsupplierBasedOnCmpIdBrIdAppId,
- getUomData,
- getAdmin,
- postProductData,
-} from '../../../../Features/BookingScreen/BookingData/BookingData.js';
-import { DefaultModal } from '../../../../Components/Modal/DefaultModal.jsx';
-import { DropDowns } from '../../../../Components/Forms/DropDown.jsx';
-import { InputField } from '../../../../Components/Forms/InputField.jsx';
import { Messages } from '../../../../Components/Notifications/Messages.jsx';
-import Buttons from '../../../../Components/Forms/Buttons.jsx';
import WebFont from 'webfontloader';
-import TooltipWrapper from '../../../../Components/Tooltip/Tooltip';
-import { isMobile } from 'react-device-detect';
-import { validateSafeInput } from '../../../../Services/Others.js';
import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
import { BsSortAlphaDown } from 'react-icons/bs';
import { BsSortAlphaDownAlt } from 'react-icons/bs';
@@ -73,9 +52,12 @@ import { ApplicationPreferences } from '../../../../Features/BrachLogin/BranchLo
import { IoMdHeart } from 'react-icons/io';
import StandardSubcategory from '../BSSubCategories/StandardSubcategory.jsx';
import { useDateStore } from '../../../../Features/BookingScreen/BookingData/DateStore.js';
+import OtherItemsModal from './OtherItemsModal.jsx';
function BSCategoryHorizontal(props) {
- const formRef = useRef(null);
+
+ const { categoryType = 'horizontal' } = props;
+
const dispatch = useDispatch();
const CardData = useSelector(GlobalItemCard);
const FavData = useSelector(GlobalSelectedDatas);
@@ -116,26 +98,14 @@ function BSCategoryHorizontal(props) {
);
const [isDragging, setIsDragging] = useState(false);
const [startX, setStartX] = useState(null);
+ const [startY, setStartY] = useState(null);
const [accessToCard, setaccessToCard] = useState(false);
const [accessOther, setAccessOther] = useState(false);
const [isModalOpen, setIsModalOpen] = useState(false);
- const [EditState, setEditState] = useState();
const [messageType, setMessageType] = useState(null);
const [messageData, setMessageData] = useState(null);
- const [Tabledropname, setTabledropname] = useState();
- const [Tableuomname, setTableuomname] = useState();
- const [Tabletaxname, setTabletaxname] = useState();
- const [supplierid, setsupplierid] = useState();
- const [billAmount, setbillAmount] = useState(0);
- const [taxAmount, settaxAmount] = useState(0);
- const [totalAmount, settotalAmount] = useState(0);
- const [selectedTaxPercentage, setSelectedTaxPercentage] = useState();
- const [selectedUom, setselectedUom] = useState(null);
- const [selectedprod, setselectedprod] = useState('');
- const [prodtype, setprodtype] = useState([]);
- const [add, setAdd] = useState(false);
- const [defaultQuantity, setdefaultQuantity] = useState(1);
const [width, setWidth] = useState(window.innerWidth);
+ const [height, setHeight] = useState(window.innerHeight);
const [isSortClicked, setIsSortClicked] = useState(false);
const [ComboListdata, setComboListdata] = useState([]);
const Comboglobal = useSelector(GlobalCombosearch);
@@ -144,32 +114,40 @@ function BSCategoryHorizontal(props) {
const AppId = SessionData?.AppId;
const CompId = SessionData?.CompId;
const BranchId = SessionData?.BranchId;
- const UserId = SessionData?.UserId;
const [showLeftButton, setShowLeftButton] = useState(false);
const [showRightButton, setShowRightButton] = useState(false);
+ const [showUpButton, setShowUpButton] = useState(false);
+ const [showDownButton, setShowDownButton] = useState(false);
const Isdragging = useSelector(Globaldragging);
const draggingComponent = useSelector(GlobaldraggingComponent);
const alphabeticFormat = useSelector(GlobalisAlphabeticFormat);
const [subCat, setSubCat] = useState(false);
const [isClosing, setIsClosing] = useState(false);
console.log(subCat, 'subCat');
+
useEffect(() => {
const container = scrollContainerRef?.current;
+ if (!container) return;
- if (scrollContainerRef?.current?.scrollLeft == 0) {
- setShowLeftButton(false);
- } else {
- setShowLeftButton(true);
- }
- if (
- container?.scrollLeft + container?.clientWidth ===
- container?.scrollWidth
- ) {
- setShowRightButton(false);
- } else {
- setShowRightButton(true);
- }
- }, [scrollContainerRef?.current?.scrollLeft, width]);
+ const handleScroll = () => {
+ if (categoryType === "horizontal") {
+ setShowLeftButton(container.scrollLeft > 0);
+ setShowRightButton(
+ container.scrollLeft + container.clientWidth < container.scrollWidth
+ );
+ } else {
+ setShowUpButton(container.scrollTop > 0);
+ setShowDownButton(
+ container.scrollTop + container.clientHeight < container.scrollHeight
+ );
+ }
+ };
+
+ container.addEventListener("scroll", handleScroll);
+ handleScroll(); // initial check
+
+ return () => container.removeEventListener("scroll", handleScroll);
+ }, [categoryType]);
const handleScrollClickLeft = (
scrollAmountX,
@@ -225,6 +203,59 @@ function BSCategoryHorizontal(props) {
}
};
+ const handleScrollClickUp = (
+ scrollAmountX,
+ scrollAmountY,
+ steps = 25,
+ duration = 200
+ ) => {
+ const container = containerRef.current;
+ scrollUp();
+ if (container) {
+ const scrollStepX = scrollAmountX / steps;
+ const scrollStepY = scrollAmountY / steps;
+
+ const animateScrollStep = (currentStep) => {
+ if (currentStep <= steps) {
+ container.scrollTop += scrollStepY;
+ container.scrollLeft += scrollStepX;
+ setTimeout(() => {
+ animateScrollStep(currentStep + 1);
+ }, duration / steps);
+ }
+ };
+
+ animateScrollStep(1);
+ }
+ };
+
+ const handleScrollClickDown = (
+ scrollAmountX,
+ scrollAmountY,
+ steps = 25,
+ duration = 200
+ ) => {
+ scrollDown();
+ const container = containerRef.current;
+
+ if (container) {
+ const scrollStepX = scrollAmountX / steps;
+ const scrollStepY = scrollAmountY / steps;
+
+ const animateScrollStep = (currentStep) => {
+ if (currentStep <= steps) {
+ container.scrollTop += scrollStepY;
+ container.scrollLeft += scrollStepX;
+ setTimeout(() => {
+ animateScrollStep(currentStep + 1);
+ }, duration / steps);
+ }
+ };
+
+ animateScrollStep(1);
+ }
+ };
+
useEffect(() => {
Combodata();
const container = containerRef.current;
@@ -268,18 +299,12 @@ function BSCategoryHorizontal(props) {
useEffect(() => {
function handleResize() {
- setWidth(window.innerWidth);
+ setHeight(window.innerHeight);
}
window.addEventListener('resize', handleResize);
return () => window.removeEventListener('resize', handleResize);
- }, [width]);
- useEffect(() => {
- function handleResize() {
- setWidth(window.innerWidth);
- }
- window.addEventListener('resize', handleResize);
- return () => window.removeEventListener('resize', handleResize);
- }, [categoryData]);
+ }, [height, categoryData]);
+
const Combodata = async () => {
let data = {
AppId: AppId,
@@ -327,27 +352,6 @@ function BSCategoryHorizontal(props) {
});
}
}, [SelectedFontFamily]);
- const getTaxname = async () => {
- const responses = await dispatch(
- getAdmin({ CompId: CompId, AppId: AppId })
- ).unwrap();
- if (responses?.data?.statusCode === 1) {
- setTabletaxname(responses?.data?.data);
- let nilltax = responses?.data?.data?.find(
- (item) => item.TaxIdName?.toLowerCase() === 'nil'
- );
- onChangeFunction(nilltax?.TaxId);
- formRef.current?.setFieldsValue({ Quantity: defaultQuantity });
- }
- };
- const getUom = async () => {
- const getUomResponse = await dispatch(getUomData()).unwrap();
- let UomId = getUomResponse?.data?.data?.filter(
- (item) => item.ConfigName?.toLowerCase() === 'pcs'
- )?.[0]?.['ConfigId'];
- formRef.current?.setFieldsValue({ UOM: UomId });
- setselectedUom(UomId);
- };
const easeLinear = (t) => {
return t;
@@ -407,21 +411,75 @@ function BSCategoryHorizontal(props) {
}
};
+ const scrollUp = () => {
+ const container = scrollContainerRef.current;
+ if (container.scrollTop > 0) {
+ container.scrollTop -= 100;
+ }
+ };
+
+ const scrollDown = () => {
+ const container = scrollContainerRef.current;
+ if (container.scrollTop + container.clientHeight < container.scrollHeight) {
+ container.scrollTop += 100;
+ }
+ };
+
const handleMouseDown = (e) => {
e.preventDefault();
setIsDragging(true);
- setStartX(e.clientX);
+
+ if (categoryType === "horizontal") {
+ setStartX(e.clientX);
+ } else {
+ setStartY(e.clientY);
+ }
};
const handleMouseMove = (e) => {
if (!isDragging) return;
- const scrollContainer = scrollContainerRef.current;
- if (!scrollContainer) return;
+ const container = scrollContainerRef.current;
+ if (!container) return;
- const deltaX = e.clientX - startX;
- scrollContainer.scrollLeft -= deltaX;
- setStartX(e.clientX);
+ if (categoryType === "horizontal") {
+ const deltaX = e.clientX - startX;
+ container.scrollLeft -= deltaX;
+ setStartX(e.clientX);
+ } else {
+ const deltaY = startY - e.clientY;
+ container.scrollTop += deltaY;
+ setStartY(e.clientY);
+ }
+ };
+
+ const handleTouchStart = (e) => {
+ setIsDragging(true);
+
+ if (categoryType === "horizontal") {
+ setStartX(e.touches[0].clientX);
+ } else {
+ setStartY(e.touches[0].clientY);
+ }
+ };
+
+ const handleTouchMove = (e) => {
+ if (!isDragging) return;
+
+ const container = scrollContainerRef.current;
+ if (!container) return;
+
+ if (categoryType === "horizontal") {
+ const deltaX = e.touches[0].clientX - startX;
+ container.scrollLeft -= deltaX;
+ setStartX(e.touches[0].clientX);
+ } else {
+ const deltaY = startY - e.touches[0].clientY;
+ container.scrollTop += deltaY;
+ setStartY(e.touches[0].clientY);
+ }
+
+ e.preventDefault();
};
const handleMouseUp = () => {
@@ -481,6 +539,7 @@ function BSCategoryHorizontal(props) {
}
}
}, [SubcategorieData, templateData]);
+
useEffect(() => {
if (typeof searchData === 'string' && categoryData?.length > 0) {
const searchTerm = searchData?.trim()?.toLowerCase();
@@ -498,6 +557,7 @@ function BSCategoryHorizontal(props) {
setIndexVal(0);
}
}, [searchData, categoryData]);
+
const handleClick = async (e, ProdCat, index) => {
let data1 = {
compId: CompId,
@@ -558,6 +618,7 @@ function BSCategoryHorizontal(props) {
// await dispatch(getSelectedFavItems(data1));
await dispatch(ChangeFocusCatCard(!FocusStatus));
};
+
const handleClickOtherItems = async () => {
dispatch(ChangedraggingComponent(null));
dispatch(Changedragging(false));
@@ -566,8 +627,6 @@ function BSCategoryHorizontal(props) {
};
const handleClick2 = async () => {
- getTaxname();
- getUom();
setIndexVal(-1);
setAccessOther(true);
setIsModalOpen(true);
@@ -575,11 +634,13 @@ function BSCategoryHorizontal(props) {
let data = true;
await dispatch(changeAccessForOthers(data));
};
+
useEffect(() => {
if (AppId && CompId && BranchId && !sportsAppPreference) {
getselectCards();
}
}, [AppId, CompId, BranchId]);
+
const getselectCards = async () => {
let data = {
CompId: CompId,
@@ -598,20 +659,6 @@ function BSCategoryHorizontal(props) {
}
};
- const handleTouchStart = (e) => {
- setIsDragging(true);
- setStartX(e.touches[0].clientX);
- };
- const handleTouchMove = (e) => {
- if (!isDragging) return;
-
- const scrollContainer = scrollContainerRef.current;
- if (!scrollContainer) return;
-
- const deltaX = e.touches[0].clientX - startX;
- scrollContainer.scrollLeft -= deltaX;
- setStartX(e.touches[0].clientX);
- };
const handleTouchEnd = () => {
setIsDragging(false);
};
@@ -621,299 +668,31 @@ function BSCategoryHorizontal(props) {
}
}, [AutoLocatetofav]);
- const resetForm = () => {
- formRef?.current?.resetFields();
- formRef?.current?.setFieldsValue({
- TaxId: null,
- Size: null,
- UOM: null,
- MRP: null,
- ProdName: null,
- Quantity: null,
- });
- setSelectedTaxPercentage(null);
- setselectedUom(null);
- setselectedprod('');
- setEditState();
- setbillAmount(0);
- settaxAmount(0);
- settotalAmount(0);
- getselectCards();
- };
-
- const handleCancel = () => {
- setIsModalOpen(false);
- formRef?.current?.resetFields();
- resetForm();
- };
-
- useEffect(() => {
- if (isModalOpen) {
- holdnamedrop();
- }
- }, [isModalOpen]);
-
- const holdnamedrop = async () => {
- let data = {
- CompId: CompId,
- BranchId: BranchId,
- AppId: AppId,
- ProdType: 'O',
- };
- const respons = await dispatch(othernamedrop(data)).unwrap();
- setTabledropname(respons?.data?.data);
-
- const response = await dispatch(getUomData()).unwrap();
-
- // setTableuomname(response?.data?.data);
- // let UomId = response?.data?.data?.filter(
- // (item) => item.ConfigName?.toLowerCase() === 'pcs'
- // )?.[0]?.['ConfigId'];
- // formRef.current?.setFieldsValue({ UOM: UomId });
- // setselectedUom(UomId);
-
- const UomTypePreference = ApplicationPreferenceData?.find(
- (preference) => preference?.PreferredCatName === 'Product Uom'
- )?.PreferenceCatDetails;
- const UomPreference = response?.data?.data?.filter((item) =>
- UomTypePreference?.some?.(
- (e) =>
- e?.PreferredSubCatName?.toLowerCase() ==
- item?.ConfigName?.toLowerCase() && e?.PreferredStatus == 'Y'
- )
- );
-
- setTableuomname(UomPreference);
- let UomId = UomPreference?.filter(
- (item) => item.ConfigName?.toLowerCase() === 'pcs'
- )?.[0]?.['ConfigId'];
- formRef.current?.setFieldsValue({ UOM: UomId });
- setselectedUom(UomId);
-
- const responses = await dispatch(
- getAdmin({ CompId: CompId, AppId: AppId })
- ).unwrap();
- setTabletaxname(responses?.data?.data);
-
- const responsess = await dispatch(
- getsupplierBasedOnCmpIdBrIdAppId({
- CompId: CompId,
- AppId: AppId,
- BranchId: BranchId,
- })
- ).unwrap();
- let suppid = responsess?.data?.data?.filter(
- (item) => item.SuppName?.toLowerCase() === 'self'
- );
- setsupplierid(suppid?.[0]?.SuppId);
-
- const res = await dispatch(getproducttypeid()).unwrap();
- let productname = res?.data?.data?.filter(
- (item) => item.ConfigName === 'Others'
- );
- setprodtype(productname?.[0]?.ConfigId);
- };
-
const onComplete = useCallback(() => {
setMessageData(null);
setMessageType(null);
}, []);
- const onChangeFunction = (selectedValue) => {
- formRef.current?.setFieldsValue({ TaxId: selectedValue });
- setSelectedTaxPercentage(selectedValue);
- let data = {
- TaxId: selectedValue,
- Size: formRef.current?.getFieldsValue()?.Size,
- MRP: formRef.current?.getFieldsValue()?.MRP,
- Quantity: formRef.current?.getFieldsValue()?.Quantity,
- };
- handleValuesChange(data);
- };
- const getOptionLabel = (option, selected) => {
- return selected
- ? option.TaxPercentage + ' %'
- : option.TaxIdName + ' - ' + option.TaxPercentage + ' % ';
- };
-
- const onChangeuomFunction = (selectedValues) => {
- formRef.current?.setFieldsValue({ UOM: selectedValues });
- setselectedUom(selectedValues);
- };
-
- const onChangeprodFunction = (e) => {
- setAdd(true);
- setselectedprod(e);
- formRef.current?.setFieldsValue({
- UOM: Tableuomname?.filter(
- (item) => item.ConfigName?.toLowerCase() === 'pcs'
- )?.[0]?.['ConfigId'],
- });
- formRef.current?.setFieldsValue({ Quantity: 1 });
- formRef?.current?.setFieldsValue({ MRP: null });
- formRef?.current?.setFieldsValue({ Size: 1 });
- setselectedUom(
- Tableuomname?.filter(
- (item) => item.ConfigName?.toLowerCase() === 'pcs'
- )?.[0]?.['ConfigId']
- );
- setdefaultQuantity(1);
- setEditState();
- };
- const onAutocompleteChange = (selectedOption) => {
- setAdd(false);
- const pattern = /(.+?) \(\d*[^\d]+\)/;
- const matches = selectedOption?.value.match(pattern);
- const value = Tabledropname?.filter(
- (item) => item.ProdName === String(matches[1]?.trim())
- )?.[0]?.ProdId;
- let PreviousProduct = Tabledropname?.find(
- (item) => item?.ProdId === String(value)
- );
- setEditState(PreviousProduct);
- if (PreviousProduct) {
- formRef.current?.setFieldsValue({
- TaxId: PreviousProduct?.TaxId,
- UOM: PreviousProduct?.UOM,
- Size: PreviousProduct?.Size,
- MRP: PreviousProduct?.SellPrice,
- });
- setSelectedTaxPercentage(PreviousProduct?.TaxId);
- setselectedUom(PreviousProduct?.UOM);
-
- let data = {
- TaxId: PreviousProduct?.TaxId,
- Size: PreviousProduct?.Size,
- MRP: PreviousProduct?.SellPrice,
- Quantity: formRef.current?.getFieldsValue()?.Quantity,
- };
- handleValuesChange(data);
- }
- };
-
- var today = new Date();
- var formattedDate = today.toISOString()?.split('T')[0];
-
- const onFinish = async (values) => {
- const pattern = /(.+?) \(\d*[^\d]+\)/;
- const matches = selectedprod.match(pattern);
-
- let postData = {};
-
- let response = {};
-
- postData['CompId'] = CompId;
- postData['BranchId'] = BranchId;
- postData['AppId'] = AppId;
- postData['CreatedBy'] = UserId;
- postData['ProdType'] = prodtype;
- postData['QtyBasedPrice'] = 'N';
- postData['StockAvailable'] = 'N';
- postData['InwardDate'] = formattedDate;
- postData['SuppId'] = supplierid;
- postData['SellPrice'] = values.MRP;
- postData['AutoGenerateQr'] = 'N';
- postData['ProdName'] = matches ? matches : selectedprod;
- postData['TokenAvailable'] = 'N';
- postData['UOM'] = values.UOM;
- postData['Size'] = values.Size;
- postData['MRP'] = values.MRP;
- postData['TaxId'] = values.TaxId;
- postData['SinglePc'] = 'N';
- if (EditState) {
- const updatedData = {
- ...EditState,
- Quantity: parseInt(values.Quantity),
- SellPrice: values.MRP,
- OtherProduct: 'Others',
- SinglePc: 'N',
-
- };
-
- dispatch(changeothersdata(updatedData));
- setEditState();
- } else {
- response = await dispatch(postProductData(postData)).unwrap();
- if (response?.data?.statusCode != 0) {
- let othersdata = response?.data?.ProductDetails?.[0];
-
- const updatedData = {
- ...othersdata,
- Quantity: parseInt(values.Quantity),
- OtherProduct: 'Others',
- SinglePc: 'N',
- };
- dispatch(changeothersdata(updatedData));
-
- setMessageType('success');
- setMessageData(response?.data?.response);
- setIsModalOpen(false);
- } else {
- setMessageType('error');
-
- setMessageData(response?.data?.response);
- handleCancel();
- }
- }
- setselectedprod(null);
- handleCancel();
-
- formRef?.current?.resetFields();
- resetForm();
- // let data = {
- // CompId: CompId,
- // BranchId: BranchId,
- // AppId: AppId,
- // ProdType: 'O',
- // };
- // const respons = await dispatch(othernamedrop(data)).unwrap();
- // if (respons?.data?.statusCode == 1) {
- // setTabledropname(respons?.data?.data);
- // }
- };
-
- const handleValuesChange = (values) => {
- const { Size, MRP, TaxId, Quantity } = values;
- let taxpercentagevalue = Tabletaxname?.find((item) => item.TaxId === TaxId);
-
- const parsedSize = parseInt(Quantity);
- const parsedMRP = parseInt(MRP);
- const taxRate = parseFloat(taxpercentagevalue?.TaxPercentage);
-
- if (!isNaN(parsedSize) && !isNaN(parsedMRP)) {
- const newBillAmount = parsedSize * parsedMRP;
-
- const newTaxAmount =
- taxRate === 0 ? 0 : (newBillAmount * taxRate) / (100 + taxRate);
-
- const finalBillAmount = newBillAmount - newTaxAmount;
- const newTotalAmount = newBillAmount;
-
- setbillAmount(finalBillAmount.toFixed(2));
- settaxAmount(newTaxAmount.toFixed(2));
- settotalAmount(newTotalAmount.toFixed(2));
- } else {
- setbillAmount(0);
- settaxAmount(0);
- settotalAmount(0);
- }
- };
-
useEffect(() => {
const container = scrollContainerRef.current;
if (!container) return;
const handleWheel = (e) => {
- container.scrollLeft += e.deltaX;
+ if (categoryType === "horizontal") {
+ container.scrollLeft += e.deltaY || e.deltaX;
+ } else {
+ container.scrollTop += e.deltaY;
+ }
+
e.preventDefault();
};
- container.addEventListener('wheel', handleWheel);
+ container.addEventListener("wheel", handleWheel, { passive: false });
return () => {
- container.removeEventListener('wheel', handleWheel);
+ container.removeEventListener("wheel", handleWheel);
};
- }, [scrollContainerRef]);
+ }, [scrollContainerRef, categoryType]);
useEffect(() => {
// Accessing the DOM elements
@@ -932,21 +711,18 @@ function BSCategoryHorizontal(props) {
useEffect(() => {
const container = scrollContainerRef?.current;
+ if (!container) return;
- if (scrollContainerRef?.current?.scrollLeft == 0) {
- setShowLeftButton(false);
+ const { scrollLeft, scrollTop, scrollWidth, scrollHeight, clientWidth, clientHeight } = container;
+
+ if (categoryType === "horizontal") {
+ setShowLeftButton(scrollLeft > 0);
+ setShowRightButton(scrollLeft + clientWidth < scrollWidth);
} else {
- setShowLeftButton(true);
+ setShowUpButton(scrollTop > 0);
+ setShowDownButton(scrollTop + clientHeight < scrollHeight);
}
- if (
- container?.scrollLeft + container?.clientWidth ===
- container?.scrollWidth
- ) {
- setShowRightButton(false);
- } else {
- setShowRightButton(true);
- }
- }, [count]);
+ }, [count, categoryType]);
const lightenColor = (color, percent) => {
let r = parseInt(color.substring(1, 3), 16);
@@ -961,6 +737,7 @@ function BSCategoryHorizontal(props) {
// Return the lightened color as a HEX string
return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;
};
+
function darkenColor(hex, percent) {
if (!hex) return '#000000'; // Default to black if no color is provided
@@ -1004,7 +781,7 @@ function BSCategoryHorizontal(props) {
<>
{templateData?.BookingCategory?.[0] != 'Category5' ? (
@@ -1024,12 +801,12 @@ function BSCategoryHorizontal(props) {
padding: '0 0.5rem',
}}
>
- {showLeftButton && (
+ {(showLeftButton || showUpButton) && (
handleScrollClickLeft(-50, 0)}
+ onClick={categoryType === 'vertical' ? () => handleScrollClickUp(-50, 0) : () => handleScrollClickLeft(-50, 0)}
>
- ◄
+ {categoryType === 'vertical' ? '▲' : '◄'}
)}
@@ -1054,7 +831,7 @@ function BSCategoryHorizontal(props) {
{item.SmallIcon && categoryFunction?.Image && (
{(provided) => (
{item.SmallIcon && categoryFunction?.Image && (
![]()
- {showRightButton && (
+ {(showRightButton || showDownButton) && (
handleScrollClickRight(5, 5)}
+ onClick={categoryType === 'vertical' ? () => handleScrollClickDown(50, 0) : () => handleScrollClickRight(5, 5)}
>
- ►
+ {categoryType === 'vertical' ? '▼' : '►'}
)}
@@ -1546,434 +1324,7 @@ function BSCategoryHorizontal(props) {
>
)}
- {isModalOpen && (
-
-
-
-
- ({
- value: option.ConfigId,
- label: option.ConfigName,
- }))}
- placeholder="ConfigType"
- label={}
- optionsNames={{ value: "TypeId", label: "TypeName" }}
- className="field-DropDown"
- onChangeFunction={(selectedValues) =>
- onChangeuomFunction(selectedValues)
- }
- valueData={selectedUom}
- disabled={add || !EditState ? false : true}
- />
- */}
-
-
-
{
- await validateSafeInput(value);
- if (!value) {
- return Promise.resolve();
- }
-
- if (!/^\d+(\.\d{1,2})?$/.test(value)) {
- return Promise.reject(
- 'Enter valid Quantity (Max 2 decimal places)'
- );
- }
- if (parseFloat(value) === 0) {
- return Promise.reject(
- ' Quantity cannot be 0'
- );
- }
- if (value?.length > 10) {
- return Promise.reject(
- 'Quantity cannot exceed 10 digits'
- );
- } else {
- return Promise.resolve();
- }
- },
- },
- ]}
- >
- Quantity}
- valueData={defaultQuantity}
- autocomplete="off"
- onChange={(e) =>
- handleValuesChange({
- ...formRef.current.getFieldsValue(),
- Quantity: e.target.value,
- })
- }
- inputMode="decimal"
- onInput={(e) => {
- let cleanedValue = e.target.value.replace(
- /[^0-9.]/g,
- ''
- ); // Remove invalid characters
- const parts = cleanedValue.split('.');
-
- if (cleanedValue.startsWith('.')) {
- cleanedValue = '0' + cleanedValue;
- }
-
- e.target.value =
- parts.length > 2
- ? `${parts[0]}.${parts.slice(1).join('')}`
- : cleanedValue;
- }}
- isOnChange={defaultQuantity ? true : false}
- />
-
-
-
{
- await validateSafeInput(value);
-
- if (!value) {
- return Promise.resolve();
- }
-
- if (!/^\d+(\.\d{1,2})?$/.test(value)) {
- return Promise.reject(
- 'Enter valid MRP (Max 2 decimal places)'
- );
- }
-
- if (parseFloat(value) === 0) {
- return Promise.reject('MRP cannot be 0');
- }
-
- if (value?.length > 10) {
- return Promise.reject(
- 'MRP cannot exceed 10 digits'
- );
- }
-
- return Promise.resolve();
- },
- },
- ]}
- >
-
- Amount / Per Item
-
- }
- autocomplete="off"
- onChange={(e) =>
- handleValuesChange({
- ...formRef.current.getFieldsValue(),
- MRP: e.target.value,
- })
- }
- isOnChange={EditState ? true : false}
- inputMode="decimal"
- onInput={(e) => {
- let cleanedValue = e.target.value.replace(
- /[^0-9.]/g,
- ''
- ); // Remove invalid characters
- const parts = cleanedValue.split('.');
-
- if (cleanedValue.startsWith('.')) {
- cleanedValue = '0' + cleanedValue;
- }
-
- e.target.value =
- parts.length > 2
- ? `${parts[0]}.${parts.slice(1).join('')}`
- : cleanedValue;
- }}
- // disabled={!!EditState}
- />
-
-
-
-
-
Bill Amount {isNaN(billAmount) ? 0 : billAmount}
-
Tax Amount {isNaN(taxAmount) ? 0 : taxAmount}
-
Total Amount {isNaN(totalAmount) ? 0 : totalAmount}
-
-
- }
- onClick={() => onFinish()}
- />
-
-
-
- >
- }
- handleCancel={handleCancel}
- />
- )}
+
>
);
}
diff --git a/src/Pages/BookingScreen/Components/BSCategories/BSCategoryVertical.jsx b/src/Pages/BookingScreen/Components/BSCategories/BSCategoryVertical.jsx
index 355079d..e76cd88 100644
--- a/src/Pages/BookingScreen/Components/BSCategories/BSCategoryVertical.jsx
+++ b/src/Pages/BookingScreen/Components/BSCategories/BSCategoryVertical.jsx
@@ -1,12 +1,6 @@
-import React, { useEffect, useRef, useState, useCallback } from 'react';
+import { useEffect, useRef, useState, useCallback } from 'react';
import { useSelector, useDispatch } from 'react-redux';
-import { Form, Tooltip, AutoComplete } from 'antd';
import horizontal from '../../../../Images/others.png';
-import {
- InfoCircleOutlined,
- ArrowRightOutlined,
- SearchOutlined,
-} from '@ant-design/icons';
import '../../../../Styles/BookingScreen/Components/BSCategories/BSCategoryVertical.scss';
import {
SelectedGlobalCatgColorDetail,
@@ -21,7 +15,6 @@ import {
GlobalCategorieData,
changeProductCategorie,
getSelectedFavItems,
- changeothersdata,
GlobalFocusCatCard,
ChangeFocusCatCard,
changeProductSubCategorieProdCatfun,
@@ -46,28 +39,16 @@ import {
ChangeisFavClicked,
} from '../../../../Features/BookingScreen/BookingData/BookingData.js';
import catLogo from '../../../../Images/heart-outline-19.png';
-import {
- othernamedrop,
- getproducttypeid,
- getsupplierBasedOnCmpIdBrIdAppId,
- getUomData,
- getAdmin,
- postProductData,
-} from '../../../../Features/BookingScreen/BookingData/BookingData.js';
-import { DefaultModal } from '../../../../Components/Modal/DefaultModal';
-import { DropDowns } from '../../../../Components/Forms/DropDown.jsx';
-import { InputField } from '../../../../Components/Forms/InputField.jsx';
import { Messages } from '../../../../Components/Notifications/Messages';
-import Buttons from '../../../../Components/Forms/Buttons.jsx';
import WebFont from 'webfontloader';
import TooltipWrapper from '../../../../Components/Tooltip/Tooltip';
import { isMobile } from 'react-device-detect';
-import { validateSafeInput } from '../../../../Services/Others.js';
import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
import { BsSortAlphaDown } from 'react-icons/bs';
import { BsSortAlphaDownAlt } from 'react-icons/bs';
import { ApplicationPreferences } from '../../../../Features/BrachLogin/BranchLogin.js';
import { useDateStore } from '../../../../Features/BookingScreen/BookingData/DateStore.js';
+import OtherItemsModal from './OtherItemsModal.jsx';
function BSCategoryVertical(props) {
const formRef = useRef(null);
@@ -116,22 +97,9 @@ function BSCategoryVertical(props) {
const [accessToCard, setaccessToCard] = useState(false);
const [accessOther, setAccessOther] = useState(false);
const [isModalOpen, setIsModalOpen] = useState(false);
- const [EditState, setEditState] = useState();
const [messageType, setMessageType] = useState(null);
const [messageData, setMessageData] = useState(null);
- const [Tabledropname, setTabledropname] = useState();
- const [Tableuomname, setTableuomname] = useState();
- const [Tabletaxname, setTabletaxname] = useState();
- const [supplierid, setsupplierid] = useState();
- const [billAmount, setbillAmount] = useState(0);
- const [taxAmount, settaxAmount] = useState(0);
- const [totalAmount, settotalAmount] = useState(0);
- const [selectedTaxPercentage, setSelectedTaxPercentage] = useState();
- const [selectedUom, setselectedUom] = useState(null);
- const [selectedprod, setselectedprod] = useState('');
- const [prodtype, setprodtype] = useState([]);
- const [add, setAdd] = useState(false);
- const [defaultQuantity, setdefaultQuantity] = useState(1);
+
const [isSortClicked, setIsSortClicked] = useState(false);
const [ComboListdata, setComboListdata] = useState([]);
const Comboglobal = useSelector(GlobalCombosearch);
@@ -139,7 +107,6 @@ function BSCategoryVertical(props) {
const AppId = SessionData?.AppId;
const CompId = SessionData?.CompId;
const BranchId = SessionData?.BranchId;
- const UserId = SessionData?.UserId;
const [height, setHeight] = useState(window.innerHeight);
@@ -310,30 +277,6 @@ function BSCategoryVertical(props) {
}
}, [SelectedFontFamily]);
- const getTaxname = async () => {
- const responses = await dispatch(
- getAdmin({ CompId: CompId, AppId: AppId })
- ).unwrap();
- if (responses?.data?.statusCode === 1) {
- setTabletaxname(responses?.data?.data);
- let nilltax = responses?.data?.data?.find(
- (item) => item.TaxIdName?.toLowerCase() === 'nil'
- );
- onChangeFunction(nilltax?.TaxId);
- // setSelectedTaxPercentage(nilltax?.TaxId)
- // formRef.current?.setFieldsValue({TaxId:nilltax?.TaxId});
- formRef.current?.setFieldsValue({ Quantity: defaultQuantity });
- }
- };
- const getUom = async () => {
- const getUomResponse = await dispatch(getUomData()).unwrap();
- let UomId = getUomResponse?.data?.data?.filter(
- (item) => item.ConfigName?.toLowerCase() === 'pcs'
- )?.[0]?.['ConfigId'];
- formRef.current?.setFieldsValue({ UOM: UomId });
- setselectedUom(UomId);
- };
-
const scrollUp = () => {
const container = scrollContainerRef.current;
if (container.scrollTop > 0) {
@@ -374,10 +317,6 @@ function BSCategoryVertical(props) {
dispatch(ChangeCardAccess(accessToCard));
};
- const easeLinear = (t) => {
- return t;
- };
-
const handleClick = async (e, ProdCat, index) => {
let data = false;
setaccessToCard(false);
@@ -397,6 +336,7 @@ function BSCategoryVertical(props) {
await dispatch(changeProductSubCategorieProdCatfun());
}
};
+
const handleClick1 = async () => {
await dispatch(changeCombosearch(false));
let data = false;
@@ -424,20 +364,19 @@ function BSCategoryVertical(props) {
};
const handleClick2 = async () => {
- getTaxname();
- getUom();
setIndexVal(-1);
setAccessOther(true);
setIsModalOpen(true);
- let data = true;
- await dispatch(changeAccessForOthers(data));
+ await dispatch(changeAccessForOthers(true));
};
+
useEffect(() => {
if (AppId && CompId && BranchId) {
getselectCards();
}
}, [AppId, CompId, BranchId]);
+
const getselectCards = async () => {
let data = {
CompId: CompId,
@@ -483,289 +422,18 @@ function BSCategoryVertical(props) {
}
}, [AutoLocatetofav]);
- const resetForm = () => {
- formRef?.current?.resetFields();
- formRef?.current?.setFieldsValue({
- TaxId: null,
- Size: null,
- UOM: null,
- MRP: null,
- ProdName: null,
- Quantity: null,
- });
- setSelectedTaxPercentage(null);
- setselectedUom(null);
- setselectedprod('');
- setEditState();
- setbillAmount(0);
- settaxAmount(0);
- settotalAmount(0);
- getselectCards();
- };
-
- const handleCancel = () => {
- setIsModalOpen(false);
- formRef?.current?.resetFields();
- resetForm();
- };
-
- useEffect(() => {
- if (isModalOpen) {
- holdnamedrop();
- }
- }, [isModalOpen]);
-
- const holdnamedrop = async () => {
- let data = {
- CompId: CompId,
- BranchId: BranchId,
- AppId: AppId,
- ProdType: 'O',
- };
- const respons = await dispatch(othernamedrop(data)).unwrap();
- setTabledropname(respons?.data?.data);
-
- const response = await dispatch(getUomData()).unwrap();
-
- const UomTypePreference = ApplicationPreferenceData?.find(
- (preference) => preference?.PreferredCatName === 'Product Uom'
- )?.PreferenceCatDetails;
- const UomPreference = response?.data?.data?.filter((item) =>
- UomTypePreference?.some?.(
- (e) =>
- e?.PreferredSubCatName?.toLowerCase() ==
- item?.ConfigName?.toLowerCase() && e?.PreferredStatus == 'Y'
- )
- );
-
- setTableuomname(UomPreference);
- let UomId = UomPreference?.filter(
- (item) => item.ConfigName?.toLowerCase() === 'pcs'
- )?.[0]?.['ConfigId'];
- formRef.current?.setFieldsValue({ UOM: UomId });
- setselectedUom(UomId);
-
- const responses = await dispatch(
- getAdmin({ CompId: CompId, AppId: AppId })
- ).unwrap();
- setTabletaxname(responses?.data?.data);
-
- const responsess = await dispatch(
- getsupplierBasedOnCmpIdBrIdAppId({
- CompId: CompId,
- AppId: AppId,
- BranchId: BranchId,
- })
- ).unwrap();
- let suppid = responsess?.data?.data?.filter(
- (item) => item.SuppName?.toLowerCase() === 'self'
- );
- setsupplierid(suppid?.[0]?.SuppId);
-
- const res = await dispatch(getproducttypeid()).unwrap();
- let productname = res?.data?.data?.filter(
- (item) => item.ConfigName === 'Others'
- );
- setprodtype(productname?.[0]?.ConfigId);
- };
-
const onComplete = useCallback(() => {
setMessageData(null);
setMessageType(null);
}, []);
- const onChangeFunction = (selectedValue) => {
- formRef.current?.setFieldsValue({ TaxId: selectedValue });
- setSelectedTaxPercentage(selectedValue);
- let data = {
- TaxId: selectedValue,
- Size: formRef.current?.getFieldsValue()?.Size,
- MRP: formRef.current?.getFieldsValue()?.MRP,
- Quantity: formRef.current?.getFieldsValue()?.Quantity,
- };
- handleValuesChange(data);
- };
- const getOptionLabel = (option, selected) => {
- return selected
- ? option.TaxPercentage + ' %'
- : option.TaxIdName + ' - ' + option.TaxPercentage + ' % ';
- };
-
- const onChangeuomFunction = (selectedValues) => {
- formRef.current?.setFieldsValue({ UOM: selectedValues });
- setselectedUom(selectedValues);
- };
-
- const onChangeprodFunction = (e) => {
- setAdd(true);
- setselectedprod(e);
- formRef.current?.setFieldsValue({
- UOM: Tableuomname?.filter(
- (item) => item.ConfigName?.toLowerCase() === 'pcs'
- )?.[0]?.['ConfigId'],
- });
- formRef.current?.setFieldsValue({ Quantity: 1 });
- formRef?.current?.setFieldsValue({ MRP: null });
- formRef?.current?.setFieldsValue({ Size: 1 });
- setselectedUom(
- Tableuomname?.filter(
- (item) => item.ConfigName?.toLowerCase() === 'pcs'
- )?.[0]?.['ConfigId']
- );
- setdefaultQuantity(1);
- setEditState();
- };
- const onAutocompleteChange = (selectedOption) => {
- setAdd(false);
- const pattern = /(.+?) \(\d*[^\d]+\)/;
- const matches = selectedOption?.value.match(pattern);
- const value = Tabledropname?.filter(
- (item) => item.ProdName === String(matches[1]?.trim())
- )?.[0]?.ProdId;
- let PreviousProduct = Tabledropname?.find(
- (item) => item?.ProdId === String(value)
- );
-
- setEditState(PreviousProduct);
- if (PreviousProduct) {
- formRef.current?.setFieldsValue({
- TaxId: PreviousProduct?.TaxId,
- UOM: PreviousProduct?.UOM,
- Size: PreviousProduct?.Size,
- MRP: PreviousProduct?.SellPrice,
- });
- setSelectedTaxPercentage(PreviousProduct?.TaxId);
- setselectedUom(PreviousProduct?.UOM);
-
- let data = {
- TaxId: PreviousProduct?.TaxId,
- Size: PreviousProduct?.Size,
- MRP: PreviousProduct?.SellPrice,
- Quantity: formRef.current?.getFieldsValue()?.Quantity,
- };
- handleValuesChange(data);
- }
- };
-
- var today = new Date();
- var formattedDate = today.toISOString()?.split('T')[0];
-
- const onFinish = async (values) => {
- let postData = {};
- const pattern = /(.+?) \(\d*[^\d]+\)/;
- const matches = selectedprod.match(pattern);
-
- let response = {};
-
- postData['CompId'] = CompId;
- postData['BranchId'] = BranchId;
- postData['AppId'] = AppId;
- postData['CreatedBy'] = UserId;
- postData['ProdType'] = prodtype;
- postData['QtyBasedPrice'] = 'N';
- postData['StockAvailable'] = 'N';
- postData['InwardDate'] = formattedDate;
- postData['SuppId'] = supplierid;
- postData['SellPrice'] = values.MRP;
- postData['AutoGenerateQr'] = 'N';
- postData['ProdName'] = matches ? matches : selectedprod;
- postData['TokenAvailable'] = 'N';
- postData['UOM'] = values.UOM;
- postData['Size'] = values.Size;
- postData['MRP'] = values.MRP;
- postData['TaxId'] = values.TaxId;
- postData['SinglePc'] = 'N';
- if (EditState) {
- const updatedData = {
- ...EditState,
- Quantity: parseInt(values.Quantity),
- SellPrice: values.MRP,
- OtherProduct: 'Others',
- SinglePc: 'N',
- };
- dispatch(changeothersdata(updatedData));
- setEditState();
- } else {
- response = await dispatch(postProductData(postData)).unwrap();
- if (response?.data?.statusCode != 0) {
- let othersdata = response?.data?.ProductDetails?.[0];
-
- const updatedData = {
- ...othersdata,
- Quantity: parseInt(values.Quantity),
- OtherProduct: 'Others',
- SinglePc: 'N',
- };
- dispatch(changeothersdata(updatedData));
-
- setMessageType('success');
- setMessageData(response?.data?.response);
- setIsModalOpen(false);
- } else {
- setMessageType('error');
-
- setMessageData(response?.data?.response);
- handleCancel();
- }
- }
- setselectedprod(null);
- handleCancel();
-
- formRef?.current?.resetFields();
- resetForm();
- // let data = {
- // CompId: CompId,
- // BranchId: BranchId,
- // AppId: AppId,
- // ProdType: 'O',
- // };
- // const respons = await dispatch(othernamedrop(data)).unwrap();
- // if (respons?.data?.statusCode == 1) {
- // setTabledropname(respons?.data?.data);
- // }
- };
-
- const handleValuesChange = (values) => {
- const { Size, MRP, TaxId, Quantity } = values;
- let taxpercentagevalue = Tabletaxname?.find((item) => item.TaxId === TaxId);
-
- const parsedSize = parseInt(Quantity);
- const parsedMRP = parseInt(MRP);
- const taxRate = parseFloat(taxpercentagevalue?.TaxPercentage);
-
- if (!isNaN(parsedSize) && !isNaN(parsedMRP)) {
- const newBillAmount = parsedSize * parsedMRP;
-
- const newTaxAmount =
- taxRate === 0 ? 0 : (newBillAmount * taxRate) / (100 + taxRate);
-
- const finalBillAmount = newBillAmount - newTaxAmount;
- const newTotalAmount = newBillAmount;
-
- setbillAmount(finalBillAmount.toFixed(2));
- settaxAmount(newTaxAmount.toFixed(2));
- settotalAmount(newTotalAmount.toFixed(2));
- } else {
- setbillAmount(0);
- settaxAmount(0);
- settotalAmount(0);
- }
- };
useEffect(() => {
function handleResize() {
setHeight(window.innerHeight);
}
window.addEventListener('resize', handleResize);
return () => window.removeEventListener('resize', handleResize);
- }, [height]);
-
- useEffect(() => {
- function handleResize() {
- setHeight(window.innerHeight);
- }
- window.addEventListener('resize', handleResize);
- return () => window.removeEventListener('resize', handleResize);
- }, [categoryData]);
+ }, [height, categoryData]);
// ...
@@ -785,14 +453,6 @@ function BSCategoryVertical(props) {
};
}, [scrollContainerRef]);
- useEffect(() => {
- function handleResize() {
- setHeight(window.innerheight);
- }
- window.addEventListener('resize', handleResize);
- return () => window.removeEventListener('resize', handleResize);
- }, [height, categoryData]);
-
const maindiv = document.getElementById('mainDiv');
const count = maindiv?.querySelectorAll('div');
@@ -828,6 +488,7 @@ function BSCategoryVertical(props) {
// Return the lightened color as a HEX string
return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;
};
+
function darkenColor(hex, percent) {
if (!hex) return '#000000'; // Default to black if no color is provided
@@ -901,336 +562,8 @@ function BSCategoryVertical(props) {
onComplete={onComplete}
/>
)}
- {isModalOpen && (
-
-
-
- >
- }
- handleCancel={handleCancel}
- />
- )}
+ {isModalOpen && }
{ },
+ getselectCards = () => { }
+}) => {
+
+ const formRef = useRef(null);
+
+ const dispatch = useDispatch();
+
+ const AppId = getSession('AppId');
+ const CompId = getSession('CompId');
+ const BranchId = getSession('BranchId');
+ const UserId = getSession('UserId');
+
+ const ApplicationPreferenceData = useSelector(ApplicationPreferences);
+
+ const [billAmount, setBillAmount] = useState(0);
+ const [prevOtherItems, setPrevOtherItems] = useState([]);
+ const [uomConfigs, setUomConfigs] = useState([]);
+ const [taxAmount, setTaxAmount] = useState(0);
+ const [totalAmount, setTotalAmount] = useState(0);
+ const [taxData, setTaxData] = useState([]);
+ const [selectedTaxPercentage, setSelectedTaxPercentage] = useState(null);
+ const [selectedUom, setSelectedUom] = useState(null);
+ const [selectedProduct, setSelectedProduct] = useState(null);
+ const [editState, setEditState] = useState(false);
+ const [prodType, setProdType] = useState(null);
+ const [add, setAdd] = useState(false);
+ const [supplierId, setSupplierId] = useState(null);
+ const [messageType, setMessageType] = useState(null);
+ const [messageData, setMessageData] = useState(null);
+ const [defaultQuantity, setDefaultQuantity] = useState(1);
+ console.log(formRef?.current?.getFieldsValue(), "formRef", defaultQuantity, taxData)
+
+ const getOptionLabel = (option, selected) => {
+ return selected
+ ? option.TaxPercentage + ' %'
+ : option.TaxIdName + ' - ' + option.TaxPercentage + ' % ';
+ };
+
+ const handleTaxChange = (selectedValue) => {
+ formRef.current?.setFieldsValue({ TaxId: selectedValue });
+ setSelectedTaxPercentage(selectedValue);
+ let data = {
+ TaxId: selectedValue,
+ Size: formRef.current?.getFieldsValue()?.Size,
+ MRP: formRef.current?.getFieldsValue()?.MRP,
+ Quantity: formRef.current?.getFieldsValue()?.Quantity,
+ };
+ handleValuesChange(data);
+ };
+
+ const handleProductChange = (e) => {
+ setAdd(true);
+ setSelectedProduct(e);
+ formRef.current?.setFieldsValue({
+ UOM: uomConfigs?.filter(
+ (item) => item.ConfigName?.toLowerCase() === 'pcs'
+ )?.[0]?.['ConfigId'],
+ });
+ formRef.current?.setFieldsValue({ Quantity: 1 });
+ formRef?.current?.setFieldsValue({ MRP: null });
+ formRef?.current?.setFieldsValue({ Size: 1 });
+ setSelectedUom(
+ uomConfigs?.filter(
+ (item) => item.ConfigName?.toLowerCase() === 'pcs'
+ )?.[0]?.['ConfigId']
+ );
+ setDefaultQuantity(1);
+ setEditState(false);
+ };
+
+ const handleUOMChange = (selectedValues) => {
+ formRef.current?.setFieldsValue({ UOM: selectedValues });
+ setSelectedUom(selectedValues);
+ };
+
+ const handleValuesChange = (values) => {
+ const { Size, MRP, TaxId, Quantity } = values;
+ let taxPercentageValue = taxData?.find((item) => item.TaxId === TaxId);
+
+ const parsedSize = parseInt(Quantity);
+ const parsedMRP = parseInt(MRP);
+ const taxRate = parseFloat(taxPercentageValue?.TaxPercentage);
+
+ if (!isNaN(parsedSize) && !isNaN(parsedMRP)) {
+ const newBillAmount = parsedSize * parsedMRP;
+
+ const newTaxAmount =
+ taxRate === 0 ? 0 : (newBillAmount * taxRate) / (100 + taxRate);
+
+ const finalBillAmount = newBillAmount - newTaxAmount;
+ const newTotalAmount = newBillAmount;
+
+ setBillAmount(finalBillAmount.toFixed(2));
+ setTaxAmount(newTaxAmount.toFixed(2));
+ setTotalAmount(newTotalAmount.toFixed(2));
+ } else {
+ setBillAmount(0);
+ setTaxAmount(0);
+ setTotalAmount(0);
+ }
+ };
+
+ useEffect(() => {
+ if (!open) return;
+ fetchOtherProductsData();
+ }, [open]);
+
+ const fetchOtherProductsData = async () => {
+ try {
+ const data = {
+ CompId,
+ BranchId,
+ AppId,
+ ProdType: "O",
+ };
+
+ const [
+ otherProducts,
+ uomResponse,
+ taxResponse,
+ supplierResponse,
+ prodTypeResponse
+ ] = await Promise.all([
+ dispatch(othernamedrop(data)).unwrap(),
+ dispatch(getUomData()).unwrap(),
+ dispatch(getAdmin({ CompId, AppId })).unwrap(),
+ dispatch(getsupplierBasedOnCmpIdBrIdAppId({ CompId, AppId, BranchId })).unwrap(),
+ dispatch(getproducttypeid()).unwrap()
+ ]);
+
+ /* OTHER PRODUCTS */
+ setPrevOtherItems(otherProducts?.data?.data || []);
+
+ /* UOM */
+ const UomTypePreference = ApplicationPreferenceData?.find(
+ (preference) => preference?.PreferredCatName === "Product Uom"
+ )?.PreferenceCatDetails;
+
+ const UomPreference = uomResponse?.data?.data?.filter((item) =>
+ UomTypePreference?.some(
+ (e) =>
+ e?.PreferredSubCatName?.toLowerCase() ===
+ item?.ConfigName?.toLowerCase() &&
+ e?.PreferredStatus === "Y"
+ )
+ );
+
+ setUomConfigs(UomPreference || []);
+
+ const pcsUom = UomPreference?.find(
+ (item) => item.ConfigName?.toLowerCase() === "pcs"
+ );
+
+ formRef.current?.setFieldsValue({ UOM: pcsUom?.ConfigId });
+ setSelectedUom(pcsUom?.ConfigId);
+
+ /* TAX */
+ if (taxResponse?.data?.statusCode === 1) {
+ const taxList = taxResponse?.data?.data || [];
+ setTaxData(taxList);
+
+ const nilTax = taxList.find(
+ (item) => item.TaxIdName?.toLowerCase() === "nil"
+ );
+
+ handleTaxChange(nilTax?.TaxId);
+ formRef.current?.setFieldsValue({ Quantity: defaultQuantity });
+ } else {
+ setTaxData([]);
+ }
+
+ /* SUPPLIER */
+ const supp = supplierResponse?.data?.data?.find(
+ (item) => item.SuppName?.toLowerCase() === "self"
+ );
+
+ setSupplierId(supp?.SuppId || "");
+
+ /* PRODUCT TYPE */
+ const prodType = prodTypeResponse?.data?.data?.find(
+ (item) => item.ConfigName === "Others"
+ );
+
+ setProdType(prodType?.ConfigId);
+
+ } catch (error) {
+ console.error("Failed to load Other Items data", error);
+ }
+ };
+
+ const handleAutoCompleteChange = (selectedOption) => {
+ setAdd(false);
+ const pattern = /(.+?) \(\d*[^\d]+\)/;
+ const matches = selectedOption?.value?.match(pattern);
+ const value = prevOtherItems?.filter(
+ (item) => item.ProdName === String(matches[1]?.trim())
+ )?.[0]?.ProdId;
+ const previousProduct = prevOtherItems?.find(
+ (item) => item?.ProdId === String(value)
+ );
+
+ setEditState(previousProduct);
+ if (previousProduct) {
+ formRef.current?.setFieldsValue({
+ TaxId: previousProduct?.TaxId,
+ UOM: previousProduct?.UOM,
+ Size: previousProduct?.Size,
+ MRP: previousProduct?.SellPrice,
+ });
+ setSelectedTaxPercentage(previousProduct?.TaxId);
+ setSelectedUom(previousProduct?.UOM);
+
+ let data = {
+ TaxId: previousProduct?.TaxId,
+ Size: previousProduct?.Size,
+ MRP: previousProduct?.SellPrice,
+ Quantity: formRef.current?.getFieldsValue()?.Quantity,
+ };
+ handleValuesChange(data);
+ }
+ };
+
+ const resetForm = async () => {
+ formRef?.current?.resetFields();
+ formRef?.current?.setFieldsValue({
+ TaxId: null,
+ Size: null,
+ UOM: null,
+ MRP: null,
+ ProdName: null,
+ Quantity: null,
+ });
+ setSelectedTaxPercentage(null);
+ setSelectedUom(null);
+ setSelectedProduct(null);
+ setEditState(false);
+ setBillAmount(0);
+ setTaxAmount(0);
+ setTotalAmount(0);
+ await getselectCards();
+ };
+
+ const today = new Date();
+ const formattedDate = today.toISOString()?.split('T')[0];
+
+ const handleSubmit = async (values) => {
+ let postData = {};
+ const pattern = /(.+?) \(\d*[^\d]+\)/;
+ const matches = selectedProduct?.match(pattern);
+
+ postData['CompId'] = CompId;
+ postData['BranchId'] = BranchId;
+ postData['AppId'] = AppId;
+ postData['CreatedBy'] = UserId;
+ postData['ProdType'] = prodType;
+ postData['QtyBasedPrice'] = 'N';
+ postData['StockAvailable'] = 'N';
+ postData['InwardDate'] = formattedDate;
+ postData['SuppId'] = supplierId;
+ postData['SellPrice'] = values.MRP;
+ postData['AutoGenerateQr'] = 'N';
+ postData['ProdName'] = matches ? matches : selectedProduct;
+ postData['TokenAvailable'] = 'N';
+ postData['UOM'] = values.UOM;
+ postData['Size'] = values.Size;
+ postData['MRP'] = values.MRP;
+ postData['TaxId'] = values.TaxId;
+ postData['SinglePc'] = 'N';
+ if (editState) {
+ const updatedData = {
+ ...editState,
+ Quantity: parseInt(values.Quantity),
+ SellPrice: values.MRP,
+ OtherProduct: 'Others',
+ SinglePc: 'N',
+ };
+ dispatch(changeothersdata(updatedData));
+ setEditState(null);
+ await handleCancel();
+ } else {
+ const response = await dispatch(postProductData(postData)).unwrap();
+ if (response?.data?.statusCode != 0) {
+ let othersdata = response?.data?.ProductDetails?.[0];
+
+ const updatedData = {
+ ...othersdata,
+ Quantity: parseInt(values.Quantity),
+ OtherProduct: 'Others',
+ SinglePc: 'N',
+ };
+ dispatch(changeothersdata(updatedData));
+
+ setMessageType('success');
+ setMessageData(response?.data?.response);
+ await handleCancel();
+ } else {
+ setMessageType('error');
+ setMessageData(response?.data?.response);
+ }
+ }
+ };
+
+ const handleCancel = async () => {
+ setOpen(false);
+ formRef?.current?.resetFields();
+ await resetForm();
+ };
+
+ const onComplete = useCallback(() => {
+ setMessageData(null)
+ setMessageType(null)
+ }, [])
+
+ return (
+ <>
+
+
+
+
+ >
+ }
+ handleCancel={handleCancel}
+ />
+ >
+ )
+};
+
+export default OtherItemsModal;
\ No newline at end of file
diff --git a/src/Pages/BookingScreen/Components/BSNavbar/BSNavbar2.jsx b/src/Pages/BookingScreen/Components/BSNavbar/BSNavbar2.jsx
index 9e5c595..683f1a0 100644
--- a/src/Pages/BookingScreen/Components/BSNavbar/BSNavbar2.jsx
+++ b/src/Pages/BookingScreen/Components/BSNavbar/BSNavbar2.jsx
@@ -212,6 +212,7 @@ const BSNavbar2 = () => {
?.ScreenStatus ?? 'Open';
const navbarOptions = BSLayout1Data?.BookingNavbar?.[1];
const PreferenceDatas = useSelector(PreferenceData);
+
const userProfileData = useSelector(userDataByUserId);
const [preOrderOpen, setPreOrderOpen] = useState(false);
const [preOrderhiseandShow, setpreOrderhiseandShow] = useState(false);
diff --git a/src/Pages/BookingScreen/Components/BSNavbar/BSNavbar3.jsx b/src/Pages/BookingScreen/Components/BSNavbar/BSNavbar3.jsx
index 57007df..5afeafa 100644
--- a/src/Pages/BookingScreen/Components/BSNavbar/BSNavbar3.jsx
+++ b/src/Pages/BookingScreen/Components/BSNavbar/BSNavbar3.jsx
@@ -187,6 +187,7 @@ const BSNavbar3 = ({ optionNames }) => {
const userProfileData = useSelector(userDataByUserId);
const appPreferences = useSelector(ApplicationPreferences);
const preferences = useSelector(PreferenceData);
+ console.log(preferences, "preferencespreferences")
const orderType = useSelector(GlobalOrderType);
const bookingType = useSelector(GlobalBookingType, shallowEqual);
const layoutData = useSelector(getTemplateData);
@@ -712,43 +713,43 @@ const BSNavbar3 = ({ optionNames }) => {
(item) =>
item?.FeatureAddonName?.toLowerCase() !== 'weight scale'
) && (
-
-
-
- )}
+
+
+
+ )}
{FeatureAddonData?.FeatureDtls?.find(
(item) => item?.FeatureAddonName?.toLowerCase() === 'preorder'
) && (
-
-
-
- {
- openPreOrder();
- }}
- HandleClose={preOrderHandleclose}
- />
-
-
-
- )}
+
+
+
+ {
+ openPreOrder();
+ }}
+ HandleClose={preOrderHandleclose}
+ />
+
+
+
+ )}
>
)}
{preOrderOpen && (
@@ -818,16 +819,16 @@ const BSNavbar3 = ({ optionNames }) => {
(item) =>
item?.FeatureAddonName?.toLowerCase() === 'customer display'
) && (
-
-
-
-
-
- )}
+
+
+
+
+
+ )}
{reprintOption && (
{
pointerEvents: orderType === 'Failed' ? 'none' : 'auto',
}}
>
-
{}}>
+
diff --git a/src/Pages/BookingScreen/Components/UtillComponents/AllSalesPageSettings.jsx b/src/Pages/BookingScreen/Components/UtillComponents/AllSalesPageSettings.jsx
index 849e2b3..b0edb0e 100644
--- a/src/Pages/BookingScreen/Components/UtillComponents/AllSalesPageSettings.jsx
+++ b/src/Pages/BookingScreen/Components/UtillComponents/AllSalesPageSettings.jsx
@@ -5,6 +5,7 @@ import TooltipWrapper from '../../../../Components/Tooltip/Tooltip';
import './AllSalesPageSettings.scss';
import TableHeadersetting from './TableHeadersetting';
import PaymentOptions from '../../../Payment/PaymentOptions/PaymentOptions';
+import PreferenceList from '../../../Preference/PreferenceList';
const AllSalesPageSettings = () => {
const [settingModal, setsettingModal] = useState(false);
@@ -38,6 +39,7 @@ const AllSalesPageSettings = () => {
{
>
Table
+
ComponentSelect('Preference')}
+ >
+ Preference
+
-
+
{selectedComponent == 'Payment' && (
@@ -69,6 +77,10 @@ const AllSalesPageSettings = () => {
{selectedComponent === 'Table' && (
)}
+ {selectedComponent === 'Preference' && (
+
+ )}
+
diff --git a/src/Pages/BookingScreen/Components/UtillComponents/AllSalesPageSettings.scss b/src/Pages/BookingScreen/Components/UtillComponents/AllSalesPageSettings.scss
index 06f24ca..097cb91 100644
--- a/src/Pages/BookingScreen/Components/UtillComponents/AllSalesPageSettings.scss
+++ b/src/Pages/BookingScreen/Components/UtillComponents/AllSalesPageSettings.scss
@@ -92,14 +92,20 @@
scrollbar-width: thin;
padding-right: 10px;
overflow: auto;
+
.option-maindiv {
display: flex;
align-items: flex-start;
flex-wrap: wrap;
}
+
.ant-checkbox-wrapper {
padding: 8px !important;
}
+
+ &.no-overflow {
+ overflow: hidden !important;
+ }
}
.SettingsListSwitchBTN {
@@ -114,6 +120,7 @@
padding: 5px;
border-radius: 4px;
height: 80vh;
+
div {
width: 100%;
background-color: #fff;
@@ -130,6 +137,7 @@
&:hover {
background-color: #d1d8ec;
}
+
&.selected {
background-color: #ffffff;
color: #2563eb;
@@ -153,6 +161,7 @@
gap: 4px;
cursor: pointer;
border-radius: 6px;
+
svg {
color: #fff !important;
font-weight: 500;
@@ -177,8 +186,35 @@
flex-wrap: wrap;
margin-top: 10px;
}
+
.selctfontBackInput {
display: flex;
flex-direction: column;
gap: 4px;
}
+
+.sales-setting-modal {
+ .PreferencesBTN {
+ // bottom: 40px !important;
+ // right: 160px !important;
+ position: absolute;
+ }
+
+ .SettingsComponentDiv {
+ .formHeader {
+ display: none;
+ }
+ }
+
+ .menu-and-preferences {
+ gap: 10px !important;
+ }
+
+ .preferences-list {
+ margin-bottom: 5rem;
+ }
+
+ .modal-menu {
+ text-decoration: none;
+ }
+}
\ No newline at end of file
diff --git a/src/Pages/BookingScreen/Template/BSLayout1/BSLayout1.jsx b/src/Pages/BookingScreen/Template/BSLayout1/BSLayout1.jsx
index b0c79e9..4d9ee66 100644
--- a/src/Pages/BookingScreen/Template/BSLayout1/BSLayout1.jsx
+++ b/src/Pages/BookingScreen/Template/BSLayout1/BSLayout1.jsx
@@ -101,10 +101,10 @@ const ComboSalesBillTable = lazy(
() =>
import('../../Components/BSBillingTables/ComboSalesBillTable/ComboSalesBillTable.jsx')
);
-const SalesCountComponent = lazy(() => import('../SalesCountComponent.jsx'));
+const SalesCountComponent = lazy(() => import('../SalesCountComponent.jsx'));
// const PlanExpireNotification = lazy(() => import('../PlanExpireNotification.jsx'));
import PlanExpireNotification from '../PlanExpireNotification.jsx';
-
+
const BSLayout1 = () => {
const dispatch = useDispatch();
@@ -185,9 +185,9 @@ const BSLayout1 = () => {
? '575px'
: '595px'
: (UserType != 'Super Admin' &&
- UserType != 'Super Admin User' &&
- AppExpDate?.RemainingDays <= 7) ||
- AppExpDate?.PlanType?.toLowerCase() === 'extend'
+ UserType != 'Super Admin User' &&
+ AppExpDate?.RemainingDays <= 7) ||
+ AppExpDate?.PlanType?.toLowerCase() === 'extend'
? '96vh'
: '99vh';
@@ -317,9 +317,9 @@ const BSLayout1 = () => {
};
const handleInvoiceClose = () => {
setListOfInvoices(false);
- };
- return (
-
}>
+ };
+ return (
+
}>
<>
{
{
GlobalsalesDetailData={GlobalsalesDetailData}
/>
)}
-
-
+
+
{
{BookingBilling == 'Billing8' &&
}
{BSLayout1Data?.BookingBilling?.[0] ==
'StandardBilling' && (
-
-
-
- )}
+
+
+
+ )}
>
)}
@@ -671,7 +671,7 @@ const BSLayout1 = () => {
/>
)}
>
-
+
);
};
diff --git a/src/Pages/BookingScreen/Template/BSLayout4/BSLayout4.jsx b/src/Pages/BookingScreen/Template/BSLayout4/BSLayout4.jsx
index b957b5d..7d07c5a 100644
--- a/src/Pages/BookingScreen/Template/BSLayout4/BSLayout4.jsx
+++ b/src/Pages/BookingScreen/Template/BSLayout4/BSLayout4.jsx
@@ -6,8 +6,8 @@ import { isMobile } from 'react-device-detect';
import BookingCloseIcon from '../../Components/UtillComponents/BookingCloseIcon.jsx';
const BSNavbar1 = lazy(() => import('../../Components/BSNavbar/BSNavbar1'));
const BSNavbar2 = lazy(() => import('../../Components/BSNavbar/BSNavbar2'));
-const CategoryVertical = lazy(
- () => import('../../Components/BSCategories/BSCategoryVertical')
+const CategoryHorizontal = lazy(
+ () => import('../../Components/BSCategories/BSCategoryHorizontal')
);
const BSItemCard = lazy(
() => import('../../Components/BSItemCards/BSItemCard')
@@ -195,9 +195,9 @@ const BSLayout4 = () => {
? '575px'
: '590px'
: (UserType != 'Super Admin' &&
- UserType != 'Super Admin User' &&
- AppExpDate?.RemainingDays <= 7) ||
- AppExpDate?.PlanType?.toLowerCase() === 'extend'
+ UserType != 'Super Admin User' &&
+ AppExpDate?.RemainingDays <= 7) ||
+ AppExpDate?.PlanType?.toLowerCase() === 'extend'
? '96vh'
: '99vh';
const [ListOfInvoices, setListOfInvoices] = useState(false);
@@ -497,12 +497,13 @@ const BSLayout4 = () => {
}}
>
{!OtherServicesglobal && (
-
)}
{OtherServicesglobal && (
@@ -612,7 +613,7 @@ const BSLayout4 = () => {
/>
)}
>
-
+
);
};
diff --git a/src/Pages/BookingScreen/Template/BSLayout5/BSLayout5.jsx b/src/Pages/BookingScreen/Template/BSLayout5/BSLayout5.jsx
index 486209e..c0850ff 100644
--- a/src/Pages/BookingScreen/Template/BSLayout5/BSLayout5.jsx
+++ b/src/Pages/BookingScreen/Template/BSLayout5/BSLayout5.jsx
@@ -38,7 +38,9 @@ const BSBillingTable7 = lazy(
import('../../Components/BSBillingTables/BSBillingTable7/BSBillingTable7Overall.jsx')
);
import BSItemCard from '../../Components/BSItemCards/BSItemCard';
-import CategoryVertical from '../../Components/BSCategories/BSCategoryVertical';
+const CategoryHorizontal = lazy(
+ () => import('../../Components/BSCategories/BSCategoryHorizontal')
+);
import { dynamicComponentProps } from '../DynamicComponentProps.js';
import {
GlobalPricingAppPricingName,
@@ -160,9 +162,9 @@ const BSLayout5 = () => {
? '580px'
: '590px'
: (UserType != 'Super Admin' &&
- UserType != 'Super Admin User' &&
- AppExpDate?.RemainingDays <= 7) ||
- AppExpDate?.PlanType?.toLowerCase() === 'extend'
+ UserType != 'Super Admin User' &&
+ AppExpDate?.RemainingDays <= 7) ||
+ AppExpDate?.PlanType?.toLowerCase() === 'extend'
? '96vh'
: '99vh';
const [ListOfInvoices, setListOfInvoices] = useState(false);
@@ -529,12 +531,13 @@ const BSLayout5 = () => {
}}
>
{!OtherServicesglobal && (
-
)}
{OtherServicesglobal && (
@@ -603,7 +606,7 @@ const BSLayout5 = () => {
/>
)}
>
-
+
);
};
diff --git a/src/Pages/Preference/PreferenceList.jsx b/src/Pages/Preference/PreferenceList.jsx
index 318a887..3df82f5 100644
--- a/src/Pages/Preference/PreferenceList.jsx
+++ b/src/Pages/Preference/PreferenceList.jsx
@@ -21,8 +21,9 @@ import { useAuth } from '../../AuthContext.jsx';
import { ApplicationPreferences } from '../../Features/BrachLogin/BranchLogin.js';
import './PreferenceList.scss';
import { InputField } from '../../Components/Forms/InputField.jsx';
+import { changePreferenceData } from '../../Features/BookingScreen/BookingData/BookingData.js';
-const PreferenceList = () => {
+const PreferenceList = ({ setting = false }) => {
const { SadminuserAccess, featureaddDetails } = useAuth();
const dispatch = useDispatch();
const formRef = useRef();
@@ -301,7 +302,12 @@ const PreferenceList = () => {
};
const fetchTableData = async () => {
- await dispatch(gettableData({ CompId, BranchId, AppId })).unwrap();
+ const res = await dispatch(gettableData({ CompId, BranchId, AppId })).unwrap();
+ if (res?.data?.statusCode === 1 && res?.data?.data?.length > 0) {
+ await dispatch(changePreferenceData(res?.data?.data));
+ } else {
+ await dispatch(changePreferenceData([]));
+ }
handleApplicationChange(AppId);
};
@@ -477,8 +483,8 @@ const PreferenceList = () => {
/>
-
-
+
+
handleMenuClick(e, 'general')}
style={{
@@ -586,25 +592,25 @@ const PreferenceList = () => {
{(allSettingsMap['onlineindividualslots'] !== undefined ||
allSettingsMap['allow individual booking'] !== undefined ||
allSettingsMap['single booking only'] !== undefined) && (
-
-
- {allSettingsMap['allow individual booking'] !==
- undefined && (
-
- Allow online individual booking
-
- )}
- {allSettingsMap['single booking only'] !== undefined && (
-
- Allow single booking Only
-
- )}
-
-
- )}
+
+
+ {allSettingsMap['allow individual booking'] !==
+ undefined && (
+
+ Allow online individual booking
+
+ )}
+ {allSettingsMap['single booking only'] !== undefined && (
+
+ Allow single booking Only
+
+ )}
+
+
+ )}
{featureaddDetails?.find(
(item) =>
item?.FeatureAddonName?.toLowerCase() === 'kiosk sales'
@@ -734,23 +740,23 @@ const PreferenceList = () => {
{(allSettingsMap['onbilltime'] !== undefined ||
allSettingsMap['1daybefore'] !== undefined ||
allSettingsMap['1hourbefore'] !== undefined) && (
-
-
- {allSettingsMap['onbilltime'] !== undefined && (
- On Bill Time
- )}
- {allSettingsMap['1daybefore'] !== undefined && (
- 1 Day Before
- )}
- {allSettingsMap['1hourbefore'] !== undefined && (
- 1 Hour Before
- )}
-
-
- )}
+
+
+ {allSettingsMap['onbilltime'] !== undefined && (
+ On Bill Time
+ )}
+ {allSettingsMap['1daybefore'] !== undefined && (
+ 1 Day Before
+ )}
+ {allSettingsMap['1hourbefore'] !== undefined && (
+ 1 Hour Before
+ )}
+
+
+ )}
{
{(allSettingsMap['offer'] !== undefined ||
allSettingsMap['parking'] !== undefined) && (
-
-
- {allSettingsMap['parking'] !== undefined && (
- Parking
- )}
- {allSettingsMap['offer'] !== undefined && (
- Offer
- )}
-
-
- )}
+
+
+ {allSettingsMap['parking'] !== undefined && (
+ Parking
+ )}
+ {allSettingsMap['offer'] !== undefined && (
+ Offer
+ )}
+
+
+ )}
{((allSettingsMap['dinein'] !== undefined && dinePreference) ||
allSettingsMap['estimation'] !== undefined) && (
-
-
- {allSettingsMap['dinein'] !== undefined &&
- dinePreference && (
- Dine-In
+
+
+ {allSettingsMap['dinein'] !== undefined &&
+ dinePreference && (
+ Dine-In
+ )}
+ {allSettingsMap['estimation'] !== undefined && (
+ Estimation
)}
- {allSettingsMap['estimation'] !== undefined && (
- Estimation
- )}
-
-
- )}
+
+
+ )}
{renderCheckbox('stockselection', 'Enable stock selection?')}
{renderCheckbox('weightasquantity', 'Use Weight as Quantity?')}
@@ -896,72 +902,72 @@ const PreferenceList = () => {
{(allSettingsMap['overalllimit'] !== undefined ||
allSettingsMap['itemwiselimit'] !== undefined) && (
- <>
-
- Yes
-
+ <>
+
+ Yes
+
-
- prev.quantityrestriction !== curr.quantityrestriction
- }
- >
- {({ getFieldValue }) =>
- getFieldValue('quantityrestriction') && (
- <>
-
-
- formRef.current?.setFieldsValue({
- maxquantity: undefined,
- })
- }
+
+ prev.quantityrestriction !== curr.quantityrestriction
+ }
+ >
+ {({ getFieldValue }) =>
+ getFieldValue('quantityrestriction') && (
+ <>
+
- {allSettingsMap['overalllimit'] !== undefined && (
-
- Overall Order Quantity
-
- )}
- {allSettingsMap['itemwiselimit'] !==
- undefined && (
-
- Item-wise Quantity
-
- )}
-
-
+
+ formRef.current?.setFieldsValue({
+ maxquantity: undefined,
+ })
+ }
+ >
+ {allSettingsMap['overalllimit'] !== undefined && (
+
+ Overall Order Quantity
+
+ )}
+ {allSettingsMap['itemwiselimit'] !==
+ undefined && (
+
+ Item-wise Quantity
+
+ )}
+
+
-
-
-
- >
- )
- }
-
- >
- )}
+
+
+
+ >
+ )
+ }
+
+ >
+ )}
@@ -984,46 +990,46 @@ const PreferenceList = () => {
{['whatsapp', 'sms', 'email'].some(
(k) => allSettingsMap[k] !== undefined
) && (
- <>
-
-
- Print Bill
- Send PDF
-
-
+ <>
+
+
+ Print Bill
+ Send PDF
+
+
-
- prev.billOption !== curr.billOption
- }
- >
- {({ getFieldValue }) =>
- getFieldValue('billOption') === 'pdf' && (
-
-
- {allSettingsMap['whatsapp'] !== undefined && (
- WhatsApp
- )}
- {allSettingsMap['email'] !== undefined && (
- Email
- )}
- {allSettingsMap['sms'] !== undefined && (
- SMS
- )}
-
-
- )
- }
-
- >
- )}
+
+ prev.billOption !== curr.billOption
+ }
+ >
+ {({ getFieldValue }) =>
+ getFieldValue('billOption') === 'pdf' && (
+
+
+ {allSettingsMap['whatsapp'] !== undefined && (
+ WhatsApp
+ )}
+ {allSettingsMap['email'] !== undefined && (
+ Email
+ )}
+ {allSettingsMap['sms'] !== undefined && (
+ SMS
+ )}
+
+
+ )
+ }
+
+ >
+ )}
{renderCheckbox(
'tokenonly',
@@ -1053,25 +1059,25 @@ const PreferenceList = () => {
{['printuom', 'printlogo', 'printgreetings'].some(
(k) => allSettingsMap[k] !== undefined
) && (
-
-
- {allSettingsMap['printuom'] !== undefined && (
-
- Unit of Measure (UOM)
-
- )}
- {allSettingsMap['printlogo'] !== undefined && (
- Branch Logo
- )}
- {allSettingsMap['printgreetings'] !== undefined && (
- Greetings
- )}
-
-
- )}
+
+
+ {allSettingsMap['printuom'] !== undefined && (
+
+ Unit of Measure (UOM)
+
+ )}
+ {allSettingsMap['printlogo'] !== undefined && (
+ Branch Logo
+ )}
+ {allSettingsMap['printgreetings'] !== undefined && (
+ Greetings
+ )}
+
+
+ )}
{renderCheckbox(
'mobilea4',
@@ -1079,24 +1085,24 @@ const PreferenceList = () => {
)}
{(allSettingsMap['estimateprintheader'] !== undefined ||
allSettingsMap['estimatetitle'] !== undefined) && (
-
-
- {allSettingsMap['estimateprintheader'] !== undefined && (
-
- Show shop header (Name, Address, GST)
-
- )}
- {allSettingsMap['estimatetitle'] !== undefined && (
-
- Show “Estimate (R/W)” title
-
- )}
-
-
- )}
+
+
+ {allSettingsMap['estimateprintheader'] !== undefined && (
+
+ Show shop header (Name, Address, GST)
+
+ )}
+ {allSettingsMap['estimatetitle'] !== undefined && (
+
+ Show “Estimate (R/W)” title
+
+ )}
+
+
+ )}
label {
+ .ant-form-item-label>label {
font-weight: 500;
color: #000000;
font-size: 16px;
@@ -62,7 +62,7 @@
.submitButton {
position: unset;
- > button {
+ >button {
width: max-content;
bottom: 30px;
}
@@ -83,7 +83,7 @@
.menu-section {
padding: 10px 0;
- > div {
+ >div {
font-family: "Poppins";
font-weight: 400;
font-size: 14px;
@@ -99,17 +99,45 @@
&:hover {
background-color: #c0cbf8;
}
+
@media (max-width: 500px) {
border: none !important;
text-decoration: none !important;
font-style: unset !important;
}
}
+
@media (max-width: 500px) {
overflow: auto;
}
}
+.modal-menu {
+ display: flex;
+ flex-direction: row;
+ gap: 2px;
+ white-space: nowrap;
+ width: 75vw;
+ overflow: hidden;
+ margin: 0;
+ text-decoration: underline;
+
+ >div {
+ font-size: 12px;
+ margin: 0;
+ background-color: unset;
+ border-radius: unset;
+
+ &:hover {
+ background-color: unset;
+ }
+ }
+}
+
+.preferences-menu {
+ flex-direction: column !important;
+}
+
@media (max-width: 500px) {
.menu-and-preferences {
flex-direction: column;
@@ -126,7 +154,7 @@
font-size: 1rem;
}
- .ant-form-item-label > label {
+ .ant-form-item-label>label {
font-size: 14px;
}
@@ -149,7 +177,7 @@
margin: 0;
text-decoration: underline;
- > div {
+ >div {
font-size: 12px;
margin: 0;
background-color: unset;
@@ -174,4 +202,4 @@
.primary_Button {
width: 200px !important;
}
-}
+}
\ No newline at end of file
diff --git a/src/Styles/BookingScreen/Template/BSLayout1/BSLayout1.scss b/src/Styles/BookingScreen/Template/BSLayout1/BSLayout1.scss
index 9cc95db..a766298 100644
--- a/src/Styles/BookingScreen/Template/BSLayout1/BSLayout1.scss
+++ b/src/Styles/BookingScreen/Template/BSLayout1/BSLayout1.scss
@@ -6,7 +6,9 @@
display: flex;
flex-direction: column;
row-gap: 3rem;
+ background-color: #fff;
}
+
.BSLayout1Standard {
overflow: hidden;
position: relative;
@@ -16,10 +18,12 @@
@media (max-width: 768px) {
top: 2rem;
}
+
@media (max-width: 500px) {
top: 2rem;
}
}
+
.layout1-card-content {
height: 100% !important;
}
@@ -34,11 +38,11 @@ body {
background-color: #f3f3f3;
}
-.BSLayout1 {
+.BSLayout1Main {
overflow: hidden;
position: relative;
- top: 2rem;
- height: 99vh;
+ top: 34px;
+ height: 98vh;
}
.BSBillingTable-oCbtn {
@@ -49,11 +53,13 @@ body {
top: 5rem;
}
-.BSCategory1-Contentcont {
+.BSCategoryCardDiv {
overflow: hidden;
display: flex;
flex-direction: column;
padding: 0rem 0rem;
+ width: 100%;
+ height: 98%;
}
.BSCategory1-Cardcont {
@@ -62,18 +68,28 @@ body {
height: 85vh;
}
-.BSLayout1-ContentDiv {
+.BSLayout1Master {
display: flex;
- height: 95vh;
+ height: 98vh;
width: 100%;
justify-content: space-between;
overflow: hidden;
+ gap: 6px;
+ padding: 3px 5px;
+
+ .BsTable2-Master {
+ height: 84vh !important;
+ }
+
+ .BSTable3_overall {
+ height: 84vh !important;
+ }
}
.BSCategory1-tablecont {
width: 430px;
height: clamp(100vh, 51rem, 45vh);
- margin: 0.5rem 0.3rem 1rem 0.3rem;
+ margin: 0.1rem 0.1rem;
background-color: #fff;
}
@@ -95,7 +111,7 @@ body {
column-gap: 0 !important;
}
- .BSLayout1 {
+ .BSLayout1Main {
height: 88vh !important;
}
@@ -216,7 +232,7 @@ body {
align-items: center;
}
-.custom-search .ant-input-affix-wrapper > input.ant-input {
+.custom-search .ant-input-affix-wrapper>input.ant-input {
padding: 0;
}
@@ -230,22 +246,27 @@ body {
white-space: nowrap;
margin-left: 8rem;
font-weight: 400;
+
@media (max-width: 500px) {
font-size: 10px !important;
}
}
@keyframes shake {
+
0%,
100% {
transform: rotate(0deg);
}
+
25% {
transform: rotate(-15deg);
}
+
50% {
transform: rotate(15deg);
}
+
75% {
transform: rotate(-10deg);
}
@@ -271,13 +292,15 @@ body {
font-weight: 500;
cursor: pointer;
}
+
.BookingCloseButton {
- background: red;
+ background: #f70000;
color: white;
border: none;
padding: 2px;
border-radius: 5px;
}
+
.BookingOpenButton {
background: #52c41a;
color: white;
@@ -285,6 +308,7 @@ body {
padding: 2px;
border-radius: 5px;
}
+
.BookingCloseModal {
.ant-modal .ant-modal-content {
padding: 10px 10px !important;
@@ -295,4 +319,4 @@ body {
display: flex;
align-items: center;
gap: 2px;
-}
+}
\ No newline at end of file