DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PE_PERSON_ADDR_PKG

Source


1 PACKAGE BODY IGS_PE_PERSON_ADDR_PKG AS
2 /* $Header: IGSNI12B.pls 120.2 2006/07/24 12:44:33 vskumar noship $ */
3 
4 procedure INSERT_ROW (
5                 p_action                        IN      VARCHAR2,
6                 p_rowid                         IN OUT NOCOPY  VARCHAR2,
7                 p_location_id                   IN OUT NOCOPY  NUMBER,
8                 p_start_dt                      IN      igs_pe_hz_pty_sites.start_date%TYPE,
9                 p_end_dt                        IN      igs_pe_hz_pty_sites.end_date%TYPE,
10                 p_country                       IN      VARCHAR2,
11                 p_address_style                 IN      VARCHAR2,
12                 p_addr_line_1                   IN      VARCHAR2,
13                 p_addr_line_2                   IN      VARCHAR2,
14                 p_addr_line_3                   IN      VARCHAR2,
15                 p_addr_line_4                   IN      VARCHAR2,
16                 p_date_last_verified            IN      DATE,
17                 p_correspondence                IN      VARCHAR2,
18                 p_city                          IN      VARCHAR2,
19                 p_state                         IN      VARCHAR2,
20                 p_province                      IN      VARCHAR2,
21                 p_county                        IN      VARCHAR2,
22                 p_postal_code                   IN      VARCHAR2,
23                 p_address_lines_phonetic        IN      VARCHAR2,
24                 p_delivery_point_code           IN      VARCHAR2,
25                 p_other_details_1               IN      VARCHAR2,
26                 p_other_details_2               IN      VARCHAR2,
27                 p_other_details_3               IN      VARCHAR2,
28                 l_return_status         OUT NOCOPY     VARCHAR2,
29                 l_msg_data              OUT NOCOPY      VARCHAR2,
30                 p_party_id                      IN      NUMBER,
31                 p_party_site_id       IN OUT NOCOPY     NUMBER,
32                 p_party_type            IN      VARCHAR2,
33                 p_last_update_date      IN OUT NOCOPY  DATE,
34                 p_party_site_ovn                IN OUT NOCOPY hz_party_sites.object_version_number%TYPE,
35                 p_location_ovn                  IN OUT NOCOPY hz_party_sites.object_version_number%TYPE,
36                 p_status                        IN hz_party_sites.status%TYPE
37    ) AS
38 
39         p_init_msg_list                 VARCHAR2(30) := FND_API.G_TRUE;
40         p_lock_flag                     VARCHAR2(30) := FND_API.G_FALSE;
41         l_contact_person        VARCHAR2(40) := NULL;
42         l_msg_count             NUMBER(15);
43         l_loc_id                NUMBER(15);
44         lv_rowid                VARCHAR2(25);
45         l_tmp_var1               VARCHAR2(2000);
46         l_tmp_var               VARCHAR2(2000);
47         p_location_rec_insert    HZ_LOCATION_V2PUB.location_rec_type;
48         p_party_site_rec_insert   HZ_PARTY_SITE_V2PUB.party_site_rec_type;
49 	l_addr_val_status  VARCHAR2(30);
50 	l_addr_warn_msg    VARCHAR2(2000);
51 
52          CURSOR c_birth_date_val IS SELECT date_of_birth FROM HZ_PERSON_PROFILES
53          WHERE party_id = p_party_id AND effective_end_Date IS NULL;
54          l_date_of_birth HZ_PERSON_PROFILES.DATE_OF_BIRTH%TYPE;
55 
56         CURSOR c_party_site_number IS
57         SELECT hz_party_site_number_s.NEXTVAL
58         FROM dual;
59 
60         l_party_site_number   HZ_PARTY_SITES.PARTY_SITE_NUMBER%TYPE;
61         l_hz_gen_party_site   VARCHAR2(10);
62 BEGIN
63 
64         IF p_start_dt IS NOT NULL AND p_end_dt IS NOT NULL THEN
65            IF p_start_dt > p_end_dt THEN
66                   FND_MESSAGE.SET_NAME('IGS','IGS_PE_FROM_DT_GRT_TO_DATE');
67                   IGS_GE_MSG_STACK.ADD;
68                   APP_EXCEPTION.RAISE_EXCEPTION;
69            END IF;
70         END IF;
71 
72         IF p_start_dt IS NULL AND p_end_dt IS NOT NULL THEN
73               FND_MESSAGE.SET_NAME('IGS','IGS_PE_CANT_SPECIFY_FROM_DATE');
74               IGS_GE_MSG_STACK.ADD;
75               APP_EXCEPTION.RAISE_EXCEPTION;
76         END IF;
77 
78         IF p_start_dt IS NOT NULL THEN
79           OPEN c_birth_date_val; FETCH c_birth_date_val INTO l_date_of_birth;
80           CLOSE c_birth_date_val;
81           IF(p_start_dt IS NOT NULL AND l_Date_of_birth IS NOT NULL) THEN
82             IF(p_start_dt < l_date_of_birth) THEN
83               Fnd_Message.Set_Name('IGS','IGS_PE_DREC_GT_BTDT');
84               IGS_GE_MSG_STACK.ADD;
85               App_Exception.Raise_Exception;
86             END IF;
87           END IF;
88         END IF;
89 
90         p_location_rec_insert.country                   := p_country;
91         p_location_rec_insert.address_style             := p_address_style;
92         p_location_rec_insert.address1                  := p_addr_line_1;
93         p_location_rec_insert.address2                  := p_addr_line_2;
94         p_location_rec_insert.address3                  := p_addr_line_3;
95         p_location_rec_insert.address4                  := p_addr_line_4;
96         p_location_rec_insert.city                      := p_city;
97         p_location_rec_insert.state                     := p_state;
98         p_location_rec_insert.province                  := p_province;
99         p_location_rec_insert.county                    := p_county;
100         p_location_rec_insert.postal_code               := p_postal_code;
101         p_location_rec_insert.address_lines_phonetic    := p_address_lines_phonetic;
102         p_location_rec_insert.address_effective_date    := NULL;
103         p_location_rec_insert.address_expiration_date   := NULL;
104         p_location_rec_insert.created_by_module         := 'IGS';
105         p_location_rec_insert.application_id            := 8405;
106         p_location_rec_insert.delivery_point_code       := p_delivery_point_code;
107 
108         HZ_LOCATION_V2PUB.create_location (
109                  P_INIT_MSG_LIST                        => p_init_msg_list,
110                  P_LOCATION_REC                         => p_location_rec_insert,
111 		 P_DO_ADDR_VAL				=> 'Y',
112 		 X_LOCATION_ID                          => p_location_id,
113 		 x_addr_val_status			=> l_addr_val_status,
114 		 x_addr_warn_msg			=> l_addr_warn_msg,
115                  X_RETURN_STATUS                        => l_return_status,
116                  X_MSG_COUNT                            => l_msg_count,
117                  X_MSG_DATA                             => l_msg_data
118                 );
119 
120             IF l_return_status in ('E', 'U') THEN
121             --sbaliga added this code corresponding to IF condition as part of #2338473
122 
123              IF l_msg_count > 1 THEN
124               FOR i IN 1..l_msg_count
125                 LOOP
126                 l_tmp_var := fnd_msg_pub.get(p_encoded => fnd_api.g_false);
127                 l_tmp_var1 := l_tmp_var1 || ' '|| l_tmp_var;
128                 END LOOP;
129               l_msg_data := l_tmp_var1;
130              END IF;
131              RETURN;
132            ELSIF l_return_status = 'S' THEN
133                 p_location_ovn   := 1;
134 	        -- bug 2203778 : ssawhney, correspondence flag is obsoleted from IGS table and from now
135                 -- this flag will be replaced by hz_party_sites
136 
137                 P_PARTY_SITE_REC_INSERT.PARTY_ID          :=  p_party_id;
138                 P_PARTY_SITE_REC_INSERT.LOCATION_ID       :=  p_location_id;
139                 P_PARTY_SITE_REC_INSERT.IDENTIFYING_ADDRESS_FLAG :=  p_correspondence ;
140                 P_PARTY_SITE_REC_INSERT.created_by_module := 'IGS';
141                 P_PARTY_SITE_REC_INSERT.application_id    := 8405;
142                 P_PARTY_SITE_REC_INSERT.status            := p_status;
143 
144                 -- ssawhney bug 2379291. added logic to pass party site number if profile is set to autogenerate false.
145 
146                 fnd_profile.get('HZ_GENERATE_PARTY_SITE_NUMBER',l_hz_gen_party_site);
147                 IF l_hz_gen_party_site = 'N' THEN
148                    OPEN c_party_site_number;
149                      FETCH c_party_site_number INTO l_party_site_number;
150                    CLOSE c_party_site_number;
151                    P_PARTY_SITE_REC_INSERT.PARTY_SITE_NUMBER := 'IGS-'||l_party_site_number;
152                 END IF;
153 
154 
155 		HZ_PARTY_SITE_V2PUB.CREATE_PARTY_SITE
156 		(
157 		       P_INIT_MSG_LIST          => p_init_msg_list,
158 		       P_PARTY_SITE_REC       =>  p_party_site_rec_insert,
159 		       X_RETURN_STATUS        => l_return_status,
160 		       X_MSG_COUNT              => l_msg_count,
161 		       X_MSG_DATA               => l_msg_data,
162 		       X_PARTY_SITE_ID        => p_party_site_id,
163 		       X_PARTY_SITE_NUMBER    => l_party_site_number /* not passed to form */
164 		);
165 
166 	        IF l_return_status ='E' or l_return_status ='U' THEN
167  		    --ssawhney added this code corresponding to IF condition as part of #2338473
168 		    IF l_msg_count > 1 THEN
169 			FOR i IN 1..l_msg_count
170 			LOOP
171 			   l_tmp_var := fnd_msg_pub.get(p_encoded => fnd_api.g_false);
172  			   l_tmp_var1 := l_tmp_var1 || ' '|| l_tmp_var;
173 			END LOOP;
174 			l_msg_data := l_tmp_var1;
175 		    END IF;
176 		    RETURN;
177                     -- remove code for creation of customer account site.
178                     -- ssawhney : 2225917
179                ELSIF l_return_status = 'S' THEN
180                     p_party_site_ovn := 1;
181                     IF p_start_dt IS NOT NULL OR p_end_dt IS NOT NULL THEN
182                          igs_pe_hz_pty_sites_pkg.insert_row(x_rowid          => lv_rowid,
183                                                      x_party_site_id  => p_party_site_id,
184                                                      x_start_date     => p_start_dt,
185                                                      x_end_date       => p_end_dt );
186                     END IF;
187                END IF;
188            END IF;
189 
190    IF l_addr_val_status = 'W' THEN
191       l_msg_data := l_addr_warn_msg;
192       l_return_status := l_addr_val_status;
193    END IF;
194 
195 END INSERT_ROW;
196 
197 procedure UPDATE_ROW (
198                 p_action                        IN      VARCHAR2,
199                 p_rowid                         IN OUT NOCOPY  VARCHAR2,
200                 p_location_id                   IN OUT NOCOPY  NUMBER,
201                 p_start_dt                      IN      igs_pe_hz_pty_sites.start_date%TYPE,
202                 p_end_dt                        IN      igs_pe_hz_pty_sites.end_date%TYPE,
203                 p_country                       IN      VARCHAR2,
204                 p_address_style                 IN      VARCHAR2,
205                 p_addr_line_1                   IN      VARCHAR2,
206                 p_addr_line_2                   IN      VARCHAR2,
207                 p_addr_line_3                   IN      VARCHAR2,
208                 p_addr_line_4                   IN      VARCHAR2,
209                 p_date_last_verified            IN      DATE,
210                 p_correspondence                IN      VARCHAR2,
211                 p_city                          IN      VARCHAR2,
212                 p_state                         IN      VARCHAR2,
213                 p_province                      IN      VARCHAR2,
214                 p_county                        IN      VARCHAR2,
215                 p_postal_code                   IN      VARCHAR2,
216                 p_address_lines_phonetic        IN      VARCHAR2,
217                 p_delivery_point_code           IN      VARCHAR2,
218                 p_other_details_1               IN      VARCHAR2,
219                 p_other_details_2               IN      VARCHAR2,
220                 p_other_details_3               IN      VARCHAR2,
221                 l_return_status                 OUT NOCOPY     VARCHAR2,
222                 l_msg_data                      OUT NOCOPY      VARCHAR2,
223                 p_party_id                      IN      NUMBER,
224                 p_party_site_id                 IN OUT NOCOPY   NUMBER,
225                 p_party_type                    IN      VARCHAR2,
226                 p_last_update_date              IN  OUT NOCOPY DATE,
227                 p_party_site_ovn                IN OUT NOCOPY hz_party_sites.object_version_number%TYPE,
228                 p_location_ovn                  IN OUT NOCOPY hz_party_sites.object_version_number%TYPE,
229                 p_status                        IN hz_party_sites.status%TYPE
230   )
231   AS
232         p_init_msg_list                 VARCHAR2(30) := FND_API.G_TRUE;
233         p_lock_flag                     VARCHAR2(30) := FND_API.G_FALSE;
234         l_contact_person        VARCHAR2(40) := NULL;
235         l_party_site_number   HZ_PARTY_SITES.PARTY_SITE_NUMBER%TYPE;
236         l_msg_count             NUMBER(15);
237         l_loc_id                NUMBER(15);
238         lv_rowid                VARCHAR2(25);
239         p_location_rec_update   HZ_LOCATION_V2PUB.location_rec_type;
240         p_party_site_rec_update HZ_PARTY_SITE_V2PUB.party_site_rec_type;
241         l_tmp_var1           VARCHAR2(2000);
242         l_tmp_var            VARCHAR2(2000);
243         l_start_dt           DATE;
244 	l_addr_val_status  VARCHAR2(30);
245 	l_addr_warn_msg    VARCHAR2(2000);
246 
247         CURSOR c_birth_date_val IS SELECT date_of_birth FROM HZ_PERSON_PROFILES
248         WHERE party_id = p_party_id AND effective_end_Date IS NULL;
249         l_date_of_birth HZ_PERSON_PROFILES.DATE_OF_BIRTH%TYPE;
250 
251 
252         CURSOR get_rowid(p_party_site_id NUMBER) IS
253         SELECT ROWID,start_date
254         FROM igs_pe_hz_pty_sites WHERE party_site_id = p_party_site_id;
255 
256 BEGIN
257 
258                 -- bug 2203778 : ssawhney, correspondence flag is obsoleted from IGS table and from now
259                 -- this flag will be replaced by hz_party_sites
260 
261         IF p_start_dt IS NOT NULL AND p_end_dt IS NOT NULL THEN
262            IF p_start_dt > p_end_dt THEN
263                   FND_MESSAGE.SET_NAME('IGS','IGS_PE_FROM_DT_GRT_TO_DATE');
264                   IGS_GE_MSG_STACK.ADD;
265                   APP_EXCEPTION.RAISE_EXCEPTION;
266            END IF;
267         END IF;
268 
269         IF p_start_dt IS NULL AND p_end_dt IS NOT NULL THEN
270               FND_MESSAGE.SET_NAME('IGS','IGS_PE_CANT_SPECIFY_FROM_DATE');
271               IGS_GE_MSG_STACK.ADD;
272               APP_EXCEPTION.RAISE_EXCEPTION;
273         END IF;
274         IF p_start_dt IS NOT NULL THEN
275           OPEN c_birth_date_val; FETCH c_birth_date_val INTO l_date_of_birth;
276           CLOSE c_birth_date_val;
277           IF(p_start_dt IS NOT NULL AND l_Date_of_birth IS NOT NULL) THEN
278             IF(p_start_dt < l_date_of_birth) THEN
279               Fnd_Message.Set_Name('IGS','IGS_PE_DREC_GT_BTDT');
280               IGS_GE_MSG_STACK.ADD;
281               App_Exception.Raise_Exception;
282             END IF;
283           END IF;
284         END IF;
285 
286         p_location_rec_update.location_id               := p_location_id;
287         p_location_rec_update.country                   := p_country;
288         p_location_rec_update.address_style             := NVL(p_address_style,FND_API.G_MISS_CHAR);
289         p_location_rec_update.address1                  := NVL(p_addr_line_1,FND_API.G_MISS_CHAR);
290         p_location_rec_update.address2                  := NVL(p_addr_line_2,FND_API.G_MISS_CHAR);
291         p_location_rec_update.address3                  := NVL(p_addr_line_3,FND_API.G_MISS_CHAR);
292         p_location_rec_update.address4                  := NVL(p_addr_line_4,FND_API.G_MISS_CHAR);
293         p_location_rec_update.city                      := NVL(p_city,FND_API.G_MISS_CHAR);
294         p_location_rec_update.state                     := NVL(p_state,FND_API.G_MISS_CHAR);
295         p_location_rec_update.province                  := NVL(p_province,FND_API.G_MISS_CHAR);
296         p_location_rec_update.county                    := NVL(p_county,FND_API.G_MISS_CHAR);
297         p_location_rec_update.postal_code               := NVL(p_postal_code,FND_API.G_MISS_CHAR);
298         p_location_rec_update.address_lines_phonetic    := NVL(p_address_lines_phonetic,FND_API.G_MISS_CHAR);
299         p_location_rec_update.delivery_point_code       := NVL(p_delivery_point_code,FND_API.G_MISS_CHAR);
300         P_PARTY_SITE_REC_update.PARTY_ID                 :=     p_party_id;
301         P_PARTY_SITE_REC_update.PARTY_SITE_ID            :=     p_party_site_id;
302         P_PARTY_SITE_REC_update.LOCATION_ID              :=     p_location_id;
303         P_PARTY_SITE_REC_update.IDENTIFYING_ADDRESS_FLAG :=     p_correspondence;
304         P_PARTY_SITE_REC_update.status                   :=     p_status;
305 
306     HZ_LOCATION_V2PUB.update_location(
307          P_INIT_MSG_LIST                        => p_init_msg_list,
308          P_LOCATION_REC                         => p_location_rec_update,
309 	 p_do_addr_val				=> 'Y',
310          p_object_version_number                => p_location_ovn,
311 	 x_addr_val_status			=> l_addr_val_status,
312 	 x_addr_warn_msg			=> l_addr_warn_msg,
313 	 X_RETURN_STATUS                        => l_return_status,
314          X_MSG_COUNT                            => l_msg_count,
315          X_MSG_DATA                             => l_msg_data
316         );
317         IF l_return_status in ('E', 'U') THEN
318                 --sbaliga added this code corresponding to IF condition as part of #2338473
319             IF l_msg_count > 1 THEN
320             FOR i IN 1..l_msg_count
321              LOOP
322              l_tmp_var := fnd_msg_pub.get(p_encoded => fnd_api.g_false);
323              l_tmp_var1 := l_tmp_var1 || ' '|| l_tmp_var;
324             END LOOP;
325             l_msg_data := l_tmp_var1;
326             END IF;
327                RETURN;
328         ELSIF l_return_status = 'S' THEN
329             HZ_PARTY_SITE_V2PUB.UPDATE_PARTY_SITE(
330                                   p_init_msg_list => p_init_msg_list,
331                                   p_party_site_rec =>  p_party_site_rec_update,
332                                   p_object_version_number => p_party_site_ovn,
333                                   x_return_status => l_return_status,
334                                   x_msg_count => l_msg_count,
335                                   x_msg_data  => l_msg_data
336                            );
337 
338         IF l_return_status ='E' or l_return_status ='U' THEN
339         --ssawhney added this code corresponding to IF condition as part of #2338473
340           IF l_msg_count > 1 THEN
341             FOR i IN 1..l_msg_count LOOP
342             l_tmp_var := fnd_msg_pub.get(p_encoded => fnd_api.g_false);
343             l_tmp_var1 := l_tmp_var1 || ' '|| l_tmp_var;
344             END LOOP;
345           l_msg_data := l_tmp_var1;
346           END IF;
347           RETURN;
348                 -- remove code for creation of customer account site.
349                 -- ssawhney : 2225917
350         ELSIF l_return_status = 'S' THEN
351           OPEN   get_rowid(p_party_site_id);
352           FETCH  get_rowid INTO lv_rowid,l_start_dt;
353           CLOSE  get_rowid;
354 
355           IF p_start_dt IS NOT NULL OR l_start_dt IS NOT NULL THEN
356               igs_pe_hz_pty_sites_pkg.add_row(x_rowid             => lv_rowid,
357                                               x_party_site_id => p_party_site_id,
358                                               x_start_date    => p_start_dt,
359                                               x_end_date      => p_end_dt);
360 
361           END IF;  -- for party site.
362         END IF; -- for rowid
363     END IF;   -- success of update location
364 
365    IF l_addr_val_status = 'W' THEN
366       l_msg_data := l_addr_warn_msg;
367       l_return_status := l_addr_val_status;
368    END IF;
369 END update_row;
370 
371 END igs_pe_person_addr_pkg;