import { useEffect, useState, useMemo, useCallback, lazy, useRef } from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { FaChartLine, FaRupeeSign } from 'react-icons/fa'; import { Badge, Popconfirm, Tooltip } from 'antd'; import { isMobile } from 'react-device-detect'; import { ApplicationPreferences } from '../../../Features/BrachLogin/BranchLogin'; import { getCardDataWithoutSub, getCardDataWithoutSubmodule, getLayoutproductCard, getPreferenceData, getSelectedFavItems, GlobalOrderStatus, GlobalOtherSevices, GlobalProductCategorie, GlobalProductSubCategorie, GlobalSalesDetailData, PreferenceData, } from '../../../Features/BookingScreen/BookingData/BookingData'; import { dateFormatChange1, extractLastNumberOrderId, getSession, } from '../../../Services/Others'; import { useDateStore } from '../../../Features/BookingScreen/BookingData/DateStore'; import dayjs from 'dayjs'; import moment from 'moment'; import PozoKioskIcon from '../Components/UtillComponents/Pozo retail icons/PozoKioskIcon'; import { globalKioskSalesCount } from '../../../Features/Kiosk/kiosk'; import BSKioskCounterPayment from '../Components/UtillComponents/BSKioskCounterPayment'; import TooltipWrapper from '../../../Components/Tooltip/Tooltip'; import { getTemplateData, StoredSessionData, } from '../../../Features/ThemeChange/ThemeChange'; import BookingCloseIcon from '../Components/UtillComponents/BookingCloseIcon'; import RetailBookingClosing from './RetailBookingClose'; import { getBookingStatus, GlobalBookingStatus, } from '../../../Features/Payment/PaymentReceivedRetail/PaymentReceivedRetail'; import { PutBookingClose } from '../../../Features/BookingScreen/RetailBookingClose'; import BSEwayBillicon from '../../BookingScreen/Components/UtillComponents/BSEwayBillicon.jsx'; import { DefaultModal } from '../../../Components/Modal/DefaultModal.jsx'; import { MdOutlineCallReceived } from 'react-icons/md'; import { getReceivedStocks, PostReceiveStocks, } from '../../../Features/stockReceivedGodown/ReceivedStock.js'; import { GoPackageDependencies } from 'react-icons/go'; import { Messages } from '../../../../ownLib/my-ui-lib.js'; // Jsx File const BSExpireProductsList = lazy( () => import('../Components/UtillComponents/BSExpireProductsList') ); const ListOfSalesInvoices = lazy( () => import('../Components/BSBillingTables/ListofInvoices/ListOfSalesInvoices.jsx') ); const CustomisedInvoiceChange = lazy( () => import('../Components/UtillComponents/CustomisedInvoiceChange.jsx') ); const ProductPriceChange = lazy( () => import('../Components/UtillComponents/ProductPriceChange.jsx') ); const ReceivedStocksModal = lazy( () => import('../../../Components/Modal/ReceivedStocksModal.jsx') ); const ProductDetailsModal = lazy( () => import('../../../Components/Modal/ProductDetailsModal.jsx') ); const ShortcutKeyHelper = lazy( () => import('../Components/UtillComponents/ShortcutKeyHelper.jsx') ); const AllSalesPageSettings = lazy( () => import('../Components/UtillComponents/AllSalesPageSettings.jsx') ); // Scss import '../../../Styles/BookingScreen/Template/BSLayout2/BSLayout2.scss'; import useWhyDidYouUpdate from '../../../Services/findrerender.js'; import React from 'react'; import { SalesDetailsModal, SalesNetAmountModal } from '../Components/UtillComponents/SalesDetailsNetAmountModal.jsx'; const SalesCountForStandard = React.memo(() => { const dispatch = useDispatch(); const AppId = getSession('AppId'); const CompId = getSession('CompId'); const BranchId = getSession('BranchId'); const UserId = getSession('UserId'); const ProdSubCat = useSelector(GlobalProductSubCategorie); const prodCat = useSelector(GlobalProductCategorie); const templateData = useSelector(getTemplateData); const [allowDecimal, setAllowDecimal] = useState(false); const [BookingModalOpen, setBookingModalOpen] = useState(false); const [ListOfInvoices, setListOfInvoices] = useState(false); const [Kioskopen, setKioskopen] = useState(false); const badgeCount = useSelector(globalKioskSalesCount); const OtherServicesglobal = useSelector(GlobalOtherSevices); const appPreferences = useSelector(ApplicationPreferences); const SessionData = useSelector(StoredSessionData); const OrderStatus = useSelector(GlobalOrderStatus); const dailySalesData = useSelector(GlobalSalesDetailData); const [page, setpage] = useState(1); const [isModalOpen, setIsModalOpen] = useState(false); const [isNetAmtModalOpen, setIsNetAmtModalOpen] = useState(false); const [isReceivedModelOpen, setIsReceivedModelOpen] = useState(false); const [Customisebillno, setCustomisebillno] = useState(false); const bookings = dailySalesData?.[0]?.BookedDetails; const orderDetails = dailySalesData?.[0]?.OrderDetails; const [currentPage, setCurrentPage] = useState(1); const [TableData, setTableData] = useState([]); const [ProductDetailsModel, setProductDetailsModel] = useState(false); const [modalProductDetails, setModalProductDetails] = useState([]); const [messageType, setMessageType] = useState(null); const [messageData, setMessageData] = useState(null); const [SelectedIndex, setSelectedIndex] = useState(null); const [AutoReceiveStock, setAutoReceiveStock] = useState(false); const rowsPerPage = 10; const totalPages = Math.ceil((bookings?.length || 0) / rowsPerPage); const startIndex = (currentPage - 1) * rowsPerPage; const currentData = bookings?.slice(startIndex, startIndex + rowsPerPage); const preferencedata = useSelector(PreferenceData); const DineInAccess = useMemo(() => { return preferencedata?.[0]?.SettingDtlDetails?.filter( (i) => i.SettingIdName === 'DineIn' )?.[0]; }, [preferencedata]); console.log(dailySalesData, 'dailySalesDatadailySalesData', bookings); const bookingTypePreference = appPreferences?.find((p) => p?.PreferredCatName === 'Booking Type') ?.PreferenceCatDetails || []; const dinePreference = bookingTypePreference.find( (p) => p?.PreferredSubCatName?.toLowerCase() === 'dine in' && p?.PreferredStatus === 'Y' ); const takeAwayPreference = bookingTypePreference.find( (p) => p?.PreferredSubCatName?.toLowerCase() === 'take away' && p?.PreferredStatus === 'Y' ); const commonModulePreference = appPreferences?.find( (preference) => preference?.PreferredCatName === 'Common Module' )?.PreferenceCatDetails; const sportsAppPreference = commonModulePreference?.find( (preference) => preference?.PreferredSubCatName === 'SportsApp' && preference?.PreferredStatus === 'Y' ); const salespagefields = appPreferences?.find( (pref) => pref?.PreferredCatName === 'Sales Page Fields' )?.PreferenceCatDetails; const BookingStatus = useSelector(GlobalBookingStatus); const CheckBookingStatus = BookingStatus?.find((item) => item.ScreenType === 'Booking') ?.ScreenStatus ?? 'Open'; const preferenceshortcutkey = preferencedata?.[0]?.[ 'SettingDtlDetails' ]?.some( (item) => item.SettingIdName.toLowerCase() === 'shortcutkeys' && item.SettingValue === 'Y' ); const sales = dailySalesData?.[0] || {}; const { DineInOrderCount = 0, TakeAwayOrderCount = 0, OverAllOrderCount = 0, SelfDineInOrderCount = 0, SelfTakeAwayOrderCount = 0, DineInAmount = 0, TakeAwayAmount = 0, OverAllTakeAwayOfferAmount = 0, OverAllDineInOfferAmount = 0, SelfTakeAwayAmount = 0, SelfDineInAmount = 0, PreOrderAmount = 0, } = sales; useEffect(() => { if (preferencedata?.length > 0) { const decimalSetting = preferencedata?.[0]?.SettingDtlDetails?.find( (s) => s?.SettingIdName?.toLowerCase() === 'decimal' && s?.SettingValue === 'Y' ); setAllowDecimal(!!decimalSetting); let custombillsetting = preferencedata?.[0]?.SettingDtlDetails?.some( (s) => s?.SettingIdName?.toLowerCase() === 'customisedbillnumber' && s?.SettingValue === 'Y' ); setCustomisebillno(custombillsetting); let AutoReceiveStock = preferencedata?.[0]?.SettingDtlDetails?.some( (s) => s?.SettingIdName?.toLowerCase() === 'autoreceivestock' && s?.SettingValue === 'Y' ); setAutoReceiveStock(!AutoReceiveStock); } }, [preferencedata]); useEffect(() => { if (AppId && CompId && BranchId && UserId) { fetchBookingStatus(); getReceivedStock(); } }, [AppId, CompId, BranchId, UserId]); const getReceivedStock = async () => { try { const response = await dispatch( getReceivedStocks({ CompId, BranchId, AppId }) ).unwrap(); if (response?.data?.statusCode === 1) { setTableData( response.data.data?.map((e) => { return { ...e, DispatchStockDetails: e?.DispatchStockDetails?.map((e) => { return { ...e, AcceptedQty: e?.DispatchedQty, }; }), }; }) ); } else { setTableData([]); console.warn('API returned unsuccessful status', response); } } catch (error) { console.error('Failed to fetch received stock:', error); } }; const columns = [ { title: 'SL.NO', key: 'sno', align: 'center', width: '40px', render: (text, object, index) => ( {(page - 1) * 10 + index + 1} ), }, { title: 'Req Id', key: 'RequestId', align: 'center', width: '80px', render: (text, record, index) => record?.RequestId?.split('-')?.pop(), }, { title: 'Date & Time', dataIndex: 'dateTime', key: 'dateTime', align: 'center', width: '150px', render: (text, record, index) => dateFormatChange1(record.CreatedDate), }, { title: 'Received From', dataIndex: 'FromBranchName', key: 'FromBranchName', align: 'center', width: '120px', }, { title: 'Item', // title: 'Item ', dataIndex: 'FromBranchName', key: 'FromBranchName', align: 'center', width: '50px', render: (text, record, index) => ( {record?.DispatchStockDetails?.length || 0} ), }, { title: 'Qty', // title: 'Qty', dataIndex: 'FromBranchName', key: 'FromBranchName', align: 'center', width: '50px', render: (text, record, index) => (
{item.label}
)}{safeRound(item.value)}
) )}