average-megabyte-82737
06/02/2023, 9:33 AMacceptable-kangaroo-64719
06/02/2023, 10:25 AMworkflow.clientAge = calculateAge(clientid)
workflow.clientGender = determineGender(clientid)
Basically, your code defines two funtions, calclateAge and determineGender, but these functions don't run automatically. You need to run them and provide the cliendid as input, and then set your workflow variables as to take the output.average-megabyte-82737
06/02/2023, 10:31 AMaverage-megabyte-82737
06/02/2023, 10:45 AMacceptable-kangaroo-64719
06/02/2023, 10:55 AMacceptable-kangaroo-64719
06/02/2023, 10:55 AMlet clientid = "9202204720082"; //Sample number
function calculateAge(clientid) {
// Extracting birth date components from the ID number
const year = Number(clientid.substr(0, 2));
const month = Number(clientid.substr(2, 2));
const day = Number(clientid.substr(4, 2));
// Getting current date components
const today = new Date();
const currentYear = Number(today.getFullYear().toString().substr(-2));
const currentMonth = today.getMonth() + 1; // Months are zero-based
const currentDay = today.getDate();
// Calculating age
console.log(year, currentYear)
let age = currentYear - year;
if (age < 0){
age = age + 100
}
// Adjusting age if birth month is greater than current month
if (month > currentMonth) {
age--;
}
// Adjusting age if birth month is equal to current month but birth day is greater
else if (month === currentMonth && day > currentDay) {
age--;
}
return age;
}
function determineGender(clientid) {
const genderCode = Number(clientid.substr(6, 4));
if (genderCode < 5000) {
return "Male";
} else {
return "Female";
}
}
workflow.clientAge = calculateAge(clientid)
workflow.clientGender = determineGender(clientid)
acceptable-kangaroo-64719
06/02/2023, 10:57 AMaverage-megabyte-82737
06/02/2023, 11:28 AMacceptable-kangaroo-64719
06/02/2023, 11:34 AMacceptable-kangaroo-64719
06/02/2023, 11:34 AMaverage-megabyte-82737
06/02/2023, 11:36 AMaverage-megabyte-82737
06/02/2023, 11:52 AMaverage-megabyte-82737
06/02/2023, 11:52 AMacceptable-kangaroo-64719
06/02/2023, 11:55 AM.substr
?average-megabyte-82737
06/02/2023, 11:58 AMacceptable-kangaroo-64719
06/02/2023, 12:00 PM.toString()
So I'd try changing the first line to:
let clientid = workflow.clientId.toString()
average-megabyte-82737
06/02/2023, 12:01 PMacceptable-kangaroo-64719
06/02/2023, 12:01 PMaverage-megabyte-82737
06/02/2023, 12:01 PMacceptable-kangaroo-64719
06/02/2023, 12:01 PMaverage-megabyte-82737
06/02/2023, 12:01 PMacceptable-kangaroo-64719
06/02/2023, 12:01 PMaverage-megabyte-82737
06/02/2023, 12:02 PMacceptable-kangaroo-64719
06/02/2023, 12:04 PMaverage-megabyte-82737
06/02/2023, 12:05 PMaverage-megabyte-82737
06/02/2023, 12:15 PMaverage-megabyte-82737
06/02/2023, 12:57 PMaverage-megabyte-82737
06/02/2023, 12:57 PMacceptable-kangaroo-64719
06/02/2023, 12:58 PMaverage-megabyte-82737
06/02/2023, 12:59 PMaverage-megabyte-82737
06/02/2023, 12:59 PMacceptable-kangaroo-64719
06/02/2023, 1:04 PMcurrentYear
is 23 and year
is 92, age is -69. This triggers the if/else so we add 100 to age to get a final number of 31
* If year
is 02, then age is 21 and we don't trigger the if/else
This code block also has the side effect of making you feel old 🥲acceptable-kangaroo-64719
06/02/2023, 1:05 PM<
should be a <=
so that if someone was born in 1923 we don't get an erroraverage-megabyte-82737
06/02/2023, 1:06 PMaverage-megabyte-82737
06/02/2023, 1:06 PMacceptable-kangaroo-64719
06/02/2023, 1:08 PM03
to 3
average-megabyte-82737
06/02/2023, 1:44 PMaverage-megabyte-82737
06/02/2023, 1:44 PMacceptable-kangaroo-64719
06/02/2023, 1:47 PM