conditions changed in remarks

This commit is contained in:
Malini 2026-02-23 12:17:57 +05:30
parent 4db00f84fd
commit 465cc8f9b0
2 changed files with 53 additions and 16 deletions

View File

@ -139,6 +139,24 @@ const formatDate = (dateString) => {
return `${day}/${month}/${year}`; return `${day}/${month}/${year}`;
}; };
const extractIndustryCode = (value) => {
if (value === null || value === undefined) return '';
const normalized = String(value).trim();
if (!normalized) return '';
const leadingDigits = normalized.match(/^(\d+)/);
const beforeDash = normalized.split('-')[0]?.trim();
const rawCode = (leadingDigits?.[1] ?? beforeDash ?? normalized);
return String(rawCode).trim().replace(/^0+(?=\d)/, '');
};
const getIndustryCodeFromIsicSelection = (selectedValue, options = []) => {
if (selectedValue === null || selectedValue === undefined || selectedValue === '') return '';
const selected = options.find((opt) => String(opt?.value) === String(selectedValue));
return extractIndustryCode(selected?.label ?? selectedValue);
};
const createEmptyProfile = () => ({ const createEmptyProfile = () => ({
apiId: null, apiId: null,
userProfileName: '', userProfileName: '',
@ -1066,7 +1084,7 @@ const CompanyProfile = () => {
</div> </div>
</div> </div>
{form.industryCodeProduction && form.industryCodeBusiness && form.industryCodeBusiness !== form.industryCodeProduction && ( {form.industryCodeProduction && form.industryCodeBusiness && extractIndustryCode(form.industryCodeBusiness) !== getIndustryCodeFromIsicSelection(form.industryCodeProduction, isicOptions) && (
<div className="mt-4 w-[calc(100%-1px)]"> <div className="mt-4 w-[calc(100%-1px)]">
<TextField <TextField
label="Remarks" label="Remarks"

View File

@ -65,33 +65,52 @@ const mapApiEstablishmentToProfile = (apiData) => {
employmentNonEmiratiFemale: data.non_emirati_female || 0, employmentNonEmiratiFemale: data.non_emirati_female || 0,
}; };
}; };
const computeEmploymentTotals = (data) => { const computeEmploymentTotals = (data) => {
const emiratiMale = parseInt(data.employmentEmiratiMale) || 0; const emiratiMale = parseInt(data.employmentEmiratiMale) || 0;
const nonEmiratiMale = parseInt(data.employmentNonEmiratiMale) || 0; const nonEmiratiMale = parseInt(data.employmentNonEmiratiMale) || 0;
const emiratiFemale = parseInt(data.employmentEmiratiFemale) || 0; const emiratiFemale = parseInt(data.employmentEmiratiFemale) || 0;
const nonEmiratiFemale = parseInt(data.employmentNonEmiratiFemale) || 0; const nonEmiratiFemale = parseInt(data.employmentNonEmiratiFemale) || 0;
const totalEmployees = emiratiMale + nonEmiratiMale + emiratiFemale + nonEmiratiFemale; const totalEmployees = emiratiMale + nonEmiratiMale + emiratiFemale + nonEmiratiFemale;
const totalEmirati = emiratiMale + emiratiFemale; const totalEmirati = emiratiMale + emiratiFemale;
return { return {
employmentTotalEmployees: totalEmployees, employmentTotalEmployees: totalEmployees,
employmentTotalEmirati: totalEmirati employmentTotalEmirati: totalEmirati
}; };
}; };
const extractIndustryCode = (value) => {
if (value === null || value === undefined) return '';
const normalized = String(value).trim();
if (!normalized) return '';
const leadingDigits = normalized.match(/^(\d+)/);
const beforeDash = normalized.split('-')[0]?.trim();
const rawCode = (leadingDigits?.[1] ?? beforeDash ?? normalized);
return String(rawCode).trim().replace(/^0+(?=\d)/, '');
};
const getIndustryCodeFromIsicSelection = (selectedValue, options = []) => {
if (selectedValue === null || selectedValue === undefined || selectedValue === '') return '';
const selected = options.find((opt) => String(opt?.value) === String(selectedValue));
return extractIndustryCode(selected?.label ?? selectedValue);
};
const EditCompanyProfile = () => { const EditCompanyProfile = () => {
const navigate = useNavigate(); const navigate = useNavigate();
const { id: establishmentId } = useParams(); const { id: establishmentId } = useParams();
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [form, setForm] = useState(createEmptyProfile()); const [form, setForm] = useState(createEmptyProfile());
const [activeStep, setActiveStep] = useState(0); const [activeStep, setActiveStep] = useState(0);
const [fieldErrors, setFieldErrors] = useState({}); const [fieldErrors, setFieldErrors] = useState({});
const [passwordError, setPasswordError] = useState(""); const [passwordError, setPasswordError] = useState("");
const [confirmError, setConfirmError] = useState(""); const [confirmError, setConfirmError] = useState("");
const [passwordReuseError, setPasswordReuseError] = useState(""); const [passwordReuseError, setPasswordReuseError] = useState("");
const [emirateOptions, setEmirateOptions] = useState([]); const [emirateOptions, setEmirateOptions] = useState([]);
const [emirateLookup, setEmirateLookup] = useState({}); const [emirateLookup, setEmirateLookup] = useState({});
const [contactCityOptions, setContactCityOptions] = useState([]); const [contactCityOptions, setContactCityOptions] = useState([]);
@ -109,7 +128,7 @@ const EditCompanyProfile = () => {
const [checkedProducts, setCheckedProducts] = useState(new Set()); const [checkedProducts, setCheckedProducts] = useState(new Set());
const initialSnapshotRef = useRef(null); const initialSnapshotRef = useRef(null);
const productListRef = useRef(null); const productListRef = useRef(null);
const formSteps = React.useMemo( const formSteps = React.useMemo(
() => [ () => [
{ label: 'Profile' }, { label: 'Profile' },
@ -120,7 +139,7 @@ const EditCompanyProfile = () => {
], ],
[] []
); );
const requiredFieldsByStep = React.useMemo( const requiredFieldsByStep = React.useMemo(
() => ({ () => ({
0: [ 0: [
@ -152,7 +171,7 @@ const EditCompanyProfile = () => {
}), }),
[] []
); );
const validateStepFields = useCallback((stepIndex) => { const validateStepFields = useCallback((stepIndex) => {
setPasswordReuseError(""); setPasswordReuseError("");
@ -184,7 +203,7 @@ const EditCompanyProfile = () => {
}); });
return valid; return valid;
}, [form, requiredFieldsByStep, selectedProducts, checkedProducts]); }, [form, requiredFieldsByStep, selectedProducts, checkedProducts]);
const handleFormChange = useCallback((field, value) => { const handleFormChange = useCallback((field, value) => {
// Clear remarks if either industry code field is changed // Clear remarks if either industry code field is changed
if (field === 'industryCodeBusiness' || field === 'industryCodeCurrent') { if (field === 'industryCodeBusiness' || field === 'industryCodeCurrent') {
@ -222,7 +241,7 @@ const EditCompanyProfile = () => {
})); }));
} }
}, [fieldErrors]); }, [fieldErrors]);
const handleNext = useCallback(() => { const handleNext = useCallback(() => {
if (validateStepFields(activeStep)) { if (validateStepFields(activeStep)) {
if (activeStep < formSteps.length - 1) { if (activeStep < formSteps.length - 1) {
@ -230,11 +249,11 @@ const EditCompanyProfile = () => {
} }
} }
}, [activeStep, formSteps.length, validateStepFields]); }, [activeStep, formSteps.length, validateStepFields]);
const handlePrev = useCallback(() => { const handlePrev = useCallback(() => {
if (activeStep > 0) setActiveStep(activeStep - 1); if (activeStep > 0) setActiveStep(activeStep - 1);
}, [activeStep]); }, [activeStep]);
// Load cities based on selected emirate using your service function // Load cities based on selected emirate using your service function
const loadCities = useCallback(async (emirateName) => { const loadCities = useCallback(async (emirateName) => {
if (!emirateName) { if (!emirateName) {
@ -262,7 +281,7 @@ const EditCompanyProfile = () => {
setIsLoadingCities(false); setIsLoadingCities(false);
} }
}, [emirateOptions]); }, [emirateOptions]);
// Load products and filter out selected ones // Load products and filter out selected ones
const loadProducts = useCallback(async () => { const loadProducts = useCallback(async () => {
try { try {
@ -286,7 +305,7 @@ const EditCompanyProfile = () => {
setIsLoadingProducts(false); setIsLoadingProducts(false);
} }
}, [selectedProducts]); }, [selectedProducts]);
// Product search handler // Product search handler
const handleProductSearch = (e) => { const handleProductSearch = (e) => {
const searchTerm = e.target.value.toLowerCase(); const searchTerm = e.target.value.toLowerCase();
@ -935,7 +954,7 @@ const EditCompanyProfile = () => {
rows={3} rows={3}
/> */} /> */}
</div> </div>
{form.industryCodeBusiness && form.industryCodeBusiness !== form.industryCodeCurrent && ( {form.industryCodeBusiness && extractIndustryCode(form.industryCodeBusiness) !== getIndustryCodeFromIsicSelection(form.industryCodeCurrent, isicOptions) && (
<div className="col-span-full"> <div className="col-span-full">
<TextField <TextField
label="Remarks" label="Remarks"