2026-02-06 12:56:38 +05:30
|
|
|
import { useSelector, useDispatch } from 'react-redux';
|
2026-01-27 18:27:29 +05:30
|
|
|
import {
|
2026-02-06 15:25:33 +05:30
|
|
|
ChangeTotalAmount,
|
|
|
|
|
globalExtraTotalAmount,
|
2026-02-06 12:56:38 +05:30
|
|
|
} from '../Features/ExteraCharges/ExtraCharges';
|
2026-01-27 18:27:29 +05:30
|
|
|
|
|
|
|
|
export const useUtilsComponent = () => {
|
2026-02-06 15:25:33 +05:30
|
|
|
const dispatch = useDispatch();
|
|
|
|
|
const extraCharges = useSelector(globalExtraTotalAmount);
|
2026-01-27 18:27:29 +05:30
|
|
|
|
2026-02-06 15:25:33 +05:30
|
|
|
const removeExtraCharge = (item) => {
|
|
|
|
|
const filtered = extraCharges?.filter((e) => e?.localId !== item?.localId);
|
|
|
|
|
dispatch(ChangeTotalAmount(filtered));
|
|
|
|
|
};
|
2026-01-27 18:27:29 +05:30
|
|
|
|
2026-02-06 15:25:33 +05:30
|
|
|
return {
|
|
|
|
|
removeExtraCharge,
|
|
|
|
|
};
|
2026-02-06 12:56:38 +05:30
|
|
|
};
|
|
|
|
|
export const generateBarcode = (code) => {
|
2026-02-06 15:25:33 +05:30
|
|
|
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;
|
|
|
|
|
}
|
2026-02-06 12:56:38 +05:30
|
|
|
};
|
|
|
|
|
export const generateQRCode = (QrandbarcodeDatas, code) => {
|
2026-02-06 15:25:33 +05:30
|
|
|
let Data = QrandbarcodeDatas?.find((e) => e?.key === code)?.url;
|
|
|
|
|
return Data;
|
2026-02-06 12:56:38 +05:30
|
|
|
};
|
|
|
|
|
export const generateQRCodeCopy = (QrandbarcodeDatas, code) => {
|
2026-02-06 15:25:33 +05:30
|
|
|
const found = QrandbarcodeDatas?.find((e) => e?.key === code);
|
2026-02-06 12:56:38 +05:30
|
|
|
|
2026-02-06 15:25:33 +05:30
|
|
|
const count = Number(found?.copiesCount);
|
|
|
|
|
return Number.isFinite(count) && count > 0 ? count : 0;
|
2026-02-06 12:56:38 +05:30
|
|
|
};
|
2026-02-06 15:25:33 +05:30
|
|
|
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
|
2026-01-27 18:27:29 +05:30
|
|
|
};
|