Merge pull request 'edit-quantity-weight' (#97) from edit-quantity-weight into main
Reviewed-on: Pozomind/pozo-retail-app#97
This commit is contained in:
commit
776b3d8a29
|
|
@ -40,6 +40,7 @@ import {
|
||||||
} from '../../../../../Features/Offer/Offernew/BookingOffernew.js';
|
} from '../../../../../Features/Offer/Offernew/BookingOffernew.js';
|
||||||
import { validateOffers } from '../../BSItemCards/ValidateOffer.jsx';
|
import { validateOffers } from '../../BSItemCards/ValidateOffer.jsx';
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
import WeightCalculatePrice from './WeightCalculatePrice.jsx';
|
||||||
|
|
||||||
const BSBillingEditQuantity = (props) => {
|
const BSBillingEditQuantity = (props) => {
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
|
|
@ -678,12 +679,12 @@ const BSBillingEditQuantity = (props) => {
|
||||||
const handleEditQuantity = async (
|
const handleEditQuantity = async (
|
||||||
editedProduct,
|
editedProduct,
|
||||||
editedProductIndex,
|
editedProductIndex,
|
||||||
newPrice
|
newPrice,
|
||||||
|
overrideQty = null
|
||||||
) => {
|
) => {
|
||||||
// check itself is a offer product
|
const editedQty = overrideQty !== null
|
||||||
|
? overrideQty
|
||||||
const editedQty =
|
: props?.Productdata?.ScaleType !== 'weight'
|
||||||
props?.Productdata?.ScaleType !== 'weight'
|
|
||||||
? parseInt(Quantity)
|
? parseInt(Quantity)
|
||||||
: props.Productdata.OrderQty;
|
: props.Productdata.OrderQty;
|
||||||
const addFirst = BillOrderPre === 'Y';
|
const addFirst = BillOrderPre === 'Y';
|
||||||
|
|
@ -3096,9 +3097,10 @@ const BSBillingEditQuantity = (props) => {
|
||||||
newPrice = 0,
|
newPrice = 0,
|
||||||
offerApply = false
|
offerApply = false
|
||||||
) => {
|
) => {
|
||||||
|
const fixedQty = Number(qty.toFixed(3));
|
||||||
const updatedProduct = {
|
const updatedProduct = {
|
||||||
...editedProduct,
|
...editedProduct,
|
||||||
OrderQty: qty,
|
OrderQty: fixedQty,
|
||||||
OrderRate: newPrice > 0 ? newPrice : editedProduct?.OrderRate,
|
OrderRate: newPrice > 0 ? newPrice : editedProduct?.OrderRate,
|
||||||
...calculateTaxAmounts({
|
...calculateTaxAmounts({
|
||||||
qty: qty,
|
qty: qty,
|
||||||
|
|
@ -3236,289 +3238,6 @@ const BSBillingEditQuantity = (props) => {
|
||||||
OfferValue: offerValue,
|
OfferValue: offerValue,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
// const AddProductQuantity = async () => {
|
|
||||||
// let NewPrice = NewPrice1 > 0 ? NewPrice1 : props.Productdata.OrderRate;
|
|
||||||
// await dispatch(changeHoldOrderDtl(false));
|
|
||||||
// await dispatch(changePreviousOrderLength(CartOrderDetails?.length));
|
|
||||||
// const OtherOrderDatas = CartOrderDetails?.filter(
|
|
||||||
// (cartItem) =>
|
|
||||||
// !(
|
|
||||||
// cartItem?.ProdId === props?.Productdata?.ProdId &&
|
|
||||||
// cartItem.InwardDtlId === props?.Productdata?.InwardDtlId &&
|
|
||||||
// cartItem?.OrderRate === props?.Productdata?.OrderRate &&
|
|
||||||
// cartItem?.BookingTypeName === props?.Productdata?.BookingTypeName
|
|
||||||
// ) && !cartItem?.SalesId
|
|
||||||
// );
|
|
||||||
|
|
||||||
// const OtherOrderDatawithsales = CartOrderDetails?.filter(
|
|
||||||
// (cartItem) => cartItem?.SalesId
|
|
||||||
// );
|
|
||||||
// const OtherorderDataforNormal = CartOrderDetails?.filter(
|
|
||||||
// (cartItem) =>
|
|
||||||
// !(
|
|
||||||
// cartItem?.ProdId === props?.Productdata?.ProdId &&
|
|
||||||
// cartItem?.InwardDtlId === props?.Productdata?.InwardDtlId &&
|
|
||||||
// cartItem?.OrderRate === props?.Productdata?.OrderRate &&
|
|
||||||
// cartItem?.BookingTypeName === props?.Productdata?.BookingTypeName &&
|
|
||||||
// !cartItem?.SalesId
|
|
||||||
// )
|
|
||||||
// );
|
|
||||||
|
|
||||||
// const isItemInCart = CartOrderDetails?.find(
|
|
||||||
// (cartItem) =>
|
|
||||||
// cartItem?.ProdId === props?.Productdata?.ProdId &&
|
|
||||||
// cartItem?.InwardDtlId === props?.Productdata?.InwardDtlId &&
|
|
||||||
// cartItem?.OrderRate === props?.Productdata?.OrderRate &&
|
|
||||||
// cartItem?.BookingTypeName === props?.Productdata?.BookingTypeName &&
|
|
||||||
// !cartItem?.SalesId
|
|
||||||
// ); // check if the item is already in the cart
|
|
||||||
// // changing for one piece stock checking
|
|
||||||
// const isItemInCartfilter = CartOrderDetails?.filter(
|
|
||||||
// (cartItem) =>
|
|
||||||
// cartItem?.ProdId === props?.Productdata?.ProdId &&
|
|
||||||
// cartItem?.InwardDtlId === props?.Productdata?.InwardDtlId &&
|
|
||||||
// !(
|
|
||||||
// cartItem?.OrderRate === props?.Productdata?.OrderRate &&
|
|
||||||
// cartItem?.BookingTypeName === props?.Productdata?.BookingTypeName
|
|
||||||
// ) &&
|
|
||||||
// !cartItem?.SalesId
|
|
||||||
// ); // check if the item is already in the cart
|
|
||||||
// let OverallQuantity = CalculateOverallQty(isItemInCart, isItemInCartfilter);
|
|
||||||
// const BookingTypeProd = props?.Productdata?.BookingTypeName;
|
|
||||||
// const isItemInCartHold = CartOrderDetails?.find(
|
|
||||||
// (cartItem) =>
|
|
||||||
// cartItem?.ProdId === props?.Productdata?.ProdId &&
|
|
||||||
// cartItem?.InwardDtlId === props?.Productdata?.InwardDtlId &&
|
|
||||||
// cartItem?.OrderRate === props?.Productdata?.OrderRate &&
|
|
||||||
// cartItem?.BookingTypeName === props?.Productdata?.BookingTypeName
|
|
||||||
// ); // check if the item is already in the cart
|
|
||||||
// const isItemInCartHoldfilter = CartOrderDetails?.filter(
|
|
||||||
// (cartItem) =>
|
|
||||||
// cartItem?.ProdId === props?.Productdata?.ProdId &&
|
|
||||||
// cartItem?.InwardDtlId === props?.Productdata?.InwardDtlId &&
|
|
||||||
// !(
|
|
||||||
// cartItem?.OrderRate === props?.Productdata?.OrderRate &&
|
|
||||||
// cartItem?.BookingTypeName === props?.Productdata?.BookingTypeName
|
|
||||||
// )
|
|
||||||
// ); // check if the item is already in the cart
|
|
||||||
// const holddataproduct = ReorderProductData?.filter(
|
|
||||||
// (cartItem) =>
|
|
||||||
// cartItem?.ProdId === props?.Productdata?.ProdId &&
|
|
||||||
// cartItem?.InwardDtlId === props?.Productdata?.InwardDtlId
|
|
||||||
// );
|
|
||||||
// let totalSelectedProductQty = holddataproduct?.reduce(
|
|
||||||
// (accumulator, card) => {
|
|
||||||
// return (
|
|
||||||
// accumulator +
|
|
||||||
// parseInt(
|
|
||||||
// card?.StockAvailable === 'Y'
|
|
||||||
// ? props?.Productdata?.SinglePc === 'Y'
|
|
||||||
// ? card.SinglePc !== 'Y'
|
|
||||||
// ? card.OrderQty * card.NoOfPcs
|
|
||||||
// : card.OrderQty
|
|
||||||
// : card.SinglePc !== 'Y'
|
|
||||||
// ? card.OrderQty
|
|
||||||
// : card.OverAllPcs % card.NoOfPcs >= card.OrderQty
|
|
||||||
// ? 0
|
|
||||||
// : card.OrderQty % card.NoOfPcs === 0
|
|
||||||
// ? Math.floor(card.OrderQty / card.NoOfPcs)
|
|
||||||
// : Math.floor(card.OrderQty / card.NoOfPcs) + 1
|
|
||||||
// : 0
|
|
||||||
// )
|
|
||||||
// );
|
|
||||||
// },
|
|
||||||
// 0
|
|
||||||
// );
|
|
||||||
|
|
||||||
// let OverallQuantityhold =
|
|
||||||
// CalculateOverallQty(isItemInCartHold, isItemInCartHoldfilter) +
|
|
||||||
// totalSelectedProductQty;
|
|
||||||
// const OtherorderDataforNormalWithoutSalesId = CartOrderDetails?.filter(
|
|
||||||
// (cartItem) =>
|
|
||||||
// !(
|
|
||||||
// cartItem?.ProdId === props?.Productdata?.ProdId &&
|
|
||||||
// cartItem?.InwardDtlId === props?.Productdata?.InwardDtlId &&
|
|
||||||
// cartItem?.OrderRate === props?.Productdata?.OrderRate &&
|
|
||||||
// cartItem?.BookingTypeName === props?.Productdata?.BookingTypeName
|
|
||||||
// )
|
|
||||||
// );
|
|
||||||
|
|
||||||
// if (parseInt(Quantity) === 0 || Quantity === '') {
|
|
||||||
// setMessageType('error');
|
|
||||||
// setMessageData('Please enter valid quantity');
|
|
||||||
// setQuantity('');
|
|
||||||
// }
|
|
||||||
// else {
|
|
||||||
// if (isItemInCart && BookingTypeProd != 'Dine In' && OrderType != 'Hold') {
|
|
||||||
// if (isItemInCart?.StockAvailable === 'Y') {
|
|
||||||
// let Condition = OverallQuantity >= Quantity;
|
|
||||||
// if (Condition) {
|
|
||||||
// const UpdatedCartItem = await createUpdatedCartItem(
|
|
||||||
// isItemInCart,
|
|
||||||
// Quantity,
|
|
||||||
// NewPrice
|
|
||||||
// );
|
|
||||||
// const Cartdata = MergecardItem(
|
|
||||||
// UpdatedCartItem,
|
|
||||||
// BillOrderPre,
|
|
||||||
// OtherorderDataforNormal
|
|
||||||
// );
|
|
||||||
// await dispatch(changeOrderCardDetails(Cartdata));
|
|
||||||
// if (OfferCheckedInSetup && preferenceOffer) {
|
|
||||||
// await applyOffer(Cartdata);
|
|
||||||
// } else {
|
|
||||||
// dispatch(changeOrderCardDetails(Cartdata));
|
|
||||||
// }
|
|
||||||
|
|
||||||
// props.handleEditQuantityCancel();
|
|
||||||
// setClearQuantity(false);
|
|
||||||
// } else {
|
|
||||||
// setMessageType('error');
|
|
||||||
// setMessageData('Stock Not Available');
|
|
||||||
// setQuantity('');
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// if (
|
|
||||||
// isItemInCart &&
|
|
||||||
// BookingTypeProd != 'Dine In' &&
|
|
||||||
// OrderType != 'Hold'
|
|
||||||
// ) {
|
|
||||||
// const UpdatedCartItem = createUpdatedCartItem(
|
|
||||||
// isItemInCart,
|
|
||||||
// Quantity,
|
|
||||||
// NewPrice
|
|
||||||
// );
|
|
||||||
// const Cartdata = MergecardItem(
|
|
||||||
// UpdatedCartItem,
|
|
||||||
// BillOrderPre,
|
|
||||||
// OtherorderDataforNormal
|
|
||||||
// );
|
|
||||||
// await dispatch(changeOrderCardDetails(Cartdata));
|
|
||||||
// if (OfferCheckedInSetup && preferenceOffer) {
|
|
||||||
// await applyOffer(Cartdata);
|
|
||||||
// } else {
|
|
||||||
// dispatch(changeOrderCardDetails(Cartdata));
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// props.handleEditQuantityCancel();
|
|
||||||
// setClearQuantity(false);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else if (isItemInCartHold && OrderType === 'Hold') {
|
|
||||||
// if (isItemInCartHold?.StockAvailable === 'Y') {
|
|
||||||
// let Condition = OverallQuantityhold >= Quantity;
|
|
||||||
// if (Condition) {
|
|
||||||
// const UpdatedCartItem = createUpdatedCartItem(
|
|
||||||
// isItemInCartHold,
|
|
||||||
// Quantity,
|
|
||||||
// NewPrice
|
|
||||||
// );
|
|
||||||
// const Cartdata = MergecardItem(
|
|
||||||
// UpdatedCartItem,
|
|
||||||
// BillOrderPre,
|
|
||||||
// OtherorderDataforNormalWithoutSalesId
|
|
||||||
// );
|
|
||||||
// if (OfferCheckedInSetup && preferenceOffer) {
|
|
||||||
// await applyOffer(Cartdata);
|
|
||||||
// } else {
|
|
||||||
// dispatch(changeOrderCardDetails(Cartdata));
|
|
||||||
// }
|
|
||||||
// await dispatch(changeOrderCardDetails(Cartdata));
|
|
||||||
|
|
||||||
// props.handleEditQuantityCancel();
|
|
||||||
// setClearQuantity(false);
|
|
||||||
// } else {
|
|
||||||
// setMessageType('error');
|
|
||||||
// setMessageData('Stock Not Available');
|
|
||||||
// setQuantity('');
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// if (isItemInCartHold && OrderType === 'Hold') {
|
|
||||||
// const UpdatedCartItem = createUpdatedCartItem(
|
|
||||||
// isItemInCartHold,
|
|
||||||
// Quantity,
|
|
||||||
// NewPrice
|
|
||||||
// );
|
|
||||||
// const Cartdata = MergecardItem(
|
|
||||||
// UpdatedCartItem,
|
|
||||||
// BillOrderPre,
|
|
||||||
// OtherorderDataforNormalWithoutSalesId
|
|
||||||
// );
|
|
||||||
// await dispatch(changeOrderCardDetails(Cartdata));
|
|
||||||
// if (OfferCheckedInSetup && preferenceOffer) {
|
|
||||||
// await applyOffer(Cartdata);
|
|
||||||
// } else {
|
|
||||||
// dispatch(changeOrderCardDetails(Cartdata));
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// props.handleEditQuantityCancel();
|
|
||||||
// setClearQuantity(false);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else if (
|
|
||||||
// isItemInCart &&
|
|
||||||
// BookingTypeProd === 'Dine In' &&
|
|
||||||
// OrderType != 'Hold'
|
|
||||||
// ) {
|
|
||||||
// if (isItemInCart?.StockAvailable === 'Y') {
|
|
||||||
// let Condition = OverallQuantity >= Quantity;
|
|
||||||
// if (Condition) {
|
|
||||||
// const UpdatedCartItem = createUpdatedCartItem(
|
|
||||||
// isItemInCart,
|
|
||||||
// Quantity,
|
|
||||||
// NewPrice
|
|
||||||
// );
|
|
||||||
// const Cartdata = MergecardItem(
|
|
||||||
// UpdatedCartItem,
|
|
||||||
// BillOrderPre,
|
|
||||||
// OtherOrderDatas
|
|
||||||
// );
|
|
||||||
// await dispatch(
|
|
||||||
// changeOrderCardDetails([...OtherOrderDatawithsales, ...Cartdata])
|
|
||||||
// );
|
|
||||||
// if (OfferCheckedInSetup && preferenceOffer) {
|
|
||||||
// await applyOffer(Cartdata);
|
|
||||||
// } else {
|
|
||||||
// dispatch(changeOrderCardDetails(Cartdata));
|
|
||||||
// }
|
|
||||||
// props.handleEditQuantityCancel();
|
|
||||||
// setClearQuantity(false);
|
|
||||||
// } else {
|
|
||||||
// setMessageType('error');
|
|
||||||
// setMessageData('Stock Not Available');
|
|
||||||
// setQuantity('');
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else {
|
|
||||||
// if (
|
|
||||||
// isItemInCart &&
|
|
||||||
// BookingTypeProd === 'Dine In' &&
|
|
||||||
// OrderType != 'Hold'
|
|
||||||
// ) {
|
|
||||||
// const UpdatedCartItem = createUpdatedCartItem(
|
|
||||||
// isItemInCart,
|
|
||||||
// Quantity,
|
|
||||||
// NewPrice
|
|
||||||
// );
|
|
||||||
// const Cartdata = MergecardItem(
|
|
||||||
// UpdatedCartItem,
|
|
||||||
// BillOrderPre,
|
|
||||||
// OtherorderDataforNormal
|
|
||||||
// );
|
|
||||||
// await dispatch(changeOrderCardDetails(Cartdata));
|
|
||||||
// if (OfferCheckedInSetup && preferenceOffer) {
|
|
||||||
// await applyOffer(Cartdata);
|
|
||||||
// } else {
|
|
||||||
// dispatch(changeOrderCardDetails(Cartdata));
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// props.handleEditQuantityCancel();
|
|
||||||
// setClearQuantity(false);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
const CloseModal = () => {
|
const CloseModal = () => {
|
||||||
props.handleEditQuantityCancel();
|
props.handleEditQuantityCancel();
|
||||||
setClearQuantity(false);
|
setClearQuantity(false);
|
||||||
|
|
@ -3706,6 +3425,33 @@ const BSBillingEditQuantity = (props) => {
|
||||||
setPackageDtl(data || []);
|
setPackageDtl(data || []);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleWeightCalculation = async (data) => {
|
||||||
|
const { price, quantity } = data;
|
||||||
|
setQuantity(quantity);
|
||||||
|
setEditedPrice(price);
|
||||||
|
await handleWeightSubmit(quantity, price);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleWeightSubmit = async (qty, price) => {
|
||||||
|
await dispatch(changeHoldOrderDtl(false));
|
||||||
|
await dispatch(changePreviousOrderLength(CartOrderDetails?.length));
|
||||||
|
let localId = props.Index;
|
||||||
|
let editedProductIndex = CartOrderDetails?.findIndex(
|
||||||
|
(e) => e?.localId == localId
|
||||||
|
);
|
||||||
|
const editedProduct = {
|
||||||
|
...CartOrderDetails[editedProductIndex],
|
||||||
|
OrderQty: qty
|
||||||
|
};
|
||||||
|
|
||||||
|
await handleEditQuantity(editedProduct, editedProductIndex, editedProduct.OrderRate, qty);
|
||||||
|
props.handleEditQuantityCancel();
|
||||||
|
setClearQuantity(false);
|
||||||
|
};
|
||||||
|
const isKg =
|
||||||
|
props?.Productdata?.Size == 1 &&
|
||||||
|
["KG", "KGS"].includes(props?.Productdata?.UomName?.toUpperCase());
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="BSBilling-EditQuantity-Modal">
|
<div className="BSBilling-EditQuantity-Modal">
|
||||||
<Messages
|
<Messages
|
||||||
|
|
@ -3802,6 +3548,19 @@ const BSBillingEditQuantity = (props) => {
|
||||||
>
|
>
|
||||||
Packing
|
Packing
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
{isKg && (<button
|
||||||
|
type="button"
|
||||||
|
className={
|
||||||
|
RadioBtnSelection === 'AddWeight'
|
||||||
|
? 'SelecBtn AddWeight'
|
||||||
|
: 'ChangeBtn'
|
||||||
|
}
|
||||||
|
onClick={() => onRadioBtnChange('AddWeight')}
|
||||||
|
>
|
||||||
|
Add Weight
|
||||||
|
</button>)}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{RadioBtnSelection == 'Quantity' && (
|
{RadioBtnSelection == 'Quantity' && (
|
||||||
|
|
@ -4007,6 +3766,15 @@ const BSBillingEditQuantity = (props) => {
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
{RadioBtnSelection == 'AddWeight' && (
|
||||||
|
<>
|
||||||
|
<WeightCalculatePrice
|
||||||
|
CartOrderDetails={CartOrderDetails}
|
||||||
|
itemData={ItemData}
|
||||||
|
onSubmit={handleWeightCalculation}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
<div style={{ display: 'flex', justifyContent: 'flex-end' }}>
|
<div style={{ display: 'flex', justifyContent: 'flex-end' }}>
|
||||||
{((RadioBtnSelection == 'Price' && disableSubmitButton) ||
|
{((RadioBtnSelection == 'Price' && disableSubmitButton) ||
|
||||||
RadioBtnSelection == 'Quantity') && (
|
RadioBtnSelection == 'Quantity') && (
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,134 @@
|
||||||
|
import { useState, useEffect, useRef } from 'react';
|
||||||
|
import { InputField } from '../../../../../Components/Forms/InputField.jsx';
|
||||||
|
import { Form } from 'antd';
|
||||||
|
import Buttons from '../../../../../Components/Forms/Buttons.jsx';
|
||||||
|
import { ArrowRightOutlined } from '@ant-design/icons';
|
||||||
|
|
||||||
|
const WeightCalculatePrice = ({ itemData, CartOrderDetails, onSubmit }) => {
|
||||||
|
const [enteredPrice, setEnteredPrice] = useState('');
|
||||||
|
const [calculatedQty, setCalculatedQty] = useState(0);
|
||||||
|
const priceInputRef = useRef(null);
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
|
||||||
|
const basePrice = parseFloat(itemData?.OrderRate || itemData?.SellingPrice || 0);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setTimeout(() => {
|
||||||
|
const inputElement = priceInputRef.current?.querySelector('input');
|
||||||
|
if (inputElement) {
|
||||||
|
inputElement.focus();
|
||||||
|
}
|
||||||
|
}, 100);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
// Calculate quantity based on entered price
|
||||||
|
const handlePriceChange = (e) => {
|
||||||
|
const value = e.target.value;
|
||||||
|
setEnteredPrice(value);
|
||||||
|
|
||||||
|
if (value && basePrice > 0) {
|
||||||
|
const price = parseFloat(value);
|
||||||
|
const qty = price / basePrice;
|
||||||
|
setCalculatedQty(qty);
|
||||||
|
} else {
|
||||||
|
setCalculatedQty(0);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSubmit = (e) => {
|
||||||
|
if (e && e.preventDefault) {
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (enteredPrice && calculatedQty > 0) {
|
||||||
|
console.log('Submitting weight calculation:', {
|
||||||
|
price: parseFloat(enteredPrice),
|
||||||
|
quantity: calculatedQty,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Pass the calculated values back to parent component
|
||||||
|
if (onSubmit) {
|
||||||
|
onSubmit({
|
||||||
|
price: parseFloat(enteredPrice),
|
||||||
|
quantity: calculatedQty,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="weight-calculate-price">
|
||||||
|
<Form
|
||||||
|
form={form}
|
||||||
|
onFinish={handleSubmit}
|
||||||
|
onSubmitCapture={(e) => e.preventDefault()}
|
||||||
|
>
|
||||||
|
<div className="weight-info">
|
||||||
|
<div className="product-details">
|
||||||
|
<p><strong>Product:</strong> {itemData?.ProdName}</p>
|
||||||
|
<p><strong>Variant:</strong> {itemData?.ProdVariantName}</p>
|
||||||
|
<p><strong>Base Price:</strong> ₹{basePrice.toFixed(2)} per {itemData?.UomName || 'unit'}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Form.Item
|
||||||
|
name="enteredPrice"
|
||||||
|
rules={[
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: 'Please enter the price',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pattern: /^[1-9]\d*(\.\d+)?$/,
|
||||||
|
message: 'Please enter a valid price',
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
<InputField
|
||||||
|
ref={priceInputRef}
|
||||||
|
label="Enter Amount (₹)"
|
||||||
|
value={enteredPrice}
|
||||||
|
onChange={handlePriceChange}
|
||||||
|
autocomplete="off"
|
||||||
|
inputMode="decimal"
|
||||||
|
placeholder="Enter price amount"
|
||||||
|
onInput={(e) => {
|
||||||
|
const cleanedValue = e.target.value.replace(/[^0-9.]/g, '');
|
||||||
|
const parts = cleanedValue.split('.');
|
||||||
|
e.target.value =
|
||||||
|
parts.length > 2
|
||||||
|
? `${parts[0]}.${parts.slice(1).join('')}`
|
||||||
|
: cleanedValue;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<div className="calculated-quantity-display">
|
||||||
|
<div className="quantity-row">
|
||||||
|
<label className="quantity-label">Calculated Quantity:</label>
|
||||||
|
<span className="quantity-value">
|
||||||
|
{calculatedQty > 0 ? calculatedQty.toFixed(3) : '0.000'} {itemData?.UomName || 'units'}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
{calculatedQty > 0 && (
|
||||||
|
<div className="total-display">
|
||||||
|
<label>Total Amount:</label>
|
||||||
|
<span>₹{parseFloat(enteredPrice || 0).toFixed(2)}</span>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className="submit-button-container">
|
||||||
|
<Buttons
|
||||||
|
buttonText="Apply"
|
||||||
|
color="901D77"
|
||||||
|
htmlType="button"
|
||||||
|
handleSubmit={handleSubmit}
|
||||||
|
icon={<ArrowRightOutlined />}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Form>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default WeightCalculatePrice;
|
||||||
|
|
@ -505,7 +505,8 @@ export default function BST1Payment() {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!preOrder) {
|
if (!preOrder) {
|
||||||
const totalSum = OrderCardDetail?.reduce(
|
const totalSum = OrderCardDetail?.reduce(
|
||||||
(acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0),
|
// (acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0),
|
||||||
|
(acc, card) => acc + parseFloat(card.TotalAmt || 0),
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -1994,7 +1995,8 @@ export default function BST1Payment() {
|
||||||
Type: a.Type,
|
Type: a.Type,
|
||||||
OrderQty: a.OrderQty,
|
OrderQty: a.OrderQty,
|
||||||
OrderRate: a.OrderRate,
|
OrderRate: a.OrderRate,
|
||||||
TotalAmt: a.OrderQty * a.OrderRate,
|
// TotalAmt: a.OrderQty * a.OrderRate,
|
||||||
|
TotalAmt: a.TotalAmt,
|
||||||
TaxAmt: a.TaxAmt,
|
TaxAmt: a.TaxAmt,
|
||||||
RefundQty: 0,
|
RefundQty: 0,
|
||||||
InwardDtlId: a.InwardDtlId,
|
InwardDtlId: a.InwardDtlId,
|
||||||
|
|
|
||||||
|
|
@ -539,7 +539,8 @@ const BSBillingTable2 = () => {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!preOrder) {
|
if (!preOrder) {
|
||||||
const totalSum = OrderCardDetail?.reduce(
|
const totalSum = OrderCardDetail?.reduce(
|
||||||
(acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0),
|
// (acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0),
|
||||||
|
(acc, card) => acc + parseFloat(card.TotalAmt || 0),
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -2034,7 +2035,8 @@ const BSBillingTable2 = () => {
|
||||||
Type: a.Type,
|
Type: a.Type,
|
||||||
OrderQty: a.OrderQty,
|
OrderQty: a.OrderQty,
|
||||||
OrderRate: a.OrderRate,
|
OrderRate: a.OrderRate,
|
||||||
TotalAmt: a.OrderQty * a.OrderRate,
|
// TotalAmt: a.OrderQty * a.OrderRate,
|
||||||
|
TotalAmt: a.TotalAmt,
|
||||||
TaxAmt: a.TaxAmt,
|
TaxAmt: a.TaxAmt,
|
||||||
RefundQty: 0,
|
RefundQty: 0,
|
||||||
InwardDtlId: a.InwardDtlId,
|
InwardDtlId: a.InwardDtlId,
|
||||||
|
|
|
||||||
|
|
@ -534,7 +534,8 @@ const BSBillingTable3Pay = () => {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!preOrder) {
|
if (!preOrder) {
|
||||||
const totalSum = OrderCardDetail?.reduce(
|
const totalSum = OrderCardDetail?.reduce(
|
||||||
(acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0),
|
// (acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0), //sree
|
||||||
|
(acc, card) => acc + parseFloat(card.TotalAmt || 0),
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -2180,7 +2181,8 @@ const BSBillingTable3Pay = () => {
|
||||||
Type: a.Type,
|
Type: a.Type,
|
||||||
OrderQty: a.OrderQty,
|
OrderQty: a.OrderQty,
|
||||||
OrderRate: a.OrderRate,
|
OrderRate: a.OrderRate,
|
||||||
TotalAmt: a.OrderQty * a.OrderRate,
|
// TotalAmt: a.OrderQty * a.OrderRate, //sri
|
||||||
|
TotalAmt: a.TotalAmt,
|
||||||
TaxAmt: a.TaxAmt,
|
TaxAmt: a.TaxAmt,
|
||||||
RefundQty: 0,
|
RefundQty: 0,
|
||||||
InwardDtlId: a.InwardDtlId,
|
InwardDtlId: a.InwardDtlId,
|
||||||
|
|
|
||||||
|
|
@ -591,7 +591,8 @@ const BSBilling4Payment = () => {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!preOrder) {
|
if (!preOrder) {
|
||||||
const totalSum = OrderCardDetail?.reduce(
|
const totalSum = OrderCardDetail?.reduce(
|
||||||
(acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0),
|
// (acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0),
|
||||||
|
(acc, card) => acc + parseFloat(card.TotalAmt || 0),
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -2062,7 +2063,8 @@ const BSBilling4Payment = () => {
|
||||||
Type: a.Type,
|
Type: a.Type,
|
||||||
OrderQty: a.OrderQty,
|
OrderQty: a.OrderQty,
|
||||||
OrderRate: a.OrderRate,
|
OrderRate: a.OrderRate,
|
||||||
TotalAmt: a.OrderQty * a.OrderRate,
|
// TotalAmt: a.OrderQty * a.OrderRate,
|
||||||
|
TotalAmt: a.TotalAmt,
|
||||||
TaxAmt: a.TaxAmt,
|
TaxAmt: a.TaxAmt,
|
||||||
RefundQty: 0,
|
RefundQty: 0,
|
||||||
InwardDtlId: a.InwardDtlId,
|
InwardDtlId: a.InwardDtlId,
|
||||||
|
|
|
||||||
|
|
@ -579,7 +579,8 @@ const BSBillingTable5 = () => {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!preOrder) {
|
if (!preOrder) {
|
||||||
const totalSum = OrderCardDetail?.reduce(
|
const totalSum = OrderCardDetail?.reduce(
|
||||||
(acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0),
|
// (acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0),
|
||||||
|
(acc, card) => acc + parseFloat(card.TotalAmt || 0),
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -2077,7 +2078,8 @@ const BSBillingTable5 = () => {
|
||||||
Type: a.Type,
|
Type: a.Type,
|
||||||
OrderQty: a.OrderQty,
|
OrderQty: a.OrderQty,
|
||||||
OrderRate: a.OrderRate,
|
OrderRate: a.OrderRate,
|
||||||
TotalAmt: a.OrderQty * a.OrderRate,
|
// TotalAmt: a.OrderQty * a.OrderRate,
|
||||||
|
TotalAmt: a.TotalAmt,
|
||||||
TaxAmt: a.TaxAmt,
|
TaxAmt: a.TaxAmt,
|
||||||
RefundQty: 0,
|
RefundQty: 0,
|
||||||
InwardDtlId: a.InwardDtlId,
|
InwardDtlId: a.InwardDtlId,
|
||||||
|
|
|
||||||
|
|
@ -551,7 +551,8 @@ const BST6Payment = () => {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!preOrder) {
|
if (!preOrder) {
|
||||||
const totalSum = OrderCardDetail?.reduce(
|
const totalSum = OrderCardDetail?.reduce(
|
||||||
(acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0),
|
// (acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0),
|
||||||
|
(acc, card) => acc + parseFloat(card.TotalAmt || 0),
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -2118,7 +2119,8 @@ const BST6Payment = () => {
|
||||||
Type: a.Type,
|
Type: a.Type,
|
||||||
OrderQty: a.OrderQty,
|
OrderQty: a.OrderQty,
|
||||||
OrderRate: a.OrderRate,
|
OrderRate: a.OrderRate,
|
||||||
TotalAmt: a.OrderQty * a.OrderRate,
|
// TotalAmt: a.OrderQty * a.OrderRate,
|
||||||
|
TotalAmt: a.TotalAmt,
|
||||||
TaxAmt: a.TaxAmt,
|
TaxAmt: a.TaxAmt,
|
||||||
RefundQty: 0,
|
RefundQty: 0,
|
||||||
InwardDtlId: a.InwardDtlId,
|
InwardDtlId: a.InwardDtlId,
|
||||||
|
|
|
||||||
|
|
@ -570,7 +570,8 @@ const BSBilling7Payment = () => {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!preOrder) {
|
if (!preOrder) {
|
||||||
const totalSum = OrderCardDetail?.reduce(
|
const totalSum = OrderCardDetail?.reduce(
|
||||||
(acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0),
|
// (acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0),
|
||||||
|
(acc, card) => acc + parseFloat(card.TotalAmt || 0),
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -2086,7 +2087,8 @@ const BSBilling7Payment = () => {
|
||||||
Type: a.Type,
|
Type: a.Type,
|
||||||
OrderQty: a.OrderQty,
|
OrderQty: a.OrderQty,
|
||||||
OrderRate: a.OrderRate,
|
OrderRate: a.OrderRate,
|
||||||
TotalAmt: a.OrderQty * a.OrderRate,
|
// TotalAmt: a.OrderQty * a.OrderRate,
|
||||||
|
TotalAmt: a.TotalAmt,
|
||||||
TaxAmt: a.TaxAmt,
|
TaxAmt: a.TaxAmt,
|
||||||
RefundQty: 0,
|
RefundQty: 0,
|
||||||
InwardDtlId: a.InwardDtlId,
|
InwardDtlId: a.InwardDtlId,
|
||||||
|
|
|
||||||
|
|
@ -841,7 +841,8 @@ const StandardTablePayment = () => {
|
||||||
|
|
||||||
if (!preOrder) {
|
if (!preOrder) {
|
||||||
const totalSum = orderCardDetail?.reduce(
|
const totalSum = orderCardDetail?.reduce(
|
||||||
(acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0),
|
// (acc, card) => acc + parseFloat(card.OrderRate * card.OrderQty || 0),
|
||||||
|
(acc, card) => acc + parseFloat(card.TotalAmt || 0),
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -1417,7 +1418,8 @@ const StandardTablePayment = () => {
|
||||||
Type: a.Type,
|
Type: a.Type,
|
||||||
OrderQty: a.OrderQty,
|
OrderQty: a.OrderQty,
|
||||||
OrderRate: a.OrderRate,
|
OrderRate: a.OrderRate,
|
||||||
TotalAmt: a.OrderQty * a.OrderRate,
|
// TotalAmt: a.OrderQty * a.OrderRate,
|
||||||
|
TotalAmt: a.TotalAmt,
|
||||||
TaxAmt: a.TaxAmt,
|
TaxAmt: a.TaxAmt,
|
||||||
RefundQty: 0,
|
RefundQty: 0,
|
||||||
InwardDtlId: a.InwardDtlId,
|
InwardDtlId: a.InwardDtlId,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue