QR Code Fast Scan with Auto Quantity
This commit is contained in:
commit
88db80edcb
|
|
@ -12,6 +12,7 @@ import {
|
||||||
Radio,
|
Radio,
|
||||||
Button,
|
Button,
|
||||||
Empty,
|
Empty,
|
||||||
|
message,
|
||||||
} from 'antd';
|
} from 'antd';
|
||||||
import { debounce } from 'lodash';
|
import { debounce } from 'lodash';
|
||||||
import {
|
import {
|
||||||
|
|
@ -99,6 +100,8 @@ import ScannedProductTable from '../../Components/PedalOCR/scannedProductTable.j
|
||||||
import MultiCameraCropOCR from '../../Components/PedalOCR/MultiCameraCropOCR.jsx';
|
import MultiCameraCropOCR from '../../Components/PedalOCR/MultiCameraCropOCR.jsx';
|
||||||
import OCRLoader from '../../Components/PedalOCR/OCRLoader.jsx';
|
import OCRLoader from '../../Components/PedalOCR/OCRLoader.jsx';
|
||||||
import { GiHorizontalFlip, GiVerticalFlip } from 'react-icons/gi';
|
import { GiHorizontalFlip, GiVerticalFlip } from 'react-icons/gi';
|
||||||
|
import { FaPlus } from "react-icons/fa6";
|
||||||
|
import { Tables } from '../../../ownLib/my-ui-lib.js';
|
||||||
|
|
||||||
const colorText = 'Color : Red';
|
const colorText = 'Color : Red';
|
||||||
const ProductList = () => {
|
const ProductList = () => {
|
||||||
|
|
@ -129,6 +132,7 @@ const ProductList = () => {
|
||||||
const [SearchProdData, setSearchProdData] = useState([]);
|
const [SearchProdData, setSearchProdData] = useState([]);
|
||||||
const [productData, setproductData] = useState([]);
|
const [productData, setproductData] = useState([]);
|
||||||
const [currentPage, setCurrentPage] = useState(1);
|
const [currentPage, setCurrentPage] = useState(1);
|
||||||
|
const [activeTab, setActiveTab] = useState('stock');
|
||||||
let SalesStatus = productData?.[0]?.SalesStatus;
|
let SalesStatus = productData?.[0]?.SalesStatus;
|
||||||
const UomData = useSelector(uomDataSelector);
|
const UomData = useSelector(uomDataSelector);
|
||||||
const ProdCatData = useSelector(prodCatDataSelector);
|
const ProdCatData = useSelector(prodCatDataSelector);
|
||||||
|
|
@ -177,7 +181,6 @@ const ProductList = () => {
|
||||||
const [uploadImageModal, setUploadImageModal] = useState(false);
|
const [uploadImageModal, setUploadImageModal] = useState(false);
|
||||||
const [MultiCode, setMultiCode] = useState(false);
|
const [MultiCode, setMultiCode] = useState(false);
|
||||||
const [selectedRecords, setSelectedRecords] = useState([]);
|
const [selectedRecords, setSelectedRecords] = useState([]);
|
||||||
console.log(QrandbarcodeDatas, 'QrandbarcodeDatas');
|
|
||||||
const [imageModalRowIndex, setImageModalRowIndex] = useState(null);
|
const [imageModalRowIndex, setImageModalRowIndex] = useState(null);
|
||||||
const [rowRecord, setRowRecord] = useState(null);
|
const [rowRecord, setRowRecord] = useState(null);
|
||||||
const [sortedInfo, setSortedInfo] = useState({});
|
const [sortedInfo, setSortedInfo] = useState({});
|
||||||
|
|
@ -261,11 +264,15 @@ const ProductList = () => {
|
||||||
const [imageUrl, setImageUrl] = useState('');
|
const [imageUrl, setImageUrl] = useState('');
|
||||||
const [recordIndex, setRecordIndex] = useState(null);
|
const [recordIndex, setRecordIndex] = useState(null);
|
||||||
|
|
||||||
|
|
||||||
const [rangeFrom, setRangeFrom] = useState('');
|
const [rangeFrom, setRangeFrom] = useState('');
|
||||||
const [rangeTo, setRangeTo] = useState('');
|
const [rangeTo, setRangeTo] = useState('');
|
||||||
const [deleteInput, setDeleteInput] = useState(null);
|
const [deleteInput, setDeleteInput] = useState(null);
|
||||||
|
const [stockWiseQrcode, setstockWiseQrcode] = useState(false);
|
||||||
|
const [productWiseQrcode, setProductWiseQrcode] = useState(false);
|
||||||
const lastRangeIdsRef = useRef([]);
|
const lastRangeIdsRef = useRef([]);
|
||||||
|
|
||||||
|
|
||||||
const subDirectory = import.meta.env.ENV_BASE_URL;
|
const subDirectory = import.meta.env.ENV_BASE_URL;
|
||||||
// const [openTour, setOpenTour] = useState(false);
|
// const [openTour, setOpenTour] = useState(false);
|
||||||
|
|
||||||
|
|
@ -289,6 +296,9 @@ const ProductList = () => {
|
||||||
link: `${subDirectory}setting/product-master`,
|
link: `${subDirectory}setting/product-master`,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
// const stockAvailableCount = selectedRecords?.filter(
|
||||||
|
// item => item?.StockAvailable === "Y"
|
||||||
|
// ).length
|
||||||
const Qrcode = (record) => {
|
const Qrcode = (record) => {
|
||||||
setProName(record?.ProdName);
|
setProName(record?.ProdName);
|
||||||
setProdId(record?.QRCode);
|
setProdId(record?.QRCode);
|
||||||
|
|
@ -882,7 +892,8 @@ const ProductList = () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const CreateQrcode = async (isChecked, code) => {
|
const CreateQrcode = async (isChecked, code, productName, StockAvailable, copiesCount = 0) => {
|
||||||
|
|
||||||
if (!code) return;
|
if (!code) return;
|
||||||
|
|
||||||
if (isChecked) {
|
if (isChecked) {
|
||||||
|
|
@ -892,6 +903,9 @@ const ProductList = () => {
|
||||||
{
|
{
|
||||||
key: code,
|
key: code,
|
||||||
url: data,
|
url: data,
|
||||||
|
productName: productName,
|
||||||
|
copiesCount: copiesCount,
|
||||||
|
StockAvailable: StockAvailable
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -905,7 +919,7 @@ const ProductList = () => {
|
||||||
for (let i = 0; i < products.length; i += batchSize) {
|
for (let i = 0; i < products.length; i += batchSize) {
|
||||||
const batch = products.slice(i, i + batchSize);
|
const batch = products.slice(i, i + batchSize);
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
batch.map((product) => CreateQrcode(true, product.QRCode))
|
batch.map((product) => CreateQrcode(true, product.QRCode, product.ProdName, product.StockAvailable, product.TotalBalanceQty))
|
||||||
);
|
);
|
||||||
// Small delay to prevent UI blocking
|
// Small delay to prevent UI blocking
|
||||||
if (i + batchSize < products.length) {
|
if (i + batchSize < products.length) {
|
||||||
|
|
@ -913,7 +927,7 @@ const ProductList = () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
products.forEach((product) => CreateQrcode(false, product.QRCode));
|
products.forEach((product) => CreateQrcode(false, product.QRCode, product.ProdName, product.StockAvailable, product.TotalBalanceQty));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -1080,7 +1094,7 @@ const ProductList = () => {
|
||||||
)}
|
)}
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
handleCheckboxChange(record, e.target.checked);
|
handleCheckboxChange(record, e.target.checked);
|
||||||
CreateQrcode(e.target.checked, record.QRCode);
|
CreateQrcode(e.target.checked, record.QRCode, record?.ProdName, record?.StockAvailable, record?.TotalBalanceQty);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
|
|
@ -1735,9 +1749,17 @@ const ProductList = () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const generateQRCode = (code) =>
|
const generateQRCode = (code) => {
|
||||||
QrandbarcodeDatas?.find((e) => e?.key === code)?.url;
|
let Data = QrandbarcodeDatas?.find((e) => e?.key === code)?.url;
|
||||||
|
return Data
|
||||||
|
}
|
||||||
|
|
||||||
|
const generateQRCodeCopy = (code) => {
|
||||||
|
const found = QrandbarcodeDatas?.find((e) => e?.key === code);
|
||||||
|
const count = Number(found?.copiesCount);
|
||||||
|
return Number.isFinite(count) && count > 0 ? count : 0;
|
||||||
|
|
||||||
|
};
|
||||||
const imageUrlToBase64 = async (url) => {
|
const imageUrlToBase64 = async (url) => {
|
||||||
try {
|
try {
|
||||||
const response = await fetch(url);
|
const response = await fetch(url);
|
||||||
|
|
@ -2202,6 +2224,11 @@ const ProductList = () => {
|
||||||
}
|
}
|
||||||
}, [ProdId]);
|
}, [ProdId]);
|
||||||
|
|
||||||
|
|
||||||
|
const totalCopies = QrandbarcodeDatas?.reduce(
|
||||||
|
(sum, item) => sum + Number(item?.copiesCount || 0),
|
||||||
|
0
|
||||||
|
);
|
||||||
const convertSvgToBase64 = (svgElement) => {
|
const convertSvgToBase64 = (svgElement) => {
|
||||||
try {
|
try {
|
||||||
const svgData = new XMLSerializer().serializeToString(svgElement);
|
const svgData = new XMLSerializer().serializeToString(svgElement);
|
||||||
|
|
@ -2302,6 +2329,7 @@ const ProductList = () => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
formRef?.current?.resetFields();
|
formRef?.current?.resetFields();
|
||||||
setSelectedRecords([]);
|
setSelectedRecords([]);
|
||||||
|
setQrandbarcodeDatas([])
|
||||||
setMultiCode(false);
|
setMultiCode(false);
|
||||||
setNickName(null);
|
setNickName(null);
|
||||||
};
|
};
|
||||||
|
|
@ -2612,6 +2640,50 @@ const ProductList = () => {
|
||||||
footer={false}
|
footer={false}
|
||||||
children={
|
children={
|
||||||
<Form ref={formRef} onFinish={onFinish}>
|
<Form ref={formRef} onFinish={onFinish}>
|
||||||
|
|
||||||
|
{MultiCode && <div className="printtabs">
|
||||||
|
<div
|
||||||
|
className={`tab-item ${activeTab === 'stock' ? 'active' : ''}`}
|
||||||
|
onClick={() => setActiveTab('stock')}
|
||||||
|
>
|
||||||
|
Stock Wise <span className="count">({selectedRecords?.length})</span>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<div className="AddStockMinatain" onClick={(e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
setstockWiseQrcode(true);
|
||||||
|
}}
|
||||||
|
style={{
|
||||||
|
animation: activeTab === 'stock' ? 'blink 1s infinite' : 'none'
|
||||||
|
}}>
|
||||||
|
|
||||||
|
<FaPlus
|
||||||
|
|
||||||
|
/> Add
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
className={`tab-item ${activeTab === 'product' ? 'active' : ''}`}
|
||||||
|
onClick={() => setActiveTab('product')}
|
||||||
|
>
|
||||||
|
Product Wise <span className="count">({selectedRecords?.length})</span>
|
||||||
|
<div className="AddStockMinatain" onClick={(e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
setProductWiseQrcode(true);
|
||||||
|
}} style={{
|
||||||
|
animation: activeTab === 'product' ? 'blink 1s infinite' : 'none'
|
||||||
|
}}>
|
||||||
|
|
||||||
|
<FaPlus
|
||||||
|
|
||||||
|
|
||||||
|
/> Add
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>}
|
||||||
<div style={{ display: 'flex', flexWrap: 'wrap', gap: '1rem' }}>
|
<div style={{ display: 'flex', flexWrap: 'wrap', gap: '1rem' }}>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
name="Cross"
|
name="Cross"
|
||||||
|
|
@ -2847,7 +2919,7 @@ const ProductList = () => {
|
||||||
>
|
>
|
||||||
{nickName
|
{nickName
|
||||||
? nickName
|
? nickName
|
||||||
: proName}
|
: (proName || 'Product Name')}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{mrp && (
|
{mrp && (
|
||||||
|
|
@ -2895,9 +2967,9 @@ const ProductList = () => {
|
||||||
<p
|
<p
|
||||||
className={`${nickName ? '' : (proName + ' (' + size + ')')?.length > 8 ? 'text-ellipsis' : ''}`}
|
className={`${nickName ? '' : (proName + ' (' + size + ')')?.length > 8 ? 'text-ellipsis' : ''}`}
|
||||||
>
|
>
|
||||||
{proName} ({size})
|
{proName || 'Product Name'} ({size || '1 PCS'})
|
||||||
</p>
|
</p>
|
||||||
<p>{ProdId}</p>
|
<p>{ProdId || 'QR579890770'}</p>
|
||||||
</div>
|
</div>
|
||||||
<img
|
<img
|
||||||
src={qrCodeImage}
|
src={qrCodeImage}
|
||||||
|
|
@ -3053,7 +3125,7 @@ const ProductList = () => {
|
||||||
: 'product-sizeSmall2'
|
: 'product-sizeSmall2'
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
({size})
|
({size || '1 PCS'})
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<div
|
<div
|
||||||
|
|
@ -3066,11 +3138,11 @@ const ProductList = () => {
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
src={base64Image}
|
src={qrCodeImage}
|
||||||
className="sticker25-img"
|
className="sticker25-img"
|
||||||
alt="barcode"
|
alt="barcode"
|
||||||
/>
|
/>
|
||||||
<p class="product-id2">{ProdId}</p>
|
<p class="product-id2">{ProdId || 'QR8575956'}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|
@ -3169,9 +3241,9 @@ const ProductList = () => {
|
||||||
<p
|
<p
|
||||||
className={`${nickName ? '' : (proName + ' (' + size + ')')?.length > 12 ? 'text-ellipsis' : ''}`}
|
className={`${nickName ? '' : (proName + ' (' + size + ')')?.length > 12 ? 'text-ellipsis' : ''}`}
|
||||||
>
|
>
|
||||||
{proName} ({size})
|
{proName || 'Product Name'} ({size || '1 PCS'})
|
||||||
</p>
|
</p>
|
||||||
<p>{ProdId}</p>
|
<p>{ProdId || 'QR74478578'}</p>
|
||||||
</div>
|
</div>
|
||||||
<img
|
<img
|
||||||
src={qrCodeImage}
|
src={qrCodeImage}
|
||||||
|
|
@ -3266,7 +3338,7 @@ const ProductList = () => {
|
||||||
)}
|
)}
|
||||||
{mrp && (
|
{mrp && (
|
||||||
<div className="MRPBQ">
|
<div className="MRPBQ">
|
||||||
{'MRP : ' + detail?.MRP}
|
{'MRP : ' + (detail?.MRP || 10.0)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -3297,9 +3369,9 @@ const ProductList = () => {
|
||||||
<p
|
<p
|
||||||
className={`${nickName ? '' : (proName + ' (' + size + ')')?.length > 12 ? 'text-ellipsis' : ''}`}
|
className={`${nickName ? '' : (proName + ' (' + size + ')')?.length > 12 ? 'text-ellipsis' : ''}`}
|
||||||
>
|
>
|
||||||
{proName} ({size})
|
{proName || 'Product Name'} ({size || '1 PCS'})
|
||||||
</p>
|
</p>
|
||||||
<p>{ProdId}</p>
|
<p>{ProdId || 'QR987968'}</p>
|
||||||
</div>
|
</div>
|
||||||
<img
|
<img
|
||||||
src={qrCodeImage}
|
src={qrCodeImage}
|
||||||
|
|
@ -3380,7 +3452,7 @@ const ProductList = () => {
|
||||||
)}
|
)}
|
||||||
{mrp && (
|
{mrp && (
|
||||||
<div className="MRPBQ">
|
<div className="MRPBQ">
|
||||||
{'MRP : ' + detail?.MRP}
|
{'MRP : ' + (detail?.MRP || '10.0')}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -3411,9 +3483,9 @@ const ProductList = () => {
|
||||||
<p
|
<p
|
||||||
className={`${nickName ? '' : (proName + ' (' + size + ')')?.length > 12 ? 'text-ellipsis' : ''}`}
|
className={`${nickName ? '' : (proName + ' (' + size + ')')?.length > 12 ? 'text-ellipsis' : ''}`}
|
||||||
>
|
>
|
||||||
{proName} ({size})
|
{proName || 'Product Name'} ({size || '1 PCS'})
|
||||||
</p>
|
</p>
|
||||||
<p>{ProdId}</p>
|
<p>{ProdId || 'QR8798639'}</p>
|
||||||
</div>
|
</div>
|
||||||
<img
|
<img
|
||||||
src={qrCodeImage}
|
src={qrCodeImage}
|
||||||
|
|
@ -3479,7 +3551,7 @@ const ProductList = () => {
|
||||||
{sellingPrice && (
|
{sellingPrice && (
|
||||||
<div className="SellingpriceBQ">
|
<div className="SellingpriceBQ">
|
||||||
{`Selling Price : ` +
|
{`Selling Price : ` +
|
||||||
detail?.SellPrice}
|
(detail?.SellPrice || '10.0')}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -3510,9 +3582,9 @@ const ProductList = () => {
|
||||||
<p
|
<p
|
||||||
className={`${nickName ? '' : (proName + ' (' + size + ')')?.length > 12 ? 'text-ellipsis' : ''}`}
|
className={`${nickName ? '' : (proName + ' (' + size + ')')?.length > 12 ? 'text-ellipsis' : ''}`}
|
||||||
>
|
>
|
||||||
{proName} ({size})
|
{proName || 'Product Name'} ({size || '1 PCS'})
|
||||||
</p>
|
</p>
|
||||||
<p>{ProdId}</p>
|
<p>{ProdId || 'QR0970970'}</p>
|
||||||
</div>
|
</div>
|
||||||
<img
|
<img
|
||||||
src={qrCodeImage}
|
src={qrCodeImage}
|
||||||
|
|
@ -3573,13 +3645,13 @@ const ProductList = () => {
|
||||||
)}
|
)}
|
||||||
{mrp && (
|
{mrp && (
|
||||||
<div className="MRPBQ">
|
<div className="MRPBQ">
|
||||||
{'MRP : ' + detail?.MRP}
|
{'MRP : ' + (detail?.MRP || '10.0')}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{sellingPrice && (
|
{sellingPrice && (
|
||||||
<div className="SellingpriceBQ">
|
<div className="SellingpriceBQ">
|
||||||
{`Selling Price : ` +
|
{`Selling Price : ` +
|
||||||
detail?.SellPrice}
|
(detail?.SellPrice || '10.0')}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -3618,9 +3690,9 @@ const ProductList = () => {
|
||||||
<p
|
<p
|
||||||
className={`${nickName ? '' : (proName + ' (' + size + ')')?.length > 12 ? 'text-ellipsis' : ''}`}
|
className={`${nickName ? '' : (proName + ' (' + size + ')')?.length > 12 ? 'text-ellipsis' : ''}`}
|
||||||
>
|
>
|
||||||
{proName} ({size})
|
{proName || 'Product Name'} ({size || '1 PCS'})
|
||||||
</p>
|
</p>
|
||||||
<p>{ProdId}</p>
|
<p>{ProdId || 'QR858755'}</p>
|
||||||
</div>
|
</div>
|
||||||
<img
|
<img
|
||||||
src={qrCodeImage}
|
src={qrCodeImage}
|
||||||
|
|
@ -3726,7 +3798,7 @@ const ProductList = () => {
|
||||||
)}
|
)}
|
||||||
{mrp && (
|
{mrp && (
|
||||||
<div className="MRPBQ">
|
<div className="MRPBQ">
|
||||||
{'MRP : ' + detail?.MRP}
|
{'MRP : ' + (detail?.MRP || '10.0')}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -3773,25 +3845,25 @@ const ProductList = () => {
|
||||||
<p>
|
<p>
|
||||||
SIZE:{' '}
|
SIZE:{' '}
|
||||||
<span className="field-value">
|
<span className="field-value">
|
||||||
{size}
|
{size || '1 PCS'}
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Id:{' '}
|
Id:{' '}
|
||||||
<span className="field-value">
|
<span className="field-value">
|
||||||
{ProdId}
|
{ProdId || 'QR86868'}
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
MRP:{' '}
|
MRP:{' '}
|
||||||
<span className="field-value">
|
<span className="field-value">
|
||||||
{'MRP : ' + detail?.MRP}
|
{'MRP : ' + (detail?.MRP || '10.0')}
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Selling Price:{' '}
|
Selling Price:{' '}
|
||||||
<span className="field-value">
|
<span className="field-value">
|
||||||
{detail?.SellPrice}
|
{(detail?.SellPrice || '10.0')}
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -3833,7 +3905,7 @@ const ProductList = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
{!MultiCode && <Form.Item
|
||||||
name="Copies"
|
name="Copies"
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
|
|
@ -3857,7 +3929,7 @@ const ProductList = () => {
|
||||||
CopiesOnChange(e?.target?.value);
|
CopiesOnChange(e?.target?.value);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</Form.Item>
|
</Form.Item>}
|
||||||
{proName?.length > 12 && printProductName && !MultiCode && (
|
{proName?.length > 12 && printProductName && !MultiCode && (
|
||||||
<>
|
<>
|
||||||
<div
|
<div
|
||||||
|
|
@ -3906,8 +3978,20 @@ const ProductList = () => {
|
||||||
justifyContent: 'flex-end',
|
justifyContent: 'flex-end',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Buttons buttonText={'Submit'} color="901D77"></Buttons>
|
{(!MultiCode || totalCopies > 0) && (
|
||||||
</div>
|
<Buttons buttonText="Submit" color="901D77" />
|
||||||
|
)}
|
||||||
|
{MultiCode && totalCopies === 0 && (
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="product_primary_Button"
|
||||||
|
onClick={() => setstockWiseQrcode(true)}
|
||||||
|
>
|
||||||
|
Submit
|
||||||
|
</button>
|
||||||
|
)} </div>
|
||||||
|
|
||||||
|
|
||||||
</Form>
|
</Form>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
|
@ -3915,8 +3999,10 @@ const ProductList = () => {
|
||||||
<div id="StickerPrints0">
|
<div id="StickerPrints0">
|
||||||
<div className="grid15x15_6cross">
|
<div className="grid15x15_6cross">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
console.log(copyCount, "copyCountcopyCountcopyCount")
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="Sticker0"
|
className="Sticker0"
|
||||||
key={`sticker0-${recordIndex}-${copyIndex}`}
|
key={`sticker0-${recordIndex}-${copyIndex}`}
|
||||||
|
|
@ -3931,8 +4017,8 @@ const ProductList = () => {
|
||||||
style={{ width: '52px', height: '52px' }}
|
style={{ width: '52px', height: '52px' }}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
))
|
));
|
||||||
)
|
})
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div className="Sticker0" key={`sticker0-${index}`}>
|
<div className="Sticker0" key={`sticker0-${index}`}>
|
||||||
<img
|
<img
|
||||||
|
|
@ -3946,8 +4032,9 @@ const ProductList = () => {
|
||||||
<div id="StickerPrints1">
|
<div id="StickerPrints1">
|
||||||
<div className="grid22x35_3cross">
|
<div className="grid22x35_3cross">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array?.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
return Array?.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="Sticker1"
|
className="Sticker1"
|
||||||
key={`sticker1-${recordIndex}-${copyIndex}`}
|
key={`sticker1-${recordIndex}-${copyIndex}`}
|
||||||
|
|
@ -3972,6 +4059,7 @@ const ProductList = () => {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
|
}
|
||||||
)
|
)
|
||||||
: Array?.from({ length: copies })?.map((_, index) => (
|
: Array?.from({ length: copies })?.map((_, index) => (
|
||||||
<div className="Sticker1" key={`sticker1-${index}`}>
|
<div className="Sticker1" key={`sticker1-${index}`}>
|
||||||
|
|
@ -3993,9 +4081,11 @@ const ProductList = () => {
|
||||||
</div>
|
</div>
|
||||||
<div id="StickerPrints2">
|
<div id="StickerPrints2">
|
||||||
<div className="grid25x25_4cross">
|
<div className="grid25x25_4cross">
|
||||||
{selectedRecords?.length > 0
|
{(selectedRecords?.length > 0)
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
console.log(copyCount, 'copyCount2')
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="sticker25x25"
|
className="sticker25x25"
|
||||||
key={`sticker2-${recordIndex}-${copyIndex}`}
|
key={`sticker2-${recordIndex}-${copyIndex}`}
|
||||||
|
|
@ -4048,6 +4138,9 @@ const ProductList = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
)
|
)
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div className="sticker25x25" key={`sticker2-${index}`}>
|
<div className="sticker25x25" key={`sticker2-${index}`}>
|
||||||
|
|
@ -4100,8 +4193,10 @@ const ProductList = () => {
|
||||||
<div id="StickerPrints3">
|
<div id="StickerPrints3">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
console.log(copyCount, 'copyCount3')
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="Sticker3"
|
className="Sticker3"
|
||||||
key={`sticker3-${recordIndex}-${copyIndex}`}
|
key={`sticker3-${recordIndex}-${copyIndex}`}
|
||||||
|
|
@ -4126,7 +4221,7 @@ const ProductList = () => {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
)
|
})
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div className="Sticker3" key={`sticker3-${index}`}>
|
<div className="Sticker3" key={`sticker3-${index}`}>
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -4148,8 +4243,10 @@ const ProductList = () => {
|
||||||
<div id="StickerPrints4">
|
<div id="StickerPrints4">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
console.log(copyCount, 'copyCount4')
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="Sticker4"
|
className="Sticker4"
|
||||||
key={`sticker4-${recordIndex}-${copyIndex}`}
|
key={`sticker4-${recordIndex}-${copyIndex}`}
|
||||||
|
|
@ -4174,7 +4271,7 @@ const ProductList = () => {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
)
|
})
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div className="Sticker4" key={`sticker4-${index}`}>
|
<div className="Sticker4" key={`sticker4-${index}`}>
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -4196,8 +4293,10 @@ const ProductList = () => {
|
||||||
<div id="StickerPrints5">
|
<div id="StickerPrints5">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
console.log(copyCount, 'copyCount5')
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="Sticker5"
|
className="Sticker5"
|
||||||
key={`sticker5-${recordIndex}-${copyIndex}`}
|
key={`sticker5-${recordIndex}-${copyIndex}`}
|
||||||
|
|
@ -4222,7 +4321,7 @@ const ProductList = () => {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
)
|
})
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div className="Sticker5" key={`sticker5-${index}`}>
|
<div className="Sticker5" key={`sticker5-${index}`}>
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -4244,8 +4343,10 @@ const ProductList = () => {
|
||||||
<div id="StickerPrints6">
|
<div id="StickerPrints6">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
console.log(copyCount, 'copyCount6')
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="Sticker6"
|
className="Sticker6"
|
||||||
key={`sticker6-${recordIndex}-${copyIndex}`}
|
key={`sticker6-${recordIndex}-${copyIndex}`}
|
||||||
|
|
@ -4270,7 +4371,7 @@ const ProductList = () => {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
)
|
})
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div className="Sticker6" key={`sticker6-${index}`}>
|
<div className="Sticker6" key={`sticker6-${index}`}>
|
||||||
<div className="text-section6">
|
<div className="text-section6">
|
||||||
|
|
@ -4292,8 +4393,10 @@ const ProductList = () => {
|
||||||
<div id="StickerPrints7">
|
<div id="StickerPrints7">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
console.log(copyCount, 'copyCount7')
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="Sticker7"
|
className="Sticker7"
|
||||||
key={`sticker7-${recordIndex}-${copyIndex}`}
|
key={`sticker7-${recordIndex}-${copyIndex}`}
|
||||||
|
|
@ -4318,7 +4421,7 @@ const ProductList = () => {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
)
|
})
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div className="Sticker7" key={`sticker7-${index}`}>
|
<div className="Sticker7" key={`sticker7-${index}`}>
|
||||||
<div className="text-section7">
|
<div className="text-section7">
|
||||||
|
|
@ -4340,8 +4443,10 @@ const ProductList = () => {
|
||||||
<div id="StickerPrints8">
|
<div id="StickerPrints8">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
console.log(copyCount, 'copyCount8')
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="OverAllSticker8"
|
className="OverAllSticker8"
|
||||||
key={`sticker8-${recordIndex}-${copyIndex}`}
|
key={`sticker8-${recordIndex}-${copyIndex}`}
|
||||||
|
|
@ -4397,7 +4502,7 @@ const ProductList = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
)
|
})
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div className="OverAllSticker8">
|
<div className="OverAllSticker8">
|
||||||
<div className="StikerBr8">
|
<div className="StikerBr8">
|
||||||
|
|
@ -4444,8 +4549,9 @@ const ProductList = () => {
|
||||||
<div id="25X254cross">
|
<div id="25X254cross">
|
||||||
<div className="grid25x25_4cross">
|
<div className="grid25x25_4cross">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => {
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => {
|
||||||
const hasProductName = !!templateOptions.productName;
|
const hasProductName = !!templateOptions.productName;
|
||||||
const hasMrp = !!templateOptions.mrp;
|
const hasMrp = !!templateOptions.mrp;
|
||||||
|
|
||||||
|
|
@ -4609,6 +4715,8 @@ const ProductList = () => {
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
)
|
)
|
||||||
: Array.from({ length: copies })?.map((_, index) => {
|
: Array.from({ length: copies })?.map((_, index) => {
|
||||||
const hasProductName = !!templateOptions.productName;
|
const hasProductName = !!templateOptions.productName;
|
||||||
|
|
@ -4790,8 +4898,9 @@ const ProductList = () => {
|
||||||
<div id="25X502cross">
|
<div id="25X502cross">
|
||||||
<div className="Cross25X50container">
|
<div className="Cross25X50container">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="BarQrprint8"
|
className="BarQrprint8"
|
||||||
key={`Barcode2-${recordIndex}-${copyIndex}`}
|
key={`Barcode2-${recordIndex}-${copyIndex}`}
|
||||||
|
|
@ -4816,6 +4925,8 @@ const ProductList = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
|
}
|
||||||
|
|
||||||
)
|
)
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div
|
<div
|
||||||
|
|
@ -4845,8 +4956,11 @@ const ProductList = () => {
|
||||||
|
|
||||||
<div id="50X30Single">
|
<div id="50X30Single">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
|
|
||||||
<div
|
<div
|
||||||
className="BarQrprint6"
|
className="BarQrprint6"
|
||||||
style={secondValueStyle}
|
style={secondValueStyle}
|
||||||
|
|
@ -4892,6 +5006,8 @@ const ProductList = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
|
}
|
||||||
|
|
||||||
)
|
)
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div
|
<div
|
||||||
|
|
@ -4946,8 +5062,10 @@ const ProductList = () => {
|
||||||
<div id="50X25Single">
|
<div id="50X25Single">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="BarQrprint2"
|
className="BarQrprint2"
|
||||||
style={secondValueStyle}
|
style={secondValueStyle}
|
||||||
|
|
@ -5000,6 +5118,8 @@ const ProductList = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
|
}
|
||||||
|
|
||||||
)
|
)
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div
|
<div
|
||||||
|
|
@ -5062,8 +5182,9 @@ const ProductList = () => {
|
||||||
<div id="100X13(55MMPrintable)">
|
<div id="100X13(55MMPrintable)">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="BarQrprint9"
|
className="BarQrprint9"
|
||||||
key={`Barcode5-${recordIndex}-${copyIndex}`}
|
key={`Barcode5-${recordIndex}-${copyIndex}`}
|
||||||
|
|
@ -5089,6 +5210,8 @@ const ProductList = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
|
}
|
||||||
|
|
||||||
)
|
)
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div
|
<div
|
||||||
|
|
@ -5117,8 +5240,10 @@ const ProductList = () => {
|
||||||
<div id="100X15(70MMPrintable)">
|
<div id="100X15(70MMPrintable)">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="BarQrprint1"
|
className="BarQrprint1"
|
||||||
style={valueStyleRow}
|
style={valueStyleRow}
|
||||||
|
|
@ -5151,6 +5276,8 @@ const ProductList = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
|
}
|
||||||
|
|
||||||
)
|
)
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div
|
<div
|
||||||
|
|
@ -5186,8 +5313,10 @@ const ProductList = () => {
|
||||||
<div id="100X150">
|
<div id="100X150">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="BarQrprint7"
|
className="BarQrprint7"
|
||||||
style={secondValueStyle}
|
style={secondValueStyle}
|
||||||
|
|
@ -5245,6 +5374,8 @@ const ProductList = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
|
}
|
||||||
|
|
||||||
)
|
)
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div
|
<div
|
||||||
|
|
@ -5312,8 +5443,10 @@ const ProductList = () => {
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="label15"
|
className="label15"
|
||||||
key={`Barcode8-${recordIndex}-${copyIndex}`}
|
key={`Barcode8-${recordIndex}-${copyIndex}`}
|
||||||
|
|
@ -5374,6 +5507,8 @@ const ProductList = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
|
}
|
||||||
|
|
||||||
)
|
)
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div className="label15" key={`Barcode8-${index}`}>
|
<div className="label15" key={`Barcode8-${index}`}>
|
||||||
|
|
@ -5435,8 +5570,10 @@ const ProductList = () => {
|
||||||
<div id="22X353cross">
|
<div id="22X353cross">
|
||||||
<div className="grid22x35_3cross">
|
<div className="grid22x35_3cross">
|
||||||
{selectedRecords?.length > 0
|
{selectedRecords?.length > 0
|
||||||
? selectedRecords?.map((record, recordIndex) =>
|
? selectedRecords?.map((record, recordIndex) => {
|
||||||
Array.from({ length: copies })?.map((_, copyIndex) => (
|
const copyCount = generateQRCodeCopy(record?.QRCode);
|
||||||
|
|
||||||
|
return Array.from({ length: copyCount })?.map((_, copyIndex) => (
|
||||||
<div
|
<div
|
||||||
className="barcode-wrapper-22x35"
|
className="barcode-wrapper-22x35"
|
||||||
key={`Barcode9-${recordIndex}-${copyIndex}`}
|
key={`Barcode9-${recordIndex}-${copyIndex}`}
|
||||||
|
|
@ -5492,6 +5629,8 @@ const ProductList = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
|
}
|
||||||
|
|
||||||
)
|
)
|
||||||
: Array.from({ length: copies })?.map((_, index) => (
|
: Array.from({ length: copies })?.map((_, index) => (
|
||||||
<div
|
<div
|
||||||
|
|
@ -5767,6 +5906,127 @@ const ProductList = () => {
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
<DefaultModal
|
||||||
|
open={stockWiseQrcode}
|
||||||
|
title="Stock Wise Qrcode"
|
||||||
|
handleCancel={() => setstockWiseQrcode(false)}
|
||||||
|
handleSubmit={() => {
|
||||||
|
if (totalCopies == 0) {
|
||||||
|
message.error("Please enter copies count")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setstockWiseQrcode(false)
|
||||||
|
onFinish();
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
footer={true}
|
||||||
|
children={
|
||||||
|
<>
|
||||||
|
<div className='ProductList-pwiseQrcode'>
|
||||||
|
<Table
|
||||||
|
columns={[
|
||||||
|
{ title: 'Product Name', dataIndex: 'productName', key: 'productName' },
|
||||||
|
{
|
||||||
|
title: 'Copies Count',
|
||||||
|
dataIndex: 'copiesCount',
|
||||||
|
key: 'copiesCount',
|
||||||
|
render: (text, record) => (
|
||||||
|
<input
|
||||||
|
className='inputpwiseQR'
|
||||||
|
type="number"
|
||||||
|
min="1"
|
||||||
|
value={record.copiesCount}
|
||||||
|
onChange={(e) => {
|
||||||
|
const newValue = parseInt(e.target.value);
|
||||||
|
setQrandbarcodeDatas(prev =>
|
||||||
|
prev.map(item =>
|
||||||
|
item.key === record.key
|
||||||
|
? { ...item, copiesCount: newValue }
|
||||||
|
: item
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
style={{ width: '80px' }}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
dataSource={QrandbarcodeDatas}
|
||||||
|
rowKey="ProdId"
|
||||||
|
pagination={false}
|
||||||
|
size="small"
|
||||||
|
rowClassName={(record) =>
|
||||||
|
record.StockAvailable === "N" ? 'row-red' : ''
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className='indicationInfo'>
|
||||||
|
<p></p>
|
||||||
|
<span>Stock is not Maintained</span>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<DefaultModal
|
||||||
|
open={productWiseQrcode}
|
||||||
|
title="Product Wise Qrcode"
|
||||||
|
handleCancel={() => setProductWiseQrcode(false)}
|
||||||
|
handleSubmit={() => {
|
||||||
|
if (totalCopies == 0) {
|
||||||
|
message.error("Please enter copies count")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setProductWiseQrcode(false)
|
||||||
|
onFinish();
|
||||||
|
}
|
||||||
|
|
||||||
|
}} footer={true}
|
||||||
|
|
||||||
|
children={
|
||||||
|
<>
|
||||||
|
<div className='ProductList-pwiseQrcode'>
|
||||||
|
<Table
|
||||||
|
columns={[
|
||||||
|
{ title: 'Product Name', dataIndex: 'productName', key: 'productName' },
|
||||||
|
// { title: 'Stock Count', dataIndex: 'StockAvailable', key: 'StockAvailable' },
|
||||||
|
{
|
||||||
|
title: 'Copies Count',
|
||||||
|
dataIndex: 'copiesCount',
|
||||||
|
key: 'copiesCount',
|
||||||
|
render: (text, record, index) => (
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
className='inputpwiseQR'
|
||||||
|
min="1"
|
||||||
|
value={record.copiesCount}
|
||||||
|
onChange={(e) => {
|
||||||
|
const newValue = parseInt(e.target.value) || 1;
|
||||||
|
setQrandbarcodeDatas(prev =>
|
||||||
|
prev.map(item =>
|
||||||
|
item.key === record.key
|
||||||
|
? { ...item, copiesCount: newValue }
|
||||||
|
: item
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
style={{ width: '80px' }}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
dataSource={QrandbarcodeDatas}
|
||||||
|
rowKey="ProdId"
|
||||||
|
pagination={false}
|
||||||
|
size="small"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
|
||||||
<OCRLoader
|
<OCRLoader
|
||||||
isVisible={isOCRProcessing.Loader}
|
isVisible={isOCRProcessing.Loader}
|
||||||
|
|
|
||||||
|
|
@ -878,7 +878,7 @@ const InvoiceImageExtractorModal = ({
|
||||||
extractedText,
|
extractedText,
|
||||||
products: productTableData,
|
products: productTableData,
|
||||||
supplierSuggestions: supplierSuggestions,
|
supplierSuggestions: supplierSuggestions,
|
||||||
TotalAmtData: TotalAmtData,
|
TotalAmtData: parseFloat(TotalAmtData)?.toFixed(2),
|
||||||
});
|
});
|
||||||
handleClose({ submit: true });
|
handleClose({ submit: true });
|
||||||
message.success('Applied to purchase form!');
|
message.success('Applied to purchase form!');
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@ import {
|
||||||
getsingleQrcodeData,
|
getsingleQrcodeData,
|
||||||
productTypeDataSelector,
|
productTypeDataSelector,
|
||||||
getProductTypeData,
|
getProductTypeData,
|
||||||
|
bulkpostdata,
|
||||||
} from '../../Features/ProductPage/ProductPage.js';
|
} from '../../Features/ProductPage/ProductPage.js';
|
||||||
import { postConfiguration } from '../../Features/ConfigMasterPage/ConfigMasterPage.js';
|
import { postConfiguration } from '../../Features/ConfigMasterPage/ConfigMasterPage.js';
|
||||||
import SupplierProductMappingForm from '../SupplierProductMapping/SuplierProductMappingForm.jsx';
|
import SupplierProductMappingForm from '../SupplierProductMapping/SuplierProductMappingForm.jsx';
|
||||||
|
|
@ -687,7 +688,8 @@ const StockForm = ({ formType }) => {
|
||||||
const allSupplierProducts = response?.data?.data || [];
|
const allSupplierProducts = response?.data?.data || [];
|
||||||
|
|
||||||
const matchingProdIds = [];
|
const matchingProdIds = [];
|
||||||
|
const NewImageProducts=[]
|
||||||
|
console.log(unmatchedProducts,"unmatchedProductsunmatchedProducts")
|
||||||
// check if the unmatched products exists in our products list
|
// check if the unmatched products exists in our products list
|
||||||
unmatchedProducts.forEach((item) => {
|
unmatchedProducts.forEach((item) => {
|
||||||
const match = allSupplierProducts?.[0]?.ProductDetails.find(
|
const match = allSupplierProducts?.[0]?.ProductDetails.find(
|
||||||
|
|
@ -698,8 +700,90 @@ const StockForm = ({ formType }) => {
|
||||||
if (match) {
|
if (match) {
|
||||||
matchingProdIds.push(match.ProdId);
|
matchingProdIds.push(match.ProdId);
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
NewImageProducts.push(item?.parsedData);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
console.log(NewImageProducts,"NewImageProductsNewImageProducts")
|
||||||
|
// Bulk upload new image products
|
||||||
|
if (NewImageProducts.length > 0) {
|
||||||
|
const newProductsData = NewImageProducts.map(product => ({
|
||||||
|
AppId: AppId || 0,
|
||||||
|
CompId: CompId || "",
|
||||||
|
BranchId: BranchId || "",
|
||||||
|
CreatedBy: UserId || 0,
|
||||||
|
ProdName: product.description?.trim() || "",
|
||||||
|
ProdVariantName: "",
|
||||||
|
Size: 1 || "",
|
||||||
|
UOM: product.unit || "",
|
||||||
|
MRP: parseFloat(product.rate) || 0,
|
||||||
|
WhSalePrice: 0,
|
||||||
|
SellPrice: parseFloat(product.rate) || 0,
|
||||||
|
ProdCat: "General",
|
||||||
|
ProdSubCat: "",
|
||||||
|
Brand: "",
|
||||||
|
AutoGenerateQr: "",
|
||||||
|
QRCode: "",
|
||||||
|
StockAvailable: 'No',
|
||||||
|
TaxId: "",
|
||||||
|
HSNCode: "",
|
||||||
|
PartNumber: "",
|
||||||
|
Rack: 0,
|
||||||
|
ManufDate: "",
|
||||||
|
ExpDate: "",
|
||||||
|
AvailableFrom: "",
|
||||||
|
AvailableTo: "",
|
||||||
|
ProdLogo: "",
|
||||||
|
OnePcsAvailable: "No",
|
||||||
|
AutoGenerateSingleQr:'No',
|
||||||
|
TaxId: 'NIL - 0%',
|
||||||
|
OnePcQR: "",
|
||||||
|
TokenAvailable: 'No',
|
||||||
|
OpeningQty: 0,
|
||||||
|
QtyBasedPrice: "",
|
||||||
|
InwardDate: "",
|
||||||
|
SuppId: suppId || "",
|
||||||
|
Reference: "",
|
||||||
|
ReceivedQty: 0,
|
||||||
|
AcceptedQty: 0,
|
||||||
|
RejectedQty: 0,
|
||||||
|
RejectionReason: "",
|
||||||
|
IssuedQty: 0,
|
||||||
|
BalanceQty: 0,
|
||||||
|
InwardPrice: 0,
|
||||||
|
OfferPrice: 0,
|
||||||
|
SpecialPrice: 0,
|
||||||
|
Cess: 0,
|
||||||
|
}));
|
||||||
|
|
||||||
|
const bulkResponse = await dispatch(bulkpostdata({ ProdDetails: newProductsData })).unwrap();
|
||||||
|
|
||||||
|
if (bulkResponse?.data?.statusCode === 1) {
|
||||||
|
// After successful bulk upload, check the condition again
|
||||||
|
const updatedResponse = await dispatch(
|
||||||
|
getSupplaierIdBasedProducts({ CompId, AppId, BranchId, SuppId: suppId })
|
||||||
|
).unwrap();
|
||||||
|
if (updatedResponse?.data?.statusCode === 1) {
|
||||||
|
const updatedAllSupplierProducts = updatedResponse?.data?.data || [];
|
||||||
|
const updatedMatchingProdIds = [];
|
||||||
|
|
||||||
|
unmatchedProducts.forEach((item) => {
|
||||||
|
const match = updatedAllSupplierProducts?.[0]?.ProductDetails.find(
|
||||||
|
(supp) =>
|
||||||
|
supp?.ProdName?.toLowerCase() ===
|
||||||
|
item?.parsedData?.description?.toLowerCase()
|
||||||
|
);
|
||||||
|
if (match) {
|
||||||
|
updatedMatchingProdIds.push(match.ProdId);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (updatedMatchingProdIds.length > 0) {
|
||||||
|
matchingProdIds.push(...updatedMatchingProdIds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// if there is matching products, map them to the supplier
|
// if there is matching products, map them to the supplier
|
||||||
if (matchingProdIds.length > 0) {
|
if (matchingProdIds.length > 0) {
|
||||||
setLoadingText('Mapping products to supplier...');
|
setLoadingText('Mapping products to supplier...');
|
||||||
|
|
@ -1003,7 +1087,9 @@ const StockForm = ({ formType }) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleSuppInvoiceNoChange = (e) => {
|
const handleSuppInvoiceNoChange = (e) => {
|
||||||
formProductRef.current?.setFieldsValue({ SuppInvoiceNo: e.target.value });
|
const value = e.target.value;
|
||||||
|
formRef.current?.setFieldsValue({ SuppInvoiceNo: value });
|
||||||
|
setExtractorData(prev => prev ? { ...prev, invoiceNo: value } : null);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleInvoiceTypeChange = (value) => {
|
const handleInvoiceTypeChange = (value) => {
|
||||||
|
|
@ -1032,13 +1118,16 @@ const StockForm = ({ formType }) => {
|
||||||
formRef?.current?.getFieldsValue(),
|
formRef?.current?.getFieldsValue(),
|
||||||
'formRefformRefformRefformRef'
|
'formRefformRefformRefformRef'
|
||||||
);
|
);
|
||||||
|
if(extractorData?.invoiceNo !== null && extractorData?.invoiceNo !== ""){
|
||||||
formRef?.current?.setFieldsValue({
|
formRef?.current?.setFieldsValue({
|
||||||
SuppInvoiceNo: extractorData?.invoiceNo,
|
SuppInvoiceNo: extractorData?.invoiceNo,
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
formRef?.current?.setFieldsValue({
|
formRef?.current?.setFieldsValue({
|
||||||
PaymentAmount: extractorData?.TotalAmtData,
|
PaymentAmount: extractorData?.TotalAmtData,
|
||||||
});
|
});
|
||||||
setPaymentAmount(extractorData?.TotalAmtData);
|
setPaymentAmount((extractorData?.TotalAmtData));
|
||||||
onSuppInvoiceDateChange(
|
onSuppInvoiceDateChange(
|
||||||
extractorData?.date,
|
extractorData?.date,
|
||||||
extractorData?.date?.format('DD-MM-YYYY') || ''
|
extractorData?.date?.format('DD-MM-YYYY') || ''
|
||||||
|
|
@ -3854,7 +3943,7 @@ const StockForm = ({ formType }) => {
|
||||||
{PurchaseData.reduce(
|
{PurchaseData.reduce(
|
||||||
(acc, data) => acc + data?.Amount,
|
(acc, data) => acc + data?.Amount,
|
||||||
0
|
0
|
||||||
)}
|
)?.toFixed(2)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{!orderType && (
|
{!orderType && (
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,38 @@
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product_primary_Button {
|
||||||
|
background-color: var(--ERROR_COLOR);
|
||||||
|
color: #fff;
|
||||||
|
padding: 15px;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
border: 1px solid;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
width: 170px;
|
||||||
|
height: 45px;
|
||||||
|
background-color: var(--PRIMARY_BUTTON_BG_COLOR) !important;
|
||||||
|
color: #fff;
|
||||||
|
font-family: var(--HEADING_FONT_FAMILY);
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 14px;
|
||||||
|
border-radius: 8px;
|
||||||
|
display: flex;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
z-index: 2;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.Counter-Category-mapping {
|
.Counter-Category-mapping {
|
||||||
|
|
@ -191,6 +223,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.address-type-section {
|
.address-type-section {
|
||||||
|
|
||||||
// padding: 12px;
|
// padding: 12px;
|
||||||
// background-color: #f8fafc;
|
// background-color: #f8fafc;
|
||||||
// border-radius: 8px;
|
// border-radius: 8px;
|
||||||
|
|
@ -453,6 +486,7 @@
|
||||||
.ant-table-thead {
|
.ant-table-thead {
|
||||||
z-index: 150 !important;
|
z-index: 150 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-table-cell {
|
.ant-table-cell {
|
||||||
padding: 4px !important;
|
padding: 4px !important;
|
||||||
}
|
}
|
||||||
|
|
@ -601,11 +635,13 @@
|
||||||
color: white;
|
color: white;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lowStock-SaveButton:hover {
|
.lowStock-SaveButton:hover {
|
||||||
background-color: #13c12a;
|
background-color: #13c12a;
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.25);
|
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.25);
|
||||||
}
|
}
|
||||||
|
|
||||||
.lowStock-button {
|
.lowStock-button {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
@ -630,6 +666,7 @@
|
||||||
transform: translateY(0);
|
transform: translateY(0);
|
||||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.add-slot-header {
|
.add-slot-header {
|
||||||
font-size: 25px;
|
font-size: 25px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
|
@ -678,15 +715,18 @@
|
||||||
.StorekitchenlistTable {
|
.StorekitchenlistTable {
|
||||||
scrollbar-width: thin;
|
scrollbar-width: thin;
|
||||||
padding-right: 8px;
|
padding-right: 8px;
|
||||||
@media (max-width: 600px) {
|
|
||||||
}
|
@media (max-width: 600px) {}
|
||||||
|
|
||||||
.ant-table-thead {
|
.ant-table-thead {
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: #bad4f9 !important;
|
background-color: #bad4f9 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
tr:hover {
|
tr:hover {
|
||||||
background-color: #bad4f9 !important;
|
background-color: #bad4f9 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-table-cell {
|
.ant-table-cell {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
|
|
@ -700,11 +740,13 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.StoreRecipeinputForm {
|
.StoreRecipeinputForm {
|
||||||
.ant-form-item-explain-error {
|
.ant-form-item-explain-error {
|
||||||
top: 16px;
|
top: 16px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.incenbtivepayBTN {
|
.incenbtivepayBTN {
|
||||||
.ant-btn {
|
.ant-btn {
|
||||||
font-size: 16px !important;
|
font-size: 16px !important;
|
||||||
|
|
@ -733,10 +775,12 @@
|
||||||
height: 45px !important;
|
height: 45px !important;
|
||||||
width: 180px !important;
|
width: 180px !important;
|
||||||
font-size: 14px !important;
|
font-size: 14px !important;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: #d37305 !important;
|
background-color: #d37305 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.smart_scan_Button {
|
.smart_scan_Button {
|
||||||
position: unset !important;
|
position: unset !important;
|
||||||
left: unset !important;
|
left: unset !important;
|
||||||
|
|
@ -765,6 +809,7 @@
|
||||||
border-spacing: 0 !important;
|
border-spacing: 0 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.pricechangeTable {
|
.pricechangeTable {
|
||||||
.ant-input {
|
.ant-input {
|
||||||
padding: 4px 11px 4px 11px !important;
|
padding: 4px 11px 4px 11px !important;
|
||||||
|
|
@ -838,6 +883,7 @@
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.CommmasterPageHeader {
|
.CommmasterPageHeader {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
@ -848,9 +894,11 @@
|
||||||
|
|
||||||
.comboProductList {
|
.comboProductList {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
.ant-table-thead,
|
.ant-table-thead,
|
||||||
.ant-table-cell {
|
.ant-table-cell {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
|
||||||
th {
|
th {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
@ -863,6 +911,7 @@ table {
|
||||||
font-family: 'Gilroy' !important;
|
font-family: 'Gilroy' !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tbody {
|
tbody {
|
||||||
td {
|
td {
|
||||||
font-family: 'Poppins' !important;
|
font-family: 'Poppins' !important;
|
||||||
|
|
@ -1287,3 +1336,149 @@ table {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ProductList-pwiseQrcode {
|
||||||
|
height: max-content !important;
|
||||||
|
max-height: 70vh;
|
||||||
|
overflow: auto;
|
||||||
|
scrollbar-width: thin !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inputpwiseQR {
|
||||||
|
width: 150px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 6px;
|
||||||
|
border: 1px solid #e0e0e0;
|
||||||
|
background-color: #ffffff;
|
||||||
|
font-family: "Poppins";
|
||||||
|
font-weight: 500;
|
||||||
|
text-align: center;
|
||||||
|
padding: 10px;
|
||||||
|
outline: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.indicationInfo {
|
||||||
|
font-size: 12px;
|
||||||
|
color: #555555;
|
||||||
|
margin: 12px 0 6px 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
|
||||||
|
p {
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
background-color: #C00000;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
font-size: 12px;
|
||||||
|
color: #333;
|
||||||
|
font-family: "Poppins";
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.AddStockMinatain {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
background-color: #1292EE;
|
||||||
|
color: #fff;
|
||||||
|
font-family: "Poppins";
|
||||||
|
font-weight: 500;
|
||||||
|
padding: 2px 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.printtabs {
|
||||||
|
display: flex;
|
||||||
|
border-bottom: 2px solid #f0f0f0;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
gap: 0;
|
||||||
|
|
||||||
|
.tab-item {
|
||||||
|
padding: 6px 12px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.print-tabs {
|
||||||
|
display: flex;
|
||||||
|
border-bottom: 2px solid #f0f0f0;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
gap: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.count {
|
||||||
|
margin-left: 6px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-item {
|
||||||
|
display: flex;
|
||||||
|
padding: 12px 24px;
|
||||||
|
cursor: pointer;
|
||||||
|
border: 1px solid #d9d9d9;
|
||||||
|
border-bottom: none;
|
||||||
|
background: #fafafa;
|
||||||
|
color: #666;
|
||||||
|
font-weight: 500;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
position: relative;
|
||||||
|
border-radius: 6px 6px 0 0;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-item:first-child {
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-item:hover {
|
||||||
|
background: #f5f5f5;
|
||||||
|
color: #901D77;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-item.active {
|
||||||
|
display: flex;
|
||||||
|
background: #fff;
|
||||||
|
color: #901D77;
|
||||||
|
border-color: #901D77;
|
||||||
|
border-bottom: 2px solid #fff;
|
||||||
|
margin-bottom: -2px;
|
||||||
|
z-index: 1;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-item.active::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
bottom: -2px;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 2px;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ProductList-pwiseQrcode {
|
||||||
|
height: 70vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
scrollbar-width: thin;
|
||||||
|
/* Firefox */
|
||||||
|
scroll-behavior: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-red {
|
||||||
|
background-color: #ffe6e6 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-red td {
|
||||||
|
color: #c00000;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue