missed Function
This commit is contained in:
parent
63d682e151
commit
ea1ccac2e7
|
|
@ -158,7 +158,7 @@ const ProductList = () => {
|
|||
UomTypePreference?.some?.(
|
||||
(e) =>
|
||||
e?.PreferredSubCatName?.toLowerCase() ==
|
||||
item?.ConfigName?.toLowerCase() && e?.PreferredStatus == 'Y'
|
||||
item?.ConfigName?.toLowerCase() && e?.PreferredStatus == 'Y'
|
||||
)
|
||||
);
|
||||
|
||||
|
|
@ -965,19 +965,19 @@ const ProductList = () => {
|
|||
},
|
||||
...(brandColumn && subCategory
|
||||
? [
|
||||
{
|
||||
title: 'Brand',
|
||||
dataIndex: 'BrandName',
|
||||
key: 'BrandName',
|
||||
columnKey: 'BrandName',
|
||||
width: '100px',
|
||||
render: (text) => <a style={{ color: 'black' }}>{text}</a>,
|
||||
sorter: (a, b) => a?.BrandName?.localeCompare(b?.BrandName),
|
||||
sortOrder:
|
||||
sortedInfo.columnKey === 'BrandName' ? sortedInfo.order : null,
|
||||
ellipsis: true,
|
||||
},
|
||||
]
|
||||
{
|
||||
title: 'Brand',
|
||||
dataIndex: 'BrandName',
|
||||
key: 'BrandName',
|
||||
columnKey: 'BrandName',
|
||||
width: '100px',
|
||||
render: (text) => <a style={{ color: 'black' }}>{text}</a>,
|
||||
sorter: (a, b) => a?.BrandName?.localeCompare(b?.BrandName),
|
||||
sortOrder:
|
||||
sortedInfo.columnKey === 'BrandName' ? sortedInfo.order : null,
|
||||
ellipsis: true,
|
||||
},
|
||||
]
|
||||
: []),
|
||||
|
||||
{
|
||||
|
|
@ -996,127 +996,127 @@ const ProductList = () => {
|
|||
|
||||
...(qrCodeColumn
|
||||
? [
|
||||
{
|
||||
title: 'QRCode',
|
||||
dataIndex: 'QRCode',
|
||||
key: 'QRCode',
|
||||
width: '100px',
|
||||
align: 'center',
|
||||
render: (text) => (
|
||||
<a style={{ color: 'black' }}>{text ? text : '-'}</a>
|
||||
),
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
title: (
|
||||
<Tooltip title=" printing multiple QR codes">
|
||||
<Space>
|
||||
{MultiCode && (
|
||||
<input
|
||||
type="checkbox"
|
||||
checked={
|
||||
selectedRecords.length > 0 &&
|
||||
productData
|
||||
.filter((p) => p?.QRCode)
|
||||
.every((p) =>
|
||||
selectedRecords.some((r) => r.ProdId === p.ProdId)
|
||||
)
|
||||
}
|
||||
onChange={(e) => {
|
||||
const productsWithQR = productData.filter(
|
||||
(p) => p?.QRCode
|
||||
);
|
||||
if (e.target.checked) {
|
||||
const newSelections = productsWithQR.filter(
|
||||
(p) =>
|
||||
!selectedRecords.some(
|
||||
(r) => r.ProdId === p.ProdId
|
||||
)
|
||||
);
|
||||
setSelectedRecords((prev) => [
|
||||
...prev,
|
||||
...newSelections,
|
||||
]);
|
||||
// Create QR codes for newly selected products
|
||||
CreateQrcodesBatch(newSelections, true);
|
||||
} else {
|
||||
// Remove QR codes for deselected products
|
||||
CreateQrcodesBatch(productsWithQR, false);
|
||||
setSelectedRecords((prev) =>
|
||||
prev.filter(
|
||||
(r) =>
|
||||
!productsWithQR.some(
|
||||
(p) => p.ProdId === r.ProdId
|
||||
)
|
||||
{
|
||||
title: 'QRCode',
|
||||
dataIndex: 'QRCode',
|
||||
key: 'QRCode',
|
||||
width: '100px',
|
||||
align: 'center',
|
||||
render: (text) => (
|
||||
<a style={{ color: 'black' }}>{text ? text : '-'}</a>
|
||||
),
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
title: (
|
||||
<Tooltip title=" printing multiple QR codes">
|
||||
<Space>
|
||||
{MultiCode && (
|
||||
<input
|
||||
type="checkbox"
|
||||
checked={
|
||||
selectedRecords.length > 0 &&
|
||||
productData
|
||||
.filter((p) => p?.QRCode)
|
||||
.every((p) =>
|
||||
selectedRecords.some((r) => r.ProdId === p.ProdId)
|
||||
)
|
||||
}
|
||||
onChange={(e) => {
|
||||
const productsWithQR = productData.filter(
|
||||
(p) => p?.QRCode
|
||||
);
|
||||
if (e.target.checked) {
|
||||
const newSelections = productsWithQR.filter(
|
||||
(p) =>
|
||||
!selectedRecords.some(
|
||||
(r) => r.ProdId === p.ProdId
|
||||
)
|
||||
);
|
||||
}
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
<span>Print QRCode</span>
|
||||
<CheckSquareOutlined
|
||||
style={{
|
||||
fontSize: '18px',
|
||||
cursor: 'pointer',
|
||||
color: MultiCode ? '#1890ff' : '#666',
|
||||
}}
|
||||
onClick={() => {
|
||||
setMultiCode((prev) => {
|
||||
const newValue = !prev;
|
||||
if (!newValue) {
|
||||
setSelectedRecords([]);
|
||||
}
|
||||
|
||||
return newValue;
|
||||
});
|
||||
);
|
||||
setSelectedRecords((prev) => [
|
||||
...prev,
|
||||
...newSelections,
|
||||
]);
|
||||
// Create QR codes for newly selected products
|
||||
CreateQrcodesBatch(newSelections, true);
|
||||
} else {
|
||||
// Remove QR codes for deselected products
|
||||
CreateQrcodesBatch(productsWithQR, false);
|
||||
setSelectedRecords((prev) =>
|
||||
prev.filter(
|
||||
(r) =>
|
||||
!productsWithQR.some(
|
||||
(p) => p.ProdId === r.ProdId
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Space>
|
||||
</Tooltip>
|
||||
),
|
||||
key: 'Print',
|
||||
dataIndex: 'Print',
|
||||
width: '100px',
|
||||
align: 'center',
|
||||
render: (_, record) =>
|
||||
productData.length >= 1 ? (
|
||||
<Space size="middle">
|
||||
{MultiCode ? (
|
||||
record?.QRCode ? (
|
||||
<input
|
||||
type="checkbox"
|
||||
checked={selectedRecords.some(
|
||||
(r) => r.ProdId == record.ProdId
|
||||
)}
|
||||
onChange={(e) => {
|
||||
handleCheckboxChange(record, e.target.checked);
|
||||
CreateQrcode(
|
||||
e.target.checked,
|
||||
record.QRCode,
|
||||
record?.ProdName,
|
||||
record?.StockAvailable,
|
||||
record?.TotalBalanceQty
|
||||
);
|
||||
}}
|
||||
/>
|
||||
) : (
|
||||
'-'
|
||||
)
|
||||
) : record?.QRCode ? (
|
||||
<a>
|
||||
<PrinterFilled
|
||||
style={{ fontSize: '20px' }}
|
||||
onClick={() => Qrcode(record)}
|
||||
/>
|
||||
</a>
|
||||
)}
|
||||
<span>Print QRCode</span>
|
||||
<CheckSquareOutlined
|
||||
style={{
|
||||
fontSize: '18px',
|
||||
cursor: 'pointer',
|
||||
color: MultiCode ? '#1890ff' : '#666',
|
||||
}}
|
||||
onClick={() => {
|
||||
setMultiCode((prev) => {
|
||||
const newValue = !prev;
|
||||
if (!newValue) {
|
||||
setSelectedRecords([]);
|
||||
}
|
||||
|
||||
return newValue;
|
||||
});
|
||||
}}
|
||||
/>
|
||||
</Space>
|
||||
</Tooltip>
|
||||
),
|
||||
key: 'Print',
|
||||
dataIndex: 'Print',
|
||||
width: '100px',
|
||||
align: 'center',
|
||||
render: (_, record) =>
|
||||
productData.length >= 1 ? (
|
||||
<Space size="middle">
|
||||
{MultiCode ? (
|
||||
record?.QRCode ? (
|
||||
<input
|
||||
type="checkbox"
|
||||
checked={selectedRecords.some(
|
||||
(r) => r.ProdId == record.ProdId
|
||||
)}
|
||||
onChange={(e) => {
|
||||
handleCheckboxChange(record, e.target.checked);
|
||||
CreateQrcode(
|
||||
e.target.checked,
|
||||
record.QRCode,
|
||||
record?.ProdName,
|
||||
record?.StockAvailable,
|
||||
record?.TotalBalanceQty
|
||||
);
|
||||
}}
|
||||
/>
|
||||
) : (
|
||||
'-'
|
||||
)}
|
||||
</Space>
|
||||
) : null,
|
||||
},
|
||||
]
|
||||
)
|
||||
) : record?.QRCode ? (
|
||||
<a>
|
||||
<PrinterFilled
|
||||
style={{ fontSize: '20px' }}
|
||||
onClick={() => Qrcode(record)}
|
||||
/>
|
||||
</a>
|
||||
) : (
|
||||
'-'
|
||||
)}
|
||||
</Space>
|
||||
) : null,
|
||||
},
|
||||
]
|
||||
: []),
|
||||
|
||||
{
|
||||
|
|
@ -1134,11 +1134,11 @@ const ProductList = () => {
|
|||
style={{ color: '#1292EE' }}
|
||||
onClick={() =>
|
||||
UserType === 'Super Admin' ||
|
||||
(UserType === 'Super Admin User' &&
|
||||
SAAccessCommonMaster?.UpdateAccess === 'Y') ||
|
||||
(UserType === 'Employee' &&
|
||||
empData?.UpdateAccess === 'Y') ||
|
||||
UserType === 'Admin'
|
||||
(UserType === 'Super Admin User' &&
|
||||
SAAccessCommonMaster?.UpdateAccess === 'Y') ||
|
||||
(UserType === 'Employee' &&
|
||||
empData?.UpdateAccess === 'Y') ||
|
||||
UserType === 'Admin'
|
||||
? actionsFormatter(record, index)
|
||||
: null
|
||||
}
|
||||
|
|
@ -1155,11 +1155,11 @@ const ProductList = () => {
|
|||
}}
|
||||
onClick={() =>
|
||||
UserType === 'Super Admin' ||
|
||||
(UserType === 'Super Admin User' &&
|
||||
SAAccessCommonMaster?.DeleteAccess === 'Y') ||
|
||||
(UserType === 'Employee' &&
|
||||
empData?.DeleteAccess === 'Y') ||
|
||||
UserType === 'Admin'
|
||||
(UserType === 'Super Admin User' &&
|
||||
SAAccessCommonMaster?.DeleteAccess === 'Y') ||
|
||||
(UserType === 'Employee' &&
|
||||
empData?.DeleteAccess === 'Y') ||
|
||||
UserType === 'Admin'
|
||||
? statusFormatter(record)
|
||||
: null
|
||||
}
|
||||
|
|
@ -1171,11 +1171,11 @@ const ProductList = () => {
|
|||
}}
|
||||
onClick={() =>
|
||||
UserType === 'Super Admin' ||
|
||||
(UserType === 'Super Admin User' &&
|
||||
SAAccessCommonMaster?.DeleteAccess === 'Y') ||
|
||||
(UserType === 'Employee' &&
|
||||
empData?.DeleteAccess === 'Y') ||
|
||||
UserType === 'Admin'
|
||||
(UserType === 'Super Admin User' &&
|
||||
SAAccessCommonMaster?.DeleteAccess === 'Y') ||
|
||||
(UserType === 'Employee' &&
|
||||
empData?.DeleteAccess === 'Y') ||
|
||||
UserType === 'Admin'
|
||||
? statusFormatter(record)
|
||||
: null
|
||||
}
|
||||
|
|
@ -2641,7 +2641,7 @@ const ProductList = () => {
|
|||
generateQRCodeCopy={(code) =>
|
||||
generateQRCodeCopy(QrandbarcodeDatas, code)
|
||||
}
|
||||
generateCodeImage={generateCodeImage}
|
||||
generateCodeImage={(code, codeType = 'Q') => generateCodeImage(code, codeType, QrandbarcodeDatas) }
|
||||
imageTagBarcodeAndQR={imageTagBarcodeAndQR}
|
||||
dropdownValue={dropdownValue}
|
||||
barcodeTemplateDetails={barcodeTemplateDetails}
|
||||
|
|
@ -2747,7 +2747,7 @@ const ProductList = () => {
|
|||
}}
|
||||
onlineImage={onlineImage}
|
||||
ImageLink={rowRecord?.ProdLogo || null}
|
||||
updateImageUrl={imageModalRowIndex ? updateImageUrl : () => {}}
|
||||
updateImageUrl={imageModalRowIndex ? updateImageUrl : () => { }}
|
||||
handleClose={handleImageModalClose}
|
||||
/>
|
||||
<button
|
||||
|
|
|
|||
|
|
@ -1143,7 +1143,7 @@ const StockList = () => {
|
|||
: generateBarcode(currentCode)
|
||||
: !MultiCode
|
||||
? base64Image
|
||||
: generateQRCode(QrandbarcodeDatas, code)
|
||||
: generateQRCode(QrandbarcodeDatas, currentCode)
|
||||
}
|
||||
alt="Barcode"
|
||||
/>
|
||||
|
|
@ -1393,7 +1393,7 @@ const StockList = () => {
|
|||
generateQRCodeCopy={(code) =>
|
||||
generateQRCodeCopy(QrandbarcodeDatas, code)
|
||||
}
|
||||
generateCodeImage={generateCodeImage}
|
||||
generateCodeImage={(code, codeType = 'Q') => generateCodeImage(code, codeType, QrandbarcodeDatas)}
|
||||
imageTagBarcodeAndQR={imageTagBarcodeAndQR}
|
||||
dropdownValue={dropdownValue}
|
||||
barcodeTemplateDetails={barcodeTemplateDetails}
|
||||
|
|
|
|||
|
|
@ -1,52 +1,63 @@
|
|||
import { useSelector, useDispatch } from 'react-redux';
|
||||
import {
|
||||
ChangeTotalAmount,
|
||||
globalExtraTotalAmount,
|
||||
ChangeTotalAmount,
|
||||
globalExtraTotalAmount,
|
||||
} from '../Features/ExteraCharges/ExtraCharges';
|
||||
|
||||
export const useUtilsComponent = () => {
|
||||
const dispatch = useDispatch();
|
||||
const extraCharges = useSelector(globalExtraTotalAmount);
|
||||
const dispatch = useDispatch();
|
||||
const extraCharges = useSelector(globalExtraTotalAmount);
|
||||
|
||||
const removeExtraCharge = (item) => {
|
||||
const filtered = extraCharges?.filter((e) => e?.localId !== item?.localId);
|
||||
dispatch(ChangeTotalAmount(filtered));
|
||||
};
|
||||
const removeExtraCharge = (item) => {
|
||||
const filtered = extraCharges?.filter((e) => e?.localId !== item?.localId);
|
||||
dispatch(ChangeTotalAmount(filtered));
|
||||
};
|
||||
|
||||
return {
|
||||
removeExtraCharge,
|
||||
};
|
||||
return {
|
||||
removeExtraCharge,
|
||||
};
|
||||
};
|
||||
export const generateBarcode = (code) => {
|
||||
try {
|
||||
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
||||
JsBarcode(svg, code, {
|
||||
format: 'CODE128',
|
||||
displayValue: false,
|
||||
lineColor: '#030303',
|
||||
width: 2,
|
||||
height: 40,
|
||||
});
|
||||
const svgData = new XMLSerializer().serializeToString(svg);
|
||||
return `data:image/svg+xml;base64,${btoa(svgData)}`;
|
||||
} catch (error) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
||||
JsBarcode(svg, code, {
|
||||
format: 'CODE128',
|
||||
displayValue: false,
|
||||
lineColor: '#030303',
|
||||
width: 2,
|
||||
height: 40,
|
||||
});
|
||||
const svgData = new XMLSerializer().serializeToString(svg);
|
||||
return `data:image/svg+xml;base64,${btoa(svgData)}`;
|
||||
} catch (error) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
export const generateQRCode = (QrandbarcodeDatas, code) => {
|
||||
let Data = QrandbarcodeDatas?.find((e) => e?.key === code)?.url;
|
||||
return Data;
|
||||
let Data = QrandbarcodeDatas?.find((e) => e?.key === code)?.url;
|
||||
return Data;
|
||||
};
|
||||
export const generateQRCodeCopy = (QrandbarcodeDatas, code) => {
|
||||
const found = QrandbarcodeDatas?.find((e) => e?.key === code);
|
||||
const found = QrandbarcodeDatas?.find((e) => e?.key === code);
|
||||
|
||||
const count = Number(found?.copiesCount);
|
||||
return Number.isFinite(count) && count > 0 ? count : 0;
|
||||
const count = Number(found?.copiesCount);
|
||||
return Number.isFinite(count) && count > 0 ? count : 0;
|
||||
};
|
||||
export const generateCodeImage = (code, codeType = 'Q') => {
|
||||
if (codeType === 'B') {
|
||||
return generateBarcode(code);
|
||||
} else {
|
||||
return generateQRCode(QrandbarcodeDatas, code);
|
||||
}
|
||||
export const generateCodeImage = (code, codeType = 'Q', QrandbarcodeDatas) => {
|
||||
if (codeType === 'B') {
|
||||
return generateBarcode(code);
|
||||
} else {
|
||||
return generateQRCode(QrandbarcodeDatas, code);
|
||||
}
|
||||
};
|
||||
export const formatDateForAPI = (date) => {
|
||||
if (!date) return '';
|
||||
|
||||
const d = new Date(date);
|
||||
|
||||
const year = d.getFullYear();
|
||||
const month = String(d.getMonth() + 1).padStart(2, '0');
|
||||
const day = String(d.getDate()).padStart(2, '0');
|
||||
|
||||
return `${year}-${month}-${day}`; // YYYY-MM-DD
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue