diff --git a/src/Pages/StockMaster/StockList.jsx b/src/Pages/StockMaster/StockList.jsx
index e32cc5e..ad84da5 100644
--- a/src/Pages/StockMaster/StockList.jsx
+++ b/src/Pages/StockMaster/StockList.jsx
@@ -1,22 +1,27 @@
-import { useState, useEffect, useCallback } from 'react';
+import { useState, useEffect, useRef, useCallback } from 'react';
import { useNavigate, useLocation } from 'react-router-dom';
import { useDispatch, useSelector } from 'react-redux';
-import { PlusOutlined, EyeOutlined } from '@ant-design/icons';
-import { Image, Table } from 'antd';
+import { PlusOutlined, EyeOutlined, PrinterFilled } from '@ant-design/icons';
+import { Image, Pagination, Space, Table } from 'antd';
import {
changeBreadCrumb,
getEmpAccess,
} from '../../Features/AppPage/CenterPage.js';
+import QRCode from 'qrcode';
import { Tables } from '../../Components/Tables/Table';
import FormHeader from '../PageComponents/FormHeader.jsx';
import Search from '../../Components/Forms/Search.jsx';
+import { style, getPageStyle } from '../Product/Printstyles.js';
import Buttons from '../../Components/Forms/Buttons';
import {
getSession,
dateFormatChange,
ExtractDateFormate,
+ printDiv,
} from '../../Services/Others';
import { Messages } from '../../Components/Notifications/Messages';
+import { useQuery, useQueryClient } from '@tanstack/react-query';
+import dayjs from 'dayjs';
import {
getStockData,
getProductData,
@@ -45,8 +50,27 @@ import '../../Styles/Employee/EmpMaster.scss';
import { IoEye } from 'react-icons/io5';
import { useAuth } from '../../AuthContext.jsx';
import { getPreferenceData } from '../../Features/BookingScreen/BookingData/BookingData.js';
+import {
+ getBarcodeSessionsIDs,
+ getBarcodeTemplate,
+} from '../../Features/Barcode/Barcode.js';
+import StickerPrintModel from '../Product/StickerPrintModal.jsx';
+import StickerPrintTemplates from '../Product/StickerTemplates.jsx';
+import QRCodeCopiesModal from '../Product/QRCodeCopiesModal.jsx';
+import { DatePicker } from 'antd';
+import {
+ generateBarcode,
+ generateCodeImage,
+ generateQRCode,
+ generateQRCodeCopy,
+} from '../../Services/utils.js';
+const { RangePicker } = DatePicker;
+const barCodeImage =
+ 'https://cdn.pixabay.com/photo/2014/04/02/16/19/barcode-306926_1280.png';
+const qrCodeImage =
+ 'https://cdn.pixabay.com/photo/2015/03/21/09/34/qr-683354_640.png';
const subDirectory = import.meta.env.BASE_URL;
-
+const previewText = 'Barcode Preview';
const items = [
{
name: 'Home',
@@ -59,6 +83,7 @@ const items = [
];
const StockList = () => {
+ const formRef = useRef();
const { SadminuserAccess } = useAuth();
let SAAccessCommonMaster = SadminuserAccess?.find(
(e) => e?.MenuName === 'Product Receipt'
@@ -71,15 +96,15 @@ const StockList = () => {
const AppId = getSession('AppId');
const UserId = getSession('UserId');
const UserType = getSession('UserType');
-
+ const [printReady, setPrintReady] = useState(false);
const StockData = useSelector(purchaseDataSelector);
+ console.log(StockData, 'StockData');
const SupplierData = useSelector(supplierSelector);
const excelDataValues = useSelector(excelDataSelector);
const TaxData = useSelector(taxSelector);
const [filteredInfo, setFilteredInfo] = useState({});
const [sortedInfo, setSortedInfo] = useState({});
- const [searchedText, setSearchedText] = useState('');
const [messageType, setMessageType] = useState(null);
const [messageData, setMessageData] = useState(null);
@@ -103,19 +128,58 @@ const StockList = () => {
const [imageModal, setImageModal] = useState(false);
const [currentImageIndex, setCurrentImageIndex] = useState(0);
const [IMEISeriandata, setIMEISeriandata] = useState([]);
+
+ const [base64Image, setBase64Image] = useState(null);
+ const [barcodeBase64Image, setBarcodeBase64Image] = useState(null);
+ const [dropdownValue, setDropdownValue] = useState();
+ const [QrandbarcodeDatas, setQrandbarcodeDatas] = useState([]);
+ const [printProductName, setPrintProductName] = useState(false);
+ const [copies, setCopies] = useState();
+ const [coresdata, setCoresdata] = useState([]);
+ const [barcodeTemplateDetails, setBarcodeTemplateDetails] = useState([]);
+ const [stockWiseQrcode, setstockWiseQrcode] = useState(false);
+ const [productWiseQrcode, setProductWiseQrcode] = useState(false);
+ const [selectedRecords, setSelectedRecords] = useState([]);
+ const [activeTab, setActiveTab] = useState('stock');
+ const [MultiCode, setMultiCode] = useState(true);
+ const [TotalCount, setTotalCount] = useState(null);
+ const [dateStrings, setDateStrings] = useState([
+ dayjs().format('YYYY-MM-DD'),
+ dayjs().format('YYYY-MM-DD'),
+ ]);
+ const [SearchText, setSearchText] = useState(null);
+ const [debouncedSearchText, setDebouncedSearchText] = useState(null);
+
+ useEffect(() => {
+ const timer = setTimeout(() => {
+ setDebouncedSearchText(SearchText);
+ }, 500);
+
+ return () => clearTimeout(timer);
+ }, [SearchText]);
+ console.log(QrandbarcodeDatas, 'QrandbarcodeDatas');
+ const [templateOptions, setTemplateOptions] = useState({
+ mrp: false,
+ barcode: false,
+ color: false,
+ eDate: false,
+ mDate: false,
+ sellingPrice: false,
+ productName: false,
+ value: '',
+ secondValue: '',
+ qrcode: false,
+ codeType: '',
+ });
+
useEffect(() => {
try {
fetchData();
- // dispatch(
- // getStockData({ CompId: CompId, BranchId: BranchId, AppId: AppId })
- // ).unwrap();
} catch (err) {
console.log(err, 'err');
}
getPreference();
- // if (UserType === "Employee") {
- // fetchApi()
- // }
+ getBarcodeSessionData();
}, []);
useEffect(() => {
@@ -154,6 +218,7 @@ const StockList = () => {
useEffect(() => {
dispatch(changeBreadCrumb({ items: items }));
+ barcodeApiData();
}, []);
async function fetchData() {
if (location?.state?.Notiffy) {
@@ -161,7 +226,81 @@ const StockList = () => {
setMessageData(location?.state?.Notiffy.messageData);
}
}
+ const fetchDataget = async ({ queryKey }) => {
+ const [_, dates, page] = queryKey;
+ const Response = await dispatch(
+ getPurchaseData({
+ AppId: AppId,
+ BranchId: BranchId,
+ CompId: CompId,
+ OrderFromDate: dates?.[0] ?? '',
+ OrderToDate: dates?.[1] ?? '',
+ PageNumber: page,
+ })
+ ).unwrap();
+ if (Response?.data?.statusCode === 1) {
+ setTotalCount(Response?.data?.TotalCount);
+ return Response?.data?.data;
+ } else {
+ setTotalCount(0);
+ return [];
+ }
+ };
+ const handleDateChange = (dates, dateStrings) => {
+ // setDateRange(dateStrings);
+ if (dateStrings[0] && dateStrings[1]) {
+ setDateStrings(dateStrings);
+ setpage(1);
+ }
+ };
+ const { data, isLoading, error } = useQuery({
+ queryKey: ['purchaseEntry', dateStrings, page],
+ queryFn: fetchDataget,
+ enabled: true,
+ staleTime: 1000 * 60 * 5,
+ cacheTime: 1000 * 60 * 30,
+ keepPreviousData: true,
+ refetchOnMount: 'always',
+ refetchOnWindowFocus: true,
+ refetchOnReconnect: true,
+ });
+ const { data: countData } = useQuery({
+ queryKey: ['searchPurchaseEntry', debouncedSearchText],
+ queryFn: searchData,
+ enabled: !!debouncedSearchText,
+ staleTime: 1000 * 60 * 5,
+ cacheTime: 1000 * 60 * 30,
+ keepPreviousData: true,
+ refetchOnMount: 'always',
+ refetchOnWindowFocus: true,
+ refetchOnReconnect: true,
+ });
+
+ const filteredData = debouncedSearchText ? countData || [] : data || [];
+ console.log(data, countData, '1111111111111111', filteredData);
+ async function searchData({ queryKey }) {
+ const [_, SearchText] = queryKey;
+
+ const Response = await dispatch(
+ getPurchaseData({
+ AppId: AppId,
+ BranchId: BranchId,
+ CompId: CompId,
+ OrderFromDate: dateStrings?.[0] ?? '',
+ OrderToDate: dateStrings?.[1] ?? '',
+ search: SearchText,
+ })
+ ).unwrap();
+ if (Response?.data?.statusCode === 1) {
+ setTotalCount(Response?.data?.TotalCount);
+ setpage(1);
+ return Response?.data?.data;
+ } else {
+ setTotalCount(0);
+ return [];
+ }
+ }
const handleChange = (pagination, filters, sorter) => {
setFilteredInfo(filters);
setSortedInfo(sorter);
@@ -172,10 +311,10 @@ const StockList = () => {
};
const onSearch = (value) => {
- setSearchedText(value);
+ setSearchText(e?.target?.value);
};
const onSearchChange = (e) => {
- setSearchedText(e?.target?.value);
+ setSearchText(e?.target?.value);
};
const getPreference = async () => {
const data = { AppId: AppId, CompId: CompId, BranchId: BranchId };
@@ -243,6 +382,40 @@ const StockList = () => {
return allowDecimal ? num.toFixed(2) : Math.round(num).toString();
}
+ const QrandBarcodeDats = async (ProdDetails) => {
+ const result = await Promise.all(
+ ProdDetails.map(async (item) => {
+ const data = await QRCode.toDataURL(item.QRCode);
+
+ return {
+ key: item.QRCode,
+ url: data,
+ productName: item.ProdName,
+ copiesCount: item.AcceptedQty,
+ StockAvailable: item.StockAvailable,
+ };
+ })
+ );
+
+ setQrandbarcodeDatas((prev) => [...prev, ...result]);
+ };
+
+ const Qrcode = (record) => {
+ setSelectedRecords(record?.ProdDetails);
+ QrandBarcodeDats(record?.ProdDetails);
+ setOpen(true);
+ };
+ const barcodeApiData = async () => {
+ const getResponse = await dispatch(
+ getBarcodeTemplate({ compId: CompId, appId: AppId, branchId: BranchId })
+ ).unwrap();
+ if (getResponse?.data?.statusCode === 1) {
+ if (getResponse?.data?.data?.length > 0) {
+ const { TemplateDetails } = getResponse?.data?.data?.[0];
+ setBarcodeTemplateDetails(TemplateDetails);
+ }
+ }
+ };
const columns = [
{
title: 'Sl.No',
@@ -264,13 +437,6 @@ const StockList = () => {
{extractLastNumberOrderId(text, row?.FYStatus)}
),
- filteredValue: [searchedText],
- onFilter: (value, record) => {
- return extractLastNumberOrderId(record.InvoiceNo, record?.FYStatus)
- ?.toString()
- .toLowerCase()
- .includes(value.toLowerCase());
- },
},
{
title: 'Invoice Amount',
@@ -341,6 +507,29 @@ const StockList = () => {
}
},
},
+ {
+ title: 'Print',
+ key: 'Print',
+ dataIndex: 'Print',
+ width: '100px',
+ align: 'center',
+ render: (_, record) => (
+ // productData.length >= 1 ? (
+
+ {templateOptions.codeType !== 'B' && (
+
+ {currentCode} +
+ )} + > + ) + ); + }, + [templateOptions, MultiCode, barcodeBase64Image, base64Image] + ); + + const countOfProduct = debouncedSearchText + ? countData?.length + ? countData?.length + : 0 + : TotalCount; return (