Merge pull request 'Combo ShortCut add' (#152) from ComboShortcut into main

Reviewed-on: Pozomind/pozo-retail-app#152
This commit is contained in:
karthikalakshmi 2026-02-17 12:30:01 +05:30
commit cec89bc2e5
17 changed files with 683 additions and 392 deletions

View File

@ -3209,6 +3209,7 @@ const ComboEditQtyAndRate = (props) => {
AddProductQuantity(); AddProductQuantity();
} }
}} }}
min={0}
className="EditQTYcomboInput" className="EditQTYcomboInput"
placeholder="Enter Qty" placeholder="Enter Qty"
/> />

View File

@ -188,6 +188,26 @@ const ComboSalesBillTable = () => {
} }
}; };
const [isAltPressed, setIsAltPressed] = useState(false);
useEffect(() => {
const handleKeyDown = (e) => {
if (e.key === 'F2') setIsAltPressed(true);
};
const handleKeyUp = (e) => {
if (e.key === 'F2') setIsAltPressed(false);
};
window.addEventListener('keydown', handleKeyDown);
window.addEventListener('keyup', handleKeyUp);
return () => {
window.removeEventListener('keydown', handleKeyDown);
window.removeEventListener('keyup', handleKeyUp);
};
}, []);
// Outside click handler for quantity edit // Outside click handler for quantity edit
useEffect(() => { useEffect(() => {
@ -302,7 +322,6 @@ const ComboSalesBillTable = () => {
event.preventDefault(); event.preventDefault();
handleShortcut('weightAmount'); handleShortcut('weightAmount');
} }
}; };
window.addEventListener('keydown', handleKeyDown); window.addEventListener('keydown', handleKeyDown);
@ -2098,7 +2117,9 @@ const ComboSalesBillTable = () => {
const visibleCols = const visibleCols =
tableOptions?.filter((opt) => tableOptions?.filter((opt) =>
['Item', 'Quantity', 'Rate', 'Total'].includes(opt.OptionName) ['Item', 'Quantity', 'Rate', 'Total', 'Delete'].includes(
opt.OptionName
)
) || []; ) || [];
// Arrow Up/Down - Row navigation // Arrow Up/Down - Row navigation
@ -2153,9 +2174,12 @@ const ComboSalesBillTable = () => {
e.preventDefault(); e.preventDefault();
const row = combinedTableData[activeRowIndex]; const row = combinedTableData[activeRowIndex];
const col = visibleCols[activeColIndex]; const col = visibleCols[activeColIndex];
if (row && col && editField) { if (row && col) {
if (col.OptionName === 'Quantity') handleEditQuantityCombo(row); if (col.OptionName === 'Quantity' && editField)
else if (col.OptionName === 'Rate') handleEditRateCombo(row); handleEditQuantityCombo(row);
else if (col.OptionName === 'Rate' && editField)
handleEditRateCombo(row);
else if (col.OptionName === 'Delete') removeFromCart(row);
} }
} }
}; };
@ -2216,6 +2240,12 @@ const ComboSalesBillTable = () => {
{/* Quantity */} {/* Quantity */}
{item.OptionName === 'Quantity' && ( {item.OptionName === 'Quantity' && (
<Tooltip
placement="top"
trigger={[]}
title="AlT + P"
open={isAltPressed}
>
<th <th
className="qtyTh" className="qtyTh"
key={item.OptionId} key={item.OptionId}
@ -2229,6 +2259,7 @@ const ComboSalesBillTable = () => {
<div>Qty</div> <div>Qty</div>
)} )}
</th> </th>
</Tooltip>
)} )}
{/* Rate */} {/* Rate */}
@ -2407,7 +2438,7 @@ const ComboSalesBillTable = () => {
const isActiveCell = const isActiveCell =
activeRowIndex === index && activeRowIndex === index &&
activeColIndex !== null && activeColIndex !== null &&
['Item', 'Quantity', 'Rate', 'Total'].indexOf( ['Item', 'Quantity', 'Rate', 'Total', 'Delete'].indexOf(
item.OptionName item.OptionName
) === activeColIndex; ) === activeColIndex;
@ -2440,7 +2471,14 @@ const ComboSalesBillTable = () => {
{row?.Type !== 'OS' ? row.ProdName : row.ServiceName} {row?.Type !== 'OS' ? row.ProdName : row.ServiceName}
{row?.BrandName ? ` ${row.BrandName}` : ''} {row?.BrandName ? ` ${row.BrandName}` : ''}
{row?.Type !== 'C' && ( {row?.Type !== 'C' && (
<p className="Tbl3-Variant"> <p
// className="Tbl3-Variant"
className={
isActiveCell
? 'Tbl3VariantActve'
: 'Tbl3-Variant'
}
>
{/* {row?.ProdVariantName} {row?.Size} {row?.UomName} */} {/* {row?.ProdVariantName} {row?.Size} {row?.UomName} */}
( (
{!row?.ProdVariantName?.toLowerCase()?.includes( {!row?.ProdVariantName?.toLowerCase()?.includes(
@ -2484,7 +2522,8 @@ const ComboSalesBillTable = () => {
}} }}
key={`qty-${index}`} key={`qty-${index}`}
tabIndex={0} tabIndex={0}
className={`${EditQtyCombo && row?.localId === Index className={`${
EditQtyCombo && row?.localId === Index
? 'EditQTYcomboTD' ? 'EditQTYcomboTD'
: 'qtyTd' : 'qtyTd'
} ${isActiveCell ? 'active-cell' : ''}`} } ${isActiveCell ? 'active-cell' : ''}`}
@ -2625,11 +2664,15 @@ const ComboSalesBillTable = () => {
{/* Delete */} {/* Delete */}
{item.OptionName === 'Delete' && ( {item.OptionName === 'Delete' && (
<td key={`delete-${index}`} className="deleteTd"> <td
key={`delete-${index}`}
className={`deleteTd ${isActiveCell ? 'active-cell' : ''}`}
// className=""
>
<AiOutlineClose <AiOutlineClose
onClick={() => removeFromCart(row)} onClick={() => removeFromCart(row)}
style={{ style={{
color: '#FF4D4F', color: isActiveCell ? '#fff' : '#FF4D4F',
cursor: 'pointer', cursor: 'pointer',
textAlign: 'center', textAlign: 'center',
width: '100%', width: '100%',

View File

@ -28,9 +28,9 @@
} }
tbody { tbody {
>tr:last-child { > tr:last-child {
// background-color: #e5d434 !important; // background-color: #e5d434 !important;
background-color: #ffffff !important; background-color: #dde9ff !important;
position: sticky; position: sticky;
bottom: 0; bottom: 0;
} }
@ -207,7 +207,7 @@
box-shadow: 0 0 5px rgba(255, 193, 7, 0.5); box-shadow: 0 0 5px rgba(255, 193, 7, 0.5);
} }
:where(.css-dev-only-do-not-override-mncuj7).ant-select-dropdown
:where(.css-dev-only-do-not-override-mncuj7).ant-select-dropdown .ant-select-item-option-active:not(.ant-select-item-option-disabled) { .ant-select-item-option-active:not(.ant-select-item-option-disabled) {
background-color: rgba(116, 107, 107, 0.356); background-color: rgba(116, 107, 107, 0.356);
} }

View File

@ -41,7 +41,7 @@ import UserRelieveManager from '../../Template/RealivingUser.jsx';
import BSNavBarUserInfo from '../BSNavbar/BSNavBarUserInfo.jsx'; import BSNavBarUserInfo from '../BSNavbar/BSNavBarUserInfo.jsx';
import BSScanTemplate from '../UtillComponents/BSScanTemplate.jsx'; import BSScanTemplate from '../UtillComponents/BSScanTemplate.jsx';
import { RiFullscreenExitFill, RiFullscreenFill } from 'react-icons/ri'; import { RiFullscreenExitFill, RiFullscreenFill } from 'react-icons/ri';
import { Tooltip } from 'antd'; import { Popconfirm, Tooltip } from 'antd';
import { FaCaretDown } from 'react-icons/fa'; import { FaCaretDown } from 'react-icons/fa';
const subDirectory = import.meta.env.ENV_BASE_URL; const subDirectory = import.meta.env.ENV_BASE_URL;
@ -253,11 +253,17 @@ const BSC1NavBar = (props) => {
> >
<div className="BSC1NavBar-div1"> <div className="BSC1NavBar-div1">
<div className="BSC1NavBar-manu"> <div className="BSC1NavBar-manu">
<Popconfirm
title="Are you sure you want to go to home?"
onConfirm={handleHome}
okText="Yes"
cancelText="No"
>
<PozoHomeIcon <PozoHomeIcon
style={{ color: '#1292EE', fontSize: '30px' }} style={{ color: '#1292EE', fontSize: '30px' }}
className="BSC1NavBar-manu-icon" className="BSC1NavBar-manu-icon"
onClick={handleHome}
/> />
</Popconfirm>{' '}
<div <div
className={`BSC1NavBar-manu-content ${menu ? 'BSC1NavBar-manu-menu' : ''}`} className={`BSC1NavBar-manu-content ${menu ? 'BSC1NavBar-manu-menu' : ''}`}
> >

View File

@ -3,7 +3,7 @@ import { FaWhatsapp, FaPrint, FaParking } from 'react-icons/fa';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import moment from 'moment'; import moment from 'moment';
import { Badge, Popover, Modal } from 'antd'; import { Badge, Popover, Modal, Tooltip } from 'antd';
import { AiOutlineClose, AiOutlineArrowRight } from 'react-icons/ai'; import { AiOutlineClose, AiOutlineArrowRight } from 'react-icons/ai';
import { GiBasket } from 'react-icons/gi'; import { GiBasket } from 'react-icons/gi';
import { import {
@ -573,6 +573,27 @@ const BSC1Payment = (props) => {
), ),
'11111111111111' '11111111111111'
); );
const [isAltPressed, setIsAltPressed] = useState(false);
useEffect(() => {
const handleKeyDown = (e) => {
if (e.key === 'F2') setIsAltPressed(true);
};
const handleKeyUp = (e) => {
if (e.key === 'F2') setIsAltPressed(false);
};
window.addEventListener('keydown', handleKeyDown);
window.addEventListener('keyup', handleKeyUp);
return () => {
window.removeEventListener('keydown', handleKeyDown);
window.removeEventListener('keyup', handleKeyUp);
};
}, []);
// Usage // Usage
useEffect(() => { useEffect(() => {
const setDefaultPaymentOption = async () => { const setDefaultPaymentOption = async () => {
@ -3551,12 +3572,19 @@ const BSC1Payment = (props) => {
{BSComboNavbar?.[1]?.map((item) => ( {BSComboNavbar?.[1]?.map((item) => (
<> <>
{item?.OptionName == 'QuickAdd' && ( {item?.OptionName == 'QuickAdd' && (
<Tooltip
placement="top"
trigger={[]}
title="ALT + N"
open={isAltPressed}
>
<TooltipWrapper title={'QuickAdd'} isMobile={isMobile}> <TooltipWrapper title={'QuickAdd'} isMobile={isMobile}>
<div <div
className="BSC1Payment-div1-btns" className="BSC1Payment-div1-btns"
onClick={setQuickOpen} onClick={setQuickOpen}
style={{ style={{
pointerEvents: OrderType === 'Failed' ? 'none' : 'auto', pointerEvents:
OrderType === 'Failed' ? 'none' : 'auto',
}} }}
> >
<PozoQuickAddIcon className="BSC1Payment-icon " /> <PozoQuickAddIcon className="BSC1Payment-icon " />
@ -3569,14 +3597,20 @@ const BSC1Payment = (props) => {
}} }}
> >
Quick Add Quick Add
{!isAltPressed && (
<span <span
style={{ fontSize: '9px', letterSpacing: '0.5px' }} style={{
fontSize: '9px',
letterSpacing: '0.5px',
}}
> >
(Alt + N) (Alt + N)
</span> </span>
)}
</div> </div>
</div> </div>
</TooltipWrapper> </TooltipWrapper>
</Tooltip>
)} )}
{item?.OptionName == 'DineIn' && {item?.OptionName == 'DineIn' &&
DineInPreference?.SettingValue === 'Y' && DineInPreference?.SettingValue === 'Y' &&
@ -3662,12 +3696,19 @@ const BSC1Payment = (props) => {
</div> </div>
)} )}
{item?.OptionName == 'ExtraCharge' && ( {item?.OptionName == 'ExtraCharge' && (
<Tooltip
placement="top"
trigger={[]}
title="Alt + A"
open={isAltPressed}
>
<TooltipWrapper title={'Extra Charge'} isMobile={isMobile}> <TooltipWrapper title={'Extra Charge'} isMobile={isMobile}>
<div <div
className="BSC1Payment-div1-btns" className="BSC1Payment-div1-btns"
onClick={handleextraCharges} onClick={handleextraCharges}
style={{ style={{
pointerEvents: OrderType === 'Failed' ? 'none' : 'auto', pointerEvents:
OrderType === 'Failed' ? 'none' : 'auto',
display: 'flex', display: 'flex',
flexDirection: 'column', flexDirection: 'column',
alignItems: 'center', alignItems: 'center',
@ -3680,19 +3721,31 @@ const BSC1Payment = (props) => {
Extra Charge Extra Charge
</div> </div>
<div style={{ fontSize: '9px', letterSpacing: '0.5px' }}> {!isAltPressed && (
<div
style={{ fontSize: '9px', letterSpacing: '0.5px' }}
>
(Alt + A) (Alt + A)
</div> </div>
)}
</div> </div>
</TooltipWrapper> </TooltipWrapper>
</Tooltip>
)} )}
{item?.OptionName == 'RePrint' && ( {item?.OptionName == 'RePrint' && (
<Tooltip
placement="top"
trigger={[]}
title="Alt + R"
open={isAltPressed}
>
<TooltipWrapper title={'RePrint'} isMobile={isMobile}> <TooltipWrapper title={'RePrint'} isMobile={isMobile}>
<div <div
className="BSC1Payment-div1-btns" className="BSC1Payment-div1-btns"
onClick={handleReprint} onClick={handleReprint}
style={{ style={{
pointerEvents: OrderType === 'Failed' ? 'none' : 'auto', pointerEvents:
OrderType === 'Failed' ? 'none' : 'auto',
display: 'flex', display: 'flex',
flexDirection: 'column', flexDirection: 'column',
alignItems: 'center', alignItems: 'center',
@ -3709,14 +3762,20 @@ const BSC1Payment = (props) => {
> >
<PozoReprintIcon className="BSC1Payment-icon" /> <PozoReprintIcon className="BSC1Payment-icon" />
Re-Print Re-Print
{!isAltPressed && (
<span <span
style={{ fontSize: '9px', letterSpacing: '0.5px' }} style={{
fontSize: '9px',
letterSpacing: '0.5px',
}}
> >
(Alt + R) (Alt + R)
</span> </span>
)}
</div> </div>
</div> </div>
</TooltipWrapper> </TooltipWrapper>
</Tooltip>
)} )}
</> </>
))} ))}
@ -4209,6 +4268,12 @@ const BSC1Payment = (props) => {
OrderType != 'Failed' && OrderType != 'Failed' &&
CheckBookingStatus != 'Close' && CheckBookingStatus != 'Close' &&
!addnewAccess && ( !addnewAccess && (
<Tooltip
placement="bottom"
trigger={[]}
title="ALT + W"
open={isAltPressed}
>
<TooltipWrapper title={'Hold'} isMobile={isMobile}> <TooltipWrapper title={'Hold'} isMobile={isMobile}>
{' '} {' '}
<div <div
@ -4235,6 +4300,7 @@ const BSC1Payment = (props) => {
{/* <p className="payOptionDecition"> Hold</p> */} {/* <p className="payOptionDecition"> Hold</p> */}
</div> </div>
</TooltipWrapper> </TooltipWrapper>
</Tooltip>
) )
: ''} : ''}
@ -4542,6 +4608,12 @@ const BSC1Payment = (props) => {
{BSComboData?.BookingBilling?.[1]?.map((item) => ( {BSComboData?.BookingBilling?.[1]?.map((item) => (
<> <>
{item?.OptionName == 'AddCustomer' && !preOrderOpen && ( {item?.OptionName == 'AddCustomer' && !preOrderOpen && (
<Tooltip
placement="top"
trigger={[]}
title="ALT + Z"
open={isAltPressed}
>
<div <div
style={{ display: 'flex', gap: '0', alignItems: 'center' }} style={{ display: 'flex', gap: '0', alignItems: 'center' }}
> >
@ -4560,7 +4632,9 @@ const BSC1Payment = (props) => {
borderRadius: '0 6px 6px 0', borderRadius: '0 6px 6px 0',
cursor: Custdisable ? 'not-allowed' : 'pointer', cursor: Custdisable ? 'not-allowed' : 'pointer',
color: color:
selOption || GetCustId ? '#ffffffff' : '#ffffffff', selOption || GetCustId
? '#ffffffff'
: '#ffffffff',
backgroundColor: backgroundColor:
selOption || GetCustId ? '#52c41a' : '#1292EE', selOption || GetCustId ? '#52c41a' : '#1292EE',
}} }}
@ -4568,11 +4642,18 @@ const BSC1Payment = (props) => {
</div> </div>
</TooltipWrapper> </TooltipWrapper>
</div> </div>
</Tooltip>
)} )}
</> </>
))} ))}
<div className="comboTotalBillBTN"> <div className="comboTotalBillBTN">
<Tooltip
placement="left"
trigger={[]}
title="F4"
open={isAltPressed}
>
<TooltipWrapper title="Create Bill (F4)" isMobile={isMobile}> <TooltipWrapper title="Create Bill (F4)" isMobile={isMobile}>
<button <button
className={ className={
@ -4598,10 +4679,12 @@ const BSC1Payment = (props) => {
style={{ borderRadius: '6px 0 0 6px' }} style={{ borderRadius: '6px 0 0 6px' }}
> >
{!OrderStatus ? ( {!OrderStatus ? (
salesBillEdit && currentOrderNetAmount < previousNetAmount ? ( salesBillEdit &&
currentOrderNetAmount < previousNetAmount ? (
<div className="Table4-Order"> <div className="Table4-Order">
Refund: Refund:
{(previousNetAmount || 0) - (currentOrderNetAmount || 0)} {(previousNetAmount || 0) -
(currentOrderNetAmount || 0)}
</div> </div>
) : ( ) : (
<> <>
@ -4637,6 +4720,7 @@ const BSC1Payment = (props) => {
)} )}
</button> </button>
</TooltipWrapper> </TooltipWrapper>
</Tooltip>
<Popover <Popover
content={ content={
<> <>

View File

@ -4761,7 +4761,7 @@ export default function BSC1Search(props) {
</div> </div>
</div> </div>
</div> </div>
<div className="Re-Print-table"> <div className="StockVariantModal">
<Tables columns={stockcolumns} data={stockdataSource} /> <Tables columns={stockcolumns} data={stockdataSource} />
</div> </div>
</div> </div>

View File

@ -10,6 +10,7 @@ import { GlobalCompBranchData } from '../../../../Features/BrachLogin/BranchLogi
import { userDataByUserId } from '../../../../Features/UserAccount/userData'; import { userDataByUserId } from '../../../../Features/UserAccount/userData';
import { useSelector } from 'react-redux'; import { useSelector } from 'react-redux';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import "../../../../Styles/BookingScreen/Components/BSNavbar/BSNavbar1.scss"
const subDirectory = import.meta.env.ENV_BASE_URL; const subDirectory = import.meta.env.ENV_BASE_URL;
const BSNavBarUserInfo = ({ const BSNavBarUserInfo = ({

View File

@ -66,7 +66,7 @@ import BSExpireProductsList from '../../Components/UtillComponents/BSExpireProdu
import ComboSalesBillTable from '../../Components/BSBillingTables/ComboSalesBillTable/ComboSalesBillTable.jsx'; import ComboSalesBillTable from '../../Components/BSBillingTables/ComboSalesBillTable/ComboSalesBillTable.jsx';
import { GiBasket } from 'react-icons/gi'; import { GiBasket } from 'react-icons/gi';
import { FaRegKeyboard } from 'react-icons/fa'; import { FaRegKeyboard } from 'react-icons/fa';
import { CgSearchLoading } from "react-icons/cg"; import { CgSearchLoading } from 'react-icons/cg';
import { DefaultModal } from '../../../../Components/Modal/DefaultModal.jsx'; import { DefaultModal } from '../../../../Components/Modal/DefaultModal.jsx';
import MultipleSearch from '../../Components/UtillComponents/MultipleSearch.jsx'; import MultipleSearch from '../../Components/UtillComponents/MultipleSearch.jsx';
import VerfiedProducts from '../../Components/BSNavbar/verfiedProduct/VerfiedProducts.jsx'; import VerfiedProducts from '../../Components/BSNavbar/verfiedProduct/VerfiedProducts.jsx';
@ -138,6 +138,26 @@ export default function BSCombo1() {
const [ListOfInvoices, setListOfInvoices] = useState(false); const [ListOfInvoices, setListOfInvoices] = useState(false);
const [ComboDropDown, setComboDropDown] = useState(); const [ComboDropDown, setComboDropDown] = useState();
const [isAltPressed, setIsAltPressed] = useState(false);
useEffect(() => {
const handleKeyDown = (e) => {
if (e.key === 'F2') setIsAltPressed(true);
};
const handleKeyUp = (e) => {
if (e.key === 'F2') setIsAltPressed(false);
};
window.addEventListener('keydown', handleKeyDown);
window.addEventListener('keyup', handleKeyUp);
return () => {
window.removeEventListener('keydown', handleKeyDown);
window.removeEventListener('keyup', handleKeyUp);
};
}, []);
useEffect(() => { useEffect(() => {
fetchAmount(); fetchAmount();
if ( if (
@ -149,7 +169,6 @@ export default function BSCombo1() {
} }
}, [SessionData]); }, [SessionData]);
useEffect(() => { useEffect(() => {
Combodata(); Combodata();
if (AppId && CompId && BranchId && UserId) { if (AppId && CompId && BranchId && UserId) {
@ -185,7 +204,6 @@ export default function BSCombo1() {
await dispatch(getSalesDetailData(data)).unwrap(); await dispatch(getSalesDetailData(data)).unwrap();
}; };
const openModalKiosk = () => { const openModalKiosk = () => {
setKioskopen(true); setKioskopen(true);
}; };
@ -284,7 +302,9 @@ export default function BSCombo1() {
/> />
{UserType != 'Super Admin' && {UserType != 'Super Admin' &&
UserType != 'Super Admin User' && UserType != 'Super Admin User' &&
(AppExpDate?.RemainingDays <= 7 || AppExpDate === 'undefined' || AppExpDate?.PlanType?.toLowerCase() === 'extend') && ( (AppExpDate?.RemainingDays <= 7 ||
AppExpDate === 'undefined' ||
AppExpDate?.PlanType?.toLowerCase() === 'extend') && (
<PlanExpireNotification /> <PlanExpireNotification />
)} )}
@ -295,18 +315,30 @@ export default function BSCombo1() {
<div className="comboNavbarSubMain"> <div className="comboNavbarSubMain">
{/* Multiple search */} {/* Multiple search */}
<Tooltip title={'Multiple Search'}> <Tooltip title={'Multiple Search'}>
<div className='MultiSearchIconDiv'> <div className="MultiSearchIconDiv">
<CgSearchLoading onClick={() => setMultiple(true)} /> <CgSearchLoading onClick={() => setMultiple(true)} />
</div> </div>
</Tooltip> </Tooltip>
{Comboglobal === false && ( {Comboglobal === false && (
<Tooltip
placement="bottom"
trigger={[]}
title="SHIFT + S"
open={isAltPressed}
>
<BSC1Search <BSC1Search
data={BSComboData?.BookingLayout[0]} data={BSComboData?.BookingLayout[0]}
OrderType={OrderType} OrderType={OrderType}
/> />
</Tooltip>
)} )}
{Comboglobal === true && ( {Comboglobal === true && (
<Tooltip
placement="bottom"
trigger={[]}
title="SHIFT + S"
open={isAltPressed}
>
<div style={{ padding: '4px' }} className="CombomainSearch"> <div style={{ padding: '4px' }} className="CombomainSearch">
<div className="M"> <div className="M">
<div className="BSC1Search-div1"> <div className="BSC1Search-div1">
@ -314,6 +346,7 @@ export default function BSCombo1() {
</div> </div>
</div> </div>
</div> </div>
</Tooltip>
)} )}
{/* <div className="Layout-bill-container" style={{ margin: '0' }}> */} {/* <div className="Layout-bill-container" style={{ margin: '0' }}> */}
@ -434,7 +467,10 @@ export default function BSCombo1() {
)} )}
{/* Verify Products */} {/* Verify Products */}
{VerifyTheProducts && ( {VerifyTheProducts && (
<TooltipWrapper title={'Verfied Products'} isMobile={isMobile}> <TooltipWrapper
title={'Verfied Products'}
isMobile={isMobile}
>
<div> <div>
<VerfiedProducts /> <VerfiedProducts />
</div> </div>
@ -562,9 +598,7 @@ export default function BSCombo1() {
destroyOnClose={true} destroyOnClose={true}
children={ children={
<> <>
<MultipleSearch <MultipleSearch close={setMultiple} />
close={setMultiple}
/>
</> </>
} }
/> />

View File

@ -11,7 +11,7 @@
border-radius: 6px; border-radius: 6px;
cursor: pointer; cursor: pointer;
font-weight: 700; font-weight: 700;
font-family: 'Poppins' !important; font-family: "Poppins" !important;
align-items: center; align-items: center;
gap: 5px; gap: 5px;
height: 30px; height: 30px;
@ -31,7 +31,7 @@
color: #000000; color: #000000;
font-size: 14px; font-size: 14px;
font-weight: 500; font-weight: 500;
font-family: 'Poppins'; font-family: "Poppins";
} }
.Retail-PaymentCloseButtondiv { .Retail-PaymentCloseButtondiv {
display: flex; display: flex;
@ -40,5 +40,38 @@
.Retail-PaymentClose-Title { .Retail-PaymentClose-Title {
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
font-family: 'Gilroy' !important; font-family: "Gilroy" !important;
}
.PaymentCloseButtondiv {
display: flex;
justify-content: flex-end;
}
.PaymentCloseButton {
font-size: 12px;
border: none;
padding: 2px 5px;
border-radius: 6px;
cursor: pointer;
font-weight: 400;
font-family: "Poppins" !important;
align-items: center;
gap: 5px;
height: 30px;
background-color: #f62121;
color: #fff;
width: 150px;
}
.PaymentClosingOverAll-sub {
color: #000000;
font-size: 14px;
font-weight: 500;
font-family: "Poppins";
width: 250px;
div {
display: flex;
align-items: center;
justify-content: space-between;
}
} }

View File

@ -93,7 +93,6 @@ const SalesCountComponent = React.memo(
item.SettingValue === 'Y' item.SettingValue === 'Y'
); );
const [messageType, setMessageType] = useState(null); const [messageType, setMessageType] = useState(null);
const [messageData, setMessageData] = useState(null); const [messageData, setMessageData] = useState(null);
const [page, setpage] = useState(1); const [page, setpage] = useState(1);
@ -122,6 +121,26 @@ const SalesCountComponent = React.memo(
const startIndex = (currentPage - 1) * rowsPerPage; const startIndex = (currentPage - 1) * rowsPerPage;
const currentData = bookings?.slice(startIndex, startIndex + rowsPerPage); const currentData = bookings?.slice(startIndex, startIndex + rowsPerPage);
const [isAltPressed, setIsAltPressed] = useState(false);
useEffect(() => {
const handleKeyDown = (e) => {
if (e.key === 'F2') setIsAltPressed(true);
};
const handleKeyUp = (e) => {
if (e.key === 'F2') setIsAltPressed(false);
};
window.addEventListener('keydown', handleKeyDown);
window.addEventListener('keyup', handleKeyUp);
return () => {
window.removeEventListener('keydown', handleKeyDown);
window.removeEventListener('keyup', handleKeyUp);
};
}, []);
console.log(dailySalesData, 'dailySalesDatadailySalesData', bookings); console.log(dailySalesData, 'dailySalesDatadailySalesData', bookings);
function safeRound(amountStr) { function safeRound(amountStr) {
@ -270,9 +289,7 @@ const SalesCountComponent = React.memo(
key: 'RequestId', key: 'RequestId',
align: 'center', align: 'center',
width: '70px', width: '70px',
render: (text, record, index) => ( render: (text, record, index) => record?.RequestId?.split('-')?.pop(),
record?.RequestId?.split('-')?.pop()
),
}, },
{ {
title: 'Date & Time', title: 'Date & Time',
@ -362,13 +379,14 @@ const SalesCountComponent = React.memo(
className="sr-stock-recieve-button" className="sr-stock-recieve-button"
title="Receive Stock" title="Receive Stock"
onClick={() => handleModalOpen(index)} onClick={() => handleModalOpen(index)}
> <span>Receive</span> >
{' '}
<span>Receive</span>
<GoPackageDependencies size={18} /> <GoPackageDependencies size={18} />
</div> </div>
</div> </div>
), ),
} },
]; ];
const handlePageChange = (current) => { const handlePageChange = (current) => {
setpage(current); setpage(current);
@ -1096,9 +1114,17 @@ const SalesCountComponent = React.memo(
{preferenceshortcutkey && ( {preferenceshortcutkey && (
<div className="keyboardShortcut"> <div className="keyboardShortcut">
<ShortcutKeyHelper /> <ShortcutKeyHelper />
</div>)} </div>
)}
<AllSalesPageSettings /> <AllSalesPageSettings />
<Tooltip
placement="bottom"
trigger={[]}
title="CTRL + E"
open={isAltPressed}
>
<ProductPriceChange /> <ProductPriceChange />
</Tooltip>
<ReceivedStocksModal <ReceivedStocksModal
open={isReceivedModelOpen} open={isReceivedModelOpen}
onClose={() => { onClose={() => {

View File

@ -42,3 +42,5 @@
font-weight: 600; font-weight: 600;
font-family: 'Gilroy' !important; font-family: 'Gilroy' !important;
} }

View File

@ -1,15 +1,15 @@
.stock-adjustment-container { .stock-adjustment-container {
padding: 20px; // padding: 20px;
// background-color: #fafafa;; // background-color: #fafafa;;
border-radius: 10px; border-radius: 10px;
font-family: 'Poppins', sans-serif; font-family: "Poppins", sans-serif;
color: #1f2d3d; color: #1f2d3d;
width: 100%; width: 100%;
height: 90%; height: 90%;
position: relative; position: relative;
} }
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap'); @import url("https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap");
.stock-adjustment-top-bar { .stock-adjustment-top-bar {
display: flex; display: flex;
@ -216,9 +216,9 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: flex-end; justify-content: flex-end;
position: absolute; position: fixed;
right: 0; right: 1rem;
bottom: 0; bottom: 1rem;
@media (max-width: 720px) { @media (max-width: 720px) {
position: unset; position: unset;
@ -232,7 +232,7 @@
.stock-adjustment-table-row { .stock-adjustment-table-row {
grid-template-columns: 1fr 1fr 1fr 1fr; grid-template-columns: 1fr 1fr 1fr 1fr;
grid-auto-rows: minmax(44px, auto); grid-auto-rows: minmax(44px, auto);
grid-template-areas: 'sno product' 'current actual'; grid-template-areas: "sno product" "current actual";
} }
.stock-adjustment-table-cell.stock-adjustment-sno { .stock-adjustment-table-cell.stock-adjustment-sno {
@ -252,13 +252,11 @@
} }
} }
.custom-table { .custom-table {
width: 100%; width: 100%;
border-collapse: collapse; border-collapse: collapse;
border: 1px solid #909090; border: 1px solid #909090;
font-family: 'Poppins', sans-serif; font-family: "Poppins", sans-serif;
> thead { > thead {
position: sticky; position: sticky;
@ -298,7 +296,6 @@
font-size: 12px !important; font-size: 12px !important;
} }
.custom-table tbody tr td { .custom-table tbody tr td {
text-align: left; text-align: left;
@ -307,7 +304,7 @@
} }
} }
.custom-table tbody tr td[colspan='7'] { .custom-table tbody tr td[colspan="7"] {
padding: 20px; padding: 20px;
} }
@ -351,8 +348,6 @@
} }
} }
.custom-table { .custom-table {
Button:disabled, Button:disabled,
Button[disabled] { Button[disabled] {
@ -362,8 +357,6 @@
} }
} }
.openingStock-ignoreProductBTN { .openingStock-ignoreProductBTN {
width: max-content; width: max-content;
white-space: nowrap; white-space: nowrap;

View File

@ -999,6 +999,10 @@
.Tbl3-Variant { .Tbl3-Variant {
font-size: 10px; font-size: 10px;
} }
.Tbl3VariantActve{
color: #000;
font-size: 11px;
}
.css-w9q2zk-Input2 { .css-w9q2zk-Input2 {
color: black !important; color: black !important;

View File

@ -505,3 +505,39 @@
display: flex; display: flex;
} }
} }
.salesUserProfile {
display: flex;
align-items: center;
gap: 6px;
flex-direction: column;
padding: 10px 1rem;
font-family: "Poppins";
> div {
width: 100%;
font-size: 14px;
display: flex;
align-items: center;
gap: 10px;
}
.BSNavBar1-Acc-menu-list {
padding: 6px 10px;
background-color: #ee0000;
color: #fff;
border-radius: 6px;
cursor: pointer;
display: flex;
align-items: center;
gap: 1rem;
}
img {
width: 70px;
height: 70px;
border-radius: 1000px;
border: 1px solid #a1a1a1;
background-position: center;
}
}

View File

@ -6,9 +6,7 @@
width: 100%; width: 100%;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
/* padding: 0.5rem 22px 0 1.5rem; */
gap: 0.5rem; gap: 0.5rem;
/* padding-bottom: 8px; */
align-items: center; align-items: center;
justify-content: center; justify-content: center;
padding: 4px 8px; padding: 4px 8px;
@ -49,9 +47,7 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.BSC1Search-div1 .BSC1Search-div1 .ant-select:not(.ant-select-customize-input) .ant-select-selector {
.ant-select:not(.ant-select-customize-input)
.ant-select-selector {
border: none; border: none;
height: 35px; height: 35px;
} }
@ -75,17 +71,11 @@
background-color: var(--ERROR_COLOR); background-color: var(--ERROR_COLOR);
border: none; border: none;
font-size: 15px; font-size: 15px;
font-family: 'Poppins', sans-serif; font-family: "Poppins", sans-serif;
font-weight: 600; font-weight: 600;
color: #fff; color: #fff;
cursor: pointer; cursor: pointer;
} }
// .BSC1Search-button1:hover{
// opacity: 0.5;
// }
// .BSC1Search-button1:focus{
// background-color: var(--DEFAULT_SELECTED_COLOR);
// }
.BSC1Search-button2 { .BSC1Search-button2 {
width: 100px; width: 100px;
height: 57px; height: 57px;
@ -93,7 +83,7 @@
background-color: #dddddd; background-color: #dddddd;
border: none; border: none;
font-size: 15px; font-size: 15px;
font-family: 'Poppins', sans-serif; font-family: "Poppins", sans-serif;
font-weight: 600; font-weight: 600;
cursor: pointer; cursor: pointer;
opacity: 1; opacity: 1;
@ -146,3 +136,9 @@
padding: 0.3rem; padding: 0.3rem;
} }
} }
.StockVariantModal {
height: 40vh;
overflow: auto;
scrollbar-width: thin;
}

View File

@ -485,9 +485,15 @@
width: 32px; width: 32px;
height: 32px; height: 32px;
margin-right: unset !important; margin-right: unset !important;
outline: none !important;
border: none;
border-radius: 4px;
padding: 2px;
cursor: pointer;
img { img {
filter: invert(1); filter: invert(1);
width: 25px !important;
height: 25px !important;
} }
} }
@ -638,6 +644,10 @@
svg { svg {
color: #fff !important; color: #fff !important;
} }
img {
width: 20px !important;
height: 20px !important;
}
} }
.RiVerifiedBadgeFill { .RiVerifiedBadgeFill {
@ -690,3 +700,24 @@
font-size: 10px !important; font-size: 10px !important;
} }
} }
.MultiSearchIconDiv3 {
background-color: #ffffff;
color: #1292ee !important;
border-radius: 4px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
width: 32px !important;
height: 32px;
padding: 4px;
svg {
font-size: 22px;
width: 32px !important;
height: 32px;
display: flex;
}
}

View File

@ -105,7 +105,8 @@
width: 100%; width: 100%;
text-align: end; text-align: end;
font-size: 16px; font-size: 16px;
font-weight: 700; font-weight: 500;
font-family: "Poppins";
padding: 0.5rem 0; padding: 0.5rem 0;
} }
.Denomination-ul { .Denomination-ul {