Merge pull request 'fixed bugs' (#181) from issue-fix/temp into main

Reviewed-on: Pozomind/pozo-retail-app#181
This commit is contained in:
karthikalakshmi 2026-02-25 19:28:04 +05:30
commit bc8dafa167
25 changed files with 6935 additions and 6813 deletions

View File

@ -11,6 +11,7 @@ import '../../Styles/Product/Product.scss';
import { Messages } from '../Notifications/Messages.jsx';
import { isMobile } from 'react-device-detect';
import Camera from '../MobileComponent/Camera.jsx';
import useHasCamera from '../../utils/useHasCamera.js';
const allowedTypes = [
'image/jpeg',
'image/png',
@ -27,6 +28,7 @@ const CropUpload = ({
handleClose = () => { }
}) => {
const dispatch = useDispatch();
const hasCamera = useHasCamera();
const [messageType, setMessageType] = useState(null);
const [messageData, setMessageData] = useState(null);
const [fileList, setFileList] = useState([]);
@ -407,7 +409,7 @@ const CropUpload = ({
<Modal visible={previewVisible} onCancel={handleCancel} footer={null}>
<img alt="Preview" style={{ width: '100%' }} src={previewImage} />
</Modal>
{isMobile && fileList?.length == 0 && <>
{isMobile && fileList?.length == 0 && hasCamera && <>
<div style={{ textAlign: "center", margin: "6px 0", fontFamily: "Poppins", fontWeight: "500" }}>OR</div>
<Camera
handleCapture={async (e) => {

View File

@ -5,6 +5,8 @@ import { PlusOutlined } from '@ant-design/icons';
import { uploadImage } from '../../Features/upload/upload';
import Camera from '../MobileComponent/Camera';
import { isMobile } from 'react-device-detect';
import useHasCamera from '../../utils/useHasCamera';
const allowedTypes = [
'image/jpeg',
'image/png',
@ -27,6 +29,7 @@ const App = ({ singleImage, updateImageUrl, ImageLink = '', listType }) => {
const [previewImage, setPreviewImage] = useState('');
const [previewTitle, setPreviewTitle] = useState('');
const [fileList, setFileList] = useState([]);
const hasCamera = useHasCamera();
console.log(fileList, "fileList")
useEffect(() => {
@ -141,7 +144,7 @@ const App = ({ singleImage, updateImageUrl, ImageLink = '', listType }) => {
src={previewImage}
/>
</Modal>
{isMobile && fileList?.length == 0 && <>
{isMobile && fileList?.length == 0 && hasCamera && <>
<div style={{ textAlign: "center", margin: "6px 0", fontFamily: "Poppins", fontWeight: "500" }}>OR</div>
<Camera
handleCapture={(e) => {

View File

@ -268,8 +268,6 @@ const ComboEditQtyAndRate = (props) => {
}
const AddProductQuantity = async () => {
// debugger
let newPrice = editedPrice > 0 ? editedPrice : props.Productdata.OrderRate;
await dispatch(changeHoldOrderDtl(false));

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -106,6 +106,11 @@ const PrintA5Style11 = ({
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimateprintheader'
)?.SettingValue === 'Y';
const estimateTitle =
SettingData?.[0]?.SettingDtlDetails?.find(
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimatetitle'
)?.SettingValue === 'Y';
const currentDate = new Date();
console.log(FieldDetails, 'FieldDetails');
const day = currentDate.getDate().toString().padStart(2, '0');
@ -978,7 +983,7 @@ const PrintA5Style11 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -1959,7 +1964,7 @@ const PrintA5Style11 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -2552,7 +2557,7 @@ const PrintA5Style11 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -2593,7 +2598,7 @@ const PrintA5Style11 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -3141,7 +3146,7 @@ const PrintA5Style11 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -3182,7 +3187,7 @@ const PrintA5Style11 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>

View File

@ -30,6 +30,11 @@ const TaxInvoice = ({
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimateprintheader'
)?.SettingValue === 'Y';
const estimateTitle =
SettingData?.[0]?.SettingDtlDetails?.find(
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimatetitle'
)?.SettingValue === 'Y';
let BillName = printDatas?.PrintHdrName;
let companyColour = printDatas?.PrintHdrColor ?? '#00000';
@ -374,7 +379,7 @@ const TaxInvoice = ({
>
<div></div>
<h2 style={{ margin: '0', fontSize: '20px', fontWeight: '700' }}>
{table2Data?.OrderType === 'E'
{table2Data?.OrderType === 'E' && estimateTitle
? 'Estimate'
: BillName
? BillName

View File

@ -123,6 +123,12 @@ const PrintStyle1 = ({
setting?.SettingIdName?.toLowerCase() === 'estimateprintheader'
)?.SettingValue === 'Y';
const estimateTitle =
SettingData?.[0]?.SettingDtlDetails?.find(
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimatetitle'
)?.SettingValue === 'Y';
const keysLength = Object.keys(table2Data ?? {}).length;
const paymentTypeUPI = PaymentStatus?.find(
(ps) => ps.PaymentTypeName === 'UPI'
@ -479,7 +485,7 @@ const PrintStyle1 = ({
Mobile : +91{' '}
{GlobaldummyData ? '986XXXXXXX' : table2Data?.BrMobile}
</div>}
{table2Data?.OrderType === 'E' && (
{table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
fontSize: '14px',
@ -521,7 +527,7 @@ const PrintStyle1 = ({
</div>
)}
{!estimatePrintHeader && table2Data?.OrderType === 'E' && (
{!estimatePrintHeader && table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
fontSize: '14px',
@ -1267,7 +1273,7 @@ const PrintStyle1 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -2131,7 +2137,7 @@ const PrintStyle1 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px', }}>
@ -2960,7 +2966,7 @@ const PrintStyle1 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px', }}>
@ -3727,7 +3733,7 @@ const PrintStyle1 = ({
Mobile : +91{' '}
{GlobaldummyData ? '986XXXXXXX' : table2Data?.BrMobile}
</div>}
{table2Data?.OrderType === 'E' && (
{table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
fontSize: '14px',
@ -3768,7 +3774,7 @@ const PrintStyle1 = ({
</div>
)}
{!estimatePrintHeader && table2Data?.OrderType === 'E' && (
{!estimatePrintHeader && table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
fontSize: '14px',
@ -4446,7 +4452,7 @@ const PrintStyle1 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px', }}>

View File

@ -110,6 +110,11 @@ const PrintStyle11 = ({
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimateprintheader'
)?.SettingValue === 'Y';
const estimateTitle =
SettingData?.[0]?.SettingDtlDetails?.find(
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimatetitle'
)?.SettingValue === 'Y';
const bookingTypePreference = appPreferences?.find(
(preference) => preference?.PreferredCatName === 'Booking Type'
)?.PreferenceCatDetails;
@ -481,7 +486,7 @@ const PrintStyle11 = ({
</div>
</div>
)}
{!estimatePrintHeader && table2Data?.OrderType === 'E' && (
{!estimatePrintHeader && table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{ textTransform: 'uppercase', textAlign: 'center' }}
>
@ -1830,7 +1835,7 @@ const PrintStyle11 = ({
? '-'
: '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div
@ -2784,7 +2789,7 @@ const PrintStyle11 = ({
? '-'
: '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div
@ -3132,7 +3137,7 @@ const PrintStyle11 = ({
</div>
</div>
)}
{!estimatePrintHeader && table2Data?.OrderType === 'E' && (
{!estimatePrintHeader && table2Data?.OrderType === 'E' && estimateTitle && (
<div style={{ textTransform: 'uppercase', textAlign: 'center' }}>
Estimate{' '}
{SalesModePref?.SettingValue == 'Y' &&
@ -4293,7 +4298,7 @@ const PrintStyle11 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div

View File

@ -109,6 +109,11 @@ const Printstyle12 = ({
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimateprintheader'
)?.SettingValue === 'Y';
const estimateTitle =
SettingData?.[0]?.SettingDtlDetails?.find(
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimatetitle'
)?.SettingValue === 'Y';
const bookingTypePreference = appPreferences?.find(
(preference) => preference?.PreferredCatName === 'Booking Type'
)?.PreferenceCatDetails;
@ -632,7 +637,7 @@ const Printstyle12 = ({
{table2Data?.SalesTableLinkDetails?.[0]?.WaiterName}
</div>
)}
{table2Data?.OrderType === 'E' && (
{table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
fontSize: 'clamp(0.75rem, 2.5vw, 1rem)',
@ -668,7 +673,7 @@ const Printstyle12 = ({
) : null}
</div>
)}
{!estimatePrintHeader && table2Data?.OrderType === 'E' && (
{!estimatePrintHeader && table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
fontSize: 'clamp(0.75rem, 2.5vw, 1rem)',
@ -1827,7 +1832,7 @@ const Printstyle12 = ({
? '-'
: '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div
@ -2815,7 +2820,7 @@ const Printstyle12 = ({
? '-'
: '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div
@ -3284,7 +3289,7 @@ const Printstyle12 = ({
{table2Data?.SalesTableLinkDetails?.[0]?.WaiterName}
</div>
)}
{table2Data?.OrderType === 'E' && (
{table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
fontSize: 'clamp(0.75rem, 2.5vw, 1rem)',
@ -3317,7 +3322,7 @@ const Printstyle12 = ({
) : null}
</div>
)}
{!estimatePrintHeader && table2Data?.OrderType === 'E' && (
{!estimatePrintHeader && table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
fontSize: 'clamp(0.75rem, 2.5vw, 1rem)',
@ -4382,7 +4387,7 @@ const Printstyle12 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div

View File

@ -94,7 +94,7 @@ const Printstyle2 = ({
const paymentTypeUPI = PaymentStatus?.find(
(ps) => ps.PaymentTypeName === 'UPI'
);
const SelectedHeaderColor = useSelector(GlobalSelectedPrintHeaderColor);
const SelectedHeaderColor = useSelector(GlobalSelectedPrintHeaderColor);
console.log(Qrcodet, 'Qrcodet', paymentTypeUPI);
const GlobalSignature = useSelector(GlobalprintSignature);
const GlobaltermsAndConditions = useSelector(GlobalprinttermsAndConditions);
@ -112,6 +112,11 @@ const Printstyle2 = ({
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimateprintheader'
)?.SettingValue === 'Y';
const estimateTitle =
SettingData?.[0]?.SettingDtlDetails?.find(
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimatetitle'
)?.SettingValue === 'Y';
const bookingTypePreference = appPreferences?.find(
(preference) => preference?.PreferredCatName === 'Booking Type'
)?.PreferenceCatDetails;
@ -413,7 +418,7 @@ const Printstyle2 = ({
fontWeight: '600',
}}
>
<div
<div
style={{
fontSize: '18px',
fontWeight: '600',
@ -450,7 +455,7 @@ const Printstyle2 = ({
</div>
)}
{table2Data?.OrderType === 'E' && (
{table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
fontWeight: '600',
@ -1717,7 +1722,7 @@ const Printstyle2 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -2589,7 +2594,7 @@ const Printstyle2 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -3039,7 +3044,7 @@ const Printstyle2 = ({
fontWeight: '600',
}}
>
<div
<div
style={{
fontSize: '18px',
fontWeight: '600',
@ -3076,7 +3081,7 @@ const Printstyle2 = ({
</div>
)}
{table2Data?.OrderType === 'E' && (
{table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
fontWeight: '600',
@ -4147,7 +4152,7 @@ const Printstyle2 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>

View File

@ -80,7 +80,12 @@ const PrintStyle3 = ({ index, totalQuantityFilter, Date1, CashierName, totalQuan
const GlobalLogo = useSelector(GlobalprintLogo);
const GlobalCredit = useSelector(GlobalprintCredit);
const SettingData = useSelector(PreferenceData);
const estimatePrintHeader = SettingData?.[0]?.SettingDtlDetails?.find(setting => setting?.SettingIdName?.toLowerCase() === 'estimateprintheader')?.SettingValue === 'Y'
const estimatePrintHeader = SettingData?.[0]?.SettingDtlDetails?.find(setting => setting?.SettingIdName?.toLowerCase() === 'estimateprintheader')?.SettingValue === 'Y';
const estimateTitle =
SettingData?.[0]?.SettingDtlDetails?.find(
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimatetitle'
)?.SettingValue === 'Y';
const bookingTypePreference = appPreferences?.find((preference) => preference?.PreferredCatName === 'Booking Type')?.PreferenceCatDetails
const dinePreference = bookingTypePreference?.find((type) => type?.PreferredSubCatName?.toLowerCase() === "dine in" && type?.PreferredStatus === 'Y')
const takeAwayPreference = bookingTypePreference?.find((type) => type?.PreferredSubCatName?.toLowerCase() === "take away" && type?.PreferredStatus === 'Y')
@ -223,13 +228,13 @@ const PrintStyle3 = ({ index, totalQuantityFilter, Date1, CashierName, totalQuan
{table2Data?.BrGSTIN && <div>GST NO :{GlobaldummyData ? '334bhbsagbysfgbfgbu' : table2Data?.BrGSTIN},</div>}
<div style={{ fontWeight: '600' }}> Mobile : +91 {GlobaldummyData ? '986XXXXXXX' : table2Data?.BrMobile}</div>
{table2Data?.OrderType === "E" && <div style={{ fontSize: "14px", margin: "2px 0 0 0", padding: 0, fontWeight: 600 }}>Estimate Bill {SalesModePref?.SettingValue == 'Y' && `(${table2Data?.SalesMode ? table2Data?.SalesMode : 'R'})`}</div>}
{table2Data?.OrderType === "E" && estimateTitle && <div style={{ fontSize: "14px", margin: "2px 0 0 0", padding: 0, fontWeight: 600 }}>Estimate Bill {SalesModePref?.SettingValue == 'Y' && `(${table2Data?.SalesMode ? table2Data?.SalesMode : 'R'})`}</div>}
{table2Data?.OrderType === "E" ? "" : <div style={{ fontSize: "14px", margin: "2px 0 0 0", padding: 0, fontWeight: 600 }}>{GlobaldummyData ? 'Cash Bill' : BillName ? BillName : PaymentStatusSuccess?.length === 1 ? PaymentStatusSuccess?.[0]?.PaymentTypeName : ""} {SalesModePref?.SettingValue == 'Y' && `(${table2Data?.SalesMode ? table2Data?.SalesMode : 'R'})`} </div>}
</div>
</div>)}
{(!estimatePrintHeader && table2Data?.OrderType === "E") && <div style={{ fontSize: "14px", margin: "2px 0 0 0", textAlign: 'center', padding: 0, fontWeight: 600 }}>Estimate Bill {SalesModePref?.SettingValue == 'Y' && `(${table2Data?.SalesMode ? table2Data?.SalesMode : 'R'})`}</div>}
{(!estimatePrintHeader && table2Data?.OrderType === "E" && estimateTitle) && <div style={{ fontSize: "14px", margin: "2px 0 0 0", textAlign: 'center', padding: 0, fontWeight: 600 }}>Estimate Bill {SalesModePref?.SettingValue == 'Y' && `(${table2Data?.SalesMode ? table2Data?.SalesMode : 'R'})`}</div>}
<hr className="PrintStyle3-print-dottline" />
<div className="PrintStyle3-print-ordr-dtls">
@ -537,7 +542,7 @@ const PrintStyle3 = ({ index, totalQuantityFilter, Date1, CashierName, totalQuan
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -936,7 +941,7 @@ const PrintStyle3 = ({ index, totalQuantityFilter, Date1, CashierName, totalQuan
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -1150,12 +1155,12 @@ const PrintStyle3 = ({ index, totalQuantityFilter, Date1, CashierName, totalQuan
{table2Data?.BrGSTIN && <div>GST NO :{GlobaldummyData ? '334bhbsagbysfgbfgbu' : table2Data?.BrGSTIN},</div>}
<div style={{ fontWeight: '600' }}> Mobile : +91 {GlobaldummyData ? '986XXXXXXX' : table2Data?.BrMobile}</div>
{table2Data?.OrderType === "E" && <div style={{ fontSize: "14px", margin: "2px 0 0 0", padding: 0, fontWeight: 600 }}>Estimate Bill {SalesModePref?.SettingValue == 'Y' && `(${table2Data?.SalesMode ? table2Data?.SalesMode : 'R'})`}</div>}
{table2Data?.OrderType === "E" && estimateTitle && <div style={{ fontSize: "14px", margin: "2px 0 0 0", padding: 0, fontWeight: 600 }}>Estimate Bill {SalesModePref?.SettingValue == 'Y' && `(${table2Data?.SalesMode ? table2Data?.SalesMode : 'R'})`}</div>}
{table2Data?.OrderType === "E" ? "" : <div style={{ fontSize: "14px", margin: "2px 0 0 0", padding: 0, fontWeight: 600 }}>{GlobaldummyData ? GlobalBilltext ? GlobalBilltext : "Cash" + ' Bill' : BillName ? BillName : PaymentStatusSuccess?.length === 1 ? PaymentStatusSuccess?.[0]?.PaymentTypeName + ' Bill' : ""} {SalesModePref?.SettingValue == 'Y' && `(${table2Data?.SalesMode ? table2Data?.SalesMode : 'R'})`}</div>}
</div>
</div>)}
{(!estimatePrintHeader && table2Data?.OrderType === "E") && <div style={{ fontSize: "14px", margin: "2px 0 0 0", padding: 0, fontWeight: 600 }}>Estimate Bill {SalesModePref?.SettingValue == 'Y' && `(${table2Data?.SalesMode ? table2Data?.SalesMode : 'R'})`}</div>}
{(!estimatePrintHeader && table2Data?.OrderType === "E" && estimateTitle) && <div style={{ fontSize: "14px", margin: "2px 0 0 0", padding: 0, fontWeight: 600 }}>Estimate Bill {SalesModePref?.SettingValue == 'Y' && `(${table2Data?.SalesMode ? table2Data?.SalesMode : 'R'})`}</div>}
<hr className="PrintStyle3-print-dottline" />
<div className="PrintStyle3-print-ordr-dtls">
<div style={{ lineheight: '50px' }}>
@ -1454,7 +1459,7 @@ const PrintStyle3 = ({ index, totalQuantityFilter, Date1, CashierName, totalQuan
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>

View File

@ -119,6 +119,11 @@ const Printstyle4 = ({
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimateprintheader'
)?.SettingValue === 'Y';
const estimateTitle =
SettingData?.[0]?.SettingDtlDetails?.find(
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimatetitle'
)?.SettingValue === 'Y';
const bookingTypePreference = appPreferences?.find(
(preference) => preference?.PreferredCatName === 'Booking Type'
)?.PreferenceCatDetails;
@ -428,7 +433,7 @@ const Printstyle4 = ({
fontWeight: '600',
width: '100%',
textAlign: 'center',
color: SelectedHeaderColor,
color: SelectedHeaderColor,
}}
>
{GlobaldummyData ? 'XYZ Shop' : table2Data?.BrName}{' '}
@ -495,7 +500,7 @@ const Printstyle4 = ({
{/* <div>{GlobaldummyData ? formattedDate : Date1}</div> */}
</div>
{table2Data?.OrderType === 'E' && (
{table2Data?.OrderType === 'E' && estimateTitle && (
<div
className="PrintStyle4-FourthSpan"
style={{ textTransform: 'uppercase', fontSize: '12px' }}
@ -533,21 +538,21 @@ const Printstyle4 = ({
>
{(TakeawayData?.length > 0 || GlobaldummyData) && (
<>
{takeAwayPreference &&
<div
style={{
display: 'flex',
width: '100%',
justifyContent: 'center',
alignItems: 'center',
fontSize: '12px',
fontWeight: '500',
fontFamily: 'Poppins',
}}
>
TakeAway
</div>
}
{takeAwayPreference &&
<div
style={{
display: 'flex',
width: '100%',
justifyContent: 'center',
alignItems: 'center',
fontSize: '12px',
fontWeight: '500',
fontFamily: 'Poppins',
}}
>
TakeAway
</div>
}
<div className="PrintStyle4-print-tableMaster">
<table className="PrintStyle4-print-table">
<thead>
@ -572,15 +577,15 @@ const Printstyle4 = ({
</th>
)
: Quantity && (
<th
style={{
width: '30px',
textAlign: 'right',
}}
>
{WeightasKg ? 'Qty/Kg' : 'Qty'}
</th>
)}
<th
style={{
width: '30px',
textAlign: 'right',
}}
>
{WeightasKg ? 'Qty/Kg' : 'Qty'}
</th>
)}
{GlobaldummyData
? GlobalHsnCode && (
<th
@ -1682,7 +1687,7 @@ const Printstyle4 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -2644,7 +2649,7 @@ const Printstyle4 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -3196,7 +3201,7 @@ const Printstyle4 = ({
</div>
</div>
{table2Data?.OrderType === 'E' && (
{table2Data?.OrderType === 'E' && estimateTitle && (
<div
className="PrintStyle4-FourthSpan"
style={{ textTransform: 'uppercase', fontSize: '12px' }}
@ -3230,21 +3235,21 @@ const Printstyle4 = ({
<hr className="PrintStyle4-print-dottline" />
{(TakeawayData?.length > 0 || GlobaldummyData) && (
<>
{takeAwayPreference &&
<div
style={{
display: 'flex',
width: '100%',
justifyContent: 'center',
alignItems: 'center',
fontSize: '12px',
fontWeight: '600',
fontFamily: 'Poppins',
}}
>
Take Away
</div>
}
{takeAwayPreference &&
<div
style={{
display: 'flex',
width: '100%',
justifyContent: 'center',
alignItems: 'center',
fontSize: '12px',
fontWeight: '600',
fontFamily: 'Poppins',
}}
>
Take Away
</div>
}
<div className="PrintStyle4-print-tableMaster">
<table className="PrintStyle4-print-table">
<thead>
@ -4398,7 +4403,7 @@ const Printstyle4 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>

View File

@ -108,6 +108,11 @@ const PrintStyle5 = ({
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimateprintheader'
)?.SettingValue === 'Y';
const estimateTitle =
SettingData?.[0]?.SettingDtlDetails?.find(
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimatetitle'
)?.SettingValue === 'Y';
const bookingTypePreference = appPreferences?.find(
(preference) => preference?.PreferredCatName === 'Booking Type'
)?.PreferenceCatDetails;
@ -429,7 +434,7 @@ const PrintStyle5 = ({
? '1234567890'
: table2Data?.BrMobile}{' '}
</div>
{table2Data?.OrderType === 'E' && (
{table2Data?.OrderType === 'E' && estimateTitle && (
<div style={{ textTransform: 'uppercase' }}>
Estimate{' '}
{SalesModePref?.SettingValue == 'Y' &&
@ -455,7 +460,7 @@ const PrintStyle5 = ({
<hr />
</div>
)}
{!estimatePrintHeader && table2Data?.OrderType === 'E' && (
{!estimatePrintHeader && table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{ textTransform: 'uppercase', textAlign: 'center' }}
>
@ -1499,7 +1504,7 @@ const PrintStyle5 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -2240,7 +2245,7 @@ const PrintStyle5 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -2721,7 +2726,7 @@ const PrintStyle5 = ({
Mobile :
{GlobaldummyData ? '1234567890' : table2Data?.BrMobile}{' '}
</div>
{table2Data?.OrderType === 'E' && (
{table2Data?.OrderType === 'E' && estimateTitle && (
<div style={{ textTransform: 'uppercase' }}>
Estimate{' '}
{SalesModePref?.SettingValue == 'Y' &&
@ -2749,7 +2754,7 @@ const PrintStyle5 = ({
<hr />
</div>
)}
{!estimatePrintHeader && table2Data?.OrderType === 'E' && (
{!estimatePrintHeader && table2Data?.OrderType === 'E' && estimateTitle && (
<div style={{ textTransform: 'uppercase', textAlign: 'center' }}>
Estimate{' '}
{SalesModePref?.SettingValue == 'Y' &&
@ -3696,7 +3701,7 @@ const PrintStyle5 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>

View File

@ -110,6 +110,11 @@ const Printstyle6 = ({
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimateprintheader'
)?.SettingValue === 'Y';
const estimateTitle =
SettingData?.[0]?.SettingDtlDetails?.find(
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimatetitle'
)?.SettingValue === 'Y';
const bookingTypePreference = appPreferences?.find(
(preference) => preference?.PreferredCatName === 'Booking Type'
)?.PreferenceCatDetails;
@ -441,7 +446,7 @@ const Printstyle6 = ({
Mobile : {table2Data?.BrMobile}
</div>}
{table2Data?.OrderType === 'E' && (
{table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
textTransform: 'uppercase',
@ -478,7 +483,7 @@ const Printstyle6 = ({
)}
</div>
)}
{!estimatePrintHeader && table2Data?.OrderType === 'E' && (
{!estimatePrintHeader && table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
textTransform: 'uppercase',
@ -1696,7 +1701,7 @@ const Printstyle6 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -2698,7 +2703,7 @@ const Printstyle6 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>
@ -3297,7 +3302,7 @@ const Printstyle6 = ({
Mobile : {table2Data?.BrMobile}
</div>}
{table2Data?.OrderType === 'E' && (
{table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
textTransform: 'uppercase',
@ -3337,7 +3342,7 @@ const Printstyle6 = ({
</div>
)}
{!estimatePrintHeader && table2Data?.OrderType === 'E' && (
{!estimatePrintHeader && table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
textTransform: 'uppercase',
@ -4375,7 +4380,7 @@ const Printstyle6 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '4px' }}>

View File

@ -105,6 +105,11 @@ const PrintStyle7 = ({
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimateprintheader'
)?.SettingValue === 'Y';
const estimateTitle =
SettingData?.[0]?.SettingDtlDetails?.find(
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimatetitle'
)?.SettingValue === 'Y';
const bookingTypePreference = appPreferences?.find(
(preference) => preference?.PreferredCatName === 'Booking Type'
)?.PreferenceCatDetails;
@ -453,7 +458,7 @@ const PrintStyle7 = ({
: '') + table2Data?.AddressDetails?.[0]?.Zip
: '')}
</div>
{table2Data?.OrderType === 'E' && (
{table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
fontSize: '12px',
@ -490,7 +495,7 @@ const PrintStyle7 = ({
)}
</div>
)}
{!estimatePrintHeader && table2Data?.OrderType === 'E' && (
{!estimatePrintHeader && table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
fontSize: '12px',
@ -1465,7 +1470,7 @@ const PrintStyle7 = ({
? '-'
: '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div
@ -2372,7 +2377,7 @@ const PrintStyle7 = ({
? '-'
: '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div
@ -2908,7 +2913,7 @@ const PrintStyle7 = ({
: '') + table2Data?.AddressDetails?.[0]?.Zip
: '')}
</div>
{table2Data?.OrderType === 'E' && (
{table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
fontSize: '12px',
@ -2947,7 +2952,7 @@ const PrintStyle7 = ({
)}
</div>
)}
{!estimatePrintHeader && table2Data?.OrderType === 'E' && (
{!estimatePrintHeader && table2Data?.OrderType === 'E' && estimateTitle && (
<div
style={{
fontSize: '12px',
@ -3858,7 +3863,7 @@ const PrintStyle7 = ({
<span>
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs((lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
(lastTransaction?.AfterAdjustment ?? 0)).toFixed(2)}
</span>
</div>
<div

View File

@ -33,8 +33,6 @@ import { getCommonAppPreference } from '../../Features/BrachLogin/BranchLogin.js
import { AiOutlineDownCircle, AiOutlineUpCircle } from 'react-icons/ai';
// import TextArea from 'antd/es/input/TextArea.js';
import CropUpload from '../../Components/Forms/CropUpload.jsx';
import { isMobile } from 'react-device-detect';
import Camera from '../../Components/MobileComponent/Camera.jsx';
const { Panel } = Collapse;
const { TextArea } = Input;
const subDirectory = import.meta.env.BASE_URL;

View File

@ -96,7 +96,7 @@ const PaymentDetails = ({ formType }) => {
},
{
name: 'PaymentDetails',
name: 'Payment Details',
link: `${subDirectory}setting/payment-details`,
},
{

View File

@ -81,7 +81,7 @@ const PaymentDetailsList = () => {
},
{
name: 'PaymentDetails',
name: 'Payment Details',
link: `${subDirectory}setting/payment-details`,
},
];

View File

@ -102,7 +102,10 @@ const PreferenceList = () => {
(k) => allSettingsMap[k]?.value === 'Y'
),
mobilea4: allSettingsMap['mobilea4']?.value === 'Y',
estimateprintheader: allSettingsMap['estimateprintheader']?.value === 'Y',
estimateSettings: [
...(allSettingsMap['estimateprintheader']?.value === 'Y' ? ['estimateprintheader'] : []),
...(allSettingsMap['estimatetitle']?.value === 'Y' ? ['estimatetitle'] : []),
],
scanlayout: allSettingsMap['scanlayout']?.value === 'Y',
verifyproduct: allSettingsMap['verifyproduct']?.value === 'Y',
customisedbillnumber: allSettingsMap['customisedbillnumber']?.value === 'Y',
@ -304,7 +307,6 @@ const PreferenceList = () => {
tokenonly: values.tokenonly,
allproductindividualtoken: values.allproductindividualtoken,
mobilea4: values.mobilea4,
estimateprintheader: values.estimateprintheader,
scanlayout: values.scanlayout,
verifyproduct: values.verifyproduct,
customisedbillnumber: values.customisedbillnumber,
@ -321,6 +323,8 @@ const PreferenceList = () => {
dinein: values.enabledModules,
estimation: values.enabledModules,
parking: values.enabledFeatures,
estimateprintheader: values.estimateSettings,
estimatetitle: values.estimateSettings,
offer: values.enabledFeatures,
whatsapp: values.pdfSendOptions,
sms: values.pdfSendOptions,
@ -653,8 +657,8 @@ const PreferenceList = () => {
</Radio.Group>
</Form.Item>
<Form.Item
name="maxquantity"
<Form.Item
name="maxquantity"
label="Maximum quantity allowed:"
rules={[
{ required: true, message: 'Please enter maximum quantity' },
@ -783,10 +787,22 @@ const PreferenceList = () => {
'mobilea4',
'Prefer printing in A4/A5 on mobile?'
)}
{renderCheckbox(
'estimateprintheader',
'Do you want to include a header when printing Estimate bills?'
)}
{(allSettingsMap['estimateprintheader'] !== undefined ||
allSettingsMap['estimatetitle'] !== undefined) && (
<Form.Item
name="estimateSettings"
label="Estimate Print Settings :"
>
<Checkbox.Group>
{allSettingsMap['estimateprintheader'] !== undefined && (
<Checkbox value="estimateprintheader">Show shop header (Name, Address, GST)</Checkbox>
)}
{allSettingsMap['estimatetitle'] !== undefined && (
<Checkbox value="estimatetitle">Show Estimate (R/W) title</Checkbox>
)}
</Checkbox.Group>
</Form.Item>
)}
</div>
<div className="PreferencesBTN">
<Buttons

View File

@ -133,6 +133,11 @@ const PaymentPdfBooking = ({
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimateprintheader'
)?.SettingValue === 'Y';
const estimateTitle =
SettingData?.[0]?.SettingDtlDetails?.find(
(setting) =>
setting?.SettingIdName?.toLowerCase() === 'estimatetitle'
)?.SettingValue === 'Y';
const bookingTypePreference = appPreferences?.find(
(preference) => preference?.PreferredCatName === 'Booking Type'
)?.PreferenceCatDetails;
@ -402,8 +407,8 @@ const PaymentPdfBooking = ({
{table2Data?.AddressDetails?.[0]?.City &&
table2Data?.AddressDetails?.[0]?.Zip &&
table2Data?.AddressDetails?.[0]?.City +
'- ' +
table2Data?.AddressDetails?.[0]?.Zip}
'- ' +
table2Data?.AddressDetails?.[0]?.Zip}
</p>
)}
@ -435,7 +440,7 @@ const PaymentPdfBooking = ({
</div>
)}
<div className="Re-print-top">
{table2Data?.OrderType === 'E' ? (
{table2Data?.OrderType === 'E' && estimateTitle ? (
<div
style={{
display: 'flex',
@ -581,27 +586,27 @@ const PaymentPdfBooking = ({
&nbsp;
{item?.ProductIdentifierDtls?.length > 0
? item?.ProductIdentifierDtls.filter(
(items) =>
items.SerialNumber &&
items.SerialNumber !== ''
).map((a, i) => (
<div key={i}>{a.SerialNumber}</div>
))
(items) =>
items.SerialNumber &&
items.SerialNumber !== ''
).map((a, i) => (
<div key={i}>{a.SerialNumber}</div>
))
: ''}
{item?.ProductIdentifierDtls?.length > 0
? item?.ProductIdentifierDtls.filter(
(id) => id.IMEI1 !== '' || id.IMEI2 !== ''
).map((id, i) => {
const imei1 = id.IMEI1 || '';
const imei2 = id.IMEI2 || '';
return (
<div key={i}>
{[imei1, imei2]
.filter(Boolean)
.join(',')}
</div>
);
})
(id) => id.IMEI1 !== '' || id.IMEI2 !== ''
).map((id, i) => {
const imei1 = id.IMEI1 || '';
const imei2 = id.IMEI2 || '';
return (
<div key={i}>
{[imei1, imei2]
.filter(Boolean)
.join(',')}
</div>
);
})
: ''}
</span>
</div>
@ -618,25 +623,25 @@ const PaymentPdfBooking = ({
&nbsp;
{item?.ProductIdentifierDtls?.length > 0
? item?.ProductIdentifierDtls.filter(
(items) =>
items.SerialNumber &&
items.SerialNumber !== ''
).map((a, i) => (
<div key={i}>{a.SerialNumber}</div>
))
(items) =>
items.SerialNumber &&
items.SerialNumber !== ''
).map((a, i) => (
<div key={i}>{a.SerialNumber}</div>
))
: ''}
{item?.ProductIdentifierDtls?.length > 0
? item?.ProductIdentifierDtls.filter(
(id) => id.IMEI1 !== '' || id.IMEI2 !== ''
).map((id, i) => {
const imei1 = id.IMEI1 || '';
const imei2 = id.IMEI2 || '';
return (
<div key={i}>
{[imei1, imei2].filter(Boolean).join(',')}
</div>
);
})
(id) => id.IMEI1 !== '' || id.IMEI2 !== ''
).map((id, i) => {
const imei1 = id.IMEI1 || '';
const imei2 = id.IMEI2 || '';
return (
<div key={i}>
{[imei1, imei2].filter(Boolean).join(',')}
</div>
);
})
: ''}
</span>
)}
@ -1252,7 +1257,7 @@ const PaymentPdfBooking = ({
{lastTransaction?.AdjustmentType === 'REFUND' ? '-' : '+'}
{Math.abs(
(lastTransaction?.BeforeAdjustment ?? 0) -
(lastTransaction?.AfterAdjustment ?? 0)
(lastTransaction?.AfterAdjustment ?? 0)
).toFixed(2)}
</span>
</div>

19
src/utils/useHasCamera.js Normal file
View File

@ -0,0 +1,19 @@
import { useState, useEffect } from "react";
export default function useHasCamera() {
const [hasCamera, setHasCamera] = useState(null);
useEffect(() => {
async function detectCamera() {
try {
const devices = await navigator.mediaDevices.enumerateDevices();
setHasCamera(devices.some(d => d.kind === "videoinput"));
} catch {
setHasCamera(false);
}
}
detectCamera();
}, []);
return hasCamera;
}