2026-02-23 12:18:31 +05:30
|
|
|
import {
|
|
|
|
|
useState,
|
|
|
|
|
useEffect,
|
|
|
|
|
useRef,
|
|
|
|
|
useCallback,
|
|
|
|
|
lazy,
|
|
|
|
|
Suspense,
|
|
|
|
|
} from 'react';
|
2026-01-27 18:27:29 +05:30
|
|
|
import { useDispatch, useSelector } from 'react-redux';
|
|
|
|
|
import { InputField } from '../../Components/Forms/InputField.jsx';
|
|
|
|
|
import Buttons from '../../Components/Forms/Buttons.jsx';
|
|
|
|
|
import {
|
|
|
|
|
ArrowRightOutlined,
|
|
|
|
|
DeleteFilled,
|
|
|
|
|
EditFilled,
|
|
|
|
|
ReloadOutlined,
|
|
|
|
|
} from '@ant-design/icons';
|
|
|
|
|
import { Radio, Space, Table, Checkbox } from 'antd';
|
|
|
|
|
import { Messages } from '../../Components/Notifications/Messages';
|
|
|
|
|
import { Form, Tooltip } from 'antd';
|
|
|
|
|
import moment from 'moment';
|
|
|
|
|
import { changeBreadCrumb } from '../../Features/AppPage/CenterPage.js';
|
|
|
|
|
import FormHeader from '../PageComponents/FormHeader.jsx';
|
|
|
|
|
import { getSession, validateSafeInput } from '../../Services/Others';
|
|
|
|
|
import { useNavigate, useLocation } from 'react-router-dom';
|
|
|
|
|
import { getCustBasedOnCmpIdBrIdAppId } from '../../Features/CustMaster/CustMaster.js';
|
|
|
|
|
import { DropDowns } from '../../Components/Forms/DropDown.jsx';
|
|
|
|
|
import { DatePicProd } from '../../Components/Forms/DatePickerProduct.jsx';
|
|
|
|
|
import { Tables } from '../../Components/Tables/Table.jsx';
|
|
|
|
|
import {
|
|
|
|
|
getWholeSaleProducts,
|
|
|
|
|
PostwsPreorder,
|
|
|
|
|
PostwsPreorderMultiple,
|
|
|
|
|
PuttwsPreorder,
|
|
|
|
|
} from '../../Features/WholeSale/ProductEntry.js';
|
|
|
|
|
import {
|
|
|
|
|
getWholesaleQuantityData,
|
|
|
|
|
getWholesaleUomData,
|
|
|
|
|
WholesaleQuantityData,
|
|
|
|
|
WholesaleUomDataSelector,
|
|
|
|
|
} from '../../Features/ProductPage/ProductPage.js';
|
|
|
|
|
import './WholesalePreorderForm.scss';
|
|
|
|
|
import PozoAddCustomerIcon from '../BookingScreen/Components/UtillComponents/Pozo retail icons/PozoAddCustomerIcon.jsx';
|
|
|
|
|
import FeaturesFunctionalities from '../BookingScreen/Components/BookingFunctionality/FeaturesFunctionalities.jsx';
|
|
|
|
|
import {
|
|
|
|
|
changeSelectedCustId,
|
|
|
|
|
changeSelectedOption,
|
|
|
|
|
GlobalSelCustId,
|
|
|
|
|
} from '../../Features/BookingScreen/BookingData/BookingData.js';
|
|
|
|
|
import {
|
|
|
|
|
getWholeSaleAllocatedPreOrders,
|
|
|
|
|
GlobalAllocatedPreOrders,
|
|
|
|
|
GlobalLastEntryDateDtl,
|
|
|
|
|
GlobalWSDate,
|
|
|
|
|
} from '../../Features/WholeSale/WholesaleData.js';
|
|
|
|
|
import { IoMdAdd, IoMdAddCircle } from 'react-icons/io';
|
2026-02-23 12:18:31 +05:30
|
|
|
const AddUOMPreorder = lazy(
|
|
|
|
|
() => import('../PurchaseScreen/WholeSaleComponent/AddUomPreorder.jsx')
|
|
|
|
|
);
|
|
|
|
|
const Search = lazy(() => import('../../Components/Forms/Search.jsx'));
|
2026-01-27 18:27:29 +05:30
|
|
|
|
|
|
|
|
const subDirectory = import.meta.env.BASE_URL;
|
|
|
|
|
|
|
|
|
|
const WsPreOrderForm = ({
|
|
|
|
|
formType,
|
|
|
|
|
HigherorderComponents = false,
|
|
|
|
|
Modelclose,
|
|
|
|
|
WholeSalePreOrder = false,
|
|
|
|
|
handleWholeSalePreOrderAndSelectCustomer,
|
|
|
|
|
handleGradeCalculationBypreorder,
|
|
|
|
|
}) => {
|
|
|
|
|
const formRef = useRef(null);
|
|
|
|
|
const dispatch = useDispatch();
|
|
|
|
|
const navigate = useNavigate();
|
|
|
|
|
const location = useLocation();
|
|
|
|
|
const state = location?.state;
|
|
|
|
|
const editstate = state?.editstate;
|
|
|
|
|
|
|
|
|
|
const CompId = getSession('CompId');
|
|
|
|
|
const BranchId = getSession('BranchId');
|
|
|
|
|
const AppId = getSession('AppId');
|
|
|
|
|
const UserId = getSession('UserId');
|
|
|
|
|
const SelCustId = useSelector(GlobalSelCustId);
|
|
|
|
|
const UomData = useSelector(WholesaleQuantityData);
|
|
|
|
|
const WSLastEntryDate = useSelector(GlobalLastEntryDateDtl);
|
|
|
|
|
const WSDate = useSelector(GlobalWSDate);
|
|
|
|
|
const [filteredInfo, setFilteredInfo] = useState({});
|
|
|
|
|
const [sortedInfo, setSortedInfo] = useState({});
|
|
|
|
|
const [messageType, setMessageType] = useState(null);
|
|
|
|
|
const [messageData, setMessageData] = useState(null);
|
|
|
|
|
const [addcustomer, setAddCustomer] = useState(false);
|
|
|
|
|
const [EditStatus, SetEditStatus] = useState(false);
|
|
|
|
|
const CUstomerName = useSelector(GlobalAllocatedPreOrders);
|
|
|
|
|
const [size, setsize] = useState('');
|
|
|
|
|
const [selectedValue, setSelectedValue] = useState(null);
|
|
|
|
|
const [SelectedValueName, setSelectedValueName] = useState({
|
|
|
|
|
selectedProd: null,
|
|
|
|
|
selectedUom: null,
|
|
|
|
|
});
|
|
|
|
|
const [searchedText, setSearchedText] = useState('');
|
|
|
|
|
const [WsPreorderDate, setWsPreorderDate] = useState();
|
|
|
|
|
const [TableData, setTableData] = useState([]);
|
|
|
|
|
const [TableDatawithCustomer, setTableDatawithCustomer] = useState([]);
|
|
|
|
|
const [CommonDataFilter, setCommonDataFilter] = useState([]);
|
|
|
|
|
const [selectedUOM, setSelectedUOM] = useState(null);
|
|
|
|
|
const [customer, setCustomer] = useState();
|
|
|
|
|
const [SelectedCustomer, setSelectedCustomer] = useState();
|
|
|
|
|
const [editTable, setEditTable] = useState([]);
|
|
|
|
|
const [page, setpage] = useState(1);
|
|
|
|
|
const [page1, setpage1] = useState(1);
|
|
|
|
|
const [selectedRowKeys, setSelectedRowKeys] = useState([]);
|
|
|
|
|
const [Dbselectedkeys, setDbselectedkeys] = useState([]);
|
|
|
|
|
const [hold, setHold] = useState(false);
|
|
|
|
|
const [AddUomModalOpen, setAddUomModalOpen] = useState(false);
|
|
|
|
|
const [Mode, setMode] = useState('N');
|
|
|
|
|
const [Checked, setChecked] = useState(false);
|
|
|
|
|
const handleMobileNumberChange = (e) => {
|
|
|
|
|
setsize(e?.target?.value);
|
|
|
|
|
formRef.current?.setFieldsValue({ Size: e?.target?.value });
|
|
|
|
|
};
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
// if (UomData.length > 0) {
|
|
|
|
|
// UOMDropDownChange(UomData?.find(item => item.NumFId == 1)?.ConfigId);
|
|
|
|
|
// }
|
|
|
|
|
if (UomData?.filter((item) => item.ActiveStatus === 'A').length > 0) {
|
|
|
|
|
UOMDropDownChange(
|
|
|
|
|
UomData?.filter((item) => item.ActiveStatus === 'A')?.find(
|
|
|
|
|
(item) => item.NumFId == 1
|
|
|
|
|
)?.ConfigId
|
|
|
|
|
);
|
|
|
|
|
} else if (UomData.length == 0) {
|
|
|
|
|
setSelectedUOM(null);
|
|
|
|
|
}
|
|
|
|
|
}, [UomData]);
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (Mode?.toLowerCase() === 'y') {
|
|
|
|
|
let data = TableDatawithCustomer.filter((item1) =>
|
|
|
|
|
CUstomerName.some(
|
|
|
|
|
(item) =>
|
|
|
|
|
item.CustId == item1?.CustId &&
|
|
|
|
|
item?.ProductDetails.some((e) => e?.ProdId == selectedValue)
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
console.log(data, 'datadatadata');
|
|
|
|
|
setSelectedRowKeys(data?.map((e) => e?.key));
|
|
|
|
|
// setSelectedCustomer(data?.map((e)=> { custId :e?.CustId} ))
|
|
|
|
|
setSelectedCustomer(
|
|
|
|
|
data?.map((e) => {
|
|
|
|
|
return { CustId: e?.CustId };
|
|
|
|
|
})
|
|
|
|
|
);
|
|
|
|
|
setDbselectedkeys(data?.map((e) => e?.key));
|
|
|
|
|
}
|
|
|
|
|
}, [selectedValue, Mode]);
|
|
|
|
|
const items = [
|
|
|
|
|
{
|
|
|
|
|
name: 'Home',
|
|
|
|
|
link: `${subDirectory}app-page/home`,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
name: 'Preorder',
|
|
|
|
|
link: `${subDirectory}setting/wholesale-preorder`,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: editstate ? 'Edit' : 'New',
|
|
|
|
|
link: null,
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
const UOMDropDownChange = (e) => {
|
|
|
|
|
formRef.current?.setFieldsValue({ UOM: e });
|
|
|
|
|
setSelectedUOM(e);
|
|
|
|
|
const selectedOption = UomData?.filter(
|
|
|
|
|
(item) => item.ActiveStatus === 'A'
|
|
|
|
|
).find((option) => option.ConfigId === e)?.ConfigName;
|
|
|
|
|
// const selectedOption = UomData.find(
|
|
|
|
|
// (option) => option.ConfigId === e
|
|
|
|
|
// )?.ConfigName;
|
|
|
|
|
setSelectedValueName((prev) => ({
|
|
|
|
|
...prev,
|
|
|
|
|
selectedUom: selectedOption,
|
|
|
|
|
}));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
dispatch(changeBreadCrumb({ items: items }));
|
|
|
|
|
fetchWholeSaleProducts();
|
|
|
|
|
if (formType === 'add') {
|
|
|
|
|
const todayDate = moment().format('YYYY-MM-DDTHH:mm:ss');
|
|
|
|
|
formRef.current?.setFieldsValue({ Date: todayDate });
|
|
|
|
|
setWsPreorderDate(todayDate);
|
|
|
|
|
}
|
|
|
|
|
getCustomerDatas();
|
|
|
|
|
}, []);
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (Mode == 'Y') {
|
|
|
|
|
getCustomerDatas();
|
|
|
|
|
}
|
|
|
|
|
}, [Mode]);
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
try {
|
|
|
|
|
if (formType === 'edit') {
|
|
|
|
|
if (editstate) {
|
|
|
|
|
setEditTable(editstate?.ProductDetails);
|
|
|
|
|
setTableData(editstate?.ProductDetails);
|
|
|
|
|
setSelectedCustomer(editstate?.CustId);
|
|
|
|
|
setWsPreorderDate(editstate?.DueDate);
|
|
|
|
|
|
|
|
|
|
formRef.current?.setFieldsValue({
|
|
|
|
|
Date: moment(editstate?.DueDate + '' + 'T00:00:00'),
|
|
|
|
|
});
|
|
|
|
|
formRef.current?.setFieldsValue({
|
|
|
|
|
Customer: moment(editstate?.CustName + '' + 'T00:00:00'),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
formRef.current?.setFieldsValue(editstate);
|
|
|
|
|
} else {
|
|
|
|
|
navigate(`${subDirectory}setting/employee-master/`);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} catch (err) {
|
|
|
|
|
console.log(err, 'err');
|
|
|
|
|
}
|
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (HigherorderComponents) {
|
|
|
|
|
formRef?.current?.setFieldsValue({ Customer: SelCustId });
|
|
|
|
|
setSelectedCustomer(SelCustId);
|
|
|
|
|
}
|
|
|
|
|
}, [SelCustId]);
|
|
|
|
|
const getCustomerDatas = async () => {
|
|
|
|
|
if (BranchId) {
|
|
|
|
|
const gettingTableData = await dispatch(
|
|
|
|
|
getCustBasedOnCmpIdBrIdAppId({ CompId, BranchId, AppId })
|
|
|
|
|
).unwrap();
|
|
|
|
|
if (gettingTableData?.data?.statusCode === 1) {
|
|
|
|
|
setTableDatawithCustomer(
|
|
|
|
|
gettingTableData?.data?.data
|
|
|
|
|
?.filter?.((item) => item.ActiveStatus == 'A')
|
|
|
|
|
?.map((e, index) => ({
|
|
|
|
|
key: index + 1, // Use `key` instead of `Key` for consistency
|
|
|
|
|
CustName: e?.CustName,
|
|
|
|
|
CustMobile: e?.CustMobile,
|
|
|
|
|
CustId: e?.CustId,
|
|
|
|
|
CustShortName: e?.CustShortName, // Add the Name property from `CustName`
|
|
|
|
|
}))
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const onFinish = async (values) => {
|
|
|
|
|
if (SelectedCustomer?.length > 0) {
|
|
|
|
|
if (Mode == 'Y') {
|
|
|
|
|
let data = {
|
|
|
|
|
AppId: AppId,
|
|
|
|
|
CompId: CompId,
|
|
|
|
|
BranchId: BranchId,
|
|
|
|
|
Customers: SelectedCustomer,
|
|
|
|
|
DueDate: Checked ? '' : WsPreorderDate.split('T')[0],
|
|
|
|
|
Type: Checked ? 'A' : 'S',
|
|
|
|
|
ProductDetails: [
|
|
|
|
|
{
|
|
|
|
|
ProdId: values?.ProdList,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
CreatedBy: UserId,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
let response = await dispatch(PostwsPreorderMultiple(data)).unwrap();
|
|
|
|
|
if (response?.data?.statusCode == '1') {
|
|
|
|
|
handleGradeCalculationBypreorder &&
|
|
|
|
|
handleGradeCalculationBypreorder();
|
|
|
|
|
setTableDatawithCustomer();
|
|
|
|
|
setWsPreorderDate();
|
|
|
|
|
setSelectedCustomer();
|
|
|
|
|
formRef?.current?.resetFields();
|
|
|
|
|
if (HigherorderComponents || WholeSalePreOrder) {
|
|
|
|
|
const today = new Date();
|
|
|
|
|
const formattedDate = today.toLocaleDateString('en-CA');
|
|
|
|
|
const Data = {
|
|
|
|
|
appId: AppId,
|
|
|
|
|
compId: CompId,
|
|
|
|
|
branchId: BranchId,
|
|
|
|
|
dueDate: WSDate,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
await dispatch(getWholeSaleAllocatedPreOrders(Data)).unwrap();
|
|
|
|
|
dispatch(changeSelectedCustId());
|
|
|
|
|
if (HigherorderComponents) {
|
|
|
|
|
Modelclose();
|
|
|
|
|
} else if (WholeSalePreOrder) {
|
|
|
|
|
handleWholeSalePreOrderAndSelectCustomer();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
const today = new Date();
|
|
|
|
|
const formattedDate = today.toLocaleDateString('en-CA');
|
|
|
|
|
const Data = {
|
|
|
|
|
appId: AppId,
|
|
|
|
|
compId: CompId,
|
|
|
|
|
branchId: BranchId,
|
|
|
|
|
dueDate: WSDate,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
await dispatch(getWholeSaleAllocatedPreOrders(Data)).unwrap();
|
|
|
|
|
navigate(`${subDirectory}setting/wholesale-preorder`);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
SetEditStatus(false);
|
|
|
|
|
let data = {
|
|
|
|
|
ProdId: values?.ProdList,
|
|
|
|
|
ProdName: SelectedValueName?.selectedProd,
|
|
|
|
|
RequestedQty: values?.Size,
|
|
|
|
|
UOM: values?.UOM,
|
|
|
|
|
UomName: SelectedValueName?.selectedUom,
|
|
|
|
|
ActiveStatus: 'A',
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Check if the product already exists in the table
|
|
|
|
|
setTableData((prev) => {
|
|
|
|
|
const existingProductIndex = prev?.findIndex(
|
|
|
|
|
(item) => item.ProdId === data?.ProdId
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (existingProductIndex !== -1) {
|
|
|
|
|
return prev.map((item, index) =>
|
|
|
|
|
index === existingProductIndex
|
|
|
|
|
? { ...data, ActiveStatus: item.ActiveStatus }
|
|
|
|
|
: item
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return [...prev, data];
|
|
|
|
|
// const existingProductIndex = prev?.findIndex(
|
|
|
|
|
// (item) => item.ProdId === data?.ProdId
|
|
|
|
|
// );
|
|
|
|
|
|
|
|
|
|
// if (existingProductIndex !== -1) {
|
|
|
|
|
// // Product exists, replace the existing entry
|
|
|
|
|
// const updatedData = [...prev];
|
|
|
|
|
// updatedData[existingProductIndex] = data;
|
|
|
|
|
// return updatedData;
|
|
|
|
|
// } else {
|
|
|
|
|
// // Product does not exist, add a new entry
|
|
|
|
|
// return [...prev, data];
|
|
|
|
|
// }
|
|
|
|
|
});
|
|
|
|
|
// setSelectedValue(null);
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
const changeUOM = UomData?.filter(
|
|
|
|
|
(item) => item.ActiveStatus === 'A'
|
|
|
|
|
)?.find((item) => item.NumFId == 1)?.ConfigId;
|
|
|
|
|
// const changeUOM = UomData?.find(item => item.NumFId == 1)?.ConfigId;
|
|
|
|
|
setSelectedUOM(changeUOM);
|
|
|
|
|
formRef.current?.setFieldsValue({ UOM: changeUOM });
|
|
|
|
|
}, 10);
|
|
|
|
|
setsize(' ');
|
|
|
|
|
|
|
|
|
|
// formRef?.current?.resetFields(["ProdList"]);
|
|
|
|
|
formRef?.current?.resetFields(['UOM']);
|
|
|
|
|
formRef?.current?.resetFields(['Size']);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
setMessageType('error');
|
|
|
|
|
setMessageData('please select customer');
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const handleChange = (pagination, filters, sorter) => {
|
|
|
|
|
setFilteredInfo(filters);
|
|
|
|
|
setSortedInfo(sorter);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const handlePageChange = (current) => {
|
|
|
|
|
setpage(current);
|
|
|
|
|
};
|
|
|
|
|
const handlePageChange1 = (current) => {
|
|
|
|
|
setpage1(current);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const onSelectChange = (newSelectedRowKeys, selectedRows) => {
|
|
|
|
|
if (newSelectedRowKeys !== selectedRowKeys) {
|
|
|
|
|
setSelectedRowKeys([...newSelectedRowKeys, ...Dbselectedkeys]);
|
|
|
|
|
setSelectedCustomer(getSelectedCustomerData(selectedRows));
|
|
|
|
|
console.log('Selected Row Keys:', newSelectedRowKeys);
|
|
|
|
|
console.log('Selected Rows:', selectedRows);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
const errorMsgFn = () => {
|
|
|
|
|
setMessageData('Have got to Choose Product First');
|
|
|
|
|
setMessageType('warning');
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const getSelectedCustomerData = (selectedRows) => {
|
|
|
|
|
let data = new Map();
|
|
|
|
|
selectedRows.forEach((row) => {
|
|
|
|
|
if (row?.CustId) {
|
|
|
|
|
data?.set(row.CustId, { CustId: row.CustId });
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return [...data?.values()];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const rowSelection = {
|
|
|
|
|
selectedRowKeys,
|
|
|
|
|
onChange: selectedValue ? onSelectChange : errorMsgFn,
|
|
|
|
|
selections: [
|
|
|
|
|
Table.SELECTION_ALL,
|
|
|
|
|
Table.SELECTION_INVERT,
|
|
|
|
|
Table.SELECTION_NONE,
|
|
|
|
|
],
|
|
|
|
|
};
|
|
|
|
|
const resetSelection = () => {
|
|
|
|
|
setSelectedValue();
|
|
|
|
|
formRef.current?.setFieldsValue({ ProdList: '' });
|
|
|
|
|
setSelectedValueName({
|
|
|
|
|
selectedProd: null,
|
|
|
|
|
selectedUom: null,
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const onchangeStatus = (e) => {
|
|
|
|
|
setMode(e?.target?.value);
|
|
|
|
|
if (e?.target?.value === 'N') {
|
|
|
|
|
setSelectedCustomer();
|
|
|
|
|
if (CommonDataFilter?.length !== 1) {
|
|
|
|
|
resetSelection();
|
|
|
|
|
}
|
|
|
|
|
} else if (e?.target?.value === 'Y') {
|
|
|
|
|
if (CommonDataFilter?.length === 1) {
|
|
|
|
|
setSelectedValue(CommonDataFilter[0]?.ProdId);
|
|
|
|
|
formRef.current?.setFieldsValue({
|
|
|
|
|
ProdList: CommonDataFilter[0]?.ProdId,
|
|
|
|
|
});
|
|
|
|
|
setSelectedValueName((prev) => ({
|
|
|
|
|
...prev,
|
|
|
|
|
selectedProd: CommonDataFilter[0]?.ProdName,
|
|
|
|
|
}));
|
|
|
|
|
} else {
|
|
|
|
|
resetSelection();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
setSelectedRowKeys([]);
|
|
|
|
|
setSearchedText('');
|
|
|
|
|
setChecked(false);
|
|
|
|
|
};
|
|
|
|
|
const actionsFormatter = (record) => {
|
|
|
|
|
// formRef.current?.setFieldsValue(record);
|
|
|
|
|
SetEditStatus(true);
|
|
|
|
|
ChangeProduct(record.ProdId);
|
|
|
|
|
UOMDropDownChange(record.UOM);
|
|
|
|
|
formRef.current?.setFieldsValue({
|
|
|
|
|
Size: record?.RequestedQty,
|
|
|
|
|
});
|
|
|
|
|
setsize(record?.RequestedQty);
|
|
|
|
|
|
|
|
|
|
// Size
|
|
|
|
|
};
|
|
|
|
|
const columns = [
|
|
|
|
|
{
|
|
|
|
|
title: 'Sl.No',
|
|
|
|
|
key: 'sno',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: '50px',
|
|
|
|
|
render: (text, object, index) => (
|
|
|
|
|
<a style={{ color: 'black' }}>{(page - 1) * 10 + index + 1}</a>
|
|
|
|
|
),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Product Name',
|
|
|
|
|
dataIndex: 'ProdName',
|
|
|
|
|
key: 'ProdName',
|
|
|
|
|
width: '100px',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Size',
|
|
|
|
|
dataIndex: 'RequestedQty',
|
|
|
|
|
key: 'RequestedQty',
|
|
|
|
|
width: '100px',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Uom',
|
|
|
|
|
dataIndex: 'UomName',
|
|
|
|
|
key: 'UomName',
|
|
|
|
|
width: '100px',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Delete',
|
|
|
|
|
dataIndex: 'ActiveStatus',
|
|
|
|
|
key: 'ActiveStatus',
|
|
|
|
|
width: '10px',
|
|
|
|
|
render: (_, record) => (
|
|
|
|
|
<Space size="middle">
|
|
|
|
|
{record?.ActiveStatus === 'A' ? (
|
|
|
|
|
<a>
|
|
|
|
|
<EditFilled
|
|
|
|
|
style={{ color: '#1292EE' }}
|
|
|
|
|
onClick={() => actionsFormatter(record)}
|
|
|
|
|
/>
|
|
|
|
|
</a>
|
|
|
|
|
) : null}
|
|
|
|
|
|
|
|
|
|
{record?.ActiveStatus === 'A' ? (
|
|
|
|
|
<DeleteFilled
|
|
|
|
|
className="shape-delete"
|
|
|
|
|
style={{
|
|
|
|
|
color: '#FF4D4F',
|
|
|
|
|
}}
|
|
|
|
|
onClick={() => (!EditStatus ? handleRemove(record.ProdId) : ' ')}
|
|
|
|
|
/>
|
|
|
|
|
) : (
|
|
|
|
|
<ReloadOutlined
|
|
|
|
|
style={{
|
|
|
|
|
color: '#52C41A',
|
|
|
|
|
}}
|
|
|
|
|
onClick={() => handleRemove(record.ProdId)}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
|
|
|
|
</Space>
|
|
|
|
|
),
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
const columnswithCustomer = [
|
|
|
|
|
{
|
|
|
|
|
title: 'Sl.No',
|
|
|
|
|
key: 'sno',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: '30px',
|
|
|
|
|
render: (text, object, index) => (
|
|
|
|
|
<a style={{ color: 'black' }}>{(page - 1) * 10 + index + 1}</a>
|
|
|
|
|
),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Customer Name',
|
|
|
|
|
dataIndex: 'CustShortName',
|
|
|
|
|
key: 'CustShortName',
|
|
|
|
|
width: '50px',
|
|
|
|
|
filteredValue: [searchedText],
|
|
|
|
|
onFilter: (value, record) => {
|
|
|
|
|
return (
|
|
|
|
|
String(record.CustShortName)
|
2026-02-23 12:18:31 +05:30
|
|
|
?.toLowerCase()
|
|
|
|
|
?.includes(value?.toLowerCase()) ||
|
|
|
|
|
String(record.CustName)
|
|
|
|
|
?.toLowerCase()
|
2026-01-27 18:27:29 +05:30
|
|
|
?.includes(value?.toLowerCase()) ||
|
2026-02-23 12:18:31 +05:30
|
|
|
String(record.CustMobile)
|
|
|
|
|
?.toLowerCase()
|
|
|
|
|
?.includes(value?.toLowerCase())
|
2026-01-27 18:27:29 +05:30
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
render: (text, record, row) => (
|
|
|
|
|
<a style={{ color: 'black', width: '200px' }}>
|
|
|
|
|
{record?.CustShortName || record?.CustName || record?.CustMobile}
|
|
|
|
|
</a>
|
|
|
|
|
),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Mobile',
|
|
|
|
|
dataIndex: 'CustMobile',
|
|
|
|
|
key: 'CustMobile',
|
|
|
|
|
width: '50px',
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
const SelectedPreorderCustomer = [
|
|
|
|
|
{
|
|
|
|
|
title: 'Sl.No',
|
|
|
|
|
key: 'sno',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: '20px',
|
|
|
|
|
render: (text, object, index) => (
|
|
|
|
|
<a style={{ color: 'black' }}>{(page1 - 1) * 10 + index + 1}</a>
|
|
|
|
|
),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Customer Name',
|
|
|
|
|
dataIndex: 'CustName',
|
|
|
|
|
key: 'CustName',
|
|
|
|
|
width: '250px',
|
|
|
|
|
render: (text, record, row) => (
|
|
|
|
|
<a style={{ color: 'black', width: '200px' }}>
|
|
|
|
|
{record?.CustShortName || record?.CustName || record?.CustMobile}
|
|
|
|
|
</a>
|
|
|
|
|
),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Mobile',
|
|
|
|
|
dataIndex: 'CustMobile',
|
|
|
|
|
key: 'CustMobile',
|
|
|
|
|
width: '250px',
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
const handleRemove = (prodId) => {
|
|
|
|
|
if (formType === 'add') {
|
|
|
|
|
setTableData((prev) => prev.filter((item) => item.ProdId !== prodId));
|
|
|
|
|
} else {
|
|
|
|
|
// if (editTable?.some((item) => item.ProdId !== prodId)) {
|
|
|
|
|
// setTableData((prev) => prev.filter((item) => item.ProdId !== prodId));
|
|
|
|
|
// }
|
|
|
|
|
if (editTable?.some((item) => item.ProdId == prodId)) {
|
|
|
|
|
setTableData((prev) =>
|
|
|
|
|
prev.map((item) =>
|
|
|
|
|
item.ProdId === prodId
|
|
|
|
|
? { ...item, ActiveStatus: item.ActiveStatus === 'A' ? 'D' : 'A' }
|
|
|
|
|
: item
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
setTableData((prev) => prev.filter((item) => item.ProdId !== prodId));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
const ChangeProduct = (value) => {
|
|
|
|
|
setSelectedValue(value);
|
|
|
|
|
const selectedOption = CommonDataFilter.find(
|
|
|
|
|
(option) => option.ProdId === value
|
|
|
|
|
)?.ProdName;
|
|
|
|
|
setSelectedValueName((prev) => ({
|
|
|
|
|
...prev,
|
|
|
|
|
selectedProd: selectedOption,
|
|
|
|
|
}));
|
|
|
|
|
formRef.current?.setFieldsValue({ ProdList: value });
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const wsPreOrderDate = async (date, dateString) => {
|
|
|
|
|
if (dateString) {
|
|
|
|
|
const Date1 = moment(dateString, ['DD-MM-YYYY']).format(
|
|
|
|
|
'YYYY-MM-DDTHH:mm:ss'
|
|
|
|
|
);
|
|
|
|
|
formRef.current?.setFieldsValue({ Date: Date1 });
|
|
|
|
|
setWsPreorderDate(Date1);
|
|
|
|
|
} else {
|
|
|
|
|
setWsPreorderDate(null);
|
|
|
|
|
formRef.current?.setFieldsValue({ Date: null });
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const fetchWholeSaleProducts = async () => {
|
|
|
|
|
const getUomResponse = await dispatch(getWholesaleUomData()).unwrap();
|
|
|
|
|
await dispatch(getWholesaleQuantityData());
|
|
|
|
|
const gettingTableData = await dispatch(
|
|
|
|
|
getCustBasedOnCmpIdBrIdAppId({ CompId, BranchId, AppId })
|
|
|
|
|
).unwrap();
|
|
|
|
|
if (gettingTableData?.data?.statusCode === 1) {
|
|
|
|
|
setCustomer(gettingTableData?.data?.data);
|
|
|
|
|
}
|
|
|
|
|
let response = await dispatch(
|
|
|
|
|
getWholeSaleProducts({ CompId: CompId, AppId: AppId, BranchId: BranchId })
|
|
|
|
|
).unwrap();
|
|
|
|
|
if (response?.data?.statusCode == 1) {
|
|
|
|
|
let res = response?.data?.data?.filter(
|
|
|
|
|
(item) => item.ActiveStatus === 'A'
|
|
|
|
|
);
|
|
|
|
|
setCommonDataFilter(res);
|
|
|
|
|
if (res?.length == 1) {
|
|
|
|
|
setSelectedValue(res?.[0]?.ProdId);
|
|
|
|
|
formRef.current?.setFieldsValue({ ProdList: res?.[0]?.ProdId });
|
|
|
|
|
setSelectedValueName((prev) => ({
|
|
|
|
|
...prev,
|
|
|
|
|
selectedProd: res?.[0]?.ProdName,
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const ChangeCustomer = (e) => {
|
|
|
|
|
formRef?.current?.setFieldsValue({ Customer: e });
|
|
|
|
|
setSelectedCustomer(e);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const handleFormSubmit = async () => {
|
|
|
|
|
if (formType === 'edit') {
|
|
|
|
|
let data = {
|
|
|
|
|
AppId: AppId,
|
|
|
|
|
CompId: CompId,
|
|
|
|
|
BranchId: BranchId,
|
|
|
|
|
CustId: SelectedCustomer,
|
|
|
|
|
DueDate: WsPreorderDate.split('T')[0],
|
|
|
|
|
ProductDetails: TableData,
|
|
|
|
|
UpdatedBy: UserId,
|
|
|
|
|
PreOrderId: editstate.PreOrderId,
|
|
|
|
|
};
|
|
|
|
|
let response = await dispatch(PuttwsPreorder(data)).unwrap();
|
|
|
|
|
|
|
|
|
|
if (response?.data?.statusCode == '1') {
|
|
|
|
|
setTableData();
|
|
|
|
|
setWsPreorderDate();
|
|
|
|
|
setSelectedCustomer();
|
|
|
|
|
formRef?.current?.resetFields();
|
|
|
|
|
navigate(`${subDirectory}setting/wholesale-preorder`);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
let data = {
|
|
|
|
|
AppId: AppId,
|
|
|
|
|
CompId: CompId,
|
|
|
|
|
BranchId: BranchId,
|
|
|
|
|
Customers: [
|
|
|
|
|
{
|
|
|
|
|
CustId: SelectedCustomer,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
DueDate: Checked ? '' : WsPreorderDate.split('T')[0],
|
|
|
|
|
ProductDetails: TableData,
|
|
|
|
|
CreatedBy: UserId,
|
|
|
|
|
Type: Checked ? 'A' : 'S',
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
let response = await dispatch(PostwsPreorderMultiple(data)).unwrap();
|
|
|
|
|
|
|
|
|
|
if (response?.data?.statusCode == '1') {
|
|
|
|
|
setTableData();
|
|
|
|
|
setWsPreorderDate();
|
|
|
|
|
setSelectedCustomer();
|
|
|
|
|
formRef?.current?.resetFields();
|
|
|
|
|
dispatch(changeSelectedOption(null));
|
|
|
|
|
if (HigherorderComponents || WholeSalePreOrder) {
|
|
|
|
|
const today = new Date();
|
|
|
|
|
const formattedDate = today.toLocaleDateString('en-CA');
|
|
|
|
|
const Data = {
|
|
|
|
|
appId: AppId,
|
|
|
|
|
compId: CompId,
|
|
|
|
|
branchId: BranchId,
|
|
|
|
|
dueDate: WSDate,
|
|
|
|
|
};
|
|
|
|
|
await dispatch(getWholeSaleAllocatedPreOrders(Data)).unwrap();
|
|
|
|
|
dispatch(changeSelectedCustId());
|
|
|
|
|
if (HigherorderComponents) {
|
|
|
|
|
Modelclose();
|
|
|
|
|
} else if (WholeSalePreOrder) {
|
|
|
|
|
handleWholeSalePreOrderAndSelectCustomer();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
navigate(`${subDirectory}setting/wholesale-preorder`);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (response?.data?.response == 'Config Not Added') {
|
|
|
|
|
setMessageType('error');
|
|
|
|
|
setMessageData('This Product is already added');
|
|
|
|
|
} else {
|
|
|
|
|
setMessageType('error');
|
|
|
|
|
setMessageData(response?.data?.response);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
handleGradeCalculationBypreorder && handleGradeCalculationBypreorder();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const handleAddCustomer = () => {
|
|
|
|
|
setAddCustomer(true);
|
|
|
|
|
};
|
|
|
|
|
const handleAddCustomerCancel = () => {
|
|
|
|
|
fetchWholeSaleProducts();
|
|
|
|
|
setAddCustomer(false);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const handleHoldCancel = () => {
|
|
|
|
|
setHold(false);
|
|
|
|
|
};
|
|
|
|
|
const onComplete = useCallback(() => {
|
|
|
|
|
setMessageData(null);
|
|
|
|
|
setMessageType(null);
|
|
|
|
|
}, []);
|
|
|
|
|
const AddUomModalFun = async (e) => {
|
|
|
|
|
setAddUomModalOpen(e);
|
|
|
|
|
};
|
|
|
|
|
const Checking = (e) => {
|
|
|
|
|
if (Checked) {
|
|
|
|
|
setChecked(false);
|
|
|
|
|
} else {
|
|
|
|
|
setChecked(true);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
const onSearch = (value) => {
|
|
|
|
|
setSearchedText(value);
|
|
|
|
|
};
|
|
|
|
|
const onSearchChange = (e) => {
|
|
|
|
|
setSearchedText(e?.target?.value);
|
|
|
|
|
};
|
|
|
|
|
return (
|
2026-02-23 12:18:31 +05:30
|
|
|
<Suspense fallback={<div>Loading…</div>}>
|
|
|
|
|
<div className="WsPreOrderForm-Master">
|
|
|
|
|
<div className="pageOverAll" style={{ height: Mode == 'Y' && '100%' }}>
|
|
|
|
|
{(addcustomer || hold) && (
|
|
|
|
|
<FeaturesFunctionalities
|
|
|
|
|
handleAddCustomerCancel={handleAddCustomerCancel}
|
|
|
|
|
addcustomer={addcustomer}
|
|
|
|
|
handleHoldCancel={handleHoldCancel}
|
|
|
|
|
modalOpen={hold}
|
2026-01-27 18:27:29 +05:30
|
|
|
/>
|
2026-02-23 12:18:31 +05:30
|
|
|
)}
|
|
|
|
|
<div className="userPage">
|
|
|
|
|
<div className="userPageContent">
|
|
|
|
|
<Messages
|
|
|
|
|
messageType={messageType}
|
|
|
|
|
messageData={messageData}
|
|
|
|
|
onComplete={onComplete}
|
|
|
|
|
/>
|
|
|
|
|
<div className="formName">
|
|
|
|
|
<FormHeader title={'Preorder'} />
|
|
|
|
|
</div>
|
2026-01-27 18:27:29 +05:30
|
|
|
|
2026-02-23 12:18:31 +05:30
|
|
|
<div
|
|
|
|
|
className="formDiv"
|
|
|
|
|
style={{
|
|
|
|
|
height:
|
|
|
|
|
Mode === 'Y'
|
|
|
|
|
? WholeSalePreOrder
|
|
|
|
|
? '76vh'
|
|
|
|
|
: HigherorderComponents
|
|
|
|
|
? '67vh'
|
|
|
|
|
: '80vh'
|
|
|
|
|
: '65vh',
|
|
|
|
|
}}
|
2026-01-27 18:27:29 +05:30
|
|
|
>
|
2026-02-23 12:18:31 +05:30
|
|
|
<Form
|
|
|
|
|
ref={formRef}
|
|
|
|
|
className="formDivAnt"
|
|
|
|
|
onFinish={onFinish}
|
|
|
|
|
initialValues={{ ...editstate }}
|
|
|
|
|
>
|
|
|
|
|
<div className="HeaderofselectStatus">
|
|
|
|
|
{formType == 'add' && (
|
|
|
|
|
<Radio.Group onChange={onchangeStatus} value={Mode}>
|
|
|
|
|
<Radio value="N">Individual</Radio>
|
|
|
|
|
<Radio value="Y">Customers</Radio>
|
|
|
|
|
</Radio.Group>
|
|
|
|
|
)}
|
2026-01-27 18:27:29 +05:30
|
|
|
|
2026-02-23 12:18:31 +05:30
|
|
|
{Mode == 'Y' && (
|
|
|
|
|
<div className="dateandandproductPRE">
|
|
|
|
|
<Form.Item
|
|
|
|
|
name="ProdList"
|
|
|
|
|
rules={[
|
|
|
|
|
{
|
|
|
|
|
required: true,
|
|
|
|
|
message: 'Please Enter Product',
|
|
|
|
|
},
|
|
|
|
|
]}
|
|
|
|
|
>
|
|
|
|
|
<DropDowns
|
|
|
|
|
defaultValue={selectedValue}
|
|
|
|
|
options={CommonDataFilter?.map((option) => ({
|
|
|
|
|
value: option?.ProdId,
|
|
|
|
|
label: option?.ProdName,
|
|
|
|
|
data: option,
|
|
|
|
|
}))}
|
|
|
|
|
label={<label>Product </label>}
|
|
|
|
|
className="field-DropDown"
|
|
|
|
|
onChangeFunction={(e) => ChangeProduct(e)}
|
|
|
|
|
valueData={selectedValue}
|
|
|
|
|
disabled={EditStatus ? true : false}
|
|
|
|
|
/>
|
|
|
|
|
</Form.Item>
|
2026-01-27 18:27:29 +05:30
|
|
|
|
2026-02-23 12:18:31 +05:30
|
|
|
<Form.Item
|
|
|
|
|
name="Date"
|
|
|
|
|
rules={[
|
|
|
|
|
{
|
|
|
|
|
required: Checked ? false : true,
|
|
|
|
|
message: 'Please Enter Date',
|
|
|
|
|
},
|
|
|
|
|
]}
|
|
|
|
|
>
|
|
|
|
|
<label style={{ fontWeight: '600' }}>Date : </label>
|
|
|
|
|
<br />
|
|
|
|
|
<br />
|
|
|
|
|
<DatePicProd
|
|
|
|
|
canSelectPast={true}
|
|
|
|
|
onChange={wsPreOrderDate}
|
|
|
|
|
valueData={WsPreorderDate}
|
|
|
|
|
disabled={Checked}
|
|
|
|
|
minDate={WSLastEntryDate}
|
2026-01-27 18:27:29 +05:30
|
|
|
/>
|
2026-02-23 12:18:31 +05:30
|
|
|
</Form.Item>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
All Days : {' '}
|
|
|
|
|
<Checkbox onClick={(e) => Checking(e)} />{' '}
|
|
|
|
|
</p>
|
|
|
|
|
<div className="AllCustomerAlldays">
|
|
|
|
|
<div className="searchAddDiv">
|
|
|
|
|
<Search
|
|
|
|
|
placeholder="Search"
|
|
|
|
|
onSearch={onSearch}
|
|
|
|
|
onSearchChange={onSearchChange}
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
2026-01-27 18:27:29 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2026-02-23 12:18:31 +05:30
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|
{Mode == 'N' && (
|
|
|
|
|
<div className="formDivS">
|
|
|
|
|
<div
|
|
|
|
|
style={{
|
|
|
|
|
display: 'flex',
|
|
|
|
|
flexDirection: 'column',
|
|
|
|
|
flexWrap: 'wrap',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
<div className="wspreorder-input1">
|
|
|
|
|
<div className="inputForm">
|
|
|
|
|
<Form.Item
|
|
|
|
|
name="Customer"
|
|
|
|
|
rules={[
|
|
|
|
|
{
|
|
|
|
|
required: true,
|
|
|
|
|
message: 'Please Enter Customer',
|
|
|
|
|
},
|
|
|
|
|
]}
|
|
|
|
|
>
|
|
|
|
|
<div className="customeraddcustomer">
|
|
|
|
|
<DropDowns
|
|
|
|
|
defaultValue={SelectedCustomer}
|
|
|
|
|
options={customer?.map((option) => ({
|
|
|
|
|
value: option?.CustId,
|
|
|
|
|
label: option?.CustShortName
|
|
|
|
|
? option?.CustShortName
|
|
|
|
|
: option?.CustName
|
|
|
|
|
? option?.CustName
|
|
|
|
|
: option?.CustMobile,
|
|
|
|
|
}))}
|
|
|
|
|
label={
|
|
|
|
|
<label className="required">Customer</label>
|
|
|
|
|
}
|
|
|
|
|
className="field-DropDown"
|
|
|
|
|
onChangeFunction={(e) => ChangeCustomer(e)}
|
|
|
|
|
valueData={SelectedCustomer}
|
|
|
|
|
disabled={
|
|
|
|
|
formType == 'edit' || HigherorderComponents
|
|
|
|
|
? true
|
|
|
|
|
: false
|
|
|
|
|
}
|
|
|
|
|
/>
|
|
|
|
|
{!HigherorderComponents && (
|
|
|
|
|
<Tooltip title="Add Customer" placement="top">
|
|
|
|
|
<PozoAddCustomerIcon
|
|
|
|
|
className="BSBillingNav-icon-table-icon"
|
|
|
|
|
onClick={handleAddCustomer}
|
|
|
|
|
style={{
|
|
|
|
|
fontSize: '25px',
|
|
|
|
|
color: '#1292EE',
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
</Tooltip>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|
</Form.Item>
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
|
|
|
|
style={{
|
|
|
|
|
display: 'flex',
|
|
|
|
|
flexDirection: 'row',
|
|
|
|
|
alignItems: 'baseline',
|
|
|
|
|
gap: '1rem',
|
|
|
|
|
whiteSpace: 'nowrap',
|
|
|
|
|
}}
|
2026-01-27 18:27:29 +05:30
|
|
|
>
|
2026-02-23 12:18:31 +05:30
|
|
|
<Form.Item
|
|
|
|
|
name="Date"
|
|
|
|
|
rules={[
|
|
|
|
|
{
|
|
|
|
|
required: Checked ? false : true,
|
|
|
|
|
message: 'Please Enter Date',
|
|
|
|
|
},
|
|
|
|
|
]}
|
|
|
|
|
>
|
|
|
|
|
<label style={{ fontWeight: '600' }}>
|
|
|
|
|
Date :{' '}
|
|
|
|
|
</label>
|
|
|
|
|
<br />
|
|
|
|
|
<br />
|
|
|
|
|
<DatePicProd
|
|
|
|
|
canSelectPast={true}
|
|
|
|
|
onChange={wsPreOrderDate}
|
|
|
|
|
valueData={WsPreorderDate}
|
|
|
|
|
disabled={Checked}
|
|
|
|
|
minDate={WSLastEntryDate}
|
|
|
|
|
/>
|
|
|
|
|
</Form.Item>
|
|
|
|
|
<p>All Days : </p>
|
|
|
|
|
|
|
|
|
|
<Checkbox
|
|
|
|
|
// checked={SelectData?.includes(record.UniqueId) ? true : false}
|
|
|
|
|
onClick={(e) => Checking(e)}
|
|
|
|
|
// disabled={(Object.keys(ReorderHoldDetails).length !== 0 && BookingType === "Dine In" && GlobalExtraCharge.some(item => item.ExtraChargeId === record.UniqueId)) ? true : false}
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="wspreorder-input1">
|
|
|
|
|
<div>
|
|
|
|
|
<Form.Item
|
|
|
|
|
name="ProdList"
|
|
|
|
|
rules={[
|
|
|
|
|
{
|
|
|
|
|
required: true,
|
|
|
|
|
message: 'Please Enter Product',
|
|
|
|
|
},
|
|
|
|
|
]}
|
|
|
|
|
>
|
2026-01-27 18:27:29 +05:30
|
|
|
<DropDowns
|
2026-02-23 12:18:31 +05:30
|
|
|
defaultValue={selectedValue}
|
|
|
|
|
options={CommonDataFilter?.map((option) => ({
|
|
|
|
|
value: option?.ProdId,
|
|
|
|
|
label: option?.ProdName,
|
|
|
|
|
data: option,
|
2026-01-27 18:27:29 +05:30
|
|
|
}))}
|
|
|
|
|
label={
|
2026-02-23 12:18:31 +05:30
|
|
|
<label className="required">Product</label>
|
2026-01-27 18:27:29 +05:30
|
|
|
}
|
|
|
|
|
className="field-DropDown"
|
2026-02-23 12:18:31 +05:30
|
|
|
onChangeFunction={(e) => ChangeProduct(e)}
|
|
|
|
|
valueData={selectedValue}
|
|
|
|
|
disabled={EditStatus ? true : false}
|
|
|
|
|
/>
|
|
|
|
|
</Form.Item>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="inputForm1">
|
|
|
|
|
<Form.Item
|
|
|
|
|
name="Size"
|
|
|
|
|
rules={[
|
|
|
|
|
{
|
|
|
|
|
validator: async (_, value) => {
|
|
|
|
|
await validateSafeInput(value); // To block HTML tags & SQL keywords
|
|
|
|
|
return Promise.resolve();
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
]}
|
|
|
|
|
>
|
|
|
|
|
<InputField
|
|
|
|
|
field="Size"
|
|
|
|
|
value={size}
|
|
|
|
|
label={<label>Requested Qty</label>}
|
|
|
|
|
fieldState={true}
|
|
|
|
|
type="number"
|
|
|
|
|
fieldApi={true}
|
|
|
|
|
autocomplete="off"
|
|
|
|
|
onChange={handleMobileNumberChange}
|
|
|
|
|
isOnChange={
|
|
|
|
|
formRef.current?.getFieldsValue()?.Size
|
2026-01-27 18:27:29 +05:30
|
|
|
? true
|
|
|
|
|
: false
|
|
|
|
|
}
|
|
|
|
|
/>
|
2026-02-23 12:18:31 +05:30
|
|
|
|
|
|
|
|
<Form.Item className="kgsDD" name="UOM">
|
|
|
|
|
<DropDowns
|
|
|
|
|
options={UomData?.filter(
|
|
|
|
|
(item) => item.ActiveStatus === 'A'
|
|
|
|
|
)?.map((option) => ({
|
|
|
|
|
value: option.ConfigId,
|
|
|
|
|
label: option.ConfigName,
|
|
|
|
|
}))}
|
|
|
|
|
onChangeFunction={(e) => UOMDropDownChange(e)}
|
|
|
|
|
valueData={selectedUOM}
|
|
|
|
|
disabled={editstate?.UOM ? true : false}
|
|
|
|
|
/>
|
|
|
|
|
</Form.Item>
|
|
|
|
|
<IoMdAddCircle
|
|
|
|
|
style={{
|
|
|
|
|
fontSize: '1.5rem',
|
|
|
|
|
paddingTop: '8px',
|
|
|
|
|
}}
|
|
|
|
|
onClick={() => {
|
|
|
|
|
AddUomModalFun(true);
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
</Form.Item>
|
|
|
|
|
</div>
|
|
|
|
|
<div></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="submitButton1">
|
|
|
|
|
<Buttons
|
|
|
|
|
buttonText="ADD"
|
|
|
|
|
color="901D77"
|
|
|
|
|
icon={<IoMdAdd color="#ffffff" size={16} />}
|
|
|
|
|
/>
|
2026-01-27 18:27:29 +05:30
|
|
|
</div>
|
2026-02-23 12:18:31 +05:30
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="reportTable">
|
2026-01-27 18:27:29 +05:30
|
|
|
<div
|
|
|
|
|
style={{
|
2026-02-23 12:18:31 +05:30
|
|
|
color: '#000',
|
|
|
|
|
fontSize: '14px',
|
|
|
|
|
fontWeight: '600',
|
|
|
|
|
overflow: 'hidden',
|
2026-01-27 18:27:29 +05:30
|
|
|
}}
|
|
|
|
|
>
|
2026-02-23 12:18:31 +05:30
|
|
|
Preorder List
|
|
|
|
|
</div>
|
|
|
|
|
<div className="preorder-table">
|
|
|
|
|
<Tables
|
|
|
|
|
columns={columns}
|
|
|
|
|
data={TableData}
|
|
|
|
|
dataSource={TableData}
|
|
|
|
|
pagination={handlePageChange}
|
|
|
|
|
onChange={handleChange}
|
2026-01-27 18:27:29 +05:30
|
|
|
/>
|
|
|
|
|
</div>
|
2026-02-23 12:18:31 +05:30
|
|
|
<div className="PROCEEDTBN1">
|
|
|
|
|
{TableData?.length > 0 && (
|
|
|
|
|
<Buttons
|
|
|
|
|
buttonText="PROCEED"
|
|
|
|
|
handleSubmit={handleFormSubmit}
|
2026-01-27 18:27:29 +05:30
|
|
|
/>
|
2026-02-23 12:18:31 +05:30
|
|
|
)}
|
2026-01-27 18:27:29 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2026-02-23 12:18:31 +05:30
|
|
|
)}
|
|
|
|
|
<>
|
|
|
|
|
{Mode == 'Y' && (
|
|
|
|
|
<div className="PreOrderFormWithCustomer">
|
|
|
|
|
<div
|
|
|
|
|
className="reportTable11"
|
|
|
|
|
style={{
|
|
|
|
|
height: WholeSalePreOrder
|
|
|
|
|
? '50vh'
|
|
|
|
|
: HigherorderComponents
|
|
|
|
|
? '47vh'
|
|
|
|
|
: '60vh',
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
<h3 className="headPreorderCustomer-Table">
|
|
|
|
|
Listed Customers
|
|
|
|
|
</h3>
|
|
|
|
|
<Tables
|
|
|
|
|
columns={columnswithCustomer}
|
|
|
|
|
data={TableDatawithCustomer}
|
|
|
|
|
dataSource={TableDatawithCustomer}
|
|
|
|
|
pagination={handlePageChange}
|
|
|
|
|
onChange={handleChange}
|
|
|
|
|
rowSelection={rowSelection}
|
|
|
|
|
/>{' '}
|
2026-01-27 18:27:29 +05:30
|
|
|
</div>
|
|
|
|
|
{Mode == 'Y' && (
|
2026-02-23 12:18:31 +05:30
|
|
|
<div className="PROCEEDTBN">
|
|
|
|
|
<Buttons
|
|
|
|
|
buttonText="PROCEED"
|
|
|
|
|
color="901D77"
|
|
|
|
|
icon={<ArrowRightOutlined />}
|
|
|
|
|
// handleSubmit={() => { HandleSelectedEst() }}
|
2026-01-27 18:27:29 +05:30
|
|
|
/>
|
2026-02-23 12:18:31 +05:30
|
|
|
</div>
|
2026-01-27 18:27:29 +05:30
|
|
|
)}
|
2026-02-23 12:18:31 +05:30
|
|
|
|
|
|
|
|
<div className="reportTable112">
|
|
|
|
|
{Mode == 'Y' && (
|
|
|
|
|
<>
|
|
|
|
|
<h3 className="headPreorderCustomer-Table">
|
|
|
|
|
Today Listed Customers
|
|
|
|
|
</h3>
|
|
|
|
|
<Tables
|
|
|
|
|
columns={SelectedPreorderCustomer}
|
|
|
|
|
data={CUstomerName}
|
|
|
|
|
dataSource={CUstomerName}
|
|
|
|
|
pagination={handlePageChange1}
|
|
|
|
|
onChange={handleChange}
|
|
|
|
|
/>
|
|
|
|
|
</>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
2026-01-27 18:27:29 +05:30
|
|
|
</div>
|
2026-02-23 12:18:31 +05:30
|
|
|
)}
|
|
|
|
|
</>
|
|
|
|
|
{Mode == 'Y' && (
|
|
|
|
|
<div className="PROCEEDTBN-RES">
|
|
|
|
|
<Buttons
|
|
|
|
|
buttonText="PROCEED"
|
|
|
|
|
color="901D77"
|
|
|
|
|
icon={<ArrowRightOutlined />}
|
|
|
|
|
// handleSubmit={() => { HandleSelectedEst() }}
|
|
|
|
|
/>
|
2026-01-27 18:27:29 +05:30
|
|
|
</div>
|
|
|
|
|
)}
|
2026-02-23 12:18:31 +05:30
|
|
|
</Form>
|
|
|
|
|
{AddUomModalOpen && (
|
|
|
|
|
<AddUOMPreorder
|
|
|
|
|
AddsuppOpen={AddUomModalOpen}
|
|
|
|
|
HandleModalClose={() => AddUomModalFun(false)}
|
|
|
|
|
/>
|
2026-01-27 18:27:29 +05:30
|
|
|
)}
|
2026-02-23 12:18:31 +05:30
|
|
|
</div>
|
2026-01-27 18:27:29 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2026-02-23 12:18:31 +05:30
|
|
|
</Suspense>
|
2026-01-27 18:27:29 +05:30
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default WsPreOrderForm;
|