DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_LOCATION_PROFILES_PKG

Source


1 PACKAGE BODY hz_location_profiles_pkg AS
2 /*$Header: ARHLOCPB.pls 115.1 2003/08/14 00:22:41 acng noship $ */
3 
4   PROCEDURE insert_row (
5     x_location_profile_id                   IN OUT NOCOPY NUMBER,
6     x_location_id                           IN     NUMBER,
7     x_actual_content_source                 IN     VARCHAR2,
8     x_effective_start_date                  IN     DATE,
9     x_effective_end_date                    IN     DATE,
10     x_validation_sst_flag                   IN     VARCHAR2,
11     x_validation_status_code                IN     VARCHAR2,
12     x_date_validated                        IN     DATE,
13     x_address1                              IN     VARCHAR2,
14     x_address2                              IN     VARCHAR2,
15     x_address3                              IN     VARCHAR2,
16     x_address4                              IN     VARCHAR2,
17     x_city                                  IN     VARCHAR2,
18     x_postal_code                           IN     VARCHAR2,
19     x_prov_state_admin_code                 IN     VARCHAR2,
20     x_county                                IN     VARCHAR2,
21     x_country                               IN     VARCHAR2,
22     x_object_version_number                 IN     NUMBER
23   ) IS
24 
25     l_success                               VARCHAR2(1) := 'N';
26     l_primary_key_passed                    BOOLEAN := FALSE;
27 
28   BEGIN
29 
30     -- The following lines are used to take care of the situation
31     -- when content_source_type is not USER_ENTERED, because of
32     -- policy funcation, when we do unique validation, we cannot
33     -- see all of the records. Thus, we have to double check here
34     -- and raise corresponding exception. We donot need to do anything
35     -- for those tables without polity functions.
36 
37     IF x_location_profile_id IS NOT NULL AND
38        x_location_profile_id <> fnd_api.g_miss_num
39     THEN
40         l_primary_key_passed := TRUE;
41     END IF;
42 
43     WHILE l_success = 'N' LOOP
44       BEGIN
45         INSERT INTO hz_location_profiles (
46           location_profile_id,
47           location_id,
48           actual_content_source,
49           effective_start_date,
50           effective_end_date,
51           validation_sst_flag,
52           validation_status_code,
53           date_validated,
54           address1,
55           address2,
56           address3,
57           address4,
58           city,
59           postal_code,
60           prov_state_admin_code,
61           county,
62           country,
63           last_update_date,
64           last_updated_by,
65           creation_date,
66           created_by,
67           last_update_login,
68           object_version_number
69         )
70         VALUES (
71           DECODE(x_location_profile_id,
72                  fnd_api.g_miss_num, hz_location_profiles_s.NEXTVAL,
73                  NULL, hz_location_profiles_s.NEXTVAL,
74                  x_location_profile_id),
75           DECODE(x_location_id, fnd_api.g_miss_num, NULL, x_location_id),
76           DECODE(x_actual_content_source, fnd_api.g_miss_char, NULL, x_actual_content_source),
77           DECODE(x_effective_start_date, fnd_api.g_miss_date, TO_DATE(NULL), x_effective_start_date),
78           DECODE(x_effective_end_date, fnd_api.g_miss_date, TO_DATE(NULL), x_effective_end_date),
79           DECODE(x_validation_sst_flag, fnd_api.g_miss_char, NULL, x_validation_sst_flag),
80           DECODE(x_validation_status_code, fnd_api.g_miss_char, NULL, x_validation_status_code),
81           DECODE(x_date_validated, fnd_api.g_miss_date, TO_DATE(NULL), x_date_validated),
82           DECODE(x_address1, fnd_api.g_miss_char, NULL, x_address1),
83           DECODE(x_address2, fnd_api.g_miss_char, NULL, x_address2),
84           DECODE(x_address3, fnd_api.g_miss_char, NULL, x_address3),
85           DECODE(x_address4, fnd_api.g_miss_char, NULL, x_address4),
86           DECODE(x_city, fnd_api.g_miss_char, NULL, x_city),
87           DECODE(x_postal_code, fnd_api.g_miss_char, NULL, x_postal_code),
88           DECODE(x_prov_state_admin_code, fnd_api.g_miss_char, NULL, x_prov_state_admin_code),
89           DECODE(x_county, fnd_api.g_miss_char, NULL, x_county),
90           DECODE(x_country, fnd_api.g_miss_char, NULL, x_country),
91           hz_utility_v2pub.last_update_date,
92           hz_utility_v2pub.last_updated_by,
93           hz_utility_v2pub.creation_date,
94           hz_utility_v2pub.created_by,
95           hz_utility_v2pub.last_update_login,
96           DECODE(x_object_version_number, fnd_api.g_miss_num, NULL, x_object_version_number)
97         ) RETURNING
98           location_profile_id
99         INTO
100           x_location_profile_id;
101 
102         l_success := 'Y';
103 
104       EXCEPTION
105         WHEN DUP_VAL_ON_INDEX THEN
106           IF INSTRB(SQLERRM, 'HZ_LOCATION_PROFILES_U1') <> 0 OR
107              INSTRB(SQLERRM, 'HZ_LOCATION_PROFILES_PK') <> 0
108           THEN
109             IF l_primary_key_passed THEN
110               fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
111               fnd_message.set_token('COLUMN', 'location_profile_id');
112               fnd_msg_pub.add;
113               RAISE fnd_api.g_exc_error;
114             END IF;
115 
116             DECLARE
117               l_temp_profile_id   NUMBER;
118               l_max_profile_id    NUMBER;
119             BEGIN
120               l_temp_profile_id := 0;
121               SELECT max(LOCATION_PROFILE_ID) INTO l_max_profile_id
122               FROM HZ_LOCATION_PROFILES;
123               WHILE l_temp_profile_id <= l_max_profile_id LOOP
124                 SELECT HZ_LOCATION_PROFILES_S.NEXTVAL
125                 INTO l_temp_profile_id FROM dual;
126               END LOOP;
127             END;
128 
129           ELSE
130               RAISE;
131           END IF;
132       END;
133     END LOOP;
134   END insert_row;
135 
136   PROCEDURE update_row (
137     x_rowid                                 IN OUT NOCOPY VARCHAR2,
138     x_location_profile_id                   IN     NUMBER,
139     x_location_id                           IN     NUMBER,
140     x_actual_content_source                 IN     VARCHAR2,
141     x_effective_start_date                  IN     DATE,
142     x_effective_end_date                    IN     DATE,
143     x_validation_sst_flag                   IN     VARCHAR2,
144     x_validation_status_code                IN     VARCHAR2,
145     x_date_validated                        IN     DATE,
146     x_address1                              IN     VARCHAR2,
147     x_address2                              IN     VARCHAR2,
148     x_address3                              IN     VARCHAR2,
149     x_address4                              IN     VARCHAR2,
150     x_city                                  IN     VARCHAR2,
151     x_postal_code                           IN     VARCHAR2,
152     x_prov_state_admin_code                 IN     VARCHAR2,
153     x_county                                IN     VARCHAR2,
154     x_country                               IN     VARCHAR2,
155     x_object_version_number                 IN     NUMBER
156   ) IS
157   BEGIN
158     UPDATE hz_location_profiles
159     SET    location_profile_id = DECODE(x_location_profile_id,
160                                 NULL, location_profile_id,
161                                 fnd_api.g_miss_num, NULL,
162                                 x_location_profile_id),
163            location_id = DECODE(x_location_id,
164                             NULL, location_id,
165                             fnd_api.g_miss_num, NULL,
166                             x_location_id),
167            actual_content_source = DECODE(x_actual_content_source,
168                                         NULL, actual_content_source,
169                                         fnd_api.g_miss_char, NULL,
170                                         x_actual_content_source),
171            effective_start_date = DECODE(x_effective_start_date,
172                                            NULL, effective_start_date,
173                                            fnd_api.g_miss_date, NULL,
174                                            x_effective_start_date),
175            effective_end_date = DECODE(x_effective_end_date,
176                                            NULL, effective_end_date,
177                                            fnd_api.g_miss_date, NULL,
178                                            x_effective_end_date),
179            validation_sst_flag = DECODE(x_validation_sst_flag,
180                                         NULL, validation_sst_flag,
181                                         fnd_api.g_miss_char, NULL,
182                                         x_validation_sst_flag),
183            validation_status_code = DECODE(x_validation_status_code,
184                                         NULL, validation_status_code,
185                                         fnd_api.g_miss_char, NULL,
186                                         x_validation_status_code),
187            date_validated = DECODE(x_date_validated,
188                                NULL, date_validated,
189                                fnd_api.g_miss_date, NULL,
190                                x_date_validated),
191            address1 = DECODE(x_address1,
192                              NULL, address1,
193                              fnd_api.g_miss_char, NULL,
194                              x_address1),
195            address2 = DECODE(x_address2,
196                              NULL, address2,
197                              fnd_api.g_miss_char, NULL,
198                              x_address2),
199            address3 = DECODE(x_address3,
200                              NULL, address3,
201                              fnd_api.g_miss_char, NULL,
202                              x_address3),
203            address4 = DECODE(x_address4,
204                              NULL, address4,
205                              fnd_api.g_miss_char, NULL,
206                              x_address4),
207            city = DECODE(x_city,
208                          NULL, city,
209                          fnd_api.g_miss_char, NULL,
210                          x_city),
211            postal_code = DECODE(x_postal_code,
212                                 NULL, postal_code,
213                                 fnd_api.g_miss_char, NULL,
214                                 x_postal_code),
215            prov_state_admin_code = DECODE(x_prov_state_admin_code,
216                           NULL, prov_state_admin_code,
217                           fnd_api.g_miss_char, NULL,
218                           x_prov_state_admin_code),
219            county = DECODE(x_county,
220                            NULL, county,
221                            fnd_api.g_miss_char, NULL,
222                            x_county),
223            country = DECODE(x_country,
224                             NULL, country,
225                             fnd_api.g_miss_char, NULL,
226                             x_country),
227            last_update_date = hz_utility_v2pub.last_update_date,
228            last_updated_by = hz_utility_v2pub.last_updated_by,
229            creation_date = creation_date,
230            created_by = created_by,
231            last_update_login = hz_utility_v2pub.last_update_login,
232            object_version_number = DECODE(x_object_version_number,
233                                           NULL, object_version_number,
234                                           fnd_api.g_miss_num, NULL,
235                                           x_object_version_number)
236     WHERE ROWID = x_rowid;
237 
238     IF (SQL%NOTFOUND) THEN
239       RAISE NO_DATA_FOUND;
240     END IF;
241   END update_row;
242 
243 
244   PROCEDURE lock_row (
245     x_rowid                                 IN OUT NOCOPY VARCHAR2,
246     x_location_profile_id                   IN     NUMBER,
247     x_location_id                           IN     NUMBER,
248     x_actual_content_source                 IN     VARCHAR2,
249     x_effective_start_date                  IN     DATE,
250     x_effective_end_date                    IN     DATE,
251     x_validation_sst_flag                   IN     VARCHAR2,
252     x_validation_status_code                IN     VARCHAR2,
253     x_date_validated                        IN     DATE,
254     x_address1                              IN     VARCHAR2,
255     x_address2                              IN     VARCHAR2,
256     x_address3                              IN     VARCHAR2,
257     x_address4                              IN     VARCHAR2,
258     x_city                                  IN     VARCHAR2,
259     x_postal_code                           IN     VARCHAR2,
260     x_prov_state_admin_code                 IN     VARCHAR2,
261     x_county                                IN     VARCHAR2,
262     x_country                               IN     VARCHAR2,
263     x_last_update_date                      IN     DATE,
264     x_last_updated_by                       IN     NUMBER,
265     x_creation_date                         IN     DATE,
266     x_created_by                            IN     NUMBER,
267     x_last_update_login                     IN     NUMBER,
268     x_object_version_number                 IN     NUMBER
269   ) IS
270 
271     CURSOR c IS
272       SELECT *
273       FROM   hz_location_profiles
274       WHERE  ROWID = x_rowid
275       FOR UPDATE NOWAIT;
276 
277     recinfo c%ROWTYPE;
278   BEGIN
279     OPEN c;
280     FETCH c INTO recinfo;
281     IF (C%NOTFOUND) THEN
282       CLOSE c;
283       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
284       app_exception.raise_exception;
285     END IF;
286     CLOSE c;
287 
288     IF (((recinfo.location_profile_id = x_location_profile_id)
289          OR ((recinfo.location_profile_id IS NULL)
290               AND (x_location_profile_id IS NULL)))
291         AND ((recinfo.location_id = x_location_id)
292             OR ((recinfo.location_id IS NULL)
293                  AND (x_location_id IS NULL)))
294         AND ((recinfo.actual_content_source = x_actual_content_source)
295              OR ((recinfo.actual_content_source IS NULL)
296                  AND (x_actual_content_source IS NULL)))
297         AND ((recinfo.effective_start_date = x_effective_start_date)
298              OR ((recinfo.effective_start_date IS NULL)
299                  AND (x_effective_start_date IS NULL)))
300         AND ((recinfo.effective_end_date = x_effective_end_date)
301              OR ((recinfo.effective_end_date IS NULL)
302                  AND (x_effective_end_date IS NULL)))
303         AND ((recinfo.validation_sst_flag = x_validation_sst_flag)
304              OR ((recinfo.validation_sst_flag IS NULL)
305                  AND (x_validation_sst_flag IS NULL)))
306         AND ((recinfo.validation_status_code = x_validation_status_code)
307              OR ((recinfo.validation_status_code IS NULL)
308                  AND (x_validation_status_code IS NULL)))
309         AND ((recinfo.date_validated = x_date_validated)
310              OR ((recinfo.date_validated IS NULL)
311                  AND (x_date_validated IS NULL)))
312         AND ((recinfo.address1 = x_address1)
313              OR ((recinfo.address1 IS NULL)
314                  AND (x_address1 IS NULL)))
315         AND ((recinfo.address2 = x_address2)
316              OR ((recinfo.address2 IS NULL)
317                  AND (x_address2 IS NULL)))
318         AND ((recinfo.address3 = x_address3)
319              OR ((recinfo.address3 IS NULL)
320                  AND (x_address3 IS NULL)))
321         AND ((recinfo.address4 = x_address4)
322              OR ((recinfo.address4 IS NULL)
323                  AND (x_address4 IS NULL)))
324         AND ((recinfo.city = x_city)
325              OR ((recinfo.city IS NULL)
326                  AND (x_city IS NULL)))
327         AND ((recinfo.postal_code = x_postal_code)
328              OR ((recinfo.postal_code IS NULL)
329                  AND (x_postal_code IS NULL)))
330         AND ((recinfo.prov_state_admin_code = x_prov_state_admin_code)
331              OR ((recinfo.prov_state_admin_code IS NULL)
332                  AND (x_prov_state_admin_code IS NULL)))
333         AND ((recinfo.county = x_county)
334              OR ((recinfo.county IS NULL)
335                  AND (x_county IS NULL)))
336         AND ((recinfo.country = x_country)
337              OR ((recinfo.country IS NULL)
338                  AND (x_country IS NULL)))
339         AND ((recinfo.last_update_date = x_last_update_date)
340              OR ((recinfo.last_update_date IS NULL)
341                  AND (x_last_update_date IS NULL)))
342         AND ((recinfo.last_updated_by = x_last_updated_by)
343              OR ((recinfo.last_updated_by IS NULL)
344                  AND (x_last_updated_by IS NULL)))
345         AND ((recinfo.creation_date = x_creation_date)
346              OR ((recinfo.creation_date IS NULL)
347                  AND (x_creation_date IS NULL)))
348         AND ((recinfo.created_by = x_created_by)
349              OR ((recinfo.created_by IS NULL)
350                  AND (x_created_by IS NULL)))
351         AND ((recinfo.last_update_login = x_last_update_login)
352              OR ((recinfo.last_update_login IS NULL)
353                  AND (x_last_update_login IS NULL)))
354         AND ((recinfo.object_version_number = x_object_version_number)
355              OR ((recinfo.object_version_number IS NULL)
356                  AND (x_object_version_number IS NULL)))
357     )
358     THEN
359       RETURN;
360     ELSE
361       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
362       app_exception.raise_exception;
363     END IF;
364   END lock_row;
365 
366 
367   PROCEDURE delete_row (x_location_profile_id IN NUMBER) IS
368   BEGIN
369     DELETE FROM hz_location_profiles
370     WHERE location_profile_id = x_location_profile_id;
371 
372     IF (SQL%NOTFOUND) THEN
373       RAISE NO_DATA_FOUND;
374     END IF;
375   END delete_row;
376 
377 END hz_location_profiles_pkg;