Navbar setting icon changes
This commit is contained in:
parent
deec2dbdc1
commit
da28c37e3e
|
|
@ -12,7 +12,6 @@ import { useNavigate } from 'react-router-dom';
|
||||||
const UserRelieveManager = lazy(() => import('../../Template/RealivingUser'));
|
const UserRelieveManager = lazy(() => import('../../Template/RealivingUser'));
|
||||||
// Scss
|
// Scss
|
||||||
import '../../../../Styles/BookingScreen/Components/BSNavbar/BSNavbar1.scss';
|
import '../../../../Styles/BookingScreen/Components/BSNavbar/BSNavbar1.scss';
|
||||||
import NavbarSkeleton from '../../../../Components/Skeleton/NavbarSkeleton';
|
|
||||||
const subDirectory = import.meta.env.ENV_BASE_URL;
|
const subDirectory = import.meta.env.ENV_BASE_URL;
|
||||||
|
|
||||||
const BSNavBarUserInfo = ({
|
const BSNavBarUserInfo = ({
|
||||||
|
|
|
||||||
|
|
@ -151,13 +151,12 @@ import PozoMenuIcon from '../UtillComponents/Pozo retail icons/PozoMenuIcon.jsx'
|
||||||
|
|
||||||
import TooltipWrapper from '../../../../Components/Tooltip/Tooltip';
|
import TooltipWrapper from '../../../../Components/Tooltip/Tooltip';
|
||||||
import { IoMdClose } from 'react-icons/io';
|
import { IoMdClose } from 'react-icons/io';
|
||||||
import { CgSearchLoading } from 'react-icons/cg';
|
import { TbSettingsSearch } from 'react-icons/tb';
|
||||||
import BSNavBarUserInfo from './BSNavBarUserInfo';
|
import BSNavBarUserInfo from './BSNavBarUserInfo';
|
||||||
import { FaParking } from 'react-icons/fa';
|
import { FaParking } from 'react-icons/fa';
|
||||||
import { isMobile } from 'react-device-detect';
|
import { isMobile } from 'react-device-detect';
|
||||||
import { DefaultModal } from '../../../../Components/Modal/DefaultModal.jsx';
|
import { DefaultModal } from '../../../../Components/Modal/DefaultModal.jsx';
|
||||||
import '../../../../Styles/BookingScreen/Components/BSNavbar/BSNavbar1.scss';
|
import '../../../../Styles/BookingScreen/Components/BSNavbar/BSNavbar1.scss';
|
||||||
import NavbarSkeleton from '../../../../Components/Skeleton/NavbarSkeleton.jsx';
|
|
||||||
|
|
||||||
const subDirectory = import.meta.env.ENV_BASE_URL;
|
const subDirectory = import.meta.env.ENV_BASE_URL;
|
||||||
const commonUrl = import.meta.env.ENV_COMMON_BASE_URL;
|
const commonUrl = import.meta.env.ENV_COMMON_BASE_URL;
|
||||||
|
|
@ -678,7 +677,7 @@ const BSNavbar1 = (props) => {
|
||||||
{/* Multiple search */}
|
{/* Multiple search */}
|
||||||
<Tooltip title={'Multiple Search'}>
|
<Tooltip title={'Multiple Search'}>
|
||||||
<div className="MultiSearchIconDiv">
|
<div className="MultiSearchIconDiv">
|
||||||
<CgSearchLoading onClick={() => setMultiple(true)} />
|
<TbSettingsSearch onClick={() => setMultiple(true)} />
|
||||||
</div>
|
</div>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ import {
|
||||||
getUserProfile,
|
getUserProfile,
|
||||||
userDataByUserId,
|
userDataByUserId,
|
||||||
} from '../../../../Features/UserAccount/userData.js';
|
} from '../../../../Features/UserAccount/userData.js';
|
||||||
import { CgSearchLoading } from 'react-icons/cg';
|
import { TbSettingsSearch } from 'react-icons/tb';
|
||||||
import { FaParking } from 'react-icons/fa';
|
import { FaParking } from 'react-icons/fa';
|
||||||
import BSNavBarUserInfo from './BSNavBarUserInfo';
|
import BSNavBarUserInfo from './BSNavBarUserInfo';
|
||||||
import { OtherServicesCardlistdata } from '../../../../Features/OtherServices/OtherServices.js';
|
import { OtherServicesCardlistdata } from '../../../../Features/OtherServices/OtherServices.js';
|
||||||
|
|
@ -130,7 +130,6 @@ const BSCustomerSelect = lazy(
|
||||||
);
|
);
|
||||||
// Scss
|
// Scss
|
||||||
import '../../../../Styles/BookingScreen/Components/BSNavbar/BSNavbar2.scss';
|
import '../../../../Styles/BookingScreen/Components/BSNavbar/BSNavbar2.scss';
|
||||||
import NavbarSkeleton from '../../../../Components/Skeleton/NavbarSkeleton.jsx';
|
|
||||||
|
|
||||||
const subDirectory = import.meta.env.ENV_BASE_URL;
|
const subDirectory = import.meta.env.ENV_BASE_URL;
|
||||||
const commonUrl = import.meta.env.ENV_COMMON_BASE_URL;
|
const commonUrl = import.meta.env.ENV_COMMON_BASE_URL;
|
||||||
|
|
@ -625,12 +624,7 @@ const BSNavbar2 = () => {
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
{/* Multiple search */}
|
|
||||||
<Tooltip title={'Multiple Search'}>
|
|
||||||
<div className="MultiSearchIconDiv2" style={{ margin: '0 6px' }}>
|
|
||||||
<CgSearchLoading onClick={() => setMultiple(true)} />
|
|
||||||
</div>
|
|
||||||
</Tooltip>
|
|
||||||
<div className="BSBillingNav2div2">
|
<div className="BSBillingNav2div2">
|
||||||
{searchOption &&
|
{searchOption &&
|
||||||
!Comboglobal &&
|
!Comboglobal &&
|
||||||
|
|
@ -643,6 +637,15 @@ const BSNavbar2 = () => {
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<BSNavBarSearch nosearch={true} OrderType={OrderType} />
|
<BSNavBarSearch nosearch={true} OrderType={OrderType} />
|
||||||
|
{/* Multiple search */}
|
||||||
|
<Tooltip title={'Multiple Search'}>
|
||||||
|
<div
|
||||||
|
className="MultiSearchIconDiv2"
|
||||||
|
style={{ margin: '0 6px' }}
|
||||||
|
>
|
||||||
|
<TbSettingsSearch onClick={() => setMultiple(true)} />
|
||||||
|
</div>
|
||||||
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,10 +102,9 @@ import BSNavBarWholeSale from '../UtillComponents/BSNavBarWholeSale.jsx';
|
||||||
import { Global_OfferStatus } from '../../../../Features/Offer/Offer.js';
|
import { Global_OfferStatus } from '../../../../Features/Offer/Offer.js';
|
||||||
import { globalholddata } from '../../../../Features/BookingScreen/HoldOption/HoldOption.js';
|
import { globalholddata } from '../../../../Features/BookingScreen/HoldOption/HoldOption.js';
|
||||||
import BSNavBarWeightScale from '../UtillComponents/BSNavBarWeightScale.jsx';
|
import BSNavBarWeightScale from '../UtillComponents/BSNavBarWeightScale.jsx';
|
||||||
import { CgSearchLoading } from 'react-icons/cg';
|
import { TbSettingsSearch } from 'react-icons/tb';
|
||||||
import { DefaultModal } from '../../../../Components/Modal/DefaultModal.jsx';
|
import { DefaultModal } from '../../../../Components/Modal/DefaultModal.jsx';
|
||||||
import MultipleSearch from '../UtillComponents/MultipleSearch.jsx';
|
import MultipleSearch from '../UtillComponents/MultipleSearch.jsx';
|
||||||
import NavbarSkeleton from '../../../../Components/Skeleton/NavbarSkeleton.jsx';
|
|
||||||
|
|
||||||
// Jsx Files
|
// Jsx Files
|
||||||
const BSNavBarFavItems = lazy(
|
const BSNavBarFavItems = lazy(
|
||||||
|
|
@ -630,18 +629,18 @@ const BSNavbar3 = ({ optionNames }) => {
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Multiple search */}
|
|
||||||
<Tooltip title={'Multiple Search'}>
|
|
||||||
<div className="MultiSearchIconDiv3">
|
|
||||||
<CgSearchLoading onClick={() => setMultiple(true)} />
|
|
||||||
</div>
|
|
||||||
</Tooltip>
|
|
||||||
{!sportsAppPreference && searchOption && (
|
{!sportsAppPreference && searchOption && (
|
||||||
<div
|
<div
|
||||||
className="BsnavbarSearchMain"
|
className="BsnavbarSearchMain"
|
||||||
onClick={() => searchInputRef.current?.focus()}
|
onClick={() => searchInputRef.current?.focus()}
|
||||||
>
|
>
|
||||||
<BSNavbarSearchStandard inputRef={searchInputRef} />
|
<BSNavbarSearchStandard inputRef={searchInputRef} />
|
||||||
|
{/* Multiple search */}
|
||||||
|
<Tooltip title={'Multiple Search'}>
|
||||||
|
<div className="MultiSearchIconDiv3">
|
||||||
|
<TbSettingsSearch onClick={() => setMultiple(true)} />
|
||||||
|
</div>
|
||||||
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,9 @@ import React, { useState } from 'react';
|
||||||
import { List, Typography, Tooltip } from 'antd';
|
import { List, Typography, Tooltip } from 'antd';
|
||||||
import { FaKeyboard } from 'react-icons/fa';
|
import { FaKeyboard } from 'react-icons/fa';
|
||||||
import { DefaultModal } from '../../../../Components/Modal/DefaultModal';
|
import { DefaultModal } from '../../../../Components/Modal/DefaultModal';
|
||||||
|
import '../../../../Styles/OverAllStyle/OverAllStyle.scss';
|
||||||
const { Title, Text } = Typography;
|
const { Title, Text } = Typography;
|
||||||
const ShortcutKeyHelper = ({ }) => {
|
const ShortcutKeyHelper = ({}) => {
|
||||||
const [isModalOpen, setIsModalOpen] = useState(false);
|
const [isModalOpen, setIsModalOpen] = useState(false);
|
||||||
|
|
||||||
const shortcuts = [
|
const shortcuts = [
|
||||||
|
|
@ -55,11 +56,28 @@ const ShortcutKeyHelper = ({ }) => {
|
||||||
width={500}
|
width={500}
|
||||||
>
|
>
|
||||||
<List
|
<List
|
||||||
|
className="Shot-KeyBoard"
|
||||||
dataSource={shortcuts}
|
dataSource={shortcuts}
|
||||||
renderItem={(item) => (
|
renderItem={(item) => (
|
||||||
<List.Item>
|
<List.Item>
|
||||||
<div style={{ display: 'flex', justifyContent: 'space-between', width: '100%' }}>
|
<div
|
||||||
<Text strong style={{ fontFamily: 'monospace', backgroundColor: '#f5f5f5', padding: '2px 6px', borderRadius: '3px' }}>
|
className="KBwithKey"
|
||||||
|
style={{
|
||||||
|
display: 'flex',
|
||||||
|
justifyContent: 'space-between',
|
||||||
|
width: '100%',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
className="KBwithKey"
|
||||||
|
strong
|
||||||
|
style={{
|
||||||
|
fontFamily: 'monospace',
|
||||||
|
backgroundColor: '#f5f5f5',
|
||||||
|
padding: '2px 6px',
|
||||||
|
borderRadius: '3px',
|
||||||
|
}}
|
||||||
|
>
|
||||||
{item.key}
|
{item.key}
|
||||||
</Text>
|
</Text>
|
||||||
<Text>{item.description}</Text>
|
<Text>{item.description}</Text>
|
||||||
|
|
@ -72,4 +90,4 @@ const ShortcutKeyHelper = ({ }) => {
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default ShortcutKeyHelper;
|
export default ShortcutKeyHelper;
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,6 @@ const SalesCountForStandard = lazy(
|
||||||
);
|
);
|
||||||
import BsBookingitemCard from '../../Components/BSItemCards/BsBookingitemCard.jsx';
|
import BsBookingitemCard from '../../Components/BSItemCards/BsBookingitemCard.jsx';
|
||||||
import LayoutSubCategoryFetcher from '../../LayoutSubCategoryFetcher.jsx';
|
import LayoutSubCategoryFetcher from '../../LayoutSubCategoryFetcher.jsx';
|
||||||
import NavbarSkeleton from '../../../../Components/Skeleton/NavbarSkeleton.jsx';
|
|
||||||
import CardSkeleton from '../../../../Components/Skeleton/CardSkeleton.jsx';
|
import CardSkeleton from '../../../../Components/Skeleton/CardSkeleton.jsx';
|
||||||
const ListOfSalesInvoices = lazy(
|
const ListOfSalesInvoices = lazy(
|
||||||
() =>
|
() =>
|
||||||
|
|
|
||||||
|
|
@ -85,9 +85,11 @@ const AllSalesPageSettings = lazy(
|
||||||
|
|
||||||
// Scss
|
// Scss
|
||||||
import '../../../Styles/BookingScreen/Template/BSLayout2/BSLayout2.scss';
|
import '../../../Styles/BookingScreen/Template/BSLayout2/BSLayout2.scss';
|
||||||
import useWhyDidYouUpdate from '../../../Services/findrerender.js';
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { SalesDetailsModal, SalesNetAmountModal } from '../Components/UtillComponents/SalesDetailsNetAmountModal.jsx';
|
import {
|
||||||
|
SalesDetailsModal,
|
||||||
|
SalesNetAmountModal,
|
||||||
|
} from '../Components/UtillComponents/SalesDetailsNetAmountModal.jsx';
|
||||||
|
|
||||||
const SalesCountForStandard = React.memo(() => {
|
const SalesCountForStandard = React.memo(() => {
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
|
|
@ -484,10 +486,10 @@ const SalesCountForStandard = React.memo(() => {
|
||||||
return (
|
return (
|
||||||
DineInAccess?.SettingValue === 'Y' &&
|
DineInAccess?.SettingValue === 'Y' &&
|
||||||
DineInOrderCount +
|
DineInOrderCount +
|
||||||
TakeAwayOrderCount +
|
TakeAwayOrderCount +
|
||||||
SelfTakeAwayOrderCount +
|
SelfTakeAwayOrderCount +
|
||||||
SelfDineInOrderCount >
|
SelfDineInOrderCount >
|
||||||
0 &&
|
0 &&
|
||||||
(takeAwayPreference || dinePreference)
|
(takeAwayPreference || dinePreference)
|
||||||
);
|
);
|
||||||
}, [DineInAccess, sales, dinePreference, takeAwayPreference]);
|
}, [DineInAccess, sales, dinePreference, takeAwayPreference]);
|
||||||
|
|
@ -644,7 +646,7 @@ const SalesCountForStandard = React.memo(() => {
|
||||||
{DineInAccess?.SettingValue === 'Y' &&
|
{DineInAccess?.SettingValue === 'Y' &&
|
||||||
takeAwayPreference &&
|
takeAwayPreference &&
|
||||||
(TakeAwayOrderCount || SelfTakeAwayOrderCount || PreOrderAmount) >
|
(TakeAwayOrderCount || SelfTakeAwayOrderCount || PreOrderAmount) >
|
||||||
0 && (
|
0 && (
|
||||||
<Tooltip
|
<Tooltip
|
||||||
className="standardTooltipDineIN"
|
className="standardTooltipDineIN"
|
||||||
title={renderBreakdown([
|
title={renderBreakdown([
|
||||||
|
|
@ -744,13 +746,15 @@ const SalesCountForStandard = React.memo(() => {
|
||||||
Stock
|
Stock
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
{preferenceshortcutkey && (
|
|
||||||
<div className="KeyshortCutNav3">
|
<div className="navb3SalesCounticons">
|
||||||
<ShortcutKeyHelper />
|
{preferenceshortcutkey && (
|
||||||
</div>
|
<div className="KeyshortCutNav3">
|
||||||
)}
|
<ShortcutKeyHelper />
|
||||||
<AllSalesPageSettings />
|
</div>
|
||||||
<div style={{ display: 'flex', alignItems: 'center' }}>
|
)}
|
||||||
|
|
||||||
|
<AllSalesPageSettings />
|
||||||
{Customisebillno && <CustomisedInvoiceChange />}
|
{Customisebillno && <CustomisedInvoiceChange />}
|
||||||
{SessionData?.FeatureAddonData?.FeatureDtls?.find(
|
{SessionData?.FeatureAddonData?.FeatureDtls?.find(
|
||||||
(item) => item?.FeatureAddonName?.toLowerCase() === 'kiosk sales'
|
(item) => item?.FeatureAddonName?.toLowerCase() === 'kiosk sales'
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -21,8 +21,8 @@ import { getSession, validateSafeInput } from '../../Services/Others';
|
||||||
import { postshift, putshift } from '../../Features/ShiftMaster/ShiftMaster.js';
|
import { postshift, putshift } from '../../Features/ShiftMaster/ShiftMaster.js';
|
||||||
import './ShiftMaster.scss';
|
import './ShiftMaster.scss';
|
||||||
import { FaPlus } from 'react-icons/fa6';
|
import { FaPlus } from 'react-icons/fa6';
|
||||||
import "../../Styles/OverAllStyle/OverAllStyle.scss";
|
import '../../Styles/OverAllStyle/OverAllStyle.scss';
|
||||||
|
|
||||||
const subDirectory = import.meta.env.BASE_URL;
|
const subDirectory = import.meta.env.BASE_URL;
|
||||||
|
|
||||||
const ShiftForm = ({ formType }) => {
|
const ShiftForm = ({ formType }) => {
|
||||||
|
|
@ -103,13 +103,15 @@ const ShiftForm = ({ formType }) => {
|
||||||
|
|
||||||
const isValidBreak = shiftEnd.isBefore(shiftStart)
|
const isValidBreak = shiftEnd.isBefore(shiftStart)
|
||||||
? (breakStart.isAfter(shiftStart) || breakStart.isBefore(shiftEnd)) &&
|
? (breakStart.isAfter(shiftStart) || breakStart.isBefore(shiftEnd)) &&
|
||||||
(breakEnd.isAfter(shiftStart) || breakEnd.isBefore(shiftEnd))
|
(breakEnd.isAfter(shiftStart) || breakEnd.isBefore(shiftEnd))
|
||||||
: breakStart.isBetween(shiftStart, shiftEnd, null, '[]') &&
|
: breakStart.isBetween(shiftStart, shiftEnd, null, '[]') &&
|
||||||
breakEnd.isBetween(shiftStart, shiftEnd, null, '[]');
|
breakEnd.isBetween(shiftStart, shiftEnd, null, '[]');
|
||||||
|
|
||||||
if (!isValidBreak) {
|
if (!isValidBreak) {
|
||||||
setMessageType('error');
|
setMessageType('error');
|
||||||
setMessageData(`Break "${breakItem.BreakName}" is not within shift time range`);
|
setMessageData(
|
||||||
|
`Break "${breakItem.BreakName}" is not within shift time range`
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -167,8 +169,10 @@ const ShiftForm = ({ formType }) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// parse safely (allow formats like "HH:mm" or "HH:mm:ss")
|
// parse safely (allow formats like "HH:mm" or "HH:mm:ss")
|
||||||
const fromParts = (fromTime || '').split(':').map(s => parseInt(s, 10) || 0);
|
const fromParts = (fromTime || '')
|
||||||
const toParts = (toTime || '').split(':').map(s => parseInt(s, 10) || 0);
|
.split(':')
|
||||||
|
.map((s) => parseInt(s, 10) || 0);
|
||||||
|
const toParts = (toTime || '').split(':').map((s) => parseInt(s, 10) || 0);
|
||||||
|
|
||||||
const [fromHour = 0, fromMinute = 0] = fromParts;
|
const [fromHour = 0, fromMinute = 0] = fromParts;
|
||||||
const [toHour = 0, toMinute = 0] = toParts;
|
const [toHour = 0, toMinute = 0] = toParts;
|
||||||
|
|
@ -417,9 +421,9 @@ const ShiftForm = ({ formType }) => {
|
||||||
// Validate break time fields before adding
|
// Validate break time fields before adding
|
||||||
await formRef.current?.validateFields([
|
await formRef.current?.validateFields([
|
||||||
'BreakName',
|
'BreakName',
|
||||||
'BreakStartTime',
|
'BreakStartTime',
|
||||||
'BreakEndTime'
|
'BreakEndTime',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const Formdata = formRef.current?.getFieldsValue();
|
const Formdata = formRef.current?.getFieldsValue();
|
||||||
const alreadyExists = Tabledata.some(
|
const alreadyExists = Tabledata.some(
|
||||||
|
|
@ -753,16 +757,16 @@ const ShiftForm = ({ formType }) => {
|
||||||
|
|
||||||
<div
|
<div
|
||||||
className="Quotation-tables Quotation-tablesShift"
|
className="Quotation-tables Quotation-tablesShift"
|
||||||
style={{ maxwidth: '500px', overflowX: 'scroll' }}
|
style={{
|
||||||
|
maxwidth: '500px',
|
||||||
|
overflowX: 'auto',
|
||||||
|
scrollbarWidth: 'thin',
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<Table
|
<Table
|
||||||
bordered
|
bordered
|
||||||
// components={components}
|
|
||||||
// rowClassName="editable-row"
|
|
||||||
columns={Columns}
|
columns={Columns}
|
||||||
dataSource={Tabledata}
|
dataSource={Tabledata}
|
||||||
// pagination={handlePageChange}
|
|
||||||
// onChange={handleChange}
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import React, { useState } from 'react';
|
||||||
import { Tooltip } from 'antd';
|
import { Tooltip } from 'antd';
|
||||||
import { IoSettingsOutline } from 'react-icons/io5';
|
import { IoSettingsOutline } from 'react-icons/io5';
|
||||||
import { DefaultModal } from '../../Components/Modal/DefaultModal.jsx';
|
import { DefaultModal } from '../../Components/Modal/DefaultModal.jsx';
|
||||||
|
import '../../Styles/OverAllStyle/OverAllStyle.scss';
|
||||||
|
|
||||||
const SettingsIconWithModal = ({
|
const SettingsIconWithModal = ({
|
||||||
tooltipTitle = 'Add Fields',
|
tooltipTitle = 'Add Fields',
|
||||||
|
|
@ -18,8 +18,7 @@ const SettingsIconWithModal = ({
|
||||||
// map labels → values
|
// map labels → values
|
||||||
const mappedFields = selectedAdditionalColumn
|
const mappedFields = selectedAdditionalColumn
|
||||||
.map(
|
.map(
|
||||||
(col) =>
|
(col) => tableFieldPreferences.find((pref) => pref.label === col)?.value
|
||||||
tableFieldPreferences.find((pref) => pref.label === col)?.value
|
|
||||||
)
|
)
|
||||||
.filter(Boolean);
|
.filter(Boolean);
|
||||||
|
|
||||||
|
|
@ -47,7 +46,7 @@ const SettingsIconWithModal = ({
|
||||||
{/* ⚙️ ICON ONLY */}
|
{/* ⚙️ ICON ONLY */}
|
||||||
<Tooltip title={tooltipTitle} placement="top">
|
<Tooltip title={tooltipTitle} placement="top">
|
||||||
<IoSettingsOutline
|
<IoSettingsOutline
|
||||||
style={{ cursor: 'pointer', fontSize: '15px' }}
|
style={{ cursor: 'pointer', fontSize: '20px' }}
|
||||||
onClick={handleIconClick}
|
onClick={handleIconClick}
|
||||||
/>
|
/>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
|
@ -62,7 +61,7 @@ const SettingsIconWithModal = ({
|
||||||
handleSubmit={handleApply}
|
handleSubmit={handleApply}
|
||||||
handleCancel={handleCancel}
|
handleCancel={handleCancel}
|
||||||
>
|
>
|
||||||
<div style={{ padding: '20px' }}>
|
<div className="addFiledInProRec">
|
||||||
{tableFieldPreferences.map((option) => (
|
{tableFieldPreferences.map((option) => (
|
||||||
<div key={option.value} className="Customized_QuickAdd">
|
<div key={option.value} className="Customized_QuickAdd">
|
||||||
<label>
|
<label>
|
||||||
|
|
|
||||||
|
|
@ -229,8 +229,7 @@ const StoreRecipeform = ({ formType }) => {
|
||||||
let RecipeProdName = `${RecipeproductFilter?.ProdName} (${RecipeproductFilter?.Size} ${RecipeproductFilter?.UomName})`;
|
let RecipeProdName = `${RecipeproductFilter?.ProdName} (${RecipeproductFilter?.Size} ${RecipeproductFilter?.UomName})`;
|
||||||
|
|
||||||
let existsData = Tabledata?.filter(
|
let existsData = Tabledata?.filter(
|
||||||
(item) =>
|
(item) => item.ProdId === formData.ProdId
|
||||||
item.ProdId === formData.ProdId
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (existsData?.length == 0) {
|
if (existsData?.length == 0) {
|
||||||
|
|
@ -337,12 +336,12 @@ const StoreRecipeform = ({ formType }) => {
|
||||||
Postdata['RecProdId'] = state.RecProdId;
|
Postdata['RecProdId'] = state.RecProdId;
|
||||||
Postdata['RecipeName'] = ProdName;
|
Postdata['RecipeName'] = ProdName;
|
||||||
// Postdata["RecipeQty"] = 1;
|
// Postdata["RecipeQty"] = 1;
|
||||||
(Postdata['ProductDetails'] = Tabledata.map((item) => ({
|
((Postdata['ProductDetails'] = Tabledata.map((item) => ({
|
||||||
ProdId: item?.ProdId,
|
ProdId: item?.ProdId,
|
||||||
ProdName: item?.ProdName,
|
ProdName: item?.ProdName,
|
||||||
// "ProdQty": item?.ProdQty
|
// "ProdQty": item?.ProdQty
|
||||||
}))),
|
}))),
|
||||||
(Postdata['CreatedBy'] = UserId);
|
(Postdata['CreatedBy'] = UserId));
|
||||||
let response = {};
|
let response = {};
|
||||||
if (formType === 'add') {
|
if (formType === 'add') {
|
||||||
response = await dispatch(StoreProductCreationpost(Postdata)).unwrap();
|
response = await dispatch(StoreProductCreationpost(Postdata)).unwrap();
|
||||||
|
|
@ -475,34 +474,6 @@ const StoreRecipeform = ({ formType }) => {
|
||||||
/>
|
/>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
{/* <Form.Item
|
|
||||||
name="ProdQty"
|
|
||||||
rules={[
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: "Please Enter Quantity"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
validator: async (_, value) => {
|
|
||||||
await validateSafeInput(value);
|
|
||||||
if (parseInt(value) === 0 && value.length <= 10) {
|
|
||||||
return Promise.reject("Please enter valid Qty");
|
|
||||||
}
|
|
||||||
// if (value.length > 10) {
|
|
||||||
// return Promise.reject("Quantity cannot exceed 10 characters.");
|
|
||||||
// }
|
|
||||||
// return Promise.resolve();
|
|
||||||
},
|
|
||||||
},
|
|
||||||
]}
|
|
||||||
>
|
|
||||||
<InputField
|
|
||||||
label={<label class="required">Prod Qty</label>}
|
|
||||||
autocomplete="off"
|
|
||||||
isOnChange={!editDataval ? true : false}
|
|
||||||
/>
|
|
||||||
</Form.Item> */}
|
|
||||||
|
|
||||||
<div style={{ fontSize: '25px' }}>
|
<div style={{ fontSize: '25px' }}>
|
||||||
<Tooltip title="Add Products" placement="top">
|
<Tooltip title="Add Products" placement="top">
|
||||||
<PlusCircleOutlined
|
<PlusCircleOutlined
|
||||||
|
|
@ -517,7 +488,11 @@ const StoreRecipeform = ({ formType }) => {
|
||||||
|
|
||||||
<div
|
<div
|
||||||
className="Quotation-tables"
|
className="Quotation-tables"
|
||||||
style={{ maxwidth: '500px', overflowX: 'scroll' }}
|
style={{
|
||||||
|
maxwidth: '500px',
|
||||||
|
overflowX: 'auto',
|
||||||
|
scrollbarWidth: 'thin',
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<Table
|
<Table
|
||||||
bordered
|
bordered
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
const [index, setindex] = useState();
|
const [index, setindex] = useState();
|
||||||
const tableRef = useRef(null);
|
const tableRef = useRef(null);
|
||||||
const formData = formRef?.current?.getFieldsValue();
|
const formData = formRef?.current?.getFieldsValue();
|
||||||
console.log(editingKey, "editingKey")
|
console.log(editingKey, 'editingKey');
|
||||||
const remainingQty = ReqQty - totalEnteredQty;
|
const remainingQty = ReqQty - totalEnteredQty;
|
||||||
const isQtyMatched = totalEnteredQty === ReqQty;
|
const isQtyMatched = totalEnteredQty === ReqQty;
|
||||||
|
|
||||||
|
|
@ -105,9 +105,9 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let totalqty = getTotalEnteredQty()
|
let totalqty = getTotalEnteredQty();
|
||||||
setTotalEnteredQty(totalqty)
|
setTotalEnteredQty(totalqty);
|
||||||
}, [ProductVarientdata])
|
}, [ProductVarientdata]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const handleClickOutside = (event) => {
|
const handleClickOutside = (event) => {
|
||||||
|
|
@ -264,7 +264,7 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
onChange={(e) => handleMrpchange(e, record, index)}
|
onChange={(e) => handleMrpchange(e, record, index)}
|
||||||
onBlur={(e) => handleMrpchange(e, record, index)}
|
onBlur={(e) => handleMrpchange(e, record, index)}
|
||||||
inputMode="decimal"
|
inputMode="decimal"
|
||||||
placeholder='Enter Qty'
|
placeholder="Enter Qty"
|
||||||
onInput={(e) => {
|
onInput={(e) => {
|
||||||
let cleanedValue = e.target.value.replace(/[^0-9.]/g, ''); // Remove invalid characters
|
let cleanedValue = e.target.value.replace(/[^0-9.]/g, ''); // Remove invalid characters
|
||||||
const parts = cleanedValue.split('.');
|
const parts = cleanedValue.split('.');
|
||||||
|
|
@ -411,7 +411,7 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
if (Reqqty < 1) {
|
if (Reqqty < 1) {
|
||||||
setMessageType('error');
|
setMessageType('error');
|
||||||
setMessageData('Please Enter Qty');
|
setMessageData('Please Enter Qty');
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
setReqQty(Reqqty);
|
setReqQty(Reqqty);
|
||||||
|
|
@ -442,7 +442,7 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
return {
|
return {
|
||||||
...variant,
|
...variant,
|
||||||
StockDetails: updatedStockDetails,
|
StockDetails: updatedStockDetails,
|
||||||
StockAvailable: record?.StockAvailable
|
StockAvailable: record?.StockAvailable,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -463,7 +463,7 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
}, [ProductVarientdata]);
|
}, [ProductVarientdata]);
|
||||||
|
|
||||||
const validateConsumption = (data, consumedStock) => {
|
const validateConsumption = (data, consumedStock) => {
|
||||||
console.log(data, "datadata", consumedStock);
|
console.log(data, 'datadata', consumedStock);
|
||||||
|
|
||||||
const errors = [];
|
const errors = [];
|
||||||
|
|
||||||
|
|
@ -478,7 +478,7 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
prodName: product.ProdName || 'Unknown Product',
|
prodName: product.ProdName || 'Unknown Product',
|
||||||
message: 'No stock consumption recorded for this product',
|
message: 'No stock consumption recorded for this product',
|
||||||
expected: product.ProdQty,
|
expected: product.ProdQty,
|
||||||
actual: 0
|
actual: 0,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -491,39 +491,42 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
if (totalConsumedQty !== product?.ProdQty) {
|
if (totalConsumedQty !== product?.ProdQty) {
|
||||||
errors.push({
|
errors.push({
|
||||||
prodId: product.ProdId,
|
prodId: product.ProdId,
|
||||||
prodName: product.ProdName || consumedProduct.ProdName || 'Unknown Product',
|
prodName:
|
||||||
message: totalConsumedQty < product.ProdQty
|
product.ProdName || consumedProduct.ProdName || 'Unknown Product',
|
||||||
? 'Insufficient stock consumed'
|
message:
|
||||||
: 'Excess stock consumed',
|
totalConsumedQty < product.ProdQty
|
||||||
|
? 'Insufficient stock consumed'
|
||||||
|
: 'Excess stock consumed',
|
||||||
expected: product.ProdQty,
|
expected: product.ProdQty,
|
||||||
actual: totalConsumedQty,
|
actual: totalConsumedQty,
|
||||||
difference: Math.abs(totalConsumedQty - product.ProdQty)
|
difference: Math.abs(totalConsumedQty - product.ProdQty),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
isValid: errors.length === 0,
|
isValid: errors.length === 0,
|
||||||
errors
|
errors,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
const onFinish = async () => {
|
const onFinish = async () => {
|
||||||
|
|
||||||
if (Tabledata?.length === 0) {
|
if (Tabledata?.length === 0) {
|
||||||
setMessageType('error');
|
setMessageType('error');
|
||||||
setMessageData('No products found');
|
setMessageData('No products found');
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const validation = validateConsumption(Tabledata, UpdatedStockData);
|
const validation = validateConsumption(Tabledata, UpdatedStockData);
|
||||||
console.log(validation, "validation")
|
console.log(validation, 'validation');
|
||||||
if (!validation.isValid) {
|
if (!validation.isValid) {
|
||||||
const error = validation.errors?.[0];
|
const error = validation.errors?.[0];
|
||||||
console.error('Validation failed:');
|
console.error('Validation failed:');
|
||||||
setMessageType('error');
|
setMessageType('error');
|
||||||
setMessageData(`${error?.prodName}: ${error?.message}. Expected: ${error?.expected}, Actual: ${error?.actual}`);
|
setMessageData(
|
||||||
return
|
`${error?.prodName}: ${error?.message}. Expected: ${error?.expected}, Actual: ${error?.actual}`
|
||||||
|
);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const formData = formRef?.current?.getFieldsValue();
|
const formData = formRef?.current?.getFieldsValue();
|
||||||
|
|
@ -583,12 +586,17 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
key: String(variantIndex),
|
key: String(variantIndex),
|
||||||
// label: `${variant?.ProdVariantName} - <span> Total Available Qty </span>: ${variant?.OverAllQty ?? 0} `,
|
// label: `${variant?.ProdVariantName} - <span> Total Available Qty </span>: ${variant?.OverAllQty ?? 0} `,
|
||||||
label: (
|
label: (
|
||||||
<span style={{ display: 'flex', gap: '10px', alignItems: 'center', justifyContent: 'space-between' }}>
|
<span
|
||||||
|
style={{
|
||||||
|
display: 'flex',
|
||||||
|
gap: '10px',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'space-between',
|
||||||
|
}}
|
||||||
|
>
|
||||||
<span>{variant?.ProdVariantName}</span>
|
<span>{variant?.ProdVariantName}</span>
|
||||||
<span style={{ fontWeight: 500, color: "#d46b08" }}>
|
<span style={{ fontWeight: 500, color: '#d46b08' }}>
|
||||||
Total Available Qty :
|
Total Available Qty : {variant?.OverAllQty ?? 0}
|
||||||
{" "}
|
|
||||||
{variant?.OverAllQty ?? 0}
|
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
),
|
),
|
||||||
|
|
@ -614,7 +622,10 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
<p>
|
<p>
|
||||||
<strong>Balance Qty : </strong> {stock?.BalanceQty}
|
<strong>Balance Qty : </strong> {stock?.BalanceQty}
|
||||||
</p>
|
</p>
|
||||||
<div style={{ display: 'flex', alignItems: 'center', gap: '10px' }} className='stockqtyDiv'>
|
<div
|
||||||
|
style={{ display: 'flex', alignItems: 'center', gap: '10px' }}
|
||||||
|
className="stockqtyDiv"
|
||||||
|
>
|
||||||
<strong>Stock Qty : </strong>{' '}
|
<strong>Stock Qty : </strong>{' '}
|
||||||
<Input
|
<Input
|
||||||
type="number"
|
type="number"
|
||||||
|
|
@ -645,7 +656,7 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
value,
|
value,
|
||||||
balanceQty
|
balanceQty
|
||||||
) => {
|
) => {
|
||||||
const numericValue = parseInt((value || 0), 10);
|
const numericValue = parseInt(value || 0, 10);
|
||||||
|
|
||||||
if (isNaN(numericValue) || numericValue < 0) return;
|
if (isNaN(numericValue) || numericValue < 0) return;
|
||||||
|
|
||||||
|
|
@ -661,9 +672,7 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newTotal > ReqQty) {
|
if (newTotal > ReqQty) {
|
||||||
message.error(
|
message.error(`Total quantity cannot exceed required qty (${ReqQty}).`);
|
||||||
`Total quantity cannot exceed required qty (${ReqQty}).`
|
|
||||||
);
|
|
||||||
|
|
||||||
// Reset all TakenQty to 0
|
// Reset all TakenQty to 0
|
||||||
const resetData = ProductVarientdata.map((variant) => ({
|
const resetData = ProductVarientdata.map((variant) => ({
|
||||||
|
|
@ -673,11 +682,11 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
return {
|
return {
|
||||||
...stock,
|
...stock,
|
||||||
TakenQty: 0,
|
TakenQty: 0,
|
||||||
}
|
};
|
||||||
} else {
|
} else {
|
||||||
return {
|
return {
|
||||||
...stock
|
...stock,
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
}));
|
}));
|
||||||
|
|
@ -844,7 +853,7 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
const handleMrpchange = (e, record, index) => {
|
const handleMrpchange = (e, record, index) => {
|
||||||
const value = e?.target?.value;
|
const value = e?.target?.value;
|
||||||
|
|
||||||
if (value === "") {
|
if (value === '') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -856,7 +865,7 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
const ProdQty = parseFloat(value);
|
const ProdQty = parseFloat(value);
|
||||||
const totalAvailableQty = record?.ProdVariantDetails?.[0]?.OverAllQty || 0;
|
const totalAvailableQty = record?.ProdVariantDetails?.[0]?.OverAllQty || 0;
|
||||||
|
|
||||||
const valid = ((ProdQty > totalAvailableQty) && record?.StockAvailable === 'Y')
|
const valid = ProdQty > totalAvailableQty && record?.StockAvailable === 'Y';
|
||||||
const newData = Tabledata?.map((item, index1) => {
|
const newData = Tabledata?.map((item, index1) => {
|
||||||
if (index1 === index) {
|
if (index1 === index) {
|
||||||
return {
|
return {
|
||||||
|
|
@ -875,7 +884,7 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
|
|
||||||
formRef.current?.setFieldsValue({
|
formRef.current?.setFieldsValue({
|
||||||
[`ProdQty${index}`]: valid ? 0 : ProdQty,
|
[`ProdQty${index}`]: valid ? 0 : ProdQty,
|
||||||
})
|
});
|
||||||
|
|
||||||
if (valid) {
|
if (valid) {
|
||||||
setMessageType('error');
|
setMessageType('error');
|
||||||
|
|
@ -887,7 +896,7 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
|
|
||||||
// Build updatedStockItems array
|
// Build updatedStockItems array
|
||||||
const updatedStockItems = newData
|
const updatedStockItems = newData
|
||||||
.map(item => {
|
.map((item) => {
|
||||||
if (item?.StockAvailable !== 'N') return null;
|
if (item?.StockAvailable !== 'N') return null;
|
||||||
if (item?.ProdQty === 0 || item?.ProdQty === '') return null;
|
if (item?.ProdQty === 0 || item?.ProdQty === '') return null;
|
||||||
|
|
||||||
|
|
@ -912,14 +921,12 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
})
|
})
|
||||||
.filter(Boolean);
|
.filter(Boolean);
|
||||||
|
|
||||||
|
|
||||||
setUpdatedStockData((prev) => {
|
setUpdatedStockData((prev) => {
|
||||||
const prevData = Array.isArray(prev) ? prev : [];
|
const prevData = Array.isArray(prev) ? prev : [];
|
||||||
|
|
||||||
const filteredData = prevData.filter(
|
const filteredData = prevData.filter(
|
||||||
item =>
|
(item) =>
|
||||||
item?.StockAvailable !== 'N' &&
|
item?.StockAvailable !== 'N' && item?.ProdId !== record?.ProdId
|
||||||
item?.ProdId !== record?.ProdId
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return [...filteredData, ...updatedStockItems];
|
return [...filteredData, ...updatedStockItems];
|
||||||
|
|
@ -994,24 +1001,6 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
/>
|
/>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
{/* <Form.Item
|
|
||||||
name="SellingPrice"
|
|
||||||
rules={[
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
pattern: /^(?!\s*$).+/,
|
|
||||||
message: `Please Enter SellingPrice`,
|
|
||||||
},
|
|
||||||
]}
|
|
||||||
>
|
|
||||||
<InputField
|
|
||||||
label={<label className="required">Selling Price</label>}
|
|
||||||
autoComplete="off"
|
|
||||||
disabled={editstate ? true : false}
|
|
||||||
isOnChange={editstate ? true : false}
|
|
||||||
/>
|
|
||||||
</Form.Item> */}
|
|
||||||
|
|
||||||
<Form.Item
|
<Form.Item
|
||||||
name="EmpID"
|
name="EmpID"
|
||||||
rules={[
|
rules={[
|
||||||
|
|
@ -1036,11 +1025,17 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
/>
|
/>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</div>
|
</div>
|
||||||
<div style={{ fontFamily: 'Poppins', fontStyle: 'italic' }}>Note : Click on the quantity to edit.</div>
|
<div style={{ fontFamily: 'Poppins', fontStyle: 'italic' }}>
|
||||||
|
Note : Click on the quantity to edit.
|
||||||
|
</div>
|
||||||
<div
|
<div
|
||||||
ref={tableRef}
|
ref={tableRef}
|
||||||
className="Quotation-tables StoreKitchen-tables"
|
className="Quotation-tables StoreKitchen-tables"
|
||||||
style={{ maxwidth: '500px', overflowX: 'scroll' }}
|
style={{
|
||||||
|
maxwidth: '500px',
|
||||||
|
overflowX: 'auto',
|
||||||
|
scrollbarWidth: 'thin',
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<Table
|
<Table
|
||||||
bordered
|
bordered
|
||||||
|
|
@ -1078,7 +1073,7 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
width={1000}
|
width={1000}
|
||||||
handleSubmit={() => StockSelected()}
|
handleSubmit={() => StockSelected()}
|
||||||
footer={false}
|
footer={false}
|
||||||
className='combo-variant-modal'
|
className="combo-variant-modal"
|
||||||
children={
|
children={
|
||||||
<>
|
<>
|
||||||
<div className="product-variants-container">
|
<div className="product-variants-container">
|
||||||
|
|
@ -1116,8 +1111,9 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
<span>
|
<span>
|
||||||
<Buttons
|
<Buttons
|
||||||
buttonText={
|
buttonText={
|
||||||
isQtyMatched || ProductVarientdata?.[0]?.StockDetails?.[0]?.StockAvailable ===
|
isQtyMatched ||
|
||||||
'N'
|
ProductVarientdata?.[0]?.StockDetails?.[0]
|
||||||
|
?.StockAvailable === 'N'
|
||||||
? 'SUBMIT'
|
? 'SUBMIT'
|
||||||
: `ALLOCATE ${remainingQty} MORE`
|
: `ALLOCATE ${remainingQty} MORE`
|
||||||
}
|
}
|
||||||
|
|
@ -1125,8 +1121,8 @@ const StoreKitchenform = ({ formType }) => {
|
||||||
icon={<ArrowRightOutlined />}
|
icon={<ArrowRightOutlined />}
|
||||||
handleSubmit={StockSelected}
|
handleSubmit={StockSelected}
|
||||||
disabled={
|
disabled={
|
||||||
ProductVarientdata?.[0]?.StockAvailable ===
|
ProductVarientdata?.[0]?.StockAvailable === 'Y' &&
|
||||||
'Y' && !isQtyMatched
|
!isQtyMatched
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
|
|
|
||||||
|
|
@ -444,27 +444,6 @@
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.MultiSearchIconDiv {
|
|
||||||
background-color: #1292ee;
|
|
||||||
color: #fff !important;
|
|
||||||
border-radius: 4px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
cursor: pointer;
|
|
||||||
width: 35px !important;
|
|
||||||
height: 33px;
|
|
||||||
padding: 6px;
|
|
||||||
|
|
||||||
svg {
|
|
||||||
font-size: 22px;
|
|
||||||
width: 35px !important;
|
|
||||||
height: 35px;
|
|
||||||
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.salesUserProfile {
|
.salesUserProfile {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
@ -523,4 +502,23 @@
|
||||||
width: 20px;
|
width: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.MultiSearchIconDiv {
|
||||||
|
color: #1292ee !important;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
width: 27px !important;
|
||||||
|
height: 27px;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 10;
|
||||||
|
left: 6px;
|
||||||
|
}
|
||||||
|
.custom-input {
|
||||||
|
padding: 10px 30px 10px 30px;
|
||||||
|
}
|
||||||
|
.search-icon {
|
||||||
|
top: 53%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,36 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
border-radius: 50px;
|
border-radius: 50px;
|
||||||
|
position: relative;
|
||||||
|
.custom-input {
|
||||||
|
padding: 10px 35px 10px 40px;
|
||||||
|
}
|
||||||
|
.search-icon {
|
||||||
|
top: 50%;
|
||||||
|
}
|
||||||
|
.search-input {
|
||||||
|
bottom: 3px;
|
||||||
|
}
|
||||||
|
.MultiSearchIconDiv2 {
|
||||||
|
color: #1292ee !important;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
width: 20px !important;
|
||||||
|
height: 20px;
|
||||||
|
position: absolute;
|
||||||
|
left: 5px;
|
||||||
|
top: 5px;
|
||||||
|
|
||||||
|
svg {
|
||||||
|
font-size: 22px;
|
||||||
|
width: 32px !important;
|
||||||
|
height: 32px;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.favItem-SearchBar {
|
.favItem-SearchBar {
|
||||||
|
|
@ -374,24 +404,3 @@
|
||||||
left: 11px;
|
left: 11px;
|
||||||
top: 10px;
|
top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.MultiSearchIconDiv2 {
|
|
||||||
background-color: #1292ee;
|
|
||||||
color: #ffffff !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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,12 @@
|
||||||
.BsnavbarSearchMain {
|
.BsnavbarSearchMain {
|
||||||
width: 25vw;
|
width: 25vw;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
.MultiSearchIconDiv3 {
|
||||||
|
position: absolute;
|
||||||
|
right: 10px;
|
||||||
|
top: 5px;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
.BarCodeScanMaster {
|
.BarCodeScanMaster {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: 0;
|
||||||
|
|
@ -117,7 +123,7 @@
|
||||||
|
|
||||||
.ant-input {
|
.ant-input {
|
||||||
margin-top: 0 !important;
|
margin-top: 0 !important;
|
||||||
padding-top: 4px !important;
|
padding-top: 3px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -663,12 +669,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// .BSCategory2New {
|
|
||||||
// // position: absolute;
|
|
||||||
// // bottom: -50%;
|
|
||||||
// // height: 0 !important;
|
|
||||||
// }
|
|
||||||
|
|
||||||
.ant-tooltip {
|
.ant-tooltip {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
@ -720,15 +720,14 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.MultiSearchIconDiv3 {
|
.MultiSearchIconDiv3 {
|
||||||
background-color: #ffffff;
|
// background-color: #ffffff;
|
||||||
color: #1292ee !important;
|
color: #aaaaaa !important;
|
||||||
border-radius: 4px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: 32px !important;
|
width: 30px !important;
|
||||||
height: 32px;
|
height: 30px;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
|
|
||||||
svg {
|
svg {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,8 @@
|
||||||
|
|
||||||
.Re-Print-table {
|
.Re-Print-table {
|
||||||
height: 300px;
|
height: 300px;
|
||||||
overflow: scroll;
|
overflow: auto;
|
||||||
|
scrollbar-width: thin;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Re-Print-table .ant-pagination {
|
.Re-Print-table .ant-pagination {
|
||||||
|
|
@ -66,9 +67,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.Re-Print-table .ant-table-wrapper .ant-table-thead > tr > th {
|
.Re-Print-table .ant-table-wrapper .ant-table-thead > tr > th {
|
||||||
// color: black !important;
|
|
||||||
font-weight: 600 !important;
|
font-weight: 600 !important;
|
||||||
// font-size: 14px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.Re-Print-table .ant-table-row > td {
|
.Re-Print-table .ant-table-row > td {
|
||||||
|
|
@ -77,102 +76,6 @@
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
// .BSReprint tbody td {
|
|
||||||
// color: black;
|
|
||||||
// font-weight: 600;
|
|
||||||
// font-size: 16px;
|
|
||||||
// }
|
|
||||||
// .BSReprint thead {
|
|
||||||
// // position: -webkit-sticky;
|
|
||||||
// position: sticky;
|
|
||||||
// top: 0;
|
|
||||||
// background-color: rgb(234, 249, 255); /* Set a background color if needed */
|
|
||||||
// z-index: 1;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .BSReprint{
|
|
||||||
// width: 100vw;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .Re-print-bold{
|
|
||||||
// font-weight: 600;
|
|
||||||
// font-family: initial;
|
|
||||||
// letter-spacing: 1px;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .Re-print-bold{
|
|
||||||
// font-weight: 600;
|
|
||||||
// font-family: initial;
|
|
||||||
// letter-spacing: 1px;
|
|
||||||
// color: #000;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .Re-print-top {
|
|
||||||
// display: flex;
|
|
||||||
// flex-direction: column;
|
|
||||||
// align-items: center;
|
|
||||||
// width: 100%;
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .Re-print-Table {
|
|
||||||
// width: 100%;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .Re-print-Table ,.Re-print-th ,.Re-print-td {
|
|
||||||
// border: 1px solid black;
|
|
||||||
// border-collapse: collapse;
|
|
||||||
// font-family: initial;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .Re-print-Table1
|
|
||||||
// {
|
|
||||||
// border-collapse: collapse;
|
|
||||||
// border-top: 1px solid #BAD4F9;
|
|
||||||
// border-left:1px solid #BAD4F9;
|
|
||||||
// border-right:1px solid #BAD4F9;
|
|
||||||
//}
|
|
||||||
// .Re-print-td1{
|
|
||||||
// border: 1px solid black;
|
|
||||||
// border-collapse: collapse;
|
|
||||||
// font-family: initial;
|
|
||||||
// }
|
|
||||||
// .Re-print-thtd1
|
|
||||||
// {
|
|
||||||
// padding: 10px 0px;
|
|
||||||
// }
|
|
||||||
// .Re-print-th1
|
|
||||||
// {
|
|
||||||
// background-color: #BAD4F9;
|
|
||||||
// z-index: 1;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .Re-print-body-Tr {
|
|
||||||
// text-align: center;
|
|
||||||
// font-family: initial;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .Re-print-title {
|
|
||||||
// font-size: 20px;
|
|
||||||
// font-weight: 600;
|
|
||||||
// font-family: initial;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .Re-print-Add {
|
|
||||||
// width: 100px;
|
|
||||||
// font-family: initial;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .Re-print-GST {
|
|
||||||
// font-family: initial;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .Re-print-top2 {
|
|
||||||
// display: flex;
|
|
||||||
// width: 100%;
|
|
||||||
// font-family: initial;
|
|
||||||
// justify-content: space-between;
|
|
||||||
// }
|
|
||||||
.bsreprintmodaltable {
|
.bsreprintmodaltable {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 70vh;
|
height: 70vh;
|
||||||
|
|
@ -269,15 +172,12 @@
|
||||||
|
|
||||||
.loader {
|
.loader {
|
||||||
border: 4px solid #f3f3f3;
|
border: 4px solid #f3f3f3;
|
||||||
/* Light grey */
|
|
||||||
border-top: 4px solid #3498db;
|
border-top: 4px solid #3498db;
|
||||||
/* Blue */
|
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
width: 32px;
|
width: 32px;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
animation: spin 1s linear infinite;
|
animation: spin 1s linear infinite;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
/* center if inside flex/centered container */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes spin {
|
@keyframes spin {
|
||||||
|
|
|
||||||
|
|
@ -246,6 +246,9 @@ body {
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
filter: invert(2);
|
filter: invert(2);
|
||||||
}
|
}
|
||||||
|
.KeyshortCutNav3 > div:nth-child(1) {
|
||||||
|
padding: 3.5px 10px !important;
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 500px) {
|
@media (max-width: 500px) {
|
||||||
padding: 0.55rem 0.5rem !important;
|
padding: 0.55rem 0.5rem !important;
|
||||||
|
|
@ -481,3 +484,9 @@ body {
|
||||||
font-family: "Poppins" !important;
|
font-family: "Poppins" !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.navb3SalesCounticons {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1575,7 +1575,7 @@
|
||||||
position: relative;
|
position: relative;
|
||||||
height: max-content;
|
height: max-content;
|
||||||
max-height: 14vh;
|
max-height: 14vh;
|
||||||
overflow: scroll;
|
overflow: auto;
|
||||||
border: 1px solid #eeeeee;
|
border: 1px solid #eeeeee;
|
||||||
scrollbar-width: thin;
|
scrollbar-width: thin;
|
||||||
}
|
}
|
||||||
|
|
@ -1772,7 +1772,7 @@
|
||||||
|
|
||||||
.creditListCardMain {
|
.creditListCardMain {
|
||||||
min-width: 220px;
|
min-width: 220px;
|
||||||
height: 25.5vh;
|
height: 27.5vh;
|
||||||
flex: 0.7;
|
flex: 0.7;
|
||||||
overflow: scroll;
|
overflow: scroll;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
|
|
|
||||||
|
|
@ -1651,3 +1651,40 @@ table {
|
||||||
background-color: #2c88ee !important;
|
background-color: #2c88ee !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.addFiledInProRec {
|
||||||
|
padding: 12px;
|
||||||
|
height: max-content;
|
||||||
|
max-height: 70vh;
|
||||||
|
overflow: auto;
|
||||||
|
scrollbar-width: thin;
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
border-radius: 8px;
|
||||||
|
.Customized_QuickAdd {
|
||||||
|
margin-bottom: 6px;
|
||||||
|
font-family: "Poppins";
|
||||||
|
font-weight: 400;
|
||||||
|
label {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
width: 18px !important;
|
||||||
|
height: 20px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.Shot-KeyBoard {
|
||||||
|
.KBwithKey,
|
||||||
|
.ant-typography {
|
||||||
|
font-family: "Poppins" !important ;
|
||||||
|
font-weight: 400 !important;
|
||||||
|
strong {
|
||||||
|
font-weight: 500 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.ant-list-item {
|
||||||
|
padding: 10px 0 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,3 +31,40 @@
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
column-gap: 0.5rem;
|
column-gap: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.defaultandCustomisedTheme {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
font-family: "Poppins";
|
||||||
|
margin: 0 0 10px 0;
|
||||||
|
background-color: #e1e1e1;
|
||||||
|
padding: 4px 4px;
|
||||||
|
width: max-content;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.defaultandCustomisedTheme > div {
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 20px;
|
||||||
|
padding: 2px 8px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background-color 0.3s ease;
|
||||||
|
border: none;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.defaultandCustomisedTheme > div:hover {
|
||||||
|
background-color: #f2f2f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.defaultandCustomisedTheme > div.selected {
|
||||||
|
background-color: #ffffff;
|
||||||
|
font-weight: 500;
|
||||||
|
border-radius: 4px;
|
||||||
|
svg {
|
||||||
|
color: #008b00 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@
|
||||||
|
|
||||||
.OBamountOwner {
|
.OBamountOwner {
|
||||||
display: flex;
|
display: flex;
|
||||||
// align-items: center;
|
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
height: max-content;
|
height: max-content;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
|
|
@ -22,9 +21,6 @@
|
||||||
.amountreceivedDate {
|
.amountreceivedDate {
|
||||||
height: 50px !important;
|
height: 50px !important;
|
||||||
}
|
}
|
||||||
// .openingbalanceInput2 {
|
|
||||||
// height: 70px !important;
|
|
||||||
// }
|
|
||||||
|
|
||||||
.openingbalanceInput {
|
.openingbalanceInput {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue