diff --git a/src/Pages/CustomerMaster/CustMasterForm.jsx b/src/Pages/CustomerMaster/CustMasterForm.jsx index 0698166..d86a502 100644 --- a/src/Pages/CustomerMaster/CustMasterForm.jsx +++ b/src/Pages/CustomerMaster/CustMasterForm.jsx @@ -1,4 +1,4 @@ -import { useState, useEffect, useRef } from 'react'; +import { useState, useEffect, useRef, useCallback } from 'react'; import { useDispatch } from 'react-redux'; import { InputField } from '../../Components/Forms/InputField.jsx'; import Buttons from '../../Components/Forms/Buttons.jsx'; @@ -37,6 +37,7 @@ import { MdLocationOn, MdHome } from 'react-icons/md'; import { useSelector } from 'react-redux'; import { ApplicationPreferences } from '../../Features/BrachLogin/BranchLogin.js'; import { IoMdAddCircleOutline } from 'react-icons/io'; +import { isIndianMobile } from '../../utils/calculations.js'; const subDirectory = import.meta.env.BASE_URL; @@ -354,57 +355,41 @@ const CustomerForm = ({ formType }) => { //post data const onFinish = async (values) => { - let postData = values; - console.log(postData, 'postData'); - - // Handle address data - use only the addresses from addressesList - const addedAddresses = addressesList || []; - - // Only include addresses that have Address1 and Zip - const validAddresses = addedAddresses.filter( - (addr) => addr?.Address1 && addr?.Zip - ); - - postData['CustomerAddressDtl'] = validAddresses; - - postData['CreatedBy'] = UserId; - postData['CompId'] = CompId; - postData['BranchId'] = BranchId; - postData['UserId'] = GetUserId; - // postData["OutStandingAmount"] = parseInt(values?.OutStandingAmount); - postData['InitialOutStanding'] = parseInt(values?.OutStandingAmount); - - postData['Document'] = ImageUrl; - postData['CustomerProfile'] = ImageUrl ? ImageUrl : null; - postData['CreditDays'] = - selectedCredit === 'others' ? otherCreditValue : selectedCredit; - let response = {}; - if (formType === 'add') { - // if (SelectedUserCreation === "N") { - postData['AppId'] = AppId; - // } - if (offerType) { - postData['OfferType'] = offerType; - } - if (Maritalstatus == 'N') { - postData['MarriedStatus'] = 'N'; - postData['CustDOB'] = DobDate; - } - if (Maritalstatus == 'Y') { - postData['MarriedStatus'] = 'Y'; - postData['CustDOB'] = DobDate; - postData['SpouseDOB'] = SpouseDobDate; - postData['AnniversaryDate'] = anniversaryDate; + try { + let postData = values; + console.log(postData, 'postData'); + const validMobile = isIndianMobile(postData?.CustMobile); + if (!validMobile) { + setMessageType('warning'); + setMessageData('Please enter a valid Indian mobile number.'); + return; } + // Handle address data - use only the addresses from addressesList + const addedAddresses = addressesList || []; - response = await dispatch(postCust(postData)).unwrap(); - } else if (formType === 'edit') { - if (editstate) { - postData['CustId'] = editstate?.CustId; - postData['AddId'] = editstate?.CustAddId; - postData['AppId'] = editstate?.AppId; - postData['UpdatedBy'] = UserId; - postData['UserId'] = editstate?.UserId; + // Only include addresses that have Address1 and Zip + const validAddresses = addedAddresses.filter( + (addr) => addr?.Address1 && addr?.Zip + ); + + postData['CustomerAddressDtl'] = validAddresses; + + postData['CreatedBy'] = UserId; + postData['CompId'] = CompId; + postData['BranchId'] = BranchId; + postData['UserId'] = GetUserId; + // postData["OutStandingAmount"] = parseInt(values?.OutStandingAmount); + postData['InitialOutStanding'] = parseInt(values?.OutStandingAmount); + + postData['Document'] = ImageUrl; + postData['CustomerProfile'] = ImageUrl ? ImageUrl : null; + postData['CreditDays'] = + selectedCredit === 'others' ? otherCreditValue : selectedCredit; + let response = {}; + if (formType === 'add') { + // if (SelectedUserCreation === "N") { + postData['AppId'] = AppId; + // } if (offerType) { postData['OfferType'] = offerType; } @@ -418,22 +403,48 @@ const CustomerForm = ({ formType }) => { postData['SpouseDOB'] = SpouseDobDate; postData['AnniversaryDate'] = anniversaryDate; } - } - response = await dispatch(putCust(postData)).unwrap(); - } - if (response?.data?.statusCode == 1) { - navigate(`${subDirectory}setting/customer-master/`, { - state: { - Notiffy: { - messageType: 'success', - messageData: response?.data?.response, + response = await dispatch(postCust(postData)).unwrap(); + } else if (formType === 'edit') { + if (editstate) { + postData['CustId'] = editstate?.CustId; + postData['AddId'] = editstate?.CustAddId; + postData['AppId'] = editstate?.AppId; + postData['UpdatedBy'] = UserId; + postData['UserId'] = editstate?.UserId; + if (offerType) { + postData['OfferType'] = offerType; + } + if (Maritalstatus == 'N') { + postData['MarriedStatus'] = 'N'; + postData['CustDOB'] = DobDate; + } + if (Maritalstatus == 'Y') { + postData['MarriedStatus'] = 'Y'; + postData['CustDOB'] = DobDate; + postData['SpouseDOB'] = SpouseDobDate; + postData['AnniversaryDate'] = anniversaryDate; + } + } + response = await dispatch(putCust(postData)).unwrap(); + } + + if (response?.data?.statusCode == 1) { + navigate(`${subDirectory}setting/customer-master/`, { + state: { + Notiffy: { + messageType: 'success', + messageData: response?.data?.response, + }, }, - }, - }); - } else { - setMessageType('error'); - setMessageData(response?.data?.response); + }); + } else { + setMessageType('error'); + setMessageData(response?.data?.response); + } + } catch (error) { + // Validation error will stop submit + console.log("Validation Failed:", error); } }; @@ -841,12 +852,17 @@ const CustomerForm = ({ formType }) => { ); }; + const onComplete = useCallback(() => { + setMessageType(null); + setMessageData(null); + }, []); + return (
- +
@@ -865,10 +881,12 @@ const CustomerForm = ({ formType }) => { rules={[ { required: true, - pattern: /^\d{10}$/, - message: 'Please Enter a Valid Mobile Number', + message: "Please Enter Mobile Number", + }, + { + pattern: /^[6-9]\d{9}$/, + message: "Please enter a valid mobile number", }, - { validator: validatePhoneNumber }, ]} > @@ -888,10 +906,10 @@ const CustomerForm = ({ formType }) => { } inputMode="numeric" onInput={(e) => - (e.target.value = e.target.value.replace( - /[^0-9]/g, - '' - )) + (e.target.value = e.target.value.replace( + /[^0-9]/g, + '' + )) } /> @@ -987,15 +1005,15 @@ const CustomerForm = ({ formType }) => { autocomplete="off" isOnChange={ formType == 'edit' || - formRef.current?.getFieldsValue()?.CustName != '' + formRef.current?.getFieldsValue()?.CustName != '' ? true : false } - // isOnChange={ - // formType == 'edit' || fieldChangeMap['CustName'] - // ? true - // : false - // } + // isOnChange={ + // formType == 'edit' || fieldChangeMap['CustName'] + // ? true + // : false + // } /> { autocomplete="off" isOnChange={ formType == 'edit' || - fieldChangeMap['CustShortName'] + fieldChangeMap['CustShortName'] ? true : false } @@ -1076,9 +1094,9 @@ const CustomerForm = ({ formType }) => {

Upload Profile

- // formType === 'edit' ? editstate?.EmpPhotoLink : e - // } + // getValueFromEvent={(e) => + // formType === 'edit' ? editstate?.EmpPhotoLink : e + // } > { autocomplete="off" isOnChange={ formType == 'edit' || - formRef.current?.getFieldsValue()?.CustEmail + formRef.current?.getFieldsValue()?.CustEmail ? true : false } @@ -1133,7 +1151,7 @@ const CustomerForm = ({ formType }) => { maxLength={15} isOnChange={ formType == 'edit' || - formRef.current?.getFieldsValue()?.CustGSTIN + formRef.current?.getFieldsValue()?.CustGSTIN ? true : false } @@ -1157,7 +1175,7 @@ const CustomerForm = ({ formType }) => { autocapitalize="on" isOnChange={ formType == 'edit' || - formRef.current?.getFieldsValue()?.StateCode + formRef.current?.getFieldsValue()?.StateCode ? true : false } @@ -1173,13 +1191,13 @@ const CustomerForm = ({ formType }) => { style={ offerType == 'P' ? { - opacity: '1', - boxShadow: - 'rgba(0, 0, 0, 0.05) 0px 6px 24px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px', - margin: '3px', - padding: '5px', - backgroundColor: '#fff', - } + opacity: '1', + boxShadow: + 'rgba(0, 0, 0, 0.05) 0px 6px 24px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px', + margin: '3px', + padding: '5px', + backgroundColor: '#fff', + } : { opacity: '0.6', boxShadow: 'none' } } onClick={() => { @@ -1200,13 +1218,13 @@ const CustomerForm = ({ formType }) => { style={ offerType == 'F' ? { - opacity: '1', - boxShadow: - 'rgba(0, 0, 0, 0.05) 0px 6px 24px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px', - margin: '3px', - padding: '5px', - backgroundColor: '#fff', - } + opacity: '1', + boxShadow: + 'rgba(0, 0, 0, 0.05) 0px 6px 24px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px', + margin: '3px', + padding: '5px', + backgroundColor: '#fff', + } : { opacity: '0.6', boxShadow: 'none' } } onClick={() => { @@ -1384,7 +1402,7 @@ const CustomerForm = ({ formType }) => { ); }} inputMode="numeric" - // style={{ marginLeft: '10px', width: '120px' }} + // style={{ marginLeft: '10px', width: '120px' }} /> )}
@@ -1404,8 +1422,8 @@ const CustomerForm = ({ formType }) => { autocomplete="off" isOnChange={ formType == 'edit' || - formRef.current?.getFieldsValue() - ?.CreditLimit + formRef.current?.getFieldsValue() + ?.CreditLimit ? true : false } @@ -1932,7 +1950,7 @@ const CustomerForm = ({ formType }) => { { prevlca={ editstate ? { - lat: editstate.Latitude, - lng: editstate.Longitude, - } + lat: editstate.Latitude, + lng: editstate.Longitude, + } : null } />