added validation in customer master
This commit is contained in:
parent
9f675c0a5f
commit
9784291505
|
|
@ -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 (
|
||||
<div className="CustomerForm-Master">
|
||||
<div className="pageOverAll">
|
||||
<div className="userPage userPageCustMaster">
|
||||
<div className="userPageContent">
|
||||
<Messages messageType={messageType} messageData={messageData} />
|
||||
<Messages messageType={messageType} messageData={messageData} onComplete={onComplete} />
|
||||
<div className="formName">
|
||||
<FormHeader title={'Customer'} />
|
||||
</div>
|
||||
|
|
@ -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,
|
||||
''
|
||||
))
|
||||
}
|
||||
/>
|
||||
</Form.Item>
|
||||
|
|
@ -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
|
||||
// }
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
|
|
@ -1031,7 +1049,7 @@ const CustomerForm = ({ formType }) => {
|
|||
autocomplete="off"
|
||||
isOnChange={
|
||||
formType == 'edit' ||
|
||||
fieldChangeMap['CustShortName']
|
||||
fieldChangeMap['CustShortName']
|
||||
? true
|
||||
: false
|
||||
}
|
||||
|
|
@ -1076,9 +1094,9 @@ const CustomerForm = ({ formType }) => {
|
|||
<p>Upload Profile</p>
|
||||
<Form.Item
|
||||
name="CustomerProfile"
|
||||
// getValueFromEvent={(e) =>
|
||||
// formType === 'edit' ? editstate?.EmpPhotoLink : e
|
||||
// }
|
||||
// getValueFromEvent={(e) =>
|
||||
// formType === 'edit' ? editstate?.EmpPhotoLink : e
|
||||
// }
|
||||
>
|
||||
<Imageupload
|
||||
singleImage={true}
|
||||
|
|
@ -1108,7 +1126,7 @@ const CustomerForm = ({ formType }) => {
|
|||
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' }}
|
||||
/>
|
||||
)}
|
||||
<div>
|
||||
|
|
@ -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 }) => {
|
|||
|
||||
<Form.Item
|
||||
name="State"
|
||||
// rules={[{ required: true }]}
|
||||
// rules={[{ required: true }]}
|
||||
>
|
||||
<InputField
|
||||
field="State"
|
||||
|
|
@ -2031,9 +2049,9 @@ const CustomerForm = ({ formType }) => {
|
|||
prevlca={
|
||||
editstate
|
||||
? {
|
||||
lat: editstate.Latitude,
|
||||
lng: editstate.Longitude,
|
||||
}
|
||||
lat: editstate.Latitude,
|
||||
lng: editstate.Longitude,
|
||||
}
|
||||
: null
|
||||
}
|
||||
/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue