Merge pull request 'qty-shortcut-key' (#108) from qty-shortcut-key into main
Reviewed-on: Pozomind/pozo-retail-app#108
This commit is contained in:
commit
fa70173fc1
|
|
@ -274,21 +274,44 @@ const BSBillingTable1 = () => {
|
||||||
setshortKeyMethod(method);
|
setshortKeyMethod(method);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// const handleKeyDown = (event) => {
|
||||||
|
// if (!event.ctrlKey) return;
|
||||||
|
|
||||||
|
// const key = event.key.toLowerCase();
|
||||||
|
|
||||||
|
// if (key === 'q') {
|
||||||
|
// event.preventDefault();
|
||||||
|
// handleShortcut('qty');
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (key === 'e') {
|
||||||
|
// event.preventDefault();
|
||||||
|
// handleShortcut('price');
|
||||||
|
// }
|
||||||
|
// };
|
||||||
const handleKeyDown = (event) => {
|
const handleKeyDown = (event) => {
|
||||||
if (!event.ctrlKey) return;
|
const key = event.key.toLowerCase();
|
||||||
|
// 👉 ALT + P → Open Edit Total Amount
|
||||||
const key = event.key.toLowerCase();
|
if (event.altKey && key === 'p') {
|
||||||
|
event.preventDefault();
|
||||||
if (key === 'q') {
|
if (tableData?.length > 0) {
|
||||||
event.preventDefault();
|
OpenEditTotalAmount();
|
||||||
handleShortcut('qty');
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 👉 CTRL shortcuts
|
||||||
|
if (!event.ctrlKey) return;
|
||||||
|
|
||||||
if (key === 'e') {
|
if (key === 'q') {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
handleShortcut('price');
|
handleShortcut('qty');
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
if (key === 'e') {
|
||||||
|
event.preventDefault();
|
||||||
|
handleShortcut('price');
|
||||||
|
}
|
||||||
|
};
|
||||||
window.addEventListener('keydown', handleKeyDown);
|
window.addEventListener('keydown', handleKeyDown);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
|
|
||||||
|
|
@ -228,22 +228,29 @@ const BSBillingTable3 = () => {
|
||||||
handleEditQuantity(item);
|
handleEditQuantity(item);
|
||||||
setshortKeyMethod(method);
|
setshortKeyMethod(method);
|
||||||
};
|
};
|
||||||
|
const handleKeyDown = (event) => {
|
||||||
const handleKeyDown = (event) => {
|
const key = event.key.toLowerCase();
|
||||||
if (!event.ctrlKey) return;
|
// 👉 ALT + P → Open Edit Total Amount
|
||||||
|
if (event.altKey && key === 'p') {
|
||||||
const key = event.key.toLowerCase();
|
event.preventDefault();
|
||||||
|
if (tableData?.length > 0) {
|
||||||
if (key === 'q') {
|
OpenEditTotalAmount();
|
||||||
event.preventDefault();
|
|
||||||
handleShortcut('qty');
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 👉 CTRL shortcuts
|
||||||
|
if (!event.ctrlKey) return;
|
||||||
|
|
||||||
if (key === 'e') {
|
if (key === 'q') {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
handleShortcut('price');
|
handleShortcut('qty');
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
if (key === 'e') {
|
||||||
|
event.preventDefault();
|
||||||
|
handleShortcut('price');
|
||||||
|
}
|
||||||
|
};
|
||||||
window.addEventListener('keydown', handleKeyDown);
|
window.addEventListener('keydown', handleKeyDown);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
|
|
||||||
|
|
@ -281,22 +281,29 @@ const BSBillingTable4 = () => {
|
||||||
setshortKeyMethod(method);
|
setshortKeyMethod(method);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleKeyDown = (event) => {
|
const handleKeyDown = (event) => {
|
||||||
if (!preferenceshortcutkey) return;
|
const key = event.key.toLowerCase();
|
||||||
if (!event.ctrlKey) return;
|
// 👉 ALT + P → Open Edit Total Amount
|
||||||
|
if (event.altKey && key === 'p') {
|
||||||
const key = event.key.toLowerCase();
|
event.preventDefault();
|
||||||
|
if (tableData?.length > 0) {
|
||||||
if (key === 'q') {
|
OpenEditTotalAmount();
|
||||||
event.preventDefault();
|
|
||||||
handleShortcut('qty');
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 👉 CTRL shortcuts
|
||||||
|
if (!event.ctrlKey) return;
|
||||||
|
|
||||||
if (key === 'e') {
|
if (key === 'q') {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
handleShortcut('price');
|
handleShortcut('qty');
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
if (key === 'e') {
|
||||||
|
event.preventDefault();
|
||||||
|
handleShortcut('price');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
window.addEventListener('keydown', handleKeyDown);
|
window.addEventListener('keydown', handleKeyDown);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1927,22 +1927,29 @@ const BsBill = () => {
|
||||||
setshortKeyMethod(method);
|
setshortKeyMethod(method);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleKeyDown = (event) => {
|
const handleKeyDown = (event) => {
|
||||||
if (!preferenceshortcutkey) return;
|
const key = event.key.toLowerCase();
|
||||||
if (!event.ctrlKey) return;
|
// 👉 ALT + P → Open Edit Total Amount
|
||||||
|
if (event.altKey && key === 'p') {
|
||||||
const key = event.key.toLowerCase();
|
event.preventDefault();
|
||||||
|
if (TableData?.length > 0) {
|
||||||
if (key === 'q') {
|
OpenEditTotalAmount();
|
||||||
event.preventDefault();
|
|
||||||
handleShortcut('qty');
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 👉 CTRL shortcuts
|
||||||
|
if (!event.ctrlKey) return;
|
||||||
|
|
||||||
if (key === 'e') {
|
if (key === 'q') {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
handleShortcut('price');
|
handleShortcut('qty');
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
if (key === 'e') {
|
||||||
|
event.preventDefault();
|
||||||
|
handleShortcut('price');
|
||||||
|
}
|
||||||
|
};
|
||||||
window.addEventListener('keydown', handleKeyDown);
|
window.addEventListener('keydown', handleKeyDown);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
|
|
||||||
|
|
@ -255,24 +255,29 @@ const BSBillingTable6 = () => {
|
||||||
setshortKeyMethod(method);
|
setshortKeyMethod(method);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleKeyDown = (event) => {
|
const handleKeyDown = (event) => {
|
||||||
|
const key = event.key.toLowerCase();
|
||||||
if (!preferenceshortcutkey) return
|
// 👉 ALT + P → Open Edit Total Amount
|
||||||
if (!event.ctrlKey) return;
|
if (event.altKey && key === 'p') {
|
||||||
|
event.preventDefault();
|
||||||
const key = event.key.toLowerCase();
|
if (tableData?.length > 0) {
|
||||||
|
OpenEditTotalAmount();
|
||||||
if (key === 'q') {
|
|
||||||
event.preventDefault();
|
|
||||||
handleShortcut('qty');
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 👉 CTRL shortcuts
|
||||||
|
if (!event.ctrlKey) return;
|
||||||
|
|
||||||
if (key === 'e') {
|
if (key === 'q') {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
handleShortcut('price');
|
handleShortcut('qty');
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
|
if (key === 'e') {
|
||||||
|
event.preventDefault();
|
||||||
|
handleShortcut('price');
|
||||||
|
}
|
||||||
|
};
|
||||||
window.addEventListener('keydown', handleKeyDown);
|
window.addEventListener('keydown', handleKeyDown);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
|
|
||||||
|
|
@ -225,35 +225,6 @@ const BSBillingTable7 = () => {
|
||||||
setPreviousdataLength(PreviousOrderLength);
|
setPreviousdataLength(PreviousOrderLength);
|
||||||
}, [PreviousOrderLength]);
|
}, [PreviousOrderLength]);
|
||||||
|
|
||||||
// useEffect(() => {
|
|
||||||
// const handleKeyDown = (event) => {
|
|
||||||
// // Ctrl + Q
|
|
||||||
// if (event.ctrlKey && event.key.toLowerCase() === 'q') {
|
|
||||||
// event.preventDefault();
|
|
||||||
|
|
||||||
// const getItem = (data = []) => {
|
|
||||||
// if (!data.length) return null;
|
|
||||||
// return BillOrderPre === 'Y' ? data[0] : data[data.length - 1];
|
|
||||||
// };
|
|
||||||
|
|
||||||
// let item = null;
|
|
||||||
// if (tableDataTakeAway?.length > 0) {
|
|
||||||
// item = getItem(tableDataTakeAway);
|
|
||||||
// } else if (tableDataDinein?.length > 0) {
|
|
||||||
// item = getItem(tableDataDinein);
|
|
||||||
// }
|
|
||||||
// if (item) {
|
|
||||||
// handleEditQuantity(item);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
// window.addEventListener('keydown', handleKeyDown);
|
|
||||||
|
|
||||||
// return () => {
|
|
||||||
// window.removeEventListener('keydown', handleKeyDown);
|
|
||||||
// };
|
|
||||||
// }, [tableDataTakeAway, tableDataDinein, BillOrderPre]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!preferenceshortcutkey) return;
|
if (!preferenceshortcutkey) return;
|
||||||
const getSelectedItem = () => {
|
const getSelectedItem = () => {
|
||||||
|
|
@ -279,21 +250,25 @@ const BSBillingTable7 = () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleKeyDown = (event) => {
|
const handleKeyDown = (event) => {
|
||||||
if (!preferenceshortcutkey) return;
|
const key = event.key.toLowerCase();
|
||||||
if (!event.ctrlKey) return;
|
// 👉 ALT + P → Open Edit Total Amount
|
||||||
|
if (event.altKey && key === 'p') {
|
||||||
const key = event.key.toLowerCase();
|
event.preventDefault();
|
||||||
|
if (tableData?.length > 0) {
|
||||||
if (key === 'q') {
|
OpenEditTotalAmount();
|
||||||
event.preventDefault();
|
|
||||||
handleShortcut('qty');
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
if (key === 'e') {
|
}
|
||||||
event.preventDefault();
|
if (!event.ctrlKey) return;
|
||||||
handleShortcut('price');
|
if (key === 'q') {
|
||||||
}
|
event.preventDefault();
|
||||||
};
|
handleShortcut('qty');
|
||||||
|
}
|
||||||
|
if (key === 'e') {
|
||||||
|
event.preventDefault();
|
||||||
|
handleShortcut('price');
|
||||||
|
}
|
||||||
|
};
|
||||||
window.addEventListener('keydown', handleKeyDown);
|
window.addEventListener('keydown', handleKeyDown);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,10 @@ const BSEditTotalAmt = (props) => {
|
||||||
console.log(OverAllSales, 'OverAllEstimateOverAllEstimate');
|
console.log(OverAllSales, 'OverAllEstimateOverAllEstimate');
|
||||||
const formRef = useRef(null);
|
const formRef = useRef(null);
|
||||||
const formEstRef = useRef(null);
|
const formEstRef = useRef(null);
|
||||||
|
const salesDiscInputRef = useRef(null);
|
||||||
|
const salesMoreOptInputRef = useRef(null);
|
||||||
|
const estDiscInputRef = useRef(null);
|
||||||
|
const estMoreOptInputRef = useRef(null);
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
const [messageType, setMessageType] = useState(null);
|
const [messageType, setMessageType] = useState(null);
|
||||||
const [messageData, setMessageData] = useState(null);
|
const [messageData, setMessageData] = useState(null);
|
||||||
|
|
@ -87,6 +91,29 @@ const BSEditTotalAmt = (props) => {
|
||||||
return () => clearInterval(timer);
|
return () => clearInterval(timer);
|
||||||
}, [timeLeft]);
|
}, [timeLeft]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const focusInput = (ref) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
const inputElement = ref.current?.querySelector('input');
|
||||||
|
inputElement?.focus();
|
||||||
|
}, 100);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (SalesData?.length > 0) {
|
||||||
|
if (MoreOpt) {
|
||||||
|
focusInput(salesMoreOptInputRef);
|
||||||
|
} else if (EditTotalAmt) {
|
||||||
|
focusInput(salesDiscInputRef);
|
||||||
|
}
|
||||||
|
} else if (EstimateData?.length > 0 && EditTotalAmt) {
|
||||||
|
if (ESTMoreOpt) {
|
||||||
|
focusInput(estMoreOptInputRef);
|
||||||
|
} else {
|
||||||
|
focusInput(estDiscInputRef);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [EditTotalAmt, MoreOpt, ESTMoreOpt, SalesData, EstimateData]);
|
||||||
|
|
||||||
const handleOtpChange = (index, value) => {
|
const handleOtpChange = (index, value) => {
|
||||||
// Allow empty value for clearing
|
// Allow empty value for clearing
|
||||||
if (value === '' || value.match(/^[0-9]$/)) {
|
if (value === '' || value.match(/^[0-9]$/)) {
|
||||||
|
|
@ -201,6 +228,10 @@ const BSEditTotalAmt = (props) => {
|
||||||
setMessageData('Please Give less than value for sell price');
|
setMessageData('Please Give less than value for sell price');
|
||||||
setESTSellingPrice(0);
|
setESTSellingPrice(0);
|
||||||
formEstRef?.current?.resetFields();
|
formEstRef?.current?.resetFields();
|
||||||
|
setTimeout(() => {
|
||||||
|
const inputElement = estDiscInputRef.current?.querySelector('input');
|
||||||
|
inputElement?.focus();
|
||||||
|
}, 100);
|
||||||
} else {
|
} else {
|
||||||
setESTSellingPrice(inputValue);
|
setESTSellingPrice(inputValue);
|
||||||
// Check if entered amount is 0 or equals total amount
|
// Check if entered amount is 0 or equals total amount
|
||||||
|
|
@ -214,6 +245,13 @@ const BSEditTotalAmt = (props) => {
|
||||||
handleOk();
|
handleOk();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleEstKeyDown = (e) => {
|
||||||
|
if (e.key === 'Enter') {
|
||||||
|
e.preventDefault();
|
||||||
|
SetTotalDiscount();
|
||||||
|
}
|
||||||
|
};
|
||||||
const SalesChangefun = (e) => {
|
const SalesChangefun = (e) => {
|
||||||
const inputValue = e.target.value.trim();
|
const inputValue = e.target.value.trim();
|
||||||
console.log(e, e.target.value, 'SalesChangefun');
|
console.log(e, e.target.value, 'SalesChangefun');
|
||||||
|
|
@ -223,6 +261,10 @@ const BSEditTotalAmt = (props) => {
|
||||||
setMessageData('Please Give less than value for sell price');
|
setMessageData('Please Give less than value for sell price');
|
||||||
setSellingPrice(0);
|
setSellingPrice(0);
|
||||||
formRef?.current?.resetFields();
|
formRef?.current?.resetFields();
|
||||||
|
setTimeout(() => {
|
||||||
|
const inputElement = salesDiscInputRef.current?.querySelector('input');
|
||||||
|
inputElement?.focus();
|
||||||
|
}, 100);
|
||||||
} else {
|
} else {
|
||||||
setSellingPrice(inputValue);
|
setSellingPrice(inputValue);
|
||||||
// SalesTotalAmount()
|
// SalesTotalAmount()
|
||||||
|
|
@ -232,6 +274,13 @@ const BSEditTotalAmt = (props) => {
|
||||||
// setSalesDiscAmount(0)
|
// setSalesDiscAmount(0)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleSalesKeyDown = (e) => {
|
||||||
|
if (e.key === 'Enter') {
|
||||||
|
e.preventDefault();
|
||||||
|
SetTotalDiscount();
|
||||||
|
}
|
||||||
|
};
|
||||||
const orderscolumns = [
|
const orderscolumns = [
|
||||||
{
|
{
|
||||||
title: 'Sl.No',
|
title: 'Sl.No',
|
||||||
|
|
@ -347,6 +396,10 @@ const BSEditTotalAmt = (props) => {
|
||||||
setSalesDiscAmount(0);
|
setSalesDiscAmount(0);
|
||||||
// setFinalTotalAmt()
|
// setFinalTotalAmt()
|
||||||
formRef.current?.resetFields();
|
formRef.current?.resetFields();
|
||||||
|
setTimeout(() => {
|
||||||
|
const inputElement = salesMoreOptInputRef.current?.querySelector('input');
|
||||||
|
inputElement?.focus();
|
||||||
|
}, 100);
|
||||||
};
|
};
|
||||||
const onEstPercentageSelectionChange = (data) => {
|
const onEstPercentageSelectionChange = (data) => {
|
||||||
setESTPercentageSelection(data);
|
setESTPercentageSelection(data);
|
||||||
|
|
@ -354,6 +407,10 @@ const BSEditTotalAmt = (props) => {
|
||||||
setEstDiscAmount(0);
|
setEstDiscAmount(0);
|
||||||
// setFinalTotalAmt()
|
// setFinalTotalAmt()
|
||||||
formEstRef.current?.resetFields();
|
formEstRef.current?.resetFields();
|
||||||
|
setTimeout(() => {
|
||||||
|
const inputElement = estMoreOptInputRef.current?.querySelector('input');
|
||||||
|
inputElement?.focus();
|
||||||
|
}, 100);
|
||||||
};
|
};
|
||||||
|
|
||||||
const PriceChangefun = (data) => {
|
const PriceChangefun = (data) => {
|
||||||
|
|
@ -375,6 +432,10 @@ const BSEditTotalAmt = (props) => {
|
||||||
setSalesDiscAmount(0);
|
setSalesDiscAmount(0);
|
||||||
// setNewPrice1(0)
|
// setNewPrice1(0)
|
||||||
formRef.current?.resetFields();
|
formRef.current?.resetFields();
|
||||||
|
setTimeout(() => {
|
||||||
|
const inputElement = salesMoreOptInputRef.current?.querySelector('input');
|
||||||
|
inputElement?.focus();
|
||||||
|
}, 100);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Percentage mode
|
// Percentage mode
|
||||||
|
|
@ -391,6 +452,10 @@ const BSEditTotalAmt = (props) => {
|
||||||
setMessageData('Please Give less than or equal to 100');
|
setMessageData('Please Give less than or equal to 100');
|
||||||
setSalesDiscAmount(0);
|
setSalesDiscAmount(0);
|
||||||
formRef.current?.resetFields();
|
formRef.current?.resetFields();
|
||||||
|
setTimeout(() => {
|
||||||
|
const inputElement = salesMoreOptInputRef.current?.querySelector('input');
|
||||||
|
inputElement?.focus();
|
||||||
|
}, 100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -400,6 +465,13 @@ const BSEditTotalAmt = (props) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handlePriceKeyDown = (e) => {
|
||||||
|
if (e.key === 'Enter') {
|
||||||
|
e.preventDefault();
|
||||||
|
SetTotalDiscount();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const PriceChangefunEst = (data) => {
|
const PriceChangefunEst = (data) => {
|
||||||
console.log(data?.target.value, PercentageSelection, 'datadata');
|
console.log(data?.target.value, PercentageSelection, 'datadata');
|
||||||
if (data?.target.value) {
|
if (data?.target.value) {
|
||||||
|
|
@ -418,6 +490,10 @@ const BSEditTotalAmt = (props) => {
|
||||||
setMessageData('Please Give less than value for sell price');
|
setMessageData('Please Give less than value for sell price');
|
||||||
setEstDiscAmount(0);
|
setEstDiscAmount(0);
|
||||||
formEstRef.current?.resetFields();
|
formEstRef.current?.resetFields();
|
||||||
|
setTimeout(() => {
|
||||||
|
const inputElement = estMoreOptInputRef.current?.querySelector('input');
|
||||||
|
inputElement?.focus();
|
||||||
|
}, 100);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Percentage mode
|
// Percentage mode
|
||||||
|
|
@ -434,6 +510,10 @@ const BSEditTotalAmt = (props) => {
|
||||||
setMessageData('Please Give less than or equal to 100');
|
setMessageData('Please Give less than or equal to 100');
|
||||||
setEstDiscAmount(0);
|
setEstDiscAmount(0);
|
||||||
formEstRef.current?.resetFields();
|
formEstRef.current?.resetFields();
|
||||||
|
setTimeout(() => {
|
||||||
|
const inputElement = estMoreOptInputRef.current?.querySelector('input');
|
||||||
|
inputElement?.focus();
|
||||||
|
}, 100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -444,6 +524,13 @@ const BSEditTotalAmt = (props) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handlePriceEstKeyDown = (e) => {
|
||||||
|
if (e.key === 'Enter') {
|
||||||
|
e.preventDefault();
|
||||||
|
SetTotalDiscount();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const moreOptions = () => {
|
const moreOptions = () => {
|
||||||
setMoreOpt((prev) => !prev);
|
setMoreOpt((prev) => !prev);
|
||||||
setSalesDiscAmount(0);
|
setSalesDiscAmount(0);
|
||||||
|
|
@ -535,15 +622,18 @@ const BSEditTotalAmt = (props) => {
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputField
|
<div ref={salesDiscInputRef}>
|
||||||
field="SalesDisc"
|
<InputField
|
||||||
name="SalesDisc"
|
field="SalesDisc"
|
||||||
fieldState={true}
|
name="SalesDisc"
|
||||||
fieldApi={true}
|
fieldState={true}
|
||||||
autocomplete="off"
|
fieldApi={true}
|
||||||
onChange={(e) => SalesChangefun(e)}
|
autocomplete="off"
|
||||||
maxLength={8}
|
onChange={(e) => SalesChangefun(e)}
|
||||||
/>
|
onKeyDown={(e) => handleSalesKeyDown(e)}
|
||||||
|
maxLength={8}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</Form>{' '}
|
</Form>{' '}
|
||||||
</td>
|
</td>
|
||||||
|
|
@ -593,18 +683,21 @@ const BSEditTotalAmt = (props) => {
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputField
|
<div ref={salesMoreOptInputRef}>
|
||||||
field="SellPrice"
|
<InputField
|
||||||
name="SellPrice"
|
field="SellPrice"
|
||||||
// value={NewPrice1}
|
name="SellPrice"
|
||||||
label="Reduction"
|
// value={NewPrice1}
|
||||||
fieldState={true}
|
label="Reduction"
|
||||||
fieldApi={true}
|
fieldState={true}
|
||||||
// id="error2"
|
fieldApi={true}
|
||||||
autocomplete="off"
|
// id="error2"
|
||||||
onChange={(e) => PriceChangefun(e)}
|
autocomplete="off"
|
||||||
// isOnChange={formType == "edit" || formRef.current?.getFieldsValue()?.CustName ? true : false}
|
onChange={(e) => PriceChangefun(e)}
|
||||||
/>
|
onKeyDown={(e) => handlePriceKeyDown(e)}
|
||||||
|
// isOnChange={formType == "edit" || formRef.current?.getFieldsValue()?.CustName ? true : false}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
{/* <input type="text"
|
{/* <input type="text"
|
||||||
onChange={(e)=>PriceChangefun(e)}
|
onChange={(e)=>PriceChangefun(e)}
|
||||||
|
|
@ -684,16 +777,19 @@ const BSEditTotalAmt = (props) => {
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputField
|
<div ref={estDiscInputRef}>
|
||||||
field="ESTSalesDisc"
|
<InputField
|
||||||
name="ESTSalesDisc"
|
field="ESTSalesDisc"
|
||||||
fieldState={true}
|
name="ESTSalesDisc"
|
||||||
fieldApi={true}
|
fieldState={true}
|
||||||
// id="error2"
|
fieldApi={true}
|
||||||
autocomplete="off"
|
// id="error2"
|
||||||
onChange={(e) => EstChangefun(e)}
|
autocomplete="off"
|
||||||
maxLength={8}
|
onChange={(e) => EstChangefun(e)}
|
||||||
/>
|
onKeyDown={(e) => handleEstKeyDown(e)}
|
||||||
|
maxLength={8}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</Form>
|
</Form>
|
||||||
</td>
|
</td>
|
||||||
|
|
@ -742,18 +838,21 @@ const BSEditTotalAmt = (props) => {
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<InputField
|
<div ref={estMoreOptInputRef}>
|
||||||
field="SellPrice"
|
<InputField
|
||||||
name="ESTSellingPrice"
|
field="SellPrice"
|
||||||
// value={NewPrice1}
|
name="ESTSellingPrice"
|
||||||
label="Reduction"
|
// value={NewPrice1}
|
||||||
fieldState={true}
|
label="Reduction"
|
||||||
fieldApi={true}
|
fieldState={true}
|
||||||
// id="error2"
|
fieldApi={true}
|
||||||
autocomplete="off"
|
// id="error2"
|
||||||
onChange={(e) => PriceChangefunEst(e)}
|
autocomplete="off"
|
||||||
// isOnChange={formType == "edit" || formRef.current?.getFieldsValue()?.CustName ? true : false}
|
onChange={(e) => PriceChangefunEst(e)}
|
||||||
/>
|
onKeyDown={(e) => handlePriceEstKeyDown(e)}
|
||||||
|
// isOnChange={formType == "edit" || formRef.current?.getFieldsValue()?.CustName ? true : false}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
{/* <input type="text"
|
{/* <input type="text"
|
||||||
onChange={(e)=>PriceChangefun(e)}
|
onChange={(e)=>PriceChangefun(e)}
|
||||||
|
|
|
||||||
|
|
@ -148,13 +148,13 @@ const ComboSalesBillTable = () => {
|
||||||
OrderType === 'Hold'
|
OrderType === 'Hold'
|
||||||
? tableData?.filter((a, b) => a.BookingTypeName === 'TakeAway')
|
? tableData?.filter((a, b) => a.BookingTypeName === 'TakeAway')
|
||||||
: tableData?.filter(
|
: tableData?.filter(
|
||||||
(a, b) => a.BookingTypeName === 'TakeAway' && !a?.SalesId
|
(a, b) => a.BookingTypeName === 'TakeAway' && !a?.SalesId
|
||||||
);
|
);
|
||||||
const OldtableDataTakeAway =
|
const OldtableDataTakeAway =
|
||||||
OrderType != 'Hold'
|
OrderType != 'Hold'
|
||||||
? tableData?.filter(
|
? tableData?.filter(
|
||||||
(a, b) => a.BookingTypeName === 'TakeAway' && a?.SalesId
|
(a, b) => a.BookingTypeName === 'TakeAway' && a?.SalesId
|
||||||
)
|
)
|
||||||
: [];
|
: [];
|
||||||
|
|
||||||
const [EditQuantity, setEditQuantity] = useState(false);
|
const [EditQuantity, setEditQuantity] = useState(false);
|
||||||
|
|
@ -249,27 +249,54 @@ const ComboSalesBillTable = () => {
|
||||||
// );
|
// );
|
||||||
// setBillOrderPre(BillOrder?.SettingValue);
|
// setBillOrderPre(BillOrder?.SettingValue);
|
||||||
// }, [preferenceDatas]);
|
// }, [preferenceDatas]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
const getSelectedItem = () => {
|
||||||
|
const getItem = (data = []) => {
|
||||||
|
if (!data.length) return null;
|
||||||
|
return BillOrderPre === 'Y' ? data[0] : data[data.length - 1];
|
||||||
|
};
|
||||||
|
|
||||||
|
if (tableDataTakeAway?.length > 0) {
|
||||||
|
return getItem(tableDataTakeAway);
|
||||||
|
} else if (tableDataDinein?.length > 0) {
|
||||||
|
return getItem(tableDataDinein);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleShortcut = (method) => {
|
||||||
|
const item = getSelectedItem();
|
||||||
|
if (!item) return;
|
||||||
|
|
||||||
|
handleEditQuantity(item);
|
||||||
|
setshortKeyMethod(method);
|
||||||
|
};
|
||||||
|
|
||||||
const handleKeyDown = (event) => {
|
const handleKeyDown = (event) => {
|
||||||
if (event.ctrlKey && event.key.toLowerCase() === 'q') {
|
const key = event.key.toLowerCase();
|
||||||
|
// 👉 ALT + P → Open Edit Total Amount
|
||||||
|
if (event.altKey && key === 'p') {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const getItem = (data = []) => {
|
if (tableData?.length > 0) {
|
||||||
if (!data.length) return null;
|
OpenEditTotalAmount();
|
||||||
return BillOrderPre === 'Y' ? data[0] : data[data.length - 1];
|
|
||||||
};
|
|
||||||
let item = null;
|
|
||||||
if (tableDataTakeAway?.length > 0) {
|
|
||||||
item = getItem(tableDataTakeAway);
|
|
||||||
} else if (tableDataDinein?.length > 0) {
|
|
||||||
item = getItem(tableDataDinein);
|
|
||||||
}
|
|
||||||
if (item) {
|
|
||||||
handleEditQuantity(item);
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 👉 CTRL shortcuts
|
||||||
|
if (!event.ctrlKey) return;
|
||||||
|
|
||||||
|
if (key === 'q') {
|
||||||
|
event.preventDefault();
|
||||||
|
handleShortcut('qty');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key === 'e') {
|
||||||
|
event.preventDefault();
|
||||||
|
handleShortcut('price');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
window.addEventListener('keydown', handleKeyDown);
|
window.addEventListener('keydown', handleKeyDown);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
window.removeEventListener('keydown', handleKeyDown);
|
window.removeEventListener('keydown', handleKeyDown);
|
||||||
};
|
};
|
||||||
|
|
@ -1122,9 +1149,9 @@ const ComboSalesBillTable = () => {
|
||||||
)?.map((item, idx) =>
|
)?.map((item, idx) =>
|
||||||
idx === 0
|
idx === 0
|
||||||
? {
|
? {
|
||||||
...item,
|
...item,
|
||||||
FreeQty,
|
FreeQty,
|
||||||
}
|
}
|
||||||
: item
|
: item
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
@ -2246,20 +2273,20 @@ const ComboSalesBillTable = () => {
|
||||||
tableDataDinein?.length >= PreviousdataLength
|
tableDataDinein?.length >= PreviousdataLength
|
||||||
? 'wheat'
|
? 'wheat'
|
||||||
: BookingType !== 'Dine In' &&
|
: BookingType !== 'Dine In' &&
|
||||||
triggerAnimation &&
|
triggerAnimation &&
|
||||||
OldtableDataTakeAway?.length + index === 0 &&
|
OldtableDataTakeAway?.length + index === 0 &&
|
||||||
tableDataDinein?.length >= PreviousdataLength &&
|
tableDataDinein?.length >= PreviousdataLength &&
|
||||||
!HoldOrderDtl &&
|
!HoldOrderDtl &&
|
||||||
!UnpaidData
|
!UnpaidData
|
||||||
? 'wheat'
|
? 'wheat'
|
||||||
: 'inherit'
|
: 'inherit'
|
||||||
: 'none',
|
: 'none',
|
||||||
background: row?.SalesId
|
background: row?.SalesId
|
||||||
? 'rgb(243, 248, 213)'
|
? 'rgb(243, 248, 213)'
|
||||||
: GlobEstBooking === 'ParEst' &&
|
: GlobEstBooking === 'ParEst' &&
|
||||||
GlobProdwisedata?.includes(
|
GlobProdwisedata?.includes(
|
||||||
row?.InwardDtlId + ' ' + row?.BookingTypeName
|
row?.InwardDtlId + ' ' + row?.BookingTypeName
|
||||||
)
|
)
|
||||||
? '#b2d1f7'
|
? '#b2d1f7'
|
||||||
: (OldtableDataTakeAway?.length + index) % 2 === 0
|
: (OldtableDataTakeAway?.length + index) % 2 === 0
|
||||||
? 'white'
|
? 'white'
|
||||||
|
|
@ -2294,37 +2321,37 @@ const ComboSalesBillTable = () => {
|
||||||
{/* Product Name / Item */}
|
{/* Product Name / Item */}
|
||||||
{(item.OptionName === 'Item' ||
|
{(item.OptionName === 'Item' ||
|
||||||
item.OptionName === 'Product Name') && (
|
item.OptionName === 'Product Name') && (
|
||||||
<td
|
<td
|
||||||
key={`prod-${index}`}
|
key={`prod-${index}`}
|
||||||
className="productNameTd"
|
className="productNameTd"
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
row.FullProductIdentifierDtls?.length > 0 ||
|
row.FullProductIdentifierDtls?.length > 0 ||
|
||||||
row.ProductIdentifierDtls?.length > 0
|
row.ProductIdentifierDtls?.length > 0
|
||||||
? handleImeiDetails(row)
|
? handleImeiDetails(row)
|
||||||
: editField && handleEditQuantity(row)
|
: editField && handleEditQuantity(row)
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
{row?.Type !== 'OS' ? row.ProdName : row.ServiceName}
|
{row?.Type !== 'OS' ? row.ProdName : row.ServiceName}
|
||||||
{row?.BrandName ? ` ${row.BrandName}` : ''}
|
{row?.BrandName ? ` ${row.BrandName}` : ''}
|
||||||
{row?.Type !== 'C' && (
|
{row?.Type !== 'C' && (
|
||||||
<p className="Tbl3-Variant">
|
<p className="Tbl3-Variant">
|
||||||
{/* {row?.ProdVariantName} {row?.Size} {row?.UomName} */}
|
{/* {row?.ProdVariantName} {row?.Size} {row?.UomName} */}
|
||||||
(
|
(
|
||||||
{!row?.ProdVariantName?.toLowerCase()?.includes(
|
{!row?.ProdVariantName?.toLowerCase()?.includes(
|
||||||
'variant'
|
'variant'
|
||||||
) && <span>{row?.ProdVariantName} </span>}
|
) && <span>{row?.ProdVariantName} </span>}
|
||||||
{row?.Size}
|
{row?.Size}
|
||||||
{row?.SinglePc == 'Y' ? 'PCS' : row?.UomName})
|
{row?.SinglePc == 'Y' ? 'PCS' : row?.UomName})
|
||||||
</p>
|
|
||||||
)}
|
|
||||||
{row?.Type === 'C' &&
|
|
||||||
row.ProdDetail?.map((prod, idx) => (
|
|
||||||
<p key={idx}>
|
|
||||||
{prod.ProdName} - {prod.Size} {prod.UomName}
|
|
||||||
</p>
|
</p>
|
||||||
))}
|
)}
|
||||||
</td>
|
{row?.Type === 'C' &&
|
||||||
)}
|
row.ProdDetail?.map((prod, idx) => (
|
||||||
|
<p key={idx}>
|
||||||
|
{prod.ProdName} - {prod.Size} {prod.UomName}
|
||||||
|
</p>
|
||||||
|
))}
|
||||||
|
</td>
|
||||||
|
)}
|
||||||
|
|
||||||
{/* Barcode */}
|
{/* Barcode */}
|
||||||
{item.OptionName === 'Barcode' && (
|
{item.OptionName === 'Barcode' && (
|
||||||
|
|
@ -2351,7 +2378,7 @@ const ComboSalesBillTable = () => {
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
editField && handleEditQuantityCombo(row)
|
editField && handleEditQuantityCombo(row)
|
||||||
}
|
}
|
||||||
// onClick={() => handleEditQTYcombo()}
|
// onClick={() => handleEditQTYcombo()}
|
||||||
>
|
>
|
||||||
{(!EditQtyCombo || row?.localId !== Index) && (
|
{(!EditQtyCombo || row?.localId !== Index) && (
|
||||||
<>{row.OrderQty}</>
|
<>{row.OrderQty}</>
|
||||||
|
|
@ -2367,7 +2394,7 @@ const ComboSalesBillTable = () => {
|
||||||
Index={Index}
|
Index={Index}
|
||||||
setIndex={setIndex}
|
setIndex={setIndex}
|
||||||
setEditQtyCombo={setEditQtyCombo}
|
setEditQtyCombo={setEditQtyCombo}
|
||||||
// id={`qty-${index}`}
|
// id={`qty-${index}`}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</td>
|
</td>
|
||||||
|
|
@ -2414,9 +2441,9 @@ const ComboSalesBillTable = () => {
|
||||||
>
|
>
|
||||||
{row?.Offer > 0
|
{row?.Offer > 0
|
||||||
? `${(
|
? `${(
|
||||||
(row.Offer / (row?.OrderQty * row?.OrderRate)) *
|
(row.Offer / (row?.OrderQty * row?.OrderRate)) *
|
||||||
100
|
100
|
||||||
).toFixed(2)}%`
|
).toFixed(2)}%`
|
||||||
: '-'}
|
: '-'}
|
||||||
</td>
|
</td>
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
|
|
@ -262,22 +262,29 @@ const StandardTable = () => {
|
||||||
handleEditQuantity(item);
|
handleEditQuantity(item);
|
||||||
setshortKeyMethod(method);
|
setshortKeyMethod(method);
|
||||||
};
|
};
|
||||||
|
const handleKeyDown = (event) => {
|
||||||
const handleKeyDown = (event) => {
|
const key = event.key.toLowerCase();
|
||||||
if (!event.ctrlKey) return;
|
// 👉 ALT + P → Open Edit Total Amount
|
||||||
|
if (event.altKey && key === 'p') {
|
||||||
const key = event.key.toLowerCase();
|
event.preventDefault();
|
||||||
|
if (OrderCardDetail?.length > 0) {
|
||||||
if (key === 'q') {
|
OpenEditTotalAmount();
|
||||||
event.preventDefault();
|
|
||||||
handleShortcut('qty');
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 👉 CTRL shortcuts
|
||||||
|
if (!event.ctrlKey) return;
|
||||||
|
|
||||||
if (key === 'e') {
|
if (key === 'q') {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
handleShortcut('price');
|
handleShortcut('qty');
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
if (key === 'e') {
|
||||||
|
event.preventDefault();
|
||||||
|
handleShortcut('price');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
window.addEventListener('keydown', handleKeyDown);
|
window.addEventListener('keydown', handleKeyDown);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ const ShortcutKeyHelper = ({ }) => {
|
||||||
{ key: 'F4', description: 'Quick Pay' },
|
{ key: 'F4', description: 'Quick Pay' },
|
||||||
{ key: 'Alt + W', description: 'Hold and Recall' },
|
{ key: 'Alt + W', description: 'Hold and Recall' },
|
||||||
{ key: 'Ctrl + Q', description: 'Qty Change' },
|
{ key: 'Ctrl + Q', description: 'Qty Change' },
|
||||||
|
{ key: 'Alt + P', description: 'Change Total Amount' },
|
||||||
{ key: 'Ctrl + E', description: 'Price Change' },
|
{ key: 'Ctrl + E', description: 'Price Change' },
|
||||||
{ key: 'Ctrl + I', description: 'Customer Rate History' },
|
{ key: 'Ctrl + I', description: 'Customer Rate History' },
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -543,10 +543,10 @@ export default function BSCombo1() {
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
{preferenceshortcutkey && (
|
{/* {preferenceshortcutkey && (
|
||||||
<div className="keyboardShortcut">
|
<div className="keyboardShortcut">
|
||||||
<ShortcutKeyHelper />
|
<ShortcutKeyHelper />
|
||||||
</div>)}
|
</div>)} */}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/* </div> */}
|
{/* </div> */}
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,13 @@ const SalesCountComponent = React.memo(
|
||||||
type?.PreferredSubCatName?.toLowerCase() === 'take away' &&
|
type?.PreferredSubCatName?.toLowerCase() === 'take away' &&
|
||||||
type?.PreferredStatus === 'Y'
|
type?.PreferredStatus === 'Y'
|
||||||
);
|
);
|
||||||
|
const preferenceshortcutkey = preferencedata?.[0]?.[
|
||||||
|
'SettingDtlDetails'
|
||||||
|
]?.some(
|
||||||
|
(item) =>
|
||||||
|
item.SettingIdName.toLowerCase() === 'shortcutkeys' &&
|
||||||
|
item.SettingValue === 'Y'
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
const [messageType, setMessageType] = useState(null);
|
const [messageType, setMessageType] = useState(null);
|
||||||
|
|
@ -1085,6 +1092,11 @@ const SalesCountComponent = React.memo(
|
||||||
)}
|
)}
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
{/* {preferenceshortcutkey && <ShortcutKeyHelper />} */}
|
||||||
|
{preferenceshortcutkey && (
|
||||||
|
<div className="keyboardShortcut">
|
||||||
|
<ShortcutKeyHelper />
|
||||||
|
</div>)}
|
||||||
<AllSalesPageSettings />
|
<AllSalesPageSettings />
|
||||||
<ProductPriceChange />
|
<ProductPriceChange />
|
||||||
<ReceivedStocksModal
|
<ReceivedStocksModal
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue