DBA Data[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;