Merge pull request 'Solved Issue' (#176) from PushMainVM into main

Reviewed-on: Pozomind/pozo-retail-app#176
This commit is contained in:
karthikalakshmi 2026-02-25 17:00:33 +05:30
commit 65eb86ffdd
39 changed files with 6878 additions and 7029 deletions

View File

@ -10,8 +10,12 @@ import { routesConfig } from './routesConfig';
import { GlobalItemCard } from './Features/BookingScreen/BookingData/BookingData.js';
import { clearSession, getSession } from './Services/Others.js';
const KisokSelBooking = lazy(() => import('./Pages/SelfBooking/KisokSelBooking'));
const IndividualBooking = lazy(() => import('./Pages/SelfBooking/IndividualBooking'));
const KisokSelBooking = lazy(
() => import('./Pages/SelfBooking/KisokSelBooking')
);
const IndividualBooking = lazy(
() => import('./Pages/SelfBooking/IndividualBooking')
);
const commonSubDir = import.meta.env.ENV_COMMON_BASE_URL;
const subDirectory = import.meta.env.ENV_BASE_URL;
@ -23,7 +27,7 @@ import useSubscriptionManager from './useSubscriptionManager.js';
import useSessionManager from './useSessionManager.js';
import ExtendSubscriptionModal from './Pages/ExtentedModal/ExtendSubscriptionModal.jsx';
const isCapacitor = () => !!(window.Capacitor?.isNativePlatform?.());
const isCapacitor = () => !!window.Capacitor?.isNativePlatform?.();
// Define your home/exit pages here
const HOME_PAGES = [
@ -37,7 +41,14 @@ const LOGIN_PAGES = ['signin', 'login', 'auth'];
const AppRoutes = () => {
const ItemCard = useSelector(GlobalItemCard);
const { sessionData, logout } = useSessionManager(ItemCard);
const { remainingDays, handleCancel, freeExtend, extendModel,handlePay, setExtendModel } = useSubscriptionManager(sessionData, logout);
const {
remainingDays,
handleCancel,
freeExtend,
extendModel,
handlePay,
setExtendModel,
} = useSubscriptionManager(sessionData, logout);
const location = useLocation();
const navigate = useNavigate();
@ -56,7 +67,7 @@ const AppRoutes = () => {
const path = location.pathname + (location.search || '');
// Don't track login pages
if (LOGIN_PAGES.some(p => path.includes(p))) return;
if (LOGIN_PAGES.some((p) => path.includes(p))) return;
const raw = sessionStorage.getItem('navStack');
let stack = raw ? JSON.parse(raw) : [];
@ -78,7 +89,7 @@ const AppRoutes = () => {
const currentPath = location.pathname;
// On home page just stay, don't redirect
if (HOME_PAGES.some(p => currentPath.includes(p))) {
if (HOME_PAGES.some((p) => currentPath.includes(p))) {
window.history.go(1); // stay here
return;
}
@ -104,42 +115,44 @@ const AppRoutes = () => {
useEffect(() => {
if (!isMobile && !isIOS && !isCapacitor()) return;
const handler = async () => {
let backButtonListener;
const setupBackButton = async () => {
try {
backButtonListener = await CapacitorApp.addListener(
'backButton',
async () => {
try {
const currentPath = location.pathname + (location.search || '');
console.log('🔙 Back pressed:', currentPath);
// On home page
if (HOME_PAGES.some(p => currentPath.includes(p))) {
// 🏠 Home page minimize
if (HOME_PAGES.some((p) => currentPath.includes(p))) {
if (isCapacitor()) {
console.log('📱 Minimizing app');
await CapacitorApp.minimizeApp(); // minimize not exit
await CapacitorApp.minimizeApp();
}
return;
}
// On login page exit app
if (LOGIN_PAGES.some(p => currentPath.includes(p))) {
console.log('🚪 Exiting app');
if (isCapacitor()) await CapacitorApp.exitApp();
// 🚪 Login page exit
if (LOGIN_PAGES.some((p) => currentPath.includes(p))) {
if (isCapacitor()) {
await CapacitorApp.exitApp();
}
return;
}
// Get stack and go back one by one
const raw = sessionStorage.getItem('navStack');
let stack = raw ? JSON.parse(raw) : [];
// Remove current path from top
while (stack.length > 0 && stack[stack.length - 1] === currentPath) {
while (stack.length && stack[stack.length - 1] === currentPath) {
stack.pop();
}
if (stack.length > 0) {
if (stack.length) {
const previous = stack[stack.length - 1];
// If previous is login go to home instead
if (LOGIN_PAGES.some(p => previous.includes(p))) {
console.log('⬅️ Previous was login → going home');
if (LOGIN_PAGES.some((p) => previous.includes(p))) {
const home = '/landing-page/home';
sessionStorage.setItem('navStack', JSON.stringify([home]));
isBackNav.current = true;
@ -147,34 +160,32 @@ const AppRoutes = () => {
return;
}
console.log('⬅️ Back to:', previous);
sessionStorage.setItem('navStack', JSON.stringify(stack));
isBackNav.current = true; // Prevent loop
isBackNav.current = true;
navigate(previous);
} else {
// Stack empty go home
const home = '/landing-page/home';
console.log('📭 Stack empty → home');
sessionStorage.setItem('navStack', JSON.stringify([home]));
isBackNav.current = true;
navigate(home);
}
} catch (e) {
console.error('Back error:', e);
} catch (err) {
console.error('Back handler error:', err);
navigate('/landing-page/home');
}
}
);
} catch (err) {
console.error('Listener error:', err);
}
};
let listener;
try {
listener = CapacitorApp.addListener('backButton', handler);
} catch (e) {}
setupBackButton();
return () => {
try {
if (listener?.remove) listener.remove();
} catch (e) {}
backButtonListener?.remove();
} catch (err) {}
};
}, [navigate, location.pathname, location.search]);

View File

@ -2252,7 +2252,8 @@ const BSBillingTable1 = () => {
{OldtableDataTakeAway?.map((item, index) => (
<tr
key={index}
className={`${item?.SalesId && OrderType !== 'Hold'
className={`${
item?.SalesId && OrderType !== 'Hold'
? 'Billing-Table1-row-disabled'
: 'Billing-Table1-row'
}
@ -2547,7 +2548,8 @@ const BSBillingTable1 = () => {
{OldtableDataDinein?.map((item, index) => (
<tr
key={OldtableDataTakeAway?.length + index}
className={`${item?.SalesId
className={`${
item?.SalesId
? 'Billing-Table1-row-disabled'
: 'Billing-Table1-row'
}
@ -2843,7 +2845,8 @@ const BSBillingTable1 = () => {
OldtableDataTakeAway?.length +
index
}
className={`${BookingType === 'Dine In' && item?.SalesId
className={`${
BookingType === 'Dine In' && item?.SalesId
? 'Billing-Table1-row-disabled'
: 'Billing-Table1-row'
}
@ -3188,7 +3191,8 @@ const BSBillingTable1 = () => {
tableDataTakeAway?.length +
index
}
className={`${BookingType === 'Dine In' && item?.SalesId
className={`${
BookingType === 'Dine In' && item?.SalesId
? 'Billing-Table1-row-disabled'
: 'Billing-Table1-row'
}

View File

@ -130,14 +130,24 @@ const BsBill2 = () => {
const productBasedExtraCharges = GlobalExtraCharge.filter(
(obj) => 'ProdName' in obj
);
const overAllLimitPreferenece =
preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
(item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y');
const itemWiseLimitPreferenece =
preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
(item) => item.SettingIdName?.toLowerCase() === 'itemwiselimit' && item?.SettingValue === 'Y');
const maxQtyLimit = itemWiseLimitPreferenece?.SettingCount || overAllLimitPreferenece?.SettingCount || null;
const overAllLimitPreferenece = preferenceDatas?.[0]?.[
'SettingDtlDetails'
]?.find(
(item) =>
item.SettingIdName?.toLowerCase() === 'overalllimit' &&
item?.SettingValue === 'Y'
);
const itemWiseLimitPreferenece = preferenceDatas?.[0]?.[
'SettingDtlDetails'
]?.find(
(item) =>
item.SettingIdName?.toLowerCase() === 'itemwiselimit' &&
item?.SettingValue === 'Y'
);
const maxQtyLimit =
itemWiseLimitPreferenece?.SettingCount ||
overAllLimitPreferenece?.SettingCount ||
null;
const tableDataDinein = CartOrderDetails?.filter(
(a, b) => a.BookingTypeName === 'Dine In' && !a?.SalesId
@ -283,8 +293,8 @@ const BsBill2 = () => {
if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) {
if (overAllLimitPreferenece) {
const calculatedOverAllQty = calculateOverAllQtyLimit(CartOrderDetails);
if ((calculatedOverAllQty + 1) > maxQtyLimit) {
message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`)
if (calculatedOverAllQty + 1 > maxQtyLimit) {
message.warning(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`);
return;
}
@ -1463,31 +1473,23 @@ const BsBill2 = () => {
<div className="summary-listedit-div">
<div className="items-editables">
{/* <MinusOutlined onClick={() => decline(item)} /> */}
<Suspense fallback={<span>Loading...</span>}>
<MinusOutlined onClick={() => decline(item)} />
</Suspense>
<Badge count={item?.OrderQty} overflowCount={10000}>
{' '}
</Badge>
{item?.StockAvailable === 'Y' ? (
returnCount(item) > 0 && (
<Suspense fallback={<span>Loading...</span>}>
<PlusOutlined onClick={() => increase(item)} />
</Suspense>
)
) : (
<Suspense fallback={<span>Loading...</span>}>
<PlusOutlined onClick={() => increase(item)} />
</Suspense>
)}
<Suspense fallback={<span>Loading Edit...</span>}>
<EditOutlined
style={{ fontSize: '14px' }}
onClick={() => handleEditQuantity(item)}
/>
</Suspense>
</div>
</div>
</div>
@ -1688,30 +1690,22 @@ const BsBill2 = () => {
<div className="items-editables">
{/* <MinusOutlined onClick={() => decline(item)} />
*/}
<Suspense fallback={<span>Loading...</span>}>
<MinusOutlined onClick={() => decline(item)} />
</Suspense>
<Badge count={item?.OrderQty} overflowCount={10000}>
{' '}
</Badge>
{item?.StockAvailable === 'Y' ? (
returnCount(item) > 0 && (
<Suspense fallback={<span>Loading...</span>}>
<PlusOutlined onClick={() => increase(item)} />
</Suspense>
)
) : (
<Suspense fallback={<span>Loading...</span>}>
<PlusOutlined onClick={() => increase(item)} />
</Suspense>
)}
<Suspense fallback={<span>Loading Edit...</span>}>
<EditOutlined
style={{ fontSize: '14px' }}
onClick={() => handleEditQuantity(item)}
/>
</Suspense>
</div>
</div>
</div>
@ -1946,15 +1940,12 @@ const BsBill2 = () => {
<div className="summary-listedit-div">
<div className="items-editables">
<Suspense fallback={<span>Loading...</span>}>
<MinusOutlined onClick={() => decline(item)} />
</Suspense>
<Badge count={item?.OrderQty} overflowCount={10000}>
{' '}
</Badge>
{item?.StockAvailable === 'Y' ? (
returnCount(item) > 0 && (
<Suspense fallback={<span>Loading...</span>}>
<PlusOutlined
onClick={() =>
item.Type == 'P' || item.Type == 'C'
@ -1964,10 +1955,8 @@ const BsBill2 = () => {
: ''
}
/>
</Suspense>
)
) : (
<Suspense fallback={<span>Loading...</span>}>
<PlusOutlined
onClick={() =>
item.Type == 'P' || item.Type == 'C'
@ -1977,15 +1966,12 @@ const BsBill2 = () => {
: ''
}
/>
</Suspense>
)}
<Suspense fallback={<span>Loading Edit...</span>}>
<EditOutlined
style={{ fontSize: '14px' }}
onClick={() => handleEditQuantity(item)}
/>
</Suspense>
</div>
</div>
</div>
@ -2205,30 +2191,22 @@ const BsBill2 = () => {
<div className="summary-listedit-div">
<div className="items-editables">
<Suspense fallback={<span>Loading...</span>}>
<MinusOutlined onClick={() => decline(item)} />
</Suspense>
<Badge count={item?.OrderQty} overflowCount={10000}>
{' '}
</Badge>
{item?.StockAvailable === 'Y' ? (
returnCount(item) > 0 && (
<Suspense fallback={<span>Loading...</span>}>
<PlusOutlined onClick={() => increase(item)} />
</Suspense>
)
) : (
<Suspense fallback={<span>Loading...</span>}>
<PlusOutlined onClick={() => increase(item)} />
</Suspense>
)}
<Suspense fallback={<span>Loading Edit...</span>}>
<EditOutlined
style={{ fontSize: '14px' }}
onClick={() => handleEditQuantity(item)}
/>
</Suspense>
</div>
</div>
</div>

View File

@ -14,6 +14,7 @@ import defaultupi from '../../../../../Images/defaultupi.png';
import pozologoimg from '../../../../../Images/pozologoimg.png';
import paydevice from '../../../../../Images/paydevice.png';
import '../../../../../Styles/BookingScreen/Components/BSBillingTables/BSBillingTable5/BSBillingTable15.scss';
import '../../../../../Styles/BookingScreen/Components/BSBillingTables/BSBillingTables3/BSBillingTable3.scss';
import { isMobile } from 'react-device-detect';
import {
GlobalSelectedFont,

View File

@ -128,7 +128,8 @@ const BsBill = () => {
const GetCustId = useSelector(GlobalCustId);
const selectedCustomer = useSelector(GlobalSelOption);
const [customerPriceHistoryOpen, setCustomerPriceHistoryOpen] = useState(false);
const [customerPriceHistoryOpen, setCustomerPriceHistoryOpen] =
useState(false);
const [customerProduct, setCustomerProduct] = useState(null);
const [PreviousdataLength, setPreviousdataLength] =
useState(PreviousOrderLength);
@ -145,14 +146,24 @@ const BsBill = () => {
const OrderType = useSelector(GlobalOrderType);
const GlobEstBooking = useSelector(GlobalEstimateBooking);
const GlobalExtraCharge = useSelector(globalExtraTotalAmount);
const overAllLimitPreferenece =
preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
(item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y');
const itemWiseLimitPreferenece =
preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
(item) => item.SettingIdName?.toLowerCase() === 'itemwiselimit' && item?.SettingValue === 'Y');
const maxQtyLimit = itemWiseLimitPreferenece?.SettingCount || overAllLimitPreferenece?.SettingCount || null;
const overAllLimitPreferenece = preferenceDatas?.[0]?.[
'SettingDtlDetails'
]?.find(
(item) =>
item.SettingIdName?.toLowerCase() === 'overalllimit' &&
item?.SettingValue === 'Y'
);
const itemWiseLimitPreferenece = preferenceDatas?.[0]?.[
'SettingDtlDetails'
]?.find(
(item) =>
item.SettingIdName?.toLowerCase() === 'itemwiselimit' &&
item?.SettingValue === 'Y'
);
const maxQtyLimit =
itemWiseLimitPreferenece?.SettingCount ||
overAllLimitPreferenece?.SettingCount ||
null;
const OtherServicesglobal = useSelector(GlobalOtherSevices);
@ -853,7 +864,6 @@ const BsBill = () => {
e?.BookingTypeName != item?.BookingTypeName
);
if (TableData?.length <= 1) {
await dispatch(changeReorderHoldDetails({}));
await dispatch(changeReorderProductDetails([]));
@ -1726,7 +1736,6 @@ const BsBill = () => {
}
}
}
};
// const removeFromCart = async (item) => {
// setPreviousdataLength(TableData?.length);
@ -1988,7 +1997,6 @@ const BsBill = () => {
event.preventDefault();
handleShortcut('weightAmount');
}
};
window.addEventListener('keydown', handleKeyDown);
@ -2140,11 +2148,10 @@ const BsBill = () => {
setMessageType(null);
}, []);
const increase = async (item) => {
if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) {
if (overAllLimitPreferenece) {
const calculatedOverAllQty = calculateOverAllQtyLimit(TableData);
if ((calculatedOverAllQty + 1) > maxQtyLimit) {
if (calculatedOverAllQty + 1 > maxQtyLimit) {
setMessageData(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`);
setMessageType('warning');
return;
@ -2511,7 +2518,7 @@ const BsBill = () => {
const handleCustomerProductPriceHistory = (item) => {
setCustomerPriceHistoryOpen(true);
setCustomerProduct(item?.ProdId);
}
};
const decline = async (item) => {
setPreviousdataLength(TableData?.length);
const isItemInCart = TableData?.find(
@ -3098,7 +3105,7 @@ const BsBill = () => {
style={{
fontFamily: SelectedFont,
fontWeight: '600',
fontSize: '16px',
fontSize: '14px',
width: '10px',
padding: '1px',
}}
@ -3118,7 +3125,7 @@ const BsBill = () => {
style={{
fontFamily: SelectedFont,
fontWeight: '600',
fontSize: '16px',
fontSize: '14px',
width: '10px',
}}
>
@ -3135,7 +3142,7 @@ const BsBill = () => {
style={{
fontFamily: SelectedFont,
fontWeight: '600',
fontSize: '16px',
fontSize: '14px',
}}
>
{!isMobile ? (
@ -3151,7 +3158,7 @@ const BsBill = () => {
style={{
fontFamily: SelectedFont,
fontWeight: '600',
fontSize: '16px',
fontSize: '14px',
width: '20px',
}}
>
@ -3168,7 +3175,7 @@ const BsBill = () => {
style={{
fontFamily: SelectedFont,
fontWeight: '600',
fontSize: '16px',
fontSize: '14px',
width: '20px',
}}
>
@ -3185,7 +3192,7 @@ const BsBill = () => {
style={{
fontFamily: SelectedFont,
fontWeight: '600',
fontSize: '16px',
fontSize: '14px',
width: '20px',
}}
// onClick={TableData?.length>0? OpenEditTotalAmount :""}
@ -3208,7 +3215,7 @@ const BsBill = () => {
style={{
fontFamily: SelectedFont,
fontWeight: '600',
fontSize: '16px',
fontSize: '14px',
width: '20px',
}}
>
@ -3225,7 +3232,7 @@ const BsBill = () => {
style={{
fontFamily: SelectedFont,
fontWeight: '600',
fontSize: '16px',
fontSize: '14px',
width: '20px',
}}
>
@ -3245,7 +3252,7 @@ const BsBill = () => {
padding: '0.5rem',
borderBottom: '1.9px solid #000',
fontWeight: '600',
fontSize: '16px',
fontSize: '14px',
width: '10px',
}}
>
@ -4653,7 +4660,7 @@ const BsBill = () => {
ProductDetail={Modaldata}
/>
)}
{(customerPriceHistoryOpen && GetCustId) &&
{customerPriceHistoryOpen && GetCustId && (
<CustomerPriceHistory
open={customerPriceHistoryOpen}
custId={GetCustId}
@ -4662,7 +4669,7 @@ const BsBill = () => {
setCustomerProduct={setCustomerProduct}
selectedCustomer={selectedCustomer}
/>
}
)}
</div>
);
};

View File

@ -1044,7 +1044,7 @@ const BSBillingTable7 = () => {
InwardDtlId: isPaidproduct?.InwardDtlId,
BuyInwardDtlId: null,
Offer: 0,
OrderRate: isPaidproduct?.OrderRate
OrderRate: isPaidproduct?.OrderRate,
});
} else if (isPaidproduct?.OrderQty > item?.OrderQty) {
// Just Decrease Paid Qty
@ -1218,7 +1218,7 @@ const BSBillingTable7 = () => {
InwardDtlId: item?.InwardDtlId,
BuyInwardDtlId: null,
Offer: item?.Offer,
OrderRate: item?.OrderRate
OrderRate: item?.OrderRate,
});
await ChangeFreeprodlistFn({
OverAllFreeQty: isCheckFreeProduct?.OverAllFreeQty,
@ -1329,7 +1329,7 @@ const BSBillingTable7 = () => {
InwardDtlId: item?.InwardDtlId,
BuyInwardDtlId: null,
Offer: item?.Offer,
OrderRate: item?.OrderRate
OrderRate: item?.OrderRate,
});
await ChangeOfferAppliedProdsFn({
inwardDtlId: item?.InwardDtlId,
@ -1361,7 +1361,7 @@ const BSBillingTable7 = () => {
InwardDtlId: isPaidProductAvailableInCart?.InwardDtlId,
BuyInwardDtlId: null,
Offer: 0,
OrderRate: isPaidProductAvailableInCart?.OrderRate
OrderRate: isPaidProductAvailableInCart?.OrderRate,
});
} else if (
isPaidProductAvailableInCart?.OrderQty > item?.OrderQty
@ -1445,7 +1445,7 @@ const BSBillingTable7 = () => {
InwardDtlId: item?.InwardDtlId,
BuyInwardDtlId: null,
Offer: item?.Offer,
OrderRate: item?.OrderRate
OrderRate: item?.OrderRate,
});
await ChangeFreeprodlistFn({
OverAllFreeQty: freeProdList?.OverAllFreeQty,
@ -1472,7 +1472,7 @@ const BSBillingTable7 = () => {
InwardDtlId: item?.InwardDtlId,
BuyInwardDtlId: null,
Offer: item?.Offer,
OrderRate: item?.OrderRate
OrderRate: item?.OrderRate,
});
await ChangeFreeprodlistFn({
OverAllFreeQty: freeProdList?.OverAllFreeQty,
@ -1819,7 +1819,7 @@ const BSBillingTable7 = () => {
InwardDtlId: item?.InwardDtlId,
BuyInwardDtlId: item?.InwardDtlId,
Offer: item?.Offer,
OrderRate: item?.OrderRate
OrderRate: item?.OrderRate,
});
await ChangeFreeprodlistFn({
OverAllFreeQty: item?.OrderQty,
@ -1998,7 +1998,7 @@ const BSBillingTable7 = () => {
fontFamily: SelectedFont,
fontWeight: '600',
padding: '8px',
fontSize: '16px',
fontSize: '14px',
width: '10px',
}}
>
@ -2017,7 +2017,7 @@ const BSBillingTable7 = () => {
fontFamily: SelectedFont,
fontWeight: '600',
padding: '8px',
fontSize: '16px',
fontSize: '14px',
}}
>
{!isMobile ? (
@ -2033,7 +2033,7 @@ const BSBillingTable7 = () => {
style={{
fontFamily: SelectedFont,
padding: '8px',
fontSize: '16px',
fontSize: '14px',
width: '5%',
}}
>
@ -2051,7 +2051,7 @@ const BSBillingTable7 = () => {
fontFamily: SelectedFont,
fontWeight: '600',
padding: '8px',
fontSize: '16px',
fontSize: '14px',
width: '5%',
}}
>
@ -2068,7 +2068,7 @@ const BSBillingTable7 = () => {
style={{
fontFamily: SelectedFont,
fontWeight: '600',
fontSize: '16px',
fontSize: '14px',
padding: '8px',
width: '5%',
}}
@ -2092,7 +2092,7 @@ const BSBillingTable7 = () => {
style={{
fontFamily: SelectedFont,
fontWeight: '600',
fontSize: '16px',
fontSize: '14px',
width: '5%',
padding: '8px',
}}
@ -2110,7 +2110,7 @@ const BSBillingTable7 = () => {
style={{
fontFamily: SelectedFont,
fontWeight: '600',
fontSize: '16px',
fontSize: '14px',
width: '5%',
padding: '8px',
}}
@ -2187,7 +2187,8 @@ const BSBillingTable7 = () => {
}
// onClick={editdelete === "Edit" ? () => handleEditQuantity(item) : editdelete === "Delete" ? () => removeFromCart(item) : ""}
className={`${item?.SalesId && OrderType !== 'Hold'
className={`${
item?.SalesId && OrderType !== 'Hold'
? 'BSBill-Table7-content-disabled'
: 'BSBill-Table7-content'
}
@ -2416,7 +2417,8 @@ const BSBillingTable7 = () => {
}
// onClick={editdelete === "Edit" ? () => handleEditQuantity(item) : editdelete === "Delete" ? () => removeFromCart(item) : ""}
className={`${item?.SalesId
className={`${
item?.SalesId
? 'BSBill-Table7-content-disabled'
: 'BSBill-Table7-content'
}
@ -2684,7 +2686,8 @@ const BSBillingTable7 = () => {
}
// onClick={editdelete === "Edit" ? () => handleEditQuantity(item) : editdelete === "Delete" ? () => removeFromCart(item) : ""}
className={`${BookingType === 'Dine In' && item?.SalesId
className={`${
BookingType === 'Dine In' && item?.SalesId
? 'BSBill-Table7-content-disabled'
: 'BSBill-Table7-content'
}
@ -2951,7 +2954,8 @@ const BSBillingTable7 = () => {
}
// onClick={editdelete === "Edit" ? () => handleEditQuantity(item) : editdelete === "Delete" ? () => removeFromCart(item) : ""}
className={`${BookingType === 'Dine In' && item?.SalesId
className={`${
BookingType === 'Dine In' && item?.SalesId
? 'BSBill-Table7-content-disabled'
: 'BSBill-Table7-content'
}

View File

@ -205,9 +205,8 @@ const OtherServicePrintStyle1 = lazy(
() =>
import('../../../PrintTemplates/ThermalPrinter/OtherServicePrintStyle1.jsx')
);
const OtherServiceMobilePrint = lazy(
() => import('../../BookingFunctionality/OtherServiceMobilePrint.jsx')
);
import OtherServiceMobilePrint from '../../BookingFunctionality/OtherServiceMobilePrint.jsx';
const QrinScreen = lazy(
() => import('../../BookingFunctionality/DynamicScreenQr.jsx')
);
@ -3605,13 +3604,6 @@ const StandardTablePayment = () => {
title="Share on WhatsApp"
/>
)}
{/* <FaPrint
size={32}
color="#1292EE"
style={{ cursor: 'pointer' }}
onClick={handlePrintOrToken}
title="Print"
/> */}
{(filteredSettingNames?.includes('Print') ||
!MobileNoWhatsApp ||
@ -4196,8 +4188,7 @@ const StandardTablePayment = () => {
}
/>
)}
{
OtherServicesPrintDetails?.length > 0 && (
{OtherServicesPrintDetails?.length > 0 && (
// PrintOrderDetails?.[0]?.OrderDetails?.map((orderDetail, index) => (
<div style={{ display: 'none' }}>
<OtherServicePrintStyle1
@ -4217,9 +4208,7 @@ const StandardTablePayment = () => {
printDatas={printDatas}
/>
</div>
)
// ))
}
)}
</div>
</Suspense>
);

View File

@ -1,6 +1,5 @@
import React, {
lazy,
Suspense,
useCallback,
useEffect,
useRef,
@ -11,13 +10,9 @@ import { useDispatch, useSelector } from 'react-redux';
import { useNavigate } from 'react-router-dom';
import { TiLocation } from 'react-icons/ti';
import { BsFillPersonFill } from 'react-icons/bs';
import { PiStorefrontFill } from 'react-icons/pi';
import { BiSolidDashboard, BiSolidReport } from 'react-icons/bi';
import { FaUserLarge } from 'react-icons/fa6';
import { BiSolidPhoneCall } from 'react-icons/bi';
import { CgMenuGridR } from 'react-icons/cg';
import { MdTableChart } from 'react-icons/md';
import { MdEdit } from 'react-icons/md';
import MyTime, { DateDisplay, TimeDisplay } from './BSTimer.jsx';
import '../../../../Styles/BookingScreen/Template/BSLayout7/BSC1NavBar.scss';
import {
@ -31,7 +26,6 @@ import {
sessionStore,
} from '../../../../Services/Others';
import PozoHomeIcon from '../UtillComponents/Pozo retail icons/PozoHomeIcon.jsx';
import { GlobalCompBranchData } from '../../../../Features/BrachLogin/BranchLogin.js';
import { isMobile } from 'react-device-detect';
import { FaDisplay } from 'react-icons/fa6';
import {
@ -233,7 +227,6 @@ const BSC1NavBar = () => {
}
}, [isFullscreen]);
return (
<Suspense fallback={<div>Loading...</div>}>
<>
<div
className="BSC1NavBar-Container"
@ -298,7 +291,6 @@ const BSC1NavBar = () => {
</div>
<div className="BSC1NavBar-name">
{/* <PiStorefrontFill className="BSC1NavBar-name-icon" /> */}
<TooltipWrapper placement="bottom" title={branchData.branchName}>
<span className="BSC1NavBar-ellipsisname">
{branchData.branchName}
@ -336,9 +328,7 @@ const BSC1NavBar = () => {
<Tooltip title={isFullscreen ? 'Exit Full Screen' : 'Full Screen'}>
<div
className={
isFullscreen
? 'BsNavbar1FullScreenExit'
: 'BsNavbar1FullScreen'
isFullscreen ? 'BsNavbar1FullScreenExit' : 'BsNavbar1FullScreen'
}
onClick={handleFullscreen}
>
@ -392,7 +382,6 @@ const BSC1NavBar = () => {
</div>
</div>
</>
</Suspense>
);
};

View File

@ -1,4 +1,4 @@
import React, { useEffect, useState, useRef, lazy, Suspense } from 'react';
import React, { useEffect, useState, useRef, lazy } from 'react';
import { FaWhatsapp, FaPrint, FaParking, FaCartPlus } from 'react-icons/fa';
import { useDispatch, useSelector } from 'react-redux';
import { useNavigate } from 'react-router-dom';
@ -3479,7 +3479,6 @@ const BSC1Payment = (props) => {
};
return (
<Suspense fallback={<div>Loading...</div>}>
<>
<div
className="BSC1Payment-Container"
@ -3570,8 +3569,7 @@ const BSC1Payment = (props) => {
BookingType !== 'TakeAway' && ChangeTakeAway()
}
style={{
pointerEvents:
OrderType === 'Failed' ? 'none' : 'auto',
pointerEvents: OrderType === 'Failed' ? 'none' : 'auto',
}}
>
<PozoTakeAway
@ -3628,10 +3626,7 @@ const BSC1Payment = (props) => {
title="Alt + A"
open={isAltPressed}
>
<TooltipWrapper
title={'Extra Charge'}
isMobile={isMobile}
>
<TooltipWrapper title={'Extra Charge'} isMobile={isMobile}>
<div
className="BSC1Payment-div1-btns"
onClick={handleextraCharges}
@ -3938,10 +3933,7 @@ const BSC1Payment = (props) => {
}}
onClick={() =>
payment?.ModeName?.toLowerCase() === 'upi' // Change the condition to payment.Id
? handleUPIButtonClick(
payment.ModeId,
payment.ModeName
)
? handleUPIButtonClick(payment.ModeId, payment.ModeName)
: handlePaymentMode(payment.ModeId, payment.ModeName)
}
>
@ -4114,14 +4106,6 @@ const BSC1Payment = (props) => {
</div>
</TooltipWrapper>
{/* <div className='BSC1Payment-div2-2'>
<select className='BSC1Payment-div2-button'>
<option className='BSC1Payment-div1-btns'>CASH</option>
<option className='BSC1Payment-div1-btns'>CARD</option>
<option className='BSC1Payment-div1-btns'>UPI</option>
</select>
</div> */}
<div class="BSC1Payment-vl"></div>
<div className="BSC1Payment-div3">
@ -4150,10 +4134,7 @@ const BSC1Payment = (props) => {
>
<div style={{ width: '3rem' }}>Qty </div>
<div style={{ width: '4px' }}> : </div>
<div style={{ textAlign: 'right', width: '1rem' }}>
{' '}
{Qty}{' '}
</div>
<div style={{ textAlign: 'right', width: '1rem' }}> {Qty} </div>
</div>
<div
style={{ display: 'flex', alignItems: 'center' }}
@ -4259,9 +4240,7 @@ const BSC1Payment = (props) => {
>
<div
style={{
backgroundColor: Holddata
? '#52c41a'
: 'default',
backgroundColor: Holddata ? '#52c41a' : 'default',
color: Holddata ? '#ffffffff' : 'default',
height: '40px',
width: '45px',
@ -4290,16 +4269,11 @@ const BSC1Payment = (props) => {
{tabledata?.length > 0 && dinePreference && (
<>
{item?.OptionName == 'UnpaidBill' && (
<TooltipWrapper
title="Unpaid Bills"
isMobile={isMobile}
>
<TooltipWrapper title="Unpaid Bills" isMobile={isMobile}>
{' '}
<div
style={{
backgroundColor: unpaidFlow
? '#52c41a'
: '#1292EE',
backgroundColor: unpaidFlow ? '#52c41a' : '#1292EE',
color: unpaidFlow ? '#ffffffff' : '#ffffffff',
height: '40px',
width: '40px',
@ -4485,8 +4459,7 @@ const BSC1Payment = (props) => {
: ''
}
style={{
pointerEvents:
OrderType === 'Failed' ? 'none' : 'auto',
pointerEvents: OrderType === 'Failed' ? 'none' : 'auto',
}}
/>
</TooltipWrapper>
@ -4568,10 +4541,7 @@ const BSC1Payment = (props) => {
}}
>
<BSCustomerSelect />
<TooltipWrapper
title={'Add Customer'}
isMobile={isMobile}
>
<TooltipWrapper title={'Add Customer'} isMobile={isMobile}>
<div>
<PozoAddCustomerIcon
className="BSBillingNav-icon-table-icon bspaymentcomboAddCus"
@ -4875,10 +4845,9 @@ const BSC1Payment = (props) => {
children={
<>
<div>
You have already selected a table. If you click 'OK,' the
table selection will be removed, and the unpaid flow will
continue. If you click 'Cancel,' the dine-in flow will proceed
as selected.
You have already selected a table. If you click 'OK,' the table
selection will be removed, and the unpaid flow will continue. If
you click 'Cancel,' the dine-in flow will proceed as selected.
</div>
</>
}
@ -5035,7 +5004,6 @@ const BSC1Payment = (props) => {
/>
)}
</>
</Suspense>
);
};

View File

@ -1,11 +1,4 @@
import {
useEffect,
useRef,
useState,
useCallback,
Suspense,
lazy,
} from 'react';
import { useEffect, useRef, useState, useCallback, lazy } from 'react';
import { shallowEqual, useDispatch, useSelector } from 'react-redux';
import moment from 'moment';
import { BiBarcodeReader } from 'react-icons/bi';
@ -133,13 +126,24 @@ export default function BSC1Search(props) {
const FeatureAddonData = useSelector(GlobalFeatAddOnData);
useSaleswiseOfferWatcher();
const preferenceDatas = useSelector(PreferenceData);
const overAllLimitPreferenece =
preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
(item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y');
const itemWiseLimitPreferenece =
preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
(item) => item.SettingIdName?.toLowerCase() === 'itemwiselimit' && item?.SettingValue === 'Y');
const maxQtyLimit = itemWiseLimitPreferenece?.SettingCount || overAllLimitPreferenece?.SettingCount || null;
const overAllLimitPreferenece = preferenceDatas?.[0]?.[
'SettingDtlDetails'
]?.find(
(item) =>
item.SettingIdName?.toLowerCase() === 'overalllimit' &&
item?.SettingValue === 'Y'
);
const itemWiseLimitPreferenece = preferenceDatas?.[0]?.[
'SettingDtlDetails'
]?.find(
(item) =>
item.SettingIdName?.toLowerCase() === 'itemwiselimit' &&
item?.SettingValue === 'Y'
);
const maxQtyLimit =
itemWiseLimitPreferenece?.SettingCount ||
overAllLimitPreferenece?.SettingCount ||
null;
const preferenceOffer =
preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
(item) => item.SettingIdName === 'Offer'
@ -253,22 +257,27 @@ export default function BSC1Search(props) {
document.activeElement.tagName !== 'INPUT' &&
document.activeElement.tagName !== 'TEXTAREA'
) {
event.preventDefault(); // Stops "S" from being typed
event.preventDefault();
inputRef?.current?.focus();
}
}
};
const handleClickOutside = () => {
const handleClickOutside = (event) => {
if (
containerRef.current &&
!containerRef.current.contains(event.target)
) {
inputRef?.current?.blur();
}
};
window.addEventListener('keydown', handleKeyPress);
window.addEventListener('mousedown', handleClickOutside);
document.addEventListener('mousedown', handleClickOutside);
return () => {
window.removeEventListener('keydown', handleKeyPress);
window.removeEventListener('mousedown', handleClickOutside);
document.removeEventListener('mousedown', handleClickOutside);
};
}, []);
//dhana
@ -2827,11 +2836,10 @@ export default function BSC1Search(props) {
};
const AddOrderDetails = async (item) => {
if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) {
if (overAllLimitPreferenece) {
const calculatedOverAllQty = calculateOverAllQtyLimit(CartOrderDetails);
if ((calculatedOverAllQty + 1) > maxQtyLimit) {
if (calculatedOverAllQty + 1 > maxQtyLimit) {
setMessageData(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`);
setMessageType('warning');
return;
@ -4535,7 +4543,6 @@ export default function BSC1Search(props) {
const widthBasedOnProdVariantDetails = getMaxBrandWidth();
return (
<Suspense fallback={<div>Loading...</div>}>
<>
<div
className="BSC1Search-container"
@ -4624,9 +4631,7 @@ export default function BSC1Search(props) {
</div>
{ProductSearch?.length > 5 &&
QuickAdd &&
GetmultipleSearchDatas.some(
(e) => e.toLowerCase() === 'qrcode'
) && (
GetmultipleSearchDatas.some((e) => e.toLowerCase() === 'qrcode') && (
<div>
<FeaturesFunctionalities
handleQuickAddCancel={handleQuickCancel}
@ -4701,11 +4706,8 @@ export default function BSC1Search(props) {
<div key={index}>
<div
className={
returnQtyCount(
item?.ProdId,
item,
CartOrderDetails
) > 0 || item?.StockAvailable !== 'Y'
returnQtyCount(item?.ProdId, item, CartOrderDetails) >
0 || item?.StockAvailable !== 'Y'
? 'ItemQtyCard'
: 'ItemQtyCard-disabled'
}
@ -4739,8 +4741,8 @@ export default function BSC1Search(props) {
<sup style={{ fontFamily: 'Gilroy' }}></sup>
&nbsp;
{
item?.ProdVariantDetails?.[0]
?.StockDetails?.[0]?.SellPrice
item?.ProdVariantDetails?.[0]?.StockDetails?.[0]
?.SellPrice
}
</p>
) : (
@ -4751,11 +4753,7 @@ export default function BSC1Search(props) {
</div>
))}
</div>
{brandId !== 'null' && brandId !== 'undefined' ? (
<hr></hr>
) : (
''
)}
{brandId !== 'null' && brandId !== 'undefined' ? <hr></hr> : ''}
</div>
))}
@ -4794,9 +4792,7 @@ export default function BSC1Search(props) {
className="EditQuantity-headingproductname"
style={{ marginLeft: '1rem' }}
>
<p className="EditQuantity-productname">
{qtydata?.ProdName}
</p>
<p className="EditQuantity-productname">{qtydata?.ProdName}</p>
</div>
</div>
<div style={{ display: 'flex' }}>
@ -4850,9 +4846,7 @@ export default function BSC1Search(props) {
className="EditQuantity-headingproductname"
style={{ marginLeft: '1rem' }}
>
<p className="EditQuantity-productname">
{qtydata?.ProdName}
</p>
<p className="EditQuantity-productname">{qtydata?.ProdName}</p>
</div>
</div>
<div style={{ display: 'flex' }}>
@ -4878,6 +4872,5 @@ export default function BSC1Search(props) {
</div>
</DefaultModal>
</>
</Suspense>
);
}

View File

@ -165,13 +165,24 @@ const BSItemCard = (props) => {
// const applyOffer = useApplyOfferto_CardDetail();
const preferenceDatas = useSelector(PreferenceData, shallowEqual);
const { selectedDate } = useDateStore();
const overAllLimitPreferenece =
preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
(item) => (item.SettingIdName?.toLowerCase() === 'overalllimit') && item?.SettingValue === 'Y');
const itemWiseLimitPreferenece =
preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
(item) => item.SettingIdName?.toLowerCase() === 'itemwiselimit' && item?.SettingValue === 'Y');
const maxQtyLimit = itemWiseLimitPreferenece?.SettingCount || overAllLimitPreferenece?.SettingCount || null;
const overAllLimitPreferenece = preferenceDatas?.[0]?.[
'SettingDtlDetails'
]?.find(
(item) =>
item.SettingIdName?.toLowerCase() === 'overalllimit' &&
item?.SettingValue === 'Y'
);
const itemWiseLimitPreferenece = preferenceDatas?.[0]?.[
'SettingDtlDetails'
]?.find(
(item) =>
item.SettingIdName?.toLowerCase() === 'itemwiselimit' &&
item?.SettingValue === 'Y'
);
const maxQtyLimit =
itemWiseLimitPreferenece?.SettingCount ||
overAllLimitPreferenece?.SettingCount ||
null;
const preferenceOffer =
preferenceDatas?.[0]?.['SettingDtlDetails']?.find(
(item) => item.SettingIdName === 'Offer'
@ -2084,7 +2095,7 @@ const BSItemCard = (props) => {
if ((overAllLimitPreferenece || itemWiseLimitPreferenece) && maxQtyLimit) {
if (overAllLimitPreferenece) {
const calculatedOverAllQty = calculateOverAllQtyLimit(CartOrderDetails);
if ((calculatedOverAllQty + Qty) > maxQtyLimit) {
if (calculatedOverAllQty + Qty > maxQtyLimit) {
setMessageData(`Overall Quantity Limit Exceeds than ${maxQtyLimit}`);
setMessageType('warning');
return;
@ -7433,16 +7444,6 @@ const BSItemCard = (props) => {
onTouchStart={handleTouchStart}
onTouchMove={handleTouchMove}
onTouchEnd={handleTouchEnd}
// style={{
// marginTop: "1rem",
// display: "flex",
// gap: "1rem",
// overflowX: "auto",
// cursor: "grab",
// pointerEvents: OrderType === "Failed" ? "none" : "auto",
// scrollBehavior: "smooth",
// padding: "0 2rem", // space for arrows
// }}
style={{
cursor: 'grab',
overflowX: 'auto',
@ -7469,7 +7470,8 @@ const BSItemCard = (props) => {
userSelect: 'none',
textAlign: 'center',
fontWeight:
selectedBrand === brand ? 'bold' : 'normal',
selectedBrand === brand ? '600' : 'normal',
fontFamily: 'Poppins',
}}
>
{brand === 'Others' ? 'Others' : brand}

View File

@ -5618,7 +5618,8 @@ const BsBookingitemCard = (props) => {
userSelect: 'none',
textAlign: 'center',
fontWeight:
selectedBrand === brand ? 'bold' : 'normal',
selectedBrand === brand ? '600' : 'normal',
fontFamily: 'Poppins',
}}
>
{brand === 'Others' ? 'Others' : brand}
@ -6074,7 +6075,8 @@ const BsBookingitemCard = (props) => {
return (
<div
key={idx}
className={`slotTimingSelect ${isBooked
className={`slotTimingSelect ${
isBooked
? 'booked'
: isAlreadyAdded
? 'incart'

View File

@ -1,4 +1,4 @@
import React, { lazy, Suspense } from 'react';
import React, { lazy } from 'react';
import { MdEdit } from 'react-icons/md';
import { FaUserLarge } from 'react-icons/fa6';
import { BiSolidPhoneCall } from 'react-icons/bi';
@ -39,7 +39,6 @@ const BSNavBarUserInfo = ({
navigate(`${subDirectory}app-page/branch-login`);
};
return (
<Suspense fallback={<NavbarSkeleton />}>
<div ref={divRef} className="BSNavBar1-Accmenu">
<div className="BSNavBar1-Acc-menu">
{CompBranchData?.length > 1 && (
@ -99,7 +98,6 @@ const BSNavBarUserInfo = ({
</div>
</div>
</div>
</Suspense>
);
};

View File

@ -1,11 +1,4 @@
import React, {
useCallback,
useEffect,
useRef,
useState,
lazy,
Suspense,
} from 'react';
import React, { useCallback, useEffect, useRef, useState, lazy } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { useNavigate } from 'react-router-dom';
import { Badge, Popconfirm, Popover, Tooltip } from 'antd';
@ -612,7 +605,6 @@ const BSNavbar1 = (props) => {
};
return (
<Suspense fallback={<NavbarSkeleton />}>
<div
className="BSBillingNavBar1"
style={{
@ -674,9 +666,7 @@ const BSNavbar1 = (props) => {
}}
>
<FaParking
fill={
OtherServicesglobal === true ? '#52C41A' : '#1292EE'
}
fill={OtherServicesglobal === true ? '#52C41A' : '#1292EE'}
/>
</div>
</TooltipWrapper>
@ -706,10 +696,7 @@ const BSNavbar1 = (props) => {
OrderType === 'Failed' ? 'none' : 'auto',
}}
>
<BSNavBarSearch
nosearch={true}
OrderType={OrderType}
/>
<BSNavBarSearch nosearch={true} OrderType={OrderType} />
</div>
)}
</>
@ -738,11 +725,10 @@ const BSNavbar1 = (props) => {
<>
<>
{item?.OptionName == 'RePrint' && !OtherServicesglobal && (
<TooltipWrapper title="RePrint (Alt+R)" isMobile={isMobile}>
<TooltipWrapper title="Reprint (Alt+R)" isMobile={isMobile}>
<div
style={{
pointerEvents:
OrderType === 'Failed' ? 'none' : 'auto',
pointerEvents: OrderType === 'Failed' ? 'none' : 'auto',
}}
>
<BSPrinterSetting />
@ -765,8 +751,7 @@ const BSNavbar1 = (props) => {
{item?.OptionName == 'QuickAdd' && (
<div
style={{
pointerEvents:
OrderType === 'Failed' ? 'none' : 'auto',
pointerEvents: OrderType === 'Failed' ? 'none' : 'auto',
}}
>
<BSNavBarQuickAdd />
@ -791,8 +776,7 @@ const BSNavbar1 = (props) => {
{item?.OptionName == 'TakeAway' && takeAwayPreference && (
<div
style={{
pointerEvents:
OrderType === 'Failed' ? 'none' : 'auto',
pointerEvents: OrderType === 'Failed' ? 'none' : 'auto',
}}
>
<BSNavBarHandbag />
@ -819,8 +803,7 @@ const BSNavbar1 = (props) => {
// CartOrderDetails?.length > 0 &&
<div
style={{
pointerEvents:
OrderType === 'Failed' ? 'none' : 'auto',
pointerEvents: OrderType === 'Failed' ? 'none' : 'auto',
}}
>
<BSNavBarAddons />
@ -956,10 +939,7 @@ const BSNavbar1 = (props) => {
)}
{VerifyTheProducts && (
<TooltipWrapper
title={'Verfied Products'}
isMobile={isMobile}
>
<TooltipWrapper title={'Verfied Products'} isMobile={isMobile}>
<div>
<VerfiedProducts />
</div>
@ -1026,16 +1006,11 @@ const BSNavbar1 = (props) => {
<div
style={{ fontSize: '1.5rem', color: 'rgb(18, 146, 238)' }}
>
<TooltipWrapper
title="Other Services"
isMobile={isMobile}
>
<TooltipWrapper title="Other Services" isMobile={isMobile}>
<div onClick={handleotherservices}>
<FaParking
fill={
OtherServicesglobal === true
? '#52C41A'
: '#1292EE'
OtherServicesglobal === true ? '#52C41A' : '#1292EE'
}
/>
</div>
@ -1043,9 +1018,7 @@ const BSNavbar1 = (props) => {
</div>
)}
{!OtherServicesglobal &&
ScanLayoutScreen?.SettingValue === 'Y' && (
<BSScanTemplate />
)}
ScanLayoutScreen?.SettingValue === 'Y' && <BSScanTemplate />}
{!OtherServicesglobal && (
<>
@ -1207,8 +1180,7 @@ const BSNavbar1 = (props) => {
))}
{FeatureAddonData?.FeatureDtls?.find(
(item) =>
item?.FeatureAddonName?.toLowerCase() ===
'Weight Scale'
item?.FeatureAddonName?.toLowerCase() === 'Weight Scale'
) && (
<div
style={{
@ -1289,8 +1261,7 @@ const BSNavbar1 = (props) => {
<div
style={{
pointerEvents:
OrderType === 'Failed' ? 'none' : 'auto',
pointerEvents: OrderType === 'Failed' ? 'none' : 'auto',
}}
>
<BSNavBarDragItems type="small-screen" />
@ -1363,7 +1334,6 @@ const BSNavbar1 = (props) => {
}
/>
</div>
</Suspense>
);
};
export default BSNavbar1;

View File

@ -1,11 +1,4 @@
import React, {
useEffect,
useRef,
useState,
useCallback,
lazy,
Suspense,
} from 'react';
import React, { useEffect, useRef, useState, useCallback, lazy } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { useNavigate } from 'react-router-dom';
import { AiFillHome } from 'react-icons/ai';
@ -586,7 +579,6 @@ const BSNavbar2 = () => {
};
return (
<Suspense fallback={<NavbarSkeleton />}>
<div className="BSBillingNavBar2" style={{ backgroundColor: 'white' }}>
<div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>
<div>
@ -616,14 +608,16 @@ const BSNavbar2 = () => {
{OtherServiceStatus && (
<div
style={{
fontSize: '1.5rem',
// fontSize: '1.5rem',
color: 'rgb(18, 146, 238)',
position: 'sticky',
height: '32px',
}}
>
<TooltipWrapper title="Other Services" isMobile={isMobile}>
<div onClick={handleotherservices}>
<FaParking
className="FaparkingIcon"
fill={OtherServicesglobal === true ? '#52C41A' : '#1292EE'}
/>
</div>
@ -668,10 +662,9 @@ const BSNavbar2 = () => {
<div style={{ display: 'flex', alignItems: 'center' }}>
<div style={{ display: 'flex', flexGrow: '1' }}>
<>
{item?.OptionName == 'RePrint' &&
!OtherServicesglobal && (
{item?.OptionName == 'RePrint' && !OtherServicesglobal && (
<TooltipWrapper
title="RePrint (Alt+R)"
title="Reprint (Alt+R)"
isMobile={isMobile}
>
<div
@ -906,8 +899,7 @@ const BSNavbar2 = () => {
)}
{FeatureAddonData?.FeatureDtls?.find(
(item) =>
item?.FeatureAddonName?.toLowerCase() === 'customer display'
(item) => item?.FeatureAddonName?.toLowerCase() === 'customer display'
) && (
<TooltipWrapper title="Customer Display" isMobile={isMobile}>
<div
@ -963,16 +955,11 @@ const BSNavbar2 = () => {
<div
style={{ fontSize: '1.5rem', color: 'rgb(18, 146, 238)' }}
>
<TooltipWrapper
title="Other Services"
isMobile={isMobile}
>
<TooltipWrapper title="Other Services" isMobile={isMobile}>
<div onClick={handleotherservices}>
<FaParking
fill={
OtherServicesglobal === true
? '#52C41A'
: '#1292EE'
OtherServicesglobal === true ? '#52C41A' : '#1292EE'
}
/>
</div>
@ -1009,8 +996,7 @@ const BSNavbar2 = () => {
)} */}
{navbarOptions?.map((item) => (
<>
{item?.OptionName == 'RePrint' &&
!OtherServicesglobal && (
{item?.OptionName == 'RePrint' && !OtherServicesglobal && (
<div
style={{
pointerEvents:
@ -1145,8 +1131,7 @@ const BSNavbar2 = () => {
<>
{FeatureAddonData?.FeatureDtls?.find(
(item) =>
item?.FeatureAddonName?.toLowerCase() ===
'Weight Scale'
item?.FeatureAddonName?.toLowerCase() === 'Weight Scale'
) && (
<div
style={{
@ -1161,8 +1146,7 @@ const BSNavbar2 = () => {
<>
{FeatureAddonData?.FeatureDtls?.find(
(item) =>
item?.FeatureAddonName?.toLowerCase() ===
'preorder'
item?.FeatureAddonName?.toLowerCase() === 'preorder'
) && (
<div
style={{
@ -1234,8 +1218,7 @@ const BSNavbar2 = () => {
)}
<div
style={{
pointerEvents:
OrderType === 'Failed' ? 'none' : 'auto',
pointerEvents: OrderType === 'Failed' ? 'none' : 'auto',
}}
>
<BSNavBarDragItems type="small-screen" />
@ -1331,7 +1314,6 @@ const BSNavbar2 = () => {
}
/>
</div>
</Suspense>
);
};
export default BSNavbar2;

View File

@ -1,12 +1,4 @@
import {
useState,
useEffect,
useRef,
useCallback,
useMemo,
lazy,
Suspense,
} from 'react';
import { useState, useEffect, useRef, useCallback, useMemo, lazy } from 'react';
import { useNavigate } from 'react-router-dom';
import { useDispatch, useSelector, shallowEqual } from 'react-redux';
import {
@ -596,7 +588,6 @@ const BSNavbar3 = ({ optionNames }) => {
};
return (
<Suspense fallback={<NavbarSkeleton />}>
<>
<div className="BSNavbar3Main">
<div className="homeTime">
@ -631,9 +622,7 @@ const BSNavbar3 = ({ optionNames }) => {
justifyContent: 'center',
cursor: 'pointer',
}}
fill={
OtherServicesglobal === true ? '#52C41A' : '#1292EE'
}
fill={OtherServicesglobal === true ? '#52C41A' : '#1292EE'}
/>
</div>
</TooltipWrapper>
@ -792,10 +781,7 @@ const BSNavbar3 = ({ optionNames }) => {
)}
{!sportsAppPreference && (
<div
className="FaTruckIconFavItem"
style={{ padding: '4px 6px' }}
>
<div className="FaTruckIconFavItem" style={{ padding: '4px 6px' }}>
{renderWithTooltip(
<BSNavBarFavItems
size={41}
@ -894,9 +880,7 @@ const BSNavbar3 = ({ optionNames }) => {
<Tooltip title={isFullscreen ? 'Exit Full Screen' : 'Full Screen'}>
<div
className={
isFullscreen
? 'BsNavbar3FullScreenExit'
: 'BsNavbar3FullScreen'
isFullscreen ? 'BsNavbar3FullScreenExit' : 'BsNavbar3FullScreen'
}
onClick={handleFullscreen}
>
@ -1001,10 +985,7 @@ const BSNavbar3 = ({ optionNames }) => {
</div>
)}
{quickAddOption && (
<div
className="mobile-action-item"
onClick={handleQuickAddOpen}
>
<div className="mobile-action-item" onClick={handleQuickAddOpen}>
{renderWithTooltip(<FaPlus size={30} />, 'Quick Add', 'top')}
<div>Quick Add</div>
</div>
@ -1103,10 +1084,7 @@ const BSNavbar3 = ({ optionNames }) => {
}
}}
>
<TooltipWrapper
title={'Verfied Products'}
isMobile={isMobile}
>
<TooltipWrapper title={'Verfied Products'} isMobile={isMobile}>
<div>
<VerfiedProducts
drawerOpen={drawerOpen}
@ -1170,8 +1148,7 @@ const BSNavbar3 = ({ optionNames }) => {
<div
className="BSBillingNavBar2-AllIcons"
style={{
pointerEvents:
orderType === 'Failed' ? 'none' : 'auto',
pointerEvents: orderType === 'Failed' ? 'none' : 'auto',
}}
>
<div className="mobile-action-item" onClick={() => {}}>
@ -1236,7 +1213,6 @@ const BSNavbar3 = ({ optionNames }) => {
/>
)}
</>
</Suspense>
);
};

View File

@ -1,9 +1,20 @@
import { extractLastNumber, getSession } from '../../../../Services/Others';
import moment from 'moment';
const OtherServiceMobilePrint = async (PrintDetails, Mode, Preference, Token) => {
console.log(PrintDetails, Mode, Preference, Token, PrintDetails?.[0]?.OtherServicesTicketDetails,'PrintDetails, UpiId, Mode, Preference, Token');
const OtherServiceMobilePrint = async (
PrintDetails,
Mode,
Preference,
Token
) => {
console.log(
PrintDetails,
Mode,
Preference,
Token,
PrintDetails?.[0]?.OtherServicesTicketDetails,
'PrintDetails, UpiId, Mode, Preference, Token'
);
let Otherservicesdetails = PrintDetails?.[0]?.OtherServicesTicketDetails;
let Otherservicesdetails1 = PrintDetails;
@ -12,8 +23,12 @@ let UpiId = PrintDetails?.[0]?.TicketNo;
let PrintDetail;
let PaymentDetail;
let PrintLogo = Preference?.[0]?.SettingDtlDetails?.filter((i) => i.SettingIdName === 'PrintLogo' )?.[0];
let PrintGreeting = Preference?.[0]?.SettingDtlDetails?.filter((i) => i.SettingIdName === 'PrintGreetings' )?.[0];
let PrintLogo = Preference?.[0]?.SettingDtlDetails?.filter(
(i) => i.SettingIdName === 'PrintLogo'
)?.[0];
let PrintGreeting = Preference?.[0]?.SettingDtlDetails?.filter(
(i) => i.SettingIdName === 'PrintGreetings'
)?.[0];
if (Mode === 'Reprint') {
PrintDetail = PrintDetails?.[0]?.OtherServicesTicketDetails;
PaymentDetail = PrintDetails?.[0]?.OtherServicesTicketDetails;
@ -31,7 +46,7 @@ let UpiId = PrintDetails?.[0]?.TicketNo;
let FooterPrint = '';
let OrderId;
let receiptTextest = '';
let totalAmt = PrintDetail?.[0]?.NetAmount
let totalAmt = PrintDetail?.[0]?.NetAmount;
// let totalestAmt = PrintDetail?.find((a) => a.OrderType === 'E')?.NetAmount
// ? PrintDetail?.find((a) => a.OrderType === 'E')?.NetAmount
@ -274,15 +289,15 @@ OrderIdSales = PrintDetail?.find((a) => a.OrderType === 'S')?.OrderId
const snoSpacing = Math.max(0, 3 - String(index + 1).length);
const rateSpacing = Math.max(0, 6 - String(data?.Rate).length);
const qtySpacing = Math.max(0, 3 - String(data?.Qty).length);
const totalAmtSpacing = Math.max(0,1 - String(data?.TotalAmount).length);
const totalAmtSpacing = Math.max(
0,
1 - String(data?.TotalAmount).length
);
let formattedString =
' '.repeat(snoSpacing) +
parseInt(index + 1) +
' ' +
(
data?.ServiceName + ' '.repeat(20)
).substring(0, 20) +
(data?.ServiceName + ' '.repeat(20)).substring(0, 20) +
' ' +
' '.repeat(qtySpacing) +
String(data?.Qty);
@ -294,7 +309,6 @@ OrderIdSales = PrintDetail?.find((a) => a.OrderType === 'S')?.OrderId
' '.repeat(rateSpacing) +
String(data?.Rate) +
' ' +
' '.repeat(totalAmtSpacing) +
String(data?.TotalAmount) +
' ' +
@ -337,10 +351,10 @@ OrderIdSales = PrintDetail?.find((a) => a.OrderType === 'S')?.OrderId
'S.No' +
' ' +
' Name ' +
(' ') +
' ' +
' ' +
'Qty ' +
('') + // Add Disc column conditionally
'' + // Add Disc column conditionally
' ' +
'Rate ' +
' ' +
@ -390,8 +404,7 @@ OrderIdSales = PrintDetail?.find((a) => a.OrderType === 'S')?.OrderId
Otherservicesdetails1?.[0]?.Address1 !== null &&
Otherservicesdetails1?.[0]?.Address1 !== undefined
) {
BranchAddress =
'[C]' + Otherservicesdetails1?.[0]?.Address1 + '\n';
BranchAddress = '[C]' + Otherservicesdetails1?.[0]?.Address1 + '\n';
} else {
BranchAddress = '';
}
@ -405,7 +418,8 @@ OrderIdSales = PrintDetail?.find((a) => a.OrderType === 'S')?.OrderId
Otherservicesdetails1?.[0]?.BrMobile !== undefined &&
Otherservicesdetails1?.[0]?.BrMobile !== ''
) {
MobileNumber = '[C]<b>Ph:' + Otherservicesdetails1?.[0]?.BrMobileNo + '</b>\n';
MobileNumber =
'[C]<b>Ph:' + Otherservicesdetails1?.[0]?.BrMobileNo + '</b>\n';
} else {
MobileNumber = '';
}
@ -519,7 +533,7 @@ OrderIdSales = PrintDetail?.find((a) => a.OrderType === 'S')?.OrderId
'ImgE' +
TypeCheck +
'OthTypS' +
"OtherService" +
'OtherService' +
'OthTypE' +
'OthqrS' +
UpiId +
@ -547,6 +561,5 @@ OrderIdSales = PrintDetail?.find((a) => a.OrderType === 'S')?.OrderId
'HasFooterTextE' +
';end;';
}
};
export default OtherServiceMobilePrint;

View File

@ -1,11 +1,4 @@
import {
useEffect,
useRef,
useState,
useCallback,
lazy,
Suspense,
} from 'react';
import { useEffect, useRef, useState, useCallback, lazy } from 'react';
import { shallowEqual, useDispatch, useSelector } from 'react-redux';
import moment from 'moment';
import { Form, Radio } from 'antd';
@ -2173,7 +2166,6 @@ const SplitPayment = (props) => {
}
return (
<Suspense fallback={<div>Loading...</div>}>
<>
<Messages messageType={messageType} messageData={messageData} />
<div className="splitmodal">
@ -2366,7 +2358,6 @@ const SplitPayment = (props) => {
/>
)}
</>
</Suspense>
);
};
export default SplitPayment;

View File

@ -20,6 +20,7 @@ const AllSalesPageSettings = () => {
<>
<TooltipWrapper>
<div
className="allpageSettingIcon"
onClick={() => setsettingModal(true)}
style={{
cursor: 'pointer',

View File

@ -356,7 +356,7 @@ const BSLayout1 = () => {
{BookingNavbar != 'Navbar3' ? (
<div
className="Layout-bill-container"
style={{ marginTop: '9px' }}
style={{ marginTop: '12px' }}
>
<div
className="Layout-bill-Subcontainer"

View File

@ -342,9 +342,7 @@ const BSLayout2 = () => {
(AppExpDate?.RemainingDays <= 7 ||
AppExpDate === 'undefined' ||
AppExpDate?.PlanType?.toLowerCase() === 'extend') && (
<Suspense fallback={<NavbarSkeleton />}>
<PlanExpireNotification />
</Suspense>
)}
<div
className="BSLayout2-Master"

View File

@ -75,6 +75,7 @@ import {
StoredSessionData,
} from '../../../../Features/ThemeChange/ThemeChange.js';
import './../../../../Styles/BookingScreen/Template/BSLayout7/Combo1.scss';
import '../../../../Styles/BookingScreen/Components/BSBillingTables/BSBillingTable6/BST6Payment.scss';
import {
GLobalSadminUserPin,
putSadminUserExit,
@ -124,6 +125,7 @@ const VerfiedProducts = lazy(
);
import ShortcutKeyHelper from '../../Components/UtillComponents/ShortcutKeyHelper.jsx';
import PlanExpireNotification from '../PlanExpireNotification.jsx';
import CardSkeleton from '../../../../Components/Skeleton/CardSkeleton.jsx';
const subDirectory = import.meta.env.BASE_URL;
const commonDirectory = import.meta.env.COMMON_BASE_URL;
@ -361,7 +363,7 @@ export default function BSCombo1() {
handleClick();
}, []);
return (
<Suspense fallback={<div>Loading...</div>}>
<Suspense fallback={<CardSkeleton />}>
<>
<Messages
messageType={messageType}
@ -381,6 +383,7 @@ export default function BSCombo1() {
<div className="SearchSubnavbar-combo">
<BSC1NavBar />
<div className="comboNavbarSubMain">
<div className="SearchNavMutiple">
{/* Multiple search */}
<Tooltip title={'Multiple Search'}>
<div className="MultiSearchIconDiv">
@ -416,6 +419,7 @@ export default function BSCombo1() {
</div>
</Tooltip>
)}
</div>
{/* <div className="Layout-bill-container" style={{ margin: '0' }}> */}
<div className="Layout-bill-Subcontainer ComboSubNavbar">
@ -576,24 +580,17 @@ export default function BSCombo1() {
</div>
)}
</div>
{/* {preferenceshortcutkey && (
<div className="keyboardShortcut">
<ShortcutKeyHelper />
</div>)} */}
</div>
</div>
{/* </div> */}
</div>
</div>
<div
// className="BSC1-Master" comment by sree here this class name issues
className="ComboScreenPageTable"
style={{
height: isMobile ? '56vh' : '70vh',
overflow: 'hidden',
}}
>
{/* <div className="BS1ComboTable"> */}
<div
className={
ComboSalesBillTable

View File

@ -1,32 +1,20 @@
import {
useCallback,
useEffect,
useRef,
useState,
lazy,
Suspense,
} from 'react';
import { useCallback, useEffect, useRef, useState, lazy } from 'react';
import { useNavigate, useOutletContext } from 'react-router-dom';
import { shallowEqual, useDispatch } from 'react-redux';
import { useSelector } from 'react-redux';
import { DatePicker, Tooltip } from 'antd';
import dayjs from 'dayjs';
import '../../Styles/DashBoard/RetailDashBoard.scss';
const GraphChart = lazy(() => import('./Chart/GraphChart'));
const TopSellingProductsChart = lazy(
() => import('./TopSellingProductsChart.jsx')
);
import sandClock from '../../Images/sandClock.webp';
import Add from '../../Images/dashboard/Add.webp';
import AddPurchase from '../../Images/dashboard/AddPurchase.webp';
import invoice from '../../Images/dashboard/invoice.webp';
import user from '../../Images/dashboard/user.webp';
import report from '../../Images/dashboard/report.webp';
import {
GlobalPricingAppPricingName,
StoredSessionData,
@ -78,13 +66,11 @@ const DefaultModal = lazy(() =>
default: m.DefaultModal,
}))
);
const RadioGrpButton = lazy(() =>
import('../../Components/Forms/RadioGroup.jsx').then((m) => ({
default: m.RadioGrpButton,
}))
);
const DropDowns = lazy(() =>
import('../../Components/Forms/DropDown.jsx').then((m) => ({
default: m.DropDowns,
@ -1436,7 +1422,6 @@ const RetailDashboard = () => {
?.toUpperCase()}
</div>
{userprofile && (
<Suspense fallback={null}>
<BSNavBarUserInfo
isOpen={userprofile}
divRef={userProfileRef}
@ -1447,7 +1432,6 @@ const RetailDashboard = () => {
}}
Logout={Logout}
/>
</Suspense>
)}
</div>
</div>
@ -1464,7 +1448,6 @@ const RetailDashboard = () => {
{/* Branch Filter Dropdown */}
{CompBranchData?.length > 1 && selection !== 'top-selling-products' && (
<div className="branch-filter-dropdown">
<Suspense fallback={<div>Loading...</div>}>
<DropDowns
options={[
{ value: 'all', label: 'All Branches' },
@ -1479,7 +1462,6 @@ const RetailDashboard = () => {
defaultValue="all"
placeholder="All Branches"
/>
</Suspense>
</div>
)}
@ -1500,9 +1482,7 @@ const RetailDashboard = () => {
<div className="TotalRevenue">
<div className="tlxHeader"></div>
<div className="TotalRevenue-Graph">
<Suspense fallback={<Loader />}>
<GraphChart datasets={datasets} />
</Suspense>
</div>
</div>
@ -2375,7 +2355,6 @@ const RetailDashboard = () => {
</>
) : (
<>
<Suspense fallback={<Loader />}>
<TopSellingProductsChart
dates={dates}
products={products}
@ -2386,10 +2365,8 @@ const RetailDashboard = () => {
fetchProducts={fetchProducts}
initialDate={initialDate}
/>
</Suspense>
</>
)}
<Suspense fallback={null}>
<DefaultModal
open={modal}
title="Authentication"
@ -2413,7 +2390,6 @@ const RetailDashboard = () => {
/>
<div style={{ display: 'flex', justifyContent: 'space-between' }}>
<div className="RadioButton">
<Suspense fallback={<div>Loading...</div>}>
<RadioGrpButton
content={[
{ value: 'O', label: 'OTP' },
@ -2423,7 +2399,6 @@ const RetailDashboard = () => {
defaultSelect={SelectType}
onSelectFuntion={(e) => ChangeMethod(e)}
/>
</Suspense>
</div>
</div>
@ -2478,7 +2453,6 @@ const RetailDashboard = () => {
</div>
</>
</DefaultModal>
</Suspense>
</div>
);
};

View File

@ -341,7 +341,6 @@ const TopSellingProducts = ({
</div>
</div>
<Suspense fallback={<div>Loading...</div>}>
<DropDowns
className={'item-range-dropdown'}
valueData={page}
@ -364,7 +363,6 @@ const TopSellingProducts = ({
}}
isOnchanges={page ? true : false}
/>
</Suspense>
</div>
</div>

View File

@ -13,7 +13,15 @@ import {
PlusCircleOutlined,
SearchOutlined,
} from '@ant-design/icons';
import { Form, Tooltip, Table, Input, AutoComplete, Switch, Checkbox } from 'antd';
import {
Form,
Tooltip,
Table,
Input,
AutoComplete,
Switch,
Checkbox,
} from 'antd';
import { IoAddCircleSharp } from 'react-icons/io5';
import { InputField } from '../../Components/Forms/InputField.jsx';
import Buttons from '../../Components/Forms/Buttons.jsx';
@ -39,7 +47,7 @@ import {
putStockData,
} from '../../Features/StockMaster/StockMaster.js';
import '../../Styles/Stock/StockMaster.scss';
import "../../Styles/OverAllStyle/OverAllStyle.scss"
import '../../Styles/OverAllStyle/OverAllStyle.scss';
import {
getAdmin,
getUomData,
@ -708,7 +716,10 @@ const StockForm = ({ formType }) => {
}));
const bulkResponse = await dispatch(
bulkpostdata({ UploadType: 'Purchase', ProdDetails: newProductsData })
bulkpostdata({
UploadType: 'Purchase',
ProdDetails: newProductsData,
})
).unwrap();
if (bulkResponse?.data?.statusCode === 1) {
@ -3437,11 +3448,12 @@ const StockForm = ({ formType }) => {
/>
</Tooltip>
</Form.Item>
{orderType && <Form.Item
name="showAll"
valuePropName="checked"
{orderType && (
<Form.Item name="showAll" valuePropName="checked">
<Tooltip
title="Show all branches and warehouses"
placement="top"
>
<Tooltip title="Show all branches and warehouses" placement="top">
<span>
<Checkbox
checked={showAllSuppliers}
@ -3449,7 +3461,9 @@ const StockForm = ({ formType }) => {
const checked = e.target.checked;
setShowAllSuppliers(checked);
setInitialLoad(true);
getSuplaierApi({ Type: checked ? 'Y' : null });
getSuplaierApi({
Type: checked ? 'Y' : null,
});
}}
>
All
@ -3457,12 +3471,11 @@ const StockForm = ({ formType }) => {
</span>
</Tooltip>
</Form.Item>
}
)}
</div>
{!selectedSupplierName && (
<RadioGrpButton
content={[
{ value: 'own', label: 'Own' },
{ value: 'paid', label: 'With paid' },
@ -3474,7 +3487,6 @@ const StockForm = ({ formType }) => {
/>
)}
<div className="pe-inward-date">
<label className="required">Inward Date</label>

View File

@ -3,11 +3,10 @@
flex-direction: column;
justify-content: space-between;
gap: 0.5rem;
font-family: 'Poppins';
font-family: "Poppins";
.ant-form {
line-height: 2.3 !important;
}
}
.EditQuantity-Itemname {
display: flex;
@ -21,14 +20,11 @@
.EditQuantity-headingname {
display: flex;
align-items: center;
// width: 20rem;
}
.EditQuantity-headingproductname {
display: flex;
align-items: center;
font-size: 14px;
// padding: 1rem;
// width: 25rem;
}
.EditQuantity-title {
.formHeader {
@ -52,7 +48,6 @@
}
.gridEQitem {
background-color: rgba(255, 255, 255, 0.8);
// border: 1px solid rgba(0, 0, 0, 0.8);
padding: 5px;
font-size: 30px;
text-align: center;
@ -70,13 +65,11 @@
.grid-item-add {
background-color: var(--SELECTED_COLOR);
color: #e1eef1;
// border: 1px solid rgba(0, 0, 0, 0.8);
padding: 8px 5px 5px 5px;
font-size: 23px;
text-align: center;
border-radius: 25px;
margin: 6px;
// margin-left: 10px;
}
.EditQuantity-mealicon {
color: #0268ba;
@ -195,7 +188,7 @@
border-radius: 4.982px;
padding: 5px 6px;
height: 2rem;
font-family: 'Poppins';
font-family: "Poppins";
}
.SelecBtn {
background-color: var(--SELECTED_COLOR);
@ -210,7 +203,7 @@
border-radius: 4.982px;
padding: 5px 6px;
height: 2rem;
font-family: 'Poppins';
font-family: "Poppins";
}
.RadioButtons {
display: flex;

View File

@ -69,7 +69,7 @@ input::-webkit-inner-spin-button {
.price-button {
border-radius: 8px;
border: 0px solid none;
border: none;
font-size: 24px;
font-weight: 600;
background-color: var(--SELECTED_COLOR);
@ -78,6 +78,7 @@ input::-webkit-inner-spin-button {
width: max-content;
padding: 0px 12px;
cursor: pointer;
height: 40px;
}
.price-button-disabled {
@ -143,7 +144,7 @@ input::-webkit-inner-spin-button {
justify-content: center;
gap: 0.2rem;
background-color: #dbdbdb;
font-family: 'Poppins', sans-serif;
font-family: "Poppins", sans-serif;
}
.payment-div-0-userplus {
@ -238,3 +239,38 @@ input::-webkit-inner-spin-button {
.ChairClrGreen {
color: var(--SELECTED_COLOR);
}
.Btn-payment-mode-sel {
background-color: var(--DEFAULT_SELECTED_COLOR);
font-size: 14px;
font-weight: 500;
height: 40px;
width: 75px;
border-radius: 7.2px;
color: #fff;
padding: 3px;
display: flex;
gap: 0.2rem;
align-items: center;
font-family: "Poppins";
justify-content: center;
cursor: pointer;
text-transform: capitalize;
}
.Btn-payment-mode {
background-color: var(--SELECTED_COLOR);
font-size: 14px;
font-weight: 500;
height: 40px;
width: 75px;
border-radius: 7.2px;
color: #fff;
padding: 3px;
display: flex;
gap: 0.2rem;
align-items: center;
font-family: "Poppins";
justify-content: center;
cursor: pointer;
text-transform: capitalize;
}

View File

@ -89,7 +89,7 @@
.BSBill-Table4 th {
border-spacing: 0;
text-align: center;
font-size: 16px;
font-size: 14px;
font-style: normal;
font-weight: 400;
line-height: normal;
@ -277,6 +277,8 @@
background: var(--SELECTED_COLOR);
text-align: center;
border: 0;
color: #fff;
cursor: pointer;
}
.Table4-Btn-final-price-disabled {

View File

@ -5,24 +5,12 @@
background-color: #fff;
width: inherit;
overflow: auto;
// height: clamp(70vh, 50vh, 40vh);
// height: 85vh;
//vm
height: 80vh;
}
.BSBillingTable5-table-master-div-6 {
//vm
height: 70vh;
}
// .BSLayout5-Master .BSBillingTable5-table-master-div {
// height: 91vh !important;
// }
// .BSLayout5-Master .BSBilling4TableCont-default {
// height: 93vh;
// }
.BSLayout5-Master .AddFavList {
left: 0;
height: 95vh;
@ -46,11 +34,6 @@
justify-items: center;
}
.BSBillingTable5-billtable {
// height:100Vh;
// overflow: auto;
}
.BSC1-Master .BSBillingTable5-billtable {
height: 100%;
overflow: auto;
@ -66,7 +49,6 @@
display: flex;
align-items: center;
gap: 1rem;
// margin-bottom: 10px;
}
.BSBillingTable-title {
@ -108,7 +90,6 @@
}
.BSBillingTable5-table-td {
// border: 1px solid #dddddd;
border-bottom: 1.9px dashed #000;
text-align: left;
padding: 8px;
@ -119,7 +100,6 @@
}
.BSBillingTable5-table-th {
// border: 1px solid #dddddd;
border-bottom: 1.9px solid #000;
padding: 10px;
text-align: center;
@ -130,25 +110,23 @@
}
.BSBillingTable5-table-notes {
font-size: '14px';
font-size: "14px";
font-weight: 500;
}
.BSBillingTable5-table-cont {
text-align: left;
line-height: 1.5;
font-size: 15px;
font-size: 14px;
}
.BSBillingTable5-table-sub-td {
// display: flex;
font-size: 14px;
font-weight: 500;
color: #52c41a;
}
.BSBillingTable5-table-tr:nth-child(even) {
// background-color: #dddddd;
text-align: center;
}
@ -751,32 +729,6 @@ select:focus-visible {
}
}
/* For screens between 768px and 991px (e.g., tablets) */
// @media (min-width: 768px) and (max-width: 991px) {
// .BSBillingTable-oCbtn {
// position: fixed !important;
// z-index: 1;
// }
// .BSBillingTable5-billtable,{
// display: none !important;
// }
// .BSLayout2-bSlayer {
// position: fixed;
// right: 0;
// }
// .BSBIllingTable5-mobscrn {
// position: fixed;
// bottom: 0;
// height: 6rem;
// // width: 100%;
// background-color: #fff;
// }
// }
/* For screens larger than 992px (e.g., desktops) */
@media (min-width: 991px) and (max-width: 1364px) {
.BSBillingTable-oCbtn {
position: fixed !important;

View File

@ -15,7 +15,7 @@ input::-webkit-inner-spin-button {
letter-spacing: 0em;
text-align: center;
border: none;
font-family: 'Poppins', sans-serif;
font-family: "Poppins", sans-serif;
}
.BST6Payment-Button-pay {
@ -29,7 +29,7 @@ input::-webkit-inner-spin-button {
text-align: center;
border: none;
cursor: pointer;
font-family: 'Poppins', sans-serif;
font-family: "Poppins", sans-serif;
}
.BST6Payment-Button-pay-disabled {
@ -43,7 +43,7 @@ input::-webkit-inner-spin-button {
text-align: center;
border: none;
cursor: pointer;
font-family: 'Poppins', sans-serif;
font-family: "Poppins", sans-serif;
pointer-events: none;
opacity: 0.5;
}
@ -64,7 +64,7 @@ input::-webkit-inner-spin-button {
font-weight: 600;
color: #fff;
cursor: pointer;
font-family: 'Poppins', sans-serif;
font-family: "Poppins", sans-serif;
}
.BST6Payment-Button-RECIEVED {
@ -73,7 +73,7 @@ input::-webkit-inner-spin-button {
border-radius: 8.3px;
border: 0.83px solid #8e8e8e;
font-size: 12px;
font-family: 'Poppins', sans-serif;
font-family: "Poppins", sans-serif;
text-align: center;
}
@ -83,7 +83,7 @@ input::-webkit-inner-spin-button {
border-radius: 8.3px;
border: 0.83px solid #ff4d4f;
font-size: 12px;
font-family: 'Poppins', sans-serif;
font-family: "Poppins", sans-serif;
text-align: center;
}
@ -97,7 +97,7 @@ input::-webkit-inner-spin-button {
border-radius: 8.3px;
border: 0.83px solid #8e8e8e;
font-size: 12px;
font-family: 'Poppins', sans-serif;
font-family: "Poppins", sans-serif;
text-align: center;
}
@ -123,9 +123,6 @@ input::-webkit-inner-spin-button {
flex-direction: row;
gap: 2rem;
align-items: center;
// margin-bottom: 15px;
// padding-right: 10px;
// align-items: center;
}
.BST6Payment-Paydiv {
@ -176,7 +173,7 @@ input::-webkit-inner-spin-button {
display: flex;
gap: 0.2rem;
align-items: center;
font-family: 'Poppins';
font-family: "Poppins";
justify-content: center;
cursor: pointer;
text-transform: capitalize;
@ -207,19 +204,22 @@ input::-webkit-inner-spin-button {
.Btn-payment-mode {
background-color: var(--SELECTED_COLOR);
font-size: 14px;
font-size: 13px !important;
font-weight: 500;
height: 40px;
width: 100px;
flex-grow: 1;
flex: 1;
width: max-content !important;
border-radius: 7.2px;
color: #fff;
padding: 3px;
display: flex;
gap: 0.2rem;
align-items: center;
font-family: 'Poppins';
font-family: "Poppins";
justify-content: center;
cursor: pointer;
border: none;
text-transform: capitalize;
@media (max-width: 992px) {
font-size: 11px;
@ -240,20 +240,23 @@ input::-webkit-inner-spin-button {
.Btn-payment-mode-sel {
background-color: var(--DEFAULT_SELECTED_COLOR);
font-size: 14px;
font-size: 13px !important;
font-weight: 500;
height: 40px;
width: 100px;
width: max-content !important;
flex: 1;
flex-grow: 1;
border-radius: 7.2px;
color: #fff;
padding: 3px;
display: flex;
gap: 0.2rem;
align-items: center;
font-family: 'Poppins';
font-family: "Poppins";
justify-content: center;
cursor: pointer;
text-transform: capitalize;
border: none;
@media (max-width: 992px) {
font-size: 11px;
height: 35px;

View File

@ -45,11 +45,8 @@
.BSBill-Table7 th {
position: sticky;
border-spacing: 0;
// color: black;
text-align: center;
font-size: 16px;
font-style: normal;
font-weight: 600;
@ -59,10 +56,9 @@
.BSBill-Table7-content {
background-color: rgba(235, 235, 236, 1);
height: 3rem;
font-size: 14px;
font-size: 13px;
font-style: normal;
font-weight: 600;
font-weight: 500;
}
.BSBill-Table7-content-disabled {
@ -164,9 +160,7 @@
margin: 10px 10px;
}
.Table7-customer
.ant-select-single:not(.ant-select-customize-input)
.ant-select-selector {
.Table7-customer .ant-select-single:not(.ant-select-customize-input) .ant-select-selector {
width: 10rem;
height: 3rem;
text-align: center;
@ -178,9 +172,7 @@
font-weight: 600;
}
.Table7-customer
.ant-select-single.ant-select-show-arrow
.ant-select-selection-placeholder {
.Table7-customer .ant-select-single.ant-select-show-arrow .ant-select-selection-placeholder {
color: #000;
padding-inline-end: 0px !important;
}
@ -274,14 +266,12 @@
}
.BSBill-Table7 th {
// font-weight: 400 !important;
padding: 2px;
}
.BSBill-Table7-content {
font-size: 14px;
font-style: normal;
// font-weight: 400;
}
.Table7-items {
@ -327,7 +317,7 @@
.Table7-rate {
display: flex;
font-family: 'Poppins', sans-serif;
font-family: "Poppins", sans-serif;
font-size: 32.203px;
font-style: normal;
font-weight: bold;
@ -347,7 +337,6 @@
.icon-button {
height: 30px;
// width:30px;
border-radius: 30px;
padding: 0px;
margin: 6px 6px;
@ -419,13 +408,9 @@
.BSBilling7-vertical-line {
width: 1px;
/* Adjust the width as needed */
height: 100%;
/* This will make the line span the entire height of its container */
background-color: #000;
/* Change the background color to your desired color */
margin: 0 10px;
/* Adjust margin as needed to position the line */
}
hr.Table7-Dotted-Line1 {
@ -478,7 +463,6 @@ hr.Table7-Dotted-Line1 {
}
.edit-btn-table:focus {
// background-color: #ffdb3a;
background-color: #fff;
color: var(--SELECTED_COLOR) !important;
border: solid 1px var(--SELECTED_COLOR);
@ -514,10 +498,6 @@ hr.Table7-Dotted-Line1 {
justify-content: flex-end;
}
.radio-button-group .item {
// width: 100%;
}
.radio-button-group .radio-button {
position: absolute;
width: 1px;
@ -528,16 +508,14 @@ hr.Table7-Dotted-Line1 {
.radio-button-group .radio-button + label {
padding: 4px 10px;
cursor: pointer;
// border: 1px solid #CCC;
border: none;
margin-right: -2px;
color: #ffffff;
background-color: var(--DEFAULT_SELECTED_COLOR);
font-family: 'gilroy';
font-family: "gilroy";
font-size: 13px;
font-weight: 600;
display: block;
// text-transform: uppercase;
text-align: center;
}

View File

@ -123,6 +123,8 @@
align-items: center;
border: none;
column-gap: 0rem;
width: max-content;
height: 2rem;
border-radius: 4.982px;
padding: 5px 6px;
height: 2rem;

View File

@ -9,6 +9,10 @@
.RiVerifiedBadgeFill {
color: #1292ee !important;
}
.FaparkingIcon {
width: 32px !important;
height: 32px !important;
}
}
.BSBillingNav2div2 {

View File

@ -305,6 +305,7 @@
.BSBillingNav-icon {
color: #ffffff !important;
transition: all 0.2s ease-in-out;
width: 30px !important;
&:hover {
color: #1292ee !important;
}

View File

@ -25,11 +25,11 @@
height: 100%;
@media (max-width: 768px) {
top: 2rem;
top: 3.5rem;
}
@media (max-width: 500px) {
top: 2rem;
top: 3rem;
}
}

View File

@ -1,8 +1,4 @@
.BSC1Search-container {
// display: flex;
// flex-direction: row;
// padding: 0.5rem 0 0 1.5rem;
// gap: 0.5rem;
width: 100%;
display: flex;
flex-direction: row;
@ -143,7 +139,6 @@
scrollbar-width: thin;
}
.ItemQtyCard {
display: flex;
justify-content: center;
@ -195,3 +190,54 @@
flex-direction: column;
row-gap: 1rem;
}
.qtyDetail {
display: flex;
flex-direction: column;
justify-content: center;
column-gap: 0.1rem;
border-radius: 2px;
}
.qtyUomName {
font-size: 15px;
font-weight: 600;
font-family: "Gilroy";
text-align: center;
}
.qtyprice {
font-size: 16px;
background-color: var(--DEFAULT_SELECTED_COLOR);
color: #fff;
width: 105px;
display: flex;
font-family: var(--PARA_FONT_FAMILY);
justify-content: center;
text-align: center;
border-bottom-left-radius: 6px;
border-bottom-right-radius: 6px;
}
.ItemQtyImgCard {
display: flex;
align-items: center;
justify-content: center;
}
.EditQuantity-heading {
display: flex;
align-items: center;
width: 25rem;
}
.EditQuantity-headingname {
display: flex;
align-items: center;
// width: 20rem;
}
.EditQuantity-headingproductname {
display: flex;
align-items: center;
font-size: 14px;
// padding: 1rem;
// width: 25rem;
}

View File

@ -630,6 +630,22 @@
align-items: center;
justify-content: center;
gap: 10px;
.allpageSettingIcon {
width: 32px;
height: 32px;
background-color: #1292ee !important;
border-radius: 6px;
display: flex;
align-items: center;
justify-content: center;
padding: 5px !important;
color: #fff;
font-size: 25px !important;
svg {
height: 30px !important;
width: 30px !important;
}
}
.comboPrichangeBTN {
width: 32px;
@ -704,23 +720,35 @@
}
}
.MultiSearchIconDiv3 {
background-color: #ffffff;
color: #1292ee !important;
.MultiSearchIconDiv {
background-color: #1292ee;
color: #fff !important;
border-radius: 4px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
width: 32px !important;
height: 32px;
padding: 4px;
width: 35px !important;
height: 33px;
padding: 6px;
svg {
font-size: 22px;
width: 32px !important;
height: 32px;
width: 35px !important;
height: 35px;
display: flex;
}
}
.AsAmtCombo {
svg {
height: 25px;
}
}
.SearchNavMutiple {
display: flex;
align-items: center;
gap: 0;
width: inherit;
}

View File

@ -2,8 +2,7 @@
display: flex;
flex-direction: column;
align-items: flex-start;
// border: 0.3px solid black;
width: 95%;
width: 100%;
}
.product-qty-info {
@ -60,9 +59,6 @@
align-items: center;
}
// .Product-table .ant-table{
// width:90%;
// }
.supplierInfo {
display: flex;
flex-direction: column;
@ -70,12 +66,13 @@
padding: 0.8rem;
gap: 10px;
width: 100%;
border-radius: 6px;
}
.supplierInfo1 {
display: flex;
flex-wrap: wrap;
width: 80% !important;
width: 100% !important;
gap: 1rem;
align-items: flex-start;
@ -133,7 +130,6 @@
.extractor-table {
overflow: auto;
scrollbar-width: thin;
}
.extractor-table-red .ant-table-thead {
@ -171,21 +167,19 @@
&:hover {
background-color: #ff4d4f !important;
}
}
&.added {
background-color: #52c41a;
}
}
.product-legend {
display: flex;
align-items: center;
gap: 10px;
font-family: 'Poppins';
font-family: "Poppins";
margin-bottom: 10px;
.legend-item {
@ -209,40 +203,6 @@
}
}
// .supplierInfo .ant-select-selector
// {
// width:15rem !important;
// height:3rem !important;
// }
// .supplierInfo :where(.css-dev-only-do-not-override-2i2tap).ant-select.ant-select-in-form-item
// {
// width:15rem !important;
// height:3rem !important;
// }
// .supplierInfo .ant-input{
// width:15rem !important;
// height:3rem !important;
// }
// .invoiceDetails .ant-input{
// width:15rem !important;
// height:3rem !important;
// }
// .invoiceDetails .example{
// width: 15rem ;
// }
// .invoiceDetails .ant-select-selector
// {
// width:15rem !important;
// height:3rem !important;
// }
// .invoiceDetails :where(.css-dev-only-do-not-override-2i2tap).ant-select.ant-select-in-form-item
// {
// width:15rem !important;
// height:3rem !important;
// }
.stockDiv {
display: flex;
flex-wrap: wrap;
@ -282,10 +242,6 @@
display: flex;
}
// .formHeader {
// width: -webkit-fill-available;
// }
.header-buttons {
display: flex;
align-items: center;
@ -395,7 +351,6 @@
&:hover {
background-color: #ffffff !important;
// font-size: 16px;
height: max-content !important;
}
@ -468,14 +423,6 @@
}
}
// .stockDiv {
// .ant-select-arrow {
// top: 70% !important;
// z-index: 2000 !important;
// cursor: pointer !important;
// }
// }
.product-scan {
position: relative;
@ -613,7 +560,6 @@
}
.stock-input {
// width: 100vw;
width: 100%;
}
}
@ -900,6 +846,9 @@
.ant-form-item {
margin-bottom: 0 !important;
}
.float-label {
margin-bottom: 0;
}
}
@media (max-width: 400px) {
@ -909,3 +858,6 @@
padding-bottom: 8px !important;
}
}
.inputFormSTOCKFORM {
width: 100%;
}

View File

@ -10,12 +10,6 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
const queryClient = new QueryClient();
// Un Command This line when deployed in App Server
window.addEventListener('beforeunload', (e) => {
e.preventDefault();
e.returnValue = '';
});
ReactDOM.createRoot(document.getElementById('root')).render(
<QueryClientProvider client={queryClient}>
<Provider store={store}>