[Home] [Help]
PACKAGE BODY: APPS.JL_BR_INSCRIPTION_NUMBER
Source
1 PACKAGE BODY JL_BR_INSCRIPTION_NUMBER as
2 /* $Header: jlbrsicb.pls 115.3 2002/11/14 18:49:51 thwon ship $ */
3
4 /*----------------------------------------------------------------------------*
5 | PUBLIC FUNCTIONS/PROCEDURES |
6 *----------------------------------------------------------------------------*/
7
8 /*----------------------------------------------------------------------------*
9 | PROCEDURE |
10 | validate_inscription_number |
11 | |
12 | DESCRIPTION |
13 | |
14 | PARAMETERS |
15 | INPUT |
16 | p_inscription_type VARCHAR2 -- Inscription Type: CPF = '1' |
17 | CGC = '2' |
18 | Other = '3' |
19 | p_inscription_number VARCHAR2 -- Inscription Number |
20 | p_inscription_branch VARCHAR2 -- Inscription Branch |
21 | p_inscription_digit VARCHAR2 -- Inscription Digit |
22 | |
23 | OUTPUT |
24 | p_errbuf VARCHAR2 -- Error lookup code |
25 | (Lookup type = |
26 | 'JLBR_INSCRIPTION_NUM_ERRORS')|
27 | p_retcode NUMBER -- Return Code: |
28 | 0 = Validation Succeds |
29 | -1 = Validation Fails |
30 | |
31 | HISTORY |
32 | 15-OCT-97 Marcia Toriyama Created |
33 *----------------------------------------------------------------------------*/
34 PROCEDURE validate_inscription_number (
35 p_inscription_type IN VARCHAR2,
36 p_inscription_number IN VARCHAR2,
37 p_inscription_branch IN VARCHAR2,
38 p_inscription_digit IN VARCHAR2,
39 p_errbuf IN OUT NOCOPY VARCHAR2,
40 p_retcode IN OUT NOCOPY NUMBER ) IS
41
42 l_control_digit_1 number;
43 l_control_digit_2 number;
44 l_control_digit_XX varchar2(2);
45
46 BEGIN
47
48 IF p_inscription_type = '1'
49 THEN
50 /* Validate CPF */
51 IF nvl(p_inscription_branch,'0000') <> '0000'
52 THEN
53 /* Inscription branch for CPF type should be NULL or zero */
54 p_errbuf := 'CPF_INSCRIPTION_BRANCH_ERR';
55 p_retcode:= -1;
56 ELSE
57 /* Calculate two digit controls of inscription number CPF type */
58
59 l_control_digit_1 := (11 - mod(
60 (to_number(substr(p_inscription_number,9,1)) * 2 +
61 to_number(substr(p_inscription_number,8,1)) * 3 +
62 to_number(substr(p_inscription_number,7,1)) * 4 +
63 to_number(substr(p_inscription_number,6,1)) * 5 +
64 to_number(substr(p_inscription_number,5,1)) * 6 +
65 to_number(substr(p_inscription_number,4,1)) * 7 +
66 to_number(substr(p_inscription_number,3,1)) * 8 +
67 to_number(substr(p_inscription_number,2,1)) * 9 +
68 to_number(substr(p_inscription_number,1,1)) * 10),11));
69
70 IF l_control_digit_1 in ('11','10')
71 THEN
72 l_control_digit_1 := 0;
73 END IF;
74
75 l_control_digit_2 := (11 - mod((l_control_digit_1 * 2 +
76 to_number(substr(p_inscription_number,09,1)) * 3 +
77 to_number(substr(p_inscription_number,08,1)) * 4 +
78 to_number(substr(p_inscription_number,07,1)) * 5 +
79 to_number(substr(p_inscription_number,06,1)) * 6 +
80 to_number(substr(p_inscription_number,05,1)) * 7 +
81 to_number(substr(p_inscription_number,04,1)) * 8 +
82 to_number(substr(p_inscription_number,03,1)) * 9 +
83 to_number(substr(p_inscription_number,02,1)) * 10 +
84 to_number(substr(p_inscription_number,01,1)) * 11),11));
85
86 IF l_control_digit_2 in ('11','10')
87 THEN
88 l_control_digit_2 := 0;
89 END IF;
90
91 l_control_digit_XX := substr(to_char(l_control_digit_1),1,1) ||
92 substr(to_char(l_control_digit_2),1,1);
93
94 IF l_control_digit_XX <> p_inscription_digit
95 THEN
96 /* Digit controls do not match */
97 p_errbuf := 'CPF_INSCRIPTION_NUMBER_ERR';
98 p_retcode:= -1;
99 ELSE
100 p_retcode:= 0;
101 END IF;
102 END IF;
103
104 ELSIF p_inscription_type = '2'
105 THEN
106 /* Calculate two digit controls of inscription number CGC type */
107
108 l_control_digit_1 := (11 - mod(
109 (to_number(substr(p_inscription_branch,4,1)) * 2 +
110 to_number(substr(p_inscription_branch,3,1)) * 3 +
111 to_number(substr(p_inscription_branch,2,1)) * 4 +
112 to_number(substr(p_inscription_branch,1,1)) * 5 +
113 to_number(substr(p_inscription_number,9,1)) * 6 +
114 to_number(substr(p_inscription_number,8,1)) * 7 +
115 to_number(substr(p_inscription_number,7,1)) * 8 +
116 to_number(substr(p_inscription_number,6,1)) * 9 +
117 to_number(substr(p_inscription_number,5,1)) * 2 +
118 to_number(substr(p_inscription_number,4,1)) * 3 +
119 to_number(substr(p_inscription_number,3,1)) * 4 +
120 to_number(substr(p_inscription_number,2,1))* 5),11));
121
122 IF l_control_digit_1 in ('11','10')
123 THEN
124 l_control_digit_1 := 0;
125 END IF;
126
127 l_control_digit_2 := (11 - mod(
128 ( (l_control_digit_1 * 2) +
129 to_number(substr(p_inscription_branch,4,1)) * 3 +
130 to_number(substr(p_inscription_branch,3,1)) * 4 +
131 to_number(substr(p_inscription_branch,2,1)) * 5 +
132 to_number(substr(p_inscription_branch,1,1)) * 6 +
133 to_number(substr(p_inscription_number,9,1)) * 7 +
134 to_number(substr(p_inscription_number,8,1)) * 8 +
135 to_number(substr(p_inscription_number,7,1)) * 9 +
136 to_number(substr(p_inscription_number,6,1)) * 2 +
137 to_number(substr(p_inscription_number,5,1)) * 3 +
138 to_number(substr(p_inscription_number,4,1)) * 4 +
139 to_number(substr(p_inscription_number,3,1)) * 5 +
140 to_number(substr(p_inscription_number,2,1)) * 6),11));
141
142 IF l_control_digit_2 in ('11','10')
143 THEN
144 l_control_digit_2 := 0;
145 END IF;
146
147 l_control_digit_XX := substr(to_char(l_control_digit_1),1,1) ||
148 substr(to_char(l_control_digit_2),1,1);
149
150 IF p_inscription_digit <> l_control_digit_XX
151 THEN
152 p_errbuf := 'CGC_INSCRIPTION_NUMBER_ERR';
153 p_retcode:= -1;
154 ELSE
155 p_retcode:= 0;
156 END IF;
157 ELSIF p_inscription_type = '3'
158 THEN
159 p_retcode:= 0;
160 ELSE
161 p_errbuf := 'INSCRIPTION_TYPE_ERR';
162 p_retcode:= -1;
163 END IF;
164
165 END validate_inscription_number;
166
167 END JL_BR_INSCRIPTION_NUMBER;