import React, { useEffect,useRef, useState } from 'react'; import { Form, Tooltip } from 'antd'; import { PlusCircleOutlined } from '@ant-design/icons'; import { DefaultModal } from "../../Components/Modal/DefaultModal.jsx"; import { InputField } from "../../Components/Forms/InputField.jsx"; import { postSupplier } from "../../Features/ProductPage/ProductPage.js"; import { useDispatch } from 'react-redux'; import { getSession, validateSafeInput } from '../../Services/Others.js'; import {getConfigType} from '../../Features/BookingScreen/BookingData/BookingData.js'; import { DropDowns } from '../../Components/Forms/DropDown.jsx'; const AddSupplierModal = ({ onSupplierAdded, message, }) => { const dispatch = useDispatch(); const formSupplierRef = useRef(null); const UserId = getSession('UserId'); const CompId = getSession('CompId'); const AppId = getSession('AppId'); const BranchId = getSession('BranchId'); const [openPurSupplierModel, setOpenPurSupplierModel] = useState(false); const [zipCodeData, setZipCodeData] = useState(false); const [deliveryPerformanceData, SetDeleveryPerformanceData] = useState([]); const [DiscountData, setDiscountData] = useState([]); const [QualityData, setQualityData] = useState([]); const [Delivery, setDeliveryValue] = useState(); const [DicountValue, setDicountValue] = useState(); const [QualityValue, setQualityValue] = useState(); const [ViewDtl, setViewDtl] = useState(false); useEffect(() => { deliveryPerformance(); discountLevel(); qualityofSupp(); }, []); const addPurSupplier = () => { setOpenPurSupplierModel(true); }; const pinCodeChange = async (e) => { if (e.target.value?.length < 6) { setZipCodeData(false); return false; } await getPincodeValues(e?.target?.value); }; const getPincodeValues = async (pinCode) => { try { const response = await fetch(`https://api.postalpincode.in/pincode/${pinCode}`); const data = await response.json(); if (data[0]["Status"] === "Success") { setZipCodeData(true); formSupplierRef.current?.setFieldsValue({ City: data[0]["PostOffice"][0]["Block"], Dist: data[0]["PostOffice"][0]["District"], State: data[0]["PostOffice"][0]["State"], }); } else { setZipCodeData(false); } } catch (error) { console.error('Error fetching pincode data:', error); setZipCodeData(false); } }; const submitSupplier = async () => { try { const subSupplierData = await formSupplierRef?.current?.validateFields(); const addSupplierData = { CompId, AppId, BranchId, SuppName: subSupplierData?.SuppName, SuppGSTIN: subSupplierData?.SuppGSTIN, SuppPOC: subSupplierData?.SuppPOC, SuppMobile: subSupplierData?.SuppMobile, SuppEmail: subSupplierData?.SuppEmail, Address1: subSupplierData?.Address1, Address2: subSupplierData?.Address1, Zip: subSupplierData?.Zip, City: subSupplierData?.City, State: subSupplierData?.State, Dist: subSupplierData?.Dist, SuppPOCMobile: subSupplierData?.SuppPOCMobile, SuppPOCEmail: subSupplierData?.SuppPOCEmail, DeliveryPerformance: subSupplierData?.DeliveryPerformance, DiscountLevel: subSupplierData?.DiscountLevel, QualityofSupp: subSupplierData?.QualityofSupp, CreatedBy: UserId, }; const response = await dispatch(postSupplier(addSupplierData)).unwrap(); if (response?.data?.statusCode === 1) { message({type: "success", data: response?.data?.response}); formSupplierRef?.current?.resetFields(); setZipCodeData(false); setOpenPurSupplierModel(false); setDeliveryValue(); setDicountValue(); setQualityValue(); setViewDtl(false); // Call the callback function to refresh supplier data if (onSupplierAdded && typeof onSupplierAdded === 'function') { await onSupplierAdded(); } } else { message({type: "error", data: response?.data?.response}); formSupplierRef?.current?.resetFields(); } } catch (error) { console.error('Error submitting supplier:', error); message({type: "error", data: "Failed to add supplier. Please try again."}); } }; const handleSupplier = () => { setOpenPurSupplierModel(false); formSupplierRef?.current?.resetFields(); setZipCodeData(false); }; const handleDeliveryPerformanceChange = (value) => { formSupplierRef?.current?.setFieldsValue({ DeliveryPerformance: value }); setDeliveryValue(value); }; const handleDiscountLevelChange = (value) => { formSupplierRef?.current?.setFieldsValue({ DiscountLevel: value }); setDicountValue(value); }; const handleQualityofSuppChange = (value) => { formSupplierRef?.current?.setFieldsValue({ QualityofSupp: value }); setQualityValue(value); }; const ViewMoreFields = () =>{ if(ViewDtl){ setViewDtl(false) }else{ setViewDtl(true) } } const deliveryPerformance = async () => { let response = await dispatch( getConfigType({ TypeName: 'Delivery Performance' }) ).unwrap(); SetDeleveryPerformanceData(response?.data?.data); }; const discountLevel = async () => { let response = await dispatch( getConfigType({ TypeName: 'Discount Level' }) ).unwrap(); setDiscountData(response?.data?.data); }; const qualityofSupp = async () => { let response = await dispatch( getConfigType({ TypeName: 'Quality Of Supplier' }) ).unwrap(); setQualityData(response?.data?.data); }; const validatePhoneNumber = (rule, value, callback) => { if (value && value?.length !== 10) { callback(); } else { callback(); } }; const validateEmail = (rule, value, callback) => { const regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; if (!value || regex.test(value)) { callback(); } else { callback('Please enter a valid Mail Id'); } }; return (
{ await validateSafeInput(value); if (value && value.length > 30) { return Promise.reject("Supplier Name should not exceed 30 characters"); } return Promise.resolve(); }, }, ]} > Supplier Name} autoComplete="off" /> { await validateSafeInput(value); return Promise.resolve(); }, }, ]} > Address} /> { await validateSafeInput(value); return Promise.resolve(); }, }, ]} > Zipcode} maxLength="6" onChange={pinCodeChange} />

{ViewDtl ? "Less More" : "View More"}

{ViewDtl && <> Mobile Number} maxLength="10" autocomplete="off" // isOnChange={formType == 'edit' ? true : false} inputMode="numeric" onInput={(e) => (e.target.value = e.target.value.replace(/[^0-9]/g, '')) } /> MailId} autocomplete="off" // isOnChange={formType == 'edit' ? true : false} /> { await validateSafeInput(value); if (value?.length > 30) { return Promise.reject( 'Point of Contact cannot exceeds more than 30 chars' ); } return Promise.resolve(); }, }, ]} > Point of Contact} autocomplete="off" // isOnChange={formType == 'edit' ? true : false} /> POC Mobile Number} autocomplete="off" maxLength="10" // isOnChange={formType == 'edit' ? true : false} /> POC MailId} autocomplete="off" // isOnChange={formType == 'edit' ? true : false} /> ({ value: option.ConfigId, label: option.ConfigName, }))} label={} className="field-DropDown" id="DeliveryPerformance" onChangeFunction={(e) => handleDeliveryPerformanceChange(e) } // isOnChange={formType == 'edit' ? true : false} valueData={Delivery} /> ({ value: option.ConfigId, label: option.ConfigName, }))} label={} className="field-DropDown" id="DiscountLevel" onChangeFunction={(e) => handleDiscountLevelChange(e)} // isOnChange={formType == 'edit' ? true : false} valueData={DicountValue} /> ({ value: option.ConfigId, label: option.ConfigName, }))} label={} className="field-DropDown" id="QualityofSupp" onChangeFunction={(e) => handleQualityofSuppChange(e)} // isOnChange={formType == 'edit' ? true : false} valueData={QualityValue} /> } {zipCodeData && ( <> { await validateSafeInput(value); return Promise.resolve(); }, }, ]} > { await validateSafeInput(value); return Promise.resolve(); }, }, ]} > { await validateSafeInput(value); return Promise.resolve(); }, }, ]} > )}
); }; export default AddSupplierModal;