Merge pull request 'Web to Mobile Design' (#261) from PushMainVM into main

Reviewed-on: Pozomind/pozo-retail-app#261
This commit is contained in:
karthikalakshmi 2026-03-09 10:48:27 +05:30
commit 08336219e0
25 changed files with 10572 additions and 10571 deletions

View File

@ -20,7 +20,6 @@ const IndividualBooking = lazy(
const commonSubDir = import.meta.env.ENV_COMMON_BASE_URL;
const subDirectory = import.meta.env.ENV_BASE_URL;
import '../ownLib/my-ui-lib.css';
import CardSkeleton from './Components/Skeleton/CardSkeleton.jsx';
import CustomerMenuPage from './Pages/Reports/MenuQRCode/CustomerMenuPage.jsx';
import WeightScaleApp from './Pages/BookingScreen/WeightscaleApp.jsx';
import useSubscriptionManager from './useSubscriptionManager.js';
@ -189,10 +188,10 @@ const AppRoutes = () => {
} catch (err) {}
};
}, [navigate, location.pathname, location.search]);
// mohan
// mohan
useEffect(() => {
if (isMobile || isIOS) {
console.log("📱 Mobile/iOS device → skipping DevTools detection");
console.log('📱 Mobile/iOS device → skipping DevTools detection');
return;
}
const checkDevTools = setInterval(() => {
@ -200,8 +199,7 @@ const AppRoutes = () => {
setDevToolsOpen(true);
document.body.innerHTML =
"<h1 style='color: red; text-align: center;'>Close Inspect to continue using the application.</h1>";
}
else if (!devtools.isOpen && devToolsOpen) {
} else if (!devtools.isOpen && devToolsOpen) {
setDevToolsOpen(false);
setTimeout(() => {
@ -240,7 +238,7 @@ const AppRoutes = () => {
);
}
return (
<Suspense fallback={<CardSkeleton />}>
<Suspense fallback={null}>
<Routes>
<Route
path={`${subDirectory}selfBooking/:SelfBookingId`}

View File

@ -8,7 +8,7 @@
scrollbar-width: none;
@media (max-width: 500px) {
overflow: scroll;
overflow: auto;
}
&.pozo-menu-vertical {
@ -38,18 +38,18 @@
display: flex;
align-items: center;
justify-content: center;
padding: 7px 8px;
padding: 6px 8px;
cursor: pointer;
transition:
background 0.2s,
color 0.2s;
border-radius: 8px;
border-radius: 6px;
margin: 1px 3px;
font-size: 13px;
font-weight: 500;
color: #ffffff;
position: relative;
min-height: 36px;
min-height: 34px;
font-family: "Poppins", sans-serif !important;
&:hover:not(.selected):not(.active-path) {
@ -183,8 +183,8 @@
max-width: 300px;
max-height: 54vh;
overflow-y: auto;
animation: dropdownFadeIn 0.2s ease;
scrollbar-width: thin;
animation: dropdownFadeIn 0.2s ease;
z-index: 1050 !important;
// Ensure no transform interference

View File

@ -1,4 +1,4 @@
import React, { useState, useEffect, lazy, Suspense } from 'react';
import React, { useState, useEffect, lazy } from 'react';
import { useSelector } from 'react-redux';
import { Button, Popover } from 'antd';
import { AiOutlineClose } from 'react-icons/ai';
@ -16,7 +16,6 @@ import { isMobile } from 'react-device-detect';
import { getTemplateData } from '../../../../../Features/ThemeChange/ThemeChange.js';
import PozoCartIcon from '../../../../../Pages/BookingScreen/Components/UtillComponents/PozoCartIcon.jsx';
import TooltipWrapper from '../../../../../Components/Tooltip/Tooltip';
import BillingTableSkeleton from '../../../../../Components/Skeleton/BillingTableSkeleton.jsx';
// jsx File
const BSBillingTable1 = lazy(
() => import('../BSBillingTable1/BSBillingTable1.jsx')
@ -129,7 +128,6 @@ export default function BSBTOverall1() {
}, [width]);
return (
<Suspense fallback={<BillingTableSkeleton />}>
<>
<div
className={
@ -208,18 +206,14 @@ export default function BSBTOverall1() {
>
<BSCustomerSelect />
<TooltipWrapper
title={'Add Customer'}
isMobile={isMobile}
>
<TooltipWrapper title={'Add Customer'} isMobile={isMobile}>
{' '}
<PozoAddCustomerIcon
className="BSBillingNav-icon-table-icon"
onClick={handleAddCustomer}
style={{
fontSize: '25px',
color:
selOption || GetCustId ? '#52c41a' : '#1292EE',
color: selOption || GetCustId ? '#52c41a' : '#1292EE',
cursor: Custdisable ? 'not-allowed' : 'pointer',
}}
/>
@ -255,6 +249,5 @@ export default function BSBTOverall1() {
</div>
</div>
</>
</Suspense>
);
}

View File

@ -1,4 +1,4 @@
import React, { useState, useEffect, lazy, Suspense } from 'react';
import React, { useState, useEffect, lazy } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { Popconfirm, Tooltip } from 'antd';
import { AiOutlineClose, AiFillDelete } from 'react-icons/ai';
@ -83,7 +83,6 @@ const CustomerPriceHistory = lazy(
() => import('../../UtillComponents/CustomerPriceHistory.jsx')
); // Scss File
import '../../../../../Styles/BookingScreen/Components/BSBillingTables/BSBillingTable1/BSBillingTable1.scss';
import BillingTableSkeleton from '../../../../../Components/Skeleton/BillingTableSkeleton.jsx';
const BSBillingTable1 = () => {
const { removeExtraCharge } = useUtilsComponent();
@ -2034,7 +2033,6 @@ const BSBillingTable1 = () => {
};
return (
<Suspense fallback={<BillingTableSkeleton />}>
<>
<div className="BillingTable1-Structure" style={{ overflow: 'auto' }}>
<div className="BillingTable1-table-div">
@ -2259,7 +2257,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'
}
@ -2275,8 +2274,7 @@ const BSBillingTable1 = () => {
: triggerAnimation &&
index === 0 &&
!item?.SalesId &&
tableDataTakeAway?.length >=
PreviousdataLength
tableDataTakeAway?.length >= PreviousdataLength
? 'wheat'
: triggerAnimation &&
index === 0 &&
@ -2292,17 +2290,13 @@ const BSBillingTable1 = () => {
? 'rgb(243, 248, 213)'
: GlobEstBooking === 'ParEst' &&
GlobProdwisedata?.includes(
item?.InwardDtlId +
' ' +
item?.BookingTypeName
item?.InwardDtlId + ' ' + item?.BookingTypeName
)
? '#b2d1f7'
: index % 2 === 0
? 'white'
: SelectedBillColor?.['OverallBackgroundColor']
? SelectedBillColor?.[
'OverallBackgroundColor'
]
? SelectedBillColor?.['OverallBackgroundColor']
: '#d6d6d6',
animation:
BillOrderPre === 'Y' && !BookingTypeBoth
@ -2354,9 +2348,9 @@ const BSBillingTable1 = () => {
textAlign: 'left',
}}
onClick={() =>
(item.FullProductIdentifierDtls?.length > 0 ||
item.ProductIdentifierDtls?.length > 0 || imeiModal)
item.FullProductIdentifierDtls?.length > 0 ||
item.ProductIdentifierDtls?.length > 0 ||
imeiModal
? handleImeiDetails(item)
: editField && handleEditQuantity(item)
}
@ -2398,8 +2392,7 @@ const BSBillingTable1 = () => {
>
{item.ProdDetail?.map((prod, index) => (
<p key={index}>
{prod.ProdName} - {prod.Size}{' '}
{prod.UomName}
{prod.ProdName} - {prod.Size} {prod.UomName}
</p>
))}
</div>
@ -2456,12 +2449,16 @@ const BSBillingTable1 = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -2555,7 +2552,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'
}
@ -2576,8 +2574,7 @@ const BSBillingTable1 = () => {
? 'wheat'
: BookingType !== 'Dine In' &&
triggerAnimation &&
OldtableDataTakeAway?.length + index ===
0 &&
OldtableDataTakeAway?.length + index === 0 &&
tableDataDinein?.length >=
PreviousdataLength &&
!HoldOrderDtl &&
@ -2689,8 +2686,7 @@ const BSBillingTable1 = () => {
>
{item.ProdDetail?.map((prod, index) => (
<p key={index}>
{prod.ProdName} - {prod.Size}{' '}
{prod.UomName}
{prod.ProdName} - {prod.Size} {prod.UomName}
</p>
))}
</div>
@ -2747,12 +2743,16 @@ const BSBillingTable1 = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -2851,7 +2851,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'
}
@ -2871,8 +2872,7 @@ const BSBillingTable1 = () => {
index ===
0 &&
!item?.SalesId &&
tableDataTakeAway?.length >=
PreviousdataLength
tableDataTakeAway?.length >= PreviousdataLength
? 'wheat'
: BookingType !== 'Dine In' &&
triggerAnimation &&
@ -2912,9 +2912,7 @@ const BSBillingTable1 = () => {
? 'rgb(243, 248, 213)'
: GlobEstBooking === 'ParEst' &&
GlobProdwisedata?.includes(
item?.InwardDtlId +
' ' +
item?.BookingTypeName
item?.InwardDtlId + ' ' + item?.BookingTypeName
)
? '#b2d1f7'
: (OldtableDataDinein?.length +
@ -2924,9 +2922,7 @@ const BSBillingTable1 = () => {
0
? 'white'
: SelectedBillColor?.['OverallBackgroundColor']
? SelectedBillColor?.[
'OverallBackgroundColor'
]
? SelectedBillColor?.['OverallBackgroundColor']
: '#d6d6d6',
animation:
BillOrderPre === 'Y' && !BookingTypeBoth
@ -2984,9 +2980,9 @@ const BSBillingTable1 = () => {
textAlign: 'left',
}}
onClick={() =>
(item.FullProductIdentifierDtls?.length > 0 ||
item.ProductIdentifierDtls?.length > 0 || imeiModal)
item.FullProductIdentifierDtls?.length > 0 ||
item.ProductIdentifierDtls?.length > 0 ||
imeiModal
? handleImeiDetails(item)
: editField && handleEditQuantity(item)
}
@ -3034,8 +3030,7 @@ const BSBillingTable1 = () => {
>
{item.ProdDetail?.map((prod, index) => (
<p key={index}>
{prod.ProdName} - {prod.Size}{' '}
{prod.UomName}
{prod.ProdName} - {prod.Size} {prod.UomName}
</p>
))}
</div>
@ -3092,12 +3087,16 @@ const BSBillingTable1 = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -3197,7 +3196,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'
}
@ -3243,9 +3243,7 @@ const BSBillingTable1 = () => {
? 'rgb(243, 248, 213)'
: GlobEstBooking === 'ParEst' &&
GlobProdwisedata?.includes(
item?.InwardDtlId +
' ' +
item?.BookingTypeName
item?.InwardDtlId + ' ' + item?.BookingTypeName
)
? '#b2d1f7'
: (OldtableDataTakeAway?.length +
@ -3256,9 +3254,7 @@ const BSBillingTable1 = () => {
0
? 'white'
: SelectedBillColor?.['OverallBackgroundColor']
? SelectedBillColor?.[
'OverallBackgroundColor'
]
? SelectedBillColor?.['OverallBackgroundColor']
: '#d6d6d6',
animation:
BillOrderPre === 'Y' && !BookingTypeBoth
@ -3360,8 +3356,7 @@ const BSBillingTable1 = () => {
>
{item.ProdDetail?.map((prod, index) => (
<p key={index}>
{prod.ProdName} - {prod.Size}{' '}
{prod.UomName}
{prod.ProdName} - {prod.Size} {prod.UomName}
</p>
))}
</div>
@ -3415,16 +3410,19 @@ const BSBillingTable1 = () => {
}
}}
>
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -3541,7 +3539,6 @@ const BSBillingTable1 = () => {
</div>
</div>
</>
</Suspense>
);
};

View File

@ -1,11 +1,4 @@
import React, {
useCallback,
useEffect,
useState,
useRef,
lazy,
Suspense,
} from 'react';
import React, { useCallback, useEffect, useState, useRef, lazy } from 'react';
import { shallowEqual, useDispatch, useSelector } from 'react-redux';
import { useNavigate } from 'react-router-dom';
import moment from 'moment';
@ -220,7 +213,6 @@ const OtherServicePrintStyle1 = lazy(
import('../../../PrintTemplates/ThermalPrinter/OtherServicePrintStyle1.jsx')
);
import OtherServiceMobilePrint from '../../BookingFunctionality/OtherServiceMobilePrint.jsx';
import BillingTableSkeleton from '../../../../../Components/Skeleton/BillingTableSkeleton.jsx';
const BSOtherServiceClaim = lazy(
() => import('../../UtillComponents/BSOtherServiceClaim.jsx')
);
@ -722,7 +714,6 @@ const BSBillingTable2 = () => {
Discount,
]);
useEffect(() => {
const fetchPrinterMapping = async () => {
try {
if (UserType !== 'Super Admin' && isMobile && MobileA4Print) {
@ -733,19 +724,20 @@ const BSBillingTable2 = () => {
UserId: UserId,
};
// && isMobile && MobileA4Print
const response = await dispatch(getPrinterMappingDetails(data)).unwrap();
const response = await dispatch(
getPrinterMappingDetails(data)
).unwrap();
if (response?.data?.statusCode === 0) {
handlePrintMappingClick()
handlePrintMappingClick();
}
console.log(response, "printer mapping response");
console.log(response, 'printer mapping response');
}
} catch (error) {
console.error("Error fetching printer mapping:", error);
console.error('Error fetching printer mapping:', error);
}
};
fetchPrinterMapping();
}, []);
const handlePrintMappingClick = () => {
// setReprint1(true)
@ -753,7 +745,10 @@ const BSBillingTable2 = () => {
};
useEffect(() => {
if (CompId && BranchId && AppId) {
if (holdCheckedSalesSetup || NavBarOptions?.some((e) => e?.OptionName == 'Hold')) {
if (
holdCheckedSalesSetup ||
NavBarOptions?.some((e) => e?.OptionName == 'Hold')
) {
getHolddata();
}
@ -1947,7 +1942,10 @@ const BSBillingTable2 = () => {
setCurrentOrderNetAmount(0);
setPreviousNetAmount(0);
if (holdCheckedSalesSetup || NavBarOptions?.some((e) => e?.OptionName == 'Hold')) {
if (
holdCheckedSalesSetup ||
NavBarOptions?.some((e) => e?.OptionName == 'Hold')
) {
getHolddata();
}
if (defaultBookingType === 'Both') {
@ -2151,7 +2149,7 @@ const BSBillingTable2 = () => {
PackageDtl: a.PackageDtl,
...(a?.DiscountValue && { DiscountValue: a.DiscountValue }),
...(a?.DiscountType && { DiscountType: a.DiscountType }),
...(a?.DiscountAmt && { DiscountAmt: a.DiscountAmt })
...(a?.DiscountAmt && { DiscountAmt: a.DiscountAmt }),
}));
const NotSlectedTypeFind = temporderdetail?.find(
(a) => a?.BookingType != SelectedBookingType
@ -3681,7 +3679,6 @@ const BSBillingTable2 = () => {
);
};
return (
<Suspense fallback={<BillingTableSkeleton />}>
<div
className={
templateData?.BookingLayout?.[0] === 'Layout6'
@ -4047,10 +4044,7 @@ const BSBillingTable2 = () => {
payment.ModeId,
payment.ModeName
)
: handlePaymentMode(
payment.ModeId,
payment.ModeName
)
: handlePaymentMode(payment.ModeId, payment.ModeName)
}
>
<div
@ -4199,8 +4193,10 @@ const BSBillingTable2 = () => {
)}
{/* Customer Orders */}
{(SelCustId && tableOptions?.filter((item) => item.OptionName === 'PreviousBillFetch')
.length === 1) && (
{SelCustId &&
tableOptions?.filter(
(item) => item.OptionName === 'PreviousBillFetch'
).length === 1 && (
<Tooltip title="Customer Orders" isMobile={isMobile}>
{' '}
<div
@ -4240,10 +4236,7 @@ const BSBillingTable2 = () => {
.map((filteredItem) => (
<React.Fragment key={filteredItem.TemplateOptionsId}>
{!OtherServicesglobal && (
<TooltipWrapper
title="Unpaid Bills"
isMobile={isMobile}
>
<TooltipWrapper title="Unpaid Bills" isMobile={isMobile}>
{' '}
<PozoUnpaidIcon
className="BSBillingNav-icon-table-icon"
@ -4381,8 +4374,7 @@ const BSBillingTable2 = () => {
OrderCardDetail?.length > 0 &&
paybtnselected &&
CheckBookingStatus != 'Close'
? salesBillEdit &&
currentOrderNetAmount < previousNetAmount
? salesBillEdit && currentOrderNetAmount < previousNetAmount
? 'billing-btn'
: 'billing-btn'
: 'billing-btn-deactive'
@ -4407,9 +4399,7 @@ const BSBillingTable2 = () => {
) : (
<>
<div className="billing-in-style">
<h1 style={{ fontFamily: FontFamily['head'] }}>
Total
</h1>
<h1 style={{ fontFamily: FontFamily['head'] }}>Total</h1>
</div>
<div>
@ -4614,8 +4604,8 @@ const BSBillingTable2 = () => {
<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.
continue. If you click 'Cancel,' the dine-in flow will proceed
as selected.
</div>
</>
}
@ -4733,9 +4723,7 @@ const BSBillingTable2 = () => {
)
}
CreatedDate={OtherServicesPrintDetails?.CreatedDate}
PaymentStatus={
OtherServicesPrintDetails?.[0]?.PaymentOrderDtl
}
PaymentStatus={OtherServicesPrintDetails?.[0]?.PaymentOrderDtl}
Preference={SettingDataSelector}
printDatas={printDatas}
/>
@ -4846,9 +4834,7 @@ const BSBillingTable2 = () => {
color: '#fff',
border: 'none',
borderRadius: 4,
cursor: hasVehicleInputErrors()
? 'not-allowed'
: 'pointer',
cursor: hasVehicleInputErrors() ? 'not-allowed' : 'pointer',
}}
>
Submit
@ -4914,7 +4900,6 @@ const BSBillingTable2 = () => {
)}
</div>
</div>
</Suspense>
);
};

View File

@ -4,7 +4,6 @@ import React, {
useState,
useRef,
lazy,
Suspense,
} from 'react';
import { shallowEqual, useDispatch, useSelector } from 'react-redux';
import { useNavigate } from 'react-router-dom';
@ -214,8 +213,7 @@ import CardPopover from '../StandardTable/Utils/CardPopover.jsx';
import UpiPopover from '../StandardTable/Utils/UpiPopOver.jsx';
import MobileMultiPdfPrintTrigger from '../../UtillComponents/MobileMultiPdfPrintTrigger.jsx';
import { useDateStore } from '../../../../../Features/BookingScreen/BookingData/DateStore.js';
import BillingTableSkeleton from '../../../../../Components/Skeleton/BillingTableSkeleton.jsx';
import CustomerMobileNumberModal from '../../BookingFunctionality/CustomerOTP.jsx';
import CustomerMobileNumberModal from '../../BookingFunctionality/CustomerOTP.jsx';
const PaymentGatewayEmbedded = lazy(
() => import('../../UtillComponents/PaymentGatewayEmbedded.jsx')
);
@ -3632,7 +3630,6 @@ const BSBillingTable3Pay = () => {
);
};
return (
<Suspense fallback={<BillingTableSkeleton />}>
<>
<div className="BSBilling3PayMaster">
{screenwidth <= 768 && (
@ -4970,7 +4967,6 @@ const BSBillingTable3Pay = () => {
/>
)}
</>
</Suspense>
);
};

View File

@ -1,4 +1,4 @@
import React, { lazy, useEffect, useState, Suspense } from 'react';
import React, { lazy, useEffect, useState } from 'react';
import { shallowEqual, useDispatch, useSelector } from 'react-redux';
import { isMobile } from 'react-device-detect';
import { AiFillDelete, AiOutlineClose } from 'react-icons/ai';
@ -83,7 +83,6 @@ import {
import { ApplicationPreferences } from '../../../../../Features/BrachLogin/BranchLogin.js';
import { useDateStore } from '../../../../../Features/BookingScreen/BookingData/DateStore.js';
import { useUtilsComponent } from '../../../../../Services/utils.js';
import BillingTableSkeleton from '../../../../../Components/Skeleton/BillingTableSkeleton.jsx';
const CustomerPriceHistory = lazy(
() => import('../../UtillComponents/CustomerPriceHistory.jsx')
);
@ -1626,7 +1625,6 @@ const BSBillingTable4 = () => {
BuyInwardDtlId: null,
Offer: item?.Offer,
OrderRate: item?.OrderRate,
});
} else {
const isCheck = GlobalOfferAppliedProductsData?.find(
@ -2192,7 +2190,6 @@ const BSBillingTable4 = () => {
};
return (
<Suspense fallback={<BillingTableSkeleton />}>
<div
className={
isMobile ? 'BSBilling4-tablediv-mobile' : 'BSBilling4-tablediv'
@ -2407,7 +2404,8 @@ const BSBillingTable4 = () => {
{OldtableDataTakeAway?.map((item, index) => (
<tr
key={index}
className={`${item?.SalesId && OrderType !== 'Hold'
className={`${
item?.SalesId && OrderType !== 'Hold'
? 'BSBill-Table3-content-Disabled'
: 'BSBill-Table3-content'
}
@ -2428,8 +2426,7 @@ const BSBillingTable4 = () => {
: BookingType !== 'Dine In' &&
triggerAnimation &&
index === 0 &&
tableDataTakeAway?.length >=
PreviousdataLength &&
tableDataTakeAway?.length >= PreviousdataLength &&
!HoldOrderDtl &&
!UnpaidData
? 'wheat'
@ -2491,15 +2488,15 @@ const BSBillingTable4 = () => {
className="Table4-items for-combo"
style={{ fontFamily: 'Poppins' }}
onClick={() =>
(item.FullProductIdentifierDtls?.length > 0 ||
item.ProductIdentifierDtls?.length > 0 || imeiModal)
item.FullProductIdentifierDtls?.length > 0 ||
item.ProductIdentifierDtls?.length > 0 ||
imeiModal
? handleImeiDetails(item)
: editField && handleEditQuantity(item)
}
>
{item.ProdName}
&nbsp;{' '}
{item?.BrandName !== null ? item?.BrandName : ''}
&nbsp; {item?.BrandName !== null ? item?.BrandName : ''}
{item?.Type != 'C' && (
<>
<p
@ -2596,12 +2593,16 @@ const BSBillingTable4 = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -2681,7 +2682,8 @@ const BSBillingTable4 = () => {
{OldtableDataDinein?.map((item, index) => (
<tr
key={OldtableDataTakeAway?.length + index}
className={`${item?.SalesId
className={`${
item?.SalesId
? 'BSBill-Table3-content-Disabled'
: 'BSBill-Table3-content'
}
@ -2769,8 +2771,7 @@ const BSBillingTable4 = () => {
}}
>
{item.ProdName}
&nbsp;{' '}
{item?.BrandName !== null ? item?.BrandName : ''}
&nbsp; {item?.BrandName !== null ? item?.BrandName : ''}
{item?.Type != 'C' && (
<>
<p
@ -2867,12 +2868,16 @@ const BSBillingTable4 = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -2956,7 +2961,8 @@ const BSBillingTable4 = () => {
OldtableDataTakeAway?.length +
index
}
className={`${BookingType === 'Dine In' && item?.SalesId
className={`${
BookingType === 'Dine In' && item?.SalesId
? 'BSBill-Table3-content-Disabled'
: 'BSBill-Table3-content'
}
@ -2983,8 +2989,7 @@ const BSBillingTable4 = () => {
OldtableDataTakeAway?.length +
index ===
0 &&
tableDataTakeAway?.length >=
PreviousdataLength &&
tableDataTakeAway?.length >= PreviousdataLength &&
!HoldOrderDtl &&
!UnpaidData
? 'wheat'
@ -2995,9 +3000,7 @@ const BSBillingTable4 = () => {
0
? 'white'
: SelectedBillColor?.['OverallBackgroundColor']
? SelectedBillColor?.[
'OverallBackgroundColor'
]
? SelectedBillColor?.['OverallBackgroundColor']
: '#d6d6d6'
: (OldtableDataDinein?.length +
OldtableDataTakeAway?.length +
@ -3075,17 +3078,15 @@ const BSBillingTable4 = () => {
className="Table4-items for-combo"
style={{ fontFamily: 'Poppins' }}
onClick={() =>
(item.FullProductIdentifierDtls?.length > 0 ||
item.ProductIdentifierDtls?.length > 0 || imeiModal)
item.FullProductIdentifierDtls?.length > 0 ||
item.ProductIdentifierDtls?.length > 0 ||
imeiModal
? handleImeiDetails(item)
: editField && handleEditQuantity(item, index)
}
>
{item?.Type !== 'OS'
? item.ProdName
: item.ServiceName}
&nbsp;{' '}
{item?.BrandName !== null ? item?.BrandName : ''}
{item?.Type !== 'OS' ? item.ProdName : item.ServiceName}
&nbsp; {item?.BrandName !== null ? item?.BrandName : ''}
{item?.Type != 'C' && (
<>
<p
@ -3191,12 +3192,16 @@ const BSBillingTable4 = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -3281,7 +3286,8 @@ const BSBillingTable4 = () => {
OldtableDataTakeAway?.length +
index
}
className={`${item?.SalesId && OrderType !== 'Hold'
className={`${
item?.SalesId && OrderType !== 'Hold'
? 'BSBill-Table3-content-Disabled'
: 'BSBill-Table3-content'
}
@ -3395,8 +3401,7 @@ const BSBillingTable4 = () => {
}}
>
{item.ProdName}
&nbsp;{' '}
{item?.BrandName !== null ? item?.BrandName : ''}
&nbsp; {item?.BrandName !== null ? item?.BrandName : ''}
{item?.Type != 'C' && (
<>
<p
@ -3493,12 +3498,16 @@ const BSBillingTable4 = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -3598,7 +3607,6 @@ const BSBillingTable4 = () => {
/>
)}
</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 { shallowEqual, useDispatch, useSelector } from 'react-redux';
import moment from 'moment';
import { Popover, Badge, Modal, Tooltip } from 'antd';
@ -197,7 +197,6 @@ import {
import CardPopover from '../StandardTable/Utils/CardPopover.jsx';
import UpiPopover from '../StandardTable/Utils/UpiPopOver.jsx';
import { useDateStore } from '../../../../../Features/BookingScreen/BookingData/DateStore.js';
import BillingTableSkeleton from '../../../../../Components/Skeleton/BillingTableSkeleton.jsx';
import OtherServiceMobilePrint from '../../BookingFunctionality/OtherServiceMobilePrint.jsx';
// Jsx Files
const OtherServicePrintStyle1 = lazy(
@ -565,7 +564,6 @@ const BSBillingTable5 = () => {
}
}, [OrderCardDetail]);
useEffect(() => {
const fetchPrinterMapping = async () => {
try {
if (UserType !== 'Super Admin' && isMobile && MobileA4Print) {
@ -576,19 +574,20 @@ const BSBillingTable5 = () => {
UserId: UserId,
};
// && isMobile && MobileA4Print
const response = await dispatch(getPrinterMappingDetails(data)).unwrap();
const response = await dispatch(
getPrinterMappingDetails(data)
).unwrap();
if (response?.data?.statusCode === 0) {
handlePrintMappingClick()
handlePrintMappingClick();
}
console.log(response, "printer mapping response");
console.log(response, 'printer mapping response');
}
} catch (error) {
console.error("Error fetching printer mapping:", error);
console.error('Error fetching printer mapping:', error);
}
};
fetchPrinterMapping();
}, []);
const handlePrintMappingClick = () => {
// setReprint1(true)
@ -777,7 +776,10 @@ const BSBillingTable5 = () => {
useEffect(() => {
if (CompId && BranchId && AppId) {
if (holdCheckedSalesSetup || NavBarOptions?.some((e) => e?.OptionName == 'Hold')) {
if (
holdCheckedSalesSetup ||
NavBarOptions?.some((e) => e?.OptionName == 'Hold')
) {
getHolddata();
}
getCustomerData();
@ -1963,7 +1965,10 @@ const BSBillingTable5 = () => {
setUpinotSelected(false);
setCurrentOrderNetAmount(0);
setPreviousNetAmount(0);
if (holdCheckedSalesSetup || NavBarOptions?.some((e) => e?.OptionName == 'Hold')) {
if (
holdCheckedSalesSetup ||
NavBarOptions?.some((e) => e?.OptionName == 'Hold')
) {
getHolddata();
}
if (defaultBookingType === 'Both') {
@ -2168,7 +2173,7 @@ const BSBillingTable5 = () => {
SetCount: a.SetCount,
...(a?.DiscountValue && { DiscountValue: a.DiscountValue }),
...(a?.DiscountType && { DiscountType: a.DiscountType }),
...(a?.DiscountAmt && { DiscountAmt: a.DiscountAmt })
...(a?.DiscountAmt && { DiscountAmt: a.DiscountAmt }),
}));
const NotSlectedTypeFind = temporderdetail?.find(
(a) => a?.BookingType != SelectedBookingType
@ -3628,7 +3633,6 @@ const BSBillingTable5 = () => {
};
return (
<>
<Suspense fallback={<BillingTableSkeleton />}>
<div
className={
templateData?.BookingLayout?.[0] === 'Layout6'
@ -3749,10 +3753,7 @@ const BSBillingTable5 = () => {
<div className="BSBillingTable-billtable">
<div className="BSBillingTable5-payOpt">
<div className="payrow1">
<Messages
messageType={messageType}
messageData={messageData}
/>
<Messages messageType={messageType} messageData={messageData} />
</div>
<div className="payrow2">
@ -3792,8 +3793,7 @@ const BSBillingTable5 = () => {
(UpinotSelected || CardoptionnotSelected)
? 'Btn-payment-mode-notupisel'
: paybtnselected === payment.ModeId &&
(!UpinotSelected ||
!CardoptionnotSelected)
(!UpinotSelected || !CardoptionnotSelected)
? 'Btn-payment-mode'
: 'Btn-payment-mode-sel'
}
@ -3824,8 +3824,7 @@ const BSBillingTable5 = () => {
}}
>
{payment.ModeName}
{payment?.ModeName?.toLowerCase() ===
'card' && (
{payment?.ModeName?.toLowerCase() === 'card' && (
<CardPopover
CardPayOption={CardPayOption}
SelectedCardOption={SelectedCardOption}
@ -3874,8 +3873,7 @@ const BSBillingTable5 = () => {
(UpinotSelected || CardoptionnotSelected)
? 'Btn-payment-mode-notupisel'
: refundPaySelected === payment.ConfigId &&
(!UpinotSelected ||
!CardoptionnotSelected)
(!UpinotSelected || !CardoptionnotSelected)
? 'Btn-payment-mode'
: 'Btn-payment-mode-sel'
}
@ -4041,10 +4039,7 @@ const BSBillingTable5 = () => {
</div>
</div>
</div>
<div
style={{ justifyContent: 'center' }}
className="CustomerAddSrch"
>
<div style={{ justifyContent: 'center' }} className="CustomerAddSrch">
<div style={{ height: '2.1rem' }}>
{tableOptions
.filter((item) => item.OptionName === 'AddCustomer')
@ -4185,8 +4180,10 @@ const BSBillingTable5 = () => {
''
)}
{/* Customer Orders */}
{(SelCustId && tableOptions?.filter((item) => item.OptionName === 'PreviousBillFetch')
.length === 1) && (
{SelCustId &&
tableOptions?.filter(
(item) => item.OptionName === 'PreviousBillFetch'
).length === 1 && (
<Tooltip title="Customer Orders" isMobile={isMobile}>
{' '}
<div
@ -4399,12 +4396,10 @@ const BSBillingTable5 = () => {
}
>
{!OrderStatus ? (
salesBillEdit &&
currentOrderNetAmount < previousNetAmount ? (
salesBillEdit && currentOrderNetAmount < previousNetAmount ? (
<div>
Refund:
{(previousNetAmount || 0) -
(currentOrderNetAmount || 0)}
{(previousNetAmount || 0) - (currentOrderNetAmount || 0)}
</div>
) : (
<>
@ -4518,8 +4513,7 @@ const BSBillingTable5 = () => {
}
/>
{PrintOrderDetails?.length > 0 &&
PrintOrderDetails?.[0]?.OrderDetails?.map(
(orderDetail, index) => (
PrintOrderDetails?.[0]?.OrderDetails?.map((orderDetail, index) => (
<div style={{ display: 'none' }}>
<PaymentPdfBooking
index={index}
@ -4538,13 +4532,11 @@ const BSBillingTable5 = () => {
printDatas={printDatas}
/>
</div>
)
)}
))}
{PrintOrderDetails?.length > 0 &&
(TokenOnly?.SettingValue === 'Y' ||
IndividualToken?.SettingValue === 'Y') &&
PrintOrderDetails?.[0]?.OrderDetails?.map(
(orderDetail, index) => (
PrintOrderDetails?.[0]?.OrderDetails?.map((orderDetail, index) => (
<div style={{ display: 'none' }}>
<TokensinglePrint
index={index}
@ -4561,8 +4553,7 @@ const BSBillingTable5 = () => {
PaymentStatus={PrintOrderDetails?.[0]?.PaymentOrderDtl}
/>
</div>
)
)}
))}
{CreditCustomer && (
<div style={{ display: 'none' }}>
<BsBillingCreditCustomer
@ -4606,8 +4597,8 @@ const BSBillingTable5 = () => {
<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.
continue. If you click 'Cancel,' the dine-in flow will proceed
as selected.
</div>
</>
}
@ -4709,9 +4700,7 @@ const BSBillingTable5 = () => {
)
}
CreatedDate={OtherServicesPrintDetails?.CreatedDate}
PaymentStatus={
OtherServicesPrintDetails?.[0]?.PaymentOrderDtl
}
PaymentStatus={OtherServicesPrintDetails?.[0]?.PaymentOrderDtl}
Preference={SettingDataSelector}
printDatas={printDatas}
/>
@ -4821,9 +4810,7 @@ const BSBillingTable5 = () => {
color: '#fff',
border: 'none',
borderRadius: 4,
cursor: hasVehicleInputErrors()
? 'not-allowed'
: 'pointer',
cursor: hasVehicleInputErrors() ? 'not-allowed' : 'pointer',
}}
>
Submit
@ -4905,7 +4892,6 @@ const BSBillingTable5 = () => {
/>
)}
</div>
</Suspense>
</>
);
};

View File

@ -1,4 +1,4 @@
import React, { Suspense, useEffect, useState, lazy } from 'react';
import React, { useEffect, useState, lazy } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { Popconfirm, Tooltip } from 'antd';
import '../../../../../Styles/BookingScreen/Components/BSBillingTables/BSBillingTable6/BSBillingTable6.scss';
@ -75,7 +75,6 @@ import {
import { getCustomerDisplayWindow } from '../../../../../Features/customerDisplayWindow/customerDisplayWindow.js';
import { useApplyOfferto_CardDetail } from '../../UtillComponents/BSNavBarOffer/BSNavBarOffer_CustomHooks.jsx';
import { useUtilsComponent } from '../../../../../Services/utils.js';
import BillingTableSkeleton from '../../../../../Components/Skeleton/BillingTableSkeleton.jsx';
const BSEditTotalAmt = lazy(
() => import('../BSEditTotalAmount/BSEditTotalAmt.jsx')
);
@ -2004,7 +2003,6 @@ const BSBillingTable6 = () => {
};
return (
<Suspense fallback={<BillingTableSkeleton />}>
<div
className={
true
@ -2247,8 +2245,7 @@ const BSBillingTable6 = () => {
? 'wheat'
: triggerAnimation &&
index === 0 &&
tableDataTakeAway?.length >=
PreviousdataLength &&
tableDataTakeAway?.length >= PreviousdataLength &&
!HoldOrderDtl &&
!UnpaidData
? 'wheat'
@ -2311,15 +2308,15 @@ const BSBillingTable6 = () => {
className="BillingTable6-table-td for-combo"
style={{ fontFamily: 'Poppins', textAlign: 'left' }}
onClick={() =>
(item.FullProductIdentifierDtls?.length > 0 ||
item.ProductIdentifierDtls?.length > 0 || imeiModal)
item.FullProductIdentifierDtls?.length > 0 ||
item.ProductIdentifierDtls?.length > 0 ||
imeiModal
? handleImeiDetails(item)
: editField && handleEditQuantity(item)
}
>
{item.ProdName}
&nbsp;{' '}
{item?.BrandName !== null ? item?.BrandName : ''}
&nbsp; {item?.BrandName !== null ? item?.BrandName : ''}
{item?.Type != 'C' && (
<>
<p
@ -2402,12 +2399,16 @@ const BSBillingTable6 = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -2573,8 +2574,7 @@ const BSBillingTable6 = () => {
}}
>
{item.ProdName}
&nbsp;{' '}
{item?.BrandName !== null ? item?.BrandName : ''}
&nbsp; {item?.BrandName !== null ? item?.BrandName : ''}
{item?.Type != 'C' && (
<>
<p
@ -2657,12 +2657,16 @@ const BSBillingTable6 = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -2771,8 +2775,7 @@ const BSBillingTable6 = () => {
OldtableDataTakeAway?.length +
index ===
0 &&
tableDataTakeAway?.length >=
PreviousdataLength &&
tableDataTakeAway?.length >= PreviousdataLength &&
!HoldOrderDtl &&
!UnpaidData
? 'wheat'
@ -2783,9 +2786,7 @@ const BSBillingTable6 = () => {
0
? 'white'
: SelectedBillColor?.['OverallBackgroundColor']
? SelectedBillColor?.[
'OverallBackgroundColor'
]
? SelectedBillColor?.['OverallBackgroundColor']
: '#d6d6d6'
: (OldtableDataDinein?.length +
OldtableDataTakeAway?.length +
@ -2862,15 +2863,15 @@ const BSBillingTable6 = () => {
className="BillingTable6-table-td for-combo"
style={{ fontFamily: 'Poppins', textAlign: 'left' }}
onClick={() =>
(item.FullProductIdentifierDtls?.length > 0 ||
item.ProductIdentifierDtls?.length > 0 || imeiModal)
item.FullProductIdentifierDtls?.length > 0 ||
item.ProductIdentifierDtls?.length > 0 ||
imeiModal
? handleImeiDetails(item)
: editField && handleEditQuantity(item)
}
>
{item.ProdName}
&nbsp;{' '}
{item?.BrandName !== null ? item?.BrandName : ''}
&nbsp; {item?.BrandName !== null ? item?.BrandName : ''}
{item?.Type != 'C' && (
<>
<p
@ -2958,12 +2959,16 @@ const BSBillingTable6 = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -3158,8 +3163,7 @@ const BSBillingTable6 = () => {
}}
>
{item.ProdName}
&nbsp;{' '}
{item?.BrandName !== null ? item?.BrandName : ''}
&nbsp; {item?.BrandName !== null ? item?.BrandName : ''}
{item?.Type != 'C' && (
<>
<p
@ -3239,16 +3243,19 @@ const BSBillingTable6 = () => {
}
}}
>
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -3345,7 +3352,6 @@ const BSBillingTable6 = () => {
/>
)}
</div>
</Suspense>
);
};

View File

@ -94,7 +94,6 @@ import {
GlobalOverAllDiscSales,
ChangeOverAllDiscSales,
ChangeOverAllDiscEstimate,
GlobalBranchFinancialStatus,
changeSummeryComboOfferAmount,
ChangeComboCarddata,
@ -176,7 +175,7 @@ import PozoSplitPaymentIcon from '../../UtillComponents/Pozo retail icons/PozoSp
import PozoCartIcon from '../../../../../Pages/BookingScreen/Components/UtillComponents/PozoCartIcon.jsx';
import {
Global_OrderOfferDetail,
Global_OverallOfferAmount
Global_OverallOfferAmount,
} from '../../../../../Features/Offer/Offer.js';
import { useApplyOfferto_CardDetail } from '../../UtillComponents/BSNavBarOffer/BSNavBarOffer_CustomHooks.jsx';
import TooltipWrapper from '../../../../../Components/Tooltip/Tooltip';
@ -234,13 +233,15 @@ const BSBilling7Payment = () => {
const navigate = useNavigate();
const salesBillEdit = useSelector(GlobalSalesBillEdit);
const previousOrderPayment = useSelector(GlobalPreviousOrderPayment);
const previousOrderOfferDetails = useSelector(GlobalPreviousOrderOfferDetails);
const previousOrderOfferDetails = useSelector(
GlobalPreviousOrderOfferDetails
);
const AllPaymentOptions = useSelector(GlobalpaymentOptionData);
const Discount = useSelector(GlobalOverAllOfferAmt);
const screenwidth = useSelector(GlobalScreenSize);
const defaultBookingType = useSelector(GlobalDefaultBookingType);
const printerTemplateStyle = useSelector(SelectedPrintTemplate);
const AllBookingType = useSelector(GlobalAllBookingType)
const AllBookingType = useSelector(GlobalAllBookingType);
const FontFamily = useSelector(GlobalSelectedFont);
const OrderCardDetail = useSelector(GlobalOrderCardDetails);
const GetCustId = useSelector(GlobalCustId);
@ -342,7 +343,8 @@ const BSBilling7Payment = () => {
const [previousNetAmount, setPreviousNetAmount] = useState(0);
const [addcustomer, setAddCustomer] = useState(false);
const [PrintOrderDetails, setPrintOrderDetails] = useState([]);
const [customerPreviesOrders, setCustomerPreviesOrders] = useState(false); const OverAllSales = useSelector(GlobalOverAllDiscSales);
const [customerPreviesOrders, setCustomerPreviesOrders] = useState(false);
const OverAllSales = useSelector(GlobalOverAllDiscSales);
const OverAllEstimate = useSelector(GlobalOverAllDiscEstimate);
//Total calculation
const TotalItems = OrderCardDetail?.length;
@ -361,7 +363,12 @@ const BSBilling7Payment = () => {
return acc + Math.round(Number(item?.OrderQty || 0));
}, 0);
console.log(salesBillEdit, currentOrderNetAmount, previousNetAmount, "previousNetAmount")
console.log(
salesBillEdit,
currentOrderNetAmount,
previousNetAmount,
'previousNetAmount'
);
const [UpiOption, setUpiOption] = useState('');
const [BusinessPayOption, setBusinessPayoption] = useState([]);
const [paymentSucess, setPaymentSuccess] = useState(false);
@ -507,7 +514,6 @@ const BSBilling7Payment = () => {
}, [salesBillEdit]);
useEffect(() => {
if (salesBillEdit) {
if (SelCustId) {
setRefundPayBtns(AllPaymentOptions);
@ -522,9 +528,7 @@ const BSBilling7Payment = () => {
setRefundPayBtns(withoutCustomer);
}
}
}, [AllPaymentOptions, SelCustId, salesBillEdit])
}, [AllPaymentOptions, SelCustId, salesBillEdit]);
// Usage
useEffect(() => {
@ -626,14 +630,21 @@ const BSBilling7Payment = () => {
const filteredPayments =
previousOrderPayment?.filter(
p => p?.LastOrderTran === 'Y' && p?.AfterAdjustment != null && p?.AfterAdjustment !== '' && p?.AfterAdjustment
(p) =>
p?.LastOrderTran === 'Y' &&
p?.AfterAdjustment != null &&
p?.AfterAdjustment !== '' &&
p?.AfterAdjustment
) || [];
const paymentsToUse =
filteredPayments.length > 0 ? filteredPayments : previousOrderPayment || [];
filteredPayments.length > 0
? filteredPayments
: previousOrderPayment || [];
const totalPreviouspayment = paymentsToUse?.reduce(
(acc, payment) => acc + parseFloat(payment.AfterAdjustment || payment.Amount || 0),
(acc, payment) =>
acc + parseFloat(payment.AfterAdjustment || payment.Amount || 0),
0
);
@ -642,8 +653,7 @@ const BSBilling7Payment = () => {
0
);
const previousNetAmount =
(totalPreviouspayment) || 0;
const previousNetAmount = totalPreviouspayment || 0;
let withdiscTotal =
Total -
@ -655,13 +665,34 @@ const BSBilling7Payment = () => {
withdiscTotal >= 0
? (Number(withdiscTotal) + Number(globalTipAmount)).toFixed(2)
: (Number(Total) + Number(globalTipAmount)).toFixed(2)
)
console.log(salesBillEdit ? (currentOrderNetAmount > previousNetAmount) ? (currentOrderNetAmount - previousNetAmount) : 0 : currentOrderNetAmount, "totalPreviouspayment")
);
console.log(
salesBillEdit
? currentOrderNetAmount > previousNetAmount
? currentOrderNetAmount - previousNetAmount
: 0
: currentOrderNetAmount,
'totalPreviouspayment'
);
setTotalAmount(salesBillEdit ? (currentOrderNetAmount > previousNetAmount) ? (currentOrderNetAmount - previousNetAmount) : 0 : currentOrderNetAmount);
setTotalAmount(
salesBillEdit
? currentOrderNetAmount > previousNetAmount
? currentOrderNetAmount - previousNetAmount
: 0
: currentOrderNetAmount
);
setCurrentOrderNetAmount(currentOrderNetAmount);
setPreviousNetAmount(previousNetAmount);
dispatch(changeSummeryTotalAmount(salesBillEdit ? (currentOrderNetAmount > previousNetAmount) ? (currentOrderNetAmount - previousNetAmount) : 0 : currentOrderNetAmount));
dispatch(
changeSummeryTotalAmount(
salesBillEdit
? currentOrderNetAmount > previousNetAmount
? currentOrderNetAmount - previousNetAmount
: 0
: currentOrderNetAmount
)
);
dispatch(changeSummeryComboOfferAmount(withComboSum));
@ -684,7 +715,6 @@ const BSBilling7Payment = () => {
Discount,
]);
useEffect(() => {
const fetchPrinterMapping = async () => {
try {
if (UserType !== 'Super Admin' && isMobile && MobileA4Print) {
@ -695,19 +725,20 @@ const BSBilling7Payment = () => {
UserId: UserId,
};
// && isMobile && MobileA4Print
const response = await dispatch(getPrinterMappingDetails(data)).unwrap();
const response = await dispatch(
getPrinterMappingDetails(data)
).unwrap();
if (response?.data?.statusCode === 0) {
handlePrintMappingClick()
handlePrintMappingClick();
}
console.log(response, "printer mapping response");
console.log(response, 'printer mapping response');
}
} catch (error) {
console.error("Error fetching printer mapping:", error);
console.error('Error fetching printer mapping:', error);
}
};
fetchPrinterMapping();
}, []);
const handlePrintMappingClick = () => {
// setReprint1(true)
@ -834,7 +865,6 @@ const BSBilling7Payment = () => {
: parseInt(value || 0);
};
const getCustomerData = async () => {
await dispatch(
getAddCustomerDetails({
CompId: CompId,
@ -904,8 +934,9 @@ const BSBilling7Payment = () => {
async (orderDetail, index) => {
await printDiv(`${selectedStyle}-${index}`, style); // Use unique IDs for each print
if (orderDetail?.BookingTypeName !== 'Dine In') {
const groupedTokens = orderDetail?.productDetails?.filter(data => data?.EditTokenAvailable !== 'N')?.reduce(
(acc, item, idx) => {
const groupedTokens = orderDetail?.productDetails
?.filter((data) => data?.EditTokenAvailable !== 'N')
?.reduce((acc, item, idx) => {
if (item.TokenAvailable === 'Y') {
if (!item.CounterName) {
// If CounterName is null or empty
@ -918,9 +949,7 @@ const BSBilling7Payment = () => {
}
}
return acc;
},
{}
);
}, {});
// Iterate over grouped tokens and print them
const tokensToPrint = Object.entries(groupedTokens).map(
@ -984,7 +1013,11 @@ const BSBilling7Payment = () => {
const handleButtonClick = () => {
if (qrCode && SelectedUPIPayOption === 'Default' && UpiQRPreference) {
UpiPayment();
} else if (salesBillEdit && currentOrderNetAmount < previousNetAmount && !refundPaySelected) {
} else if (
salesBillEdit &&
currentOrderNetAmount < previousNetAmount &&
!refundPaySelected
) {
setMessageType('warning');
setMessageData('Please Select Refund Payment Method');
return;
@ -1649,9 +1682,7 @@ const BSBilling7Payment = () => {
let configdata = AllBookingType;
let checkName = BookingTypeBoth ? 'DineIn,TakeAway' : BookingType;
let filterconfigdata = configdata?.find(
(a) => a?.ConfigName === checkName
);
let filterconfigdata = configdata?.find((a) => a?.ConfigName === checkName);
setSelectedBookingType(filterconfigdata?.ConfigId);
};
const gettodaydate = () => {
@ -1725,7 +1756,7 @@ const BSBilling7Payment = () => {
const handleRefundPaymentMode = (id, name) => {
setRefundPaySelected(id);
setRefundPaySelectedName(name);
}
};
const addUpiOption = async (id, name, UPIId) => {
await dispatch(changeUpiIDprint(UPIId));
@ -2141,7 +2172,7 @@ const BSBilling7Payment = () => {
SetCount: a.SetCount,
...(a?.DiscountValue && { DiscountValue: a.DiscountValue }),
...(a?.DiscountType && { DiscountType: a.DiscountType }),
...(a?.DiscountAmt && { DiscountAmt: a.DiscountAmt })
...(a?.DiscountAmt && { DiscountAmt: a.DiscountAmt }),
}));
const NotSlectedTypeFind = temporderdetail?.find(
(a) => a?.BookingType != SelectedBookingType
@ -2240,8 +2271,10 @@ const BSBilling7Payment = () => {
SalesPaymentType: 'normal',
PaymentDetail: [
{
PaymentType: (salesBillEdit && currentOrderNetAmount < previousNetAmount) ? refundPaySelected :
Paybtnnameselected?.toLowerCase() === 'upi'
PaymentType:
salesBillEdit && currentOrderNetAmount < previousNetAmount
? refundPaySelected
: Paybtnnameselected?.toLowerCase() === 'upi'
? SelectedUPIPayOption?.toLowerCase() === 'pd'
? PaymentDeviceUPI?.[0]?.ModeId
: SelectedUPIPayOption?.toLowerCase() === 'pg'
@ -2254,15 +2287,25 @@ const BSBilling7Payment = () => {
: paybtnselected
? paybtnselected
: null,
Amount: (salesBillEdit && currentOrderNetAmount < previousNetAmount) ? previousNetAmount - currentOrderNetAmount : Math.round(TotalAmount),
MerchantId: (salesBillEdit && currentOrderNetAmount < previousNetAmount) ? null :
Paybtnnameselected?.toLowerCase() === 'upi' &&
Amount:
salesBillEdit && currentOrderNetAmount < previousNetAmount
? previousNetAmount - currentOrderNetAmount
: Math.round(TotalAmount),
MerchantId:
salesBillEdit && currentOrderNetAmount < previousNetAmount
? null
: Paybtnnameselected?.toLowerCase() === 'upi' &&
SelectedUPIPayOption?.toLowerCase() === 'business'
? BusinessPayOption?.find((busupi) => busupi?.ModeId === UpiId)
?.MerchantId
: null,
PaymentOptionType: (salesBillEdit && currentOrderNetAmount < previousNetAmount) && (refundPaySelectedName?.toLowerCase() === 'cash' || refundPaySelectedName?.toLowerCase() === 'credit') ? 'PC' :
Paybtnnameselected?.toLowerCase() === 'cash'
PaymentOptionType:
salesBillEdit &&
currentOrderNetAmount < previousNetAmount &&
(refundPaySelectedName?.toLowerCase() === 'cash' ||
refundPaySelectedName?.toLowerCase() === 'credit')
? 'PC'
: Paybtnnameselected?.toLowerCase() === 'cash'
? 'PC'
: Paybtnnameselected?.toLowerCase() === 'credit'
? 'PC'
@ -2275,16 +2318,21 @@ const BSBilling7Payment = () => {
? 'BU'
: SelectedUPIPayOption
: null,
ModeOfPayment: (salesBillEdit && currentOrderNetAmount < previousNetAmount) ? null :
SelectedUPIPayOption?.toLowerCase() === 'default'
ModeOfPayment:
salesBillEdit && currentOrderNetAmount < previousNetAmount
? null
: SelectedUPIPayOption?.toLowerCase() === 'default'
? PaymentUpiOptions?.find((upipay) => upipay?.UPIId === UpiId)
?.UPIDetailId
: SelectedUPIPayOption?.toLowerCase() === 'business'
? BusinessPayOption?.find((busupi) => busupi?.ModeId === UpiId)
?.MerchantUPIId
? BusinessPayOption?.find(
(busupi) => busupi?.ModeId === UpiId
)?.MerchantUPIId
: null,
AccountDtl: (salesBillEdit && currentOrderNetAmount < previousNetAmount) ? [] :
Paybtnnameselected?.toLowerCase() === 'upi' &&
AccountDtl:
salesBillEdit && currentOrderNetAmount < previousNetAmount
? []
: Paybtnnameselected?.toLowerCase() === 'upi' &&
SelectedUPIPayOption?.toLowerCase() === 'default'
? useOptions?.[0]?.PaymentDetails?.Payatthecounter?.find(
(upipay) => upipay?.UPIId === UpiId
@ -2300,8 +2348,10 @@ const BSBilling7Payment = () => {
SelectedCardOption?.toLowerCase() === 'pg')
? useOptions?.[0]?.PaymentDetails?.PaymentGateway
: [],
PaymentStatus: (salesBillEdit && currentOrderNetAmount < previousNetAmount) ? 'S' :
Paybtnnameselected?.toLowerCase() === 'cash'
PaymentStatus:
salesBillEdit && currentOrderNetAmount < previousNetAmount
? 'S'
: Paybtnnameselected?.toLowerCase() === 'cash'
? 'S'
: Paybtnnameselected?.toLowerCase() === 'credit'
? 'S'
@ -2309,9 +2359,18 @@ const BSBilling7Payment = () => {
SelectedUPIPayOption?.toLowerCase() === 'default'
? 'S'
: 'P',
Debit: (salesBillEdit && currentOrderNetAmount < previousNetAmount && refundPaySelectedName?.toLowerCase() === 'credit') ? Math.round(previousNetAmount - currentOrderNetAmount) : 0,
Credit: salesBillEdit ? (currentOrderNetAmount > previousNetAmount && Paybtnnameselected?.toLowerCase() === 'credit') ? Math.round(TotalAmount) : 0 :
Debit:
salesBillEdit &&
currentOrderNetAmount < previousNetAmount &&
refundPaySelectedName?.toLowerCase() === 'credit'
? Math.round(previousNetAmount - currentOrderNetAmount)
: 0,
Credit: salesBillEdit
? currentOrderNetAmount > previousNetAmount &&
Paybtnnameselected?.toLowerCase() === 'credit'
? Math.round(TotalAmount)
: 0
: Paybtnnameselected?.toLowerCase() === 'credit'
? Math.round(TotalAmount)
: 0,
},
@ -3509,21 +3568,24 @@ const BSBilling7Payment = () => {
<div className="BSBilling4-price-full bsbilltable7">
<div className="BSBilling4-price-content">
{screenwidth <= 768 && (
<div className="RowforResposiveBill7">
<div
className={`BSBillingTable1-summeryTable ${responsiveBill ? 'open' : 'closed'}`}
style={{
width: '100%',
transition: 'max-height 0.3s ease-in-out',
overflow: 'scroll',
overflow: 'auto',
height: 'max-content',
maxHeight: responsiveBill ? '180px' : '0px',
scrollbarWidth: 'thin',
}}
>
{Array.isArray(OrderCardDetail) && OrderCardDetail?.length >= 1 && (
{Array.isArray(OrderCardDetail) &&
OrderCardDetail?.length >= 1 && (
<BSBillingTable7 optionNames={tableOptions} />
)}
</div>
)}
{screenwidth <= 768 && (
<div
style={{
display: 'flex',
@ -3532,7 +3594,8 @@ const BSBilling7Payment = () => {
width: '100%',
}}
>
{Array.isArray(OrderCardDetail) && OrderCardDetail?.length >= 1 && (
{Array.isArray(OrderCardDetail) &&
OrderCardDetail?.length >= 1 && (
<div
onClick={handleResponsiveBill}
className="Btn-responsiveBill"
@ -3566,17 +3629,13 @@ const BSBilling7Payment = () => {
</div>
)}
</div>
</div>
)}
{/* {Array.isArray(OrderCardDetail) && OrderCardDetail?.length >= 1 && (
<span className="Table3-Price-div-table">
{" "}
<BSBillingTable7 optionNames={tableOptions} />
</span>
)} */}
<div className="RowResposiveBill7">
<div className="Table7-price-icon-container">
<Messages messageType={messageType} messageData={messageData} />
<div className="CustomerAddSrch">
<div style={{ height: '2.1rem' }}>
<div>
{tableOptions
?.filter((item) => item.OptionName === 'AddCustomer')
?.map((filteredItem) => (
@ -3611,7 +3670,7 @@ const BSBilling7Payment = () => {
))}
</div>
</div>
<div className="BS3hold-sum">
<div className="BS7hold-sum">
{(addcustomer || hold) && (
<FeaturesFunctionalities
handleAddCustomerCancel={handleAddCustomerCancel}
@ -3671,8 +3730,10 @@ const BSBilling7Payment = () => {
)}
{/* Customer Orders */}
{(SelCustId && tableOptions?.filter((item) => item.OptionName === 'PreviousBillFetch')
.length === 1) && (
{SelCustId &&
tableOptions?.filter(
(item) => item.OptionName === 'PreviousBillFetch'
).length === 1 && (
<Tooltip title="Customer Orders" isMobile={isMobile}>
{' '}
<div
@ -3894,7 +3955,10 @@ const BSBilling7Payment = () => {
paybtns?.length > 0 &&
!addnewAccess &&
!OtherServicesglobal && (
<TooltipWrapper title={'Recall'} isMobile={isMobile}>
<TooltipWrapper
title={'Recall'}
isMobile={isMobile}
>
{' '}
<Badge
count={Holddata?.length}
@ -3954,7 +4018,8 @@ const BSBilling7Payment = () => {
: 1,
}}
>
{paybtns?.length > 0 && (currentOrderNetAmount >= previousNetAmount) ? (
{paybtns?.length > 0 &&
currentOrderNetAmount >= previousNetAmount ? (
paybtns?.map((payment) => (
<div className="Table3-cash">
<button
@ -3980,7 +4045,10 @@ const BSBilling7Payment = () => {
payment.ModeId,
payment.ModeName
)
: handlePaymentMode(payment.ModeId, payment.ModeName)
: handlePaymentMode(
payment.ModeId,
payment.ModeName
)
}
>
{/* {UpiOption === "" && payment?.ModeName?.toLowerCase() === "upi" && <p> UPI</p>} */}
@ -4031,7 +4099,9 @@ const BSBilling7Payment = () => {
</button>
</div>
))
) : (currentOrderNetAmount < previousNetAmount && salesBillEdit && refundPayBtns.length > 0) ? (
) : currentOrderNetAmount < previousNetAmount &&
salesBillEdit &&
refundPayBtns.length > 0 ? (
refundPayBtns.map((payment) => (
<div className="Table3-cash">
<button
@ -4051,7 +4121,12 @@ const BSBilling7Payment = () => {
? 'blink-animation 0.5s infinite alternate'
: 'none',
}}
onClick={() => handleRefundPaymentMode(payment?.ConfigId, payment?.ConfigName)}
onClick={() =>
handleRefundPaymentMode(
payment?.ConfigId,
payment?.ConfigName
)
}
>
{/* {UpiOption === "" && payment?.ModeName?.toLowerCase() === "upi" && <p> UPI</p>} */}
@ -4135,10 +4210,6 @@ const BSBilling7Payment = () => {
)}
</div>
{/* {(selectCustomerDisplay === true || paymentModeDisplay === true) && (
<div className="BSBilling4-vertical-line"></div>
)} */}
<div
className={
selectCustomerDisplay === true || paymentModeDisplay === true
@ -4253,8 +4324,6 @@ const BSBilling7Payment = () => {
/>
</Popover>
</div>
</div>
</div>
<div className="Table4-finalprice">
@ -4268,8 +4337,10 @@ const BSBilling7Payment = () => {
OrderCardDetail?.length > 0 &&
paybtnselected &&
CheckBookingStatus != 'Close'
? !OrderStatus ? salesBillEdit && (currentOrderNetAmount < previousNetAmount) ?
'Table4-Btn-final-price'
? !OrderStatus
? salesBillEdit &&
currentOrderNetAmount < previousNetAmount
? 'Table4-Btn-final-price'
: 'Table4-Btn-final-price'
: 'Table4-Btn-final-price Order'
: 'Table4-Btn-final-price-disabled'
@ -4283,7 +4354,15 @@ const BSBilling7Payment = () => {
handleButtonClick
}
>
{!OrderStatus ? salesBillEdit && (currentOrderNetAmount < previousNetAmount) ? <p className="Table4-Order">Refund: {(previousNetAmount || 0) - (currentOrderNetAmount || 0)}</p> : (
{!OrderStatus ? (
salesBillEdit &&
currentOrderNetAmount < previousNetAmount ? (
<p className="Table4-Order">
Refund:
{(previousNetAmount || 0) -
(currentOrderNetAmount || 0)}
</p>
) : (
<>
<div className="Table4-fullrate">
<div
@ -4310,7 +4389,10 @@ const BSBilling7Payment = () => {
OrderType === 'Failed'
? FailedTotalAmt
: credit && overAllBal >= 0
? Math.max(0, TotalAmount - overAllBal)
? Math.max(
0,
TotalAmount - overAllBal
)
: TotalAmount
)}
/>
@ -4322,6 +4404,7 @@ const BSBilling7Payment = () => {
</div>
</div>
</>
)
) : (
<div className="Table4-Order">ORDER</div>
)}
@ -4390,6 +4473,7 @@ const BSBilling7Payment = () => {
</div>
</div>
</div>
</div>
<DefaultModal
open={UpiOpen}
title="UPI PAYMENT"
@ -4616,10 +4700,17 @@ const BSBilling7Payment = () => {
SplitPaymentModal={Splitpayment}
handlesplitpaymentclose={handlesplitpaymentclose}
TotalNetAmount={
OrderType === 'Failed' ? FailedTotalAmt : Math.round(OrderCardDetail?.reduce((acc, data) => data?.TotalAmt + acc, 0) -
OrderType === 'Failed'
? FailedTotalAmt
: Math.round(
OrderCardDetail?.reduce(
(acc, data) => data?.TotalAmt + acc,
0
) -
((OverAllSales > 0 ? OverAllSales : 0) +
(OverAllEstimate > 0 ? OverAllEstimate : 0) +
(Discount > 0 ? Discount : 0)))
(Discount > 0 ? Discount : 0))
)
}
failedOrderData={failedOrderData}
/>

View File

@ -1,4 +1,4 @@
import React, { lazy, Suspense, useEffect, useState } from 'react';
import React, { lazy, useEffect, useState } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import '../../../../../Styles/BookingScreen/Components/BSBillingTables/BSBillingTable7/BSBillingTable7.scss';
import {
@ -71,7 +71,6 @@ const CustomerPriceHistory = lazy(
() => import('../../UtillComponents/CustomerPriceHistory.jsx')
);
import { useUtilsComponent } from '../../../../../Services/utils.js';
import BillingTableSkeleton from '../../../../../Components/Skeleton/BillingTableSkeleton.jsx';
const BSBillingTable7 = () => {
const { removeExtraCharge } = useUtilsComponent();
@ -1912,7 +1911,6 @@ const BSBillingTable7 = () => {
};
return (
<Suspense fallback={<BillingTableSkeleton />}>
<>
<div
style={{
@ -2191,11 +2189,12 @@ const BSBillingTable7 = () => {
? () => handleEditQuantity(item)
: editdelete === 'Delete'
? () => removeFromCart(item)
: () => { }
: () => {}
}
// 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'
}
@ -2251,10 +2250,7 @@ const BSBillingTable7 = () => {
'variant'
) && <span>{item?.ProdVariantName} </span>}
{item?.Size}
{item?.SinglePc == 'Y'
? 'PCS'
: item?.UomName}
)
{item?.SinglePc == 'Y' ? 'PCS' : item?.UomName})
</p>
{item?.OfferMessage &&
!Array.isArray(item.OfferMessage) && (
@ -2317,12 +2313,16 @@ const BSBillingTable7 = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -2383,8 +2383,7 @@ const BSBillingTable7 = () => {
: BookingType !== 'Dine In' &&
triggerAnimation &&
OldtableDataTakeAway?.length + index === 0 &&
tableDataDinein?.length >=
PreviousdataLength &&
tableDataDinein?.length >= PreviousdataLength &&
!HoldOrderDtl &&
!UnpaidData
? 'wheat'
@ -2420,11 +2419,12 @@ const BSBillingTable7 = () => {
? () => handleEditQuantity(item)
: editdelete === 'Delete'
? () => removeFromCart(item)
: () => { }
: () => {}
}
// onClick={editdelete === "Edit" ? () => handleEditQuantity(item) : editdelete === "Delete" ? () => removeFromCart(item) : ""}
className={`${item?.SalesId
className={`${
item?.SalesId
? 'BSBill-Table7-content-disabled'
: 'BSBill-Table7-content'
}
@ -2476,10 +2476,7 @@ const BSBillingTable7 = () => {
'variant'
) && <span>{item?.ProdVariantName} </span>}
{item?.Size}
{item?.SinglePc == 'Y'
? 'PCS'
: item?.UomName}
)
{item?.SinglePc == 'Y' ? 'PCS' : item?.UomName})
</p>
{item?.OfferMessage &&
!Array.isArray(item.OfferMessage) && (
@ -2542,12 +2539,16 @@ const BSBillingTable7 = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -2625,9 +2626,7 @@ const BSBillingTable7 = () => {
2 ===
0
? 'white'
: SelectedBillColor?.[
'OverallBackgroundColor'
]
: SelectedBillColor?.['OverallBackgroundColor']
? SelectedBillColor?.[
'OverallBackgroundColor'
]
@ -2688,11 +2687,12 @@ const BSBillingTable7 = () => {
: ''
: editdelete === 'Delete'
? () => removeFromCart(item)
: () => { }
: () => {}
}
// 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'
}
@ -2735,7 +2735,8 @@ const BSBillingTable7 = () => {
}}
onClick={() =>
(item.FullProductIdentifierDtls?.length > 0 ||
item.ProductIdentifierDtls?.length > 0 || imeiModal) &&
item.ProductIdentifierDtls?.length > 0 ||
imeiModal) &&
handleImeiDetails(item)
}
>
@ -2754,9 +2755,7 @@ const BSBillingTable7 = () => {
<>
{!item?.ProdVariantName?.toLowerCase()?.includes(
'variant'
) && (
<span>{item?.ProdVariantName} </span>
)}
) && <span>{item?.ProdVariantName} </span>}
{item?.Size}
{item?.SinglePc == 'Y'
? 'PCS'
@ -2825,12 +2824,16 @@ const BSBillingTable7 = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -2901,8 +2904,7 @@ const BSBillingTable7 = () => {
tableDataTakeAway?.length +
index ===
0 &&
tableDataDinein?.length >=
PreviousdataLength &&
tableDataDinein?.length >= PreviousdataLength &&
!HoldOrderDtl &&
!UnpaidData
? 'wheat'
@ -2955,11 +2957,12 @@ const BSBillingTable7 = () => {
? () => handleEditQuantity(item)
: editdelete === 'Delete'
? () => removeFromCart(item)
: () => { }
: () => {}
}
// 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'
}
@ -3015,10 +3018,7 @@ const BSBillingTable7 = () => {
'variant'
) && <span>{item?.ProdVariantName} </span>}
{item?.Size}
{item?.SinglePc == 'Y'
? 'PCS'
: item?.UomName}
)
{item?.SinglePc == 'Y' ? 'PCS' : item?.UomName})
</p>
{item?.OfferMessage &&
!Array.isArray(item.OfferMessage) && (
@ -3081,12 +3081,16 @@ const BSBillingTable7 = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -3161,7 +3165,6 @@ const BSBillingTable7 = () => {
/>
)}
</>
</Suspense>
);
};

View File

@ -1,4 +1,4 @@
import { useEffect, useState, lazy, Suspense } from 'react';
import { useEffect, useState, lazy } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { Popconfirm, Tooltip } from 'antd';
import WebFont from 'webfontloader';
@ -93,7 +93,6 @@ import {
import { ApplicationPreferences } from '../../../../../Features/BrachLogin/BranchLogin.js';
import { useDateStore } from '../../../../../Features/BookingScreen/BookingData/DateStore.js';
import { useUtilsComponent } from '../../../../../Services/utils.js';
import BillingTableSkeleton from '../../../../../Components/Skeleton/BillingTableSkeleton.jsx';
const StandardTable = () => {
const { removeExtraCharge } = useUtilsComponent();
@ -1244,7 +1243,7 @@ const StandardTable = () => {
InwardDtlId: isPaidproduct?.InwardDtlId,
BuyInwardDtlId: null,
Offer: 0,
localid: isPaidproduct?.localid
localid: isPaidproduct?.localid,
});
} else if (isPaidproduct?.OrderQty > item?.OrderQty) {
// Just Decrease Paid Qty
@ -1418,7 +1417,7 @@ const StandardTable = () => {
InwardDtlId: item?.InwardDtlId,
BuyInwardDtlId: null,
Offer: item?.Offer,
localid: item?.localid
localid: item?.localid,
});
await ChangeFreeprodlistFn({
OverAllFreeQty: isCheckFreeProduct?.OverAllFreeQty,
@ -1498,7 +1497,7 @@ const StandardTable = () => {
InwardDtlId: item?.InwardDtlId,
BuyInwardDtlId: null,
Offer: item?.Offer,
localid: item?.localid
localid: item?.localid,
});
await ChangeFreeprodlistFn({
OverAllFreeQty: isCheckFreeProduct?.OverAllFreeQty,
@ -2123,7 +2122,6 @@ const StandardTable = () => {
const isAndroid = /Android/i.test(navigator.userAgent);
return (
<Suspense fallback={<BillingTableSkeleton />}>
<div
className="standardTableMain"
style={{ height: isMobile ? '86%' : '100%' }}
@ -2395,7 +2393,8 @@ const StandardTable = () => {
{OldtableDataTakeAway?.map((item, index) => (
<tr
key={index}
className={`${item?.SalesId && OrderType !== 'Hold'
className={`${
item?.SalesId && OrderType !== 'Hold'
? 'booking-billing-table-row-disabled'
: 'booking-billing-table-row'
}`}
@ -2410,8 +2409,7 @@ const StandardTable = () => {
: triggerAnimation &&
index === 0 &&
!item?.SalesId &&
tableDataTakeAway?.length >=
PreviousdataLength
tableDataTakeAway?.length >= PreviousdataLength
? 'wheat'
: triggerAnimation &&
index === 0 &&
@ -2427,17 +2425,13 @@ const StandardTable = () => {
? 'rgb(243, 248, 213)'
: GlobEstBooking === 'ParEst' &&
GlobProdwisedata?.includes(
item?.InwardDtlId +
' ' +
item?.BookingTypeName
item?.InwardDtlId + ' ' + item?.BookingTypeName
)
? '#b2d1f7'
: index % 2 === 0
? 'white'
: SelectedBillColor?.['OverallBackgroundColor']
? SelectedBillColor?.[
'OverallBackgroundColor'
]
? SelectedBillColor?.['OverallBackgroundColor']
: '#d6d6d6',
animation:
BillOrderPre === 'Y' && !BookingTypeBoth
@ -2502,9 +2496,7 @@ const StandardTable = () => {
>
{item?.ProdName}
&nbsp;{' '}
{item?.BrandName !== null
? item?.BrandName
: ''}
{item?.BrandName !== null ? item?.BrandName : ''}
{item?.Type != 'C' && (
<>
<p
@ -2517,9 +2509,7 @@ const StandardTable = () => {
(
{!item?.ProdVariantName?.toLowerCase()?.includes(
'variant'
) && (
<span>{item?.ProdVariantName} </span>
)}
) && <span>{item?.ProdVariantName} </span>}
{AvailableDate ? (
<>
{' '}
@ -2621,12 +2611,16 @@ const StandardTable = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -2726,7 +2720,8 @@ const StandardTable = () => {
{OldtableDataDinein?.map((item, index) => (
<tr
key={OldtableDataTakeAway?.length + index}
className={`${item?.SalesId
className={`${
item?.SalesId
? 'booking-billing-table-row-disabled'
: 'booking-billing-table-row'
}
@ -2748,8 +2743,7 @@ const StandardTable = () => {
? 'wheat'
: BookingType !== 'Dine In' &&
triggerAnimation &&
OldtableDataTakeAway?.length + index ===
0 &&
OldtableDataTakeAway?.length + index === 0 &&
tableDataDinein?.length >=
PreviousdataLength &&
!HoldOrderDtl &&
@ -2827,9 +2821,7 @@ const StandardTable = () => {
>
{item?.ProdName}
&nbsp;{' '}
{item?.BrandName !== null
? item?.BrandName
: ''}
{item?.BrandName !== null ? item?.BrandName : ''}
{item?.Type != 'C' && (
<>
<p
@ -2842,9 +2834,7 @@ const StandardTable = () => {
(
{!item?.ProdVariantName?.toLowerCase()?.includes(
'variant'
) && (
<span>{item?.ProdVariantName} </span>
)}
) && <span>{item?.ProdVariantName} </span>}
{AvailableDate ? (
<>
{' '}
@ -2945,12 +2935,16 @@ const StandardTable = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -3055,7 +3049,8 @@ const StandardTable = () => {
OldtableDataTakeAway?.length +
index
}
className={`${BookingType === 'Dine In' && item?.SalesId
className={`${
BookingType === 'Dine In' && item?.SalesId
? 'booking-billing-table-row-disabled'
: 'booking-billing-table-row'
}
@ -3073,8 +3068,7 @@ const StandardTable = () => {
index ===
0 &&
!item?.SalesId &&
tableDataTakeAway?.length >=
PreviousdataLength
tableDataTakeAway?.length >= PreviousdataLength
? 'wheat'
: BookingType !== 'Dine In' &&
triggerAnimation &&
@ -3114,9 +3108,7 @@ const StandardTable = () => {
? 'rgb(243, 248, 213)'
: GlobEstBooking === 'ParEst' &&
GlobProdwisedata?.includes(
item?.InwardDtlId +
' ' +
item?.BookingTypeName
item?.InwardDtlId + ' ' + item?.BookingTypeName
)
? '#b2d1f7'
: (OldtableDataDinein?.length +
@ -3126,9 +3118,7 @@ const StandardTable = () => {
0
? 'white'
: SelectedBillColor?.['OverallBackgroundColor']
? SelectedBillColor?.[
'OverallBackgroundColor'
]
? SelectedBillColor?.['OverallBackgroundColor']
: '#d6d6d6',
animation:
BillOrderPre === 'Y' && !BookingTypeBoth
@ -3188,8 +3178,9 @@ const StandardTable = () => {
"'Inter', ui-sans-serif, system-ui, sans-serif",
}}
onClick={() =>
(item.FullProductIdentifierDtls?.length > 0 ||
item.ProductIdentifierDtls?.length > 0 || imeiModal)
item.FullProductIdentifierDtls?.length > 0 ||
item.ProductIdentifierDtls?.length > 0 ||
imeiModal
? handleImeiDetails(item)
: editField && handleEditQuantity(item)
}
@ -3198,9 +3189,7 @@ const StandardTable = () => {
? item.ProdName
: item.ServiceName}
&nbsp;{' '}
{item?.BrandName !== null
? item?.BrandName
: ''}
{item?.BrandName !== null ? item?.BrandName : ''}
{item?.Type != 'C' && (
<>
<p
@ -3215,9 +3204,7 @@ const StandardTable = () => {
{!item?.ProdVariantName?.toLowerCase()?.includes(
'variant'
) && (
<span>
{item?.ProdVariantName}{' '}
</span>
<span>{item?.ProdVariantName} </span>
)}
{AvailableDate ? (
<>
@ -3225,8 +3212,7 @@ const StandardTable = () => {
(
{`${to12Hour(item?.VariantAvailableFrom)} - ${to12Hour(item?.VariantAvailableTo)}`}
) &nbsp;
{item?.SinglePc == 'Y' &&
'Single'}
{item?.SinglePc == 'Y' && 'Single'}
</>
) : (
<>
@ -3321,12 +3307,16 @@ const StandardTable = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
@ -3432,7 +3422,8 @@ const StandardTable = () => {
tableDataTakeAway?.length +
index
}
className={`${BookingType === 'Dine In' && item?.SalesId
className={`${
BookingType === 'Dine In' && item?.SalesId
? 'booking-billing-table-row-disabled'
: 'booking-billing-table-row'
}
@ -3476,9 +3467,7 @@ const StandardTable = () => {
? 'rgb(243, 248, 213)'
: GlobEstBooking === 'ParEst' &&
GlobProdwisedata?.includes(
item?.InwardDtlId +
' ' +
item?.BookingTypeName
item?.InwardDtlId + ' ' + item?.BookingTypeName
)
? '#b2d1f7'
: (OldtableDataTakeAway?.length +
@ -3489,9 +3478,7 @@ const StandardTable = () => {
0
? 'white'
: SelectedBillColor?.['OverallBackgroundColor']
? SelectedBillColor?.[
'OverallBackgroundColor'
]
? SelectedBillColor?.['OverallBackgroundColor']
: '#d6d6d6',
animation:
BillOrderPre === 'Y' && !BookingTypeBoth
@ -3560,9 +3547,7 @@ const StandardTable = () => {
>
{item?.ProdName}
&nbsp;{' '}
{item?.BrandName !== null
? item?.BrandName
: ''}
{item?.BrandName !== null ? item?.BrandName : ''}
{item?.Type != 'C' && (
<>
<p
@ -3575,9 +3560,7 @@ const StandardTable = () => {
(
{!item?.ProdVariantName?.toLowerCase()?.includes(
'variant'
) && (
<span>{item?.ProdVariantName} </span>
)}
) && <span>{item?.ProdVariantName} </span>}
{AvailableDate ? (
<>
{' '}
@ -3678,12 +3661,16 @@ const StandardTable = () => {
{item?.Type != 'C'
? item.Offer && item.Offer > 0
? item.Offer
: item.DiscountAmt ? item.DiscountAmt : '-'
: item.DiscountAmt
? item.DiscountAmt
: '-'
: item?.OfferPrice && item?.OfferPrice > 0
? item?.OfferType === 'F'
? `${safeRound(item.OfferPrice)}`
: `${item.OfferPrice}%`
: item.DiscountAmt ? item.DiscountAmt : '-'}
: item.DiscountAmt
? item.DiscountAmt
: '-'}
</td>
)}
{tableitem.OptionName == 'Quantity' && (
@ -3801,7 +3788,6 @@ const StandardTable = () => {
</div>
</div>
</div>
</Suspense>
);
};

View File

@ -15,13 +15,11 @@ import {
PreferenceData,
} from '../../../../Features/BookingScreen/BookingData/BookingData';
import { ExtractDateFormate } from '../../../../Services/Others';
import { RiArchiveLine } from 'react-icons/ri';
import { AiFillAlert } from 'react-icons/ai';
import { TbAlertTriangleFilled } from 'react-icons/tb';
import { IoEye } from 'react-icons/io5';
import { DefaultModal } from '../../../../Components/Modal/DefaultModal';
import { Tables } from '../../../../Components/Tables/Table';
import '../../../../Styles/OverAllStyle/OverAllStyle.scss';
import '../../../../Styles/OverAllStyle/OverAllStyle.scss';
const NoDataComponent = () => (
<div style={{ textAlign: 'center', padding: 20 }}>
@ -351,7 +349,13 @@ const BSExpireProductsList = () => {
messageData={message.data}
onComplete={onComplete}
/>
<div
style={{
display: 'flex',
justifyContent: 'space-between',
marginTop: '20px',
}}
>
<Segmented
value={selectedSegment}
onChange={onChangeSegment}
@ -369,7 +373,7 @@ const BSExpireProductsList = () => {
},
]}
/>
<div style={{ display: 'flex', justifyContent: 'flex-end' }}>
<Search
placeholder={`Search ${selectedSegment === 'expired' ? 'Expired' : 'Low Stock'} Products`}
onSearchChange={(e) =>
@ -381,7 +385,7 @@ const BSExpireProductsList = () => {
</div>
<Table
className='LowStockAlterModalTable'
className="LowStockAlterModalTable"
rowKey="InwardDtlId"
columns={
selectedSegment === 'expired' ? expiredColumns : lowStockColumns

View File

@ -21,7 +21,11 @@ const RetailBookingClosing = (props) => {
const dispatch = useDispatch();
const UserType = getSession('UserType');
const preferenceDatas = useSelector(PreferenceData);
const allowDecimal = preferenceDatas?.[0]?.SettingDtlDetails?.find((setting) => setting?.SettingIdName?.toLowerCase() === "decimal" && setting?.SettingValue === 'Y');
const allowDecimal = preferenceDatas?.[0]?.SettingDtlDetails?.find(
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'decimal' &&
setting?.SettingValue === 'Y'
);
const CompId = getSession('CompId');
const AppId = getSession('AppId');
const UserId = getSession('UserId');
@ -298,39 +302,42 @@ const RetailBookingClosing = (props) => {
title={'Booking Close'}
handleCancel={props.PaymentClose}
footer={false}
width={700}
width={750}
children={
<div className="PaymentClosingOverAll">
<div style={{ display: 'flex', justifyContent: 'space-between' }}>
<div className="PaymentClosingOverAll-sub">
<div>
{' '}
Received Amount ={' '}
<div className="ClosepayBTN">
<p> Received Amount </p>
<div>= </div>
<span style={{ color: '#28AA3A', cursor: 'pointer' }}>
{safeRound(PaymentClosingData?.ReceivedAmount)}
</span>
</div>
<div>
Cash Amount ={' '}
<div className="ClosepayBTN">
<p> Cash Amount</p>
<div>= </div>
<span style={{ color: '#28AA3A', cursor: 'pointer' }}>
{safeRound(PaymentClosingData?.OverAllCashAmount)}
</span>
</div>
<div>
Card Amount ={' '}
<div className="ClosepayBTN">
<p> Card Amount</p>
<div>=</div>
<span style={{ color: '#28AA3A', cursor: 'pointer' }}>
{safeRound(PaymentClosingData?.OverAllCardAmount)}
</span>
</div>
<div>
UPI Amount ={' '}
<div className="ClosepayBTN">
<p>UPI Amount</p>
<div>=</div>
<span style={{ color: '#28AA3A', cursor: 'pointer' }}>
{safeRound(PaymentClosingData?.OverAllUpiAmount)}
</span>
</div>
<div>
Total Cash In Hand ={' '}
<div className="ClosepayBTN">
<p> Total Cash In Hand</p>
<div>=</div>
<span style={{ color: '#28AA3A' }}>
{safeRound(TotalCashInHand)}
</span>

View File

@ -68,10 +68,19 @@
font-size: 14px;
font-weight: 500;
font-family: "Poppins";
width: 250px;
div {
width: 300px;
margin-top: 10px;
}
.ClosepayBTN {
display: flex;
align-items: center;
justify-content: space-between;
p {
width: 150px;
}
span {
width: 50px;
text-align: right;
}
}

View File

@ -1,10 +1,18 @@
import React, { useState, useEffect, useRef, useCallback } from 'react';
import { useNavigate } from 'react-router-dom';
import { useDispatch } from 'react-redux';
import { ImWarning } from "react-icons/im";
import { Form, Table, Input, Select, AutoComplete, Button, Tooltip } from 'antd';
import { BsUpcScan } from "react-icons/bs";
import { FaLink } from "react-icons/fa";
import { ImWarning } from 'react-icons/im';
import {
Form,
Table,
Input,
Select,
AutoComplete,
Button,
Tooltip,
} from 'antd';
import { BsUpcScan } from 'react-icons/bs';
import { FaLink } from 'react-icons/fa';
import {
DeleteFilled,
ArrowRightOutlined,
@ -13,7 +21,12 @@ import {
import { Messages } from '../../Components/Notifications/Messages.jsx';
import { InputField } from '../../Components/Forms/InputField.jsx';
import Buttons from '../../Components/Forms/Buttons.jsx';
import { getSession, pdfDiv, printDiv, validateSafeInput } from '../../Services/Others';
import {
getSession,
pdfDiv,
printDiv,
validateSafeInput,
} from '../../Services/Others';
import FormHeader from '../PageComponents/FormHeader.jsx';
import { DropDowns } from '../../Components/Forms/DropDown.jsx';
import { CiBarcode } from 'react-icons/ci';
@ -32,14 +45,17 @@ import {
getEmpAccess,
} from '../../Features/AppPage/CenterPage.js';
import { useAuth } from '../../AuthContext.jsx';
import { getAllCustomer, getPreferenceData } from '../../Features/BookingScreen/BookingData/BookingData.js';
import {
getAllCustomer,
getPreferenceData,
} from '../../Features/BookingScreen/BookingData/BookingData.js';
const subDirectory = import.meta.env.BASE_URL;
import TooltipWrapper from '../../Components/Tooltip/Tooltip';
import { FaEye, FaPrint } from 'react-icons/fa';
import { MdOutlineMail } from 'react-icons/md';
import { DefaultModal } from '../../Components/Modal/DefaultModal.jsx';
import FloatLabel from '../../Components/Forms/FloatLabel/index.jsx';
import { debounce } from "lodash";
import { debounce } from 'lodash';
import { getPrintSelectionComponentData } from '../../Features/ThemeChange/ThemeChange.js';
import { PrintStyleFunction } from '../paymentpdfPage/PrintStyleFunction.js';
import { isMobile } from 'react-device-detect';
@ -71,7 +87,7 @@ const SalesQuotationForm = () => {
const [SelProduct, setSelProduct] = useState(null);
const [selectedProductName, setSelectedProductName] = useState(null);
const [productSearchText, setProductSearchText] = useState("");
const [productSearchText, setProductSearchText] = useState('');
const [scanner, setScanner] = useState(false);
console.log(SelTaxTypeName, 'SelTaxTypeName');
@ -95,7 +111,7 @@ const SalesQuotationForm = () => {
const [addnewAccess, setaddnewAccess] = useState(true);
const [isbarcode, setisbarcode] = useState(false);
const [isSubmitted, setIsSubmitted] = useState(false);
const [usrMailDataModel, setusrMailDataModel] = useState(false)
const [usrMailDataModel, setusrMailDataModel] = useState(false);
const [EnteredMailId, setEnteredMailId] = useState(null);
const [PrintTempData, setPrintTempData] = useState([]);
console.log(TableData, 'TableData');
@ -111,8 +127,6 @@ const SalesQuotationForm = () => {
},
];
// const QuotationStylepdf = `<style>
// * {
// box-sizing: border-box;
@ -371,7 +385,6 @@ const SalesQuotationForm = () => {
// font-size:20px;
// }
// }
// </style>`;
@ -559,15 +572,15 @@ const SalesQuotationForm = () => {
);
if (matchedProduct) {
let productName = {};
productName.label = `${matchedProduct?.ProdName} (${matchedProduct.Size} ${matchedProduct.UomName})${matchedProduct?.BrandName ? ` - ${matchedProduct?.BrandName}` : ''}`
productName.label = `${matchedProduct?.ProdName} (${matchedProduct.Size} ${matchedProduct.UomName})${matchedProduct?.BrandName ? ` - ${matchedProduct?.BrandName}` : ''}`;
ProductDropDownChange(matchedProduct.ProdId, productName);
if (matchedProduct?.ProdVariantPriceDetails?.length < 2) {
setSelectedProductName("");
setSelProduct(null)
setSelectedProductName('');
setSelProduct(null);
}
} else {
setMessageType("error");
setMessageData("The Scanned Product not Available in Product List")
setMessageType('error');
setMessageData('The Scanned Product not Available in Product List');
}
}, 300),
[ProductData]
@ -575,12 +588,16 @@ const SalesQuotationForm = () => {
const getPreference = async () => {
const data = { AppId: AppId, CompId: CompId, BranchId: BranchId };
const { data: res } = await dispatch(getPreferenceData(data)).unwrap()
const decimalSetting = res?.data?.[0]?.SettingDtlDetails?.find((setting) => setting?.SettingIdName?.toLowerCase() === "decimal" && setting?.SettingValue === 'Y');
const { data: res } = await dispatch(getPreferenceData(data)).unwrap();
const decimalSetting = res?.data?.[0]?.SettingDtlDetails?.find(
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'decimal' &&
setting?.SettingValue === 'Y'
);
if (decimalSetting) {
setAllowDecimal(true)
}
setAllowDecimal(true);
}
};
const changebarcode = useCallback(() => {
setisbarcode((prev) => !prev);
}, []);
@ -621,7 +638,6 @@ const SalesQuotationForm = () => {
// Print();
// }, [PrintData]);
useEffect(() => {
let total = TableData?.reduce((accumulator, currentValue) => {
return accumulator + currentValue.NetAmt;
@ -659,7 +675,9 @@ const SalesQuotationForm = () => {
).unwrap();
if (Product?.data?.statusCode === 1) {
let Productonlydata = Product?.data?.data?.filter(
(item) => item?.ProdTypeName === 'Product' && (item?.StockAvailable === "Y" ? item?.BalanceQty > 0 : true)
(item) =>
item?.ProdTypeName === 'Product' &&
(item?.StockAvailable === 'Y' ? item?.BalanceQty > 0 : true)
);
setProductData(Productonlydata);
@ -684,13 +702,14 @@ const SalesQuotationForm = () => {
const Data = { AppId, CompId, BranchId };
const printtemp = await dispatch(getPrintSelectionComponentData(Data)).unwrap();
const printtemp = await dispatch(
getPrintSelectionComponentData(Data)
).unwrap();
const printTypeName = printtemp?.data?.data
?.flatMap(template => template.ComponentDetails || [])
?.flatMap((template) => template.ComponentDetails || [])
?.find(
comp =>
comp.SetasDefault === "Y" &&
comp.PrintTypeName === "Sales Quotation"
(comp) =>
comp.SetasDefault === 'Y' && comp.PrintTypeName === 'Sales Quotation'
);
setPrintTempData(printTypeName);
};
@ -739,33 +758,33 @@ const SalesQuotationForm = () => {
};
const handleScanSearch = () => {
if (scanner === false) {
setMessageType("success");
setMessageData("Search by QrCode/BarCode Enabled")
setMessageType('success');
setMessageData('Search by QrCode/BarCode Enabled');
} else {
setMessageType("success");
setMessageData("Search by QrCode/BarCode Disabled")
setMessageType('success');
setMessageData('Search by QrCode/BarCode Disabled');
}
setScanner(prev => !prev)
setScanner((prev) => !prev);
setSelectedProductName(null);
setselectedProductVariantData(null);
setVariants(null)
setVariants(null);
formRef?.current?.setFieldsValue({
ProdId: null,
VarProdId: null
VarProdId: null,
});
}
};
const handleProductSearch = (value) => {
if (scanner) {
debouncedScannerSearch(value);
}
setProductSearchText(value)
setProductSearchText(value);
setSelectedProductName(value);
setselectedProductVariantData([]);
setVariants([])
setVariants([]);
};
const ProductDropDownChange = async (ProdId, option) => {
setProductSearchText("")
setSelectedProductName(option?.label ? option?.label : '')
setProductSearchText('');
setSelectedProductName(option?.label ? option?.label : '');
formRef?.current?.resetFields(['VarProdId']);
console.log(ProductData, 'ProdIdProdId');
@ -866,9 +885,7 @@ const SalesQuotationForm = () => {
)?.[0]?.ProdVariantName;
const ProdName1 = TableData?.some(
(e) =>
e.ProdId == SelProduct &&
e.ProdVariantName === ProdName2
(e) => e.ProdId == SelProduct && e.ProdVariantName === ProdName2
);
if (ProdName1) {
setMessageType('error');
@ -886,9 +903,7 @@ const SalesQuotationForm = () => {
// let x = VariantData1?.filter((e) => e.InwardDtlId == value);
// let u = ProductData?.find((e) => e.ProdId == selectedProductData);
// console.log(first)
let ProductData1 = ProductData?.find(
(e) => e.ProdId == SelProduct
);
let ProductData1 = ProductData?.find((e) => e.ProdId == SelProduct);
console.log(ProductData1, 'ProductData1ProductData1');
let mrp;
let sellprice;
@ -988,7 +1003,7 @@ const SalesQuotationForm = () => {
title: 'Product Name',
dataIndex: 'ProdName',
key: 'ProdName',
width: "230px",
width: '230px',
align: 'right',
render: (text, record, index) => (
<a style={{ color: 'black' }}>
@ -1350,7 +1365,8 @@ const SalesQuotationForm = () => {
? sellprice * parseInt(qty)
: 0;
const taxamt = SelTaxTypeName?.toLowerCase() === 'withtax'
const taxamt =
SelTaxTypeName?.toLowerCase() === 'withtax'
? (Amount * parseInt(record?.TaxPercentage)) /
(100 + parseInt(record?.TaxPercentage))
: 0;
@ -1373,22 +1389,12 @@ const SalesQuotationForm = () => {
[`Qty${index}`]: qty,
[`NetAmt${index}`]: Amount,
// [`ReceivedQty${index}`]: qty,
// [`AcceptedQty${index}`]: acceptedQty,
// [`RejectedQty${index}`]: qty - acceptedQty,
// ReceivedQty: qty,
// AcceptedQty: acceptedQty,
// RejectedQty: qty - acceptedQty,
[`PurcDisc${index}`]: 0,
[`DiscType${index}`]: 'P',
});
};
const handleDiscountTypeChange = (value, record, index) => {
// console.log(value,"valuevalue")
// const newData1 = [...TableData];
// const item = newData1[index];
// item.DiscountType = value;
// setTableData(newData1);
const tempamt = record.Qty * record.Price;
const DisType = value;
const amount =
@ -1530,23 +1536,16 @@ const SalesQuotationForm = () => {
PostData['TaxAmount'] = parseFloat(
(TotalCgst + TotalSgst + TotalIgst)?.toFixed(2)
);
(PostData['CompId'] = CompId),
((PostData['CompId'] = CompId),
(PostData['BranchId'] = BranchId),
(PostData['AppId'] = AppId);
(PostData['AppId'] = AppId));
let res = await dispatch(postPurcQuotation(PostData)).unwrap();
if (res?.data?.statusCode === 1) {
setMessageType('success');
setMessageData(res?.data?.response);
const custId = formRef.current?.getFieldValue('CustId');
const customer = AllCustomer?.find(c => c.UserId === custId);
console.log(customer, "customertrt");
// const printDataWithCustomer = {
// ...res?.data?.data,
// customerName: customer?.CustName || '',
// customerAddress: customer?.CustAddress || '',
// customerMobile: customer?.CustMobile || '',
// };
const customer = AllCustomer?.find((c) => c.UserId === custId);
console.log(customer, 'customertrt');
setPrintData(res?.data?.data);
setIsSubmitted(true);
@ -1597,33 +1596,6 @@ const SalesQuotationForm = () => {
}
};
// const handleSearch = (input) => {
// // Only proceed if input is not empty and isbarcode is true
// if (!input || !isbarcode) {
// return;
// }
// if (debounceRef.current) {
// clearTimeout(debounceRef.current);
// }
// debounceRef.current = setTimeout(async () => {
// const product = ProductData.find(
// (p) => p.QRCode?.toLowerCase() === input.toLowerCase()
// );
// console.log(input, 'inputinput', product);
// if (product) {
// setEditingKey('');
// await ProductDropDownChange(product.ProdId);
// setTimeout(() => {
// setSelProduct(null);
// formRef.current?.setFieldsValue({ ProdId: null });
// }, 100);
// }
// }, 300);
// };
const onChangeprodFunction = (e) => {
console.log(e, 'yyyyyyyyyyyyyy');
@ -1651,20 +1623,11 @@ const SalesQuotationForm = () => {
}
};
// Add these functions inside your component, before the return statement:
// const handleEmailClick = () => {
// const subject = encodeURIComponent('Sales Quotation');
// const body = encodeURIComponent('Please find attached the purchase quotation.');
// window.open(`mailto:?subject=${subject}&body=${body}`);
// };
// const handlePrint = () => {
// printDiv('Pur-Quot-Print', QuotationStyle);
// };
// ...existing code...
const handlePrint = async () => {
const style = await PrintStyleFunction(
PrintTempData?.StyleName == undefined ? 'Style 13' : PrintTempData?.StyleName,
PrintTempData?.StyleName == undefined
? 'Style 13'
: PrintTempData?.StyleName,
'Quotation'
);
@ -1690,7 +1653,9 @@ const SalesQuotationForm = () => {
const selectedStyle =
stylesMap[
PrintTempData?.StyleName == undefined ? 'Style 13' : PrintTempData?.StyleName
PrintTempData?.StyleName == undefined
? 'Style 13'
: PrintTempData?.StyleName
];
if (isMobile) {
@ -1700,15 +1665,13 @@ const SalesQuotationForm = () => {
UserId: UserId,
dispatch,
});
}
else if (selectedStyle) {
} else if (selectedStyle) {
await printDiv(`${selectedStyle}`, style);
}
};
const handleEmailClick = async (mail, data) => {
let record = mail == "mail" ? data : PrintData?.[0]
let record = mail == 'mail' ? data : PrintData?.[0];
if (record?.Email) {
setTimeout(async () => {
@ -1726,46 +1689,45 @@ const SalesQuotationForm = () => {
if (res?.data?.status === 1) {
setMessageData(res?.data?.response);
setMessageType('success');
}
else {
} else {
setMessageData(res?.data?.response);
setMessageType('error');
}
// setMessageData("Email sent successfully");
// setMessageType('success');
} catch (error) {
console.error('❌ Email send failed:', error);
// alert(' Email failed to send');
setMessageData("Email failed to send");
setMessageData('Email failed to send');
setMessageType('error');
}
}, 300);
} else {
setusrMailDataModel(true);
}
else {
setusrMailDataModel(true)
}
};
const handleUserMailmodalCancel = () => {
setusrMailDataModel(false)
setEnteredMailId(null)
setusrMailDataModel(false);
setEnteredMailId(null);
emailform.resetFields();
// setQuotationProductdata([])
}
};
const emailSubmit = (values) => {
let data = { ...PrintData?.[0], ...{ CustMail: values.email }, ...{ Email: values.email } };
handleEmailClick("mail", data);
let data = {
...PrintData?.[0],
...{ CustMail: values.email },
...{ Email: values.email },
};
handleEmailClick('mail', data);
setEnteredMailId(null);
emailform.resetFields();
emailform.setFieldsValue({ email: '' });
setusrMailDataModel(false);
};
return (
<div className="pageOverAll">
<div className="userPage">
@ -1775,11 +1737,14 @@ const SalesQuotationForm = () => {
messageData={messageData}
onComplete={onComplete}
/>
<div className="formName" style={{
<div
className="formName"
style={{
display: 'flex',
justifyContent: 'space-between',
marginTop: '5px',
}}>
}}
>
<FormHeader title={'Sales Quotation'} />
<div
style={{
@ -1793,10 +1758,12 @@ const SalesQuotationForm = () => {
cursor: 'pointer',
fontFamily: 'Poppins',
fontWeight: '400',
whiteSpace: "nowrap",
fontSize: "15px"
whiteSpace: 'nowrap',
fontSize: '15px',
}}
onClick={() => navigate(`${subDirectory}setting/sales-quotation/list`)}
onClick={() =>
navigate(`${subDirectory}setting/sales-quotation/list`)
}
>
<FaEye /> <span>View Quotation</span>
</div>
@ -1857,129 +1824,67 @@ const SalesQuotationForm = () => {
/>
</Form.Item>
<div className="ProductDropDownChange-Quotation">
<Form.Item
name="ProdId"
>
<Form.Item name="ProdId">
<div className="product-scan sales-quotation">
<FloatLabel label={"Product Name"} value={selectedProductName}>
<FloatLabel
label={'Product Name'}
value={selectedProductName}
>
<AutoComplete
className="field-DropDown"
value={selectedProductName}
filterOption={(input, option) => {
const product = ProductData.find(p => p.ProdId === option.value);
const nameMatch = option.label?.toLowerCase()?.includes(productSearchText?.toLowerCase());
const qrMatch = product?.QRCode?.toLowerCase() == productSearchText?.toLowerCase();
const product = ProductData.find(
(p) => p.ProdId === option.value
);
const nameMatch = option.label
?.toLowerCase()
?.includes(productSearchText?.toLowerCase());
const qrMatch =
product?.QRCode?.toLowerCase() ==
productSearchText?.toLowerCase();
return nameMatch || qrMatch;
}}
options={!scanner ? ProductData?.map
((option) => ({
options={
!scanner
? ProductData?.map((option) => ({
value: option.ProdId,
label: `${option.ProdName} (${option.Size} ${option.UomName})${option?.BrandName ? ` - ${option?.BrandName}` : ''}`
})) : []}
label: `${option.ProdName} (${option.Size} ${option.UomName})${option?.BrandName ? ` - ${option?.BrandName}` : ''}`,
}))
: []
}
onSelect={ProductDropDownChange}
onChange={handleProductSearch}
onKeyDown={(e) => {
if (scanner && e.key === "Enter") {
if (scanner && e.key === 'Enter') {
e.preventDefault();
}
}}
disabled={ProductData?.length === 0}
>
</AutoComplete>
></AutoComplete>
</FloatLabel>
<Tooltip title={"BarCode/QrCode"} placement={"top"}>
<BsUpcScan strokeWidth={0.5} color="#000" style={{ fontSize: "16px", color: scanner ? "#52c41a" : "#888", fontWeight: "600" }} className="product-scan-Icon" onClick={handleScanSearch} />
<Tooltip title={'BarCode/QrCode'} placement={'top'}>
<div className="BsUpcScanSQ">
<BsUpcScan
strokeWidth={0.5}
color="#000"
style={{
fontSize: '16px',
color: scanner ? '#52c41a' : '#888',
fontWeight: '600',
}}
className="product-scan-Icon"
onClick={handleScanSearch}
/>
</div>
</Tooltip>
{ProductData?.length === 0 && <p style={{ color: "red" }}><ImWarning /> All Products have no Stock</p>}
{ProductData?.length === 0 && (
<p style={{ color: 'red' }}>
<ImWarning /> All Products have no Stock
</p>
)}
</div>
</Form.Item>
{/* <Form.Item name="ProdId">
<AutoComplete
options={ProductData?.map((option) => ({
value:
option.ProdName +
' ' +
'(' +
option.Size +
option.UomName +
')',
label:
option.ProdName +
' ' +
'(' +
option.Size +
option.UomName +
')',
qrCode: option.QRCode,
}))}
style={{ width: '250px', height: '48px' }}
onSelect={(value, option) => {
if (isbarcode && option.qrCode) {
const productByQR = ProductData.find(
(p) => p.QRCode === option.qrCode
);
if (productByQR) {
ProductDropDownChange({
value:
productByQR.ProdName +
' ' +
'(' +
productByQR.Size +
productByQR.UomName +
')',
});
}
} else {
ProductDropDownChange(option);
}
}}
filterOption={(input, option) => {
if (isbarcode) {
return (
option.qrCode &&
option.qrCode
.toLowerCase()
.includes(input.toLowerCase())
);
} else {
return option.label
.toLowerCase()
.includes(input.toLowerCase());
}
}}
value={SelProduct}
>
<InputField
label="Product Name"
style={{}}
onChange={(e) =>
onChangeprodFunction(e?.target?.value)
}
onPressEnter={(e) =>
onChangeprodFunction(e?.target?.value)
}
isOnChange={SelProduct ? true : false}
suffix={
<TooltipWrapper
title="Search Product Name"
// isMobile={isMobile}
>
<CiBarcode
style={{
fontSize: '17px',
paddingRight: '1px',
}}
color={isbarcode ? 'green' : ' '}
onClick={changebarcode}
/>
<SearchOutlined
style={{ color: 'rgba(0,0,0,.45)' }}
/>
</TooltipWrapper>
}
/>
</AutoComplete>
</Form.Item> */}
</div>
</div>
@ -2025,7 +1930,10 @@ const SalesQuotationForm = () => {
</div>
</div>
</div>
<div className="QuosubmitButton" style={{ display: 'flex', gap: '1rem' }}>
<div
className="QuosubmitButton"
style={{ display: 'flex', gap: '1rem' }}
>
<Buttons
buttonText="SUBMIT"
color="901D77"
@ -2055,50 +1963,31 @@ const SalesQuotationForm = () => {
</div>
</>
)}
</div>
</Form>
{TableData?.length > 0 && (
<div className="Quo-Summary-Quotation">
<div className='Quotation-summary'> Gross Total: {allowDecimal ? TotalBillAmount?.toFixed(2) : TotalBillAmount}</div>
<div className='Quotation-summary' > Total GST: {allowDecimal ? (TotalCgst + TotalSgst + TotalIgst)?.toFixed(2) : (TotalCgst + TotalSgst + TotalIgst)}</div>
<div className="Quotation-summary">
{' '}
Gross Total:{' '}
{allowDecimal ? TotalBillAmount?.toFixed(2) : TotalBillAmount}
</div>
<div className="Quotation-summary">
{' '}
Total GST:{' '}
{allowDecimal
? (TotalCgst + TotalSgst + TotalIgst)?.toFixed(2)
: TotalCgst + TotalSgst + TotalIgst}
</div>
{/* <div> Total SGST: {TotalSgst?.toFixed(2)}</div>
<div> Total IGST: {TotalIgst?.toFixed(2)}</div> */}
<div className='Quotation-summary'> Total Amount: {allowDecimal ? Math.round(TotalAmount)?.toFixed(2) : Math.round(TotalAmount)}</div>
{/* <table style={{ width: '300px', border: '1px solid black' }}>
<tr>
<td style={{ textAlign: 'right' }}>Gross Total:</td>
<td style={{ textAlign: 'right' }}>
</td>
</tr>
<tr>
<td style={{ textAlign: 'right' }}>Total CGST:</td>
<td style={{ textAlign: 'right' }}>
{TotalCgst?.toFixed(2)}
</td>
</tr>
<tr>
<td style={{ textAlign: 'right' }}>Total SGST:</td>
<td style={{ textAlign: 'right' }}>
{TotalSgst?.toFixed(2)}
</td>
</tr>
<tr>
<td style={{ textAlign: 'right' }}>Total IGST:</td>
<td style={{ textAlign: 'right' }}>
{TotalIgst?.toFixed(2)}
</td>
</tr>
<tr>
<td style={{ textAlign: 'right' }}>
Total Amount(Round Off):
</td>
<td style={{ textAlign: 'right' }}>
{Math.round(TotalAmount)?.toFixed(2)}
</td>
</tr>
</table> */}
<div className="Quotation-summary">
{' '}
Total Amount:{' '}
{allowDecimal
? Math.round(TotalAmount)?.toFixed(2)
: Math.round(TotalAmount)}
</div>
</div>
)}
</div>
@ -2109,20 +1998,17 @@ const SalesQuotationForm = () => {
handleCancel={handleUserMailmodalCancel}
footer={false}
children={
<div>
<Form form={emailform} layout="vertical" onFinish={emailSubmit}>
<Form.Item
label="Mail ID"
name="email"
rules={[
{ required: true, message: "Email is required" },
{ type: "email", message: "Enter a valid email address" },
{ required: true, message: 'Email is required' },
{ type: 'email', message: 'Enter a valid email address' },
]}
>
<Input
autoComplete="off"
placeholder="Enter your email" />
<Input autoComplete="off" placeholder="Enter your email" />
</Form.Item>
<Button type="primary" htmlType="submit">
@ -2134,7 +2020,10 @@ const SalesQuotationForm = () => {
/>
<div style={{ display: 'none' }}>
<PurchaseQuotationPrint PrintingData={PrintData} PrintTempData={PrintTempData} />
<PurchaseQuotationPrint
PrintingData={PrintData}
PrintTempData={PrintTempData}
/>
</div>
</div>
</div>

View File

@ -44,7 +44,7 @@
.BSBilling4-tablediv-mobile {
display: block;
height: 40vh;
overflow-y: scroll;
overflow-y: auto;
}
.BSBilling4-tablediv-mobile::-webkit-scrollbar {
@ -316,6 +316,7 @@
display: flex;
justify-content: space-between;
flex-direction: column;
gap: 4px;
}
@media (min-width: 280px) and (max-width: 499px) {
@ -340,11 +341,6 @@
row-gap: 0rem;
}
.Table4-price-btn-master {
flex-direction: row;
align-items: center;
}
.Table4-cash {
width: 60px !important;
}
@ -726,8 +722,10 @@
.BSBilling4-price-content {
display: flex;
flex-direction: row;
width: 100vw;
@media (max-width: 768px) {
width: 100% !important;
}
}
.Table4-price-icon-container {
@ -789,3 +787,38 @@
font-weight: bold;
padding: 2px;
}
.BS7hold-sum {
display: flex;
justify-content: center;
align-items: center;
flex-direction: row;
column-gap: 1rem;
color: var(--DEFAULT_SELECTED_COLOR);
}
.RowforResposiveBill7 {
display: flex;
flex-direction: column;
width: 100%;
}
.RowResposiveBill7 {
display: flex;
align-items: flex-start;
gap: 4px;
width: 100%;
}
.bsbilltable7 {
padding: 10px;
}
@media (max-width: 768px) {
.BSTable3_payroll {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
}
.bsbilltable7 {
padding: 0;
}
}

View File

@ -109,7 +109,8 @@
.Btn-payment-mode {
background-color: var(--SELECTED_COLOR);
color: #ffffff;
outline: none;border: none;
outline: none;
border: none;
font-size: 12px;
display: flex;
flex-direction: row;
@ -318,9 +319,9 @@
flex-direction: column;
justify-content: space-between;
overflow: auto;
scrollbar-width: none;
width: inherit;
height: 85vh;
scrollbar-width: none;
border-radius: 10px;
@media (max-width: 768px) {
width: 100% !important;
@ -333,9 +334,9 @@
.BSTable3 {
overflow-y: auto;
scrollbar-width: none;
height: 100vh;
background-color: #fff;
scrollbar-width: none;
}
.Cust-tag {

View File

@ -95,9 +95,10 @@
font-size: 12px;
font-weight: 500;
max-width: 130px;
white-space: nowrap;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
}
.BSItemCard-itemPrice {

View File

@ -9,7 +9,7 @@
.receipt-reprint-header {
display: flex;
align-items: center;
// justify-content: space-between;
flex-wrap: wrap;
gap: 10px;
margin-bottom: 16px;
}

View File

@ -113,7 +113,8 @@ body {
@media (max-width: 768px) {
width: 100%;
margin: 0.5rem;
margin: 0;
padding: 0.5rem;
min-height: 200px;
}
@ -195,7 +196,7 @@ body {
}
}
.BSLayout2-Master .BSBTOverall1-Default {
.BSLayout2-Master .BSBTOverall1-Default {
height: 81vh;
}
@ -229,7 +230,6 @@ body {
width: 100%;
}
.NewLayoutBillContainer {
display: flex;
align-items: center;

View File

@ -46,6 +46,12 @@
overflow: auto;
height: 75vh;
padding-bottom: 3rem;
white-space: nowrap;
width: 100%;
.printer-button {
width: 120px !important;
}
.modal-header {
text-align: center;
@ -75,13 +81,15 @@
.setting-card {
width: 30%;
@media (max-width: 768px) {
width: unset;
}
button {
background: #fff;
border-radius: 8px;
display: flex;
align-items: center;
// flex-direction: column;
padding: 10px 20px;
text-align: center;
cursor: pointer;
@ -166,11 +174,10 @@
// Responsive design
@media (max-width: 600px) {
.printer-settings-content {
padding: 20px;
padding: 10px;
.settings-grid {
grid-template-columns: 1fr;
gap: 15px;
gap: 10px;
}
.modal-actions {

View File

@ -68,10 +68,10 @@
column-gap: 3rem;
padding-top: 1rem;
height: 78vh;
overflow: scroll;
overflow: auto;
scrollbar-width: thin;
row-gap: 1.5rem;
padding-bottom: 4rem;
scrollbar-width: thin;
@media (max-width: 768px) {
padding-bottom: 4rem;
@ -131,6 +131,7 @@
}
.sales-quotation {
position: relative;
.ant-select {
width: 250px !important;
height: 48px !important;
@ -139,4 +140,9 @@
input {
padding: 6px 25px 6px 12px !important;
}
.BsUpcScanSQ {
position: absolute;
right: 10px;
top: 15px;
}
}

View File

@ -4,7 +4,6 @@
}
.MasterLedger-Report {
// width: 100vw;
padding: 0rem 0;
overflow: hidden;
background-color: #fff;
@ -16,13 +15,16 @@
width: max-content !important;
}
}
.custom-table th {
white-space: nowrap;
}
}
.LedgerTable {
height: 73vh;
scrollbar-width: thin;
width: 100%;
overflow: auto;
scrollbar-width: thin;
tr:nth-child(even) {
background-color: #e9e8e8 !important;
@ -49,7 +51,6 @@
.Dropdown-DatePicker {
display: flex;
align-items: center;
// padding: 0.2rem 0px;
flex-direction: row;
column-gap: 2rem;
flex-wrap: wrap;
@ -80,12 +81,10 @@
.LedgerDropDate {
display: flex;
// align-items: center;
justify-content: space-between;
width: 100%;
gap: 2rem;
flex-wrap: wrap;
// overflow-x: scroll;
}
.ItemWiseReport-printerIcon-disabled {
@ -118,7 +117,6 @@
display: flex;
padding-left: 10px;
border-style: groove;
// align-items: center;
}
.LR-DatePicker {
@ -142,8 +140,8 @@
width: 72px;
}
.LedgerTable .ant-table-wrapper .ant-table-thead>tr>th,
.ant-table-wrapper .ant-table-thead>tr>td {
.LedgerTable .ant-table-wrapper .ant-table-thead > tr > th,
.ant-table-wrapper .ant-table-thead > tr > td {
color: #000000;
font-size: 12px;
font-weight: 600;
@ -174,7 +172,7 @@
}
.MasterLedger-Report .ant-table-wrapper .ant-table-cell,
.MasterLedger-Report .ant-table-wrapper .ant-table-thead>tr>th {
.MasterLedger-Report .ant-table-wrapper .ant-table-thead > tr > th {
padding: 1px 13px;
width: 100px;
}
@ -207,17 +205,15 @@
width: 200px !important;
}
.LedgerTable {
height: 50vh;
}
.LedgerDropDate {
overflow-y: scroll;
overflow-y: auto;
}
.Ledger-datePicker {
.ant-picker {
width: 100px !important;
height: 50px !important;
@ -239,7 +235,7 @@
.AllRadioButton {
width: 37vh;
overflow-x: scroll;
overflow-x: auto;
}
}
@ -265,7 +261,7 @@
border: 1px solid #909090;
font-family: "Poppins", sans-serif;
>thead {
> thead {
position: sticky;
top: -1px;
}
@ -281,7 +277,6 @@
font-size: 12px;
font-weight: 500;
font-family: VAR(--HEADING_FONT_FAMILY);
// text-transform: uppercase;
text-transform: capitalize;
letter-spacing: 0.2px;
}
@ -290,7 +285,8 @@
display: flex;
flex-direction: column;
gap: 4px;
overflow: scroll;
overflow: auto;
scrollbar-width: thin;
padding-bottom: 2rem;
}
@ -336,7 +332,7 @@
justify-content: flex-end;
gap: 1rem;
>div {
> div {
border-radius: 6px;
padding: 5px 10px;
color: #fff;
@ -344,17 +340,16 @@
cursor: pointer;
}
>div:nth-child(1) {
> div:nth-child(1) {
background-color: #28aa3a;
}
>div:nth-child(2) {
> div:nth-child(2) {
background-color: #ff0000;
}
}
.custom-table {
Button:disabled,
Button[disabled] {
width: unset !important;