24: chksum number;
25: result number;
26:
27: begin
28: hr_utility.set_location('NI_VALIDATION Formula:: ',200);
29: hr_utility.set_location('P_NATIONAL_IDENTIFIER :: '||P_NATIONAL_IDENTIFIER,200);
30:
31: if (hr_ni_chk_pkg.chk_nat_id_format(P_NATIONAL_IDENTIFIER,'DDDDDDDDDDDDD') = 0) then
32: l_valid_flag := FALSE;
25: result number;
26:
27: begin
28: hr_utility.set_location('NI_VALIDATION Formula:: ',200);
29: hr_utility.set_location('P_NATIONAL_IDENTIFIER :: '||P_NATIONAL_IDENTIFIER,200);
30:
31: if (hr_ni_chk_pkg.chk_nat_id_format(P_NATIONAL_IDENTIFIER,'DDDDDDDDDDDDD') = 0) then
32: l_valid_flag := FALSE;
33: return_value := 1;
31: if (hr_ni_chk_pkg.chk_nat_id_format(P_NATIONAL_IDENTIFIER,'DDDDDDDDDDDDD') = 0) then
32: l_valid_flag := FALSE;
33: return_value := 1;
34: end if;
35: hr_utility.set_location('NI_VALIDATION Formula :: '||return_value,11);
36: -- algo validation
37: if l_valid_flag then
38: S1:=to_number(substr(P_NATIONAL_IDENTIFIER,1,1));
39: Y2:=to_number(substr(P_NATIONAL_IDENTIFIER,2,1));
51:
52: result := 2*S1+7*Y2+9*Y3+1*M4+4*M5+6*D6+3*D7+5*C8+8*C9+2*N10+7*N11+9*N12 ;
53:
54: chksum := MOD(result,11);
55: hr_utility.trace('result : '||result);
56: hr_utility.trace('chksum : '||chksum);
57: if chksum <> V13 then
58: l_valid_flag := FALSE;
59: return_value := 2;
52: result := 2*S1+7*Y2+9*Y3+1*M4+4*M5+6*D6+3*D7+5*C8+8*C9+2*N10+7*N11+9*N12 ;
53:
54: chksum := MOD(result,11);
55: hr_utility.trace('result : '||result);
56: hr_utility.trace('chksum : '||chksum);
57: if chksum <> V13 then
58: l_valid_flag := FALSE;
59: return_value := 2;
60: end if;
59: return_value := 2;
60: end if;
61: -- validation with other fields
62: -- DOB
63: hr_utility.set_location('NI_VALIDATION Formula :: '||return_value,22);
64: end if;
65: --hr_utility.trace_off();
66: return return_value;
67: end validate_ni_formula;
61: -- validation with other fields
62: -- DOB
63: hr_utility.set_location('NI_VALIDATION Formula :: '||return_value,22);
64: end if;
65: --hr_utility.trace_off();
66: return return_value;
67: end validate_ni_formula;
68:
69:
96: cursor c_county_code(county_name in varchar2) is
97: select LOOKUP_CODE from hr_lookups where LOOKUP_TYPE = 'RO_PER_COUNTIES' and MEANING = county_name;
98:
99: begin
100: --hr_utility.trace_on(null,'Test');
101: hr_utility.set_location('NI_VALIDATION :: ',200);
102: hr_utility.set_location('p_person_id :: '||p_person_id,200);
103: hr_utility.set_location('p_business_group_id :: '||p_business_group_id,200);
104: hr_utility.set_location('P_NATIONAL_IDENTIFIER :: '||P_NATIONAL_IDENTIFIER,200);
97: select LOOKUP_CODE from hr_lookups where LOOKUP_TYPE = 'RO_PER_COUNTIES' and MEANING = county_name;
98:
99: begin
100: --hr_utility.trace_on(null,'Test');
101: hr_utility.set_location('NI_VALIDATION :: ',200);
102: hr_utility.set_location('p_person_id :: '||p_person_id,200);
103: hr_utility.set_location('p_business_group_id :: '||p_business_group_id,200);
104: hr_utility.set_location('P_NATIONAL_IDENTIFIER :: '||P_NATIONAL_IDENTIFIER,200);
105: hr_utility.set_location('P_SEX :: '||P_SEX,200);
98:
99: begin
100: --hr_utility.trace_on(null,'Test');
101: hr_utility.set_location('NI_VALIDATION :: ',200);
102: hr_utility.set_location('p_person_id :: '||p_person_id,200);
103: hr_utility.set_location('p_business_group_id :: '||p_business_group_id,200);
104: hr_utility.set_location('P_NATIONAL_IDENTIFIER :: '||P_NATIONAL_IDENTIFIER,200);
105: hr_utility.set_location('P_SEX :: '||P_SEX,200);
106: hr_utility.set_location('P_DATE_OF_BIRTH :: '||P_DATE_OF_BIRTH,200);
99: begin
100: --hr_utility.trace_on(null,'Test');
101: hr_utility.set_location('NI_VALIDATION :: ',200);
102: hr_utility.set_location('p_person_id :: '||p_person_id,200);
103: hr_utility.set_location('p_business_group_id :: '||p_business_group_id,200);
104: hr_utility.set_location('P_NATIONAL_IDENTIFIER :: '||P_NATIONAL_IDENTIFIER,200);
105: hr_utility.set_location('P_SEX :: '||P_SEX,200);
106: hr_utility.set_location('P_DATE_OF_BIRTH :: '||P_DATE_OF_BIRTH,200);
107: hr_utility.set_location('P_REGION_OF_BIRTH :: '||P_REGION_OF_BIRTH,200);
100: --hr_utility.trace_on(null,'Test');
101: hr_utility.set_location('NI_VALIDATION :: ',200);
102: hr_utility.set_location('p_person_id :: '||p_person_id,200);
103: hr_utility.set_location('p_business_group_id :: '||p_business_group_id,200);
104: hr_utility.set_location('P_NATIONAL_IDENTIFIER :: '||P_NATIONAL_IDENTIFIER,200);
105: hr_utility.set_location('P_SEX :: '||P_SEX,200);
106: hr_utility.set_location('P_DATE_OF_BIRTH :: '||P_DATE_OF_BIRTH,200);
107: hr_utility.set_location('P_REGION_OF_BIRTH :: '||P_REGION_OF_BIRTH,200);
108: hr_utility.set_location('P_COUNTRY_OF_BIRTH :: '||P_COUNTRY_OF_BIRTH,200);
101: hr_utility.set_location('NI_VALIDATION :: ',200);
102: hr_utility.set_location('p_person_id :: '||p_person_id,200);
103: hr_utility.set_location('p_business_group_id :: '||p_business_group_id,200);
104: hr_utility.set_location('P_NATIONAL_IDENTIFIER :: '||P_NATIONAL_IDENTIFIER,200);
105: hr_utility.set_location('P_SEX :: '||P_SEX,200);
106: hr_utility.set_location('P_DATE_OF_BIRTH :: '||P_DATE_OF_BIRTH,200);
107: hr_utility.set_location('P_REGION_OF_BIRTH :: '||P_REGION_OF_BIRTH,200);
108: hr_utility.set_location('P_COUNTRY_OF_BIRTH :: '||P_COUNTRY_OF_BIRTH,200);
109: hr_utility.set_location('P_CITIZENSHIP :: '||P_CITIZENSHIP,200);
102: hr_utility.set_location('p_person_id :: '||p_person_id,200);
103: hr_utility.set_location('p_business_group_id :: '||p_business_group_id,200);
104: hr_utility.set_location('P_NATIONAL_IDENTIFIER :: '||P_NATIONAL_IDENTIFIER,200);
105: hr_utility.set_location('P_SEX :: '||P_SEX,200);
106: hr_utility.set_location('P_DATE_OF_BIRTH :: '||P_DATE_OF_BIRTH,200);
107: hr_utility.set_location('P_REGION_OF_BIRTH :: '||P_REGION_OF_BIRTH,200);
108: hr_utility.set_location('P_COUNTRY_OF_BIRTH :: '||P_COUNTRY_OF_BIRTH,200);
109: hr_utility.set_location('P_CITIZENSHIP :: '||P_CITIZENSHIP,200);
110: hr_utility.set_location('P_RESIDENCE :: '||P_RESIDENCE,200);
103: hr_utility.set_location('p_business_group_id :: '||p_business_group_id,200);
104: hr_utility.set_location('P_NATIONAL_IDENTIFIER :: '||P_NATIONAL_IDENTIFIER,200);
105: hr_utility.set_location('P_SEX :: '||P_SEX,200);
106: hr_utility.set_location('P_DATE_OF_BIRTH :: '||P_DATE_OF_BIRTH,200);
107: hr_utility.set_location('P_REGION_OF_BIRTH :: '||P_REGION_OF_BIRTH,200);
108: hr_utility.set_location('P_COUNTRY_OF_BIRTH :: '||P_COUNTRY_OF_BIRTH,200);
109: hr_utility.set_location('P_CITIZENSHIP :: '||P_CITIZENSHIP,200);
110: hr_utility.set_location('P_RESIDENCE :: '||P_RESIDENCE,200);
111:
104: hr_utility.set_location('P_NATIONAL_IDENTIFIER :: '||P_NATIONAL_IDENTIFIER,200);
105: hr_utility.set_location('P_SEX :: '||P_SEX,200);
106: hr_utility.set_location('P_DATE_OF_BIRTH :: '||P_DATE_OF_BIRTH,200);
107: hr_utility.set_location('P_REGION_OF_BIRTH :: '||P_REGION_OF_BIRTH,200);
108: hr_utility.set_location('P_COUNTRY_OF_BIRTH :: '||P_COUNTRY_OF_BIRTH,200);
109: hr_utility.set_location('P_CITIZENSHIP :: '||P_CITIZENSHIP,200);
110: hr_utility.set_location('P_RESIDENCE :: '||P_RESIDENCE,200);
111:
112:
105: hr_utility.set_location('P_SEX :: '||P_SEX,200);
106: hr_utility.set_location('P_DATE_OF_BIRTH :: '||P_DATE_OF_BIRTH,200);
107: hr_utility.set_location('P_REGION_OF_BIRTH :: '||P_REGION_OF_BIRTH,200);
108: hr_utility.set_location('P_COUNTRY_OF_BIRTH :: '||P_COUNTRY_OF_BIRTH,200);
109: hr_utility.set_location('P_CITIZENSHIP :: '||P_CITIZENSHIP,200);
110: hr_utility.set_location('P_RESIDENCE :: '||P_RESIDENCE,200);
111:
112:
113: -- other validations
106: hr_utility.set_location('P_DATE_OF_BIRTH :: '||P_DATE_OF_BIRTH,200);
107: hr_utility.set_location('P_REGION_OF_BIRTH :: '||P_REGION_OF_BIRTH,200);
108: hr_utility.set_location('P_COUNTRY_OF_BIRTH :: '||P_COUNTRY_OF_BIRTH,200);
109: hr_utility.set_location('P_CITIZENSHIP :: '||P_CITIZENSHIP,200);
110: hr_utility.set_location('P_RESIDENCE :: '||P_RESIDENCE,200);
111:
112:
113: -- other validations
114: return_value := validate_ni_formula(P_NATIONAL_IDENTIFIER);
114: return_value := validate_ni_formula(P_NATIONAL_IDENTIFIER);
115: if return_value <> 0 then
116: l_valid_flag := FALSE;
117: end if;
118: hr_utility.set_location('NI_VALIDATION Formula :: '||return_value,1);
119: -- unique chk
120: hr_ni_chk_pkg.check_ni_unique(P_NATIONAL_IDENTIFIER,p_person_id,p_business_group_id,'ERROR');
121:
122: hr_utility.set_location('NI_VALIDATION Formula :: '||return_value,2);
118: hr_utility.set_location('NI_VALIDATION Formula :: '||return_value,1);
119: -- unique chk
120: hr_ni_chk_pkg.check_ni_unique(P_NATIONAL_IDENTIFIER,p_person_id,p_business_group_id,'ERROR');
121:
122: hr_utility.set_location('NI_VALIDATION Formula :: '||return_value,2);
123: --
124: S1:=to_number(substr(P_NATIONAL_IDENTIFIER,1,1));
125: Y2:=to_number(substr(P_NATIONAL_IDENTIFIER,2,2));
126: M4:=to_number(substr(P_NATIONAL_IDENTIFIER,4,2));
141: return_value := 3;
142: end if;
143: end if;
144:
145: hr_utility.trace('p_citizenship'||p_citizenship);
146: hr_utility.trace('P_SEX'||P_SEX);
147: hr_utility.trace('S1'||S1);
148: hr_utility.trace('(trunc(l_year,-2)/100)'||(trunc(l_year,-2)/100));
149: -- Gender | Citizenship | Residence
142: end if;
143: end if;
144:
145: hr_utility.trace('p_citizenship'||p_citizenship);
146: hr_utility.trace('P_SEX'||P_SEX);
147: hr_utility.trace('S1'||S1);
148: hr_utility.trace('(trunc(l_year,-2)/100)'||(trunc(l_year,-2)/100));
149: -- Gender | Citizenship | Residence
150: if l_valid_flag then -- skip validation when citizenship not provided
143: end if;
144:
145: hr_utility.trace('p_citizenship'||p_citizenship);
146: hr_utility.trace('P_SEX'||P_SEX);
147: hr_utility.trace('S1'||S1);
148: hr_utility.trace('(trunc(l_year,-2)/100)'||(trunc(l_year,-2)/100));
149: -- Gender | Citizenship | Residence
150: if l_valid_flag then -- skip validation when citizenship not provided
151: if (nvl(p_citizenship,'X')= 'RO' or S1 <= 6 ) and nvl(P_DATE_OF_BIRTH,hr_api.g_date) <> hr_api.g_date then -- chk for Romanian Citizenship
144:
145: hr_utility.trace('p_citizenship'||p_citizenship);
146: hr_utility.trace('P_SEX'||P_SEX);
147: hr_utility.trace('S1'||S1);
148: hr_utility.trace('(trunc(l_year,-2)/100)'||(trunc(l_year,-2)/100));
149: -- Gender | Citizenship | Residence
150: if l_valid_flag then -- skip validation when citizenship not provided
151: if (nvl(p_citizenship,'X')= 'RO' or S1 <= 6 ) and nvl(P_DATE_OF_BIRTH,hr_api.g_date) <> hr_api.g_date then -- chk for Romanian Citizenship
152: case (trunc(l_year,-2)/100)
188: end if;
189: end if;
190: end if;
191: end if; -- Citiznship | Residence | Gender
192: hr_utility.set_location('NI_VALIDATION Formula :: '||return_value,3);
193: if P_COUNTRY_OF_BIRTH = 'RO' and P_REGION_OF_BIRTH is not null and l_valid_flag then
194: open c_county_code(P_REGION_OF_BIRTH);
195: fetch c_county_code into l_county;
196: if c_county_code%notfound then
200: close c_county_code;
201: if (l_county <> C8) then
202: l_valid_flag := FALSE;
203: return_value := 6;
204: hr_utility.trace('Raising Warning');
205: end if;
206: end if;
207: hr_utility.set_location('NI_VALIDATION Formula :: '||return_value,4);
208: return return_value;
203: return_value := 6;
204: hr_utility.trace('Raising Warning');
205: end if;
206: end if;
207: hr_utility.set_location('NI_VALIDATION Formula :: '||return_value,4);
208: return return_value;
209: end validate_ni;
210:
211: end per_ro_ni_validation;