[Home] [Help]
PACKAGE BODY: APPS.HZ_REGISTRY_VALIDATE_V2PUB
Source
1 PACKAGE BODY hz_registry_validate_v2pub AS
2 /*$Header: ARH2RGVB.pls 120.131 2011/10/03 05:31:08 drakshit ship $ */
3
4 -----------------------------------------
5 -- declaration of private global varibles
6 -----------------------------------------
7
8 g_special_string CONSTANT VARCHAR2(4):= '%#@*';
9 G_LENGTH CONSTANT NUMBER := LENGTHB(g_special_string);
10
11 TYPE val_tab_type IS TABLE OF VARCHAR2(255) INDEX BY BINARY_INTEGER;
12
13 --g_debug BOOLEAN := FALSE;
14 g_debug_count NUMBER := 0;
15
16 ---------------------------------------------------
17
18 -- define the internal table that will cache values
19 ---------------------------------------------------
20
21 VAL_TAB VAL_TAB_TYPE; -- the table of values
22 TABLE_SIZE BINARY_INTEGER := 2048; -- the size of above tables
23
24 ------------------------------------
25 -- declaration of private procedures
26 ------------------------------------
27 /*
28 PROCEDURE enable_debug;
29
30 PROCEDURE disable_debug;
31 */
32
33 FUNCTION get_index (
34 p_val IN VARCHAR2
35 ) RETURN BINARY_INTEGER;
36
37 PROCEDURE put (
38 p_val IN VARCHAR2
39 );
40
41 FUNCTION search (
42 p_val IN VARCHAR2,
43 p_category IN VARCHAR2
44 ) RETURN BOOLEAN;
45
46 PROCEDURE validate_rel_code(
47 p_forward_rel_code IN VARCHAR2,
48 p_backward_rel_code IN VARCHAR2,
49 p_forward_role IN VARCHAR2,
50 p_backward_role IN VARCHAR2,
51 x_return_status IN OUT NOCOPY VARCHAR2
52 );
53
54 --Bug Number 3099624.
55 PROCEDURE validate_hr_security(
56 p_person_rec IN HZ_PARTY_V2PUB.PERSON_REC_TYPE,
57 p_old_person_rec IN HZ_PARTY_V2PUB.PERSON_REC_TYPE,
58 x_return_status IN OUT NOCOPY VARCHAR2
59 );
60
61 -- Bug 3175816
62 PROCEDURE validate_global_loc_num(
63 global_location_number IN HZ_PARTY_SITES.GLOBAL_LOCATION_NUMBER%TYPE,
64 x_return_status IN OUT NOCOPY VARCHAR2
65 );
66
67 PROCEDURE validate_created_by_module (
68 p_create_update_flag IN VARCHAR2,
69 p_created_by_module IN VARCHAR2,
70 p_old_created_by_module IN VARCHAR2,
71 x_return_status IN OUT NOCOPY VARCHAR2
72 );
73
74 PROCEDURE validate_application_id (
75 p_create_update_flag IN VARCHAR2,
76 p_application_id IN NUMBER,
77 p_old_application_id IN NUMBER,
78 x_return_status IN OUT NOCOPY VARCHAR2
79 );
80
81 PROCEDURE validate_fnd_lookup
82 ( p_lookup_type IN VARCHAR2,
83 p_column IN VARCHAR2,
84 p_column_value IN VARCHAR2,
85 p_content_source_type IN VARCHAR2,
86 x_return_status IN OUT NOCOPY VARCHAR2)
87 IS
88
89 --Bug 3097166: Added the cursor for 'NACE' lookup type where clause to ignore
90 --the period when comparing the lookup_code.
91
92 CURSOR c_nace
93 IS
94 SELECT 'Y'
95 FROM fnd_lookup_values
96 WHERE lookup_type = p_lookup_type
97 AND replace(lookup_code, '.', '') = replace(p_column_value, '.', '')
98 AND ROWNUM = 1;
99
100 l_exist VARCHAR2(1);
101 BEGIN
102
103 IF ( p_column_value IS NOT NULL
104 AND p_column_value <> fnd_api.g_miss_char ) THEN
105 OPEN c_nace;
106 FETCH c_nace INTO l_exist;
107 IF c_nace%NOTFOUND THEN
108 fnd_message.set_name('AR','HZ_API_INVALID_LOOKUP');
109 fnd_message.set_token('COLUMN',p_column);
110 fnd_message.set_token('LOOKUP_TYPE', p_lookup_type);
111 fnd_msg_pub.add;
112 x_return_status := fnd_api.g_ret_sts_error;
113 END IF;
114 CLOSE c_nace;
115 END IF;
116 END validate_fnd_lookup;
117
118
119
120 -----------------------------
121 -- body of private procedures
122 -----------------------------
123
124 /**
125 * PRIVATE PROCEDURE enable_debug
126 *
127 * DESCRIPTION
128 * Turn on debug mode.
129 *
130 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
131 * HZ_UTILITY_V2PUB.enable_debug
132 *
133 * MODIFICATION HISTORY
134 *
135 * 07-23-2001 Jianying Huang o Created.
136 *
137 */
138
139 /*PROCEDURE enable_debug IS
140
141 BEGIN
142
143 g_debug_count := g_debug_count + 1;
144
145 IF g_debug_count = 1 THEN
146 IF fnd_profile.value('HZ_API_FILE_DEBUG_ON') = 'Y' OR
147 fnd_profile.value('HZ_API_DBMS_DEBUG_ON') = 'Y'
148 THEN
149 hz_utility_v2pub.enable_debug;
150 g_debug := TRUE;
151 END IF;
152 END IF;
153
154 END enable_debug;
155 */
156
157
158 /**
159 * PRIVATE PROCEDURE disable_debug
160 *
161 * DESCRIPTION
162 * Turn off debug mode.
163 *
164 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
165 * hz_utility_v2pub.disable_debug
166 *
167 * MODIFICATION HISTORY
168 *
169 * 07-23-2001 Jianying Huang o Created.
170 *
171 */
172
173 /*PROCEDURE disable_debug IS
174 BEGIN
175
176 IF g_debug THEN
177 g_debug_count := g_debug_count - 1;
178
179 IF g_debug_count = 0 THEN
180 hz_utility_v2pub.disable_debug;
181 g_debug := FALSE;
182 END IF;
183 END IF;
184
185 END disable_debug;
186 */
187
188 FUNCTION get_index (
189 p_val IN VARCHAR2
190 ) RETURN BINARY_INTEGER IS
191
192 l_table_index BINARY_INTEGER;
193 l_found BOOLEAN := FALSE;
194 l_hash_value NUMBER;
195
196 BEGIN
197
198 l_table_index := DBMS_UTILITY.get_hash_value(p_val, 1, TABLE_SIZE);
199
200 IF VAL_TAB.EXISTS(l_table_index) THEN
201 IF VAL_TAB(l_table_index) = p_val THEN
202 RETURN l_table_index;
203 ELSE
204 l_hash_value := l_table_index;
205 l_table_index := l_table_index + 1;
206 l_found := FALSE;
207
208 WHILE (l_table_index < TABLE_SIZE) AND (NOT l_found) LOOP
209 IF VAL_TAB.EXISTS(l_table_index) THEN
210 IF VAL_TAB(l_table_index) = p_val THEN
211 l_found := TRUE;
212 ELSE
213 l_table_index := l_table_index + 1;
214 END IF;
215 ELSE
216 RETURN TABLE_SIZE + 1;
217 END IF;
218 END LOOP;
219
220 IF NOT l_found THEN -- Didn't find any till the end
221 l_table_index := 1; -- Start from the beginning
222
223 WHILE (l_table_index < l_hash_value) AND (NOT l_found) LOOP
224 IF VAL_TAB.EXISTS(l_table_index) THEN
225 IF VAL_TAB(l_table_index) = p_val THEN
226 l_found := TRUE;
227 ELSE
228 l_table_index := l_table_index + 1;
229 END IF;
230 ELSE
231 RETURN TABLE_SIZE + 1;
232 END IF;
233 END LOOP;
234 END IF;
235
236 IF NOT l_found THEN
237 RETURN TABLE_SIZE + 1; -- Return a higher value
238 END IF;
239 END IF;
240 ELSE
241 RETURN TABLE_SIZE + 1;
242 END IF;
243
244 RETURN l_table_index;
245
246 EXCEPTION
247 WHEN OTHERS THEN -- The entry doesn't exists
248 RETURN TABLE_SIZE + 1;
249
250 END get_index;
251
252 PROCEDURE put (
253 p_val IN VARCHAR2
254 ) IS
255
256 l_table_index BINARY_INTEGER;
257 l_stored BOOLEAN := FALSE;
258 l_hash_value NUMBER;
259
260 BEGIN
261
262 l_table_index := DBMS_UTILITY.get_hash_value(p_val, 1, TABLE_SIZE);
263
264 IF VAL_TAB.EXISTS(l_table_index) THEN
265 IF VAL_TAB(l_table_index) <> p_val THEN --Collision
266 l_hash_value := l_table_index;
267 l_table_index := l_table_index + 1;
268
269 WHILE (l_table_index < TABLE_SIZE) AND (NOT l_stored) LOOP
270 IF VAL_TAB.EXISTS(l_table_index) THEN
271 IF VAL_TAB(l_table_index) <> p_val THEN
272 l_table_index := l_table_index + 1;
273 END IF;
274 ELSE
275 VAL_TAB(l_table_index) := p_val;
276 l_stored := TRUE;
277 END IF;
278 END LOOP;
279
280 IF NOT l_stored THEN --Didn't find any free bucket till the end
281 l_table_index := 1;
282
283 WHILE (l_table_index < l_hash_value) AND (NOT l_stored) LOOP
284 IF VAL_TAB.EXISTS(l_table_index) THEN
285 IF VAL_TAB(l_table_index) <> p_val THEN
286 l_table_index := l_table_index + 1;
287 END IF;
288 ELSE
289 VAL_TAB(l_table_index) := p_val;
290 l_stored := TRUE;
291 END IF;
292 END LOOP;
293 END IF;
294
295 END IF;
296 ELSE
297 VAL_TAB(l_table_index) := p_val;
298 END IF;
299
300 EXCEPTION
301 WHEN OTHERS THEN
302 NULL;
303
304 END put;
305
306 FUNCTION search (
307 p_val IN VARCHAR2,
308 p_category IN VARCHAR2
309 ) RETURN BOOLEAN IS
310
311 l_table_index BINARY_INTEGER;
312 l_return BOOLEAN;
313
314 l_dummy VARCHAR2(1);
315 l_position1 NUMBER;
316 l_position2 NUMBER;
317
318 l_lookup_table VARCHAR2(30);
319 l_lookup_type AR_LOOKUPS.lookup_type%TYPE;
320 l_lookup_code AR_LOOKUPS.lookup_code%TYPE;
321 l_territory_code VARCHAR2(2);
322
323 BEGIN
324
325 -- search for the value
326 l_table_index := get_index(p_val || G_SPECIAL_STRING || p_category);
327
328 IF l_table_index < table_size THEN
329 l_return := TRUE;
330 ELSE
331
332 --Can't find the value in the table; look in the database
333 IF p_category = 'LOOKUP' THEN
334
335 l_position1 := INSTRB(p_val, G_SPECIAL_STRING, 1, 1);
336 l_lookup_table := SUBSTRB(p_val, 1, l_position1 - 1);
337 l_position2 := INSTRB(p_val, G_SPECIAL_STRING, 1, 2);
338 l_lookup_type := SUBSTRB(p_val, l_position1 + G_LENGTH,
339 l_position2 - l_position1 - G_LENGTH);
340 l_lookup_code := SUBSTRB(p_val, l_position2 + G_LENGTH);
341
342 IF UPPER(l_lookup_table) = 'AR_LOOKUPS' THEN
343 BEGIN
344 SELECT 'Y' INTO l_dummy
345 FROM AR_LOOKUPS
346 WHERE LOOKUP_TYPE = l_lookup_type
347 AND LOOKUP_CODE = l_lookup_code
348 AND (ENABLED_FLAG = 'Y' AND
349 TRUNC(SYSDATE) BETWEEN
350 TRUNC(NVL(START_DATE_ACTIVE,SYSDATE)) AND
351 TRUNC(NVL(END_DATE_ACTIVE,SYSDATE))
352 );
353
354 l_return := TRUE;
355 EXCEPTION
356 WHEN NO_DATA_FOUND THEN
357 l_return := FALSE;
358 END;
359 ELSIF UPPER(l_lookup_table) = 'SO_LOOKUPS' THEN
360 BEGIN
361 SELECT 'Y' INTO l_dummy
362 FROM SO_LOOKUPS
363 WHERE LOOKUP_TYPE = l_lookup_type
364 AND LOOKUP_CODE = l_lookup_code
365 AND (ENABLED_FLAG = 'Y' AND
366 TRUNC(SYSDATE) BETWEEN
367 TRUNC(NVL(START_DATE_ACTIVE,SYSDATE)) AND
368 TRUNC(NVL(END_DATE_ACTIVE,SYSDATE))
369 );
370
371 l_return := TRUE;
372 EXCEPTION
373 WHEN NO_DATA_FOUND THEN
374 l_return := FALSE;
375 END;
376 ELSIF UPPER(l_lookup_table) = 'OE_SHIP_METHODS_V' THEN
377 BEGIN
378 SELECT 'Y' INTO l_dummy
379 FROM OE_SHIP_METHODS_V
380 WHERE LOOKUP_TYPE = l_lookup_type
381 AND LOOKUP_CODE = l_lookup_code
382 AND (ENABLED_FLAG = 'Y' AND
383 TRUNC(SYSDATE) BETWEEN
384 TRUNC(NVL(START_DATE_ACTIVE,SYSDATE)) AND
385 TRUNC(NVL(END_DATE_ACTIVE,SYSDATE))
386 )
387 AND ROWNUM = 1;
388
389 l_return := TRUE;
390 EXCEPTION
391 WHEN NO_DATA_FOUND THEN
392 l_return := FALSE;
393 END;
394 ELSIF UPPER(l_lookup_table) = 'FND_LOOKUP_VALUES' THEN
395 BEGIN
396 SELECT 'Y' INTO l_dummy
397 FROM FND_LOOKUP_VALUES
398 WHERE LOOKUP_TYPE = l_lookup_type
399 AND LOOKUP_CODE = l_lookup_code
400 AND (ENABLED_FLAG = 'Y' AND
401 TRUNC(SYSDATE) BETWEEN
402 TRUNC(NVL(START_DATE_ACTIVE,SYSDATE)) AND
403 TRUNC(NVL(END_DATE_ACTIVE,SYSDATE))
404 )
405 AND ROWNUM = 1;
406
407 l_return := TRUE;
408 EXCEPTION
409 WHEN NO_DATA_FOUND THEN
410 l_return := FALSE;
411 END;
412 ELSE
413 l_return := FALSE;
414 END IF;
415 ELSIF p_category = 'FND_TERRITORIES' THEN
416
417 l_position1 := INSTRB( p_val, G_SPECIAL_STRING, 1, 1 );
418 l_territory_code := SUBSTRB( p_val, 1, l_position1 - 1 );
419
420 BEGIN
421 SELECT null INTO l_dummy
422 FROM FND_TERRITORIES
423 WHERE TERRITORY_CODE = l_territory_code
424 AND OBSOLETE_FLAG = 'N';
425
426 l_return := TRUE;
427
428 EXCEPTION
429 WHEN NO_DATA_FOUND THEN
430 l_return := FALSE;
431 END;
432 ELSE
433 l_return := FALSE;
434 END IF;
435
436 --Cache the value
437 IF l_return THEN
438 put(p_val || G_SPECIAL_STRING || p_category);
439 END IF;
440 END IF;
441 RETURN l_return;
442
443 END search;
444
445 --
446 -- PROCEDURE check organization
447 --
448 -- DESCRIPTION
449 -- Checks if the party type is an organization
450 -- point.
451 --
452 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
453 --
454 -- ARGUMENTS
455 -- IN:
456 -- p_party_id ID identifying the party.
457 -- IN/OUT:
458 -- x_return_status Return status after the call. The status can
459 -- be FND_API.G_RET_STS_SUCCESS (success),
460 -- fnd_api.g_ret_sts_error (error),
461 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
462 --
463 -- NOTES
464 --
465 -- MODIFICATION HISTORY
466 --
467 -- 21-NOV-2001 Joe del Callar bug 2120857: Created to validate party
468 -- types for EFT and EDI contact points.
469 -- 22-MAY-2002 Joe del Callar Fixed an issue where the EDI org check
470 -- was failing due to a premature cursor
471 -- close.
472 -- 23-DEC-2003 Rajib R Borah Bug 2619099.Displayed error message
473 -- HZ_EDI_EFT_ORG_PARTIES_ONLY instead of
474 -- HZ_API_INVALID_PARTY_TYPE.
475 --
476 PROCEDURE check_organization (
477 p_party_id IN NUMBER,
478 x_return_status IN OUT NOCOPY VARCHAR2
479 ) IS
480 CURSOR c_partytype IS
481 SELECT hp.party_type
482 FROM hz_parties hp
483 WHERE hp.party_id = p_party_id;
484
485 l_party_type VARCHAR2(30);
486
487 BEGIN
488
489 OPEN c_partytype;
490 FETCH c_partytype INTO l_party_type;
491 -- Ensure that a party record was retrieved.
492 IF c_partytype%NOTFOUND THEN
493 -- no party and organization was found for the given ID.
494 CLOSE c_partytype;
495 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
496 fnd_message.set_token('FK', 'OWNER_TABLE_ID');
497 fnd_message.set_token('COLUMN', 'PARTY_ID');
498 fnd_message.set_token('TABLE', 'HZ_PARTIES');
499 fnd_msg_pub.add;
500 x_return_status := fnd_api.g_ret_sts_error;
501 RETURN;
502 END IF;
503
504 -- Check that the party is an organization.
505 IF l_party_type <> 'ORGANIZATION' THEN
506 -- This is not an organization. Only organizations can have EDI
507 -- contact points.
508
509 /* Bug 2619099.
510 | fnd_message.set_name('AR', 'HZ_API_INVALID_PARTY_TYPE'); |
511 | fnd_message.set_token('PARTY_ID', TO_CHAR(p_party_id)); |
512 | fnd_message.set_token('TYPE', 'ORGANIZATION'); */
513 fnd_message.set_name('AR','HZ_EDI_EFT_ORG_PARTIES_ONLY');
514
515 fnd_msg_pub.add;
516 x_return_status := fnd_api.g_ret_sts_error;
517 END IF;
518 CLOSE c_partytype;
519 END check_organization;
520
521 --
522 -- PROCEDURE validate_party_type
523 --
524 -- DESCRIPTION
525 -- Checks if the proper party type is being applied for the given contact
526 -- point.
527 --
528 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
529 --
530 -- ARGUMENTS
531 -- IN:
532 -- p_table_name Must be 'HZ_PARTIES' for valid execution.
533 -- p_party_id ID identifying the party.
534 -- p_contact_point_type Type of contact point. 'EFT' and 'EDI'-type
535 -- contact points are accepted. Others are ignored.
536 -- IN/OUT:
537 -- x_return_status Return status after the call. The status can
538 -- be FND_API.G_RET_STS_SUCCESS (success),
539 -- fnd_api.g_ret_sts_error (error),
540 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
541 --
542 -- NOTES
543 --
544 -- MODIFICATION HISTORY
545 --
546 -- 21-NOV-2001 Joe del Callar bug 2120857: Created to validate party
547 -- types for EFT and EDI contact points.
548 -- 23-DEC-2003 Rajib R Borah Bug 2619099.Displayed the error message
549 -- HZ_EDI_EFT_ORG_PARTIES_ONLY instead of
550 -- HZ_API_INVALID_FK.
551 --
552 -- 06-NOV-2006 Sudhir Gokavarapu Bug 6611955. Added IF ELSE condition after Party Type Check.
553 -- Corrected IF ELSE condition for c_class Cursor Open / Close.
554 PROCEDURE validate_party_type (
555 p_table_name IN VARCHAR2,
556 p_party_id IN NUMBER,
557 p_contact_point_type IN VARCHAR2,
558 x_return_status IN OUT NOCOPY VARCHAR2
559 ) IS
560
561 CURSOR c_class IS
562 SELECT hca.class_category,
563 hca.object_version_number
564 FROM hz_code_assignments hca
565 WHERE hca.owner_table_name = 'HZ_PARTIES'
566 AND hca.owner_table_id = p_party_id
567 AND hca.status = 'A'
568 ORDER BY 2 DESC;
569
570 l_class_category VARCHAR2(30);
571 l_dummy NUMBER;
572 l_debug_prefix VARCHAR2(30) := '';
573 BEGIN
574 -- data being validated must belong to a party.
575 IF p_table_name <> 'HZ_PARTIES' THEN
576 -- This is not a party type. This procedure was called incorrectly,
577 -- return a failure.
578 /* Bug 2619099.
579 | fnd_message.set_name('AR', 'HZ_API_INVALID_FK'); |
580 | fnd_message.set_token('FK', 'OWNER_TABLE_NAME'); |
581 | fnd_message.set_token('COLUMN', 'HZ_PARTIES'); |
582 | fnd_message.set_token('TABLE', 'FND_OBJECTS'); */
583 fnd_message.set_name('AR','HZ_EDI_EFT_ORG_PARTIES_ONLY');
584
585 fnd_msg_pub.add;
586 x_return_status := fnd_api.g_ret_sts_error;
587 RETURN;
588 END IF;
589
590 -- validate party type based on the contact point type.
591 IF p_contact_point_type = 'EDI' THEN
592 -- make sure that the contact point belongs to an organization.
593 check_organization(p_party_id, x_return_status);
594 ELSIF p_contact_point_type = 'EFT' THEN
595 -- make sure that the contact point belongs to an organization.
596 check_organization(p_party_id, x_return_status);
597 IF x_return_status <> fnd_api.g_ret_sts_error THEN
598 -- EFT is only currently allowed for banks.
599
600 OPEN c_class;
601 FETCH c_class INTO l_class_category, l_dummy;
602
603 -- Ensure that a party record was retrieved.
604 IF c_class%NOTFOUND THEN
605 -- no party and organization was found for the given ID.
606 CLOSE c_class;
607 fnd_message.set_name('AR', 'HZ_API_NO_RECORD');
608 fnd_message.set_token('RECORD', 'Code Assignment');
609 fnd_message.set_token('VALUE', TO_CHAR(p_party_id));
610 fnd_msg_pub.add;
611 x_return_status := fnd_api.g_ret_sts_error;
612 -- END IF;
613 ELSE
614 -- Check that the category class is a bank.
615 IF l_class_category NOT LIKE 'BANK%' THEN
616 -- This is not a bank-type organization. Only bank-type organizations
617 -- can have EFT contact points.
618 fnd_message.set_name('AR', 'HZ_API_INVALID_PARTY_TYPE');
619 fnd_message.set_token('PARTY_ID', TO_CHAR(p_party_id));
620 fnd_message.set_token('TYPE', 'BANK or BANK BRANCH');
621 fnd_msg_pub.add;
622 x_return_status := fnd_api.g_ret_sts_error;
623 END IF;
624 CLOSE c_class;
625 END IF;
626 END IF;
627 ELSE
628 -- do nothing if not of either type that this procedure recognizes.
629 NULL;
630 END IF;
631 END validate_party_type;
632
633 PROCEDURE validate_mandatory (
634 p_create_update_flag IN VARCHAR2,
635 p_column IN VARCHAR2,
636 p_column_value IN VARCHAR2,
637 p_restricted IN VARCHAR2 DEFAULT 'N',
638 x_return_status IN OUT NOCOPY VARCHAR2
639 ) IS
640
641 l_error BOOLEAN := FALSE;
642
643 BEGIN
644
645 IF p_restricted = 'N' THEN
646 IF (p_create_update_flag = 'C' AND
647 (p_column_value IS NULL OR
648 p_column_value = fnd_api.g_miss_char)) OR
649 (p_create_update_flag = 'U' AND
650 p_column_value = fnd_api.g_miss_char)
651 THEN
652 l_error := TRUE;
653 END IF;
654 ELSE
655 IF (p_column_value IS NULL OR
656 p_column_value = fnd_api.g_miss_char)
657 THEN
658 l_error := TRUE;
659 END IF;
660 END IF;
661
662 IF l_error THEN
663 fnd_message.set_name('AR', 'HZ_API_MISSING_COLUMN');
664 fnd_message.set_token('COLUMN', p_column);
665 fnd_msg_pub.add;
666 x_return_status := fnd_api.g_ret_sts_error;
667 END IF;
668
669 END validate_mandatory;
670
671 PROCEDURE validate_mandatory (
672 p_create_update_flag IN VARCHAR2,
673 p_column IN VARCHAR2,
674 p_column_value IN NUMBER,
675 p_restricted IN VARCHAR2 DEFAULT 'N',
676 x_return_status IN OUT NOCOPY VARCHAR2
677 ) IS
678
679 l_error BOOLEAN := FALSE;
680
681 BEGIN
682
683 IF p_restricted = 'N' THEN
684 IF (p_create_update_flag = 'C' AND
685 (p_column_value IS NULL OR
686 p_column_value = fnd_api.g_miss_num)) OR
687 (p_create_update_flag = 'U' AND
688 p_column_value = fnd_api.g_miss_num)
689 THEN
690 l_error := TRUE;
691 END IF;
692 ELSE
693 IF (p_column_value IS NULL OR
694 p_column_value = fnd_api.g_miss_num)
695 THEN
696 l_error := TRUE;
697 END IF;
698 END IF;
699
700 IF l_error THEN
701 fnd_message.set_name('AR', 'HZ_API_MISSING_COLUMN');
702 fnd_message.set_token('COLUMN', p_column);
703 fnd_msg_pub.add;
704 x_return_status := fnd_api.g_ret_sts_error;
705 END IF;
706
707 END validate_mandatory;
708
709 PROCEDURE validate_mandatory (
710 p_create_update_flag IN VARCHAR2,
711 p_column IN VARCHAR2,
712 p_column_value IN DATE,
713 p_restricted IN VARCHAR2 DEFAULT 'N',
714 x_return_status IN OUT NOCOPY VARCHAR2
715 ) IS
716
717 l_error BOOLEAN := FALSE;
718
719 BEGIN
720
721 IF p_restricted = 'N' THEN
722 IF (p_create_update_flag = 'C' AND
723 (p_column_value IS NULL OR
724 p_column_value = FND_API.G_MISS_DATE)) OR
725 (p_create_update_flag = 'U' AND
726 p_column_value = FND_API.G_MISS_DATE)
727 THEN
728 l_error := TRUE;
729 END IF;
730 ELSE
731 IF (p_column_value IS NULL OR
732 p_column_value = FND_API.G_MISS_DATE)
733 THEN
734 l_error := TRUE;
735 END IF;
736 END IF;
737
738 IF l_error THEN
739 fnd_message.set_name('AR', 'HZ_API_MISSING_COLUMN');
740 fnd_message.set_token('COLUMN', p_column);
741 fnd_msg_pub.add;
742 x_return_status := fnd_api.g_ret_sts_error;
743 END IF;
744
745 END validate_mandatory;
746
747 PROCEDURE validate_nonupdateable (
748 p_column IN VARCHAR2,
749 p_column_value IN VARCHAR2,
750 p_old_column_value IN VARCHAR2,
751 p_restricted IN VARCHAR2 DEFAULT 'Y',
752 x_return_status IN OUT NOCOPY VARCHAR2,
753 p_raise_error IN VARCHAR2 := 'Y'
754 ) IS
755
756 l_error BOOLEAN := FALSE;
757
758 BEGIN
759
760 IF p_column_value IS NOT NULL THEN
761 IF p_restricted = 'Y' THEN
762 IF (p_column_value <> fnd_api.g_miss_char OR
763 p_old_column_value IS NOT NULL) AND
764 (p_old_column_value IS NULL OR
765 p_column_value <> p_old_column_value)
766 THEN
767 l_error := TRUE;
768 END IF;
769 ELSE
770 IF (p_old_column_value IS NOT NULL AND -- BUG 3367582.
771 p_old_column_value <> FND_API.G_MISS_CHAR)
772 AND
773 (p_column_value = fnd_api.g_miss_char OR
774 p_column_value <> p_old_column_value)
775 THEN
776 l_error := TRUE;
777 END IF;
778 END IF;
779 END IF;
780 IF l_error THEN
781 IF p_raise_error = 'Y' THEN
782 fnd_message.set_name('AR', 'HZ_API_NONUPDATEABLE_COLUMN');
783 fnd_message.set_token('COLUMN', p_column);
784 fnd_msg_pub.add;
785 END IF;
786 x_return_status := fnd_api.g_ret_sts_error;
787 END IF;
788
789 END validate_nonupdateable;
790
791 PROCEDURE validate_nonupdateable (
792 p_column IN VARCHAR2,
793 p_column_value IN NUMBER,
794 p_old_column_value IN NUMBER,
795 p_restricted IN VARCHAR2 DEFAULT 'Y',
796 x_return_status IN OUT NOCOPY VARCHAR2,
797 p_raise_error IN VARCHAR2 := 'Y'
798 ) IS
799
800 l_error BOOLEAN := FALSE;
801
802 BEGIN
803
804 IF p_column_value IS NOT NULL THEN
805 IF p_restricted = 'Y' THEN
806 IF (p_column_value <> fnd_api.g_miss_num OR
807 p_old_column_value IS NOT NULL) AND
808 (p_old_column_value IS NULL OR
809 p_column_value <> p_old_column_value)
810 THEN
811 l_error := TRUE;
812 END IF;
813 ELSE
814 IF (p_old_column_value IS NOT NULL AND -- Bug 3367582.
815 p_old_column_value <> FND_API.G_MISS_NUM)
816 AND
817 (p_column_value = fnd_api.g_miss_num OR
818 p_column_value <> p_old_column_value)
819 THEN
820 l_error := TRUE;
821 END IF;
822 END IF;
823 END IF;
824
825 IF l_error THEN
826 IF p_raise_error = 'Y' THEN
827 fnd_message.set_name('AR', 'HZ_API_NONUPDATEABLE_COLUMN');
828 fnd_message.set_token('COLUMN', p_column);
829 fnd_msg_pub.add;
830 END IF;
831 x_return_status := fnd_api.g_ret_sts_error;
832 END IF;
833
834 END validate_nonupdateable;
835
836 PROCEDURE validate_nonupdateable (
837 p_column IN VARCHAR2,
838 p_column_value IN DATE,
839 p_old_column_value IN DATE,
840 p_restricted IN VARCHAR2 DEFAULT 'Y',
841 x_return_status IN OUT NOCOPY VARCHAR2,
842 p_raise_error IN VARCHAR2 := 'Y'
843 ) IS
844
845 l_error BOOLEAN := FALSE;
846
847 BEGIN
848
849 IF p_column_value IS NOT NULL THEN
850 IF p_restricted = 'Y' THEN
851 IF (p_column_value <> FND_API.G_MISS_DATE OR
852 p_old_column_value IS NOT NULL) AND
853 (p_old_column_value IS NULL OR
854 p_column_value <> p_old_column_value)
855 THEN
856 l_error := TRUE;
857 END IF;
858 ELSE
859 IF (p_old_column_value IS NOT NULL AND -- Bug 3367582
860 p_old_column_value <> FND_API.G_MISS_DATE)
861 AND
862 (p_column_value = FND_API.G_MISS_DATE OR
863 p_column_value <> p_old_column_value)
864 THEN
865 l_error := TRUE;
866 END IF;
867 END IF;
868 END IF;
869
870 IF l_error THEN
871 IF p_raise_error = 'Y' THEN
872 fnd_message.set_name('AR', 'HZ_API_NONUPDATEABLE_COLUMN');
873 fnd_message.set_token('COLUMN', p_column);
874 fnd_msg_pub.add;
875 END IF;
876 x_return_status := fnd_api.g_ret_sts_error;
877 END IF;
878
879 END validate_nonupdateable;
880
881 PROCEDURE validate_start_end_date (
882 p_create_update_flag IN VARCHAR2,
883 p_start_date_column_name IN VARCHAR2,
884 p_start_date IN DATE,
885 p_old_start_date IN DATE,
886 p_end_date_column_name IN VARCHAR2,
887 p_end_date IN DATE,
888 p_old_end_date IN DATE,
889 x_return_status IN OUT NOCOPY VARCHAR2
890 ) IS
891
892 l_start_date DATE := p_old_start_date;
893 l_end_date DATE := p_old_end_date;
894
895 BEGIN
896
897 IF p_create_update_flag = 'C' THEN
898 l_start_date := p_start_date;
899 l_end_date := p_end_date;
900 ELSIF p_create_update_flag = 'U' THEN
901 IF p_start_date IS NOT NULL
902 THEN
903 IF p_start_date = FND_API.G_MISS_DATE THEN
904 l_start_date := NULL;
905 ELSE
906 l_start_date := p_start_date;
907 END IF;
908 END IF;
909
910 IF p_end_date IS NOT NULL
911 THEN
912 IF p_end_date = FND_API.G_MISS_DATE THEN
913 l_end_date := NULL;
914 ELSE
915 l_end_date := p_end_date;
916 END IF;
917 END IF;
918 END IF;
919
920 IF l_end_date IS NOT NULL AND
921 l_end_date <> FND_API.G_MISS_DATE AND
922 (l_start_date IS NULL OR
923 l_start_date = FND_API.G_MISS_DATE OR
924 l_start_date > l_end_date)
925 THEN
926 fnd_message.set_name('AR', 'HZ_API_DATE_GREATER');
927 fnd_message.set_token('DATE2', p_end_date_column_name);
928 fnd_message.set_token('DATE1', p_start_date_column_name);
929 fnd_msg_pub.add;
930 x_return_status := fnd_api.g_ret_sts_error;
931 END IF;
932
933 END validate_start_end_date;
934
935 PROCEDURE validate_cannot_update_to_null (
936 p_column IN VARCHAR2,
937 p_column_value IN VARCHAR2,
938 x_return_status IN OUT NOCOPY VARCHAR2
939 ) IS
940
941 BEGIN
942
943 IF p_column_value = fnd_api.g_miss_char THEN
944 fnd_message.set_name('AR', 'HZ_API_NONUPDATEABLE_TO_NULL');
945 fnd_message.set_token('COLUMN', p_column);
946 fnd_msg_pub.add;
947 x_return_status := fnd_api.g_ret_sts_error;
948 END IF;
949
950 END validate_cannot_update_to_null;
951
952 PROCEDURE validate_cannot_update_to_null (
953 p_column IN VARCHAR2,
954 p_column_value IN NUMBER,
955 x_return_status IN OUT NOCOPY VARCHAR2
956 ) IS
957
958 BEGIN
959
960 IF p_column_value = fnd_api.g_miss_num THEN
961 fnd_message.set_name('AR', 'HZ_API_NONUPDATEABLE_TO_NULL');
962 fnd_message.set_token('COLUMN', p_column);
963 fnd_msg_pub.add;
964 x_return_status := fnd_api.g_ret_sts_error;
965 END IF;
966
967 END validate_cannot_update_to_null;
968
969 PROCEDURE validate_cannot_update_to_null (
970 p_column IN VARCHAR2,
971 p_column_value IN DATE,
972 x_return_status IN OUT NOCOPY VARCHAR2
973 ) IS
974
975 BEGIN
976
977 IF p_column_value = FND_API.G_MISS_DATE THEN
978 fnd_message.set_name('AR', 'HZ_API_NONUPDATEABLE_TO_NULL');
979 fnd_message.set_token('COLUMN', p_column);
980 fnd_msg_pub.add;
981 x_return_status := fnd_api.g_ret_sts_error;
982 END IF;
983
984 END validate_cannot_update_to_null;
985
986 PROCEDURE validate_lookup (
987 p_column IN VARCHAR2,
988 p_lookup_table IN VARCHAR2 DEFAULT 'AR_LOOKUPS',
989 p_lookup_type IN VARCHAR2,
990 p_column_value IN VARCHAR2,
991 x_return_status IN OUT NOCOPY VARCHAR2
992 ) IS
993
994 l_error BOOLEAN := FALSE;
995
996 BEGIN
997
998 IF p_column_value IS NOT NULL AND
999 p_column_value <> fnd_api.g_miss_char THEN
1000
1001 IF p_lookup_type = 'YES/NO' THEN
1002 IF p_column_value NOT IN ('Y', 'N') THEN
1003 l_error := TRUE;
1004 END IF;
1005 ELSE
1006 IF NOT search(p_lookup_table || G_SPECIAL_STRING ||
1007 p_lookup_type || G_SPECIAL_STRING || p_column_value,
1008 'LOOKUP')
1009 THEN
1010 l_error := TRUE;
1011 END IF;
1012 END IF;
1013
1014 IF l_error THEN
1015 fnd_message.set_name('AR', 'HZ_API_INVALID_LOOKUP');
1016 fnd_message.set_token('COLUMN', p_column);
1017 fnd_message.set_token('LOOKUP_TYPE', p_lookup_type);
1018 fnd_msg_pub.add;
1019 x_return_status := fnd_api.g_ret_sts_error;
1020 END IF;
1021 END IF;
1022
1023 END validate_lookup;
1024
1025 PROCEDURE validate_country_code (
1026 p_column IN VARCHAR2,
1027 p_column_value IN VARCHAR2,
1028 x_return_status IN OUT NOCOPY VARCHAR2
1029 ) IS
1030
1031 BEGIN
1032
1033 IF p_column_value IS NOT NULL AND
1034 p_column_value <> FND_API.G_MISS_CHAR
1035 THEN
1036 IF NOT search(p_column_value || G_SPECIAL_STRING, 'FND_TERRITORIES')
1037 THEN
1038 fnd_message.set_name('AR', 'HZ_API_INVALID_COUNTRY_CODE');
1039 fnd_msg_pub.add;
1040 x_return_status := fnd_api.g_ret_sts_error;
1041 END IF;
1042 END IF;
1043
1044 END validate_country_code;
1045
1046
1047 --
1048 -- PRIVATE PROCEDURE
1049 -- Main routine for contact point record validation.
1050 --
1051 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1052 --
1053 -- ARGUMENTS
1054 -- IN:
1055 -- p_create_update_flag Create update flag. 'C' = create. 'U' = update.
1056 -- p_contact_point_rec Contact point record.
1057 -- p_edi_rec EDI record.
1058 -- p_eft_rec EFT record.
1059 -- p_email_rec Email record.
1060 -- p_phone_rec Phone record.
1061 -- p_telex_rec Telex record.
1062 -- p_web_rec Web record.
1063 -- p_rowid Rowid of the record (used only in update mode).
1064 -- IN/OUT:
1065 -- x_return_status Return status after the call. The status can
1066 -- be FND_API.G_RET_STS_SUCCESS (success),
1067 -- fnd_api.g_ret_sts_error (error),
1068 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1069 --
1070 -- NOTES
1071 --
1072 -- MODIFICATION HISTORY
1073 --
1074 -- 05-DEC-2001 Joe del Callar Bug 2116225: Modified to accept EFT
1075 -- records for bank consolidation.
1076 -- Bug 2117973: Modified to comply with
1077 -- PL/SQL coding standards.
1078 -- 03-JAN-2002 P.Suresh Bug No : 1946858. Added the validation that
1079 -- Inactive contact can never marked as
1080 -- preferred.
1081 -- 17-FEB-2002 P.Suresh Bug No : 1946858. Added the validation that
1082 -- contact_point_purpose cannot be null when
1083 -- primary_by_purpose is 'Y'.
1084 -- 23-MAY-2002 Joe del Callar Modified to NOT validate party type on
1085 -- EFT and EDI records during update mode
1086 -- since you are not updateable anyway.
1087 -- 08-DEC-2003 Rajib Ranjan Borah o Bug 2807379.Phone number column is not
1088 -- updateable to NULL.
1089 -- 01-03-2005 Rajib Ranjan Borah o SSM SST Integration and Extension.
1090 -- New user update rules will be used to check
1091 -- update privilege instead of checking against 'DNB'
1092 -- only.
1093 -- 28-SEP-2005 Idris Ali o Bug 4474646 Modified to make the error message
1094 -- more user friendly when the country code is invalid.
1095 -- 10-SEP-2007 Neeraj Shinde o Bug 6367289 : Added Validation - EFT type of
1096 -- contact point can only
1097 -- be assigned to Parties of type Organization.
1098 -- 18-JUL-2008 Ajai Singh o Bug 7046491 : Updated curser to compare the
1099 -- timezone from fnd_timezones_vl view.
1100
1101 PROCEDURE validate_contact_point_main (
1102 p_create_update_flag IN VARCHAR2,
1103 p_contact_point_rec IN hz_contact_point_v2pub.contact_point_rec_type,
1104 p_edi_rec IN hz_contact_point_v2pub.edi_rec_type := hz_contact_point_v2pub.g_miss_edi_rec,
1105 p_eft_rec IN hz_contact_point_v2pub.eft_rec_type := hz_contact_point_v2pub.g_miss_eft_rec,
1106 p_email_rec IN hz_contact_point_v2pub.email_rec_type := hz_contact_point_v2pub.g_miss_email_rec,
1107 p_phone_rec IN hz_contact_point_v2pub.phone_rec_type := hz_contact_point_v2pub.g_miss_phone_rec,
1108 p_telex_rec IN hz_contact_point_v2pub.telex_rec_type := hz_contact_point_v2pub.g_miss_telex_rec,
1109 p_web_rec IN hz_contact_point_v2pub.web_rec_type := hz_contact_point_v2pub.g_miss_web_rec,
1110 p_rowid IN ROWID,
1111 x_return_status IN OUT NOCOPY VARCHAR2
1112 ) IS
1113 l_debug_prefix VARCHAR2(30) := ''; --'validate_contact_point'
1114 l_dummy VARCHAR2(10);
1115 l_fk_exist VARCHAR2(1);
1116 l_fk_column VARCHAR2(30);
1117 l_error BOOLEAN := FALSE;
1118 l_return_status VARCHAR2(1);
1119
1120 l_owner_table_name hz_contact_points.owner_table_name%TYPE;
1121 l_owner_table_id NUMBER;
1122 l_contact_point_type hz_contact_points.contact_point_type%TYPE :=
1123 p_contact_point_rec.contact_point_type;
1124 l_content_source_type hz_contact_points.content_source_type%TYPE;
1125 l_orig_system_reference hz_contact_points.orig_system_reference%TYPE;
1126 l_primary_flag hz_contact_points.primary_flag%TYPE;
1127 l_preferred_flag hz_contact_points.primary_by_purpose%TYPE;
1128 l_status hz_contact_points.status%TYPE;
1129 l_created_by_module hz_contact_points.created_by_module%TYPE;
1130 l_application_id NUMBER;
1131 l_contact_point_purpose hz_contact_points.contact_point_purpose%TYPE;
1132 l_email_format hz_contact_points.email_format%TYPE;
1133 l_phone_line_type hz_contact_points.phone_line_type%TYPE;
1134 l_primary_by_purpose hz_contact_points.primary_by_purpose%TYPE;
1135
1136 -- Bug 2197181: added for mix-n-match
1137 db_actual_content_source hz_contact_points.actual_content_source%TYPE;
1138 l_phone_area_code hz_contact_points.phone_area_code%TYPE;
1139 l_phone_country_code hz_contact_points.phone_country_code%TYPE;
1140 l_phone_number hz_contact_points.phone_number%TYPE;
1141 l_phone_extension hz_contact_points.phone_extension%TYPE;
1142 l_raw_phone_number hz_contact_points.raw_phone_number%TYPE;
1143 -- Bug 4226199 : Added for update validation
1144 l_email_address hz_contact_points.email_address%TYPE;
1145 l_telex hz_contact_points.telex_number%TYPE;
1146 l_url hz_contact_points.url%TYPE;
1147
1148 l_validate_osr varchar2(1) := 'Y';
1149 l_mosr_owner_table_id number;
1150
1151 l_temp_return_status VARCHAR2(10); -- for storing return status from
1152 -- hz_orig_system_ref_pub.get_owner_table_id
1153
1154 -- Bug 2197181: selecting actual_content_source for mix-n-match
1155 -- Bug 4203495 selecting primary_flag
1156 CURSOR c_update IS
1157 SELECT hcp.owner_table_name,
1158 hcp.owner_table_id,
1159 hcp.contact_point_type,
1160 hcp.content_source_type,
1161 hcp.orig_system_reference,
1162 hcp.status,
1163 hcp.primary_flag,
1164 hcp.created_by_module,
1165 hcp.application_id,
1166 hcp.contact_point_purpose,
1167 hcp.email_format,
1168 hcp.phone_line_type,
1169 hcp.phone_country_code,
1170 hcp.primary_by_purpose,
1171 hcp.actual_content_source,
1172 hcp.phone_area_code,
1173 hcp.phone_country_code,
1174 hcp.phone_number,
1175 hcp.phone_extension,
1176 hcp.raw_phone_number,
1177 -- Bug 4226199 : Added for update validation
1178 hcp.email_address,
1179 hcp.telex_number,
1180 hcp.url
1181 FROM hz_contact_points hcp
1182 WHERE ROWID = p_rowid;
1183
1184 CURSOR c_dup (p_contact_point_id IN NUMBER) IS
1185 SELECT 'Y'
1186 FROM hz_contact_points hcp
1187 WHERE hcp.contact_point_id = p_contact_point_id;
1188
1189 CURSOR c_pexist (p_owner_table_id IN NUMBER) IS
1190 SELECT 'Y'
1191 FROM hz_parties
1192 WHERE party_id = p_owner_table_id;
1193
1194 CURSOR c_psexist (p_owner_table_id IN NUMBER) IS
1195 SELECT 'Y'
1196 FROM hz_party_sites hps
1197 WHERE hps.party_site_id = p_owner_table_id;
1198
1199 CURSOR c_timezone (p_timezone_id IN NUMBER) IS--updated against bug 7046491
1200 SELECT 'Y'
1201 FROM fnd_timezones_vl ftl
1202 WHERE ftl.upgrade_tz_id = p_timezone_id;
1203
1204 CURSOR c_countrycode (p_phone_country_code IN VARCHAR2) IS
1205 SELECT 'Y'
1206 FROM hz_phone_country_codes hpcc
1207 WHERE hpcc.phone_country_code = p_phone_country_code
1208 AND ROWNUM = 1;
1209
1210 BEGIN
1211 -- Debug info.
1212 /*IF g_debug THEN
1213 hz_utility_v2pub.debug ('validate_contact_point_main (+)');
1214 END IF;
1215 */
1216 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1217 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_contact_point_main (+)',
1218 p_msg_level=>fnd_log.level_procedure);
1219 END IF;
1220 -- Select fields for later use during update.
1221 IF p_create_update_flag = 'U' THEN
1222
1223 -- Bug 2197181: selecting actual_content_source for mix-n-match
1224 -- Bug 4203495: selecting primary_flag
1225 OPEN c_update;
1226 FETCH c_update
1227 INTO l_owner_table_name,
1228 l_owner_table_id,
1229 l_contact_point_type,
1230 l_content_source_type,
1231 l_orig_system_reference,
1232 l_status,
1233 l_primary_flag,
1234 l_created_by_module,
1235 l_application_id,
1236 l_contact_point_purpose,
1237 l_email_format,
1238 l_phone_line_type,
1239 l_phone_country_code,
1240 l_primary_by_purpose,
1241 db_actual_content_source,
1242 l_phone_area_code,
1243 l_phone_country_code,
1244 l_phone_number,
1245 l_phone_extension,
1246 l_raw_phone_number,
1247 -- Bug 4226199 : Added for update validation
1248 l_email_address,
1249 l_telex,
1250 l_url;
1251 IF c_update%NOTFOUND THEN
1252 CLOSE c_update;
1253 -- Debug info.
1254 /*IF g_debug THEN
1255 hz_utility_v2pub.debug ('could not find record to update, rowid='||
1256 p_rowid);
1257 END IF;
1258 */
1259 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1260 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'could not find record to update, rowid='||p_rowid,
1261 p_msg_level=>fnd_log.level_statement);
1262 END IF;
1263
1264 RAISE NO_DATA_FOUND;
1265 ELSE
1266 CLOSE c_update;
1267 END IF;
1268 END IF;
1269
1270 --------------------------------------
1271 -- validate contact_point_id
1272 --------------------------------------
1273 /****Logical APIs - validation not required****/
1274 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
1275 -- If primary key value is passed, check for uniqueness.
1276 -- If primary key value is not passed, it will be generated
1277 -- from sequence by table handler.
1278
1279 IF p_create_update_flag = 'C' THEN
1280 IF p_contact_point_rec.contact_point_id IS NOT NULL AND
1281 p_contact_point_rec.contact_point_id <> fnd_api.g_miss_num
1282 THEN
1283 OPEN c_dup (p_contact_point_rec.contact_point_id);
1284 FETCH c_dup INTO l_dummy;
1285
1286 -- key is not unique, push an error onto the stack.
1287 IF NVL(c_dup%FOUND, FALSE) THEN
1288 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
1289 fnd_message.set_token('COLUMN', 'contact_point_id');
1290 fnd_msg_pub.add;
1291 x_return_status := fnd_api.g_ret_sts_error;
1292 END IF;
1293 CLOSE c_dup;
1294
1295 /*IF g_debug THEN
1296 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1297 'check that contact_point_id is unique during creation. ' ||
1298 ' x_return_status = ' || x_return_status, l_debug_prefix);
1299 END IF;
1300 */
1301 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1302 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'check that contact_point_id is unique during creation. ' ||
1303 ' x_return_status = ' || x_return_status,
1304
1305 p_msg_level=>fnd_log.level_statement);
1306 END IF;
1307
1308 END IF;
1309 END IF;
1310
1311 /*IF g_debug THEN
1312 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1313 '(+) after validate contact_point_id ... ' ||
1314 'x_return_status = ' || x_return_status, l_debug_prefix);
1315 END IF;
1316 */
1317 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1318 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate contact_point_id ... ' ||
1319 'x_return_status = ' || x_return_status,
1320
1321 p_msg_level=>fnd_log.level_statement);
1322 END IF;
1323 END IF;
1324
1325 --------------------------------------
1326 -- validate contact_point_type
1327 --------------------------------------
1328 /****Logical APIs - validation not required****/
1329 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
1330 -- contact_point_type is mandatory field
1331 -- Since contact_point_type is non-updateable, we only need to check
1332 -- mandatory during creation.
1333
1334 IF p_create_update_flag = 'C' THEN
1335 validate_mandatory (
1336 p_create_update_flag => p_create_update_flag,
1337 p_column => 'contact_point_type',
1338 p_column_value => p_contact_point_rec.contact_point_type,
1339 x_return_status => x_return_status);
1340
1341 /*IF g_debug THEN
1342 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1343 'contact_point_type is mandatory. ' ||
1344 'x_return_status = ' || x_return_status, l_debug_prefix);
1345 END IF;
1346 */
1347 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1348 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'contact_point_type is mandatory. ' ||
1349 'x_return_status = ' || x_return_status,
1350
1351 p_msg_level=>fnd_log.level_statement);
1352 END IF;
1353
1354 END IF;
1355
1356 -- contact_point_type is non-updateable field
1357 IF p_create_update_flag = 'U' AND
1358 p_contact_point_rec.contact_point_type IS NOT NULL
1359 THEN
1360 validate_nonupdateable (
1361 p_column => 'contact_point_type',
1362 p_column_value => p_contact_point_rec.contact_point_type,
1363 p_old_column_value => l_contact_point_type,
1364 x_return_status => x_return_status);
1365
1366 /*IF g_debug THEN
1367 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1368 'contact_point_type is non-updateable. ' ||
1369 'x_return_status = ' || x_return_status, l_debug_prefix);
1370 END IF;
1371 */
1372 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1373 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'contact_point_type is non-updateable. ' ||
1374 'x_return_status = ' || x_return_status,
1375 p_msg_level=>fnd_log.level_statement);
1376 END IF;
1377
1378 END IF;
1379
1380 -- contact_point_type is lookup code in lookup type COMMUNICATION_TYPE
1381 -- Since contact_point_type is non-updateable, we only need to do checking
1382 -- in creation mode.
1383
1384 IF p_create_update_flag = 'C' THEN
1385 validate_lookup (
1386 p_column => 'contact_point_type',
1387 p_lookup_type => 'COMMUNICATION_TYPE',
1388 p_column_value => p_contact_point_rec.contact_point_type,
1389 x_return_status => x_return_status);
1390
1391 /*IF g_debug THEN
1392 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1393 'contact_point_type is lookup code in lookup type COMMUNICATION_TYPE. ' ||
1394 'x_return_status = ' || x_return_status, l_debug_prefix);
1395 END IF;
1396 */
1397 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1398 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'contact_point_type is lookup code in lookup type COMMUNICATION_TYPE. ' ||
1399 'x_return_status = ' || x_return_status,
1400 p_msg_level=>fnd_log.level_statement);
1401 END IF;
1402
1403 END IF;
1404
1405 /*IF g_debug THEN
1406 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1407 '(+) after validate contact_point_type ... ' ||
1408 'x_return_status = ' || x_return_status, l_debug_prefix);
1409 END IF;
1410 */
1411 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1412 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate contact_point_type ... ' ||
1413 'x_return_status = ' || x_return_status,
1414 p_msg_level=>fnd_log.level_statement);
1415 END IF;
1416 END IF;
1417
1418 --------------------------------------
1419 -- validate owner_table_name
1420 --------------------------------------
1421 /****Logical APIs - validation not required****/
1422 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
1423 -- owner_table_name is mandatory field
1424 -- Since owner_table_name is non-updateable, we only need to check
1425 -- mandatory during creation.
1426
1427 IF p_create_update_flag = 'C' THEN
1428 validate_mandatory (
1429 p_create_update_flag => p_create_update_flag,
1430 p_column => 'owner_table_name',
1431 p_column_value => p_contact_point_rec.owner_table_name,
1432 x_return_status => x_return_status);
1433
1434 /*IF g_debug THEN
1435 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1436 'owner_table_name is mandatory. ' ||
1437 'x_return_status = ' || x_return_status, l_debug_prefix);
1438 END IF;
1439 */
1440 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1441 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'owner_table_name is mandatory. ' ||
1442 'x_return_status = ' || x_return_status,
1443 p_msg_level=>fnd_log.level_statement);
1444 END IF;
1445
1446 END IF;
1447
1448 -- owner_table_name is non-updateable field
1449 IF p_create_update_flag = 'U' AND
1450 p_contact_point_rec.owner_table_name IS NOT NULL
1451 THEN
1452 validate_nonupdateable (
1453 p_column => 'owner_table_name',
1454 p_column_value => p_contact_point_rec.owner_table_name,
1455 p_old_column_value => l_owner_table_name,
1456 x_return_status => x_return_status);
1457
1458 /*IF g_debug THEN
1459 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1460 'owner_table_name is non-updateable. ' ||
1461 'x_return_status = ' || x_return_status, l_debug_prefix);
1462 END IF;
1463 */
1464 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1465 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'owner_table_name is non-updateable. ' ||
1466 'x_return_status = ' || x_return_status,
1467 p_msg_level=>fnd_log.level_statement);
1468 END IF;
1469
1470 END IF;
1471
1472 -- owner_table_name is lookup code in lookup type OWNER_TABLE_NAME
1473 -- Since owner_table_name is non-updateable, we only need to do checking
1474 -- in creation mode.
1475
1476 IF p_create_update_flag = 'C' THEN
1477 validate_lookup (
1478 p_column => 'owner_table_name',
1479 p_lookup_type => 'OWNER_TABLE_NAME',
1480 p_column_value => p_contact_point_rec.owner_table_name,
1481 x_return_status => x_return_status);
1482
1483 /*IF g_debug THEN
1484 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1485 'owner_table_name is lookup code in lookup type OWNER_TABLE_NAME. ' ||
1486 'x_return_status = ' || x_return_status, l_debug_prefix);
1487 END IF;
1488 */
1489 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1490 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'owner_table_name is lookup code in lookup type OWNER_TABLE_NAME. ' ||
1491 'x_return_status = ' || x_return_status,
1492 p_msg_level=>fnd_log.level_statement);
1493 END IF;
1494
1495 END IF;
1496
1497 /*IF g_debug THEN
1498 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1499 '(+) after validate owner_table_name ... ' ||
1500 'x_return_status = ' || x_return_status, l_debug_prefix);
1501 END IF;
1502 */
1503 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1504 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate owner_table_name ... ' ||
1505 'x_return_status = ' || x_return_status,
1506 p_msg_level=>fnd_log.level_statement);
1507 END IF;
1508 END IF;
1509
1510 --------------------------------------
1511 -- validate owner_table_id
1512 --------------------------------------
1513 /****Logical APIs - validation not required****/
1514 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
1515 -- owner_table_id is mandatory field
1516 -- Since owner_table_id is non-updateable, we only need to check mandatory
1517 -- during creation.
1518
1519 IF p_create_update_flag = 'C' THEN
1520 validate_mandatory (
1521 p_create_update_flag => p_create_update_flag,
1522 p_column => 'owner_table_id',
1523 p_column_value => p_contact_point_rec.owner_table_id,
1524 x_return_status => x_return_status);
1525
1526 /*IF g_debug THEN
1527 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1528 'owner_table_id is mandatory. ' ||
1529 'x_return_status = ' || x_return_status, l_debug_prefix);
1530 END IF;
1531 */
1532 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1533 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'owner_table_id is mandatory. ' ||
1534 'x_return_status = ' || x_return_status,
1535 p_msg_level=>fnd_log.level_statement);
1536 END IF;
1537
1538 END IF;
1539
1540 -- owner_table_id is non-updateable field
1541 IF p_create_update_flag = 'U' AND
1542 p_contact_point_rec.owner_table_id IS NOT NULL
1543 THEN
1544 validate_nonupdateable (
1545 p_column => 'owner_table_id',
1546 p_column_value => p_contact_point_rec.owner_table_id,
1547 p_old_column_value => l_owner_table_id,
1548 x_return_status => x_return_status);
1549
1550 /*IF g_debug THEN
1551 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1552 'owner_table_id is non-updateable. ' ||
1553 'x_return_status = ' || x_return_status, l_debug_prefix);
1554 END IF;
1555 */
1556 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1557 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'owner_table_id is non-updateable. ' ||
1558 'x_return_status = ' || x_return_status,
1559 p_msg_level=>fnd_log.level_statement);
1560 END IF;
1561
1562 END IF;
1563
1564 -- owner_table_id is foreign key of hz_parties if
1565 -- owner_table_name = HZ_PARTIES and is foreign key
1566 -- of hz_party_sites if owner_table_name = HZ_PARTY_SITES.
1567
1568 -- Do not need to check during update because owner_table_id is
1569 -- non-updateable.
1570 IF p_create_update_flag = 'C' THEN
1571 IF p_contact_point_rec.owner_table_name = 'HZ_PARTIES' THEN
1572 OPEN c_pexist(p_contact_point_rec.owner_table_id);
1573 FETCH c_pexist INTO l_fk_exist;
1574
1575 IF c_pexist%NOTFOUND THEN
1576 l_fk_exist := 'N';
1577 l_fk_column := 'party_id';
1578 END IF;
1579
1580 CLOSE c_pexist;
1581 ELSIF p_contact_point_rec.owner_table_name = 'HZ_PARTY_SITES' THEN
1582 OPEN c_psexist(p_contact_point_rec.owner_table_id);
1583 FETCH c_psexist INTO l_fk_exist;
1584
1585 IF c_psexist%NOTFOUND THEN
1586 l_fk_exist := 'N';
1587 l_fk_column := 'party_site_id';
1588 END IF;
1589
1590 CLOSE c_psexist;
1591 ELSE
1592 l_fk_exist := 'Y';
1593 END IF;
1594
1595 IF l_fk_exist = 'N' THEN
1596 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
1597 fnd_message.set_token('FK', 'owner_table_id');
1598 fnd_message.set_token('COLUMN', l_fk_column);
1599 fnd_message.set_token('TABLE',
1600 LOWER(p_contact_point_rec.owner_table_name));
1601 fnd_msg_pub.add;
1602 x_return_status := fnd_api.g_ret_sts_error;
1603 END IF;
1604
1605 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1606 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1607 p_message=>'owner_table_id is foreign key of hz_parties if owner_table_name = HZ_PARTIES and is foreign key of hz_party_sites if owner_table_name = HZ_PARTY_SITES. ' ||
1608 'x_return_status = ' || x_return_status,
1609 p_msg_level=>fnd_log.level_statement);
1610 END IF;
1611
1612 END IF;
1613
1614 /*IF g_debug THEN
1615 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1616 '(+) after validate owner_table_id ... ' ||
1617 'x_return_status = ' || x_return_status, l_debug_prefix);
1618 END IF;
1619 */
1620 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1621 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate owner_table_id ... ' ||
1622 'x_return_status = ' || x_return_status,
1623 p_msg_level=>fnd_log.level_statement);
1624 END IF;
1625 END IF;
1626
1627 --------------------------------------
1628 -- validate orig_system_reference
1629 --------------------------------------
1630 /****Logical APIs - validation not required****/
1631 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
1632 IF (p_contact_point_rec.orig_system is not null
1633 and p_contact_point_rec.orig_system <>fnd_api.g_miss_char)
1634 and (p_contact_point_rec.orig_system_reference is not null
1635 and p_contact_point_rec.orig_system_reference <>fnd_api.g_miss_char)
1636 and p_create_update_flag = 'U'
1637 then
1638 hz_orig_system_ref_pub.get_owner_table_id
1639 (p_orig_system => p_contact_point_rec.orig_system,
1640 p_orig_system_reference => p_contact_point_rec.orig_system_reference,
1641 p_owner_table_name => 'HZ_CONTACT_POINTS',
1642 x_owner_table_id => l_mosr_owner_table_id,
1643 x_return_status => l_temp_return_status);
1644
1645 IF (l_temp_return_status = fnd_api.g_ret_sts_success AND
1646 l_mosr_owner_table_id= nvl(p_contact_point_rec.contact_point_id,l_mosr_owner_table_id))
1647 THEN
1648 l_validate_osr := 'N';
1649 -- if we can get owner_table_id based on osr and os in mosr table,
1650 -- we will use unique osr and os for update - bypass osr validation
1651 ELSE l_validate_osr := 'Y';
1652 END IF;
1653
1654 -- Call to hz_orig_system_ref_pub.get_owner_table_id API was resetting the
1655 -- x_return_status. Set x_return_status to error, ONLY if there is error.
1656 -- In case of success, leave it to carry over previous value as before this call.
1657 -- Fix for Bug 5498116 (29-AUG-2006)
1658 IF (l_temp_return_status = FND_API.G_RET_STS_ERROR) THEN
1659 x_return_status := l_temp_return_status;
1660 END IF;
1661
1662 end if;
1663 -- orig_system_reference is non-updateable field
1664 IF p_create_update_flag = 'U' AND
1665 p_contact_point_rec.orig_system_reference IS NOT NULL and l_validate_osr = 'Y'
1666 THEN
1667 validate_nonupdateable (
1668 p_column => 'orig_system_reference',
1669 p_column_value => p_contact_point_rec.orig_system_reference,
1670 p_old_column_value => l_orig_system_reference,
1671 x_return_status => x_return_status);
1672
1673 /*IF g_debug THEN
1674 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1675 'orig_system_reference is non-updateable. ' ||
1676 'x_return_status = ' || x_return_status, l_debug_prefix);
1677 END IF;
1678 */
1679
1680 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1681 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'orig_system_reference is non-updateable. ' ||
1682 'x_return_status = ' || x_return_status,
1683 p_msg_level=>fnd_log.level_statement);
1684 END IF;
1685
1686 END IF;
1687
1688 /*IF g_debug THEN
1689 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1690 '(+) after validate orig_system_reference ... ' ||
1691 'x_return_status = ' || x_return_status, l_debug_prefix);
1692 END IF;
1693 */
1694 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1695 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate orig_system_reference ... ' ||
1696 'x_return_status = ' || x_return_status,
1697 p_msg_level=>fnd_log.level_statement);
1698 END IF;
1699 END IF;
1700
1701 /* Bug 2197181: removed content_source_type validation as this
1702 column has been obsoleted for mix-n-match project.
1703
1704 --------------------------------------
1705 -- validate content_source_type
1706 --------------------------------------
1707
1708 -- do not need to check content_source_type is mandatory because
1709 -- we default content_source_type to hz_party_v2pub.g_miss_content_source_type
1710 -- in table handler.
1711
1712 -- content_source_type is non-updateable
1713 IF p_create_update_flag = 'U' THEN
1714 validate_nonupdateable (
1715 p_column => 'content_source_type',
1716 p_column_value => p_contact_point_rec.content_source_type,
1717 p_old_column_value => l_content_source_type,
1718 x_return_status => x_return_status);
1719
1720
1721 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1722 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'content_source_type is non-updateable. ' ||
1723 'x_return_status = ' || x_return_status,
1724 p_msg_level=>fnd_log.level_statement);
1725 END IF;
1726
1727 END IF;
1728
1729 -- content_source_type is lookup code in lookup type CONTENT_SOURCE_TYPE
1730 IF p_create_update_flag = 'C' AND
1731 p_contact_point_rec.content_source_type <>
1732 hz_party_v2pub.g_miss_content_source_type
1733 THEN
1734 validate_lookup (
1735 p_column => 'content_source_type',
1736 p_lookup_type => 'CONTENT_SOURCE_TYPE',
1737 p_column_value => p_contact_point_rec.content_source_type,
1738 x_return_status => x_return_status);
1739
1740 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1741 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'content_source_type is lookup code in lookup type CONTENT_SOURCE_TYPE. ' ||
1742 'x_return_status = ' || x_return_status,
1743 p_msg_level=>fnd_log.level_statement);
1744 END IF;
1745
1746 END IF;
1747
1748
1749 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1750 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate content_source_type ... ' ||
1751 'x_return_status = ' || x_return_status,
1752 p_msg_level=>fnd_log.level_statement);
1753 END IF;
1754
1755
1756 */
1757
1758 -- Bug 2197181: Added validation for mix-n-match
1759
1760 ----------------------------------------
1761 -- validate content_source_type and actual_content_source_type
1762 ----------------------------------------
1763
1764 HZ_MIXNM_UTILITY.ValidateContentSource (
1765 p_api_version => 'V2',
1766 p_create_update_flag => p_create_update_flag,
1767 p_check_update_privilege => 'N',
1768 p_content_source_type => p_contact_point_rec.content_source_type,
1769 p_old_content_source_type => l_content_source_type,
1770 p_actual_content_source => p_contact_point_rec.actual_content_source,
1771 p_old_actual_content_source => db_actual_content_source,
1772 p_entity_name => 'HZ_CONTACT_POINTS',
1773 x_return_status => x_return_status );
1774
1775 --------------------------------------
1776 -- validate status
1777 --------------------------------------
1778
1779 -- status cannot be set to null during update
1780 IF p_create_update_flag = 'U' AND
1781 p_contact_point_rec.status IS NOT NULL
1782 THEN
1783 validate_cannot_update_to_null (
1784 p_column => 'status',
1785 p_column_value => p_contact_point_rec.status,
1786 x_return_status => x_return_status);
1787
1788 /*IF g_debug THEN
1789 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1790 'Status cannot be updated to null. ' ||
1791 'x_return_status = ' || x_return_status, l_debug_prefix);
1792 END IF;
1793 */
1794 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1795 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'Status cannot be updated to null. ' ||
1796 'x_return_status = ' || x_return_status,
1797 p_msg_level=>fnd_log.level_statement);
1798 END IF;
1799
1800 END IF;
1801
1802 /****Logical APIs - validation not required****/
1803 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
1804 -- status is lookup code in lookup type REGISTRY_STATUS
1805 IF p_contact_point_rec.status IS NOT NULL AND
1806 p_contact_point_rec.status <> fnd_api.g_miss_char AND
1807 (p_create_update_flag = 'C' OR
1808 (p_create_update_flag = 'U' AND
1809 p_contact_point_rec.status <> NVL(l_status, fnd_api.g_miss_char)))
1810 THEN
1811 validate_lookup (
1812 p_column => 'status',
1813 p_lookup_type => 'REGISTRY_STATUS',
1814 p_column_value => p_contact_point_rec.status,
1815 x_return_status => x_return_status);
1816
1817 /*IF g_debug THEN
1818 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1819 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
1820 'x_return_status = ' || x_return_status, l_debug_prefix);
1821 END IF;
1822 */
1823 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1824 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
1825 'x_return_status = ' || x_return_status,
1826 p_msg_level=>fnd_log.level_statement);
1827 END IF;
1828
1829 END IF;
1830 END IF;
1831
1832 /*IF g_debug THEN
1833 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1834 '(+) after validate status ... ' ||
1835 'x_return_status = ' || x_return_status, l_debug_prefix);
1836 END IF;
1837 */
1838 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1839 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate status ... ' ||
1840 'x_return_status = ' || x_return_status,
1841 p_msg_level=>fnd_log.level_statement);
1842 END IF;
1843
1844
1845 --------------------------------------
1846 -- validate primary_flag
1847 --------------------------------------
1848 /****Logical APIs - validation not required****/
1849 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
1850 -- primary_flag is lookup code in lookup type YES/NO
1851 IF p_contact_point_rec.primary_flag IS NOT NULL AND
1852 p_contact_point_rec.primary_flag <> fnd_api.g_miss_char
1853 THEN
1854 validate_lookup (
1855 p_column => 'primary_flag',
1856 p_lookup_type => 'YES/NO',
1857 p_column_value => p_contact_point_rec.primary_flag,
1858 x_return_status => x_return_status);
1859
1860 /*IF g_debug THEN
1861 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1862 'primary_flag is lookup code in lookup type YES/NO. ' ||
1863 'x_return_status = ' || x_return_status, l_debug_prefix);
1864 END IF;
1865 */
1866 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1867 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'primary_flag is lookup code in lookup type YES/NO. ' ||
1868 'x_return_status = ' || x_return_status,
1869 p_msg_level=>fnd_log.level_statement);
1870 END IF;
1871
1872 END IF;
1873 END IF;
1874
1875 -- check to ensure that an inactive contact is never marked
1876 -- as primary.
1877 IF p_create_update_flag = 'C' THEN
1878 IF p_contact_point_rec.primary_flag IS NULL OR
1879 p_contact_point_rec.primary_flag = fnd_api.g_miss_char
1880 THEN
1881 l_primary_flag := 'N';
1882 ELSE
1883 l_primary_flag := p_contact_point_rec.primary_flag;
1884 END IF;
1885
1886 IF p_contact_point_rec.status IS NULL OR
1887 p_contact_point_rec.status = fnd_api.g_miss_char
1888 THEN
1889 l_status := 'A';
1890 ELSE
1891 l_status := p_contact_point_rec.status;
1892 END IF;
1893
1894 IF l_primary_flag = 'Y' AND l_status <> 'A' THEN
1895 l_error := TRUE;
1896 END IF;
1897 ELSE
1898 IF p_contact_point_rec.primary_flag = 'Y' AND
1899 /* Bug Fix: 4203495 */
1900 l_primary_flag <> 'Y' AND
1901 ((p_contact_point_rec.status IS NOT NULL AND
1902 p_contact_point_rec.status <> 'A') OR
1903 (p_contact_point_rec.status IS NULL AND
1904 l_status <> 'A'))
1905 THEN
1906 l_error := TRUE;
1907 END IF;
1908 END IF;
1909
1910 IF l_error THEN
1911 fnd_message.set_name('AR', 'HZ_API_INACTIVE_NOT_PRIMARY');
1912 fnd_msg_pub.add;
1913 x_return_status := fnd_api.g_ret_sts_error;
1914 -- reset l_error for later use.
1915 l_error := FALSE;
1916 END IF;
1917
1918 /*IF g_debug THEN
1919 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1920 'an inactive contact is never marked as primary. ' ||
1921 'x_return_status = ' || x_return_status, l_debug_prefix);
1922 END IF;
1923 */
1924 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1925 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'an inactive contact is never marked as primary. ' ||
1926 'x_return_status = ' || x_return_status,
1927 p_msg_level=>fnd_log.level_statement);
1928 END IF;
1929
1930 -- check to ensure that an inactive contact is never marked
1931 -- as preferred.
1932 IF p_create_update_flag = 'C' THEN
1933 IF p_contact_point_rec.primary_by_purpose IS NULL OR
1934 p_contact_point_rec.primary_by_purpose = fnd_api.g_miss_char
1935 THEN
1936 l_preferred_flag := 'N';
1937 ELSE
1938 l_preferred_flag := p_contact_point_rec.primary_by_purpose;
1939 END IF;
1940 IF l_preferred_flag = 'Y' AND l_status <> 'A' THEN
1941 l_error := TRUE;
1942 END IF;
1943 ELSE
1944 IF p_contact_point_rec.primary_by_purpose = 'Y' AND
1945 ((p_contact_point_rec.status IS NOT NULL AND
1946 p_contact_point_rec.status <> 'A') OR
1947 (p_contact_point_rec.status IS NULL AND
1948 l_status <> 'A'))
1949 THEN
1950 l_error := TRUE;
1951 END IF;
1952 END IF;
1953 IF l_error THEN
1954 fnd_message.set_name('AR', 'HZ_API_INACTIVE_NOT_PREFERRED');
1955 fnd_msg_pub.add;
1956 x_return_status := fnd_api.g_ret_sts_error;
1957
1958 -- reset l_error for later use.
1959 l_error := FALSE;
1960 END IF;
1961 /*IF g_debug THEN
1962 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
1963 'an inactive contact is never marked as preferred. ' ||
1964 'x_return_status = ' || x_return_status, l_debug_prefix);
1965 END IF;
1966 */
1967 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1968 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'an inactive contact is never marked as preferred. ' ||
1969 'x_return_status = ' || x_return_status,
1970 p_msg_level=>fnd_log.level_statement);
1971 END IF;
1972
1973
1974 ---------------------------------------------------------
1975 -- validate primary_by_purpose + contact_point_purpose --
1976 -- Bug No : 1946858
1977 ---------------------------------------------------------
1978
1979 IF (p_create_update_flag = 'C')
1980 THEN
1981 IF p_contact_point_rec.primary_by_purpose = 'Y'
1982 THEN
1983 IF (p_contact_point_rec.contact_point_purpose IS NULL OR
1984 p_contact_point_rec.contact_point_purpose = FND_API.G_MISS_CHAR)
1985 THEN
1986 -- Error
1987 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MAND_DEP_FIELDS' );
1988 FND_MESSAGE.SET_TOKEN('COLUMN1', 'primary_by_purpose');
1989 FND_MESSAGE.SET_TOKEN('VALUE1', 'Y');
1990 FND_MESSAGE.SET_TOKEN('COLUMN2','contact_point_purpose');
1991 FND_MSG_PUB.ADD;
1992 x_return_status := FND_API.G_RET_STS_ERROR;
1993
1994 END IF;
1995 END IF;
1996 ELSIF (p_create_update_flag = 'U') THEN
1997 IF ( p_contact_point_rec.primary_by_purpose = 'Y' OR
1998 ( p_contact_point_rec.primary_by_purpose IS NULL AND
1999 l_primary_by_purpose = 'Y'))
2000 THEN
2001 IF ( p_contact_point_rec.contact_point_purpose = FND_API.G_MISS_CHAR OR
2002 ( p_contact_point_rec.contact_point_purpose IS NULL AND
2003 l_contact_point_purpose IS NULL))
2004 THEN
2005 -- Error
2006 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MAND_DEP_FIELDS' );
2007 FND_MESSAGE.SET_TOKEN('COLUMN1', 'primary_by_purpose');
2008 FND_MESSAGE.SET_TOKEN('VALUE1', 'Y');
2009 FND_MESSAGE.SET_TOKEN('COLUMN2','contact_point_purpose');
2010 FND_MSG_PUB.ADD;
2011 x_return_status := FND_API.G_RET_STS_ERROR;
2012 END IF;
2013 END IF;
2014 END IF;
2015 /*IF g_debug THEN
2016 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2017 'Purpose cannot be NULL when the contact point is preferred ' ||'x_return_status = ' ||
2018 x_return_status, l_debug_prefix);
2019 END IF;
2020 */
2021 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2022 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2023 p_message=>'Purpose cannot be NULL when the contact point is preferred ' ||'x_return_status = ' ||
2024 x_return_status,
2025 p_msg_level=>fnd_log.level_statement);
2026 END IF;
2027
2028
2029
2030 --------------------------------------
2031 -- validate contact_point_purpose
2032 --------------------------------------
2033
2034 -- contact_point_purpose is lookup code in lookup type CONTACT_POINT_PURPOSE
2035 -- if contact_point_type <> 'WEB'. Please note, contact_point_type is
2036 -- mandatory and non-updateable.
2037
2038 IF ((p_contact_point_rec.contact_point_type <> 'WEB' AND
2039 p_create_update_flag = 'C') OR
2040 (l_contact_point_type <> 'WEB' AND
2041 p_create_update_flag = 'U')) AND
2042 p_contact_point_rec.contact_point_purpose IS NOT NULL AND
2043 p_contact_point_rec.contact_point_purpose <> fnd_api.g_miss_char AND
2044 (p_create_update_flag = 'C' OR
2045 (p_create_update_flag = 'U' AND
2046 p_contact_point_rec.contact_point_purpose <>
2047 NVL(l_contact_point_purpose, fnd_api.g_miss_char)))
2048 THEN
2049 validate_lookup (
2050 p_column => 'contact_point_purpose',
2051 p_lookup_type => 'CONTACT_POINT_PURPOSE',
2052 p_column_value => p_contact_point_rec.contact_point_purpose,
2053 x_return_status => x_return_status);
2054
2055 /*IF g_debug THEN
2056 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2057 'contact_point_purpose is lookup code in lookup type CONTACT_POINT_PURPOSE if contact_point_type <> WEB. ' ||
2058 'x_return_status = ' || x_return_status, l_debug_prefix);
2059 END IF;
2060 */
2061 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2062 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2063 p_message=>'contact_point_purpose is lookup code in lookup type CONTACT_POINT_PURPOSE if contact_point_type <> WEB. ' ||
2064 'x_return_status = ' || x_return_status,
2065 p_msg_level=>fnd_log.level_statement);
2066 END IF;
2067
2068 END IF;
2069
2070 /*IF g_debug THEN
2071 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2072 '(+) after validate contact_point_purpose ... ' ||
2073 'x_return_status = ' || x_return_status, l_debug_prefix);
2074 END IF;
2075 */
2076 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2077 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate contact_point_purpose ... ' ||
2078 'x_return_status = ' || x_return_status,
2079
2080 p_msg_level=>fnd_log.level_statement);
2081 END IF;
2082
2083
2084 --------------------------------------
2085 -- validate primary_by_purpose
2086 --------------------------------------
2087
2088 -- primary_by_purpose is lookup code in lookup type YES/NO
2089 IF p_contact_point_rec.primary_by_purpose IS NOT NULL AND
2090 p_contact_point_rec.primary_by_purpose <> fnd_api.g_miss_char
2091 THEN
2092 validate_lookup (
2093 p_column => 'primary_by_purpose',
2094 p_lookup_type => 'YES/NO',
2095 p_column_value => p_contact_point_rec.primary_by_purpose,
2096 x_return_status => x_return_status);
2097
2098 /*IF g_debug THEN
2099 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2100 'primary_by_purpose is lookup code in lookup type YES/NO. ' ||
2101 'x_return_status = ' || x_return_status, l_debug_prefix);
2102 END IF;
2103 */
2104 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2105 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2106 p_message=>'primary_by_purpose is lookup code in lookup type YES/NO. ' ||
2107 'x_return_status = ' || x_return_status,
2108 p_msg_level=>fnd_log.level_statement);
2109 END IF;
2110
2111 END IF;
2112
2113 /*IF g_debug THEN
2114 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2115 '(+) after validate primary_by_purpose ... ' ||
2116 'x_return_status = ' || x_return_status, l_debug_prefix);
2117 END IF;
2118 */
2119 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2120 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate primary_by_purpose ... ' ||
2121 'x_return_status = ' || x_return_status,
2122 p_msg_level=>fnd_log.level_statement);
2123 END IF;
2124
2125
2126 --------------------------------------
2127 -- validate created_by_module
2128 --------------------------------------
2129
2130 validate_created_by_module(
2131 p_create_update_flag => p_create_update_flag,
2132 p_created_by_module => p_contact_point_rec.created_by_module,
2133 p_old_created_by_module => l_created_by_module,
2134 x_return_status => x_return_status);
2135
2136 --------------------------------------
2137 -- validate application_id
2138 --------------------------------------
2139
2140 validate_application_id(
2141 p_create_update_flag => p_create_update_flag,
2142 p_application_id => p_contact_point_rec.application_id,
2143 p_old_application_id => l_application_id,
2144 x_return_status => x_return_status);
2145
2146 --------------------------------------
2147 -- validation based on different contact point type
2148 --------------------------------------
2149
2150 -- l_contact_point_type is equal to p_contact_point_rec.contact_point_type
2151 -- during creation and is database value during update. Please note,
2152 -- contact_point_type is mandatory and non-updateable.
2153
2154 IF l_contact_point_type = 'EDI' THEN
2155
2156 --------------------------------------
2157 -- validate edi_id_number
2158 --------------------------------------
2159 -- Bug 2384750. Commented the mandatory check on edi_id_number.
2160 /**
2161 -- edi_id_number is mandatory field.
2162 validate_mandatory (
2163 p_create_update_flag => p_create_update_flag,
2164 p_column => 'edi_id_number',
2165 p_column_value => p_edi_rec.edi_id_number,
2166 x_return_status => x_return_status);
2167
2168
2169 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2170 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2171 p_message=>'EDI : edi_id_number is mandatory. ' ||
2172 'x_return_status = ' || x_return_status,
2173 p_msg_level=>fnd_log.level_statement);
2174 END IF;
2175
2176 **/
2177 --------------------------------------
2178 -- validate edi party type only when the record is being created.
2179 --------------------------------------
2180
2181 IF p_create_update_flag = 'C' THEN
2182 validate_party_type(
2183 p_table_name => p_contact_point_rec.owner_table_name,
2184 p_party_id => p_contact_point_rec.owner_table_id,
2185 p_contact_point_type => l_contact_point_type,
2186 x_return_status => x_return_status
2187 );
2188 END IF;
2189 ELSIF l_contact_point_type = 'EFT' THEN
2190 -- Bug 2116225: no validations currently required. This code is just
2191 -- currently just a placeholder.
2192 -- Bug 6367289: validation added - EFT contact point can be assigned
2193 -- to organization party type only.
2194 --NULL;
2195 IF p_create_update_flag = 'C' THEN
2196 validate_party_type(
2197 p_table_name => p_contact_point_rec.owner_table_name,
2198 p_party_id => p_contact_point_rec.owner_table_id,
2199 p_contact_point_type => l_contact_point_type,
2200 x_return_status => x_return_status
2201 );
2202 END IF;
2203 ELSIF l_contact_point_type = 'EMAIL' THEN
2204
2205 --------------------------------------
2206 -- validate email_format
2207 --------------------------------------
2208
2209 -- email_format is mandatory but can be defaulted to MAILHTML during
2210 -- creation. It should be 'cannot_update_to_null' during update.
2211
2212 IF p_create_update_flag = 'U' AND
2213 p_email_rec.email_format IS NOT NULL
2214 THEN
2215 validate_cannot_update_to_null (
2216 p_column => 'email_format',
2217 p_column_value => p_email_rec.email_format,
2218 x_return_status => x_return_status);
2219
2220 /*IF g_debug THEN
2221 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2222 'EMAIL : email_format cannot be updated to null. ' ||
2223 'x_return_status = ' || x_return_status, l_debug_prefix);
2224 END IF;
2225 */
2226 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2227 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2228 p_message=>'EMAIL : email_format cannot be updated to null. ' ||
2229 'x_return_status = ' || x_return_status,
2230 p_msg_level=>fnd_log.level_statement);
2231 END IF;
2232
2233 END IF;
2234 -- Bug 4226199 : check update privilege for email also
2235 IF p_create_update_flag = 'U' AND
2236 db_actual_content_source <> 'USER_ENTERED' THEN
2237 l_return_status := FND_API.G_RET_STS_SUCCESS;
2238 validate_nonupdateable (
2239 p_column => 'email_address',
2240 p_column_value => p_email_rec.email_address,
2241 p_old_column_value => l_email_address,
2242 x_return_status => l_return_status,
2243 p_raise_error => 'N');
2244
2245 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2246 HZ_MIXNM_UTILITY.CheckUserUpdatePrivilege(
2247 p_actual_content_source => db_actual_content_source,
2248 p_new_actual_content_source=> p_contact_point_rec.actual_content_source,
2249 p_entity_name => 'HZ_CONTACT_POINTS',
2250 x_return_status => x_return_status);
2251 -- Bug 4693719 : set global variable to Y
2252 HZ_UTILITY_V2PUB.G_UPDATE_ACS := 'Y';
2253 END IF;
2254 END IF;
2255
2256
2257 -- email_format is lookup code in lookup type EMAIL_FORMAT
2258 IF p_email_rec.email_format IS NOT NULL AND
2259 p_email_rec.email_format <> fnd_api.g_miss_char AND
2260 (p_create_update_flag = 'C' OR
2261 (p_create_update_flag = 'U' AND
2262 p_email_rec.email_format <>
2263 NVL(l_email_format, fnd_api.g_miss_char)))
2264 THEN
2265 validate_lookup (
2266 p_column => 'email_format',
2267 p_lookup_type => 'EMAIL_FORMAT',
2268 p_column_value => p_email_rec.email_format,
2269 x_return_status => x_return_status);
2270
2271 /*IF g_debug THEN
2272 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2273 'EMAIL : email_format is lookup code in lookup type EMAIL_FORMAT. '
2274 || 'x_return_status = ' || x_return_status, l_debug_prefix);
2275 END IF;
2276 */
2277 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2278 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2279 p_message=>'EMAIL : email_format is lookup code in lookup type EMAIL_FORMAT. '
2280 || 'x_return_status = ' || x_return_status,
2281 p_msg_level=>fnd_log.level_statement);
2282 END IF;
2283
2284 END IF;
2285
2286 /*IF g_debug THEN
2287 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2288 '(+) after validate email_format ... ' ||
2289 'x_return_status = ' || x_return_status, l_debug_prefix);
2290 END IF;
2291 */
2292 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2293 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2294 p_message=>'(+) after validate email_format ... ' ||
2295 'x_return_status = ' || x_return_status,
2296 p_msg_level=>fnd_log.level_statement);
2297 END IF;
2298
2299
2300 --------------------------------------
2301 -- validate email_address
2302 --------------------------------------
2303
2304 -- email_address is mandatory field.
2305 validate_mandatory (
2306 p_create_update_flag => p_create_update_flag,
2307 p_column => 'email_address',
2308 p_column_value => p_email_rec.email_address,
2309 x_return_status => x_return_status);
2310
2311 /*IF g_debug THEN
2312 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2313 'EMAIL : email_address is mandatory. ' ||
2314 'x_return_status = ' || x_return_status, l_debug_prefix);
2315 END IF;
2316 */
2317 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2318 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2319 p_message=>'EMAIL : email_address is mandatory. ' ||
2320 'x_return_status = ' || x_return_status,
2321 p_msg_level=>fnd_log.level_statement);
2322 END IF;
2323
2324
2325 ELSIF l_contact_point_type = 'PHONE' THEN
2326
2327 --------------------------------------
2328 -- validate phone_number and raw_phone_number
2329 --------------------------------------
2330
2331 -- phone_number and phone_area_code or raw_phone_umber must be
2332 -- passed in. However, you can not pass both two.
2333
2334 IF p_create_update_flag = 'C' THEN
2335 IF ((p_phone_rec.phone_number IS NULL OR
2336 p_phone_rec.phone_number = fnd_api.g_miss_char) AND
2337 (p_phone_rec.raw_phone_number IS NULL OR
2338 p_phone_rec.raw_phone_number = fnd_api.g_miss_char)) OR
2339 ((p_phone_rec.phone_number IS NOT NULL AND
2340 p_phone_rec.phone_number <> fnd_api.g_miss_char) AND
2341 (p_phone_rec.raw_phone_number IS NOT NULL AND
2342 p_phone_rec.raw_phone_number <> fnd_api.g_miss_char))
2343 THEN
2344 l_error := TRUE;
2345 END IF;
2346 ELSE
2347 IF p_phone_rec.phone_number IS NOT NULL AND
2348 p_phone_rec.raw_phone_number IS NOT NULL AND
2349 ((p_phone_rec.phone_number = fnd_api.g_miss_char AND
2350 p_phone_rec.raw_phone_number = fnd_api.g_miss_char) OR
2351 (p_phone_rec.phone_number <> fnd_api.g_miss_char AND
2352 p_phone_rec.raw_phone_number <> fnd_api.g_miss_char))
2353 THEN
2354 l_error := TRUE;
2355 END IF;
2356 END IF;
2357
2358 IF l_error THEN
2359 fnd_message.set_name('AR', 'HZ_INVALID_PHONE_PARAMETER');
2360 fnd_msg_pub.add;
2361 x_return_status := fnd_api.g_ret_sts_error;
2362
2363 -- Reset l_error for later use.
2364 l_error := TRUE;
2365 END IF;
2366 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2367 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2368 p_message=>'PHONE : phone_number and phone_area_code or raw_phone_umber must be passed in. However, you can not pass both two. ' || 'x_return_status = ' || x_return_status,
2369 p_msg_level=>fnd_log.level_statement);
2370 END IF;
2371
2372
2373 --------------------------------------
2374 -- validate phone_line_type
2375 --------------------------------------
2376
2377 -- phone_line_type is mandatory field.
2378 validate_mandatory (
2379 p_create_update_flag => p_create_update_flag,
2380 p_column => 'phone_line_type',
2381 p_column_value => p_phone_rec.phone_line_type,
2382 x_return_status => x_return_status);
2383
2384 /*IF g_debug THEN
2385 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2386 'PHONE : phone_line_type is mandatory. ' ||
2387 'x_return_status = ' || x_return_status, l_debug_prefix);
2388 END IF;
2389 */
2390 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2391 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'PHONE : phone_line_type is mandatory. ' ||
2392 'x_return_status = ' || x_return_status,
2393 p_msg_level=>fnd_log.level_statement);
2394 END IF;
2395
2396
2397 -- phone_line_type is lookup code in lookup type PHONE_LINE_TYPE
2398 IF p_phone_rec.phone_line_type IS NOT NULL AND
2399 p_phone_rec.phone_line_type <> fnd_api.g_miss_char AND
2400 (p_create_update_flag = 'C' OR
2401 (p_create_update_flag = 'U' AND
2402 p_phone_rec.phone_line_type <> NVL(l_phone_line_type,
2403 fnd_api.g_miss_char)))
2404 THEN
2405 validate_lookup (
2406 p_column => 'phone_line_type',
2407 p_lookup_type => 'PHONE_LINE_TYPE',
2408 p_column_value => p_phone_rec.phone_line_type,
2409 x_return_status => x_return_status);
2410
2411 /*IF g_debug THEN
2412 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2413 'PHONE : phone_line_type is lookup code in lookup type PHONE_LINE_TYPE. ' ||
2414 'x_return_status = ' || x_return_status, l_debug_prefix);
2415 END IF;
2416 */
2417 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2418 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2419 p_message=>'PHONE : phone_line_type is lookup code in lookup type PHONE_LINE_TYPE. ' ||
2420 'x_return_status = ' || x_return_status,
2421 p_msg_level=>fnd_log.level_statement);
2422 END IF;
2423
2424 END IF;
2425
2426 /*IF g_debug THEN
2427 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2428 '(+) after validate phone_line_type ... ' ||
2429 'x_return_status = ' || x_return_status, l_debug_prefix);
2430 END IF;
2431 */
2432 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2433 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate phone_line_type ... ' ||
2434 'x_return_status = ' || x_return_status,
2435 p_msg_level=>fnd_log.level_statement);
2436 END IF;
2437
2438
2439 --------------------------------------
2440 -- validate timezone_id
2441 --------------------------------------
2442
2443 -- timezone_id is foreign key of hz_timezones
2444 IF p_phone_rec.timezone_id IS NOT NULL AND
2445 p_phone_rec.timezone_id <> fnd_api.g_miss_num
2446 THEN
2447 OPEN c_timezone(p_phone_rec.timezone_id);
2448 FETCH c_timezone INTO l_dummy;
2449
2450 IF c_timezone%NOTFOUND THEN--updated against bug 7046491
2451 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
2452 fnd_message.set_token('FK', 'upgrade_tz_id');
2453 fnd_message.set_token('COLUMN', 'upgrade_tz_id');
2454 fnd_message.set_token('TABLE', 'fnd_timezones_vl');
2455 fnd_msg_pub.add;
2456 x_return_status := fnd_api.g_ret_sts_error;
2457 END IF;
2458
2459 CLOSE c_timezone;
2460
2461 /*IF g_debug THEN
2462 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2463 'PHONE : timezone_id is foreign key of hz_timezones. ' ||
2464 'x_return_status = ' || x_return_status, l_debug_prefix);
2465 END IF;
2466 */
2467 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2468 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2469 p_message=>'PHONE : timezone_id is foreign key of hz_timezones. ' ||
2470 'x_return_status = ' || x_return_status,
2471 p_msg_level=>fnd_log.level_statement);
2472 END IF;
2473
2474 END IF;
2475
2476 /*IF g_debug THEN
2477 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2478 '(+) after validate timezone_id ... ' ||
2479 'x_return_status = ' || x_return_status, l_debug_prefix);
2480 END IF;
2481 */
2482 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2483 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2484 p_message=>'(+) after validate timezone_id ... ' ||
2485 'x_return_status = ' || x_return_status,
2486 p_msg_level=>fnd_log.level_statement);
2487 END IF;
2488
2489
2490 --------------------------------------
2491 -- validate phone_country_code
2492 --------------------------------------
2493
2494 -- phone_country_code is foreign key of hz_phone_country_codes
2495 -- Bug 2007066: during update, only validate phone_country_code if it
2496 -- has been changed.
2497 IF p_phone_rec.phone_country_code IS NOT NULL AND
2498 p_phone_rec.phone_country_code <> fnd_api.g_miss_char AND
2499 (p_create_update_flag = 'C' OR
2500 (p_create_update_flag = 'U' AND
2501 p_phone_rec.phone_country_code <> NVL(l_phone_country_code,
2502 fnd_api.g_miss_char)))
2503 THEN
2504 OPEN c_countrycode(p_phone_rec.phone_country_code);
2505 FETCH c_countrycode INTO l_dummy;
2506
2507 IF c_countrycode%NOTFOUND THEN
2508 --Bug 4474646
2509 fnd_message.set_name('AR', 'HZ_INVALID_PHONE_COUNTRY_CODE');
2510 fnd_msg_pub.add;
2511 x_return_status := fnd_api.g_ret_sts_error;
2512 END IF;
2513
2514 CLOSE c_countrycode;
2515
2516 /*IF g_debug THEN
2517 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2518 'PHONE : phone_country_code is foreign key of hz_phone_country_codes. ' ||
2519 'x_return_status = ' || x_return_status, l_debug_prefix);
2520 END IF;
2521 */
2522 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2523 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2524 p_message=>'PHONE : phone_country_code is foreign key of hz_phone_country_codes. ' ||
2525 'x_return_status = ' || x_return_status,
2526 p_msg_level=>fnd_log.level_statement);
2527 END IF;
2528
2529 END IF;
2530
2531 /*IF g_debug THEN
2532 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2533 '(+) after validate phone_country_code ... ' ||
2534 'x_return_status = ' || x_return_status, l_debug_prefix);
2535 END IF;
2536 */
2537 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2538 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2539 p_message=>'(+) after validate phone_country_code ... ' ||
2540 'x_return_status = ' || x_return_status,
2541 p_msg_level=>fnd_log.level_statement);
2542 END IF;
2543
2544
2545 --------------------------------------
2546 -- validate phone_number (Bug fix 2807379)
2547 --------------------------------------
2548
2549 IF p_create_update_flag = 'U'
2550 AND p_phone_rec.raw_phone_number is NULL
2551 THEN
2552 validate_cannot_update_to_null(
2553 p_column => 'phone_number',
2554 p_column_value => p_phone_rec.phone_number,
2555 x_return_status => l_return_status);
2556
2557 /*IF g_debug THEN
2558 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2559 '(+) phone_number cannot be updated to NULL... ' ||
2560 'x_return_status = ' || x_return_status, l_debug_prefix);
2561 END IF;
2562 */
2563 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2564 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2565 p_message=>'(+) phone_number cannot be updated to NULL... ' ||
2566 'x_return_status = ' || x_return_status,
2567 p_msg_level=>fnd_log.level_statement);
2568 END IF;
2569
2570 END IF;
2571
2572 /*IF g_debug THEN
2573 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2574 '(+) after validate phone_number ... ' ||
2575 'x_return_status = ' || x_return_status, l_debug_prefix);
2576 END IF;
2577 */
2578 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2579 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2580 p_message=>'(+) after validate phone_number ... ' ||
2581 'x_return_status = ' || x_return_status,
2582 p_msg_level=>fnd_log.level_statement);
2583 END IF;
2584
2585
2586 --------------------------------------
2587 -- validate phone_number and raw_phone_number which are third-party sourced.
2588 --------------------------------------
2589
2590 -- phone_number and raw_phone_number can not be updated by the user if
2591 -- actual_content_source = 'DNB'.
2592
2593 IF p_create_update_flag = 'U' AND
2594 l_contact_point_type = 'PHONE' AND
2595 -- Bug 4226199 : Call for all ACS other than UE
2596 db_actual_content_source <> 'USER_ENTERED' AND
2597 (p_phone_rec.phone_area_code||
2598 p_phone_rec.phone_country_code||
2599 p_phone_rec.phone_number||
2600 p_phone_rec.phone_extension||
2601 p_phone_rec.raw_phone_number IS NOT NULL) /* AND
2602 db_actual_content_source = 'DNB' AND*/
2603 -- SSM SST Integration and Extension
2604 --NVL(FND_PROFILE.value('HZ_UPDATE_THIRD_PARTY_DATA'), 'N') = 'N'
2605 -- HZ_UTILITY_V2PUB.is_purchased_content_source(db_actual_content_source) = 'Y'
2606 THEN
2607 l_return_status := FND_API.G_RET_STS_SUCCESS;
2608 validate_nonupdateable (
2609 p_column => 'phone_area_code',
2610 p_column_value => p_phone_rec.phone_area_code,
2611 p_old_column_value => l_phone_area_code,
2612 x_return_status => l_return_status,
2613 p_raise_error => 'N');
2614
2615 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
2616 validate_nonupdateable (
2617 p_column => 'phone_country_code',
2618 p_column_value => p_phone_rec.phone_country_code,
2619 p_old_column_value => l_phone_country_code,
2620 x_return_status => l_return_status,
2621 p_raise_error => 'N');
2622 END IF;
2623
2624 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
2625 validate_nonupdateable (
2626 p_column => 'phone_number',
2627 p_column_value => p_phone_rec.phone_number,
2628 p_old_column_value => l_phone_number,
2629 x_return_status => l_return_status,
2630 p_raise_error => 'N');
2631 END IF;
2632 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
2633 validate_nonupdateable (
2634 p_column => 'phone_extension',
2635 p_column_value => p_phone_rec.phone_extension,
2636 p_old_column_value => l_phone_extension,
2637 x_return_status => l_return_status,
2638 p_raise_error => 'N');
2639 END IF;
2640
2641 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
2642 validate_nonupdateable (
2643 p_column => 'raw_phone_number',
2644 p_column_value => p_phone_rec.raw_phone_number,
2645 p_old_column_value => l_raw_phone_number,
2646 x_return_status => l_return_status,
2647 p_raise_error => 'N');
2648 END IF;
2649
2650 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2651
2652 HZ_MIXNM_UTILITY.CheckUserUpdatePrivilege(
2653 p_actual_content_source => db_actual_content_source,
2654 p_new_actual_content_source=> p_contact_point_rec.actual_content_source,
2655 p_entity_name => 'HZ_CONTACT_POINTS',
2656 x_return_status => x_return_status);
2657 -- Bug 4693719 : set global variable to Y
2658 HZ_UTILITY_V2PUB.G_UPDATE_ACS := 'Y';
2659
2660 /*FND_MESSAGE.SET_NAME('AR', 'HZ_NOTALLOW_UPDATE_THIRD_PARTY');
2661 FND_MSG_PUB.ADD;
2662 x_return_status := FND_API.G_RET_STS_ERROR;
2663 */
2664 END IF;
2665
2666 /*IF g_debug THEN
2667 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2668 'dnb phones are non-updateable. ' ||
2669 'x_return_status = ' || x_return_status, l_debug_prefix);
2670 END IF;
2671 */
2672 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2673 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2674 p_message=>'dnb phones are non-updateable. ' ||
2675 'x_return_status = ' || x_return_status,
2676 p_msg_level=>fnd_log.level_statement);
2677 END IF;
2678
2679 END IF;
2680
2681 /*IF g_debug THEN
2682 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2683 '(+) after validate dnb phones ... ' ||
2684 'x_return_status = ' || x_return_status, l_debug_prefix);
2685 END IF;
2686 */
2687 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2688 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate dnb phones ... ' ||
2689 'x_return_status = ' || x_return_status,
2690 p_msg_level=>fnd_log.level_statement);
2691 END IF;
2692
2693
2694 ELSIF l_contact_point_type = 'TLX' THEN
2695
2696 --------------------------------------
2697 -- validate telex_number
2698 --------------------------------------
2699
2700 -- telex_number is mandatory field.
2701 validate_mandatory (
2702 p_create_update_flag => p_create_update_flag,
2703 p_column => 'telex_number',
2704 p_column_value => p_telex_rec.telex_number,
2705 x_return_status => x_return_status);
2706
2707 /*IF g_debug THEN
2708 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2709 'TELEX : telex_number is mandatory. ' ||
2710 'x_return_status = ' || x_return_status, l_debug_prefix);
2711 END IF;
2712 */
2713 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2714 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'TELEX : telex_number is mandatory. ' ||
2715 'x_return_status = ' || x_return_status,
2716 p_msg_level=>fnd_log.level_statement);
2717 END IF;
2718
2719 -- Bug 4226199 : check update privilege for telex_number also
2720 IF p_create_update_flag = 'U' AND
2721 db_actual_content_source <> 'USER_ENTERED' THEN
2722 l_return_status := FND_API.G_RET_STS_SUCCESS;
2723 validate_nonupdateable (
2724 p_column => 'telex_number',
2725 p_column_value => p_telex_rec.telex_number,
2726 p_old_column_value => l_telex,
2727 x_return_status => l_return_status,
2728 p_raise_error => 'N');
2729
2730 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2731 HZ_MIXNM_UTILITY.CheckUserUpdatePrivilege(
2732 p_actual_content_source => db_actual_content_source,
2733 p_new_actual_content_source=> p_contact_point_rec.actual_content_source,
2734 p_entity_name => 'HZ_CONTACT_POINTS',
2735 x_return_status => x_return_status);
2736 -- Bug 4693719 : set global variable to Y
2737 HZ_UTILITY_V2PUB.G_UPDATE_ACS := 'Y';
2738 END IF;
2739 END IF;
2740
2741 ELSIF l_contact_point_type = 'WEB' THEN
2742
2743 --------------------------------------
2744 -- validate web_type
2745 --------------------------------------
2746
2747 -- web_type is mandatory field.
2748 validate_mandatory (
2749 p_create_update_flag => p_create_update_flag,
2750 p_column => 'web_type',
2751 p_column_value => p_web_rec.web_type,
2752 x_return_status => x_return_status);
2753
2754 /*IF g_debug THEN
2755 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2756 'WEB : web_type is mandatory. ' ||
2757 'x_return_status = ' || x_return_status, l_debug_prefix);
2758 END IF;
2759 */
2760 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2761 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'WEB : web_type is mandatory. ' ||
2762 'x_return_status = ' || x_return_status,
2763 p_msg_level=>fnd_log.level_statement);
2764 END IF;
2765
2766
2767 --------------------------------------
2768 -- validate url
2769 --------------------------------------
2770
2771 -- url is mandatory field.
2772 validate_mandatory (
2773 p_create_update_flag => p_create_update_flag,
2774 p_column => 'url',
2775 p_column_value => p_web_rec.url,
2776 x_return_status => x_return_status);
2777
2778 /*IF g_debug THEN
2779 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2780 'WEB : url is mandatory. ' ||
2781 'x_return_status = ' || x_return_status, l_debug_prefix);
2782 END IF;
2783 */
2784 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2785 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'WEB : url is mandatory. ' ||
2786 'x_return_status = ' || x_return_status,
2787 p_msg_level=>fnd_log.level_statement);
2788 END IF;
2789
2790 -- Bug 4226199 : check update privilege for url also
2791 IF p_create_update_flag = 'U' AND
2792 db_actual_content_source <> 'USER_ENTERED' THEN
2793 l_return_status := FND_API.G_RET_STS_SUCCESS;
2794 validate_nonupdateable (
2795 p_column => 'url',
2796 p_column_value => p_web_rec.url,
2797 p_old_column_value => l_url,
2798 x_return_status => l_return_status,
2799 p_raise_error => 'N');
2800
2801 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2802 HZ_MIXNM_UTILITY.CheckUserUpdatePrivilege(
2803 p_actual_content_source => db_actual_content_source,
2804 p_new_actual_content_source=> p_contact_point_rec.actual_content_source,
2805 p_entity_name => 'HZ_CONTACT_POINTS',
2806 x_return_status => x_return_status);
2807 -- Bug 4693719 : set global variable to Y
2808 HZ_UTILITY_V2PUB.G_UPDATE_ACS := 'Y';
2809 END IF;
2810 END IF;
2811
2812 --------------------------------------
2813 -- validate contact_point_purpose
2814 --------------------------------------
2815
2816 -- contact_point_purpose is lookup code in lookup type
2817 -- CONTACT_POINT_PURPOSE_WEB if contact_point_type = 'WEB'.
2818
2819 IF p_contact_point_rec.contact_point_purpose IS NOT NULL AND
2820 p_contact_point_rec.contact_point_purpose <> fnd_api.g_miss_char AND
2821 (p_create_update_flag = 'C' OR
2822 (p_create_update_flag = 'U' AND
2823 p_contact_point_rec.contact_point_purpose <>
2824 NVL(l_contact_point_purpose, fnd_api.g_miss_char)))
2825 THEN
2826 validate_lookup (
2827 p_column => 'contact_point_purpose',
2828 p_lookup_type => 'CONTACT_POINT_PURPOSE_WEB',
2829 p_column_value => p_contact_point_rec.contact_point_purpose,
2830 x_return_status => x_return_status);
2831
2832
2833 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2834 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2835 p_message=>'WEB : contact_point_purpose is lookup code in lookup type CONTACT_POINT_PURPOSE_WEB if contact_point_type = WEB. ' || 'x_return_status = ' || x_return_status,
2836 p_msg_level=>fnd_log.level_statement);
2837 END IF;
2838
2839 END IF;
2840
2841 /*IF g_debug THEN
2842 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2843 '(+) after validate telex_number ... ' ||
2844 'x_return_status = ' || x_return_status, l_debug_prefix);
2845 END IF;
2846 */
2847 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2848 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate telex_number ... ' ||
2849 'x_return_status = ' || x_return_status,
2850 p_msg_level=>fnd_log.level_statement);
2851 END IF;
2852
2853 END IF;
2854
2855 -- Debug info.
2856 /*IF g_debug THEN
2857 hz_utility_v2pub.debug ('validate_contact_point_main (-)');
2858 END IF;
2859 */
2860 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2861 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_contact_point_main (-)',
2862 p_msg_level=>fnd_log.level_procedure);
2863 END IF;
2864
2865 END validate_contact_point_main;
2866
2867 ----------------------------
2868 -- body of public procedures
2869 ----------------------------
2870
2871 /**
2872 * PROCEDURE validate_party
2873 *
2874 * DESCRIPTION
2875 * Validates party record. Checks for
2876 * uniqueness
2877 * lookup types
2878 * mandatory columns
2879 * non-updateable fields
2880 * foreign key validations
2881 * other validations
2882 *
2883 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2884 *
2885 * ARGUMENTS
2886 * IN:
2887 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
2888 * p_person_rec Person record.
2889 * p_old_person_rec Old person record.
2890 * IN/OUT:
2891 * x_return_status Return status after the call. The status can
2892 * be FND_API.G_RET_STS_SUCCESS (success),
2893 * FND_API.G_RET_STS_ERROR (error),
2894 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2895 *
2896 * NOTES
2897 *
2898 * MODIFICATION HISTORY
2899 *
2900 * 07-23-2001 Indrajit Sen o Created.
2901 * 09-26-2003 Rajib Ranjan Borah o Commented out the validate HR security code
2902 * and added validation code in
2903 * validate_hr_security procedure
2904 * which is called from validate_person
2905 * (Bug 3099624)
2906 */
2907
2908 PROCEDURE validate_party(
2909 p_create_update_flag IN VARCHAR2,
2910 p_party_rec IN HZ_PARTY_V2PUB.PARTY_REC_TYPE,
2911 p_old_party_rec IN HZ_PARTY_V2PUB.PARTY_REC_TYPE,
2912 p_db_created_by_module IN VARCHAR2,
2913 x_return_status IN OUT NOCOPY VARCHAR2
2914 ) IS
2915
2916 l_debug_prefix VARCHAR2(30) := '';
2917 l_temp_hr_party_exist NUMBER := 0;
2918 l_validate_osr varchar2(1) := 'Y';
2919 l_mosr_owner_table_id number;
2920
2921 l_temp_return_status VARCHAR2(10); -- for storing return status from
2922 -- hz_orig_system_ref_pub.get_owner_table_id
2923 /*
2924
2925 CURSOR c_temp_hr_party_exist IS
2926 select 1
2927 from per_all_people_f
2928 where party_id = p_party_rec.party_id;
2929 */
2930 BEGIN
2931
2932 --enable_debug;
2933
2934 -- Debug info.
2935 /*IF g_debug THEN
2936 hz_utility_v2pub.debug ('validate_party (+)');
2937 END IF;
2938 */
2939 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2940 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_party (+)',
2941 p_msg_level=>fnd_log.level_procedure);
2942 END IF;
2943
2944 -----------------------
2945 -- validate party_number
2946 -----------------------
2947
2948 -- party_number is non-updateable field
2949 IF p_create_update_flag = 'U' THEN
2950 validate_nonupdateable (
2951 p_column => 'party_number',
2952 p_column_value => p_party_rec.party_number,
2953 p_old_column_value => p_old_party_rec.party_number,
2954 x_return_status => x_return_status);
2955
2956 /*IF g_debug THEN
2957 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
2958 'party_number is non-updateable. ' ||
2959 'x_return_status = ' || x_return_status, l_debug_prefix);
2960 END IF;
2961 */
2962 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2963 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_number is non-updateable. ' ||
2964 'x_return_status = ' || x_return_status,
2965 p_msg_level=>fnd_log.level_statement);
2966 END IF;
2967 END IF;
2968
2969 ---------------------------------
2970 -- validate orig_system_reference
2971 ---------------------------------
2972 /****Logical APIs - validation not required****/
2973 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
2974 IF (p_party_rec.orig_system is not null
2975 and p_party_rec.orig_system <>fnd_api.g_miss_char)
2976 and (p_party_rec.orig_system_reference is not null
2977 and p_party_rec.orig_system_reference <>fnd_api.g_miss_char)
2978 and p_create_update_flag = 'U'
2979 then
2980 hz_orig_system_ref_pub.get_owner_table_id
2981 (p_orig_system => p_party_rec.orig_system,
2982 p_orig_system_reference => p_party_rec.orig_system_reference,
2983 p_owner_table_name => 'HZ_PARTIES',
2984 x_owner_table_id => l_mosr_owner_table_id,
2985 x_return_status => l_temp_return_status);
2986
2987 IF (l_temp_return_status = fnd_api.g_ret_sts_success AND
2988 l_mosr_owner_table_id= nvl(p_party_rec.party_id,l_mosr_owner_table_id))
2989 THEN
2990 l_validate_osr := 'N';
2991 -- if we can get owner_table_id based on osr and os in mosr table,
2992 -- we will use unique osr and os for update - bypass osr validation
2993 ELSE l_validate_osr := 'Y';
2994 END IF;
2995
2996 -- Call to hz_orig_system_ref_pub.get_owner_table_id API was resetting the
2997 -- x_return_status. Set x_return_status to error, ONLY if there is error.
2998 -- In case of success, leave it to carry over previous value as before this call.
2999 -- Fix for Bug 5498116 (29-AUG-2006)
3000 IF (l_temp_return_status = FND_API.G_RET_STS_ERROR) THEN
3001 x_return_status := l_temp_return_status;
3002 END IF;
3003
3004 end if;
3005 -- orig_system_reference is non-updateable field
3006 IF p_create_update_flag = 'U' and l_validate_osr = 'Y' THEN
3007 validate_nonupdateable (
3008 p_column => 'orig_system_reference',
3009 p_column_value => p_party_rec.orig_system_reference,
3010 p_old_column_value => p_old_party_rec.orig_system_reference,
3011 x_return_status => x_return_status);
3012
3013 /*IF g_debug THEN
3014 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3015 'orig_system_reference is non-updateable. ' ||
3016 'x_return_status = ' || x_return_status, l_debug_prefix);
3017 END IF;
3018 */
3019 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3020 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'orig_system_reference is non-updateable. ' ||
3021 'x_return_status = ' || x_return_status,
3022 p_msg_level=>fnd_log.level_statement);
3023 END IF;
3024 END IF;
3025 END IF;
3026
3027 ------------------
3028 -- validate status
3029 ------------------
3030
3031 -- status cannot be set to null during update
3032 IF p_create_update_flag = 'U' THEN
3033 validate_cannot_update_to_null (
3034 p_column => 'status',
3035 p_column_value => p_party_rec.status,
3036 x_return_status => x_return_status);
3037
3038 /*IF g_debug THEN
3039 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3040 'status is not updateable to null. ' ||
3041 'x_return_status = ' || x_return_status, l_debug_prefix);
3042 END IF;
3043 */
3044 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3045 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'status is not updateable to null. ' ||
3046 'x_return_status = ' || x_return_status,
3047 p_msg_level=>fnd_log.level_statement);
3048 END IF;
3049 END IF;
3050
3051 /****Logical APIs - validation not required****/
3052 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
3053 -- status is lookup code in lookup type REGISTRY_STATUS
3054 IF p_party_rec.status IS NOT NULL
3055 AND
3056 p_party_rec.status <> fnd_api.g_miss_char
3057 AND
3058 (p_create_update_flag = 'C'
3059 OR
3060 (p_create_update_flag = 'U'
3061 AND
3062 p_party_rec.status <> p_old_party_rec.status
3063 )
3064 )
3065 THEN
3066 validate_lookup (
3067 p_column => 'status',
3068 p_lookup_type => 'REGISTRY_STATUS',
3069 p_column_value => p_party_rec.status,
3070 x_return_status => x_return_status);
3071
3072 /*IF g_debug THEN
3073 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3074 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
3075 'x_return_status = ' || x_return_status, l_debug_prefix);
3076 END IF;
3077 */
3078 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3079 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3080 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
3081 'x_return_status = ' || x_return_status,
3082 p_msg_level=>fnd_log.level_statement);
3083 END IF;
3084 END IF;
3085 END IF;
3086
3087 ------------------------
3088 -- validate HR security
3089 ------------------------
3090 --Commented out the code below in the fix for 3099624.Added HR securrity validation in validate_hr_security procedure which is called from validate_person.
3091 --fix for Bug 2642597
3092 /*IF nvl(p_old_party_rec.orig_system_reference,'X') LIKE 'PER%' THEN
3093 | IF NVL(fnd_profile.value('HZ_CREATED_BY_MODULE'), '-222') <> 'HR API'
3094 | AND p_create_update_flag = 'U'
3095 | THEN
3096 | fnd_message.set_name('AR', 'HZ_CREATED_BY_MISMATCH');
3097 | fnd_msg_pub.add;
3098 | x_return_status := fnd_api.g_ret_sts_error;
3099 | END IF;
3100 | END IF;
3101 */
3102
3103 /*
3104 |OPEN c_temp_hr_party_exist;
3105 |FETCH c_temp_hr_party_exist INTO l_temp_hr_party_exist;
3106 |IF c_temp_hr_party_exist%NOTFOUND THEN
3107 | l_temp_hr_party_exist := 0;
3108 |END IF;
3109 |CLOSE c_temp_hr_party_exist;
3110 |
3111 |IF NVL(fnd_profile.value('HZ_CREATED_BY_MODULE'), '-222') <> 'HR API'
3112 | AND l_temp_hr_party_exist = 1
3113 | AND p_create_update_flag = 'U'
3114 |THEN
3115 | fnd_message.set_name('AR', 'HZ_CREATED_BY_MISMATCH');
3116 | fnd_msg_pub.add;
3117 | x_return_status := fnd_api.g_ret_sts_error;
3118 |END IF;
3119 */
3120
3121 -------------------------
3122 -- validate category_code
3123 -------------------------
3124
3125 -- category_code is lookup code in lookup type CUSTOMER_CATEGORY
3126 IF p_party_rec.category_code IS NOT NULL
3127 AND
3128 p_party_rec.category_code <> fnd_api.g_miss_char
3129 AND
3130 (p_create_update_flag = 'C'
3131 OR
3132 (p_create_update_flag = 'U'
3133 AND
3134 p_party_rec.category_code <> p_old_party_rec.category_code
3135 )
3136 )
3137 THEN
3138 validate_lookup (
3139 p_column => 'category_code',
3140 p_lookup_type => 'CUSTOMER_CATEGORY',
3141 p_column_value => p_party_rec.category_code,
3142 x_return_status => x_return_status);
3143
3144 /*IF g_debug THEN
3145 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3146 'category_code is lookup code in lookup type CUSTOMER_CATEGORY. ' ||
3147 'x_return_status = ' || x_return_status, l_debug_prefix);
3148 END IF;
3149 */
3150 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3151 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3152 p_message=>'category_code is lookup code in lookup type CUSTOMER_CATEGORY. ' ||
3153 'x_return_status = ' || x_return_status,
3154 p_msg_level=>fnd_log.level_statement);
3155 END IF;
3156 END IF;
3157
3158 -- Debug info.
3159 /*IF g_debug THEN
3160 hz_utility_v2pub.debug ('validate_party (-)');
3161 END IF;
3162 */
3163 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3164 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_party (-)',
3165 p_msg_level=>fnd_log.level_procedure);
3166 END IF;
3167
3168 --disable_debug;
3169
3170 END validate_party;
3171
3172 /**
3173 * PROCEDURE validate_person
3174 *
3175 * DESCRIPTION
3176 * Validates person record. Checks for
3177 * uniqueness
3178 * lookup types
3179 * mandatory columns
3180 * non-updateable fields
3181 * foreign key validations
3182 * hr security validation
3183 * other validations
3184 *
3185 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3186 *
3187 * ARGUMENTS
3188 * IN:
3189 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
3190 * p_person_rec Person record.
3191 * p_old_person_rec Old person record.
3192 * IN/OUT:
3193 * x_return_status Return status after the call. The status can
3194 * be FND_API.G_RET_STS_SUCCESS (success),
3195 * fnd_api.g_ret_sts_error (error),
3196 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3197 *
3198 * NOTES
3199 *
3200 * MODIFICATION HISTORY
3201 *
3202 * 07-23-2001 Indrajit Sen o Created.
3203 * 06-FEB-2003 Porkodi C o Bug 2684319: Added a validation for deceased_flag field.
3204 * 10-Mar-2003 Porkodi Chinnandar o Bug 2817974, Added a validation for date_of_death and
3205 * date_of_birth field to have greater value for date_of_death.
3206 * 27-Mar-2003 Porkodi C o Bug 2794173: Added g_miss_date check for date_of_death
3207 * 26-Sep-2003 Rajib Ranjan Borah o Bug 3099624: Called the validate_hr_security
3208 * procedure to validate HR security.
3209 * 16-JAN-2004 Rajib Ranjan Borah o Bug 3333036.Rent_own_ind is now validated only if it
3210 * has been updated and not for each record.
3211 * 13-JUL-2004 V.Ravichandran o Bug 3704293 : Modified the code which validates
3212 * date_of_birth and date_of_death combination in
3213 * validate_person() procedure.
3214 * 25-AUG-2004 V.Ravichandran o Bug 3747386 : Modified the code which validates
3215 * that both first_name and last_name
3216 * should not be null during update in validate_person()
3217 * procedure.
3218 * 31-MAY-2006 Nishant Singhai o Bug 5174379 : Person Name update allowed check added.
3219 */
3220
3221 PROCEDURE validate_person(
3222 p_create_update_flag IN VARCHAR2,
3223 p_person_rec IN HZ_PARTY_V2PUB.PERSON_REC_TYPE,
3224 p_old_person_rec IN HZ_PARTY_V2PUB.PERSON_REC_TYPE,
3225 x_return_status IN OUT NOCOPY VARCHAR2
3226 ) IS
3227
3228 l_debug_prefix VARCHAR2(30) := '';
3229 temp_date_of_birth DATE;
3230 temp_date_of_death DATE;
3231 l_change_cust_name_profile VARCHAR2(10);
3232
3233
3234 BEGIN
3235
3236 --enable_debug;
3237
3238 -- Debug info.
3239 /*IF g_debug THEN
3240 hz_utility_v2pub.debug ('validate_person (+)');
3241 END IF;
3242 */
3243 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3244 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_person (+)',
3245 p_msg_level=>fnd_log.level_procedure);
3246 END IF;
3247
3248 -------------------------------------------------------------------------
3249 -- Validate first_name, middle_name, last_name, pre_name_adjunct and
3250 -- person_name_suffix are allowed to be updated or not
3251 -- Update only if profile is set to Y or it is not set at all. If it is set
3252 -- to 'N' update is not allowed.
3253 -- Check added for Bug 5174379 on 31-May-2006 (Nishant)
3254 -------------------------------------------------------------------------
3255 IF p_create_update_flag = 'U' THEN
3256
3257 l_change_cust_name_profile := fnd_profile.VALUE('AR_CHANGE_CUST_NAME');
3258 IF (NVL(l_change_cust_name_profile,'Y') = 'N') THEN -- update to party name is not allowed
3259
3260 IF ((p_person_rec.person_first_name <> p_old_person_rec.person_first_name) OR
3261 (p_person_rec.person_middle_name <> p_old_person_rec.person_middle_name) OR
3262 (p_person_rec.person_last_name <> p_old_person_rec.person_last_name) OR
3263 (p_person_rec.person_pre_name_adjunct <> p_old_person_rec.person_pre_name_adjunct) OR
3264 (p_person_rec.person_name_suffix <> p_old_person_rec.person_name_suffix)
3265 ) THEN
3266 fnd_message.set_name('AR', 'HZ_CUST_NAME_UPDT_NOT_ALLOWED');
3267 fnd_msg_pub.add;
3268 x_return_status := fnd_api.g_ret_sts_error;
3269 END IF;
3270
3271 END IF; -- profile = N
3272
3273 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3274 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3275 p_message=>'Person Name Update Allowed Check...' ||
3276 'x_return_status : ' || x_return_status ||
3277 '. Profile AR_CHANGE_CUST_NAME value :'||l_change_cust_name_profile,
3278 p_msg_level=>fnd_log.level_statement);
3279 END IF;
3280
3281 END IF; -- create update flag = U
3282
3283 -----------------------------------
3284 -- validate first_name or last_name
3285 -----------------------------------
3286
3287 -- during insert, either first_name or last_name has to be passed in
3288 IF p_create_update_flag = 'C' THEN
3289 IF (p_person_rec.person_first_name = fnd_api.g_miss_char or p_person_rec.person_first_name IS NULL)
3290 AND
3291 (p_person_rec.person_last_name = fnd_api.g_miss_char or p_person_rec.person_last_name IS NULL)
3292 THEN
3293 fnd_message.set_name('AR', 'HZ_FIRST_OR_LAST_NAME_REQUIRED');
3294 fnd_msg_pub.add;
3295 x_return_status := fnd_api.g_ret_sts_error;
3296 END IF;
3297 END IF;
3298
3299 -- during update, both first_name or last_name cannot be set to null
3300 IF p_create_update_flag = 'U' THEN
3301 -- Bug 3747386
3302 IF (p_person_rec.person_first_name = fnd_api.g_miss_char
3303 or NVL(p_person_rec.person_first_name,p_old_person_rec.person_first_name)=fnd_api.g_miss_char)
3304 AND
3305 (p_person_rec.person_last_name = fnd_api.g_miss_char
3306 or NVL(p_person_rec.person_last_name,p_old_person_rec.person_last_name)=fnd_api.g_miss_char) THEN
3307 fnd_message.set_name('AR', 'HZ_FIRST_OR_LAST_NAME_REQUIRED');
3308 fnd_msg_pub.add;
3309 x_return_status := fnd_api.g_ret_sts_error;
3310 END IF;
3311 END IF;
3312
3313 /*IF g_debug THEN
3314 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3315 'first_name or last_name is mandatory. ' ||
3316 'x_return_status = ' || x_return_status, l_debug_prefix);
3317 END IF;
3318 */
3319 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3320 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'first_name or last_name is mandatory. ' ||
3321 'x_return_status = ' || x_return_status,
3322 p_msg_level=>fnd_log.level_statement);
3323 END IF;
3324
3325 -----------------------------------
3326 -- validate person_pre_name_adjunct
3327 -----------------------------------
3328
3329 -- person_pre_name_adjunct is lookup code in lookup type CONTACT_TITLE
3330 IF p_person_rec.person_pre_name_adjunct IS NOT NULL
3331 AND
3332 p_person_rec.person_pre_name_adjunct <> fnd_api.g_miss_char
3333 AND
3334 (p_create_update_flag = 'C'
3335 OR
3336 (p_create_update_flag = 'U'
3337 AND
3338 p_person_rec.person_pre_name_adjunct <> p_old_person_rec.person_pre_name_adjunct
3339 )
3340 )
3341 THEN
3342 validate_lookup (
3343 p_column => 'person_pre_name_adjunct',
3344 p_lookup_type => 'CONTACT_TITLE',
3345 p_column_value => p_person_rec.person_pre_name_adjunct,
3346 x_return_status => x_return_status);
3347
3348 /*IF g_debug THEN
3349 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3350 'person_pre_name_adjunct in lookup CONTACT_TITLE. ' ||
3351 'x_return_status = ' || x_return_status, l_debug_prefix);
3352 END IF;
3353 */
3354 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3355 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3356 p_message=>'person_pre_name_adjunct in lookup CONTACT_TITLE. ' ||
3357 'x_return_status = ' || x_return_status,
3358 p_msg_level=>fnd_log.level_statement);
3359 END IF;
3360 END IF;
3361
3362 ----------------------------------
3363 -- validate head_of_household_flag
3364 ----------------------------------
3365 /****Logical APIs - validation not required****/
3366 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
3367 -- head_of_household_flag is lookup code in lookup type YES/NO
3368 validate_lookup (
3369 p_column => 'head_of_household_flag',
3370 p_lookup_type => 'YES/NO',
3371 p_column_value => p_person_rec.head_of_household_flag,
3372 x_return_status => x_return_status);
3373
3374 /*IF g_debug THEN
3375 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3376 'head_of_household_flag in lookup YES/NO. ' ||
3377 'x_return_status = ' || x_return_status, l_debug_prefix);
3378 END IF;
3379 */
3380 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3381 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3382 p_message=>'head_of_household_flag in lookup YES/NO. ' ||
3383 'x_return_status = ' || x_return_status,
3384 p_msg_level=>fnd_log.level_statement);
3385 END IF;
3386 END IF;
3387
3388 ------------------------
3389 -- validate rent_own_ind
3390 ------------------------
3391
3392 --2897298, Changed the lookup type to OWN_RENT_IND
3393 -- rent_own_ind is lookup code in lookup type OWN_RENT_IND
3394 -- Bug 3333036.
3395 -- The validation will be called only if the value changes.
3396
3397 IF p_person_rec.rent_own_ind IS NOT NULL
3398 AND
3399 p_person_rec.rent_own_ind <> fnd_api.g_miss_char
3400 AND
3401 (
3402 p_create_update_flag = 'C'
3403 OR
3404 (
3405 p_create_update_flag = 'U'
3406 AND
3407 p_person_rec.rent_own_ind <> p_old_person_rec.rent_own_ind
3408 )
3409 )
3410 THEN
3411 validate_lookup (
3412 p_column => 'rent_own_ind',
3413 p_lookup_type => 'OWN_RENT_IND',
3414 p_column_value => p_person_rec.rent_own_ind,
3415 x_return_status => x_return_status);
3416 /*IF g_debug THEN
3417 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3418 'rent_own_ind in lookup OWN_RENT_IND. ' ||
3419 'x_return_status = ' || x_return_status, l_debug_prefix);
3420 END IF;
3421 */
3422 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3423 hz_utility_v2pub.debug(
3424 p_prefix=>l_debug_prefix,
3425 p_message=>'rent_own_ind in lookup OWN_RENT_IND. ' ||
3426 'x_return_status = ' || x_return_status,
3427 p_msg_level=>fnd_log.level_statement);
3428 END IF;
3429 END IF;
3430
3431 -------------------------
3432 -- validate deceased_flag
3433 -------------------------
3434 /****Logical APIs - validation not required****/
3435 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
3436 -- deceased_flag is lookup code in lookup type YES/NO
3437 validate_lookup (
3438 p_column => 'deceased_flag',
3439 p_lookup_type => 'YES/NO',
3440 p_column_value => p_person_rec.deceased_flag,
3441 x_return_status => x_return_status);
3442
3443 /*IF g_debug THEN
3444 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3445 'deceased_flag in lookup YES/NO. ' ||
3446 'x_return_status = ' || x_return_status, l_debug_prefix);
3447 END IF;
3448 */
3449 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3450 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'deceased_flag in lookup YES/NO. ' ||
3451 'x_return_status = ' || x_return_status,
3452 p_msg_level=>fnd_log.level_statement);
3453 END IF;
3454 END IF;
3455
3456 -- If date_of_death is not null then deceased_flag must be 'Y'
3457
3458 --2794173, Added the g_miss_date check here
3459 IF (p_person_rec.date_of_death IS NOT NULL AND
3460 p_person_rec.date_of_death <> FND_API.G_MISS_DATE)
3461 THEN
3462
3463 IF p_person_rec.deceased_flag <> 'Y'
3464 THEN
3465
3466 fnd_message.set_name('AR', 'HZ_API_VAL_DEP_FIELDS');
3467 fnd_message.set_token('COLUMN1', 'DATE_OF_DEATH');
3468 fnd_message.set_token('VALUE1', 'not null');
3469 fnd_message.set_token('COLUMN2', 'DECEASED_FLAG');
3470 fnd_message.set_token('VALUE2', 'Y');
3471 fnd_msg_pub.add;
3472 x_return_status := fnd_api.g_ret_sts_error;
3473 END IF;
3474
3475 /*IF g_debug THEN
3476 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3477 'check that deceased_flag is Y when date_of_death is not null. ' ||
3478 ' x_return_status = ' || x_return_status, l_debug_prefix);
3479 END IF;
3480 */
3481 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3482 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3483 p_message=>'check that deceased_flag is Y when date_of_death is not null. ' ||
3484 ' x_return_status = ' || x_return_status,
3485 p_msg_level=>fnd_log.level_statement);
3486 END IF;
3487 END IF;
3488
3489 --2817974, Added
3490 -------------------------------------------
3491 -- validate date_of_birth and date_of_death
3492 -------------------------------------------
3493
3494 -- date_of_birth and date_of_death should be greater than sys_date
3495 IF p_person_rec.date_of_birth > SYSDATE then
3496 fnd_message.set_name('AR','HZ_API_NO_FUTURE_DATE_ALLOWED');
3497 fnd_message.set_token('COLUMN','DATE_OF_BIRTH');
3498 fnd_msg_pub.add;
3499 x_return_status := fnd_api.g_ret_sts_error;
3500 END IF;
3501
3502 IF p_person_rec.date_of_death > SYSDATE then
3503 fnd_message.set_name('AR','HZ_API_NO_FUTURE_DATE_ALLOWED');
3504 fnd_message.set_token('COLUMN','DATE_OF_DEATH');
3505 fnd_msg_pub.add;
3506 x_return_status := fnd_api.g_ret_sts_error;
3507 END IF;
3508
3509 /*IF g_debug THEN
3510 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3511 'after validating date_of_birth and date_of_death against SYSDATE ' ||
3512 'x_return_status = ' || x_return_status, l_debug_prefix);
3513 END IF;
3514 */
3515 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3516 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3517 p_message=>'after validating date_of_birth and date_of_death against SYSDATE ' ||
3518 'x_return_status = ' || x_return_status,
3519 p_msg_level=>fnd_log.level_statement);
3520 END IF;
3521
3522 -- If date_of_birth and date_of_death are passed,
3523 -- then date_of_birth must be greater than or equal to
3524 -- date_of_death.
3525
3526 -- Bug 3704293
3527 IF p_create_update_flag = 'U' THEN
3528 IF p_person_rec.date_of_birth IS NOT NULL then
3529 temp_date_of_birth := p_person_rec.date_of_birth;
3530 ELSE
3531 temp_date_of_birth := p_old_person_rec.date_of_birth;
3532 END IF;
3533 ELSIF p_create_update_flag = 'C' THEN
3534 temp_date_of_birth := p_person_rec.date_of_birth;
3535 END IF;
3536
3537 IF p_create_update_flag = 'U' THEN
3538 IF p_person_rec.date_of_death IS NOT NULL then
3539 temp_date_of_death := p_person_rec.date_of_death;
3540 ELSE
3541 temp_date_of_death := p_old_person_rec.date_of_death;
3542 END IF;
3543 ELSIF p_create_update_flag = 'C' THEN
3544 temp_date_of_death := p_person_rec.date_of_death;
3545 END IF;
3546
3547 IF (temp_date_of_birth IS NOT NULL AND
3548 temp_date_of_birth <> FND_API.G_MISS_DATE AND
3549 temp_date_of_death IS NOT NULL AND
3550 temp_date_of_death <> FND_API.G_MISS_DATE) THEN
3551 validate_start_end_date (
3552
3553 p_create_update_flag => p_create_update_flag,
3554 p_start_date_column_name => 'date_of_birth',
3555 p_start_date => temp_date_of_birth,
3556 p_old_start_date => p_old_person_rec.date_of_birth,
3557 p_end_date_column_name => 'date_of_death',
3558 p_end_date => temp_date_of_death,
3559 p_old_end_date => p_old_person_rec.date_of_death,
3560 x_return_status => x_return_status
3561 );
3562
3563
3564
3565 /*IF g_debug THEN
3566 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3567 'check whether date_of_death is greater then or equal to date_of_birth. ' ||
3568 'x_return_status = ' || x_return_status, l_debug_prefix);
3569 END IF;
3570 */
3571 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3572 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3573 p_message=>'check whether date_of_death is greater then or equal to date_of_birth. ' ||
3574 'x_return_status = ' || x_return_status,
3575 p_msg_level=>fnd_log.level_statement);
3576 END IF;
3577 END IF;
3578
3579 /*IF g_debug THEN
3580 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3581 '(+) after validating the date_of_death and date_of_birth... ' ||
3582 'x_return_status = ' || x_return_status, l_debug_prefix);
3583 END IF;
3584 */
3585 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3586 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3587 p_message=>'(+) after validating the date_of_death and date_of_birth... ' ||
3588 'x_return_status = ' || x_return_status,
3589 p_msg_level=>fnd_log.level_statement);
3590 END IF;
3591
3592
3593
3594 /**
3595 * Bug 2197181: content_source_type is obsolete.
3596
3597 ----------------------------------------------
3598 -- validate content_source_type
3599 ----------------------------------------------
3600
3601 -- do not need to check content_source_type is mandatory because
3602 -- we default content_source_type to hz_party_v2pub.g_miss_content_source_type
3603 -- in table handler.
3604
3605 -- since we are selecting person_profile_id from hz_person_profiles
3606 -- for record having content_source_type of p_person_rec.content_source_type,
3607 -- in this case, we do not need to check for non-updatability of content_source_type.
3608
3609 -- content_source_type is lookup code in lookup type CONTENT_SOURCE_TYPE
3610 validate_lookup (
3611 p_column => 'content_source_type',
3612 p_lookup_type => 'CONTENT_SOURCE_TYPE',
3613 p_column_value => p_person_rec.content_source_type,
3614 x_return_status => x_return_status);
3615
3616
3617 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3618 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3619 p_message=>'content_source_type in lookup CONTENT_SOURCE_TYPE. ' ||
3620 'x_return_status = ' || x_return_status,
3621 p_msg_level=>fnd_log.level_statement);
3622 END IF;
3623 **/
3624
3625 --------------------------
3626 -- validate marital_status
3627 --------------------------
3628
3629 -- marital_status is lookup code in lookup type MARITAL_STATUS
3630 IF p_person_rec.marital_status IS NOT NULL
3631 AND
3632 p_person_rec.marital_status <> fnd_api.g_miss_char
3633 AND
3634 (p_create_update_flag = 'C'
3635 OR
3636 (p_create_update_flag = 'U'
3637 AND
3638 p_person_rec.marital_status <> p_old_person_rec.marital_status
3639 )
3640 )
3641 THEN
3642 validate_lookup (
3643 p_column => 'marital_status',
3644 p_lookup_type => 'MARITAL_STATUS',
3645 p_column_value => p_person_rec.marital_status,
3646 x_return_status => x_return_status);
3647
3648 /*IF g_debug THEN
3649 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3650 'marital_status in lookup MARITAL_STATUS. ' ||
3651 'x_return_status = ' || x_return_status, l_debug_prefix);
3652 END IF;
3653 */
3654 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3655 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
3656 p_message=>'marital_status in lookup MARITAL_STATUS. ' ||
3657 'x_return_status = ' || x_return_status,
3658 p_msg_level=>fnd_log.level_statement);
3659 END IF;
3660
3661 END IF;
3662
3663 --------------------------------------
3664 -- validate created_by_module
3665 --------------------------------------
3666
3667 validate_created_by_module(
3668 p_create_update_flag => p_create_update_flag,
3669 p_created_by_module => p_person_rec.created_by_module,
3670 p_old_created_by_module => p_old_person_rec.created_by_module,
3671 x_return_status => x_return_status);
3672
3673 --------------------------------------
3674 -- validate application_id
3675 --------------------------------------
3676
3677 validate_application_id(
3678 p_create_update_flag => p_create_update_flag,
3679 p_application_id => p_person_rec.application_id,
3680 p_old_application_id => p_old_person_rec.application_id,
3681 x_return_status => x_return_status);
3682
3683 --------------------------
3684 -- validate gender
3685 --------------------------
3686
3687 -- gender is lookup code in lookup type HZ_GENDER
3688 IF p_person_rec.gender IS NOT NULL AND
3689 p_person_rec.gender <> fnd_api.g_miss_char AND
3690 (p_create_update_flag = 'C' OR
3691 (p_create_update_flag = 'U' AND
3692 p_person_rec.gender <> p_old_person_rec.gender))
3693 THEN
3694 validate_lookup (
3695 p_column => 'gender',
3696 p_lookup_type => 'HZ_GENDER',
3697 p_column_value => p_person_rec.gender,
3698 x_return_status => x_return_status);
3699
3700 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3701 hz_utility_v2pub.debug(
3702 p_prefix => l_debug_prefix,
3703 p_message => 'gender in lookup HZ_GENDER. ' ||
3704 'x_return_status = ' || x_return_status,
3705 p_msg_level=>fnd_log.level_statement);
3706 END IF;
3707 END IF;
3708
3709 --------------------------
3710 -- validate person_iden_type
3711 --------------------------
3712
3713 -- person_iden_type is lookup code in lookup type HZ_PERSON_IDEN_TYPE
3714 IF p_person_rec.person_iden_type IS NOT NULL AND
3715 p_person_rec.person_iden_type <> fnd_api.g_miss_char AND
3716 (p_create_update_flag = 'C' OR
3717 (p_create_update_flag = 'U' AND
3718 p_person_rec.person_iden_type <> p_old_person_rec.person_iden_type))
3719 THEN
3720 validate_lookup (
3721 p_column => 'person_iden_type',
3722 p_lookup_type => 'HZ_PERSON_IDEN_TYPE',
3723 p_column_value => p_person_rec.person_iden_type,
3724 x_return_status => x_return_status);
3725
3726 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3727 hz_utility_v2pub.debug(
3728 p_prefix => l_debug_prefix,
3729 p_message => 'person_iden_type in lookup HZ_PERSON_IDEN_TYPE. ' ||
3730 'x_return_status = ' || x_return_status,
3731 p_msg_level=>fnd_log.level_statement);
3732 END IF;
3733 END IF;
3734
3735 -----------------------------------------------------------
3736 --Call to valicate against HR security (Bug Number 3099624)
3737 -----------------------------------------------------------
3738 IF(p_create_update_flag='U')
3739 THEN
3740 validate_hr_security
3741 (
3742 p_person_rec => p_person_rec,
3743 p_old_person_rec => p_old_person_rec,
3744 x_return_status => x_return_status
3745 );
3746 END IF;
3747
3748
3749 -- Debug info.
3750 /*IF g_debug THEN
3751 hz_utility_v2pub.debug ('validate_person (-)');
3752 END IF;
3753 */
3754 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3755 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_person (-)',
3756 p_msg_level=>fnd_log.level_procedure);
3757 END IF;
3758
3759 --disable_debug;
3760
3761 END validate_person;
3762
3763 /**
3764 * PROCEDURE validate_hr_security
3765 *
3766 * DESCRIPTION
3767 * Protects the HR data in the HZ_PERSON_PROFILES and the HZ_PARTIES tables
3768 * by preventing updation by other users.
3769 * If the profile option 'HZ_PROTECT_HR_PERSON_INFO' is set to 'Y',then the
3770 * following fields are updateable only by HR:
3771 * person_first_name
3772 * person_last_name
3773 * person_middle_name
3774 * person_name_suffix
3775 * person_previous_last_name
3776 * person_title
3777 * known_as
3778 * person_first_name_phonetic
3779 * person_last_name_phonetic
3780 * person_name_phonetic
3781 * If the profile option 'HZ_PROTECT_HR_PERSON_INFO' is set to 'N', then the
3782 * following sensitive fields are updateable only by HR in addition to those
3783 * mentioned above for the case when the profile option is set to 'Y':
3784 * gender
3785 * date_of_birth
3786 * place_of_birth
3787 * marital_status
3788 *
3789 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3790 *
3791 * ARGUMENTS
3792 * IN:
3793 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
3794 * p_person_rec Person record.
3795 * p_old_person_rec Old person record.
3796 * IN/OUT:
3797 * x_return_status Return status after the call. The status can
3798 * be FND_API.G_RET_STS_SUCCESS (success),
3799 * fnd_api.g_ret_sts_error (error),
3800 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3801 *
3802 * NOTES
3803 * The previous validation for the same purpose was performed in the procedure
3804 * HZ_REGISTRY_VALIDATE_V2PUB.validate_party and locked all fields against update
3805 * as against the expected functionality of locking only the HR fields.
3806 * (Bug Number 3099624).The previous validation has been commented out.
3807 *
3808 * MODIFICATION HISTORY
3809 *
3810 * 09-26-2003 Rajib Ranjan Borah o Created.
3811 *
3812 */
3813
3814 PROCEDURE validate_hr_security(
3815 p_person_rec IN HZ_PARTY_V2PUB.PERSON_REC_TYPE,
3816 p_old_person_rec IN HZ_PARTY_V2PUB.PERSON_REC_TYPE,
3817 x_return_status IN OUT NOCOPY VARCHAR2
3818 ) IS
3819
3820 cols_updated VARCHAR2(300) := '';
3821 l_debug_prefix VARCHAR2(30) := '';
3822 BEGIN
3823
3824 --enable_debug;
3825
3826 -- Debug info.
3827 /*IF g_debug
3828 THEN
3829 hz_utility_v2pub.debug ('validate_hr_security (+)');
3830 END IF;
3831 */
3832 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3833 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_hr_security (+)',
3834 p_msg_level=>fnd_log.level_procedure);
3835 END IF;
3836
3837
3838
3839 IF(NVL(p_old_person_rec.party_rec.orig_system_reference,'X') LIKE 'PER%')
3840 THEN
3841 IF (NVL(FND_PROFILE.VALUE('HZ_CREATED_BY_MODULE'), '-222') <> 'HR API')
3842 THEN
3843 IF(FND_PROFILE.VALUE('HZ_PROTECT_HR_PERSON_INFO')='Y')
3844 THEN
3845 IF(NVL(p_person_rec.person_first_name,p_old_person_rec.person_first_name)<>p_old_person_rec.person_first_name)
3846 THEN
3847 cols_updated :=cols_updated||',PERSON_FIRST_NAME';
3848 END IF;
3849
3850 IF(NVL(p_person_rec.person_last_name,p_old_person_rec.person_last_name)<>p_old_person_rec.person_last_name)
3851 THEN
3852 cols_updated :=cols_updated||',PERSON_LAST_NAME';
3853 END IF;
3854
3855 IF(NVL(p_person_rec.person_middle_name,p_old_person_rec.person_middle_name)<>p_old_person_rec.person_middle_name)
3856 THEN
3857 cols_updated :=cols_updated||',PERSON_MIDDLE_NAME';
3858 END IF;
3859
3860 IF(NVL(p_person_rec.person_name_suffix,p_old_person_rec.person_name_suffix)<>p_old_person_rec.person_name_suffix)
3861 THEN
3862 cols_updated :=cols_updated||',PERSON_NAME_SUFFIX';
3863 END IF;
3864
3865 IF(NVL(p_person_rec.person_previous_last_name,p_old_person_rec.person_previous_last_name)<>p_old_person_rec.person_previous_last_name)
3866 THEN
3867 cols_updated :=cols_updated||',PERSON_PREVIOUS_LAST_NAME';
3868 END IF;
3869
3870 IF(NVL(p_person_rec.known_as,p_old_person_rec.known_as)<>p_old_person_rec.known_as)
3871 THEN
3872 cols_updated :=cols_updated||',KNOWN_AS';
3873 END IF;
3874
3875 IF(NVL(p_person_rec.person_title,p_old_person_rec.person_title)<>p_old_person_rec.person_title)
3876 THEN
3877 cols_updated :=cols_updated||',PERSON_TITLE';
3878 END IF;
3879
3880 IF(NVL(p_person_rec.person_first_name_phonetic,p_old_person_rec.person_first_name_phonetic)<>p_old_person_rec.person_first_name_phonetic)
3881 THEN
3882 cols_updated :=cols_updated||',PERSON_FIRST_NAME_PHONETIC';
3883 END IF;
3884
3885 IF(NVL(p_person_rec.person_last_name_phonetic,p_old_person_rec.person_last_name_phonetic)<>p_old_person_rec.person_last_name_phonetic)
3886 THEN
3887 cols_updated :=cols_updated||',PERSON_LAST_NAME_PHONETIC';
3888 END IF;
3889
3890 IF(NVL(p_person_rec.person_name_phonetic,p_old_person_rec.person_name_phonetic)<>p_old_person_rec.person_name_phonetic)
3891 THEN
3892 cols_updated :=cols_updated||',PERSON_NAME_PHONETIC';
3893 END IF;
3894
3895
3896
3897 IF(cols_updated IS NOT NULL)
3898 THEN
3899 cols_updated:=SUBSTR(cols_updated,2);
3900 FND_MESSAGE.SET_NAME('AR', 'HZ_CREATED_BY_MISMATCH');
3901 FND_MESSAGE.SET_TOKEN('COLUMN',cols_updated);
3902 FND_MSG_PUB.ADD;
3903 x_return_status := FND_API.G_RET_STS_ERROR;
3904 END IF;
3905
3906 ELSIF(FND_PROFILE.VALUE('HZ_PROTECT_HR_PERSON_INFO')='N') --elsif corresonding to --IF(FND_PROFILE.VALUE('HZ_PROTECT_PERSON_INFO')='Y')--
3907 THEN
3908 IF(NVL(p_person_rec.person_first_name,p_old_person_rec.person_first_name)<>p_old_person_rec.person_first_name)
3909 THEN
3910 cols_updated :=cols_updated||',PERSON_FIRST_NAME';
3911 END IF;
3912
3913 IF(NVL(p_person_rec.person_last_name,p_old_person_rec.person_last_name)<>p_old_person_rec.person_last_name)
3914 THEN
3915 cols_updated :=cols_updated||',PERSON_LAST_NAME';
3916 END IF;
3917
3918 IF(NVL(p_person_rec.person_middle_name,p_old_person_rec.person_middle_name)<>p_old_person_rec.person_middle_name)
3919 THEN
3920 cols_updated :=cols_updated||',PERSON_MIDDLE_NAME';
3921 END IF;
3922
3923 IF(NVL(p_person_rec.person_name_suffix,p_old_person_rec.person_name_suffix)<>p_old_person_rec.person_name_suffix)
3924 THEN
3925 cols_updated :=cols_updated||',PERSON_NAME_SUFFIX';
3926 END IF;
3927
3928 IF(NVL(p_person_rec.person_previous_last_name,p_old_person_rec.person_previous_last_name)<>p_old_person_rec.person_previous_last_name)
3929 THEN
3930 cols_updated :=cols_updated||',PERSON_PREVIOUS_LAST_NAME';
3931 END IF;
3932
3933 IF(NVL(p_person_rec.known_as,p_old_person_rec.known_as)<>p_old_person_rec.known_as)
3934 THEN
3935 cols_updated :=cols_updated||',KNOWN_AS';
3936 END IF;
3937
3938 IF(NVL(p_person_rec.person_title,p_old_person_rec.person_title)<>p_old_person_rec.person_title)
3939 THEN
3940 cols_updated :=cols_updated||',PERSON_TITLE';
3941 END IF;
3942
3943 IF(NVL(p_person_rec.person_first_name_phonetic,p_old_person_rec.person_first_name_phonetic)<>p_old_person_rec.person_first_name_phonetic)
3944 THEN
3945 cols_updated :=cols_updated||',PERSON_FIRST_NAME_PHONETIC';
3946 END IF;
3947
3948 IF(NVL(p_person_rec.person_last_name_phonetic,p_old_person_rec.person_last_name_phonetic)<>p_old_person_rec.person_last_name_phonetic)
3949 THEN
3950 cols_updated :=cols_updated||',PERSON_LAST_NAME_PHONETIC';
3951 END IF;
3952
3953 IF(NVL(p_person_rec.person_name_phonetic,p_old_person_rec.person_name_phonetic)<>p_old_person_rec.person_name_phonetic)
3954 THEN
3955 cols_updated :=cols_updated||',PERSON_NAME_PHONETIC';
3956 END IF;
3957
3958 IF(NVL(p_person_rec.gender,p_old_person_rec.gender)<>p_old_person_rec.gender)
3959 THEN
3960 cols_updated :=cols_updated||',GENDER';
3961 END IF;
3962
3963 IF(NVL(p_person_rec.date_of_birth,p_old_person_rec.date_of_birth)<>p_old_person_rec.date_of_birth)
3964 THEN
3965 cols_updated :=cols_updated||',DATE_OF_BIRTH';
3966 END IF;
3967
3968 IF(NVL(p_person_rec.place_of_birth,p_old_person_rec.place_of_birth)<>p_old_person_rec.place_of_birth)
3969 THEN
3970 cols_updated :=cols_updated||',PLACE_OF_BIRTH';
3971 END IF;
3972
3973 IF(NVL(p_person_rec.marital_status,p_old_person_rec.marital_status)<>p_old_person_rec.marital_status)
3974 THEN
3975 cols_updated :=cols_updated||',MARITAL_STATUS';
3976 END IF;
3977
3978
3979
3980 IF(cols_updated IS NOT NULL)
3981 THEN
3982 cols_updated:=SUBSTR(cols_updated,2);
3983 FND_MESSAGE.SET_NAME('AR', 'HZ_CREATED_BY_MISMATCH');
3984 FND_MESSAGE.SET_TOKEN('COLUMN',cols_updated);
3985 FND_MSG_PUB.ADD;
3986 x_return_status := FND_API.G_RET_STS_ERROR;
3987 END IF;
3988
3989 END IF;--end if corresponding to --IF(FND_PROFILE.VALUE('HZ_PROTECT_PERSON_INFO')='YES')--
3990
3991 END IF;--end if corresponding to --IF(NVL(FND_PROFILE.VALUE('HZ_CREATED_BY_MODULE'), '-222') <> 'HR API')--
3992
3993 END IF;--end if corresponding to --IF(NVL(p_old_party_rec.orig_system_reference,'X') LIKE 'PER%')--
3994
3995
3996 -- Debug info.
3997 /*IF g_debug
3998 THEN
3999 hz_utility_v2pub.debug ('validate_hr_security (-)');
4000 END IF;
4001 */
4002 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4003 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_hr_security (-)',
4004 p_msg_level=>fnd_log.level_procedure);
4005 END IF;
4006
4007 --disable_debug;
4008
4009 END validate_hr_security;
4010
4011
4012
4013 /**
4014 * PROCEDURE validate_group
4015 *
4016 * DESCRIPTION
4017 * Validates group record. Checks for
4018 * uniqueness
4019 * lookup types
4020 * mandatory columns
4021 * non-updateable fields
4022 * foreign key validations
4023 * other validations
4024 *
4025 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
4026 *
4027 * ARGUMENTS
4028 * IN:
4029 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
4030 * p_group_rec Group record.
4031 * p_old_group_rec Old group record.
4032 * IN/OUT:
4033 * x_return_status Return status after the call. The status can
4034 * be FND_API.G_RET_STS_SUCCESS (success),
4035 * fnd_api.g_ret_sts_error (error),
4036 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
4037 *
4038 * NOTES
4039 *
4040 * MODIFICATION HISTORY
4041 *
4042 * 07-23-2001 Indrajit Sen o Created.
4043 *
4044 */
4045
4046 PROCEDURE validate_group(
4047 p_create_update_flag IN VARCHAR2,
4048 p_group_rec IN HZ_PARTY_V2PUB.GROUP_REC_TYPE,
4049 p_old_group_rec IN HZ_PARTY_V2PUB.GROUP_REC_TYPE,
4050 x_return_status IN OUT NOCOPY VARCHAR2
4051 ) IS
4052
4053 l_debug_prefix VARCHAR2(30) := '';
4054
4055 BEGIN
4056
4057 --enable_debug;
4058
4059 -- Debug info.
4060 /*IF g_debug THEN
4061 hz_utility_v2pub.debug ('validate_group (+)');
4062 END IF;
4063 */
4064 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4065 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_group (+)',
4066 p_msg_level=>fnd_log.level_procedure);
4067 END IF;
4068
4069 ----------------------
4070 -- validate group_name
4071 ----------------------
4072
4073 -- group_name is mandatory field
4074 validate_mandatory (
4075 p_create_update_flag => p_create_update_flag,
4076 p_column => 'group_name',
4077 p_column_value => p_group_rec.group_name,
4078 x_return_status => x_return_status);
4079
4080 /*IF g_debug THEN
4081 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4082 'group_name is mandatory field. ' ||
4083 'x_return_status = ' || x_return_status, l_debug_prefix);
4084 END IF;
4085 */
4086 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4087 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'group_name is mandatory field. ' ||
4088 'x_return_status = ' || x_return_status,
4089 p_msg_level=>fnd_log.level_statement);
4090 END IF;
4091
4092 ----------------------
4093 -- validate group_type
4094 ----------------------
4095
4096 -- group_type is mandatory field
4097 validate_mandatory (
4098 p_create_update_flag => p_create_update_flag,
4099 p_column => 'group_type',
4100 p_column_value => p_group_rec.group_type,
4101 x_return_status => x_return_status);
4102
4103 /*IF g_debug THEN
4104 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4105 'group_type is mandatory field. ' ||
4106 'x_return_status = ' || x_return_status, l_debug_prefix);
4107 END IF;
4108 */
4109 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4110 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'group_type is mandatory field. ' ||
4111 'x_return_status = ' || x_return_status,
4112 p_msg_level=>fnd_log.level_statement);
4113 END IF;
4114
4115 --------------------------------------
4116 -- validate created_by_module
4117 --------------------------------------
4118
4119 validate_created_by_module(
4120 p_create_update_flag => p_create_update_flag,
4121 p_created_by_module => p_group_rec.created_by_module,
4122 p_old_created_by_module => p_old_group_rec.created_by_module,
4123 x_return_status => x_return_status);
4124
4125 --------------------------------------
4126 -- validate application_id
4127 --------------------------------------
4128
4129 validate_application_id(
4130 p_create_update_flag => p_create_update_flag,
4131 p_application_id => p_group_rec.application_id,
4132 p_old_application_id => p_old_group_rec.application_id,
4133 x_return_status => x_return_status);
4134
4135 END validate_group;
4136
4137 /**
4138 * PROCEDURE validate_organization
4139 *
4140 * DESCRIPTION
4141 * Validates organization record. Checks for
4142 * uniqueness
4143 * lookup types
4144 * mandatory columns
4145 * non-updateable fields
4146 * foreign key validations
4147 * other validations
4148 *
4149 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
4150 *
4151 * ARGUMENTS
4152 * IN:
4153 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
4154 * p_organization_rec Organization record.
4155 * p_old_organization_rec Old organization record.
4156 * IN/OUT:
4157 * x_return_status Return status after the call. The status can
4158 * be FND_API.G_RET_STS_SUCCESS (success),
4159 * fnd_api.g_ret_sts_error (error),
4160 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
4161 *
4162 * NOTES
4163 *
4164 * MODIFICATION HISTORY
4165 *
4166 * 07-23-2001 Indrajit Sen o Created.
4167 * 11-07-2001 Sisir o Bug:1999814;Added validation for sic_code_type
4168 * and fiscal_yearend_month.Updation is restricted
4169 * if the value passed is same in database.
4170 * 02-20-2002 Kate Shan o Comments out NOCOPY validation for obsolete columns
4171 * o Add non-updatable validation for content_source_type
4172 * 03-11-2002 Jianying Huang o Removed non-updatable validation for content_source_type
4173 * 02-04-2003 Sreedhar Mohan o Added validations for validate total_employees_ind,
4174 * total_emp_est_ind, total_emp_min_ind, emp_at_primary_adr_est_ind,
4175 * emp_at_primary_adr_min_ind, ceo_title, ceo_name,
4176 * principal_title and principal_name
4177 * 16-JAN-2004 Rajib Ranjan Borah o Bug 3333036.Rent_own_ind is now validated only if it
4178 * has been updated and not for each record.
4179 * 31-AUG-2004 V.Ravichandran o Bug 3853738. Commented the validation for columns
4180 * total_emp_est_ind and emp_at_primary_adr_est_ind
4181 * against lookup_type 'YES/NO' in validate_organization
4182 * because these columns were validated against 2 lookups.
4183 * 13-JAN-2005 Rajib Ranjan Borah o SSM SST Integration and Extension
4184 * Explicit non-updateability of third party provided ceo_name
4185 * , ceo_title, etc will not be done as update rules can be used
4186 * for the same.
4187 * 31-MAY-2006 Nishant Singhai o Org Name update allowed check added for Bug 5174379.
4188 */
4189
4190 PROCEDURE validate_organization(
4191 p_create_update_flag IN VARCHAR2,
4192 p_organization_rec IN HZ_PARTY_V2PUB.ORGANIZATION_REC_TYPE,
4193 p_old_organization_rec IN HZ_PARTY_V2PUB.ORGANIZATION_REC_TYPE,
4194 x_return_status IN OUT NOCOPY VARCHAR2
4195 ) IS
4196
4197 l_dummy VARCHAR2(1);
4198 l_debug_prefix VARCHAR2(30) := '';
4199 l_return_status VARCHAR2(1);
4200
4201 -- Bug 3040565 : Added a locla variable to store local_activity_code_type
4202
4203 l_local_activity_code_type varchar2(30);
4204 l_change_org_name_profile VARCHAR2(10);
4205
4206
4207 BEGIN
4208
4209 --enable_debug;
4210
4211 -- Debug info.
4212 /*IF g_debug THEN
4213 hz_utility_v2pub.debug ('validate_organization (+)');
4214 END IF;
4215 */
4216 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4217 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_organization (+)',
4218 p_msg_level=>fnd_log.level_procedure);
4219 END IF;
4220
4221
4222 -- validate nonsupported column in organization profile when creating
4223
4224 IF FND_PROFILE.VALUE( 'HZ_API_ERR_ON_OBSOLETE_COLUMN' ) = 'Y' THEN
4225 validate_org_nonsupport_column(
4226 p_create_update_flag,
4227 p_organization_rec,
4228 x_return_status );
4229
4230 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4231 RAISE FND_API.G_EXC_ERROR;
4232 END IF;
4233 END IF;
4234
4235 -------------------------------------------------------------------------
4236 -- Validate organization_name is allowed to be updated or not
4237 -- Update only if profile (HZ: Change Party Name) is set to Y or it is
4238 -- not set at all. If it is set to 'N' update is not allowed.
4239 -- Check added for Bug 5174379 on 31-May-2006 (Nishant)
4240 -------------------------------------------------------------------------
4241 IF p_create_update_flag = 'U' THEN
4242
4243 l_change_org_name_profile := fnd_profile.VALUE('AR_CHANGE_CUST_NAME');
4244 IF (NVL(l_change_org_name_profile,'Y') = 'N') THEN -- update to party name is not allowed
4245
4246 IF (p_organization_rec.organization_name <> p_old_organization_rec.organization_name) THEN
4247 fnd_message.set_name('AR', 'HZ_ORG_NAME_UPDT_NOT_ALLOWED');
4248 fnd_msg_pub.add;
4249 x_return_status := fnd_api.g_ret_sts_error;
4250 END IF;
4251
4252 END IF; -- profile = N
4253
4254 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4255 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4256 p_message=>'Org Name Update Allowed Check...' ||
4257 'x_return_status : ' || x_return_status ||
4258 '. Profile AR_CHANGE_CUST_NAME value :'||l_change_org_name_profile,
4259 p_msg_level=>fnd_log.level_statement);
4260 END IF;
4261
4262 END IF; -- create update flag = U
4263
4264 -----------------------------
4265 -- validate organization_name
4266 -----------------------------
4267
4268 -- organization_name is mandatory field
4269 validate_mandatory (
4270 p_create_update_flag => p_create_update_flag,
4271 p_column => 'organization_name',
4272 p_column_value => p_organization_rec.organization_name,
4273 x_return_status => x_return_status);
4274
4275 /*IF g_debug THEN
4276 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4277 'organization_name is mandatory field. ' ||
4278 'x_return_status = ' || x_return_status, l_debug_prefix);
4279 END IF;
4280 */
4281 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4282 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'organization_name is mandatory field. ' ||
4283 'x_return_status = ' || x_return_status,
4284 p_msg_level=>fnd_log.level_statement);
4285 END IF;
4286
4287 -- organization_name cannot be set to null during update
4288 IF p_create_update_flag = 'U' THEN
4289 validate_cannot_update_to_null (
4290 p_column => 'organization_name',
4291 p_column_value => p_organization_rec.organization_name,
4292 x_return_status => x_return_status);
4293
4294 /*IF g_debug THEN
4295 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4296 'organization_name cannot be updated to null. ' ||
4297 'x_return_status = ' || x_return_status, l_debug_prefix);
4298 END IF;
4299 */
4300 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4301 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'organization_name cannot be updated to null. ' ||
4302 'x_return_status = ' || x_return_status,
4303 p_msg_level=>fnd_log.level_statement);
4304 END IF;
4305 END IF;
4306
4307 ------------------------------
4308 -- validate gsa_indicator_flag
4309 ------------------------------
4310 /****Logical APIs - validation not required****/
4311 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
4312 -- gsa_indicator_flag is lookup code in lookup type YES/NO
4313 validate_lookup (
4314 p_column => 'gsa_indicator_flag',
4315 p_lookup_type => 'YES/NO',
4316 p_column_value => p_organization_rec.gsa_indicator_flag,
4317 x_return_status => x_return_status);
4318
4319 /*IF g_debug THEN
4320 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4321 'gsa_indicator_flag should be in lookup YES/NO. ' ||
4322 'x_return_status = ' || x_return_status, l_debug_prefix);
4323 END IF;
4324 */
4325 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4326 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'gsa_indicator_flag should be in lookup YES/NO. ' ||
4327 'x_return_status = ' || x_return_status,
4328 p_msg_level=>fnd_log.level_statement);
4329 END IF;
4330 END IF;
4331
4332 -------------------------
4333 -- validate sic_code_type
4334 -------------------------
4335
4336 -- sic_code_type is lookup code in lookup type 'SIC_CODE_TYPE'
4337 IF p_organization_rec.sic_code_type IS NOT NULL
4338 AND
4339 p_organization_rec.sic_code_type <> fnd_api.g_miss_char
4340 AND
4341 (p_create_update_flag = 'C'
4342 OR
4343 (p_create_update_flag = 'U'
4344 AND
4345 p_organization_rec.sic_code_type <> p_old_organization_rec.sic_code_type
4346 )
4347 )
4348 THEN
4349 validate_lookup (
4350 p_column => 'sic_code_type',
4351 p_lookup_type => 'SIC_CODE_TYPE',
4352 p_column_value => p_organization_rec.sic_code_type,
4353 x_return_status => x_return_status);
4354
4355 /*IF g_debug THEN
4356 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4357 'sic_code_type should be in lookup SIC_CODE_TYPE' ||
4358 'x_return_status = ' || x_return_status, l_debug_prefix);
4359 END IF;
4360 */
4361 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4362 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'sic_code_type should be in lookup SIC_CODE_TYPE' ||
4363 'x_return_status = ' || x_return_status,
4364 p_msg_level=>fnd_log.level_statement);
4365 END IF;
4366 END IF;
4367
4368 --------------------------------
4369 -- validate fiscal_yearend_month
4370 --------------------------------
4371
4372 -- fiscal_yearend_month is lookup code in lookup type 'MONTH'
4373 IF p_organization_rec.fiscal_yearend_month IS NOT NULL
4374 AND
4375 p_organization_rec.fiscal_yearend_month <> fnd_api.g_miss_char
4376 AND
4377 (p_create_update_flag = 'C'
4378 OR
4379 (p_create_update_flag = 'U'
4380 AND
4381 p_organization_rec.fiscal_yearend_month <> p_old_organization_rec.fiscal_yearend_month
4382 )
4383 )
4384 THEN
4385 validate_lookup (
4386 p_column => 'fiscal_yearend_month',
4387 p_lookup_type => 'MONTH',
4388 p_column_value => p_organization_rec.fiscal_yearend_month,
4389 x_return_status => x_return_status);
4390
4391 /*IF g_debug THEN
4392 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4393 'fiscal_yearend_month should be in lookup MONTH' ||
4394 'x_return_status = ' || x_return_status, l_debug_prefix);
4395 END IF;
4396 */
4397 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4398 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'fiscal_yearend_month should be in lookup MONTH' ||
4399 'x_return_status = ' || x_return_status,
4400 p_msg_level=>fnd_log.level_statement);
4401 END IF;
4402 END IF;
4403
4404 -------------------------
4405 -- validate internal_flag
4406 -------------------------
4407 /****Logical APIs - validation not required****/
4408 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
4409 -- internal_flag is lookup code in lookup type YES/NO
4410 validate_lookup (
4411 p_column => 'internal_flag',
4412 p_lookup_type => 'YES/NO',
4413 p_column_value => p_organization_rec.internal_flag,
4414 x_return_status => x_return_status);
4415
4416 /*IF g_debug THEN
4417 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4418 'internal_flag should be in lookup YES/NO. ' ||
4419 'x_return_status = ' || x_return_status, l_debug_prefix);
4420 END IF;
4421 */
4422 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4423 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'internal_flag should be in lookup YES/NO. ' ||
4424 'x_return_status = ' || x_return_status,
4425 p_msg_level=>fnd_log.level_statement);
4426 END IF;
4427 END IF;
4428
4429 ------------------------
4430 -- validate legal_status
4431 ------------------------
4432
4433 -- legal_status is lookup code in lookup type LEGAL_STATUS
4434 IF p_organization_rec.legal_status IS NOT NULL
4435 AND
4436 p_organization_rec.legal_status <> fnd_api.g_miss_char
4437 AND
4438 (p_create_update_flag = 'C'
4439 OR
4440 (p_create_update_flag = 'U'
4441 AND
4442 p_organization_rec.legal_status <> p_old_organization_rec.legal_status
4443 )
4444 )
4445 THEN
4446 validate_lookup (
4447 p_column => 'legal_status',
4448 p_lookup_type => 'LEGAL_STATUS',
4449 p_column_value => p_organization_rec.legal_status,
4450 x_return_status => x_return_status);
4451
4452 /*IF g_debug THEN
4453 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4454 'legal_status is lookup code in lookup type LEGAL_STATUS. ' ||
4455 'x_return_status = ' || x_return_status, l_debug_prefix);
4456 END IF;*/
4457
4458 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4459 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'legal_status is lookup code in lookup type LEGAL_STATUS. ' ||
4460 'x_return_status = ' || x_return_status,
4461 p_msg_level=>fnd_log.level_statement);
4462 END IF;
4463 END IF;
4464
4465 -------------------------
4466 -- validate hq_branch_ind
4467 -------------------------
4468
4469 -- hq_branch_ind is lookup code in lookup type HQ_BRANCH_IND
4470 IF p_organization_rec.hq_branch_ind IS NOT NULL
4471 AND
4472 p_organization_rec.hq_branch_ind <> fnd_api.g_miss_char
4473 AND
4474 (p_create_update_flag = 'C'
4475 OR
4476 (p_create_update_flag = 'U'
4477 AND
4478 p_organization_rec.hq_branch_ind <> p_old_organization_rec.hq_branch_ind
4479 )
4480 )
4481 THEN
4482 validate_lookup (
4483 p_column => 'hq_branch_ind',
4484 p_lookup_type => 'HQ_BRANCH_IND',
4485 p_column_value => p_organization_rec.hq_branch_ind,
4486 x_return_status => x_return_status);
4487
4488 /*IF g_debug THEN
4489 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4490 'hq_branch_ind is lookup code in lookup type HQ_BRANCH_IND. ' ||
4491 'x_return_status = ' || x_return_status, l_debug_prefix);
4492 END IF;
4493 */
4494 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4495 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4496 p_message=>'hq_branch_ind is lookup code in lookup type HQ_BRANCH_IND. ' ||
4497 'x_return_status = ' || x_return_status,
4498 p_msg_level=>fnd_log.level_statement);
4499 END IF;
4500 END IF;
4501
4502 -----------------------
4503 -- validate branch_flag
4504 -----------------------
4505 /****Logical APIs - validation not required****/
4506 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
4507 -- branch_flag is lookup code in lookup type YES/NO
4508 validate_lookup (
4509 p_column => 'branch_flag',
4510 p_lookup_type => 'YES/NO',
4511 p_column_value => p_organization_rec.branch_flag,
4512 x_return_status => x_return_status);
4513
4514 /*IF g_debug THEN
4515 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4516 'branch_flag should be in lookup YES/NO. ' ||
4517 'x_return_status = ' || x_return_status, l_debug_prefix);
4518 END IF;
4519 */
4520 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4521 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'branch_flag should be in lookup YES/NO. ' ||
4522 'x_return_status = ' || x_return_status,
4523 p_msg_level=>fnd_log.level_statement);
4524 END IF;
4525 END IF;
4526
4527 -------------------
4528 -- validate oob_ind
4529 -------------------
4530 /****Logical APIs - validation not required****/
4531 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
4532 -- oob_ind is lookup code in lookup type YES/NO
4533 validate_lookup (
4534 p_column => 'oob_ind',
4535 p_lookup_type => 'YES/NO',
4536 p_column_value => p_organization_rec.oob_ind,
4537 x_return_status => x_return_status);
4538
4539 /*IF g_debug THEN
4540 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4541 'oob_ind should be in lookup YES/NO. ' ||
4542 'x_return_status = ' || x_return_status, l_debug_prefix);
4543 END IF;
4544 */
4545 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4546 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'oob_ind should be in lookup YES/NO. ' ||
4547 'x_return_status = ' || x_return_status,
4548 p_msg_level=>fnd_log.level_statement);
4549 END IF;
4550 END IF;
4551
4552 ----------------------
4553 -- validate import_ind
4554 ----------------------
4555 /****Logical APIs - validation not required****/
4556 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
4557 -- import_ind is lookup code in lookup type YES/NO
4558 validate_lookup (
4559 p_column => 'import_ind',
4560 p_lookup_type => 'YES/NO',
4561 p_column_value => p_organization_rec.import_ind,
4562 x_return_status => x_return_status);
4563
4564 /*IF g_debug THEN
4565 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4566 'import_ind should be in lookup YES/NO. ' ||
4567 'x_return_status = ' || x_return_status, l_debug_prefix);
4568 END IF;
4569 */
4570 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4571 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'import_ind should be in lookup YES/NO. ' ||
4572 'x_return_status = ' || x_return_status,
4573 p_msg_level=>fnd_log.level_statement);
4574 END IF;
4575 END IF;
4576
4577 ----------------------
4578 -- validate export_ind
4579 ----------------------
4580 /****Logical APIs - validation not required****/
4581 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
4582 -- export_ind is lookup code in lookup type YES/NO
4583 validate_lookup (
4584 p_column => 'export_ind',
4585 p_lookup_type => 'YES/NO',
4586 p_column_value => p_organization_rec.export_ind,
4587 x_return_status => x_return_status);
4588
4589 /*IF g_debug THEN
4590 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4591 'export_ind should be in lookup YES/NO. ' ||
4592 'x_return_status = ' || x_return_status, l_debug_prefix);
4593 END IF;
4594 */
4595 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4596 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'export_ind should be in lookup YES/NO. ' ||
4597 'x_return_status = ' || x_return_status,
4598 p_msg_level=>fnd_log.level_statement);
4599 END IF;
4600 END IF;
4601
4602 -----------------------------
4603 -- validate labor_surplus_ind
4604 -----------------------------
4605 /****Logical APIs - validation not required****/
4606 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
4607 -- labor_surplus_ind is lookup code in lookup type YES/NO
4608 validate_lookup (
4609 p_column => 'labor_surplus_ind',
4610 p_lookup_type => 'YES/NO',
4611 p_column_value => p_organization_rec.labor_surplus_ind,
4612 x_return_status => x_return_status);
4613
4614 /*IF g_debug THEN
4615 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4616 'labor_surplus_ind should be in lookup YES/NO. ' ||
4617 'x_return_status = ' || x_return_status, l_debug_prefix);
4618 END IF;
4619 */
4620 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4621 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'labor_surplus_ind should be in lookup YES/NO. ' ||
4622 'x_return_status = ' || x_return_status,
4623 p_msg_level=>fnd_log.level_statement);
4624 END IF;
4625 END IF;
4626
4627 /* obsolete column. colum migrate to hz_credit_ratings.
4628 Validate in HZ_PARTY_INFO_VAL.validate_credit_ratings
4629
4630 -------------------------
4631 -- validate debarment_ind
4632 -------------------------
4633
4634 -- debarment_ind is lookup code in lookup type YES/NO
4635 validate_lookup (
4636 p_column => 'debarment_ind',
4637 p_lookup_type => 'YES/NO',
4638 p_column_value => p_organization_rec.debarment_ind,
4639 x_return_status => x_return_status);
4640
4641 IF g_debug THEN
4642 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4643 'debarment_ind should be in lookup YES/NO. ' ||
4644 'x_return_status = ' || x_return_status, l_debug_prefix);
4645 END IF;
4646 */
4647
4648 ------------------------------
4649 -- validate minority_owned_ind
4650 ------------------------------
4651 /****Logical APIs - validation not required****/
4652 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
4653 -- minority_owned_ind is lookup code in lookup type YES/NO
4654 validate_lookup (
4655 p_column => 'minority_owned_ind',
4656 p_lookup_type => 'YES/NO',
4657 p_column_value => p_organization_rec.minority_owned_ind,
4658 x_return_status => x_return_status);
4659
4660 /*IF g_debug THEN
4661 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4662 'minority_owned_ind should be in lookup YES/NO. ' ||
4663 'x_return_status = ' || x_return_status, l_debug_prefix);
4664 END IF;
4665 */
4666 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4667 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'minority_owned_ind should be in lookup YES/NO. ' ||
4668 'x_return_status = ' || x_return_status,
4669 p_msg_level=>fnd_log.level_statement);
4670 END IF;
4671 END IF;
4672
4673 ---------------------------
4674 -- validate woman_owned_ind
4675 ---------------------------
4676 /****Logical APIs - validation not required****/
4677 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
4678 -- woman_owned_ind is lookup code in lookup type YES/NO
4679 validate_lookup (
4680 p_column => 'woman_owned_ind',
4681 p_lookup_type => 'YES/NO',
4682 p_column_value => p_organization_rec.woman_owned_ind,
4683 x_return_status => x_return_status);
4684
4685 /*IF g_debug THEN
4686 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4687 'minority_owned_ind should be in lookup YES/NO. ' ||
4688 'x_return_status = ' || x_return_status, l_debug_prefix);
4689 END IF;
4690 */
4691 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4692 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'minority_owned_ind should be in lookup YES/NO. ' ||
4693 'x_return_status = ' || x_return_status,
4694 p_msg_level=>fnd_log.level_statement);
4695 END IF;
4696 END IF;
4697
4698 -------------------------
4699 -- validate disadv_8a_ind
4700 -------------------------
4701 /****Logical APIs - validation not required****/
4702 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
4703 -- disadv_8a_ind is lookup code in lookup type YES/NO
4704 validate_lookup (
4705 p_column => 'disadv_8a_ind',
4706 p_lookup_type => 'YES/NO',
4707 p_column_value => p_organization_rec.disadv_8a_ind,
4708 x_return_status => x_return_status);
4709
4710 /*IF g_debug THEN
4711 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4712 'disadv_8a_ind should be in lookup YES/NO. ' ||
4713 'x_return_status = ' || x_return_status, l_debug_prefix);
4714 END IF;
4715 */
4716 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4717 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'disadv_8a_ind should be in lookup YES/NO. ' ||
4718 'x_return_status = ' || x_return_status,
4719 p_msg_level=>fnd_log.level_statement);
4720 END IF;
4721 END IF;
4722
4723 -------------------------
4724 -- validate small_bus_ind
4725 -------------------------
4726 /****Logical APIs - validation not required****/
4727 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
4728 -- small_bus_ind is lookup code in lookup type YES/NO
4729 validate_lookup (
4730 p_column => 'small_bus_ind',
4731 p_lookup_type => 'YES/NO',
4732 p_column_value => p_organization_rec.small_bus_ind,
4733 x_return_status => x_return_status);
4734
4735 /*IF g_debug THEN
4736 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4737 'small_bus_ind should be in lookup YES/NO. ' ||
4738 'x_return_status = ' || x_return_status, l_debug_prefix);
4739 END IF;
4740 */
4741 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4742 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'small_bus_ind should be in lookup YES/NO. ' ||
4743 'x_return_status = ' || x_return_status,
4744 p_msg_level=>fnd_log.level_statement);
4745 END IF;
4746 END IF;
4747
4748 /* obsolete column. Column migrate to hz_credit_ratings.
4749 Validate in HZ_PARTY_INFO_VAL.validate_credit_ratings
4750
4751 ------------------------------------
4752 -- validate failure_score_commentary
4753 ------------------------------------
4754
4755 -- failure_score_commentary is lookup code in lookup type FAILURE_SCORE_COMMENTARY
4756 IF p_organization_rec.failure_score_commentary IS NOT NULL
4757 AND
4758 p_organization_rec.failure_score_commentary <> fnd_api.g_miss_char
4759 AND
4760 (p_create_update_flag = 'C'
4761 OR
4762 (p_create_update_flag = 'U'
4763 AND
4764 p_organization_rec.failure_score_commentary <> p_old_organization_rec.failure_score_commentary
4765 )
4766 )
4767 THEN
4768 validate_lookup (
4769 p_column => 'failure_score_commentary',
4770 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
4771 p_column_value => p_organization_rec.failure_score_commentary,
4772 x_return_status => x_return_status);
4773
4774
4775 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4776 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4777 p_message=>'failure_score_commentary is lookup code in lookup type FAILURE_SCORE_COMMENTARY. ' ||
4778 'x_return_status = ' || x_return_status,
4779 p_msg_level=>fnd_log.level_statement);
4780 END IF;
4781 END IF;
4782
4783 -- obsolete column. Column migrate to hz_credit_ratings.
4784 -- Validate in HZ_PARTY_INFO_VAL.validate_credit_ratings
4785
4786 -----------------------------------
4787 -- validate credit_score_commentary
4788 -----------------------------------
4789
4790 -- credit_score_commentary is lookup code in lookup type CREDIT_SCORE_COMMENTARY
4791 IF p_organization_rec.credit_score_commentary IS NOT NULL
4792 AND
4793 p_organization_rec.credit_score_commentary <> fnd_api.g_miss_char
4794 AND
4795 (p_create_update_flag = 'C'
4796 OR
4797 (p_create_update_flag = 'U'
4798 AND
4799 p_organization_rec.credit_score_commentary <> p_old_organization_rec.credit_score_commentary
4800 )
4801 )
4802 THEN
4803 validate_lookup (
4804 p_column => 'credit_score_commentary',
4805 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
4806 p_column_value => p_organization_rec.credit_score_commentary,
4807 x_return_status => x_return_status);
4808
4809 IF g_debug THEN
4810 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4811 'credit_score_commentary is lookup code in lookup type CREDIT_SCORE_COMMENTARY. ' ||
4812 'x_return_status = ' || x_return_status, l_debug_prefix);
4813 END IF;
4814
4815 END IF;
4816 */
4817
4818 -------------------------------
4819 -- validate local_bus_iden_type
4820 -------------------------------
4821
4822 -- local_bus_iden_type is lookup code in lookup type LOCAL_BUS_IDEN_TYPE
4823 IF p_organization_rec.local_bus_iden_type IS NOT NULL
4824 AND
4825 p_organization_rec.local_bus_iden_type <> fnd_api.g_miss_char
4826 AND
4827 (p_create_update_flag = 'C'
4828 OR
4829 (p_create_update_flag = 'U'
4830 AND
4831 p_organization_rec.local_bus_iden_type <> p_old_organization_rec.local_bus_iden_type
4832 )
4833 )
4834 THEN
4835 validate_lookup (
4836 p_column => 'local_bus_iden_type',
4837 p_lookup_type => 'LOCAL_BUS_IDEN_TYPE',
4838 p_column_value => p_organization_rec.local_bus_iden_type,
4839 x_return_status => x_return_status);
4840
4841 /*IF g_debug THEN
4842 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4843 'local_bus_iden_type is lookup code in lookup type LOCAL_BUS_IDEN_TYPE. ' ||
4844 'x_return_status = ' || x_return_status, l_debug_prefix);
4845 END IF;
4846 */
4847 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4848 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'local_bus_iden_type is lookup code in lookup type LOCAL_BUS_IDEN_TYPE. ' ||
4849 'x_return_status = ' || x_return_status,
4850 p_msg_level=>fnd_log.level_statement);
4851 END IF;
4852
4853 END IF;
4854
4855 -----------------------------
4856 -- validate registration_type
4857 -----------------------------
4858
4859 -- registration_type is lookup code in lookup type REGISTRATION_TYPE
4860 IF p_organization_rec.registration_type IS NOT NULL
4861 AND
4862 p_organization_rec.registration_type <> fnd_api.g_miss_char
4863 AND
4864 (p_create_update_flag = 'C'
4865 OR
4866 (p_create_update_flag = 'U'
4867 AND
4868 p_organization_rec.registration_type <> p_old_organization_rec.registration_type
4869 )
4870 )
4871 THEN
4872 validate_lookup (
4873 p_column => 'registration_type',
4874 p_lookup_type => 'REGISTRATION_TYPE',
4875 p_column_value => p_organization_rec.registration_type,
4876 x_return_status => x_return_status);
4877
4878 /*IF g_debug THEN
4879 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4880 'registration_type is lookup code in lookup type REGISTRATION_TYPE. ' ||
4881 'x_return_status = ' || x_return_status, l_debug_prefix);
4882 END IF;
4883 */
4884 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4885 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4886 p_message=>'registration_type is lookup code in lookup type REGISTRATION_TYPE. ' ||
4887 'x_return_status = ' || x_return_status,
4888 p_msg_level=>fnd_log.level_statement);
4889 END IF;
4890 END IF;
4891
4892 -- Bug 3853738
4893 /*
4894 -----------------------------
4895 -- validate total_emp_est_ind
4896 -----------------------------
4897
4898 -- total_emp_est_ind is lookup code in lookup type YES/NO
4899 validate_lookup (
4900 p_column => 'total_emp_est_ind',
4901 p_lookup_type => 'YES/NO',
4902 p_column_value => p_organization_rec.total_emp_est_ind,
4903 x_return_status => x_return_status);
4904
4905 /*IF g_debug THEN
4906 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4907 'total_emp_est_ind should be in lookup YES/NO. ' ||
4908 'x_return_status = ' || x_return_status, l_debug_prefix);
4909 END IF;
4910 */
4911 /*
4912 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4913 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'total_emp_est_ind should be in lookup YES/NO. ' ||
4914 'x_return_status = ' || x_return_status,
4915 p_msg_level=>fnd_log.level_statement);
4916 END IF;
4917 */
4918 --------------------------
4919 -- validate parent_sub_ind
4920 --------------------------
4921 /****Logical APIs - validation not required****/
4922 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
4923 -- parent_sub_ind is lookup code in lookup type YES/NO
4924 validate_lookup (
4925 p_column => 'parent_sub_ind',
4926 p_lookup_type => 'YES/NO',
4927 p_column_value => p_organization_rec.parent_sub_ind,
4928 x_return_status => x_return_status);
4929
4930 /*IF g_debug THEN
4931 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4932 'parent_sub_ind should be in lookup YES/NO. ' ||
4933 'x_return_status = ' || x_return_status, l_debug_prefix);
4934 END IF;
4935 */
4936 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4937 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'parent_sub_ind should be in lookup YES/NO. ' ||
4938 'x_return_status = ' || x_return_status,
4939 p_msg_level=>fnd_log.level_statement);
4940 END IF;
4941 END IF;
4942
4943 ------------------------------------
4944 -- validate local_activity_code_type
4945 ------------------------------------
4946
4947 -- local_activity_code_type is lookup code in lookup type LOCAL_ACTIVITY_CODE_TYPE
4948 IF p_organization_rec.local_activity_code_type IS NOT NULL
4949 AND
4950 p_organization_rec.local_activity_code_type <> fnd_api.g_miss_char
4951 AND
4952 (p_create_update_flag = 'C'
4953 OR
4954 (p_create_update_flag = 'U'
4955 AND
4956 p_organization_rec.local_activity_code_type <> p_old_organization_rec.local_activity_code_type
4957 )
4958 )
4959 THEN
4960 validate_lookup (
4961 p_column => 'local_activity_code_type',
4962 p_lookup_type => 'LOCAL_ACTIVITY_CODE_TYPE',
4963 p_column_value => p_organization_rec.local_activity_code_type,
4964 x_return_status => x_return_status);
4965
4966 /*IF g_debug THEN
4967 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4968 'local_activity_code_type is lookup code in lookup type LOCAL_ACTIVITY_CODE_TYPE. ' ||
4969 'x_return_status = ' || x_return_status, l_debug_prefix);
4970 END IF;
4971 */
4972 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4973 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
4974 p_message=>'local_activity_code_type is lookup code in lookup type LOCAL_ACTIVITY_CODE_TYPE. ' ||
4975 'x_return_status = ' || x_return_status,
4976 p_msg_level=>fnd_log.level_statement);
4977 END IF;
4978 END IF;
4979
4980 -- Bug 3040565 : Added validation for local_activity_code
4981
4982 ------------------------------------
4983 -- validate local_activity_code
4984 ------------------------------------
4985
4986 -- local_activity_code is lookup code in one of the lookup type NACE, NAF, NAISC_1997
4987
4988 IF p_organization_rec.local_activity_code IS NOT NULL
4989 AND
4990 p_organization_rec.local_activity_code <> fnd_api.g_miss_char
4991 AND
4992 (p_create_update_flag = 'C'
4993 OR
4994 (p_create_update_flag = 'U'
4995 AND
4996 p_organization_rec.local_activity_code <> p_old_organization_rec.local_activity_code
4997 )
4998 )
4999 THEN
5000
5001 l_local_activity_code_type := nvl(p_organization_rec.local_activity_code_type, p_old_organization_rec.local_activity_code_type);
5002
5003 if(l_local_activity_code_type = '4' OR l_local_activity_code_type = '5') then
5004 l_local_activity_code_type := 'NACE';
5005 end if;
5006
5007 validate_fnd_lookup(
5008 p_lookup_type => l_local_activity_code_type,
5009 p_column => 'local_activity_code',
5010 p_column_value => p_organization_rec.local_activity_code,
5011 p_content_source_type => 'DNB',
5012 x_return_status => x_return_status);
5013
5014
5015 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5016 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5017 p_message=>'local_activity_code is lookup code in lookup type ' || p_organization_rec.local_activity_code_type || '.' ||
5018 'x_return_status = ' || x_return_status,
5019 p_msg_level=>fnd_log.level_statement);
5020 END IF;
5021 END IF;
5022
5023
5024
5025 ------------------------------------
5026 -- validate public_private_ownership_flag
5027 ------------------------------------
5028 /****Logical APIs - validation not required****/
5029 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
5030 -- public_private_ownership_flag is lookup code in lookup type YES/NO
5031 validate_lookup (
5032 p_column => 'public_private_ownership_flag',
5033 p_lookup_type => 'YES/NO',
5034 p_column_value => p_organization_rec.public_private_ownership_flag,
5035 x_return_status => x_return_status);
5036
5037 /*IF g_debug THEN
5038 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5039 'public_private_ownership_flag should be in lookup YES/NO. ' ||
5040 'x_return_status = ' || x_return_status, l_debug_prefix);
5041 END IF;
5042 */
5043 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5044 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5045 p_message=>'public_private_ownership_flag should be in lookup YES/NO. ' ||
5046 'x_return_status = ' || x_return_status,
5047 p_msg_level=>fnd_log.level_statement);
5048 END IF;
5049 END IF;
5050
5051 -- Bug 3853738
5052 /*
5053 ------------------------------------
5054 -- validate emp_at_primary_adr_est_ind
5055 ------------------------------------
5056
5057 -- emp_at_primary_adr_est_ind is lookup code in lookup type YES/NO
5058 validate_lookup (
5059 p_column => 'emp_at_primary_adr_est_ind',
5060 p_lookup_type => 'YES/NO',
5061 p_column_value => p_organization_rec.emp_at_primary_adr_est_ind,
5062 x_return_status => x_return_status);
5063
5064 /*IF g_debug THEN
5065 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5066 'emp_at_primary_adr_est_ind should be in lookup YES/NO. ' ||
5067 'x_return_status = ' || x_return_status, l_debug_prefix);
5068 END IF;
5069 */
5070 /*
5071 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5072 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5073 p_message=>'emp_at_primary_adr_est_ind should be in lookup YES/NO. ' ||
5074 'x_return_status = ' || x_return_status,
5075 p_msg_level=>fnd_log.level_statement);
5076 END IF;
5077 */
5078 /**
5079 * Bug 2197181: content_source_type is obsolete.
5080
5081 -------------------------------
5082 -- validate content_source_type
5083 -------------------------------
5084
5085 -- do not need to check content_source_type is mandatory because
5086 -- we default content_source_type to hz_party_v2pub.g_miss_content_source_type
5087 -- in table handler.
5088
5089 -- since we are selecting person_profile_id from hz_organization_profiles
5090 -- for record having content_source_type of p_organization_rec.content_source_type,
5091 -- in this case, we do not need to check for non-updatability of content_source_type.
5092
5093 -- content_source_type is lookup code in lookup type CONTENT_SOURCE_TYPE
5094 validate_lookup (
5095 p_column => 'content_source_type',
5096 p_lookup_type => 'CONTENT_SOURCE_TYPE',
5097 p_column_value => p_organization_rec.content_source_type,
5098 x_return_status => x_return_status);
5099
5100 IF g_debug THEN
5101 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5102 'content_source_type is lookup code in lookup type CONTENT_SOURCE_TYPE. ' ||
5103 'x_return_status = ' || x_return_status, l_debug_prefix);
5104 END IF;
5105 **/
5106
5107 /* obsolete column. Column migrate to hz_credit_ratings.
5108 Validate in HZ_PARTY_INFO_VAL.validate_credit_ratings
5109
5110 ------------------------------------
5111 -- validate credit_score_commentary2
5112 ------------------------------------
5113
5114 -- credit_score_commentary2 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
5115 validate_lookup (
5116 p_column => 'credit_score_commentary2',
5117 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
5118 p_column_value => p_organization_rec.credit_score_commentary2,
5119 x_return_status => x_return_status);
5120
5121 IF g_debug THEN
5122 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5123 'credit_score_commentary2 is lookup code in lookup type CREDIT_SCORE_COMMENTARY. ' ||
5124 'x_return_status = ' || x_return_status, l_debug_prefix);
5125 END IF;
5126
5127 ------------------------------------
5128 -- validate credit_score_commentary3
5129 ------------------------------------
5130
5131 -- credit_score_commentary3 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
5132 validate_lookup (
5133 p_column => 'credit_score_commentary3',
5134 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
5135 p_column_value => p_organization_rec.credit_score_commentary3,
5136 x_return_status => x_return_status);
5137
5138 IF g_debug THEN
5139 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5140 'credit_score_commentary3 is lookup code in lookup type CREDIT_SCORE_COMMENTARY. ' ||
5141 'x_return_status = ' || x_return_status, l_debug_prefix);
5142 END IF;
5143
5144 ------------------------------------
5145 -- validate credit_score_commentary4
5146 ------------------------------------
5147
5148 -- credit_score_commentary4 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
5149 validate_lookup (
5150 p_column => 'credit_score_commentary4',
5151 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
5152 p_column_value => p_organization_rec.credit_score_commentary4,
5153 x_return_status => x_return_status);
5154
5155 IF g_debug THEN
5156 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5157 'credit_score_commentary4 is lookup code in lookup type CREDIT_SCORE_COMMENTARY. ' ||
5158 'x_return_status = ' || x_return_status, l_debug_prefix);
5159 END IF;
5160
5161 ------------------------------------
5162 -- validate credit_score_commentary5
5163 ------------------------------------
5164
5165 -- credit_score_commentary5 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
5166 validate_lookup (
5167 p_column => 'credit_score_commentary5',
5168 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
5169 p_column_value => p_organization_rec.credit_score_commentary5,
5170 x_return_status => x_return_status);
5171
5172 IF g_debug THEN
5173 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5174 'credit_score_commentary5 is lookup code in lookup type CREDIT_SCORE_COMMENTARY. ' ||
5175 'x_return_status = ' || x_return_status, l_debug_prefix);
5176 END IF;
5177
5178 ------------------------------------
5179 -- validate credit_score_commentary6
5180 ------------------------------------
5181
5182 -- credit_score_commentary6 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
5183 validate_lookup (
5184 p_column => 'credit_score_commentary6',
5185 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
5186 p_column_value => p_organization_rec.credit_score_commentary6,
5187 x_return_status => x_return_status);
5188
5189 IF g_debug THEN
5190 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5191 'credit_score_commentary6 is lookup code in lookup type CREDIT_SCORE_COMMENTARY. ' ||
5192 'x_return_status = ' || x_return_status, l_debug_prefix);
5193 END IF;
5194
5195 ------------------------------------
5196 -- validate credit_score_commentary7
5197 ------------------------------------
5198
5199 -- credit_score_commentary7 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
5200 validate_lookup (
5201 p_column => 'credit_score_commentary7',
5202 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
5203 p_column_value => p_organization_rec.credit_score_commentary7,
5204 x_return_status => x_return_status);
5205
5206 IF g_debug THEN
5207 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5208 'credit_score_commentary7 is lookup code in lookup type CREDIT_SCORE_COMMENTARY. ' ||
5209 'x_return_status = ' || x_return_status, l_debug_prefix);
5210 END IF;
5211
5212 ------------------------------------
5213 -- validate credit_score_commentary8
5214 ------------------------------------
5215
5216 -- credit_score_commentary8 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
5217 validate_lookup (
5218 p_column => 'credit_score_commentary8',
5219 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
5220 p_column_value => p_organization_rec.credit_score_commentary8,
5221 x_return_status => x_return_status);
5222
5223 IF g_debug THEN
5224 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5225 'credit_score_commentary8 is lookup code in lookup type CREDIT_SCORE_COMMENTARY. ' ||
5226 'x_return_status = ' || x_return_status, l_debug_prefix);
5227 END IF;
5228
5229 ------------------------------------
5230 -- validate credit_score_commentary9
5231 ------------------------------------
5232
5233 -- credit_score_commentary9 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
5234 validate_lookup (
5235 p_column => 'credit_score_commentary9',
5236 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
5237 p_column_value => p_organization_rec.credit_score_commentary9,
5238 x_return_status => x_return_status);
5239
5240 IF g_debug THEN
5241 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5242 'credit_score_commentary9 is lookup code in lookup type CREDIT_SCORE_COMMENTARY. ' ||
5243 'x_return_status = ' || x_return_status, l_debug_prefix);
5244 END IF;
5245
5246 -------------------------------------
5247 -- validate credit_score_commentary10
5248 -------------------------------------
5249
5250 -- credit_score_commentary10 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
5251 validate_lookup (
5252 p_column => 'credit_score_commentary10',
5253 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
5254 p_column_value => p_organization_rec.credit_score_commentary10,
5255 x_return_status => x_return_status);
5256
5257 IF g_debug THEN
5258 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5259 'credit_score_commentary10 is lookup code in lookup type CREDIT_SCORE_COMMENTARY. ' ||
5260 'x_return_status = ' || x_return_status, l_debug_prefix);
5261 END IF;
5262
5263
5264 -------------------------------------
5265 -- validate failure_score_commentary2
5266 -------------------------------------
5267
5268 -- failure_score_commentary2 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
5269 validate_lookup (
5270 p_column => 'failure_score_commentary2',
5271 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
5272 p_column_value => p_organization_rec.failure_score_commentary2,
5273 x_return_status => x_return_status);
5274
5275 IF g_debug THEN
5276 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5277 'failure_score_commentary2 is lookup code in lookup type FAILURE_SCORE_COMMENTARY. ' ||
5278 'x_return_status = ' || x_return_status, l_debug_prefix);
5279 END IF;
5280
5281 -------------------------------------
5282 -- validate failure_score_commentary3
5283 -------------------------------------
5284
5285 -- failure_score_commentary3 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
5286 validate_lookup (
5287 p_column => 'failure_score_commentary3',
5288 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
5289 p_column_value => p_organization_rec.failure_score_commentary3,
5290 x_return_status => x_return_status);
5291
5292 IF g_debug THEN
5293 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5294 'failure_score_commentary3 is lookup code in lookup type FAILURE_SCORE_COMMENTARY. ' ||
5295 'x_return_status = ' || x_return_status, l_debug_prefix);
5296 END IF;
5297
5298 -------------------------------------
5299 -- validate failure_score_commentary4
5300 -------------------------------------
5301
5302 -- failure_score_commentary4 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
5303 validate_lookup (
5304 p_column => 'failure_score_commentary4',
5305 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
5306 p_column_value => p_organization_rec.failure_score_commentary4,
5307 x_return_status => x_return_status);
5308
5309 IF g_debug THEN
5310 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5311 'failure_score_commentary4 is lookup code in lookup type FAILURE_SCORE_COMMENTARY. ' ||
5312 'x_return_status = ' || x_return_status, l_debug_prefix);
5313 END IF;
5314
5315 -------------------------------------
5316 -- validate failure_score_commentary5
5317 -------------------------------------
5318
5319 -- failure_score_commentary5 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
5320 validate_lookup (
5321 p_column => 'failure_score_commentary5',
5322 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
5323 p_column_value => p_organization_rec.failure_score_commentary5,
5324 x_return_status => x_return_status);
5325
5326 IF g_debug THEN
5327 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5328 'failure_score_commentary5 is lookup code in lookup type FAILURE_SCORE_COMMENTARY. ' ||
5329 'x_return_status = ' || x_return_status, l_debug_prefix);
5330 END IF;
5331
5332 -------------------------------------
5333 -- validate failure_score_commentary6
5334 -------------------------------------
5335
5336 -- failure_score_commentary6 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
5337 validate_lookup (
5338 p_column => 'failure_score_commentary6',
5339 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
5340 p_column_value => p_organization_rec.failure_score_commentary6,
5341 x_return_status => x_return_status);
5342
5343 IF g_debug THEN
5344 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5345 'failure_score_commentary6 is lookup code in lookup type FAILURE_SCORE_COMMENTARY. ' ||
5346 'x_return_status = ' || x_return_status, l_debug_prefix);
5347 END IF;
5348
5349 -------------------------------------
5350 -- validate failure_score_commentary7
5351 -------------------------------------
5352
5353 -- failure_score_commentary7 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
5354 validate_lookup (
5355 p_column => 'failure_score_commentary7',
5356 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
5357 p_column_value => p_organization_rec.failure_score_commentary7,
5358 x_return_status => x_return_status);
5359
5360 IF g_debug THEN
5361 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5362 'failure_score_commentary7 is lookup code in lookup type FAILURE_SCORE_COMMENTARY. ' ||
5363 'x_return_status = ' || x_return_status, l_debug_prefix);
5364 END IF;
5365
5366 -------------------------------------
5367 -- validate failure_score_commentary8
5368 -------------------------------------
5369
5370 -- failure_score_commentary8 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
5371 validate_lookup (
5372 p_column => 'failure_score_commentary8',
5373 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
5374 p_column_value => p_organization_rec.failure_score_commentary8,
5375 x_return_status => x_return_status);
5376
5377 IF g_debug THEN
5378 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5379 'failure_score_commentary8 is lookup code in lookup type FAILURE_SCORE_COMMENTARY. ' ||
5380 'x_return_status = ' || x_return_status, l_debug_prefix);
5381 END IF;
5382
5383 -------------------------------------
5384 -- validate failure_score_commentary9
5385 -------------------------------------
5386
5387 -- failure_score_commentary9 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
5388 validate_lookup (
5389 p_column => 'failure_score_commentary9',
5390 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
5391 p_column_value => p_organization_rec.failure_score_commentary9,
5392 x_return_status => x_return_status);
5393
5394 IF g_debug THEN
5395 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5396 'failure_score_commentary9 is lookup code in lookup type FAILURE_SCORE_COMMENTARY. ' ||
5397 'x_return_status = ' || x_return_status, l_debug_prefix);
5398 END IF;
5399
5400 --------------------------------------
5401 -- validate failure_score_commentary10
5402 --------------------------------------
5403
5404 -- failure_score_commentary10 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
5405 validate_lookup (
5406 p_column => 'failure_score_commentary10',
5407 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
5408 p_column_value => p_organization_rec.failure_score_commentary10,
5409 x_return_status => x_return_status);
5410
5411 IF g_debug THEN
5412 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5413 'failure_score_commentary10 is lookup code in lookup type FAILURE_SCORE_COMMENTARY. ' ||
5414 'x_return_status = ' || x_return_status, l_debug_prefix);
5415 END IF;
5416
5417 -- Obsolete column. Column migrate to hz_credit_rating.
5418 -- Validate in HZ_PARTY_INFO_VAL.validate_credit_ratings
5419
5420 ----------------------------------------
5421 -- validate maximum_credit_currency_code
5422 ----------------------------------------
5423
5424 -- maximum_credit_currency_code is foreign key of fnd_currencies.currency_code
5425 IF p_organization_rec.maximum_credit_currency_code IS NOT NULL
5426 AND
5427 p_organization_rec.maximum_credit_currency_code <> fnd_api.g_miss_char
5428 THEN
5429 BEGIN
5430 SELECT 'Y'
5431 INTO l_dummy
5432 FROM FND_CURRENCIES
5433 WHERE CURRENCY_CODE = p_organization_rec.maximum_credit_currency_code
5434 AND CURRENCY_FLAG = 'Y'
5435 AND ENABLED_FLAG in ('Y', 'N');
5436 EXCEPTION
5437 WHEN NO_DATA_FOUND THEN
5438 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
5439 fnd_message.set_token('FK', 'maximum_credit_currency_code');
5440 fnd_message.set_token('COLUMN', 'currency_code');
5441 fnd_message.set_token('TABLE', 'fnd_currencies');
5442 fnd_msg_pub.add;
5443 x_return_status := fnd_api.g_ret_sts_error;
5444 END;
5445
5446 IF g_debug THEN
5447 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5448 'maximum_credit_currency_code is foreign key of fnd_currencies.currency_code. ' ||
5449 'x_return_status = ' || x_return_status, l_debug_prefix);
5450 END IF;
5451
5452 END IF;
5453 */
5454
5455 -------------------------------
5456 -- validate total_employees_ind
5457 -------------------------------
5458
5459 -- total_employees_ind is lookup code in lookup type TOTAL_EMPLOYEES_INDICATOR
5460 validate_lookup (
5461 p_column => 'total_employees_ind',
5462 p_lookup_type => 'TOTAL_EMPLOYEES_INDICATOR',
5463 p_column_value => p_organization_rec.total_employees_ind,
5464 x_return_status => x_return_status);
5465
5466 /*IF g_debug THEN
5467 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5468 'total_employees_ind is lookup code in lookup type TOTAL_EMPLOYEES_INDICATOR. ' ||
5469 'x_return_status = ' || x_return_status, l_debug_prefix);
5470 END IF;
5471 */
5472 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5473 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'total_employees_ind is lookup code in lookup type TOTAL_EMPLOYEES_INDICATOR. ' ||
5474 'x_return_status = ' || x_return_status,
5475 p_msg_level=>fnd_log.level_statement);
5476 END IF;
5477
5478 -----------------------------
5479 -- validate total_emp_est_ind
5480 -----------------------------
5481
5482 -- total_emp_est_ind is lookup code in lookup type TOTAL_EMP_EST_IND
5483 validate_lookup (
5484 p_column => 'total_emp_est_ind',
5485 p_lookup_type => 'TOTAL_EMP_EST_IND',
5486 p_column_value => p_organization_rec.total_emp_est_ind,
5487 x_return_status => x_return_status);
5488
5489 /*IF g_debug THEN
5490 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5491 'total_emp_est_ind is lookup code in lookup type TOTAL_EMP_EST_IND. ' ||
5492 'x_return_status = ' || x_return_status, l_debug_prefix);
5493 END IF;
5494 */
5495 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5496 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5497 p_message=>'total_emp_est_ind is lookup code in lookup type TOTAL_EMP_EST_IND. ' ||
5498 'x_return_status = ' || x_return_status,
5499 p_msg_level=>fnd_log.level_statement);
5500 END IF;
5501
5502 -----------------------------
5503 -- validate total_emp_min_ind
5504 -----------------------------
5505
5506 -- total_emp_min_ind is lookup code in lookup type TOTAL_EMP_MIN_IND
5507 validate_lookup (
5508 p_column => 'total_emp_min_ind',
5509 p_lookup_type => 'TOTAL_EMP_MIN_IND',
5510 p_column_value => p_organization_rec.total_emp_min_ind,
5511 x_return_status => x_return_status);
5512
5513 /*IF g_debug THEN
5514 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5515 'total_emp_min_ind is lookup code in lookup type TOTAL_EMP_MIN_IND. ' ||
5516 'x_return_status = ' || x_return_status, l_debug_prefix);
5517 END IF;
5518 */
5519 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5520 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5521 p_message=>'total_emp_min_ind is lookup code in lookup type TOTAL_EMP_MIN_IND. ' ||
5522 'x_return_status = ' || x_return_status,
5523 p_msg_level=>fnd_log.level_statement);
5524 END IF;
5525
5526 --------------------------------------
5527 -- validate emp_at_primary_adr_est_ind
5528 --------------------------------------
5529
5530 -- emp_at_primary_adr_est_ind is lookup code in lookup type EMP_AT_PRIMARY_ADR_EST_IND
5531 validate_lookup (
5532 p_column => 'emp_at_primary_adr_est_ind',
5533 p_lookup_type => 'EMP_AT_PRIMARY_ADR_EST_IND',
5534 p_column_value => p_organization_rec.emp_at_primary_adr_est_ind,
5535 x_return_status => x_return_status);
5536
5537 /*IF g_debug THEN
5538 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5539 'emp_at_primary_adr_est_ind is lookup code in lookup type EMP_AT_PRIMARY_ADR_EST_IND. ' ||
5540 'x_return_status = ' || x_return_status, l_debug_prefix);
5541 END IF;
5542 */
5543 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5544 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'emp_at_primary_adr_est_ind is lookup code in lookup type EMP_AT_PRIMARY_ADR_EST_IND. ' ||
5545 'x_return_status = ' || x_return_status,
5546 p_msg_level=>fnd_log.level_statement);
5547 END IF;
5548
5549 --------------------------------------
5550 -- validate emp_at_primary_adr_min_ind
5551 --------------------------------------
5552
5553 -- emp_at_primary_adr_min_ind is lookup code in lookup type EMP_AT_PRIMARY_ADR_MIN_IND
5554 validate_lookup (
5555 p_column => 'emp_at_primary_adr_min_ind',
5556 p_lookup_type => 'EMP_AT_PRIMARY_ADR_MIN_IND',
5557 p_column_value => p_organization_rec.emp_at_primary_adr_min_ind,
5558 x_return_status => x_return_status);
5559
5560 /*IF g_debug THEN
5561 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5562 'emp_at_primary_adr_min_ind is lookup code in lookup type EMP_AT_PRIMARY_ADR_MIN_IND. ' ||
5563 'x_return_status = ' || x_return_status, l_debug_prefix);
5564 END IF;
5565 */
5566 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5567 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5568 p_message=>'emp_at_primary_adr_min_ind is lookup code in lookup type EMP_AT_PRIMARY_ADR_MIN_IND. ' ||
5569 'x_return_status = ' || x_return_status,
5570 p_msg_level=>fnd_log.level_statement);
5571 END IF;
5572
5573
5574 --2897298, Added
5575 ------------------------
5576 -- validate rent_own_ind
5577 ------------------------
5578
5579 -- Bug 3333036.
5580 -- The validation will be called only if the value changes.
5581
5582 IF p_organization_rec.rent_own_ind IS NOT NULL
5583 AND
5584 p_organization_rec.rent_own_ind <> fnd_api.g_miss_char
5585 AND
5586 (
5587 p_create_update_flag = 'C'
5588 OR
5589 (
5590 p_create_update_flag = 'U'
5591 AND
5592 p_organization_rec.rent_own_ind <> p_old_organization_rec.rent_own_ind
5593 )
5594 )
5595 THEN
5596 validate_lookup (
5597 p_column => 'rent_own_ind',
5598 p_lookup_type => 'OWN_RENT_IND',
5599 p_column_value => p_organization_rec.rent_own_ind,
5600 x_return_status => x_return_status);
5601 /*IF g_debug THEN
5602 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5603 'rent_own_ind in lookup OWN_RENT_IND. ' ||
5604 'x_return_status = ' || x_return_status, l_debug_prefix);
5605 END IF;
5606 */
5607 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5608 hz_utility_v2pub.debug(
5609 p_prefix=>l_debug_prefix,
5610 p_message=>'rent_own_ind in lookup OWN_RENT_IND. ' ||
5611 'x_return_status = ' || x_return_status,
5612 p_msg_level=>fnd_log.level_statement);
5613 END IF;
5614 END IF;
5615
5616
5617 ------------------------------------------------------------------------
5618 --Validation for ceo_title, ceo_name, principal_title and principal_name
5619 ------------------------------------------------------------------------
5620
5621 -- ceo_title, ceo_name, principal_title and principal_name can not be updated by the user if
5622 -- actual_content_source = 'DNB'.
5623
5624 -- SSM SST Integration and Extension
5625 -- Instead of checking for DNB, check if actual_content_source is a purchased source system.
5626 /*
5627 IF p_create_update_flag = 'U' AND (
5628 p_organization_rec.ceo_name IS NOT NULL OR
5629 p_organization_rec.ceo_title IS NOT NULL OR
5630 p_organization_rec.principal_title IS NOT NULL OR
5631 p_organization_rec.principal_name IS NOT NULL ) AND
5632 /*p_organization_rec.actual_content_source = 'DNB' AND
5633 NVL(FND_PROFILE.value('HZ_UPDATE_THIRD_PARTY_DATA'), 'N') = 'N'*/
5634 /* HZ_UTILITY_V2PUB.is_purchased_content_source(p_organization_rec.actual_content_source) = 'Y' AND
5635 p_organization_rec.actual_content_source <> HZ_PARTY_V2PUB.G_MISS_CONTENT_SOURCE_TYPE
5636 THEN
5637 l_return_status := FND_API.G_RET_STS_SUCCESS;
5638
5639 validate_nonupdateable (
5640 p_column => 'ceo_title',
5641 p_column_value => p_organization_rec.ceo_title,
5642 p_old_column_value => p_old_organization_rec.ceo_title,
5643 x_return_status => l_return_status,
5644 p_raise_error => 'N');
5645
5646 validate_nonupdateable (
5647 p_column => 'ceo_name',
5648 p_column_value => p_organization_rec.ceo_name,
5649 p_old_column_value => p_old_organization_rec.ceo_name,
5650 x_return_status => l_return_status,
5651 p_raise_error => 'N');
5652
5653 validate_nonupdateable (
5654 p_column => 'principal_title',
5655 p_column_value => p_organization_rec.principal_title,
5656 p_old_column_value => p_old_organization_rec.principal_title,
5657 x_return_status => l_return_status,
5658 p_raise_error => 'N');
5659
5660 validate_nonupdateable (
5661 p_column => 'principal_name',
5662 p_column_value => p_organization_rec.principal_name,
5663 p_old_column_value => p_old_organization_rec.principal_name,
5664 x_return_status => l_return_status,
5665 p_raise_error => 'N');
5666
5667 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5668 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'ceo_title will be considered DNB-only attributes.
5669 If you want to identify the CEO, you should not update these column,
5670 but rather add an appropriate Org Contact.',
5671 p_msg_level=>fnd_log.level_statement);
5672 END IF;
5673
5674 END IF;
5675
5676 */
5677 -----------------------------------
5678 -- validate displayed_duns_party_id
5679 -----------------------------------
5680
5681 -- displayed_duns_party_id is foreign key of hz_parties.party_id
5682 IF p_organization_rec.displayed_duns_party_id IS NOT NULL
5683 AND
5684 p_organization_rec.displayed_duns_party_id <> fnd_api.g_miss_num
5685 THEN
5686 BEGIN
5687 SELECT 'Y'
5688 INTO l_dummy
5689 FROM HZ_PARTIES
5690 WHERE PARTY_ID = p_organization_rec.displayed_duns_party_id;
5691 EXCEPTION
5692 WHEN NO_DATA_FOUND THEN
5693 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
5694 fnd_message.set_token('FK', 'displayed_duns_party_id');
5695 fnd_message.set_token('COLUMN', 'party_id');
5696 fnd_message.set_token('TABLE', 'hz_parties');
5697 fnd_msg_pub.add;
5698 x_return_status := fnd_api.g_ret_sts_error;
5699 END;
5700
5701 /*IF g_debug THEN
5702 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5703 'displayed_duns_party_id is foreign key of hz_parties.party_id. ' ||
5704 'x_return_status = ' || x_return_status, l_debug_prefix);
5705 END IF;
5706 */
5707 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5708 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5709 p_message=>'displayed_duns_party_id is foreign key of hz_parties.party_id. ' ||
5710 'x_return_status = ' || x_return_status,
5711 p_msg_level=>fnd_log.level_statement);
5712 END IF;
5713 END IF;
5714
5715 --------------------------------------
5716 -- validate created_by_module
5717 --------------------------------------
5718
5719 validate_created_by_module(
5720 p_create_update_flag => p_create_update_flag,
5721 p_created_by_module => p_organization_rec.created_by_module,
5722 p_old_created_by_module => p_old_organization_rec.created_by_module,
5723 x_return_status => x_return_status);
5724
5725 --------------------------------------
5726 -- validate application_id
5727 --------------------------------------
5728
5729 validate_application_id(
5730 p_create_update_flag => p_create_update_flag,
5731 p_application_id => p_organization_rec.application_id,
5732 p_old_application_id => p_old_organization_rec.application_id,
5733 x_return_status => x_return_status);
5734
5735 ---------------------------------------
5736 -- validation for home_country
5737 ---------------------------------------
5738
5739 -- home_country has foreign key fnd_territories.territory_code
5740 validate_country_code(
5741 p_column => 'home_country',
5742 p_column_value => p_organization_rec.home_country,
5743 x_return_status => x_return_status);
5744
5745 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5746 hz_utility_v2pub.debug(
5747 p_prefix => l_debug_prefix,
5748 p_message => 'home_country should be in fnd_territories.territory_code. ' ||
5749 'x_return_status = ' || x_return_status,
5750 p_msg_level => fnd_log.level_statement);
5751 END IF;
5752
5753 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5754 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_organization (-)',
5755 p_msg_level=>fnd_log.level_procedure);
5756 END IF;
5757
5758 --disable_debug;
5759
5760 END validate_organization;
5761
5762 /**
5763 * PROCEDURE validate_global_loc_num
5764 *
5765 * DESCRIPTION
5766 * Validates GLOBAL_LOCATION_NUMBER in HZ_PARTY_SITES for check-digit.
5767 *
5768 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
5769 *
5770 * ARGUMENTS
5771 *
5772 * IN:
5773 * global_location_number GLOBAL_LOCATION_NUMBER column in HZ_PARTY_SITES.
5774 *
5775 * IN/OUT:
5776 * x_return_status Return status after the call. The status can
5777 * be FND_API.G_RET_STS_SUCCESS (success),
5778 * fnd_api.g_ret_sts_error (error),
5779 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
5780 *
5781 * NOTES
5782 * Please see http://www.uc-council.org/checkdig.htm for details of the check-digit
5783 * validation.
5784 *
5785 * MODIFICATION HISTORY
5786 *
5787 * 19-APR-2004 Rajib Ranjan Borah o Created. Bug 3175816.
5788 *
5789 */
5790
5791 PROCEDURE validate_global_loc_num (
5792 global_location_number IN HZ_PARTY_SITES.GLOBAL_LOCATION_NUMBER%TYPE,
5793 x_return_status IN OUT NOCOPY VARCHAR2
5794 ) IS
5795 even_sum NUMBER := 0;
5796 odd_sum NUMBER := 0;
5797 global_loc_num NUMBER;
5798 check_digit NUMBER;
5799 i NUMBER;
5800 l_debug_prefix VARCHAR2(30):= '';
5801 BEGIN
5802
5803 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
5804 THEN
5805 hz_utility_v2pub.debug(
5806 p_prefix => l_debug_prefix,
5807 p_message => 'validate_global_loc_num(+)',
5808 p_msg_level => fnd_log.level_procedure
5809 );
5810 END IF;
5811
5812 IF TRIM(TRANSLATE(global_location_number,'0123456789',' ')) IS NULL
5813 THEN
5814
5815 global_loc_num := TO_NUMBER ( global_location_number );
5816
5817 IF LENGTH(global_location_number) = 13
5818 THEN
5819 -- The 13th digit stores the check digit. Store it in a local variable and compare
5820 -- it with the check-digit computed for the initial 12 digits.
5821 check_digit := global_loc_num MOD 10;
5822
5823 global_loc_num := TRUNC (global_loc_num / 10);
5824
5825 FOR i IN 1..6
5826 LOOP
5827 even_sum := even_sum + (global_loc_num MOD 10);
5828 global_loc_num := TRUNC (global_loc_num / 10) ;
5829
5830 odd_sum := odd_sum + (global_loc_num MOD 10);
5831 global_loc_num := TRUNC (global_loc_num / 10);
5832 END LOOP;
5833
5834 even_sum := (even_sum * 3) + odd_sum;
5835 -- Now even_sum contains (3 times (even_sum)) + odd_sum
5836
5837 IF ( check_digit + even_sum ) MOD 10 <> 0
5838 THEN -- Global location number did not satisfy the check digit validation.
5839 FND_MESSAGE.SET_NAME('AR','HZ_API_GLOBAL_LOC_NUM_ERRORS');
5840 FND_MSG_PUB.ADD;
5841 x_return_status := FND_API.G_RET_STS_ERROR;
5842 END IF;
5843
5844 ELSE -- Global_location_number is not 13 digits long.
5845 FND_MESSAGE.SET_NAME('AR','HZ_API_GLOBAL_LOC_NUM_ERRORS');
5846 FND_MSG_PUB.ADD;
5847 x_return_status := FND_API.G_RET_STS_ERROR;
5848 END IF;
5849
5850 ELSE -- corresponding to IF TRIM(TRANSLATE(global_location_number,'0123456789',' '))
5851
5852 -- Since there are non numeric characters, therefore the expression evaluated in the if
5853 -- clause is not null.
5854 FND_MESSAGE.SET_NAME('AR','HZ_API_GLOBAL_LOC_NUM_ERRORS');
5855 FND_MSG_PUB.ADD;
5856 x_return_status := FND_API.G_RET_STS_ERROR;
5857 END IF;
5858
5859 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
5860 THEN
5861 hz_utility_v2pub.debug(
5862 p_prefix => l_debug_prefix,
5863 p_message => 'validate_global_loc_num(-)',
5864 p_msg_level => fnd_log.level_procedure
5865 );
5866 END IF;
5867
5868 END validate_global_loc_num;
5869
5870 /**
5871 * PROCEDURE validate_party_site
5872 *
5873 * DESCRIPTION
5874 * Validates party site record. Checks for
5875 * uniqueness
5876 * lookup types
5877 * mandatory columns
5878 * non-updateable fields
5879 * foreign key validations
5880 * other validations
5881 *
5882 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
5883 *
5884 * ARGUMENTS
5885 * IN:
5886 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
5887 * p_party_site_rec Party site record.
5888 * p_rowid Rowid of the record (used only in update mode).
5889 * IN/OUT:
5890 * x_return_status Return status after the call. The status can
5891 * be FND_API.G_RET_STS_SUCCESS (success),
5892 * fnd_api.g_ret_sts_error (error),
5893 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
5894 *
5895 * NOTES
5896 *
5897 * MODIFICATION HISTORY
5898 *
5899 * 07-23-2001 Indrajit Sen o Created.
5900 * 04-19-2004 Rajib Ranjan Borah o Bug 3175816. If the value of GLOBAL_LOCATION_NUMBER
5901 * has changed, then called validate_global_loc_num.
5902 * 03-May-3004 Venkata Sowjanya S Bug No : 3609601. Commented the statements which sets tokens Column1,Column2
5903 * for message HZ_API_INACTIVE_CANNOT_PRIM
5904
5905
5906 */
5907
5908 PROCEDURE validate_party_site(
5909 p_create_update_flag IN VARCHAR2,
5910 p_party_site_rec IN HZ_PARTY_SITE_V2PUB.PARTY_SITE_REC_TYPE,
5911 p_rowid IN ROWID,
5912 x_return_status IN OUT NOCOPY VARCHAR2,
5913 x_loc_actual_content_source OUT NOCOPY VARCHAR2
5914 ) IS
5915
5916 l_count NUMBER;
5917 l_party_id NUMBER;
5918 l_location_id NUMBER;
5919 l_party_site_number VARCHAR2(30);
5920 l_orig_system_reference VARCHAR2(240);
5921 l_start_date_active DATE;
5922 l_end_date_active DATE;
5923 l_party_site_id NUMBER;
5924 l_identifying_address_flag VARCHAR2(1);
5925 l_dummy VARCHAR2(1);
5926 l_created_by_module VARCHAR2(150);
5927 l_application_id NUMBER;
5928 l_status VARCHAR2(1);
5929 db_actual_content_source VARCHAR2(30);
5930 l_debug_prefix VARCHAR2(30) := '';
5931 l_validate_osr varchar2(1) := 'Y';
5932 l_mosr_owner_table_id number;
5933
5934 -- Bug 3175816
5935 l_global_location_number HZ_PARTY_SITES.GLOBAL_LOCATION_NUMBER%TYPE;
5936
5937 l_temp_return_status VARCHAR2(10); -- for storing return status from
5938 -- hz_orig_system_ref_pub.get_owner_table_id
5939 BEGIN
5940
5941 --enable_debug;
5942
5943 -- Debug info.
5944 /*IF g_debug THEN
5945 hz_utility_v2pub.debug ('validate_party_site (+)');
5946 END IF;
5947 */
5948 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5949 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_party_site (+)',
5950 p_msg_level=>fnd_log.level_procedure);
5951 END IF;
5952
5953 -- select fields for later use during update.
5954 IF p_create_update_flag = 'U' THEN
5955 SELECT PARTY_ID,
5956 LOCATION_ID,
5957 PARTY_SITE_NUMBER,
5958 ORIG_SYSTEM_REFERENCE,
5959 IDENTIFYING_ADDRESS_FLAG,
5960 START_DATE_ACTIVE,
5961 END_DATE_ACTIVE,
5962 STATUS,
5963 CREATED_BY_MODULE,
5964 APPLICATION_ID,
5965 ACTUAL_CONTENT_SOURCE,
5966 GLOBAL_LOCATION_NUMBER
5967 INTO l_party_id,
5968 l_location_id,
5969 l_party_site_number,
5970 l_orig_system_reference,
5971 l_identifying_address_flag,
5972 l_start_date_active,
5973 l_end_date_active,
5974 l_status,
5975 l_created_by_module,
5976 l_application_id,
5977 db_actual_content_source,
5978 l_global_location_number
5979 FROM HZ_PARTY_SITES
5980 WHERE ROWID = p_rowid;
5981 END IF;
5982
5983 --------------------
5984 -- validate party_id
5985 --------------------
5986 /****Logical APIs - validation not required****/
5987 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
5988 -- party_id is mandatory field
5989 validate_mandatory (
5990 p_create_update_flag => p_create_update_flag,
5991 p_column => 'party_id',
5992 p_column_value => p_party_site_rec.party_id,
5993 x_return_status => x_return_status);
5994
5995 /*IF g_debug THEN
5996 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
5997 'party_id is mandatory field. ' ||
5998 'x_return_status = ' || x_return_status, l_debug_prefix);
5999 END IF;
6000 */
6001 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6002 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is mandatory field. ' ||
6003 'x_return_status = ' || x_return_status,
6004 p_msg_level=>fnd_log.level_statement);
6005 END IF;
6006
6007
6008 -- party_id is non-updateable field
6009 IF p_create_update_flag = 'U' THEN
6010 validate_nonupdateable (
6011 p_column => 'party_id',
6012 p_column_value => p_party_site_rec.party_id,
6013 p_old_column_value => l_party_id,
6014 x_return_status => x_return_status);
6015
6016 /*IF g_debug THEN
6017 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6018 'party_id is non-updateable field. ' ||
6019 'x_return_status = ' || x_return_status, l_debug_prefix);
6020 END IF;
6021 */
6022 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6023 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable field. ' ||
6024 'x_return_status = ' || x_return_status,
6025 p_msg_level=>fnd_log.level_statement);
6026 END IF;
6027
6028 END IF;
6029
6030 -- party_id is foreign key of hz_parties
6031 -- Do not need to check during update because party_id is
6032 -- non-updateable.
6033 IF p_create_update_flag = 'C'
6034 AND
6035 p_party_site_rec.party_id IS NOT NULL
6036 AND
6037 p_party_site_rec.party_id <> fnd_api.g_miss_num
6038 AND
6039 p_party_site_rec.party_id <> -1
6040 THEN
6041 BEGIN
6042 SELECT 'Y'
6043 INTO l_dummy
6044 FROM HZ_PARTIES
6045 WHERE PARTY_ID = p_party_site_rec.party_id;
6046 EXCEPTION
6047 WHEN NO_DATA_FOUND THEN
6048 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
6049 fnd_message.set_token('FK', 'party_id');
6050 fnd_message.set_token('COLUMN', 'party_id');
6051 fnd_message.set_token('TABLE', 'hz_parties');
6052 fnd_msg_pub.add;
6053 x_return_status := fnd_api.g_ret_sts_error;
6054 END;
6055
6056 /*IF g_debug THEN
6057 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6058 'party_id is foreign key of hz_parties. ' ||
6059 'x_return_status = ' || x_return_status, l_debug_prefix);
6060 END IF;
6061 */
6062 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6063 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is foreign key of hz_parties. ' ||
6064 'x_return_status = ' || x_return_status,
6065 p_msg_level=>fnd_log.level_statement);
6066 END IF;
6067
6068 END IF;
6069 END IF;
6070
6071 -----------------------
6072 -- validate location_id
6073 -----------------------
6074 /****Logical APIs - validation not required****/
6075 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
6076 -- location_id is mandatory field
6077 validate_mandatory (
6078 p_create_update_flag => p_create_update_flag,
6079 p_column => 'location_id',
6080 p_column_value => p_party_site_rec.location_id,
6081 x_return_status => x_return_status);
6082
6083 /*IF g_debug THEN
6084 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6085 'location_id is mandatory field. ' ||
6086 'x_return_status = ' || x_return_status, l_debug_prefix);
6087 END IF;
6088 */
6089 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6090 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'location_id is mandatory field. ' ||
6091 'x_return_status = ' || x_return_status,
6092 p_msg_level=>fnd_log.level_statement);
6093 END IF;
6094
6095
6096 -- location_id is non-updateable field
6097 IF p_create_update_flag = 'U' THEN
6098 validate_nonupdateable (
6099 p_column => 'location_id',
6100 p_column_value => p_party_site_rec.location_id,
6101 p_old_column_value => l_location_id,
6102 x_return_status => x_return_status);
6103
6104 /*IF g_debug THEN
6105 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6106 'location_id is non-updateable field. ' ||
6107 'x_return_status = ' || x_return_status, l_debug_prefix);
6108 END IF;
6109 */
6110 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6111 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'location_id is non-updateable field. ' ||
6112 'x_return_status = ' || x_return_status,
6113 p_msg_level=>fnd_log.level_statement);
6114 END IF;
6115
6116 END IF;
6117
6118 -- location_id is foreign key of hz_locations.location_id.
6119 -- do not need to check during update because location_id is
6120 -- non-updateable.
6121 IF p_create_update_flag = 'C'
6122 AND
6123 p_party_site_rec.location_id IS NOT NULL
6124 AND
6125 p_party_site_rec.location_id <> fnd_api.g_miss_num
6126 THEN
6127 BEGIN
6128
6129 -- Bug 2197181: for mix-n-match, column actual_content_source
6130 -- was added to hz_party_sites. It is denormalized from hz_locations.
6131 -- Therefore, it is selected from hz_locations to be passed back
6132 -- to create_party_site API.
6133
6134 SELECT actual_content_source
6135 INTO x_loc_actual_content_source
6136 FROM HZ_LOCATIONS
6137 WHERE LOCATION_ID = p_party_site_rec.location_id;
6138 EXCEPTION
6139 WHEN NO_DATA_FOUND THEN
6140 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
6141 fnd_message.set_token('FK', 'location_id');
6142 fnd_message.set_token('COLUMN', 'location_id');
6143 fnd_message.set_token('TABLE', 'hz_locations');
6144 fnd_msg_pub.add;
6145 x_return_status := fnd_api.g_ret_sts_error;
6146 END;
6147
6148 /*IF g_debug THEN
6149 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6150 'location_id is foreign key of hz_locations. ' ||
6151 'x_return_status = ' || x_return_status, l_debug_prefix);
6152 END IF;
6153 */
6154 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6155 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'location_id is foreign key of hz_locations. ' ||
6156 'x_return_status = ' || x_return_status,
6157 p_msg_level=>fnd_log.level_statement);
6158 END IF;
6159
6160 END IF;
6161 END IF;
6162
6163 -----------------------------
6164 -- validate party_site_number
6165 -----------------------------
6166
6167 -- party_site_number is non-updateable field
6168 IF p_create_update_flag = 'U' THEN
6169 validate_nonupdateable (
6170 p_column => 'party_site_number',
6171 p_column_value => p_party_site_rec.party_site_number,
6172 p_old_column_value => l_party_site_number,
6173 x_return_status => x_return_status);
6174
6175 /*IF g_debug THEN
6176 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6177 'party_site_number is non-updateable field. ' ||
6178 'x_return_status = ' || x_return_status, l_debug_prefix);
6179 END IF;
6180 */
6181 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6182 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_site_number is non-updateable field. ' ||
6183 'x_return_status = ' || x_return_status,
6184 p_msg_level=>fnd_log.level_statement);
6185 END IF;
6186
6187 END IF;
6188
6189 ---------------------------------
6190 -- validate orig_system_reference
6191 ---------------------------------
6192 /****Logical APIs - validation not required****/
6193 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
6194 IF (p_party_site_rec.orig_system is not null
6195 and p_party_site_rec.orig_system <>fnd_api.g_miss_char)
6196 and (p_party_site_rec.orig_system_reference is not null
6197 and p_party_site_rec.orig_system_reference <>fnd_api.g_miss_char)
6198 and p_create_update_flag = 'U'
6199 then
6200 hz_orig_system_ref_pub.get_owner_table_id
6201 (p_orig_system => p_party_site_rec.orig_system,
6202 p_orig_system_reference => p_party_site_rec.orig_system_reference,
6203 p_owner_table_name => 'HZ_PARTY_SITES',
6204 x_owner_table_id => l_mosr_owner_table_id,
6205 x_return_status => l_temp_return_status);
6206
6207 IF (l_temp_return_status = fnd_api.g_ret_sts_success AND
6208 l_mosr_owner_table_id= nvl(p_party_site_rec.party_site_id,l_mosr_owner_table_id))
6209 THEN
6210 l_validate_osr := 'N';
6211 -- if we can get owner_table_id based on osr and os in mosr table,
6212 -- we will use unique osr and os for update - bypass osr validation
6213 ELSE l_validate_osr := 'Y';
6214 END IF;
6215
6216 -- Call to hz_orig_system_ref_pub.get_owner_table_id API was resetting the
6217 -- x_return_status. Set x_return_status to error, ONLY if there is error.
6218 -- In case of success, leave it to carry over previous value as before this call.
6219 -- Fix for Bug 5498116 (29-AUG-2006)
6220 IF (l_temp_return_status = FND_API.G_RET_STS_ERROR) THEN
6221 x_return_status := l_temp_return_status;
6222 END IF;
6223
6224 end if;
6225 -- orig_system_reference is non-updateable field
6226 IF p_create_update_flag = 'U' and l_validate_osr = 'Y' THEN
6227 validate_nonupdateable (
6228 p_column => 'orig_system_reference',
6229 p_column_value => p_party_site_rec.orig_system_reference,
6230 p_old_column_value => l_orig_system_reference,
6231 x_return_status => x_return_status);
6232
6233 /*IF g_debug THEN
6234 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6235 'orig_system_reference is non-updateable field. ' ||
6236 'x_return_status = ' || x_return_status, l_debug_prefix);
6237 END IF;
6238 */
6239 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6240 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'orig_system_reference is non-updateable field. ' ||
6241 'x_return_status = ' || x_return_status,
6242 p_msg_level=>fnd_log.level_statement);
6243 END IF;
6244
6245 END IF;
6246 END IF;
6247
6248 ----------------------------------------------
6249 -- validate status
6250 ----------------------------------------------
6251
6252 -- status cannot be set to null during update
6253 IF p_create_update_flag = 'U' THEN
6254 validate_cannot_update_to_null (
6255 p_column => 'status',
6256 p_column_value => p_party_site_rec.status,
6257 x_return_status => x_return_status);
6258
6259 /*IF g_debug THEN
6260 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6261 'status cannot be set to null during update. ' ||
6262 'x_return_status = ' || x_return_status, l_debug_prefix);
6263 END IF;
6264 */
6265 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6266 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'status cannot be set to null during update. ' ||
6267 'x_return_status = ' || x_return_status,
6268 p_msg_level=>fnd_log.level_statement);
6269 END IF;
6270
6271
6272 -- If for a party, DNB provides address components which are different
6273 -- from the ones it sent originally, the old party site is inactivated
6274 -- and end-dated and a new one created. We should put a check which
6275 -- prevents a user from activating a DNB party site that has been
6276 -- end-dated (because from DNB's perspective, it is no more a valid
6277 -- site for the party).
6278
6279 IF db_actual_content_source = 'DNB' AND
6280 l_end_date_active IS NOT NULL AND
6281 l_status = 'I' AND
6282 p_party_site_rec.status = 'A'
6283 THEN
6284 /* new message */
6285 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_CANT_ACTIVATE_SITE' );
6286 FND_MSG_PUB.ADD;
6287 x_return_status := FND_API.G_RET_STS_ERROR;
6288 END IF;
6289 END IF;
6290
6291 /****Logical APIs - validation not required****/
6292 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
6293 -- status is lookup code in lookup type REGISTRY_STATUS
6294 IF p_party_site_rec.status IS NOT NULL
6295 AND
6296 p_party_site_rec.status <> fnd_api.g_miss_char
6297 AND
6298 (p_create_update_flag = 'C'
6299 OR
6300 (p_create_update_flag = 'U'
6301 AND
6302 p_party_site_rec.status <> NVL(l_status, fnd_api.g_miss_char)
6303 )
6304 )
6305 THEN
6306 validate_lookup (
6307 p_column => 'status',
6308 p_lookup_type => 'REGISTRY_STATUS',
6309 p_column_value => p_party_site_rec.status,
6310 x_return_status => x_return_status);
6311
6312 /*IF g_debug THEN
6313 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6314 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
6315 'x_return_status = ' || x_return_status, l_debug_prefix);
6316 END IF;
6317 */
6318 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6319 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6320 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
6321 'x_return_status = ' || x_return_status,
6322 p_msg_level=>fnd_log.level_statement);
6323 END IF;
6324
6325 END IF;
6326 END IF;
6327
6328 ------------------------------------
6329 -- validate identifying_address_flag
6330 ------------------------------------
6331 /****Logical APIs - validation not required****/
6332 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
6333 -- identifying_address_flag is lookup code in lookup type YES/NO
6334 validate_lookup (
6335 p_column => 'identifying_address_flag',
6336 p_lookup_type => 'YES/NO',
6337 p_column_value => p_party_site_rec.identifying_address_flag,
6338 x_return_status => x_return_status
6339 );
6340
6341 /*IF g_debug THEN
6342 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6343 'identifying_address_flag should be in lookup YES/NO. ' ||
6344 'x_return_status = ' || x_return_status, l_debug_prefix);
6345 END IF;
6346 */
6347 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6348 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'identifying_address_flag should be in lookup YES/NO. ' ||
6349 'x_return_status = ' || x_return_status,
6350 p_msg_level=>fnd_log.level_statement);
6351 END IF;
6352 END IF;
6353
6354 -- Bug 1882511
6355 -- If the identify address flag is set to Yes, the status column should
6356 -- not be Inactive
6357
6358 IF p_party_site_rec.identifying_address_flag is NOT NULL
6359 AND p_party_site_rec.identifying_address_flag <> fnd_api.g_miss_char
6360 AND (p_create_update_flag = 'C'
6361 OR (p_create_update_flag = 'U'
6362 AND p_party_site_rec.identifying_address_flag <>
6363 NVL(l_identifying_address_flag, fnd_api.g_miss_char)))
6364 THEN
6365 SELECT DECODE(p_party_site_rec.identifying_address_flag,
6366 'Y', DECODE(p_party_site_rec.status,
6367 'I', 'N',
6368 '', DECODE(l_status, 'I', 'N')),
6369 'Y')
6370 INTO l_dummy
6371 FROM dual;
6372
6373 IF l_dummy <> 'Y' THEN
6374 fnd_message.set_name('AR', 'HZ_API_INACTIVE_CANNOT_PRIM');
6375 fnd_message.set_token('ENTITY', 'Site');
6376 -- fnd_message.set_token('COLUMN1', 'identifying_address');
6377 -- fnd_message.set_token('COLUMN2', 'status');
6378 fnd_msg_pub.add;
6379 x_return_status := FND_API.G_RET_STS_ERROR;
6380 END IF;
6381
6382 /*IF g_debug THEN
6383 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6384 'If the identify address flag is set to Yes, the status column should not be Inactive.' ||
6385 'x_return_status = ' || x_return_status,
6386 l_debug_prefix
6387 );
6388 END IF;
6389 */
6390 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6391 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6392 p_message=>'If the identify address flag is set to Yes, the status column should not be Inactive.' ||
6393 'x_return_status = ' || x_return_status,
6394 p_msg_level=>fnd_log.level_statement);
6395 END IF;
6396
6397 END IF;
6398
6399 /* comment out the validation as the language column is obsoleted in r12
6400 --------------------------
6401 -- validation for language
6402 --------------------------
6403
6404 -- language has foreign key fnd_languages.language_code
6405 IF p_party_site_rec.language IS NOT NULL
6406 AND
6407 p_party_site_rec.language <> fnd_api.g_miss_char
6408 THEN
6409 BEGIN
6410 SELECT 'Y'
6411 INTO l_dummy
6412 FROM FND_LANGUAGES
6413 WHERE LANGUAGE_CODE = p_party_site_rec.language
6414 AND INSTALLED_FLAG IN ('B', 'I');
6415 EXCEPTION
6416 WHEN NO_DATA_FOUND THEN
6417 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
6418 fnd_message.set_token('FK', 'language');
6419 fnd_message.set_token('COLUMN', 'language_code');
6420 fnd_message.set_token('TABLE', 'fnd_languages(installed)');
6421 fnd_msg_pub.add;
6422 x_return_status := fnd_api.g_ret_sts_error;
6423 END;
6424
6425 -- IF g_debug THEN
6426 -- hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6427 -- 'language has foreign key fnd_languages.language_code. ' ||
6428 -- 'x_return_status = ' || x_return_status, l_debug_prefix);
6429 -- END IF;
6430
6431 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6432 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6433 p_message=>'language has foreign key fnd_languages.language_code. ' ||
6434 'x_return_status = ' || x_return_status,
6435 p_msg_level=>fnd_log.level_statement);
6436 END IF;
6437
6438 END IF;
6439 */
6440
6441 -------------------------------------------------
6442 -- validate global_location_number.( Bug 3175816)
6443 -------------------------------------------------
6444 IF p_party_site_rec.global_location_number IS NOT NULL AND
6445 p_party_site_rec.global_location_number <> FND_API.G_MISS_CHAR AND
6446 (
6447 p_create_update_flag = 'C' OR
6448 (
6449 p_create_update_flag = 'U' AND
6450 p_party_site_rec.global_location_number <> NVL(l_global_location_number, fnd_api.g_miss_char)
6451 )
6452 )
6453 THEN
6454 validate_global_loc_num(
6455 global_location_number => p_party_site_rec.global_location_number,
6456 x_return_status => x_return_status);
6457 END IF;
6458
6459 --------------------------------------
6460 -- validate created_by_module
6461 --------------------------------------
6462
6463 validate_created_by_module(
6464 p_create_update_flag => p_create_update_flag,
6465 p_created_by_module => p_party_site_rec.created_by_module,
6466 p_old_created_by_module => l_created_by_module,
6467 x_return_status => x_return_status);
6468
6469 --------------------------------------
6470 -- validate application_id
6471 --------------------------------------
6472
6473 validate_application_id(
6474 p_create_update_flag => p_create_update_flag,
6475 p_application_id => p_party_site_rec.application_id,
6476 p_old_application_id => l_application_id,
6477 x_return_status => x_return_status);
6478
6479 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6480 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_party_site (-)',
6481 p_msg_level=>fnd_log.level_procedure);
6482 END IF;
6483
6484 END validate_party_site;
6485
6486 /**
6487 * PROCEDURE validate_party_site_use
6488 *
6489 * DESCRIPTION
6490 * Validates party site use record. Checks for
6491 * uniqueness
6492 * lookup types
6493 * mandatory columns
6494 * non-updateable fields
6495 * foreign key validations
6496 * other validations
6497 *
6498 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
6499 *
6500 * ARGUMENTS
6501 * IN:
6502 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
6503 * p_party_site_use_rec Party site use record.
6504 * p_rowid Rowid of the record (used only in update mode).
6505 * IN/OUT:
6506 * x_return_status Return status after the call. The status can
6507 * be FND_API.G_RET_STS_SUCCESS (success),
6508 * fnd_api.g_ret_sts_error (error),
6509 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
6510 *
6511 * NOTES
6512 *
6513 * MODIFICATION HISTORY
6514 *
6515 * 07-23-2001 Indrajit Sen o Created.
6516 * 11-05-2003 Rajib Ranjan Borah o Bug 2065191.Primary_per_type cannot be set to 'Y'
6517 * if status is not 'A'.
6518 * Added variable l_primary_per_type.
6519 * 03-May-3004 Venkata Sowjanya S Bug No : 3609601. Commented the statements which sets tokens Column1,Column2
6520 * for message HZ_API_INACTIVE_CANNOT_PRIM
6521
6522
6523 */
6524
6525 PROCEDURE validate_party_site_use(
6526 p_create_update_flag IN VARCHAR2,
6527 p_party_site_use_rec IN HZ_PARTY_SITE_V2PUB.PARTY_SITE_USE_REC_TYPE,
6528 p_rowid IN ROWID,
6529 x_return_status IN OUT NOCOPY VARCHAR2
6530 ) IS
6531
6532 l_count NUMBER;
6533 l_party_site_id NUMBER;
6534 l_site_use_type HZ_PARTY_SITE_USES.SITE_USE_TYPE%TYPE;
6535 l_begin_date DATE;
6536 l_dummy VARCHAR2(1);
6537 l_created_by_module VARCHAR2(150);
6538 l_application_id NUMBER;
6539 l_status VARCHAR2(1);
6540 l_debug_prefix VARCHAR2(30) := '';
6541 -- Bug 2065191.
6542 l_primary_per_type HZ_PARTY_SITE_USES.PRIMARY_PER_TYPE%TYPE;
6543
6544 BEGIN
6545
6546 --enable_debug;
6547
6548 -- Debug info.
6549 /*IF g_debug THEN
6550 hz_utility_v2pub.debug ('validate_party_site_use (+)');
6551 END IF;
6552 */
6553 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6554 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_party_site_use (+)',
6555 p_msg_level=>fnd_log.level_procedure);
6556 END IF;
6557
6558 -- select fields for later use during update.
6559 IF p_create_update_flag = 'U' THEN
6560 SELECT PARTY_SITE_ID,
6561 SITE_USE_TYPE,
6562 BEGIN_DATE,
6563 STATUS,
6564 CREATED_BY_MODULE,
6565 APPLICATION_ID,
6566 --Bug 2065191
6567 PRIMARY_PER_TYPE
6568
6569 INTO l_party_site_id,
6570 l_site_use_type,
6571 l_begin_date,
6572 l_status,
6573 l_created_by_module,
6574 l_application_id,
6575 --BUG 2065191
6576 l_primary_per_type
6577
6578 FROM HZ_PARTY_SITE_USES
6579 WHERE ROWID = p_rowid;
6580 END IF;
6581
6582 -------------------------
6583 -- validate party_site_id
6584 -------------------------
6585 /****Logical APIs - validation not required****/
6586 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
6587 -- party_site_id is mandatory field
6588 validate_mandatory (
6589 p_create_update_flag => p_create_update_flag,
6590 p_column => 'party_site_id',
6591 p_column_value => p_party_site_use_rec.party_site_id,
6592 x_return_status => x_return_status);
6593
6594 -- party_site_id is non-updateable field
6595 IF p_create_update_flag = 'U' THEN
6596 validate_nonupdateable (
6597 p_column => 'party_site_id',
6598 p_column_value => p_party_site_use_rec.party_site_id,
6599 p_old_column_value => l_party_site_id,
6600 x_return_status => x_return_status);
6601
6602 /*IF g_debug THEN
6603 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6604 'party_site_id is non-updateable field. ' ||
6605 'x_return_status = ' || x_return_status, l_debug_prefix);
6606 END IF;
6607 */
6608 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6609 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_site_id is non-updateable field. ' ||
6610 'x_return_status = ' || x_return_status,
6611 p_msg_level=>fnd_log.level_statement);
6612 END IF;
6613
6614 END IF;
6615
6616 -- party_site_id is foreign key of hz_party_sites.party_site_id
6617 -- Do not need to check during update because party_site_id is
6618 -- non-updateable.
6619 IF p_create_update_flag = 'C'
6620 AND
6621 p_party_site_use_rec.party_site_id IS NOT NULL
6622 AND
6623 p_party_site_use_rec.party_site_id <> fnd_api.g_miss_num
6624 THEN
6625 BEGIN
6626 SELECT 'Y'
6627 INTO l_dummy
6628 FROM HZ_PARTY_SITES
6629 WHERE PARTY_SITE_ID = p_party_site_use_rec.party_site_id;
6630 EXCEPTION
6631 WHEN NO_DATA_FOUND THEN
6632 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
6633 fnd_message.set_token('FK', 'party_site_id');
6634 fnd_message.set_token('COLUMN', 'party_site_id');
6635 fnd_message.set_token('TABLE', 'hz_party_sites');
6636 fnd_msg_pub.add;
6637 x_return_status := fnd_api.g_ret_sts_error;
6638 END;
6639
6640 /*IF g_debug THEN
6641 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6642 'party_site_id is foreign key of hz_party_sites.party_site_id. ' ||
6643 'x_return_status = ' || x_return_status, l_debug_prefix);
6644 END IF;
6645 */
6646 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6647 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6648 p_message=>'party_site_id is foreign key of hz_party_sites.party_site_id. ' ||
6649 'x_return_status = ' || x_return_status,
6650 p_msg_level=>fnd_log.level_statement);
6651 END IF;
6652
6653 END IF;
6654 END IF;
6655
6656 -------------------------
6657 -- validate site_use_type
6658 -------------------------
6659
6660 -- site_use_type is mandatory field
6661 validate_mandatory (
6662 p_create_update_flag => p_create_update_flag,
6663 p_column => 'site_use_type',
6664 p_column_value => p_party_site_use_rec.site_use_type,
6665 x_return_status => x_return_status);
6666
6667 /*IF g_debug THEN
6668 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6669 'site_use_type is mandatory field. ' ||
6670 'x_return_status = ' || x_return_status, l_debug_prefix);
6671 END IF;
6672 */
6673 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6674 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'site_use_type is mandatory field. ' ||
6675 'x_return_status = ' || x_return_status,
6676 p_msg_level=>fnd_log.level_statement);
6677 END IF;
6678
6679
6680 -- site_use_type is non-updateable field
6681 IF p_create_update_flag = 'U' THEN
6682 validate_nonupdateable (
6683 p_column => 'site_use_type',
6684 p_column_value => p_party_site_use_rec.site_use_type,
6685 p_old_column_value => l_site_use_type,
6686 x_return_status => x_return_status);
6687
6688 /*IF g_debug THEN
6689 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6690 'site_use_type is non-updateable field. ' ||
6691 'x_return_status = ' || x_return_status, l_debug_prefix);
6692 END IF;
6693 */
6694 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6695 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'site_use_type is non-updateable field. ' ||
6696 'x_return_status = ' || x_return_status,
6697 p_msg_level=>fnd_log.level_statement);
6698 END IF;
6699
6700 END IF;
6701
6702 -- site_use_type is lookup code in lookup type PARTY_SITE_USE_CODE
6703 validate_lookup (
6704 p_column => 'site_use_type',
6705 p_lookup_type => 'PARTY_SITE_USE_CODE',
6706 p_column_value => p_party_site_use_rec.site_use_type,
6707 x_return_status => x_return_status);
6708
6709 /*IF g_debug THEN
6710 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6711 'site_use_type is lookup code in lookup type PARTY_SITE_USE_CODE. ' ||
6712 'x_return_status = ' || x_return_status, l_debug_prefix);
6713 END IF;
6714 */
6715 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6716 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6717 p_message=>'site_use_type is lookup code in lookup type PARTY_SITE_USE_CODE. ' ||
6718 'x_return_status = ' || x_return_status,
6719 p_msg_level=>fnd_log.level_statement);
6720 END IF;
6721
6722
6723 ----------------------------
6724 -- validate primary_per_type
6725 ----------------------------
6726 /****Logical APIs - validation not required****/
6727 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
6728 -- primary_per_type is lookup code in lookup type YES/NO
6729 validate_lookup (
6730 p_column => 'primary_per_type',
6731 p_lookup_type => 'YES/NO',
6732 p_column_value => p_party_site_use_rec.primary_per_type,
6733 x_return_status => x_return_status);
6734
6735 /*IF g_debug THEN
6736 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6737 'primary_per_type should be in lookup YES/NO. ' ||
6738 'x_return_status = ' || x_return_status, l_debug_prefix);
6739 END IF;
6740 */
6741 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6742 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'primary_per_type should be in lookup YES/NO. ' ||
6743 'x_return_status = ' || x_return_status,
6744 p_msg_level=>fnd_log.level_statement);
6745 END IF;
6746 END IF;
6747
6748 ----------------------------------------------------------
6749 -- validate combination of party_site_id and site_use_type
6750 ----------------------------------------------------------
6751
6752 -- combination of party_site_id and site_use_type is unique
6753 if p_party_site_use_rec.status <> 'I' or (p_create_update_flag = 'C' and (p_party_site_use_rec.status is null or p_party_site_use_rec.status = fnd_api.g_miss_char ))
6754 -- bug 8506794, BO API allows to pass in multiple site uses at same time such as 'A', 'I', null for status
6755 then
6756 BEGIN
6757 SELECT 'Y'
6758 INTO l_dummy
6759 FROM HZ_PARTY_SITE_USES
6760 -- Bug 3988537.
6761 WHERE PARTY_SITE_ID = nvl(p_party_site_use_rec.party_site_id,l_party_site_id)
6762 AND SITE_USE_TYPE = nvl(p_party_site_use_rec.site_use_type,l_site_use_type)
6763 AND STATUS = 'A'
6764 AND PARTY_SITE_USE_ID <> NVL(p_party_site_use_rec.party_site_use_id, fnd_api.g_miss_num);
6765
6766 fnd_message.set_name('AR', 'HZ_API_UNIQUE_SITE_USE_TYPE');
6767 fnd_msg_pub.add;
6768 x_return_status := fnd_api.g_ret_sts_error;
6769
6770 EXCEPTION
6771 WHEN NO_DATA_FOUND THEN
6772 NULL;
6773 END;
6774 end if;
6775 /*IF g_debug THEN
6776 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6777 'combination of party_site_id and site_use_type is unique. ' ||
6778 'x_return_status = ' || x_return_status, l_debug_prefix);
6779 END IF;
6780 */
6781 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6782 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6783 p_message=>'combination of party_site_id and site_use_type is unique. ' ||
6784 'x_return_status = ' || x_return_status,
6785 p_msg_level=>fnd_log.level_statement);
6786 END IF;
6787
6788
6789 ------------------
6790 -- validate status
6791 ------------------
6792
6793 -- status cannot be set to null during update
6794 IF p_create_update_flag = 'U' THEN
6795 validate_cannot_update_to_null (
6796 p_column => 'status',
6797 p_column_value => p_party_site_use_rec.status,
6798 x_return_status => x_return_status);
6799 END IF;
6800
6801 /****Logical APIs - validation not required****/
6802 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
6803 -- status is lookup code in lookup type REGISTRY_STATUS
6804 IF p_party_site_use_rec.status IS NOT NULL
6805 AND
6806 p_party_site_use_rec.status <> fnd_api.g_miss_char
6807 AND
6808 (p_create_update_flag = 'C'
6809 OR
6810 (p_create_update_flag = 'U'
6811 AND
6812 p_party_site_use_rec.status <> NVL(l_status, fnd_api.g_miss_char)
6813 )
6814 )
6815 THEN
6816 validate_lookup (
6817 p_column => 'status',
6818 p_lookup_type => 'REGISTRY_STATUS',
6819 p_column_value => p_party_site_use_rec.status,
6820 x_return_status => x_return_status);
6821
6822 /*IF g_debug THEN
6823 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6824 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
6825 'x_return_status = ' || x_return_status, l_debug_prefix);
6826 END IF;
6827 */
6828 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6829 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6830 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
6831 'x_return_status = ' || x_return_status,
6832 p_msg_level=>fnd_log.level_statement);
6833 END IF;
6834
6835
6836 END IF;
6837 END IF;
6838
6839 --------------------------------------
6840 -- validate created_by_module
6841 --------------------------------------
6842
6843 validate_created_by_module(
6844 p_create_update_flag => p_create_update_flag,
6845 p_created_by_module => p_party_site_use_rec.created_by_module,
6846 p_old_created_by_module => l_created_by_module,
6847 x_return_status => x_return_status);
6848
6849 --------------------------------------
6850 -- validate application_id
6851 --------------------------------------
6852
6853 validate_application_id(
6854 p_create_update_flag => p_create_update_flag,
6855 p_application_id => p_party_site_use_rec.application_id,
6856 p_old_application_id => l_application_id,
6857 x_return_status => x_return_status);
6858
6859 -- Bug 2065191.status and primary_per_type cannot be 'I' and 'Y' at the same time.
6860 ----------------------------------------
6861 -- validate primary_per_type and status.
6862 ----------------------------------------
6863
6864 IF NVL(p_party_site_use_rec.primary_per_type,l_primary_per_type) ='Y'
6865 AND NVL(p_party_site_use_rec.status,l_status) = 'I'
6866 THEN
6867 FND_MESSAGE.SET_NAME('AR','HZ_API_INACTIVE_CANNOT_PRIM');
6868 FND_MESSAGE.SET_TOKEN('ENTITY','Party Site Use');
6869 -- FND_MESSAGE.SET_TOKEN('COLUMN1','PRIMARY_PER_TYPE');
6870 -- FND_MESSAGE.SET_TOKEN('COLUMN2','STATUS');
6871 FND_MSG_PUB.ADD;
6872 x_return_status := FND_API.G_RET_STS_ERROR;
6873 END IF;
6874
6875
6876 -- Debug info.
6877 /*IF g_debug THEN
6878 hz_utility_v2pub.debug ('validate_party_site_use (-)');
6879 END IF;
6880 */
6881 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6882 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_party_site_use (-)',
6883 p_msg_level=>fnd_log.level_procedure);
6884 END IF;
6885
6886
6887 --disable_debug;
6888
6889 END validate_party_site_use;
6890
6891 /**
6892 * PROCEDURE validate_org_contact
6893 *
6894 * DESCRIPTION
6895 * Validates org contact record. Checks for
6896 * uniqueness
6897 * lookup types
6898 * mandatory columns
6899 * non-updateable fields
6900 * foreign key validations
6901 * other validations
6902 *
6903 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
6904 *
6905 * ARGUMENTS
6906 * IN:
6907 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
6908 * p_org_contact_rec Org contact record.
6909 * p_rowid Rowid of the record (used only in update mode).
6910 * IN/OUT:
6911 * x_return_status Return status after the call. The status can
6912 * be FND_API.G_RET_STS_SUCCESS (success),
6913 * fnd_api.g_ret_sts_error (error),
6914 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
6915 *
6916 * NOTES
6917 *
6918 * MODIFICATION HISTORY
6919 *
6920 * 07-23-2001 Indrajit Sen o Created.
6921 *
6922 */
6923
6924 PROCEDURE validate_org_contact(
6925 p_create_update_flag IN VARCHAR2,
6926 p_org_contact_rec IN HZ_PARTY_CONTACT_V2PUB.ORG_CONTACT_REC_TYPE,
6927 p_rowid IN ROWID,
6928 x_return_status IN OUT NOCOPY VARCHAR2
6929 ) IS
6930
6931 l_party_relationship_id NUMBER;
6932 l_dummy VARCHAR2(1);
6933 l_created_by_module VARCHAR2(150);
6934 l_application_id NUMBER;
6935 -- l_title VARCHAR2(30);
6936 l_job_title_code VARCHAR2(30);
6937 l_department_code VARCHAR2(30);
6938 l_debug_prefix VARCHAR2(30) := '';
6939
6940 BEGIN
6941
6942 --enable_debug;
6943
6944 -- Debug info.
6945 /*IF g_debug THEN
6946 hz_utility_v2pub.debug ('validate_org_contact (+)');
6947 END IF;
6948 */
6949 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6950 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_org_contact (+)',
6951 p_msg_level=>fnd_log.level_procedure);
6952 END IF;
6953
6954
6955 -- select fields for later use during update.
6956 IF p_create_update_flag = 'U' THEN
6957 SELECT PARTY_RELATIONSHIP_ID,
6958 -- TITLE,
6959 JOB_TITLE_CODE,
6960 DEPARTMENT_CODE,
6961 CREATED_BY_MODULE,
6962 APPLICATION_ID
6963 INTO l_party_relationship_id,
6964 -- l_title,
6965 l_job_title_code,
6966 l_department_code,
6967 l_created_by_module,
6968 l_application_id
6969 FROM HZ_ORG_CONTACTS
6970 WHERE ROWID = p_rowid;
6971 END IF;
6972
6973 ---------------------------------
6974 -- validate party_relationship_id
6975 ---------------------------------
6976
6977 -- party_relationship_id is non-updateable field
6978 IF p_create_update_flag = 'U' THEN
6979 validate_nonupdateable (
6980 p_column => 'party_relationship_id',
6981 p_column_value => p_org_contact_rec.party_rel_rec.relationship_id,
6982 p_old_column_value => l_party_relationship_id,
6983 x_return_status => x_return_status);
6984
6985 /*IF g_debug THEN
6986 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6987 'party_relationship_id is non-updateable field. ' ||
6988 'x_return_status = ' || x_return_status, l_debug_prefix);
6989 END IF;
6990 */
6991 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6992 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_relationship_id is non-updateable field. ' ||
6993 'x_return_status = ' || x_return_status,
6994 p_msg_level=>fnd_log.level_statement);
6995 END IF;
6996
6997
6998 END IF;
6999
7000 /* comment out the validation as the title column is obsoleted in r12
7001 -----------------
7002 -- validate title
7003 -----------------
7004
7005 -- title is lookup code in lookup type CONTACT_TITLE
7006 IF p_org_contact_rec.title IS NOT NULL
7007 AND
7008 p_org_contact_rec.title <> fnd_api.g_miss_char
7009 AND
7010 (p_create_update_flag = 'C'
7011 OR
7012 (p_create_update_flag = 'U'
7013 AND
7014 p_org_contact_rec.title <> NVL(l_title, fnd_api.g_miss_char)
7015 )
7016 )
7017 THEN
7018 validate_lookup (
7019 p_column => 'title',
7020 p_lookup_type => 'CONTACT_TITLE',
7021 p_column_value => p_org_contact_rec.title,
7022 x_return_status => x_return_status);
7023
7024 -- IF g_debug THEN
7025 -- hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7026 -- 'title is lookup code in lookup type CONTACT_TITLE. ' ||
7027 -- 'x_return_status = ' || x_return_status, l_debug_prefix);
7028 --- END IF;
7029
7030 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7031 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'title is lookup code in lookup type CONTACT_TITLE. ' ||
7032 'x_return_status = ' || x_return_status,
7033 p_msg_level=>fnd_log.level_statement);
7034 END IF;
7035
7036
7037 END IF;
7038 */
7039
7040 --------------------------
7041 -- validate job_title_code
7042 --------------------------
7043
7044 -- job_title_code is lookup code in lookup type RESPONSIBILITY
7045 IF p_org_contact_rec.job_title_code IS NOT NULL
7046 AND
7047 p_org_contact_rec.job_title_code <> fnd_api.g_miss_char
7048 AND
7049 (p_create_update_flag = 'C'
7050 OR
7051 (p_create_update_flag = 'U'
7052 AND
7053 p_org_contact_rec.job_title_code <> NVL(l_job_title_code, fnd_api.g_miss_char)
7054 )
7055 )
7056 THEN
7057 validate_lookup (
7058 p_column => 'job_title_code',
7059 p_lookup_type => 'RESPONSIBILITY',
7060 p_column_value => p_org_contact_rec.job_title_code,
7061 x_return_status => x_return_status);
7062
7063 /*IF g_debug THEN
7064 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7065 'job_title_code is lookup code in lookup type RESPONSIBILITY. ' ||
7066 'x_return_status = ' || x_return_status, l_debug_prefix);
7067 END IF;
7068 */
7069 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7070 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7071 p_message=>'job_title_code is lookup code in lookup type RESPONSIBILITY. ' ||
7072 'x_return_status = ' || x_return_status,
7073 p_msg_level=>fnd_log.level_statement);
7074 END IF;
7075
7076
7077 END IF;
7078
7079 -------------------------------
7080 -- validate decision_maker_flag
7081 -------------------------------
7082 /****Logical APIs - validation not required****/
7083 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
7084 -- decision_maker_flag is lookup code in lookup type YES/NO
7085 validate_lookup (
7086 p_column => 'decision_maker_flag',
7087 p_lookup_type => 'YES/NO',
7088 p_column_value => p_org_contact_rec.decision_maker_flag,
7089 x_return_status => x_return_status);
7090
7091 /*IF g_debug THEN
7092 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7093 'decision_maker_flag should be in lookup YES/NO. ' ||
7094 'x_return_status = ' || x_return_status, l_debug_prefix);
7095 END IF;
7096 */
7097 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7098 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'decision_maker_flag should be in lookup YES/NO. ' ||
7099 'x_return_status = ' || x_return_status,
7100 p_msg_level=>fnd_log.level_statement);
7101 END IF;
7102 END IF;
7103
7104 ------------------------------
7105 -- validate reference_use_flag
7106 ------------------------------
7107 /****Logical APIs - validation not required****/
7108 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
7109 -- reference_use_flag is lookup code in lookup type YES/NO
7110 validate_lookup (
7111 p_column => 'reference_use_flag',
7112 p_lookup_type => 'YES/NO',
7113 p_column_value => p_org_contact_rec.reference_use_flag,
7114 x_return_status => x_return_status);
7115
7116 /*IF g_debug THEN
7117 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7118 'reference_use_flag should be in lookup YES/NO. ' ||
7119 'x_return_status = ' || x_return_status, l_debug_prefix);
7120 END IF;
7121 */
7122 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7123 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'reference_use_flag should be in lookup YES/NO. ' ||
7124 'x_return_status = ' || x_return_status,
7125 p_msg_level=>fnd_log.level_statement);
7126 END IF;
7127 END IF;
7128
7129 ---------------------------
7130 -- validate department_code
7131 ---------------------------
7132
7133 -- department_code is lookup code in lookup type DEPARTMENT_TYPE
7134 IF p_org_contact_rec.department_code IS NOT NULL
7135 AND
7136 p_org_contact_rec.department_code <> fnd_api.g_miss_char
7137 AND
7138 (p_create_update_flag = 'C'
7139 OR
7140 (p_create_update_flag = 'U'
7141 AND
7142 p_org_contact_rec.department_code <> NVL(l_department_code, fnd_api.g_miss_char)
7143 )
7144 )
7145 THEN
7146 validate_lookup (
7147 p_column => 'department_code',
7148 p_lookup_type => 'DEPARTMENT_TYPE',
7149 p_column_value => p_org_contact_rec.department_code,
7150 x_return_status => x_return_status);
7151
7152 /*IF g_debug THEN
7153 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7154 'department_code is lookup code in lookup type DEPARTMENT_TYPE. ' ||
7155 'x_return_status = ' || x_return_status, l_debug_prefix);
7156 END IF;
7157 */
7158 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7159 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7160 p_message=>'department_code is lookup code in lookup type DEPARTMENT_TYPE. ' ||
7161 'x_return_status = ' || x_return_status,
7162 p_msg_level=>fnd_log.level_statement);
7163 END IF;
7164
7165
7166 END IF;
7167
7168 -------------------------
7169 -- validate party_site_id
7170 -------------------------
7171
7172 -- if party_site_id is passed, then it must be validated as
7173 -- foreign key to hz_party_sites.party_site_id
7174 IF p_org_contact_rec.party_site_id IS NOT NULL
7175 AND
7176 p_org_contact_rec.party_site_id <> fnd_api.g_miss_num
7177 THEN
7178 BEGIN
7179 SELECT 'Y'
7180 INTO l_dummy
7181 FROM HZ_PARTY_SITES
7182 WHERE PARTY_SITE_ID = p_org_contact_rec.party_site_id;
7183 EXCEPTION
7184 WHEN NO_DATA_FOUND THEN
7185 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
7186 fnd_message.set_token('FK', 'party_site_id');
7187 fnd_message.set_token('COLUMN', 'party_site_id');
7188 fnd_message.set_token('TABLE', 'hz_party_sites');
7189 fnd_msg_pub.add;
7190 x_return_status := fnd_api.g_ret_sts_error;
7191 END;
7192
7193 /*IF g_debug THEN
7194 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7195 'party_site_id is foreign key to hz_party_sites.party_site_id. ' ||
7196 'x_return_status = ' || x_return_status, l_debug_prefix);
7197 END IF;
7198 */
7199 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7200 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7201 p_message=>'party_site_id is foreign key to hz_party_sites.party_site_id. ' ||
7202 'x_return_status = ' || x_return_status,
7203 p_msg_level=>fnd_log.level_statement);
7204 END IF;
7205
7206
7207 END IF;
7208
7209 -- if party_site_id is passed then its party_id should be
7210 -- same as the object_id of the relationship record for the org_contact
7211 IF p_org_contact_rec.party_site_id IS NOT NULL
7212 AND
7213 p_org_contact_rec.party_site_id <> fnd_api.g_miss_num
7214 THEN
7215 BEGIN
7216 SELECT 'Y'
7217 INTO l_dummy
7218 FROM HZ_PARTY_SITES
7219 WHERE PARTY_SITE_ID = p_org_contact_rec.party_site_id
7220 AND PARTY_ID = p_org_contact_rec.party_rel_rec.object_id;
7221 EXCEPTION
7222 WHEN NO_DATA_FOUND THEN
7223 fnd_message.set_name('AR', 'HZ_API_PARTY_OBJECT_MISMATCH');
7224 fnd_msg_pub.add;
7225 x_return_status := fnd_api.g_ret_sts_error;
7226 END;
7227
7228 /*IF g_debug THEN
7229 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7230 'party_id of party site should be same as the object_id of the relationship record. ' ||
7231 'x_return_status = ' || x_return_status, l_debug_prefix);
7232 END IF;
7233 */
7234 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7235 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7236 p_message=>'party_id of party site should be same as the object_id of the relationship record. ' ||
7237 'x_return_status = ' || x_return_status,
7238 p_msg_level=>fnd_log.level_statement);
7239 END IF;
7240
7241
7242 END IF;
7243
7244 --------------------------------------
7245 -- validate created_by_module
7246 --------------------------------------
7247
7248 validate_created_by_module(
7249 p_create_update_flag => p_create_update_flag,
7250 p_created_by_module => p_org_contact_rec.created_by_module,
7251 p_old_created_by_module => l_created_by_module,
7252 x_return_status => x_return_status);
7253
7254 --------------------------------------
7255 -- validate application_id
7256 --------------------------------------
7257
7258 validate_application_id(
7259 p_create_update_flag => p_create_update_flag,
7260 p_application_id => p_org_contact_rec.application_id,
7261 p_old_application_id => l_application_id,
7262 x_return_status => x_return_status);
7263
7264 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
7265 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_org_contact (-)',
7266 p_msg_level=>fnd_log.level_procedure);
7267 END IF;
7268
7269 END validate_org_contact;
7270
7271 /**
7272 * PROCEDURE validate_org_contact_role
7273 *
7274 * DESCRIPTION
7275 * Validates org contact role record. Checks for
7276 * uniqueness
7277 * lookup types
7278 * mandatory columns
7279 * non-updateable fields
7280 * foreign key validations
7281 * other validations
7282 *
7283 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
7284 *
7285 * ARGUMENTS
7286 * IN:
7287 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
7288 * p_org_contact_role_rec Org contact role record.
7289 * p_rowid Rowid of the record (used only in update mode).
7290 * IN/OUT:
7291 * x_return_status Return status after the call. The status can
7292 * be FND_API.G_RET_STS_SUCCESS (success),
7293 * fnd_api.g_ret_sts_error (error),
7294 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
7295 *
7296 * NOTES
7297 *
7298 * MODIFICATION HISTORY
7299 *
7300 * 07-23-2001 Indrajit Sen o Created.
7301 *
7302 */
7303
7304 PROCEDURE validate_org_contact_role(
7305 p_create_update_flag IN VARCHAR2,
7306 p_org_contact_role_rec IN HZ_PARTY_CONTACT_V2PUB.ORG_CONTACT_ROLE_REC_TYPE,
7307 p_rowid IN ROWID,
7308 x_return_status IN OUT NOCOPY VARCHAR2
7309 ) IS
7310
7311 l_org_contact_id NUMBER;
7312 l_orig_system_reference VARCHAR2(240);
7313 l_role_id NUMBER;
7314 l_dummy VARCHAR2(1);
7315 l_created_by_module VARCHAR2(150);
7316 l_application_id NUMBER;
7317 l_count NUMBER;
7318 l_status VARCHAR2(1);
7319 l_debug_prefix VARCHAR2(30) := '';
7320 l_validate_osr varchar2(1) := 'Y';
7321 l_mosr_owner_table_id number;
7322 l_temp_return_status VARCHAR2(10); -- for storing return status from
7323 -- hz_orig_system_ref_pub.get_owner_table_id
7324 BEGIN
7325
7326 --enable_debug;
7327
7328 -- Debug info.
7329 /*IF g_debug THEN
7330 hz_utility_v2pub.debug ('validate_org_contact_role (+)');
7331 END IF;
7332 */
7333 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
7334 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_org_contact_role (+)',
7335 p_msg_level=>fnd_log.level_procedure);
7336 END IF;
7337
7338 IF p_create_update_flag = 'U' THEN
7339 SELECT ORG_CONTACT_ID,
7340 ORIG_SYSTEM_REFERENCE,
7341 STATUS,
7342 CREATED_BY_MODULE,
7343 APPLICATION_ID
7344 INTO l_org_contact_id,
7345 l_orig_system_reference,
7346 l_status,
7347 l_created_by_module,
7348 l_application_id
7349 FROM HZ_ORG_CONTACT_ROLES
7350 WHERE ROWID = p_rowid;
7351 END IF;
7352
7353 --------------------------
7354 -- validate org_contact_id
7355 --------------------------
7356 /****Logical APIs - validation not required****/
7357 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
7358 -- org_contact_id is mandatory field
7359 validate_mandatory (
7360 p_create_update_flag => p_create_update_flag,
7361 p_column => 'org_contact_id',
7362 p_column_value => p_org_contact_role_rec.org_contact_id,
7363 x_return_status => x_return_status);
7364
7365 /*IF g_debug THEN
7366 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7367 'org_contact_id is mandatory field. ' ||
7368 'x_return_status = ' || x_return_status, l_debug_prefix);
7369 END IF;
7370 */
7371 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7372 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'org_contact_id is mandatory field. ' ||
7373 'x_return_status = ' || x_return_status,
7374 p_msg_level=>fnd_log.level_statement);
7375 END IF;
7376
7377 -- org_contact_id is non-updateable field
7378 IF p_create_update_flag = 'U' THEN
7379 validate_nonupdateable (
7380 p_column => 'org_contact_id',
7381 p_column_value => p_org_contact_role_rec.org_contact_id,
7382 p_old_column_value => l_org_contact_id,
7383 x_return_status => x_return_status);
7384
7385 /*IF g_debug THEN
7386 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7387 'org_contact_id is non-updateable field. ' ||
7388 'x_return_status = ' || x_return_status, l_debug_prefix);
7389 END IF;
7390 */
7391 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7392 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'org_contact_id is non-updateable field. ' ||
7393 'x_return_status = ' || x_return_status,
7394 p_msg_level=>fnd_log.level_statement);
7395 END IF;
7396
7397 END IF;
7398
7399 -- org_contact_id is foreign key of hz_org_contacts.org_contact_id.
7400 -- do not need to check during update because org_contact_id is
7401 -- non-updateable.
7402 IF p_create_update_flag = 'C'
7403 AND
7404 p_org_contact_role_rec.org_contact_id IS NOT NULL
7405 AND p_org_contact_role_rec.org_contact_id <> fnd_api.g_miss_num
7406 THEN
7407 BEGIN
7408 SELECT 'Y'
7409 INTO l_dummy
7410 FROM HZ_ORG_CONTACTS
7411 WHERE ORG_CONTACT_ID = p_org_contact_role_rec.org_contact_id;
7412 EXCEPTION
7413 WHEN NO_DATA_FOUND THEN
7414 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
7415 fnd_message.set_token('FK', 'org_contact_id');
7416 fnd_message.set_token('COLUMN', 'org_contact_id');
7417 fnd_message.set_token('TABLE', 'hz_org_contacts');
7418 fnd_msg_pub.add;
7419 x_return_status := fnd_api.g_ret_sts_error;
7420 END;
7421
7422 /*IF g_debug THEN
7423 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7424 'org_contact_id is foreign key of hz_org_contacts.org_contact_id. ' ||
7425 'x_return_status = ' || x_return_status, l_debug_prefix);
7426 END IF;
7427 */
7428 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7429 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7430 p_message=>'org_contact_id is foreign key of hz_org_contacts.org_contact_id. ' ||
7431 'x_return_status = ' || x_return_status,
7432 p_msg_level=>fnd_log.level_statement);
7433 END IF;
7434
7435 END IF;
7436 END IF;
7437
7438 ---------------------------------
7439 -- validate orig_system_reference
7440 ---------------------------------
7441 /****Logical APIs - validation not required****/
7442 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
7443 IF (p_org_contact_role_rec.orig_system is not null
7444 and p_org_contact_role_rec.orig_system <>fnd_api.g_miss_char)
7445 and (p_org_contact_role_rec.orig_system_reference is not null
7446 and p_org_contact_role_rec.orig_system_reference <>fnd_api.g_miss_char)
7447 and p_create_update_flag = 'U'
7448
7449 then
7450 hz_orig_system_ref_pub.get_owner_table_id
7451 (p_orig_system => p_org_contact_role_rec.orig_system,
7452 p_orig_system_reference => p_org_contact_role_rec.orig_system_reference,
7453 p_owner_table_name => 'HZ_ORG_CONTACT_ROLES',
7454 x_owner_table_id => l_mosr_owner_table_id,
7455 x_return_status => l_temp_return_status);
7456
7457 IF (l_temp_return_status = fnd_api.g_ret_sts_success AND
7458 l_mosr_owner_table_id= nvl(p_org_contact_role_rec.org_contact_role_id,l_mosr_owner_table_id))
7459 THEN
7460 l_validate_osr := 'N';
7461 -- if we can get owner_table_id based on osr and os in mosr table,
7462 -- we will use unique osr and os for update - bypass osr validation
7463 ELSE l_validate_osr := 'Y';
7464 END IF;
7465
7466 -- Call to hz_orig_system_ref_pub.get_owner_table_id API was resetting the
7467 -- x_return_status. Set x_return_status to error, ONLY if there is error.
7468 -- In case of success, leave it to carry over previous value as before this call.
7469 -- Fix for Bug 5498116 (29-AUG-2006)
7470 IF (l_temp_return_status = FND_API.G_RET_STS_ERROR) THEN
7471 x_return_status := l_temp_return_status;
7472 END IF;
7473
7474 end if;
7475 -- orig_system_reference is non-updateable field
7476 IF p_create_update_flag = 'U' and l_validate_osr = 'Y' THEN
7477 validate_nonupdateable (
7478 p_column => 'orig_system_reference',
7479 p_column_value => p_org_contact_role_rec.orig_system_reference,
7480 p_old_column_value => l_orig_system_reference,
7481 x_return_status => x_return_status);
7482
7483 /*IF g_debug THEN
7484 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7485 'orig_system_reference is non-updateable field. ' ||
7486 'x_return_status = ' || x_return_status, l_debug_prefix);
7487 END IF;
7488 */
7489 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7490 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7491 p_message=>'orig_system_reference is non-updateable field. ' ||
7492 'x_return_status = ' || x_return_status,
7493 p_msg_level=>fnd_log.level_statement);
7494 END IF;
7495
7496 END IF;
7497 END IF;
7498
7499 ---------------------
7500 -- validate role_type
7501 ---------------------
7502
7503 -- role_type is mandatory field
7504 validate_mandatory (
7505 p_create_update_flag => p_create_update_flag,
7506 p_column => 'role_type',
7507 p_column_value => p_org_contact_role_rec.role_type,
7508 x_return_status => x_return_status);
7509
7510 /*IF g_debug THEN
7511 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7512 'role_type is mandatory field. ' ||
7513 'x_return_status = ' || x_return_status, l_debug_prefix);
7514 END IF;
7515 */
7516 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7517 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'role_type is mandatory field. ' ||
7518 'x_return_status = ' || x_return_status,
7519 p_msg_level=>fnd_log.level_statement);
7520 END IF;
7521
7522 -- role_type cannot be set to null during update
7523 IF p_create_update_flag = 'U' THEN
7524 validate_cannot_update_to_null (
7525 p_column => 'role_type',
7526 p_column_value => p_org_contact_role_rec.role_type,
7527 x_return_status => x_return_status);
7528
7529 /*IF g_debug THEN
7530 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7531 'role_type cannot be set to null during update. ' ||
7532 'x_return_status = ' || x_return_status, l_debug_prefix);
7533 END IF;
7534 */
7535 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7536 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7537 p_message=>'role_type cannot be set to null during update. ' ||
7538 'x_return_status = ' || x_return_status,
7539 p_msg_level=>fnd_log.level_statement);
7540 END IF;
7541
7542 END IF;
7543
7544 -- role_type is lookup code in lookup type CONTACT_ROLE_TYPE
7545 validate_lookup (
7546 p_column => 'role_type',
7547 p_lookup_type => 'CONTACT_ROLE_TYPE',
7548 p_column_value => p_org_contact_role_rec.role_type,
7549 x_return_status => x_return_status);
7550
7551 /*IF g_debug THEN
7552 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7553 'role_type is lookup code in lookup type CONTACT_ROLE_TYPE. ' ||
7554 'x_return_status = ' || x_return_status, l_debug_prefix);
7555 END IF;
7556 */
7557 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7558 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7559 p_message=>'role_type is lookup code in lookup type CONTACT_ROLE_TYPE. ' ||
7560 'x_return_status = ' || x_return_status,
7561 p_msg_level=>fnd_log.level_statement);
7562 END IF;
7563
7564 ------------------------
7565 -- validate primary_flag
7566 ------------------------
7567 /****Logical APIs - validation not required****/
7568 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
7569 -- primary_flag is lookup code in lookup type YES/NO
7570 validate_lookup (
7571 p_column => 'primary_flag',
7572 p_lookup_type => 'YES/NO',
7573 p_column_value => p_org_contact_role_rec.primary_flag,
7574 x_return_status => x_return_status);
7575
7576 /*IF g_debug THEN
7577 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7578 'primary_flag should be in lookup YES/NO. ' ||
7579 'x_return_status = ' || x_return_status, l_debug_prefix);
7580 END IF;
7581 */
7582 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7583 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'primary_flag should be in lookup YES/NO. ' ||
7584 'x_return_status = ' || x_return_status,
7585 p_msg_level=>fnd_log.level_statement);
7586 END IF;
7587 END IF;
7588
7589 -- primary_flag can be set only for one record of org_contact_id.
7590 IF p_org_contact_role_rec.primary_flag = 'Y' THEN
7591 BEGIN
7592 SELECT ORG_CONTACT_ROLE_ID
7593 INTO l_role_id
7594 FROM HZ_ORG_CONTACT_ROLES
7595 WHERE ORG_CONTACT_ID = p_org_contact_role_rec.org_contact_id
7596 AND PRIMARY_FLAG = 'Y'
7597 AND ROWNUM = 1;
7598 /* Bug Fix: 3936336 */
7599 IF l_role_id <> p_org_contact_role_rec.org_contact_role_id OR
7600 p_create_update_flag = 'C' THEN
7601 fnd_message.set_name('AR', 'HZ_API_UNIQUE_PRIMARY_ROLE');
7602 fnd_msg_pub.add;
7603 x_return_status := fnd_api.g_ret_sts_error;
7604 END IF;
7605 EXCEPTION
7606 WHEN NO_DATA_FOUND THEN
7607 NULL;
7608 END;
7609
7610 /*IF g_debug THEN
7611 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7612 'primary_flag can be set only for one record of org_contact_id. ' ||
7613 'x_return_status = ' || x_return_status, l_debug_prefix);
7614 END IF;
7615 */
7616 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7617 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7618 p_message=>'primary_flag can be set only for one record of org_contact_id. ' ||
7619 'x_return_status = ' || x_return_status,
7620 p_msg_level=>fnd_log.level_statement);
7621 END IF;
7622
7623 END IF;
7624
7625 -------------------------------------------------------
7626 -- validate combination of org_contact_id and role_type
7627 -------------------------------------------------------
7628
7629 -- combination of org_contact_id and role_type must be unique.
7630 -- validates only when role_id in the database is different from
7631 -- the role_id to be updated.
7632
7633 BEGIN
7634 SELECT ORG_CONTACT_ROLE_ID
7635 INTO l_role_id
7636 FROM HZ_ORG_CONTACT_ROLES
7637 WHERE ORG_CONTACT_ID = NVL(p_org_contact_role_rec.org_contact_id, fnd_api.g_miss_num)
7638 AND ROLE_TYPE = p_org_contact_role_rec.role_type
7639 AND STATUS = 'A' -- Added: Bug#6411541
7640 AND ROWNUM = 1;
7641
7642 IF l_role_id <> nvl(p_org_contact_role_rec.org_contact_role_id, fnd_api.g_miss_num) THEN
7643 fnd_message.set_name('AR', 'HZ_API_UNIQUE_ROLE_TYPE');
7644 fnd_msg_pub.add;
7645 x_return_status := fnd_api.g_ret_sts_error;
7646 END IF;
7647 EXCEPTION
7648 WHEN NO_DATA_FOUND THEN
7649 NULL;
7650 END;
7651
7652 /*IF g_debug THEN
7653 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7654 'combination of org_contact_id and role_type must be unique. ' ||
7655 'x_return_status = ' || x_return_status, l_debug_prefix);
7656 END IF;
7657 */
7658 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7659 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7660 p_message=>'combination of org_contact_id and role_type must be unique. ' ||
7661 'x_return_status = ' || x_return_status,
7662 p_msg_level=>fnd_log.level_statement);
7663 END IF;
7664
7665 -----------------------------------------
7666 -- validate primary_contact_per_role_type
7667 -----------------------------------------
7668
7669 -- primary_contact_per_role_type is lookup code in lookup type YES/NO
7670 validate_lookup (
7671 p_column => 'primary_contact_per_role_type',
7672 p_lookup_type => 'YES/NO',
7673 p_column_value => p_org_contact_role_rec.primary_contact_per_role_type,
7674 x_return_status => x_return_status);
7675
7676 /*IF g_debug THEN
7677 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7678 'primary_contact_per_role_type should be in lookup YES/NO. ' ||
7679 'x_return_status = ' || x_return_status, l_debug_prefix);
7680 END IF;
7681 */
7682 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7683 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7684 p_message=>'primary_contact_per_role_type should be in lookup YES/NO. ' ||
7685 'x_return_status = ' || x_return_status,
7686 p_msg_level=>fnd_log.level_statement);
7687 END IF;
7688
7689 -- only one org contact can be set as primary within
7690 -- same organization party.
7691 IF p_org_contact_role_rec.primary_contact_per_role_type = 'Y' THEN
7692 BEGIN
7693 SELECT 'Y'
7694 INTO l_dummy
7695 FROM HZ_RELATIONSHIPS PR,
7696 HZ_ORG_CONTACTS OC,
7697 HZ_ORG_CONTACT_ROLES OCR,
7698 HZ_RELATIONSHIPS PR2,
7699 HZ_ORG_CONTACTS OC2
7700 WHERE OCR.PRIMARY_CONTACT_PER_ROLE_TYPE = 'Y'
7701 AND OCR.ROLE_TYPE = p_org_contact_role_rec.role_type
7702 AND OCR.ORG_CONTACT_ID = OC.ORG_CONTACT_ID
7703 AND OC.PARTY_RELATIONSHIP_ID = PR.RELATIONSHIP_ID
7704 AND PR.OBJECT_ID = PR2.OBJECT_ID
7705 AND PR2.RELATIONSHIP_ID = OC2.PARTY_RELATIONSHIP_ID
7706 AND OC2.ORG_CONTACT_ID = P_ORG_CONTACT_ROLE_REC.ORG_CONTACT_ID
7707 AND PR.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
7708 AND PR.OBJECT_TABLE_NAME = 'HZ_PARTIES'
7709 AND PR.DIRECTIONAL_FLAG = 'F'
7710 AND PR2.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
7711 AND PR2.OBJECT_TABLE_NAME = 'HZ_PARTIES'
7712 AND PR2.DIRECTIONAL_FLAG = 'F'
7713 and ocr.org_contact_role_id <>p_org_contact_role_rec.org_contact_role_id; --db primary role id is not same as the pass in role id
7714
7715 fnd_message.set_name('AR', 'HZ_API_UNIQUE_PRIMARY_ORG_CONT');
7716 fnd_msg_pub.add;
7717 x_return_status := fnd_api.g_ret_sts_error;
7718 EXCEPTION
7719 WHEN NO_DATA_FOUND THEN
7720 NULL;
7721 END;
7722
7723 /*IF g_debug THEN
7724 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7725 'only one org contact can be set as primary within same organization party. ' ||
7726 'x_return_status = ' || x_return_status, l_debug_prefix);
7727 END IF;
7728 */
7729 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7730 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7731 p_message=>'only one org contact can be set as primary within same organization party. ' ||
7732 'x_return_status = ' || x_return_status,
7733 p_msg_level=>fnd_log.level_statement);
7734 END IF;
7735
7736 END IF;
7737
7738 ------------------
7739 -- validate status
7740 ------------------
7741 /****Logical APIs - validation not required****/
7742 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
7743 -- status is lookup code in lookup type REGISTRY_STATUS
7744 IF p_org_contact_role_rec.status IS NOT NULL
7745 AND
7746 p_org_contact_role_rec.status <> fnd_api.g_miss_char
7747 AND
7748 (p_create_update_flag = 'C'
7749 OR
7750 (p_create_update_flag = 'U'
7751 AND
7752 p_org_contact_role_rec.status <> NVL(l_status, fnd_api.g_miss_char)
7753 )
7754 )
7755 THEN
7756 validate_lookup (
7757 p_column => 'status',
7758 p_lookup_type => 'REGISTRY_STATUS',
7759 p_column_value => p_org_contact_role_rec.status,
7760 x_return_status => x_return_status);
7761
7762 /*IF g_debug THEN
7763 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7764 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
7765 'x_return_status = ' || x_return_status, l_debug_prefix);
7766 END IF;
7767 */
7768 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7769 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7770 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
7771 'x_return_status = ' || x_return_status,
7772 p_msg_level=>fnd_log.level_statement);
7773 END IF;
7774
7775 END IF;
7776 END IF;
7777
7778 -- status cannot be set to null during update
7779 IF p_create_update_flag = 'U' THEN
7780 validate_cannot_update_to_null (
7781 p_column => 'status',
7782 p_column_value => p_org_contact_role_rec.status,
7783 x_return_status => x_return_status);
7784 END IF;
7785
7786 --------------------------------------
7787 -- validate created_by_module
7788 --------------------------------------
7789
7790 validate_created_by_module(
7791 p_create_update_flag => p_create_update_flag,
7792 p_created_by_module => p_org_contact_role_rec.created_by_module,
7793 p_old_created_by_module => l_created_by_module,
7794 x_return_status => x_return_status);
7795
7796 --------------------------------------
7797 -- validate application_id
7798 --------------------------------------
7799
7800 validate_application_id(
7801 p_create_update_flag => p_create_update_flag,
7802 p_application_id => p_org_contact_role_rec.application_id,
7803 p_old_application_id => l_application_id,
7804 x_return_status => x_return_status);
7805
7806 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
7807 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_org_contact_role (-)',
7808 p_msg_level=>fnd_log.level_procedure);
7809 END IF;
7810
7811 END validate_org_contact_role;
7812
7813 /**
7814 * PROCEDURE validate_person_language
7815 *
7816 * DESCRIPTION
7817 * Validates person language record. Checks for
7818 * uniqueness
7819 * lookup types
7820 * mandatory columns
7821 * non-updateable fields
7822 * foreign key validations
7823 * other validations
7824 *
7825 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
7826 *
7827 * ARGUMENTS
7828 * IN:
7829 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
7830 * p_person_language_rec Person language record.
7831 * p_rowid Rowid of the record (used only in update mode).
7832 * IN/OUT:
7833 * x_return_status Return status after the call. The status can
7834 * be FND_API.G_RET_STS_SUCCESS (success),
7835 * fnd_api.g_ret_sts_error (error),
7836 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
7837 *
7838 * NOTES
7839 *
7840 * MODIFICATION HISTORY
7841 *
7842 * 07-23-2001 Indrajit Sen o Created.
7843 * 01-10-2003 Porkodi Chinnandar o Added few lines to have validation for spoken_
7844 * comprehension_level. The value entered for spoken_
7845 * comprehension_level is validated against lookup type
7846 * HZ_LANGUAGE_PROFICIENCY.
7847 * 18-03-2003 Porkodi Chinnandar o 2820135, Party should have only one native_languge and
7848 * one primary language. This check has been moved to
7849 * ARH2PISB due to the update involved in this.
7850 * 01-MAR-2004 Rajib Ranjan Borah o Bug 3363458.Modified previous validation to ensure
7851 * that the primary language cannot be inactive.
7852 * Added local variable l_primary_language_indicator
7853 * for the same.
7854 * 03-May-3004 Venkata Sowjanya S Bug No : 3609601. Commented the statements which sets tokens Column1,Column2
7855 * for message HZ_API_INACTIVE_CANNOT_PRIM
7856 */
7857
7858 PROCEDURE validate_person_language(
7859 p_create_update_flag IN VARCHAR2,
7860 p_person_language_rec IN HZ_PERSON_INFO_V2PUB.PERSON_LANGUAGE_REC_TYPE,
7861 p_rowid IN ROWID ,
7862 x_return_status IN OUT NOCOPY VARCHAR2
7863 ) IS
7864
7865 l_count NUMBER;
7866 l_dummy VARCHAR2(1);
7867 l_party_id NUMBER := p_person_language_rec.party_id;
7868 l_created_by_module VARCHAR2(150);
7869 l_application_id NUMBER;
7870 l_language_name VARCHAR2(4);
7871 l_status VARCHAR2(1);
7872 l_debug_prefix VARCHAR2(30) := '';
7873 l_primary_language_indicator VARCHAR2(1);
7874
7875 BEGIN
7876
7877 --enable_debug;
7878
7879 -- Debug info.
7880 /*IF g_debug THEN
7881 hz_utility_v2pub.debug ('validate_person_language (+)');
7882 END IF;
7883 */
7884 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
7885 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_person_language (+)',
7886 p_msg_level=>fnd_log.level_procedure);
7887 END IF;
7888
7889 -- do the query to get old values for update
7890 IF p_create_update_flag = 'U'
7891 THEN
7892 SELECT PARTY_ID,
7893 LANGUAGE_NAME,
7894 STATUS,
7895 CREATED_BY_MODULE,
7896 APPLICATION_ID,
7897 PRIMARY_LANGUAGE_INDICATOR
7898 INTO l_party_id,
7899 l_language_name,
7900 l_status,
7901 l_created_by_module,
7902 l_application_id,
7903 l_primary_language_indicator
7904 FROM HZ_PERSON_LANGUAGE
7905 WHERE ROWID = p_rowid;
7906 END IF;
7907
7908 --------------------------
7909 -- validation for party_id
7910 --------------------------
7911 /****Logical APIs - validation not required****/
7912 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
7913 -- party_id is mandatory field
7914 IF p_create_update_flag = 'C' THEN
7915 validate_mandatory (
7916 p_create_update_flag => p_create_update_flag,
7917 p_column => 'party_id',
7918 p_column_value => p_person_language_rec.party_id,
7919 x_return_status => x_return_status);
7920
7921 /*IF g_debug THEN
7922 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7923 'party_id is mandatory field. ' ||
7924 'x_return_status = ' || x_return_status, l_debug_prefix);
7925 END IF;
7926 */
7927 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7928 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is mandatory field. ' ||
7929 'x_return_status = ' || x_return_status,
7930 p_msg_level=>fnd_log.level_statement);
7931 END IF;
7932
7933 END IF;
7934
7935 -- party_id is non-updateable field
7936 IF p_create_update_flag = 'U' THEN
7937 validate_nonupdateable (
7938 p_column => 'party_id',
7939 p_column_value => p_person_language_rec.party_id,
7940 p_old_column_value => l_party_id,
7941 x_return_status => x_return_status);
7942
7943 /*IF g_debug THEN
7944 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7945 'party_id is non-updateable field. ' ||
7946 'x_return_status = ' || x_return_status, l_debug_prefix);
7947 END IF;
7948 */
7949 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7950 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable field. ' ||
7951 'x_return_status = ' || x_return_status,
7952 p_msg_level=>fnd_log.level_statement);
7953 END IF;
7954
7955 END IF;
7956
7957 -- party_id has foreign key HZ_PARTIES.PARTY_ID
7958 IF p_create_update_flag = 'C'
7959 AND
7960 p_person_language_rec.party_id IS NOT NULL
7961 AND
7962 p_person_language_rec.party_id <> fnd_api.g_miss_num
7963 THEN
7964 BEGIN
7965 SELECT 'Y'
7966 INTO l_dummy
7967 FROM hz_parties
7968 WHERE party_id = p_person_language_rec.party_id;
7969
7970 EXCEPTION
7971 WHEN NO_DATA_FOUND THEN
7972 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
7973 fnd_message.set_token('FK', 'party_id');
7974 fnd_message.set_token('COLUMN', 'party_id');
7975 fnd_message.set_token('TABLE', 'hz_parties');
7976 fnd_msg_pub.add;
7977 x_return_status := fnd_api.g_ret_sts_error;
7978 END;
7979
7980 /*IF g_debug THEN
7981 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7982 'party_id has foreign key hz_parties.party_id. ' ||
7983 'x_return_status = ' || x_return_status, l_debug_prefix);
7984 END IF;
7985 */
7986 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7987 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
7988 'x_return_status = ' || x_return_status,
7989 p_msg_level=>fnd_log.level_statement);
7990 END IF;
7991
7992 END IF;
7993 END IF;
7994
7995 -------------------------------
7996 -- validation for language_name
7997 -------------------------------
7998
7999 -- language_name is mandatory field
8000 IF p_create_update_flag = 'C' THEN
8001 validate_mandatory (
8002 p_create_update_flag => p_create_update_flag,
8003 p_column => 'language_name',
8004 p_column_value => p_person_language_rec.language_name,
8005 x_return_status => x_return_status);
8006
8007 /*IF g_debug THEN
8008 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8009 'language_name is mandatory field. ' ||
8010 'x_return_status = ' || x_return_status, l_debug_prefix);
8011 END IF;
8012 */
8013 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8014 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'language_name is mandatory field. ' ||
8015 'x_return_status = ' || x_return_status,
8016 p_msg_level=>fnd_log.level_statement);
8017 END IF;
8018
8019 END IF;
8020
8021 -- language_name is non-updateable field
8022 IF p_create_update_flag = 'U' THEN
8023 validate_nonupdateable (
8024 p_column => 'language_name',
8025 p_column_value => p_person_language_rec.language_name,
8026 p_old_column_value => l_language_name,
8027 x_return_status => x_return_status);
8028
8029 /*IF g_debug THEN
8030 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8031 'language_name is non-updateable field. ' ||
8032 'x_return_status = ' || x_return_status, l_debug_prefix);
8033 END IF;
8034 */
8035 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8036 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'language_name is non-updateable field. ' ||
8037 'x_return_status = ' || x_return_status,
8038 p_msg_level=>fnd_log.level_statement);
8039 END IF;
8040
8041 END IF;
8042
8043 -- language_name has foreign key fnd_languages.language_code
8044 IF p_person_language_rec.language_name IS NOT NULL
8045 AND
8046 p_person_language_rec.language_name <> fnd_api.g_miss_char
8047 THEN
8048 BEGIN
8049 SELECT 'Y'
8050 INTO l_dummy
8051 FROM FND_LANGUAGES
8052 WHERE LANGUAGE_CODE = p_person_language_rec.language_name;
8053 EXCEPTION
8054 WHEN NO_DATA_FOUND THEN
8055 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
8056 fnd_message.set_token('FK', 'language_name');
8057 fnd_message.set_token('COLUMN', 'language_code');
8058 fnd_message.set_token('TABLE', 'fnd_languages');
8059 fnd_msg_pub.add;
8060 x_return_status := fnd_api.g_ret_sts_error;
8061 END;
8062
8063 /*IF g_debug THEN
8064 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8065 'language_name has foreign key fnd_languages.language_code. ' ||
8066 'x_return_status = ' || x_return_status, l_debug_prefix);
8067 END IF;
8068 */
8069 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8070 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8071 p_message=>'language_name has foreign key fnd_languages.language_code. ' ||
8072 'x_return_status = ' || x_return_status,
8073 p_msg_level=>fnd_log.level_statement);
8074 END IF;
8075
8076 END IF;
8077
8078 -- there can be only one record for a given party and language
8079 BEGIN
8080 SELECT 1
8081 INTO l_dummy
8082 FROM HZ_PERSON_LANGUAGE
8083 WHERE PARTY_ID = l_party_id
8084 AND LANGUAGE_NAME = p_person_language_rec.language_name
8085 AND LANGUAGE_USE_REFERENCE_ID <> NVL(p_person_language_rec.language_use_reference_id, fnd_api.g_miss_num);
8086
8087 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
8088 fnd_message.set_token('COLUMN', 'language_name');
8089 fnd_msg_pub.add;
8090 x_return_status := fnd_api.g_ret_sts_error;
8091
8092 EXCEPTION
8093 WHEN NO_DATA_FOUND THEN
8094 NULL;
8095 END;
8096
8097 ---------------------------------
8098 -- validation for native_language
8099 ---------------------------------
8100 /****Logical APIs - validation not required****/
8101 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8102 -- native_language is lookup code in lookup type YES/NO
8103 validate_lookup (
8104 p_column => 'native_language',
8105 p_lookup_type => 'YES/NO',
8106 p_column_value => p_person_language_rec.native_language,
8107 x_return_status => x_return_status);
8108
8109 /*IF g_debug THEN
8110 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8111 'native_language should be in lookup YES/NO. ' ||
8112 'x_return_status = ' || x_return_status, l_debug_prefix);
8113 END IF;
8114 */
8115 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8116 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'native_language should be in lookup YES/NO. ' ||
8117 'x_return_status = ' || x_return_status,
8118 p_msg_level=>fnd_log.level_statement);
8119 END IF;
8120 END IF;
8121
8122 --------------------------------------------
8123 -- validation for spoken_comprehension_level
8124 --------------------------------------------
8125
8126 -- spoken_comprehension_level is lookup code in lookup type HZ_LANGUAGE_PROFICIENCY
8127 validate_lookup (
8128 p_column => 'spoken_comprehension_level',
8129 p_lookup_type => 'HZ_LANGUAGE_PROFICIENCY',
8130 p_column_value => p_person_language_rec.spoken_comprehension_level,
8131 x_return_status => x_return_status);
8132
8133
8134 /*IF g_debug THEN
8135 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8136 'spoken_comprehension_level should be in lookup HZ_LANGUAGE_PROFICIENCY. ' ||
8137 'x_return_status = ' || x_return_status, l_debug_prefix);
8138 END IF;
8139 */
8140 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8141 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8142 p_message=>'spoken_comprehension_level should be in lookup HZ_LANGUAGE_PROFICIENCY. ' ||
8143 'x_return_status = ' || x_return_status,
8144 p_msg_level=>fnd_log.level_statement);
8145 END IF;
8146
8147
8148 --------------------------------------------
8149 -- validation for primary_language_indicator
8150 --------------------------------------------
8151 /****Logical APIs - validation not required****/
8152 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8153 -- primary_language_indicator is lookup code in lookup type YES/NO
8154 validate_lookup (
8155 p_column => 'primary_language_indicator',
8156 p_lookup_type => 'YES/NO',
8157 p_column_value => p_person_language_rec.primary_language_indicator,
8158 x_return_status => x_return_status);
8159
8160 /*IF g_debug THEN
8161 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8162 'primary_language_indicator should be in lookup YES/NO. ' ||
8163 'x_return_status = ' || x_return_status, l_debug_prefix);
8164 END IF;
8165 */
8166 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8167 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8168 p_message=>'primary_language_indicator should be in lookup YES/NO. ' ||
8169 'x_return_status = ' || x_return_status,
8170 p_msg_level=>fnd_log.level_statement);
8171 END IF;
8172 END IF;
8173
8174 ------------------------
8175 -- validation for status
8176 ------------------------
8177 /****Logical APIs - validation not required****/
8178 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8179 -- status is lookup code in lookup type REGISTRY_STATUS
8180 IF p_person_language_rec.status IS NOT NULL
8181 AND
8182 p_person_language_rec.status <> fnd_api.g_miss_char
8183 AND
8184 (p_create_update_flag = 'C'
8185 OR
8186 (p_create_update_flag = 'U'
8187 AND
8188 p_person_language_rec.status <> NVL(l_status, fnd_api.g_miss_char)
8189 )
8190 )
8191 THEN
8192 validate_lookup (
8193 p_column => 'status',
8194 p_lookup_type => 'REGISTRY_STATUS',
8195 p_column_value => p_person_language_rec.status,
8196 x_return_status => x_return_status);
8197
8198 /*IF g_debug THEN
8199 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8200 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
8201 'x_return_status = ' || x_return_status, l_debug_prefix);
8202 END IF;
8203 */
8204 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8205 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8206 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
8207 'x_return_status = ' || x_return_status,
8208 p_msg_level=>fnd_log.level_statement);
8209 END IF;
8210
8211 END IF;
8212 END IF;
8213
8214 -- status cannot be set to null during update
8215 IF p_create_update_flag = 'U' THEN
8216 validate_cannot_update_to_null (
8217 p_column => 'status',
8218 p_column_value => p_person_language_rec.status,
8219 x_return_status => x_return_status);
8220 END IF;
8221
8222
8223 -- 2820135, the following check has been made as part of this bug
8224 -- If the primary_language_indicator is set to Yes, the status column should
8225 -- not be Inactive
8226
8227 -- Bug 3363458.The previous validation did not take care of the condition when
8228 -- the status for a primary language was updated from 'A' to 'I'.
8229
8230 /*
8231 IF p_person_language_rec.primary_language_indicator is NOT NULL
8232 AND p_person_language_rec.primary_language_indicator <> fnd_api.g_miss_char
8233 AND (p_create_update_flag = 'C'
8234 OR (p_create_update_flag = 'U'
8235 AND p_person_language_rec.primary_language_indicator <>
8236 NVL(l_primary_language_indicator, fnd_api.g_miss_char)))
8237 THEN
8238 SELECT DECODE(p_person_language_rec.primary_language_indicator,
8239 'Y', DECODE(p_person_language_rec.status,
8240 'I', 'N',
8241 '', DECODE(l_status, 'I', 'N')),
8242 'Y')
8243 INTO l_dummy
8244 FROM dual;
8245
8246 IF l_dummy <> 'Y' THEN
8247 fnd_message.set_name('AR', 'HZ_API_INACTIVE_CANNOT_PRIM');
8248 fnd_message.set_token('ENTITY', 'language');
8249 -- fnd_message.set_token('COLUMN1', 'primary_language_indicator');
8250 -- fnd_message.set_token('COLUMN2', 'status');
8251 fnd_msg_pub.add;
8252 x_return_status := FND_API.G_RET_STS_ERROR;
8253 END IF;
8254
8255 */
8256
8257 -- Bug 3363458.
8258 IF p_create_update_flag = 'C'
8259 THEN
8260 IF (p_person_language_rec.primary_language_indicator = 'Y'
8261 AND p_person_language_rec.status = 'I')
8262 THEN
8263 fnd_message.set_name('AR', 'HZ_API_INACTIVE_CANNOT_PRIM');
8264 fnd_message.set_token('ENTITY', 'Language');
8265 -- fnd_message.set_token('COLUMN1', 'primary_language_indicator');
8266 -- fnd_message.set_token('COLUMN2', 'status');
8267 fnd_msg_pub.add;
8268 x_return_status := FND_API.G_RET_STS_ERROR;
8269
8270 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8271 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8272 p_message=>'If the primary_language_indicator is set to Yes, the status column should not be Inactive.' ||
8273 'x_return_status = ' || x_return_status,
8274 p_msg_level=>fnd_log.level_statement);
8275 END IF;
8276
8277 END IF;
8278 ELSE -- p_create_update_flag = 'U'
8279 IF (NVL(p_person_language_rec.primary_language_indicator,l_primary_language_indicator)='Y'
8280 AND NVL(p_person_language_rec.status,l_status)='I')
8281 THEN
8282 fnd_message.set_name('AR', 'HZ_API_INACTIVE_CANNOT_PRIM');
8283 fnd_message.set_token('ENTITY', 'Language');
8284 --fnd_message.set_token('COLUMN1', 'primary_language_indicator');
8285 -- fnd_message.set_token('COLUMN2', 'status');
8286 fnd_msg_pub.add;
8287 x_return_status := FND_API.G_RET_STS_ERROR;
8288
8289 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8290 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8291 p_message=>'If the primary_language_indicator is set to Yes, the status column should not be Inactive.' ||
8292 'x_return_status = ' || x_return_status,
8293 p_msg_level=>fnd_log.level_statement);
8294 END IF;
8295
8296 END IF;
8297 END IF; -- corresponding to IF p_create_update_flag = 'C'
8298
8299 /*IF g_debug THEN
8300 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8301 'If the primary_language_indicator is set to Yes, the status column should not be Inactive.' ||
8302 'x_return_status = ' || x_return_status,
8303 l_debug_prefix
8304 );
8305 END IF;
8306 */
8307
8308 --------------------------------------
8309 -- validate created_by_module
8310 --------------------------------------
8311
8312 validate_created_by_module(
8313 p_create_update_flag => p_create_update_flag,
8314 p_created_by_module => p_person_language_rec.created_by_module,
8315 p_old_created_by_module => l_created_by_module,
8316 x_return_status => x_return_status);
8317
8318 --------------------------------------
8319 -- validate application_id
8320 --------------------------------------
8321
8322 validate_application_id(
8323 p_create_update_flag => p_create_update_flag,
8324 p_application_id => p_person_language_rec.application_id,
8325 p_old_application_id => l_application_id,
8326 x_return_status => x_return_status);
8327
8328 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
8329 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_person_language (-)',
8330 p_msg_level=>fnd_log.level_procedure);
8331 END IF;
8332
8333 END validate_person_language;
8334
8335
8336 /**
8337 * PROCEDURE validate_citizenship
8338 *
8339 * DESCRIPTION
8340 * Validates citizenship record. Checks for
8341 * uniqueness
8342 * lookup types
8343 * mandatory columns
8344 * non-updateable fields
8345 * foreign key validations
8346 * other validations
8347 *
8348 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
8349 *
8350 * ARGUMENTS
8351 * IN:
8352 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
8353 * p_citizenship_rec Citizenship record.
8354 * p_rowid Rowid of the record (used only in update mode).
8355 * IN/OUT:
8356 * x_return_status Return status after the call. The status can
8357 * be FND_API.G_RET_STS_SUCCESS (success),
8358 * fnd_api.g_ret_sts_error (error),
8359 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
8360 *
8361 * NOTES
8362 *
8363 * MODIFICATION HISTORY
8364 *
8365 * 31-Jan-2001 Porkodi C o Created.
8366 * 10-Mar-2003 Porkodi C o Bug 2820483, Added mandatory check for country_code
8367 * Bug 2820462, Added the party_type check for the party_id
8368 *
8369 */
8370
8371 PROCEDURE validate_citizenship(
8372 p_create_update_flag IN VARCHAR2,
8373 p_citizenship_rec IN HZ_PERSON_INFO_V2PUB.CITIZENSHIP_REC_TYPE,
8374 p_rowid IN ROWID ,
8375 x_return_status IN OUT NOCOPY VARCHAR2
8376 ) IS
8377
8378 l_count NUMBER;
8379 l_dummy VARCHAR2(1);
8380 l_party_id NUMBER := p_citizenship_rec.party_id;
8381 l_created_by_module VARCHAR2(150);
8382 l_application_id NUMBER;
8383 l_citizenship_id NUMBER;
8384 l_status VARCHAR2(1);
8385 l_debug_prefix VARCHAR2(30) := '';
8386
8387
8388 CURSOR citizen_cur (p_citizenship_id IN NUMBER) IS
8389 SELECT 'Y'
8390 FROM hz_citizenship hc
8391 WHERE hc.citizenship_id = p_citizenship_id;
8392
8393
8394 BEGIN
8395
8396 --enable_debug;
8397
8398 -- Debug info.
8399 /*IF g_debug THEN
8400 hz_utility_v2pub.debug ('validate_citizenship (+)');
8401 END IF;
8402 */
8403 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
8404 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_citizenship (+)',
8405 p_msg_level=>fnd_log.level_procedure);
8406 END IF;
8407
8408 -- do the query to get old values for update
8409 IF p_create_update_flag = 'U'
8410 THEN
8411 SELECT CITIZENSHIP_ID,
8412 PARTY_ID,
8413 STATUS,
8414 CREATED_BY_MODULE,
8415 APPLICATION_ID
8416 INTO l_citizenship_id,
8417 l_party_id,
8418 l_status,
8419 l_created_by_module,
8420 l_application_id
8421 FROM HZ_CITIZENSHIP
8422 WHERE ROWID = p_rowid;
8423 END IF;
8424
8425
8426 --------------------------------------
8427 -- validate citizenship_id
8428 --------------------------------------
8429 /****Logical APIs - validation not required****/
8430 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8431 -- If primary key value is passed, check for uniqueness.
8432 -- If primary key value is not passed, it will be generated
8433 -- from sequence by table handler.
8434
8435 IF p_create_update_flag = 'C' THEN
8436 IF p_citizenship_rec.citizenship_id IS NOT NULL AND
8437 p_citizenship_rec.citizenship_id <> fnd_api.g_miss_num
8438 THEN
8439 OPEN citizen_cur (p_citizenship_rec.citizenship_id);
8440 FETCH citizen_cur INTO l_dummy;
8441
8442 -- key is not unique, push an error onto the stack.
8443 IF NVL(citizen_cur%FOUND, FALSE) THEN
8444 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
8445 fnd_message.set_token('COLUMN', 'citizenship_id');
8446 fnd_msg_pub.add;
8447 x_return_status := fnd_api.g_ret_sts_error;
8448 END IF;
8449 CLOSE citizen_cur;
8450
8451 /*IF g_debug THEN
8452 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8453 'check that citizenship_id is unique during creation. ' ||
8454 ' x_return_status = ' || x_return_status, l_debug_prefix);
8455 END IF;
8456 */
8457 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8458 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8459 p_message=>'check that citizenship_id is unique during creation. ' ||
8460 ' x_return_status = ' || x_return_status,
8461 p_msg_level=>fnd_log.level_statement);
8462 END IF;
8463
8464 END IF;
8465 END IF;
8466
8467 /*IF g_debug THEN
8468 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8469 '(+) after validate citizenship_id ... ' ||
8470 'x_return_status = ' || x_return_status, l_debug_prefix);
8471 END IF;
8472 */
8473 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8474 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate citizenship_id ... ' ||
8475 'x_return_status = ' || x_return_status,
8476 p_msg_level=>fnd_log.level_statement);
8477 END IF;
8478
8479
8480 -- citizenship_id is non-updateable field
8481 IF p_create_update_flag = 'U' THEN
8482 validate_nonupdateable (
8483 p_column => 'citizenship_id',
8484 p_column_value => p_citizenship_rec.citizenship_id,
8485 p_old_column_value => l_citizenship_id,
8486 x_return_status => x_return_status);
8487
8488 /*IF g_debug THEN
8489 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8490 'citizenship_id is non-updateable field. ' ||
8491 'x_return_status = ' || x_return_status, l_debug_prefix);
8492 END IF;
8493 */
8494 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8495 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'citizenship_id is non-updateable field. ' ||
8496 'x_return_status = ' || x_return_status,
8497 p_msg_level=>fnd_log.level_statement);
8498 END IF;
8499
8500
8501 END IF;
8502 END IF;
8503
8504 --------------------------
8505 -- validation for party_id
8506 --------------------------
8507 /****Logical APIs - validation not required****/
8508 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8509 -- party_id is mandatory field
8510 IF p_create_update_flag = 'C' THEN
8511 validate_mandatory (
8512 p_create_update_flag => p_create_update_flag,
8513 p_column => 'party_id',
8514 p_column_value => p_citizenship_rec.party_id,
8515 x_return_status => x_return_status);
8516
8517 /*IF g_debug THEN
8518 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8519 'party_id is mandatory field. ' ||
8520 'x_return_status = ' || x_return_status, l_debug_prefix);
8521 END IF;
8522 */
8523 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8524 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is mandatory field. ' ||
8525 'x_return_status = ' || x_return_status,
8526 p_msg_level=>fnd_log.level_statement);
8527 END IF;
8528
8529
8530 END IF;
8531
8532 -- party_id is non-updateable field
8533 IF p_create_update_flag = 'U' THEN
8534 validate_nonupdateable (
8535 p_column => 'party_id',
8536 p_column_value => p_citizenship_rec.party_id,
8537 p_old_column_value => l_party_id,
8538 x_return_status => x_return_status);
8539
8540 /*IF g_debug THEN
8541 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8542 'party_id is non-updateable field. ' ||
8543 'x_return_status = ' || x_return_status, l_debug_prefix);
8544 END IF;
8545 */
8546 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8547 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable field. ' ||
8548 'x_return_status = ' || x_return_status,
8549 p_msg_level=>fnd_log.level_statement);
8550 END IF;
8551
8552
8553 END IF;
8554
8555 -- 2820462, Party_type check has been added to the where clause
8556 -- party_id has foreign key HZ_PARTIES.PARTY_ID
8557 IF p_create_update_flag = 'C'
8558 AND
8559 p_citizenship_rec.party_id IS NOT NULL
8560 AND
8561 p_citizenship_rec.party_id <> fnd_api.g_miss_num
8562 THEN
8563 BEGIN
8564 SELECT 'Y'
8565 INTO l_dummy
8566 FROM hz_parties p
8567 WHERE p.party_type='PERSON' and
8568 p.party_id = p_citizenship_rec.party_id;
8569
8570 EXCEPTION
8571 WHEN NO_DATA_FOUND THEN
8572 fnd_message.set_name('AR', 'HZ_API_PARTY_NOT_PERSON');
8573 -- fnd_message.set_token('FK', 'party_id');
8574 fnd_message.set_token('TABLE_NAME', 'HZ_CITIZENSHIP');
8575 fnd_message.set_token('PARTY_ID_COL', 'party_id');
8576 fnd_msg_pub.add;
8577 x_return_status := fnd_api.g_ret_sts_error;
8578 END;
8579
8580 /*IF g_debug THEN
8581 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8582 'party_id has foreign key hz_parties.party_id. ' ||
8583 'x_return_status = ' || x_return_status, l_debug_prefix);
8584 END IF;
8585 */
8586 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8587 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
8588 'x_return_status = ' || x_return_status,
8589 p_msg_level=>fnd_log.level_statement);
8590 END IF;
8591
8592
8593 END IF;
8594 END IF;
8595
8596 ---------------------------------------
8597 -- validation for birth_or_selected
8598 ---------------------------------------
8599
8600 -- birth_or_selected is lookup code in lookup type HZ_CITIZENSHIP_ACQUISITION
8601
8602 validate_lookup (
8603 p_column => 'birth_or_selected',
8604 p_lookup_type => 'HZ_CITIZENSHIP_ACQUISITION',
8605 p_column_value => p_citizenship_rec.birth_or_selected,
8606 x_return_status => x_return_status);
8607
8608
8609 /*IF g_debug THEN
8610 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8611 'birth_or_selected should be in lookup HZ_CITIZENSHIP_ACQUISITION. ' ||
8612 'x_return_status = ' || x_return_status, l_debug_prefix);
8613 END IF;
8614 */
8615 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8616 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8617 p_message=>'birth_or_selected should be in lookup HZ_CITIZENSHIP_ACQUISITION. ' ||
8618 'x_return_status = ' || x_return_status,
8619 p_msg_level=>fnd_log.level_statement);
8620 END IF;
8621
8622
8623 ---------------------------------------
8624 -- validation for country_code
8625 ---------------------------------------
8626
8627 -- 2820483, Added the mandatory check
8628 -- country_code is mandatory field
8629 IF p_create_update_flag = 'C' THEN
8630 validate_mandatory (
8631 p_create_update_flag => p_create_update_flag,
8632 p_column => 'country_code',
8633 p_column_value => p_citizenship_rec.country_code,
8634 x_return_status => x_return_status);
8635
8636 /*IF g_debug THEN
8637 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8638 'country_code is mandatory field. ' ||
8639 'x_return_status = ' || x_return_status, l_debug_prefix);
8640 END IF;
8641 */
8642 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8643 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8644 p_message=>'country_code is mandatory field. ' ||
8645 'x_return_status = ' || x_return_status,
8646 p_msg_level=>fnd_log.level_statement);
8647 END IF;
8648
8649
8650 END IF;
8651
8652 -- country has foreign key fnd_territories.territory_code
8653 validate_country_code(
8654 p_column => 'country_code',
8655 p_column_value => p_citizenship_rec.country_code,
8656 x_return_status => x_return_status);
8657
8658 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
8659 hz_utility_v2pub.debug(
8660 p_prefix => l_debug_prefix,
8661 p_message => 'country_code should be in fnd_territories.territory_code. ' ||
8662 'x_return_status = ' || x_return_status,
8663 p_msg_level => fnd_log.level_statement);
8664 END IF;
8665
8666 -- 2820483, Added the following check also
8667 -- country_code cannot be set to null during update
8668 IF p_create_update_flag = 'U' THEN
8669 validate_cannot_update_to_null (
8670 p_column => 'country_code',
8671 p_column_value => p_citizenship_rec.country_code,
8672 x_return_status => x_return_status);
8673 END IF;
8674
8675
8676 ------------------------
8677 -- validation for status
8678 ------------------------
8679 /****Logical APIs - validation not required****/
8680 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8681 -- status is lookup code in lookup type REGISTRY_STATUS
8682 IF p_citizenship_rec.status IS NOT NULL
8683 AND
8684 p_citizenship_rec.status <> fnd_api.g_miss_char
8685 AND
8686 (p_create_update_flag = 'C'
8687 OR
8688 (p_create_update_flag = 'U'
8689 AND
8690 p_citizenship_rec.status <> NVL(l_status, fnd_api.g_miss_char)
8691 )
8692 )
8693 THEN
8694 validate_lookup (
8695 p_column => 'status',
8696 p_lookup_type => 'REGISTRY_STATUS',
8697 p_column_value => p_citizenship_rec.status,
8698 x_return_status => x_return_status);
8699
8700 /*IF g_debug THEN
8701 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8702 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
8703 'x_return_status = ' || x_return_status, l_debug_prefix);
8704 END IF;
8705 */
8706 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8707 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8708 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
8709 'x_return_status = ' || x_return_status,
8710 p_msg_level=>fnd_log.level_statement);
8711 END IF;
8712
8713
8714 END IF;
8715 END IF;
8716
8717 -- status cannot be set to null during update
8718 IF p_create_update_flag = 'U' THEN
8719 validate_cannot_update_to_null (
8720 p_column => 'status',
8721 p_column_value => p_citizenship_rec.status,
8722 x_return_status => x_return_status);
8723 END IF;
8724
8725 --------------------------------------
8726 -- validate created_by_module
8727 --------------------------------------
8728
8729 validate_created_by_module(
8730 p_create_update_flag => p_create_update_flag,
8731 p_created_by_module => p_citizenship_rec.created_by_module,
8732 p_old_created_by_module => l_created_by_module,
8733 x_return_status => x_return_status);
8734
8735 --------------------------------------
8736 -- validate application_id
8737 --------------------------------------
8738
8739 validate_application_id(
8740 p_create_update_flag => p_create_update_flag,
8741 p_application_id => p_citizenship_rec.application_id,
8742 p_old_application_id => l_application_id,
8743 x_return_status => x_return_status);
8744
8745 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
8746 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_citizenship (-)',
8747 p_msg_level=>fnd_log.level_procedure);
8748 END IF;
8749
8750 END validate_citizenship;
8751
8752
8753 /**
8754 * PROCEDURE validate_education
8755 *
8756 * DESCRIPTION
8757 * Validates education record. Checks for
8758 * uniqueness
8759 * lookup types
8760 * mandatory columns
8761 * non-updateable fields
8762 * foreign key validations
8763 * other validations
8764 *
8765 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
8766 *
8767 * ARGUMENTS
8768 * IN:
8769 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
8770 * p_education_rec Education record.
8771 * p_rowid Rowid of the record (used only in update mode).
8772 * IN/OUT:
8773 * x_return_status Return status after the call. The status can
8774 * be FND_API.G_RET_STS_SUCCESS (success),
8775 * fnd_api.g_ret_sts_error (error),
8776 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
8777 *
8778 * NOTES
8779 *
8780 * MODIFICATION HISTORY
8781 *
8782 * 31-Jan-2001 Porkodi C o Created.
8783 * 11-Mar-2003 Porkodi C o 2820602: Changed the error message, when wrong
8784 * party_type has been passed to the user.
8785 * 07-Apr-2003 Porkodi C o 2888486: On update mutual exclusivity between
8786 * school_party_id and school_attended_name was not
8787 * been maintained.
8788 * 09-Apr-2003 Porkodi C o 2888399: validation for start_date_attended and last_date_attended
8789 * has been modified
8790 * 17-Feb-2004 Rajib Ranjan B o Bug 3425871.Type_of_school will be validated only
8791 * if the column value changes.
8792 */
8793
8794 PROCEDURE validate_education(
8795 p_create_update_flag IN VARCHAR2,
8796 p_education_rec IN HZ_PERSON_INFO_V2PUB.EDUCATION_REC_TYPE,
8797 p_rowid IN ROWID ,
8798 x_return_status IN OUT NOCOPY VARCHAR2
8799 ) IS
8800
8801 l_count NUMBER;
8802 l_education_id NUMBER;
8803 l_dummy VARCHAR2(1);
8804 l_party_id NUMBER := p_education_rec.party_id;
8805 l_created_by_module VARCHAR2(30);
8806 l_application_id NUMBER;
8807 l_status VARCHAR2(1);
8808 l_debug_prefix VARCHAR2(30) := '';
8809 l_start_date_attended DATE;
8810 l_last_date_attended DATE;
8811 l_school_party_id NUMBER;
8812 l_school_attended_name VARCHAR2(60);
8813 -- Code modified for Bug 3473418 starts here
8814 l_type_of_school VARCHAR2(30);
8815 -- Code modified for Bug 3473418 ends here
8816 temp_school_party_id NUMBER;
8817 temp_school_attended_name VARCHAR2(60);
8818 temp_start_date_attended DATE;
8819 temp_last_date_attended DATE;
8820
8821 CURSOR education_cur (p_education_id IN NUMBER) IS
8822 SELECT 'Y'
8823 FROM hz_education hc
8824 WHERE hc.education_id = p_education_id;
8825
8826 BEGIN
8827
8828 --enable_debug;
8829
8830 -- Debug info.
8831 /*IF g_debug THEN
8832 hz_utility_v2pub.debug ('validate_education (+)');
8833 END IF;
8834 */
8835 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
8836 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_education (+)',
8837 p_msg_level=>fnd_log.level_procedure);
8838 END IF;
8839
8840
8841 -- do the query to get old values for update
8842 IF p_create_update_flag = 'U'
8843 THEN
8844 SELECT EDUCATION_ID,
8845 PARTY_ID,
8846 START_DATE_ATTENDED,
8847 LAST_DATE_ATTENDED,
8848 STATUS,
8849 CREATED_BY_MODULE,
8850 APPLICATION_ID,
8851 SCHOOL_PARTY_ID,
8852 SCHOOL_ATTENDED_NAME,
8853 TYPE_OF_SCHOOL
8854 INTO l_education_id,
8855 l_party_id,
8856 l_start_date_attended,
8857 l_last_date_attended,
8858 l_status,
8859 l_created_by_module,
8860 l_application_id,
8861 l_school_party_id,
8862 l_school_attended_name,
8863 l_type_of_school
8864 FROM HZ_EDUCATION
8865 WHERE ROWID = p_rowid;
8866 END IF;
8867
8868
8869 --------------------------------------
8870 -- validate education_id
8871 --------------------------------------
8872 /****Logical APIs - validation not required****/
8873 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8874 -- If primary key value is passed, check for uniqueness.
8875 -- If primary key value is not passed, it will be generated
8876 -- from sequence by table handler.
8877
8878
8879 IF p_create_update_flag = 'C' THEN
8880 IF p_education_rec.education_id IS NOT NULL AND
8881 p_education_rec.education_id <> fnd_api.g_miss_num
8882 THEN
8883 OPEN education_cur (p_education_rec.education_id);
8884 FETCH education_cur INTO l_dummy;
8885
8886 -- key is not unique, push an error onto the stack.
8887 IF NVL(education_cur%FOUND, FALSE) THEN
8888 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
8889 fnd_message.set_token('COLUMN', 'education_id');
8890 fnd_msg_pub.add;
8891 x_return_status := fnd_api.g_ret_sts_error;
8892 END IF;
8893 CLOSE education_cur;
8894
8895 /*IF g_debug THEN
8896 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8897 'check that education_id is unique during creation. ' ||
8898 ' x_return_status = ' || x_return_status, l_debug_prefix);
8899 END IF;
8900 */
8901 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8902 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8903 p_message=>'check that education_id is unique during creation. ' ||
8904 ' x_return_status = ' || x_return_status,
8905 p_msg_level=>fnd_log.level_statement);
8906 END IF;
8907
8908 END IF;
8909 END IF;
8910
8911
8912 -- education_id is non-updateable field
8913 IF p_create_update_flag = 'U' THEN
8914 validate_nonupdateable (
8915 p_column => 'education_id',
8916 p_column_value => p_education_rec.education_id,
8917 p_old_column_value => l_education_id,
8918 x_return_status => x_return_status);
8919
8920 /*IF g_debug THEN
8921 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8922 'education_id is non-updateable field. ' ||
8923 'x_return_status = ' || x_return_status, l_debug_prefix);
8924 END IF;
8925 */
8926 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8927 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'education_id is non-updateable field. ' ||
8928 'x_return_status = ' || x_return_status,
8929 p_msg_level=>fnd_log.level_statement);
8930 END IF;
8931
8932 END IF;
8933
8934 /*IF g_debug THEN
8935 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8936 '(+) after validate education_id ... ' ||
8937 'x_return_status = ' || x_return_status, l_debug_prefix);
8938 END IF;
8939 */
8940 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8941 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate education_id ... ' ||
8942 'x_return_status = ' || x_return_status,
8943 p_msg_level=>fnd_log.level_statement);
8944 END IF;
8945 END IF;
8946
8947 --------------------------
8948 -- validation for party_id
8949 --------------------------
8950 /****Logical APIs - validation not required****/
8951 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8952 -- party_id is mandatory field
8953 IF p_create_update_flag = 'C' THEN
8954 validate_mandatory (
8955 p_create_update_flag => p_create_update_flag,
8956 p_column => 'party_id',
8957 p_column_value => p_education_rec.party_id,
8958 x_return_status => x_return_status);
8959
8960 /*IF g_debug THEN
8961 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8962 'party_id is mandatory field. ' ||
8963 'x_return_status = ' || x_return_status, l_debug_prefix);
8964 END IF;
8965 */
8966 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8967 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is mandatory field. ' ||
8968 'x_return_status = ' || x_return_status,
8969 p_msg_level=>fnd_log.level_statement);
8970 END IF;
8971
8972
8973 END IF;
8974
8975 -- party_id is non-updateable field
8976 IF p_create_update_flag = 'U' THEN
8977 validate_nonupdateable (
8978 p_column => 'party_id',
8979 p_column_value => p_education_rec.party_id,
8980 p_old_column_value => l_party_id,
8981 x_return_status => x_return_status);
8982
8983 /*IF g_debug THEN
8984 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8985 'party_id is non-updateable field. ' ||
8986 'x_return_status = ' || x_return_status, l_debug_prefix);
8987 END IF;
8988 */
8989 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8990 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable field. ' ||
8991 'x_return_status = ' || x_return_status,
8992 p_msg_level=>fnd_log.level_statement);
8993 END IF;
8994
8995
8996 END IF;
8997
8998 -- 2820602, Changed message due to this bug.
8999 -- party_id has foreign key HZ_PARTIES.PARTY_ID
9000 IF p_create_update_flag = 'C'
9001 AND
9002 p_education_rec.party_id IS NOT NULL
9003 AND
9004 p_education_rec.party_id <> fnd_api.g_miss_num
9005 THEN
9006 BEGIN
9007 SELECT 'Y'
9008 INTO l_dummy
9009 FROM hz_parties p
9010 WHERE p.party_id = p_education_rec.party_id and
9011 party_type = 'PERSON';
9012
9013 EXCEPTION
9014 WHEN NO_DATA_FOUND THEN
9015 fnd_message.set_name('AR', 'HZ_API_PARTY_NOT_PERSON');
9016 fnd_message.set_token('TABLE_NAME', 'HZ_EDUCATION');
9017 fnd_message.set_token('PARTY_ID_COL', 'party_id');
9018 fnd_msg_pub.add;
9019 x_return_status := fnd_api.g_ret_sts_error;
9020 END;
9021
9022 /*IF g_debug THEN
9023 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9024 'party_id has foreign key hz_parties.party_id. ' ||
9025 'x_return_status = ' || x_return_status, l_debug_prefix);
9026 END IF;
9027 */
9028 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9029 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
9030 'x_return_status = ' || x_return_status,
9031 p_msg_level=>fnd_log.level_statement);
9032 END IF;
9033
9034
9035 END IF;
9036 END IF;
9037
9038 ------------------------------------
9039 -- validation for last_date_attended
9040 ------------------------------------
9041
9042 -- If start_date_attended and last_dated_attended are passed,
9043 -- then last_date_attended must be greater than or equal to
9044 -- start_date_attended.
9045
9046
9047
9048 --2888399, For update check added more checks
9049
9050 IF p_create_update_flag = 'U' THEN
9051 IF p_education_rec.start_date_attended IS NOT NULL then
9052 temp_start_date_attended := p_education_rec.start_date_attended;
9053 ELSE
9054 temp_start_date_attended := l_start_date_attended;
9055 END IF;
9056 ELSIF p_create_update_flag = 'C' THEN
9057 temp_start_date_attended := p_education_rec.start_date_attended;
9058 END IF;
9059
9060 IF p_create_update_flag = 'U' THEN
9061 IF p_education_rec.last_date_attended IS NOT NULL then
9062 temp_last_date_attended := p_education_rec.last_date_attended;
9063 ELSE
9064 temp_last_date_attended := l_last_date_attended;
9065 END IF;
9066 ELSIF p_create_update_flag = 'C' THEN
9067 temp_last_date_attended := p_education_rec.last_date_attended;
9068 END IF;
9069
9070 IF (temp_start_date_attended IS NOT NULL AND
9071 temp_start_date_attended <> FND_API.G_MISS_DATE AND
9072 temp_last_date_attended IS NOT NULL AND
9073 temp_last_date_attended <> FND_API.G_MISS_DATE) THEN
9074
9075 validate_start_end_date (
9076
9077 p_create_update_flag => p_create_update_flag,
9078 p_start_date_column_name => 'start_date_attended',
9079 p_start_date => p_education_rec.start_date_attended,
9080 p_old_start_date => l_start_date_attended,
9081 p_end_date_column_name => 'last_date_attended',
9082 p_end_date => p_education_rec.last_date_attended,
9083 p_old_end_date => l_last_date_attended,
9084 x_return_status => x_return_status
9085 );
9086
9087 /*IF g_debug THEN
9088 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9089 'check whether last_date_attended is greater then or equal to start_date_attended. ' ||
9090 'x_return_status = ' || x_return_status, l_debug_prefix);
9091 END IF;
9092 */
9093 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9094 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9095 p_message=>'check whether last_date_attended is greater then or equal to start_date_attended. ' ||
9096 'x_return_status = ' || x_return_status,
9097 p_msg_level=>fnd_log.level_statement);
9098 END IF;
9099
9100 END IF;
9101
9102 /*IF g_debug THEN
9103 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9104 '(+) after validating the last_date_attended and start_date_attended... ' ||
9105 'x_return_status = ' || x_return_status, l_debug_prefix);
9106 END IF;
9107 */
9108 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9109 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9110 p_message=>'(+) after validating the last_date_attended and start_date_attended... ' ||
9111 'x_return_status = ' || x_return_status,
9112 p_msg_level=>fnd_log.level_statement);
9113 END IF;
9114
9115
9116
9117 --------------------------------------
9118 -- validation for school_attended_name
9119 --------------------------------------
9120
9121 -- If school_party_id is passed, school_attended_name
9122 -- should not be passed.
9123
9124 --2888486, Added these checks for update
9125 IF p_create_update_flag = 'U' THEN
9126 IF p_education_rec.school_party_id IS NOT NULL then
9127 temp_school_party_id := p_education_rec.school_party_id;
9128 ELSE
9129 temp_school_party_id := l_school_party_id;
9130 END IF;
9131 ELSIF p_create_update_flag = 'C' THEN
9132 temp_school_party_id := p_education_rec.school_party_id;
9133 END IF;
9134
9135 IF p_create_update_flag = 'U' THEN
9136 IF p_education_rec.school_attended_name IS NOT NULL then
9137 temp_school_attended_name := p_education_rec.school_attended_name;
9138 ELSE
9139 temp_school_attended_name := l_school_attended_name;
9140 END IF;
9141 ELSIF p_create_update_flag = 'C' THEN
9142 temp_school_attended_name := p_education_rec.school_attended_name;
9143 END IF;
9144
9145 IF temp_school_party_id is NOT NULL and
9146 temp_school_party_id <> fnd_api.g_miss_num and
9147 temp_school_attended_name is NOT NULL and
9148 temp_school_attended_name <> fnd_api.g_miss_char then
9149
9150 fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION2');
9151 fnd_message.set_token('COLUMN1', 'school_party_id');
9152 fnd_message.set_token('COLUMN2', 'school_attended_name');
9153 fnd_msg_pub.add;
9154 x_return_status := fnd_api.g_ret_sts_error;
9155 END IF;
9156
9157 /*IF g_debug THEN
9158 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9159 'check that school_attended_name is empty when school_party_id isn t. '||
9160 ' x_return_status = ' || x_return_status, l_debug_prefix);
9161 END IF;
9162 */
9163 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9164 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9165 p_message=>'check that school_attended_name is empty when school_party_id isn t. '||
9166 ' x_return_status = ' || x_return_status,
9167 p_msg_level=>fnd_log.level_statement);
9168 END IF;
9169
9170
9171 ---------------------------------
9172 -- validation for school_party_id
9173 ---------------------------------
9174
9175
9176 -- school_party_id must exist in HZ_PARTIES
9177 IF p_education_rec.school_party_id IS NOT NULL
9178 AND
9179 p_education_rec.school_party_id <> fnd_api.g_miss_num
9180 THEN
9181 BEGIN
9182 SELECT 'Y'
9183 INTO l_dummy
9184 FROM HZ_PARTIES
9185 WHERE PARTY_ID = p_education_rec.school_party_id AND
9186 PARTY_TYPE= 'ORGANIZATION';
9187
9188 EXCEPTION
9189 WHEN NO_DATA_FOUND THEN
9190 fnd_message.set_name('AR', 'HZ_API_PARTY_NOT_ORG');
9191 fnd_message.set_token('TABLE_NAME', 'HZ_EDUCATION');
9192 fnd_message.set_token('PARTY_ID_COL', 'school_party_id');
9193 fnd_msg_pub.add;
9194 x_return_status := fnd_api.g_ret_sts_error;
9195 END;
9196
9197 /*IF g_debug THEN
9198 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9199 'school_party_id should be in hz_parties.party_id. ' ||
9200 'x_return_status = ' || x_return_status, l_debug_prefix);
9201 END IF;
9202 */
9203 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9204 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9205 p_message=>'school_party_id should be in hz_parties.party_id. ' ||
9206 'x_return_status = ' || x_return_status,
9207 p_msg_level=>fnd_log.level_statement);
9208 END IF;
9209
9210 END IF;
9211
9212
9213 ---------------------------------------
9214 -- validation for type_of_school
9215 ---------------------------------------
9216
9217 -- type_of_school is a lookup code for lookup type HZ_TYPE_OF_SCHOOL
9218
9219 -- Bug 3425871
9220 -- The validation will be called only if the value changes.
9221
9222 IF p_education_rec.type_of_school IS NOT NULL
9223 AND
9224 p_education_rec.type_of_school <> fnd_api.g_miss_char
9225 AND
9226 (
9227 p_create_update_flag = 'C'
9228 OR
9229 (
9230 p_create_update_flag = 'U'
9231 AND
9232 p_education_rec.type_of_school <> l_type_of_school
9233 )
9234 )
9235 THEN
9236
9237 validate_lookup (
9238 p_column => 'type_of_school',
9239 p_lookup_type => 'HZ_TYPE_OF_SCHOOL',
9240 p_column_value => p_education_rec.type_of_school,
9241 x_return_status => x_return_status);
9242
9243
9244 /*IF g_debug THEN
9245 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9246 'type_of_school should be in lookup HZ_TYPE_OF_SCHOOL. ' ||
9247 'x_return_status = ' || x_return_status, l_debug_prefix);
9248 END IF;
9249 */
9250 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9251 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9252 p_message=>'type_of_school should be in lookup HZ_TYPE_OF_SCHOOL. ' ||
9253 'x_return_status = ' || x_return_status,
9254 p_msg_level=>fnd_log.level_statement);
9255 END IF;
9256 END IF;
9257
9258
9259 ------------------------
9260 -- validation for status
9261 ------------------------
9262 /****Logical APIs - validation not required****/
9263 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
9264 -- status is lookup code in lookup type REGISTRY_STATUS
9265 IF p_education_rec.status IS NOT NULL
9266 AND
9267 p_education_rec.status <> fnd_api.g_miss_char
9268 AND
9269 (p_create_update_flag = 'C'
9270 OR
9271 (p_create_update_flag = 'U'
9272 AND
9273 p_education_rec.status <> NVL(l_status, fnd_api.g_miss_char)
9274 )
9275 )
9276 THEN
9277 validate_lookup (
9278 p_column => 'status',
9279 p_lookup_type => 'REGISTRY_STATUS',
9280 p_column_value => p_education_rec.status,
9281 x_return_status => x_return_status);
9282
9283 /*IF g_debug THEN
9284 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9285 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
9286 'x_return_status = ' || x_return_status, l_debug_prefix);
9287 END IF;
9288 */
9289 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9290 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9291 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
9292 'x_return_status = ' || x_return_status,
9293 p_msg_level=>fnd_log.level_statement);
9294 END IF;
9295
9296
9297 END IF;
9298 END IF;
9299
9300 -- status cannot be set to null during update
9301 IF p_create_update_flag = 'U' THEN
9302 validate_cannot_update_to_null (
9303 p_column => 'status',
9304 p_column_value => p_education_rec.status,
9305 x_return_status => x_return_status);
9306 END IF;
9307
9308
9309 --------------------------------------
9310 -- validate created_by_module
9311 --------------------------------------
9312
9313 validate_created_by_module(
9314 p_create_update_flag => p_create_update_flag,
9315 p_created_by_module => p_education_rec.created_by_module,
9316 p_old_created_by_module => l_created_by_module,
9317 x_return_status => x_return_status);
9318
9319 --------------------------------------
9320 -- validate application_id
9321 --------------------------------------
9322
9323 validate_application_id(
9324 p_create_update_flag => p_create_update_flag,
9325 p_application_id => p_education_rec.application_id,
9326 p_old_application_id => l_application_id,
9327 x_return_status => x_return_status);
9328
9329 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
9330 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_education (-)',
9331 p_msg_level=>fnd_log.level_procedure);
9332 END IF;
9333
9334 END validate_education;
9335
9336
9337 /**
9338 * PROCEDURE validate_employment_history
9339 *
9340 * DESCRIPTION
9341 * Validates employment_history record. Checks for
9342 * uniqueness
9343 * lookup types
9344 * mandatory columns
9345 * non-updateable fields
9346 * foreign key validations
9347 * other validations
9348 *
9349 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
9350 *
9351 * ARGUMENTS
9352 * IN:
9353 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
9354 * p_employment_history_rec Employment_history record.
9355 * p_rowid Rowid of the record (used only in update mode).
9356 * IN/OUT:
9357 * x_return_status Return status after the call. The status can
9358 * be FND_API.G_RET_STS_SUCCESS (success),
9359 * fnd_api.g_ret_sts_error (error),
9360 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
9361 *
9362 * NOTES
9363 *
9364 * MODIFICATION HISTORY
9365 *
9366 * 31-Jan-2001 Porkodi C o Created.
9367 * 11-Mar-2003 Porkodi C o 2829037, Changed the code to update values for tenure_code and
9368 * fraction_of_tenure, while the value for faculty_position_flag is
9369 * is null.
9370 * 09-Apr-2003 Porkodi C o 2890662, validation for begin_date and end_date combination has
9371 * been modified.
9372 * 25-Oct-2005 Jayashree K o 3848056 Validation for weekly hours to hold the value 0
9373 */
9374
9375 PROCEDURE validate_employment_history(
9376 p_create_update_flag IN VARCHAR2,
9377 p_employment_history_rec IN HZ_PERSON_INFO_V2PUB.EMPLOYMENT_HISTORY_REC_TYPE,
9378 p_rowid IN ROWID ,
9379 x_return_status IN OUT NOCOPY VARCHAR2
9380 ) IS
9381
9382 l_count NUMBER;
9383 l_employment_history_id NUMBER;
9384 l_dummy VARCHAR2(1);
9385 l_party_id NUMBER := p_employment_history_rec.party_id;
9386 l_created_by_module VARCHAR2(150);
9387 l_application_id NUMBER;
9388 l_status VARCHAR2(1);
9389 l_debug_prefix VARCHAR2(30) := '';
9390 l_begin_date DATE;
9391 l_end_date DATE;
9392 l_faculty_position_flag VARCHAR2(1);
9393 l_employed_by_party_id NUMBER;
9394 l_employed_by_name_company VARCHAR2(60);
9395 l_employed_as_title_code VARCHAR2(30);
9396 l_employed_as_title VARCHAR2(60);
9397 temp_faculty_position_flag VARCHAR2(1);
9398 temp_begin_date DATE;
9399 temp_end_date DATE;
9400 temp_employed_by_party_id NUMBER;
9401 temp_employed_by_name_company VARCHAR2(60);
9402 temp_employed_as_title_code VARCHAR2(30);
9403 temp_employed_as_title VARCHAR2(60);
9404
9405 CURSOR employment_history_cur (p_employment_history_id IN NUMBER) IS
9406 SELECT 'Y'
9407 FROM hz_employment_history hc
9408 WHERE hc.employment_history_id = p_employment_history_id;
9409
9410 BEGIN
9411
9412 --enable_debug;
9413
9414 -- Debug info.
9415 /*IF g_debug THEN
9416 hz_utility_v2pub.debug ('validate_employment_history (+)');
9417 END IF;
9418 */
9419 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
9420 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_employment_history (+)',
9421 p_msg_level=>fnd_log.level_procedure);
9422 END IF;
9423
9424 -- do the query to get old values for update
9425 IF p_create_update_flag = 'U'
9426 THEN
9427 SELECT EMPLOYMENT_HISTORY_ID,
9428 PARTY_ID,
9429 BEGIN_DATE,
9430 END_DATE,
9431 FACULTY_POSITION_FLAG,
9432 EMPLOYED_BY_PARTY_ID,
9433 EMPLOYED_BY_NAME_COMPANY,
9434 EMPLOYED_AS_TITLE_CODE,
9435 EMPLOYED_AS_TITLE,
9436 STATUS,
9437 CREATED_BY_MODULE,
9438 APPLICATION_ID
9439 INTO l_employment_history_id,
9440 l_party_id,
9441 l_begin_date,
9442 l_end_date,
9443 l_faculty_position_flag,
9444 l_employed_by_party_id,
9445 l_employed_by_name_company,
9446 l_employed_as_title_code,
9447 l_employed_as_title,
9448 l_status,
9449 l_created_by_module,
9450 l_application_id
9451 FROM HZ_EMPLOYMENT_HISTORY
9452 WHERE ROWID = p_rowid;
9453 END IF;
9454
9455
9456 --------------------------------------
9457 -- validate employment_history_id
9458 --------------------------------------
9459 /****Logical APIs - validation not required****/
9460 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
9461 -- If primary key value is passed, check for uniqueness.
9462 -- If primary key value is not passed, it will be generated
9463 -- from sequence by table handler.
9464
9465
9466 IF p_create_update_flag = 'C' THEN
9467 IF p_employment_history_rec.employment_history_id IS NOT NULL AND
9468 p_employment_history_rec.employment_history_id <> fnd_api.g_miss_num
9469 THEN
9470 OPEN employment_history_cur (p_employment_history_rec.employment_history_id);
9471 FETCH employment_history_cur INTO l_dummy;
9472
9473 -- key is not unique, push an error onto the stack.
9474 IF NVL(employment_history_cur%FOUND, FALSE) THEN
9475 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
9476 fnd_message.set_token('COLUMN', 'employment_history_id');
9477 fnd_msg_pub.add;
9478 x_return_status := fnd_api.g_ret_sts_error;
9479 END IF;
9480 CLOSE employment_history_cur;
9481
9482 /*IF g_debug THEN
9483 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9484 'check that employment_history_id is unique during creation. ' ||
9485 ' x_return_status = ' || x_return_status, l_debug_prefix);
9486 END IF;
9487 */
9488 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9489 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9490 p_message=>'check that employment_history_id is unique during creation. ' ||
9491 ' x_return_status = ' || x_return_status,
9492 p_msg_level=>fnd_log.level_statement);
9493 END IF;
9494
9495 END IF;
9496 END IF;
9497
9498
9499 -- employment_history_id is non-updateable field
9500 IF p_create_update_flag = 'U' THEN
9501 validate_nonupdateable (
9502 p_column => 'employment_history_id',
9503 p_column_value => p_employment_history_rec.employment_history_id,
9504 p_old_column_value => l_employment_history_id,
9505 x_return_status => x_return_status);
9506
9507 /*IF g_debug THEN
9508 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9509 'employment_history_id is non-updateable field. ' ||
9510 'x_return_status = ' || x_return_status, l_debug_prefix);
9511 END IF;
9512 */
9513 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9514 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9515 p_message=>'employment_history_id is non-updateable field. ' ||
9516 'x_return_status = ' || x_return_status,
9517 p_msg_level=>fnd_log.level_statement);
9518 END IF;
9519
9520 END IF;
9521
9522 /*IF g_debug THEN
9523 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9524 '(+) after validation of employment_history_id ... ' ||
9525 'x_return_status = ' || x_return_status, l_debug_prefix);
9526 END IF;
9527 */
9528 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9529 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9530 p_message=>'(+) after validation of employment_history_id ... ' ||
9531 'x_return_status = ' || x_return_status,
9532 p_msg_level=>fnd_log.level_statement);
9533 END IF;
9534 END IF;
9535
9536 --------------------------
9537 -- validation for party_id
9538 --------------------------
9539 /****Logical APIs - validation not required****/
9540 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
9541 -- party_id is mandatory field
9542 IF p_create_update_flag = 'C' THEN
9543 validate_mandatory (
9544 p_create_update_flag => p_create_update_flag,
9545 p_column => 'party_id',
9546 p_column_value => p_employment_history_rec.party_id,
9547 x_return_status => x_return_status);
9548
9549 /*IF g_debug THEN
9550 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9551 'party_id is mandatory field. ' ||
9552 'x_return_status = ' || x_return_status, l_debug_prefix);
9553 END IF;
9554 */
9555 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9556 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is mandatory field. ' ||
9557 'x_return_status = ' || x_return_status,
9558 p_msg_level=>fnd_log.level_statement);
9559 END IF;
9560
9561
9562 END IF;
9563
9564 -- party_id is non-updateable field
9565 IF p_create_update_flag = 'U' THEN
9566 validate_nonupdateable (
9567 p_column => 'party_id',
9568 p_column_value => p_employment_history_rec.party_id,
9569 p_old_column_value => l_party_id,
9570 x_return_status => x_return_status);
9571
9572 /*IF g_debug THEN
9573 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9574 'party_id is non-updateable field. ' ||
9575 'x_return_status = ' || x_return_status, l_debug_prefix);
9576 END IF;
9577 */
9578 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9579 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable field. ' ||
9580 'x_return_status = ' || x_return_status,
9581 p_msg_level=>fnd_log.level_statement);
9582 END IF;
9583
9584
9585 END IF;
9586
9587 -- party_id has foreign key HZ_PARTIES.PARTY_ID
9588 IF p_create_update_flag = 'C'
9589 AND
9590 p_employment_history_rec.party_id IS NOT NULL
9591 AND
9592 p_employment_history_rec.party_id <> fnd_api.g_miss_num
9593 THEN
9594 BEGIN
9595 SELECT 'Y'
9596 INTO l_dummy
9597 FROM hz_parties p
9598 WHERE p.party_id = p_employment_history_rec.party_id and
9599 party_type = 'PERSON';
9600
9601 EXCEPTION
9602 WHEN NO_DATA_FOUND THEN
9603 fnd_message.set_name('AR', 'HZ_API_PARTY_NOT_PERSON');
9604 fnd_message.set_token('TABLE_NAME', 'HZ_EMPLOYMENT_HISTORY');
9605 fnd_message.set_token('PARTY_ID_COL', 'party_id');
9606 fnd_msg_pub.add;
9607 x_return_status := fnd_api.g_ret_sts_error;
9608 END;
9609
9610 /*IF g_debug THEN
9611 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9612 'party_id has foreign key hz_parties.party_id. ' ||
9613 'x_return_status = ' || x_return_status, l_debug_prefix);
9614 END IF;
9615 */
9616 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9617 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
9618 'x_return_status = ' || x_return_status,
9619 p_msg_level=>fnd_log.level_statement);
9620 END IF;
9621
9622
9623 END IF;
9624 END IF;
9625
9626 ------------------------------------
9627 -- validation for end_date
9628 ------------------------------------
9629
9630 -- If begin_date and end_date are passed, then end_date must be
9631 -- greater than or equal to begin_date.
9632
9633
9634
9635 --2890662, Added more if conditions
9636
9637 IF p_create_update_flag = 'U' THEN
9638 IF p_employment_history_rec.begin_date IS NOT NULL then
9639 temp_begin_date := p_employment_history_rec.begin_date;
9640 ELSE
9641 temp_begin_date := l_begin_date;
9642 END IF;
9643 ELSIF p_create_update_flag = 'C' THEN
9644 temp_begin_date := p_employment_history_rec.begin_date;
9645 END IF;
9646
9647 IF p_create_update_flag = 'U' THEN
9648 IF p_employment_history_rec.end_date IS NOT NULL then
9649 temp_end_date := p_employment_history_rec.end_date;
9650 ELSE
9651 temp_end_date := l_end_date;
9652 END IF;
9653 ELSIF p_create_update_flag = 'C' THEN
9654 temp_end_date := p_employment_history_rec.end_date;
9655 END IF;
9656
9657 IF (temp_begin_date IS NOT NULL AND
9658 temp_begin_date <> FND_API.G_MISS_DATE AND
9659 temp_end_date IS NOT NULL AND
9660 temp_end_date <> FND_API.G_MISS_DATE) THEN
9661
9662 validate_start_end_date (
9663
9664 p_create_update_flag => p_create_update_flag,
9665 p_start_date_column_name => 'begin_date',
9666 p_start_date => p_employment_history_rec.begin_date,
9667 p_old_start_date => l_begin_date,
9668 p_end_date_column_name => 'end_date',
9669 p_end_date => p_employment_history_rec.end_date,
9670 p_old_end_date => l_end_date,
9671 x_return_status => x_return_status
9672 );
9673
9674 /*IF g_debug THEN
9675 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9676 'check whether end_date is greater than or equal to begin_date. ' ||
9677 'x_return_status = ' || x_return_status, l_debug_prefix);
9678 END IF;
9679 */
9680 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9681 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9682 p_message=>'check whether end_date is greater than or equal to begin_date. ' ||
9683 'x_return_status = ' || x_return_status,
9684 p_msg_level=>fnd_log.level_statement);
9685 END IF;
9686
9687 END IF;
9688
9689 /*IF g_debug THEN
9690 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9691 '(+) after validating the begin_date and end_date... ' ||
9692 'x_return_status = ' || x_return_status, l_debug_prefix);
9693 END IF;
9694 */
9695 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9696 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9697 p_message=>'(+) after validating the begin_date and end_date... ' ||
9698 'x_return_status = ' || x_return_status,
9699 p_msg_level=>fnd_log.level_statement);
9700 END IF;
9701
9702
9703
9704 ---------------------------------------
9705 -- validation for employment_type_code
9706 ---------------------------------------
9707
9708 -- employment_type_code is validated against lookup type HZ_EMPLOYMENT_TYPE
9709 validate_lookup (
9710 p_column => 'employment_type_code',
9711 p_lookup_type => 'HZ_EMPLOYMENT_TYPE',
9712 p_column_value => p_employment_history_rec.employment_type_code,
9713 x_return_status => x_return_status);
9714
9715
9716 /*IF g_debug THEN
9717 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9718 'employment_type_code should be in lookup HZ_EMPLOYMENT_TYPE. ' ||
9719 'x_return_status = ' || x_return_status, l_debug_prefix);
9720 END IF;
9721 */
9722 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9723 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9724 p_message=>'employment_type_code should be in lookup HZ_EMPLOYMENT_TYPE. ' ||
9725 'x_return_status = ' || x_return_status,
9726 p_msg_level=>fnd_log.level_statement);
9727 END IF;
9728
9729
9730
9731 ----------------------------------------
9732 -- validation for employed_as_title_code
9733 ----------------------------------------
9734
9735 -- employed_as_title_code is validated against lookup type RESPONSIBILITY
9736 validate_lookup (
9737 p_column => 'employed_as_title_code',
9738 p_lookup_type => 'RESPONSIBILITY',
9739 p_column_value => p_employment_history_rec.employed_as_title_code,
9740 x_return_status => x_return_status);
9741
9742
9743 /*IF g_debug THEN
9744 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9745 'employed_as_title_code should be in lookup RESPONSIBILITY. ' ||
9746 'x_return_status = ' || x_return_status, l_debug_prefix);
9747 END IF;
9748 */
9749 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9750 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9751 p_message=>'employed_as_title_code should be in lookup RESPONSIBILITY. ' ||
9752 'x_return_status = ' || x_return_status,
9753 p_msg_level=>fnd_log.level_statement);
9754 END IF;
9755
9756
9757
9758 ------------------------------------
9759 -- validation for employed_as_title
9760 ------------------------------------
9761
9762 -- If employed_as_title_code is passed, employed_as_title
9763 -- should be null.
9764
9765 IF p_create_update_flag = 'U' THEN
9766 IF p_employment_history_rec.employed_as_title_code IS NOT NULL then
9767 temp_employed_as_title_code := p_employment_history_rec.employed_as_title_code;
9768 ELSE
9769 temp_employed_as_title_code := l_employed_as_title_code;
9770 END IF;
9771 ELSIF p_create_update_flag = 'C' THEN
9772 temp_employed_as_title_code := p_employment_history_rec.employed_as_title_code;
9773 END IF;
9774
9775
9776 IF p_create_update_flag = 'U' THEN
9777 IF p_employment_history_rec.employed_as_title IS NOT NULL then
9778 temp_employed_as_title := p_employment_history_rec.employed_as_title;
9779 ELSE
9780 temp_employed_as_title := l_employed_as_title;
9781 END IF;
9782 ELSIF p_create_update_flag = 'C' THEN
9783 temp_employed_as_title := p_employment_history_rec.employed_as_title;
9784 END IF;
9785
9786
9787 IF (temp_employed_as_title_code IS NOT NULL and
9788 temp_employed_as_title_code <> FND_API.G_MISS_CHAR AND
9789 temp_employed_as_title IS NOT NULL AND
9790 temp_employed_as_title <> FND_API.G_MISS_CHAR) THEN
9791
9792 fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION2');
9793 fnd_message.set_token('COLUMN1', 'employed_as_title');
9794 fnd_message.set_token('COLUMN2', 'employed_as_title_code');
9795 fnd_msg_pub.add;
9796 x_return_status := fnd_api.g_ret_sts_error;
9797
9798 /*IF g_debug THEN
9799 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9800 'check that employed_as_title is empty when employed_as_title_code isn t. '||
9801 ' x_return_status = ' || x_return_status, l_debug_prefix);
9802 END IF;
9803 */
9804 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9805 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9806 p_message=>'check that employed_as_title is empty when employed_as_title_code isn t. '||
9807 ' x_return_status = ' || x_return_status,
9808 p_msg_level=>fnd_log.level_statement);
9809 END IF;
9810
9811 END IF;
9812
9813
9814 /*IF g_debug THEN
9815 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9816 '(+) after validating employed_as_title ... ' ||
9817 'x_return_status = ' || x_return_status, l_debug_prefix);
9818 END IF;
9819 */
9820 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9821 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9822 p_message=>'(+) after validating employed_as_title ... ' ||
9823 'x_return_status = ' || x_return_status,
9824 p_msg_level=>fnd_log.level_statement);
9825 END IF;
9826
9827
9828
9829 --------------------------------------
9830 -- validation for employed_by_party_id
9831 --------------------------------------
9832
9833
9834 -- employed_by_party_id must exist in HZ_PARTIES
9835 IF p_employment_history_rec.employed_by_party_id IS NOT NULL
9836 AND
9837 p_employment_history_rec.employed_by_party_id <> fnd_api.g_miss_num
9838 THEN
9839 BEGIN
9840 SELECT 'Y'
9841 INTO l_dummy
9842 FROM HZ_PARTIES
9843 WHERE PARTY_ID = p_employment_history_rec.employed_by_party_id;
9844
9845 EXCEPTION
9846 WHEN NO_DATA_FOUND THEN
9847 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
9848 fnd_message.set_token('FK', 'employed_by_party_id');
9849 fnd_message.set_token('COLUMN', 'party_id');
9850 fnd_message.set_token('TABLE', 'hz_parties');
9851 fnd_msg_pub.add;
9852 x_return_status := fnd_api.g_ret_sts_error;
9853 END;
9854
9855 /*IF g_debug THEN
9856 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9857 'employed_by_party_id should be in hz_parties.party_id. ' ||
9858 'x_return_status = ' || x_return_status, l_debug_prefix);
9859 END IF;
9860 */
9861 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9862 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9863 p_message=>'employed_by_party_id should be in hz_parties.party_id. ' ||
9864 'x_return_status = ' || x_return_status,
9865 p_msg_level=>fnd_log.level_statement);
9866 END IF;
9867
9868 END IF;
9869
9870
9871 ------------------------------------------
9872 -- validation for employed_by_name_company
9873 ------------------------------------------
9874
9875 -- If employed_by_party_id is passed, employed_by_name_company
9876 -- should be null.
9877
9878 IF p_create_update_flag = 'U' THEN
9879 IF p_employment_history_rec.employed_by_party_id IS NOT NULL then
9880 temp_employed_by_party_id := p_employment_history_rec.employed_by_party_id;
9881 ELSE
9882 temp_employed_by_party_id := l_employed_by_party_id;
9883 END IF;
9884 ELSIF p_create_update_flag = 'C' THEN
9885 temp_employed_by_party_id := p_employment_history_rec.employed_by_party_id;
9886 END IF;
9887
9888
9889 IF p_create_update_flag = 'U' THEN
9890 IF p_employment_history_rec.employed_by_name_company IS NOT NULL then
9891 temp_employed_by_name_company := p_employment_history_rec.employed_by_name_company;
9892 ELSE
9893 temp_employed_by_name_company := l_employed_by_name_company;
9894 END IF;
9895 ELSIF p_create_update_flag = 'C' THEN
9896 temp_employed_by_name_company := p_employment_history_rec.employed_by_name_company;
9897 END IF;
9898
9899
9900 IF (temp_employed_by_party_id IS NOT NULL and
9901 temp_employed_by_party_id <> FND_API.G_MISS_NUM AND
9902 temp_employed_by_name_company IS NOT NULL AND
9903 temp_employed_by_name_company <> FND_API.G_MISS_CHAR) THEN
9904
9905 fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION2');
9906 fnd_message.set_token('COLUMN1', 'employed_by_name_company');
9907 fnd_message.set_token('COLUMN2', 'employed_by_party_id');
9908 fnd_msg_pub.add;
9909 x_return_status := fnd_api.g_ret_sts_error;
9910
9911 /*IF g_debug THEN
9912 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9913 'check that employed_by_name_company is empty when employed_by_party_id isn t. ' ||
9914 ' x_return_status = ' || x_return_status, l_debug_prefix);
9915 END IF;
9916 */
9917 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9918 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9919 p_message=>'check that employed_by_name_company is empty when employed_by_party_id isn t. ' ||
9920 ' x_return_status = ' || x_return_status,
9921 p_msg_level=>fnd_log.level_statement);
9922 END IF;
9923
9924 END IF;
9925
9926
9927 /*IF g_debug THEN
9928 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9929 '(+) after validating employed_by_name_company ... ' ||
9930 'x_return_status = ' || x_return_status, l_debug_prefix);
9931 END IF;
9932 */
9933 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9934 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9935 p_message=>'(+) after validating employed_by_name_company ... ' ||
9936 'x_return_status = ' || x_return_status,
9937 p_msg_level=>fnd_log.level_statement);
9938 END IF;
9939
9940
9941
9942 --------------------------------------
9943 -- validation for weekly_work_hours
9944 --------------------------------------
9945 -- 3848056 Changed the condition for the Weekly Hours to hold the value 0
9946
9947 -- If weekly_work_hours is passed, must be greater than or equal to zero
9948 -- and less than or equal to 168.
9949
9950 IF p_employment_history_rec.weekly_work_hours IS NOT NULL AND
9951 p_employment_history_rec.weekly_work_hours <> fnd_api.g_miss_num
9952 THEN
9953
9954 IF p_employment_history_rec.weekly_work_hours < 0 OR
9955 p_employment_history_rec.weekly_work_hours > 168 THEN
9956
9957 fnd_message.set_name('AR', 'HZ_API_VALUE_BETWEEN');
9958 fnd_message.set_token('COLUMN', 'weekly_work_hours');
9959 -- Bug 4226199 : This should be changed for bug 3848056
9960 fnd_message.set_token('VALUE1', '0');
9961 fnd_message.set_token('VALUE2', '168');
9962 fnd_msg_pub.add;
9963 x_return_status := fnd_api.g_ret_sts_error;
9964 END IF;
9965
9966 /*IF g_debug THEN
9967 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9968 'check that weekly_work_hours is 1 to 168 value range. ' ||
9969 ' x_return_status = ' || x_return_status, l_debug_prefix);
9970 END IF;
9971 */
9972 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9973 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9974 p_message=>'check that weekly_work_hours is 1 to 168 value range. ' ||
9975 ' x_return_status = ' || x_return_status,
9976 p_msg_level=>fnd_log.level_statement);
9977 END IF;
9978
9979 END IF;
9980
9981
9982 /*IF g_debug THEN
9983 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9984 '(+) after validating weekly_work_hours ... ' ||
9985 'x_return_status = ' || x_return_status, l_debug_prefix);
9986 END IF;
9987 */
9988 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9989 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9990 p_message=>'(+) after validating weekly_work_hours ... ' ||
9991 'x_return_status = ' || x_return_status,
9992 p_msg_level=>fnd_log.level_statement);
9993 END IF;
9994
9995
9996
9997 ---------------------------------------
9998 -- validation for faculty_position_flag
9999 ---------------------------------------
10000
10001 -- faculty_position_flag is mandatory field
10002
10003 validate_mandatory (
10004 p_create_update_flag => p_create_update_flag,
10005 p_column => 'faculty_position_flag',
10006 p_column_value => p_employment_history_rec.faculty_position_flag,
10007 x_return_status => x_return_status);
10008
10009 /*IF g_debug THEN
10010 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10011 'faculty_position_flag is mandatory field. ' ||
10012 'x_return_status = ' || x_return_status, l_debug_prefix);
10013 END IF;
10014 */
10015 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10016 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'faculty_position_flag is mandatory field. ' ||
10017 'x_return_status = ' || x_return_status,
10018 p_msg_level=>fnd_log.level_statement);
10019 END IF;
10020
10021
10022
10023 -- faculty_position_flag is validated against lookup type YES/NO
10024 validate_lookup (
10025 p_column => 'faculty_position_flag',
10026 p_lookup_type => 'YES/NO',
10027 p_column_value => p_employment_history_rec.faculty_position_flag,
10028 x_return_status => x_return_status);
10029
10030
10031 /*IF g_debug THEN
10032 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10033 'faculty_position_flag should be in lookup YES/NO. ' ||
10034 'x_return_status = ' || x_return_status, l_debug_prefix);
10035 END IF;
10036 */
10037 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10038 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'faculty_position_flag should be in lookup YES/NO. ' ||
10039 'x_return_status = ' || x_return_status,
10040 p_msg_level=>fnd_log.level_statement);
10041 END IF;
10042
10043
10044
10045 --------------------------------
10046 -- validation for tenure_code
10047 --------------------------------
10048
10049 -- If tenure_code is passed, faculty_position_flag
10050 -- should be Y.
10051
10052 --2829037 added few more checks due to this bug.
10053 IF p_create_update_flag = 'U' THEN
10054 IF p_employment_history_rec.faculty_position_flag IS NOT NULL then
10055 temp_faculty_position_flag := p_employment_history_rec.faculty_position_flag;
10056 ELSE
10057 temp_faculty_position_flag := l_faculty_position_flag;
10058 END IF;
10059 ELSIF p_create_update_flag = 'C' THEN
10060 temp_faculty_position_flag := p_employment_history_rec.faculty_position_flag;
10061 END IF;
10062
10063 IF p_employment_history_rec.tenure_code IS NOT NULL AND
10064 p_employment_history_rec.tenure_code <> fnd_api.g_miss_char then
10065
10066 IF temp_faculty_position_flag = 'Y' THEN
10067
10068 validate_lookup (
10069 p_column => 'tenure_code',
10070 p_lookup_type => 'HZ_TENURE_CODE',
10071 p_column_value => p_employment_history_rec.tenure_code,
10072 x_return_status => x_return_status);
10073
10074
10075 /*IF g_debug THEN
10076 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10077 'tenure_code should be in lookup HZ_TENURE_CODE. ' ||
10078 ' x_return_status = ' || x_return_status, l_debug_prefix);
10079 END IF;
10080 */
10081 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10082 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10083 p_message=>'tenure_code should be in lookup HZ_TENURE_CODE. ' ||
10084 ' x_return_status = ' || x_return_status,
10085 p_msg_level=>fnd_log.level_statement);
10086 END IF;
10087
10088 ELSE
10089 fnd_message.set_name('AR', 'HZ_API_VAL_DEP_FIELDS');
10090 fnd_message.set_token('COLUMN1', 'faculty_position_flag');
10091 fnd_message.set_token('COLUMN2', 'tenure_code');
10092 fnd_message.set_token('VALUE1', 'N');
10093 fnd_message.set_token('VALUE2', 'null');
10094 fnd_msg_pub.add;
10095 x_return_status := fnd_api.g_ret_sts_error;
10096
10097 END IF;
10098
10099 /*IF g_debug THEN
10100 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10101 '(+) after validating tenure_code ... ' ||
10102 'x_return_status = ' || x_return_status, l_debug_prefix);
10103 END IF;
10104 */
10105 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10106 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validating tenure_code ... ' ||
10107 'x_return_status = ' || x_return_status,
10108 p_msg_level=>fnd_log.level_statement);
10109 END IF;
10110
10111 END IF;
10112
10113 ------------------------------------
10114 -- validation for fraction_of_tenure
10115 ------------------------------------
10116
10117 -- If fraction_of_tenure is passed, faculty_position_flag
10118 -- should be Y.
10119
10120 IF p_employment_history_rec.fraction_of_tenure IS NOT NULL AND
10121 p_employment_history_rec.fraction_of_tenure <> fnd_api.g_miss_num then
10122 IF temp_faculty_position_flag = 'Y' then
10123 IF p_employment_history_rec.fraction_of_tenure < 0 OR
10124 p_employment_history_rec.fraction_of_tenure > 100 THEN
10125
10126 fnd_message.set_name('AR', 'HZ_API_VALUE_BETWEEN');
10127 fnd_message.set_token('COLUMN', 'fraction_of_tenure');
10128 fnd_message.set_token('VALUE1', '0');
10129 fnd_message.set_token('VALUE2', '100');
10130 fnd_msg_pub.add;
10131 x_return_status := fnd_api.g_ret_sts_error;
10132 END IF;
10133
10134 /*IF g_debug THEN
10135 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10136 'check that fraction_of_tenure is 0 to 100 value range. ' ||
10137 ' x_return_status = ' || x_return_status, l_debug_prefix);
10138 END IF;
10139 */
10140 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10141 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10142 p_message=>'check that fraction_of_tenure is 0 to 100 value range. ' ||
10143 ' x_return_status = ' || x_return_status,
10144 p_msg_level=>fnd_log.level_statement);
10145 END IF;
10146
10147 ELSE
10148 fnd_message.set_name('AR', 'HZ_API_VAL_DEP_FIELDS');
10149 fnd_message.set_token('COLUMN1', 'faculty_position_flag');
10150 fnd_message.set_token('COLUMN2', 'fraction_of_tenure');
10151 fnd_message.set_token('VALUE1', 'N');
10152 fnd_message.set_token('VALUE2', 'null');
10153
10154 fnd_message.set_token('COLUMN', 'fraction_of_tenure');
10155 fnd_msg_pub.add;
10156 x_return_status := fnd_api.g_ret_sts_error;
10157 END IF;
10158
10159 END IF;
10160
10161 /*IF g_debug THEN
10162 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10163 '(+) after validating fraction_of_tenure ... ' ||
10164 'x_return_status = ' || x_return_status, l_debug_prefix);
10165 END IF;
10166 */
10167 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10168 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validating fraction_of_tenure ... ' ||
10169 'x_return_status = ' || x_return_status,
10170 p_msg_level=>fnd_log.level_statement);
10171 END IF;
10172
10173
10174
10175 ------------------------
10176 -- validation for status
10177 ------------------------
10178 /****Logical APIs - validation not required****/
10179 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10180 -- status is lookup code in lookup type REGISTRY_STATUS
10181 IF p_employment_history_rec.status IS NOT NULL
10182 AND
10183 p_employment_history_rec.status <> fnd_api.g_miss_char
10184 AND
10185 (p_create_update_flag = 'C'
10186 OR
10187 (p_create_update_flag = 'U'
10188 AND
10189 p_employment_history_rec.status <> NVL(l_status, fnd_api.g_miss_char)
10190 )
10191 )
10192 THEN
10193 validate_lookup (
10194 p_column => 'status',
10195 p_lookup_type => 'REGISTRY_STATUS',
10196 p_column_value => p_employment_history_rec.status,
10197 x_return_status => x_return_status);
10198
10199 /*IF g_debug THEN
10200 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10201 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
10202 'x_return_status = ' || x_return_status, l_debug_prefix);
10203 END IF;
10204 */
10205 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10206 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10207 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
10208 'x_return_status = ' || x_return_status,
10209 p_msg_level=>fnd_log.level_statement);
10210 END IF;
10211
10212
10213 END IF;
10214 END IF;
10215
10216 -- status cannot be set to null during update
10217 IF p_create_update_flag = 'U' THEN
10218 validate_cannot_update_to_null (
10219 p_column => 'status',
10220 p_column_value => p_employment_history_rec.status,
10221 x_return_status => x_return_status);
10222 END IF;
10223
10224
10225 --------------------------------------
10226 -- validate created_by_module
10227 --------------------------------------
10228
10229 validate_created_by_module(
10230 p_create_update_flag => p_create_update_flag,
10231 p_created_by_module => p_employment_history_rec.created_by_module,
10232 p_old_created_by_module => l_created_by_module,
10233 x_return_status => x_return_status);
10234
10235 --------------------------------------
10236 -- validate application_id
10237 --------------------------------------
10238
10239 validate_application_id(
10240 p_create_update_flag => p_create_update_flag,
10241 p_application_id => p_employment_history_rec.application_id,
10242 p_old_application_id => l_application_id,
10243 x_return_status => x_return_status);
10244
10245 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
10246 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_employment_history (-)',
10247 p_msg_level=>fnd_log.level_procedure);
10248 END IF;
10249
10250 END validate_employment_history;
10251
10252
10253 /**
10254 * PROCEDURE validate_work_class
10255 *
10256 * DESCRIPTION
10257 * Validates work_class record. Checks for
10258 * uniqueness
10259 * mandatory columns
10260 * non-updateable fields
10261 * foreign key validations
10262 *
10263 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
10264 *
10265 * ARGUMENTS
10266 * IN:
10267 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
10268 * p_work_class_rec Work_class record.
10269 * p_rowid Rowid of the record (used only in update mode).
10270 * IN/OUT:
10271 * x_return_status Return status after the call. The status can
10272 * be FND_API.G_RET_STS_SUCCESS (success),
10273 * fnd_api.g_ret_sts_error (error),
10274 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
10275 *
10276 * NOTES
10277 *
10278 * MODIFICATION HISTORY
10279 *
10280 * 02-Feb-2003 Porkodi C o Created.
10281 * 10-Mar-2003 Porkodi C Bug 2829041, Corrected the validation for employment_history_id
10282 * to be a foreign key from hz_employment_history.
10283 *
10284 */
10285
10286 PROCEDURE validate_work_class(
10287 p_create_update_flag IN VARCHAR2,
10288 p_work_class_rec IN HZ_PERSON_INFO_V2PUB.WORK_CLASS_REC_TYPE,
10289 p_rowid IN ROWID ,
10290 x_return_status IN OUT NOCOPY VARCHAR2
10291 ) IS
10292
10293 l_count NUMBER;
10294 l_work_class_id NUMBER;
10295 l_dummy VARCHAR2(1);
10296 l_employment_history_id NUMBER := p_work_class_rec.employment_history_id;
10297 l_created_by_module VARCHAR2(150);
10298 l_application_id NUMBER;
10299 l_status VARCHAR2(1);
10300 l_debug_prefix VARCHAR2(30) := '';
10301
10302 CURSOR work_class_cur (p_work_class_id IN NUMBER) IS
10303 SELECT 'Y'
10304 FROM hz_work_class hc
10305 WHERE hc.work_class_id = p_work_class_id;
10306
10307 BEGIN
10308
10309 --enable_debug;
10310
10311 -- Debug info.
10312 /*IF g_debug THEN
10313 hz_utility_v2pub.debug ('validate_work_class (+)');
10314 END IF;
10315 */
10316 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
10317 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_work_class (+)',
10318 p_msg_level=>fnd_log.level_procedure);
10319 END IF;
10320
10321 -- do the query to get old values for update
10322 IF p_create_update_flag = 'U'
10323 THEN
10324 SELECT WORK_CLASS_ID,
10325 EMPLOYMENT_HISTORY_ID,
10326 STATUS,
10327 CREATED_BY_MODULE,
10328 APPLICATION_ID
10329 INTO L_work_class_id,
10330 l_employment_history_id,
10331 l_status,
10332 l_created_by_module,
10333 l_application_id
10334 FROM HZ_work_class
10335 WHERE ROWID = p_rowid;
10336 END IF;
10337
10338
10339 --------------------------------------
10340 -- validate work_class_id
10341 --------------------------------------
10342 /****Logical APIs - validation not required****/
10343 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10344 -- If primary key value is passed, check for uniqueness.
10345 -- If primary key value is not passed, it will be generated
10346 -- from sequence by table handler.
10347
10348
10349 IF p_create_update_flag = 'C' THEN
10350 IF p_work_class_rec.work_class_id IS NOT NULL AND
10351 p_work_class_rec.work_class_id <> fnd_api.g_miss_num
10352 THEN
10353 OPEN work_class_cur (p_work_class_rec.work_class_id);
10354 FETCH work_class_cur INTO l_dummy;
10355
10356 -- key is not unique, push an error onto the stack.
10357 IF NVL(work_class_cur%FOUND, FALSE) THEN
10358 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
10359 fnd_message.set_token('COLUMN', 'work_class_id');
10360 fnd_msg_pub.add;
10361 x_return_status := fnd_api.g_ret_sts_error;
10362 END IF;
10363 CLOSE work_class_cur;
10364
10365 /*IF g_debug THEN
10366 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10367 'check that work_class_id is unique during creation. ' ||
10368 ' x_return_status = ' || x_return_status, l_debug_prefix);
10369 END IF;
10370 */
10371 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10372 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10373 p_message=>'check that work_class_id is unique during creation. ' ||
10374 ' x_return_status = ' || x_return_status,
10375 p_msg_level=>fnd_log.level_statement);
10376 END IF;
10377
10378 END IF;
10379 END IF;
10380
10381
10382 -- work_class_id is non-updateable field
10383 IF p_create_update_flag = 'U' THEN
10384 validate_nonupdateable (
10385 p_column => 'work_class_id',
10386 p_column_value => p_work_class_rec.work_class_id,
10387 p_old_column_value => l_work_class_id,
10388 x_return_status => x_return_status);
10389
10390 /*IF g_debug THEN
10391 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10392 'work_class_id is non-updateable field. ' ||
10393 'x_return_status = ' || x_return_status, l_debug_prefix);
10394 END IF;
10395 */
10396 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10397 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'work_class_id is non-updateable field. ' ||
10398 'x_return_status = ' || x_return_status,
10399 p_msg_level=>fnd_log.level_statement);
10400 END IF;
10401
10402 END IF;
10403
10404 /*IF g_debug THEN
10405 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10406 '(+) after validation of work_class_id ... ' ||
10407 'x_return_status = ' || x_return_status, l_debug_prefix);
10408 END IF;
10409 */
10410 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10411 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validation of work_class_id ... ' ||
10412 'x_return_status = ' || x_return_status,
10413 p_msg_level=>fnd_log.level_statement);
10414 END IF;
10415 END IF;
10416
10417 ---------------------------------------
10418 -- validation for employment_history_id
10419 ---------------------------------------
10420 /****Logical APIs - validation not required****/
10421 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10422 -- employment_history_id is mandatory field
10423 IF p_create_update_flag = 'C' THEN
10424 validate_mandatory (
10425 p_create_update_flag => p_create_update_flag,
10426 p_column => 'employment_history_id',
10427 p_column_value => p_work_class_rec.employment_history_id,
10428 x_return_status => x_return_status);
10429
10430 /*IF g_debug THEN
10431 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10432 'employment_history_id is mandatory field. ' ||
10433 'x_return_status = ' || x_return_status, l_debug_prefix);
10434 END IF;
10435 */
10436 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10437 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'employment_history_id is mandatory field. ' ||
10438 'x_return_status = ' || x_return_status,
10439 p_msg_level=>fnd_log.level_statement);
10440 END IF;
10441
10442
10443 END IF;
10444
10445 -- employment_history_id is non-updateable field
10446 IF p_create_update_flag = 'U' THEN
10447 validate_nonupdateable (
10448 p_column => 'employment_history_id',
10449 p_column_value => p_work_class_rec.employment_history_id,
10450 p_old_column_value => l_employment_history_id,
10451 x_return_status => x_return_status);
10452
10453 /*IF g_debug THEN
10454 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10455 'employment_history_id is non-updateable field. ' ||
10456 'x_return_status = ' || x_return_status, l_debug_prefix);
10457 END IF;
10458 */
10459 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10460 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'employment_history_id is non-updateable field. ' ||
10461 'x_return_status = ' || x_return_status,
10462 p_msg_level=>fnd_log.level_statement);
10463 END IF;
10464
10465
10466 END IF;
10467
10468 -- employment_history_id has foreign key HZ_EMPLOYMENT_HISTORY.EMPLOYMENT_HISTORY_ID
10469 IF p_create_update_flag = 'C'
10470 AND
10471 p_work_class_rec.employment_history_id IS NOT NULL
10472 AND
10473 p_work_class_rec.employment_history_id <> fnd_api.g_miss_num
10474 THEN
10475 BEGIN
10476 SELECT 'Y'
10477 INTO l_dummy
10478 FROM hz_employment_history p
10479 WHERE p.employment_history_id = p_work_class_rec.employment_history_id;
10480
10481 EXCEPTION
10482 WHEN NO_DATA_FOUND THEN
10483 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
10484 fnd_message.set_token('FK', 'employment_history_id');
10485 fnd_message.set_token('COLUMN', 'employment_history_id');
10486 fnd_message.set_token('TABLE', 'hz_employment_history');
10487 fnd_msg_pub.add;
10488 x_return_status := fnd_api.g_ret_sts_error;
10489 END;
10490
10491 /*IF g_debug THEN
10492 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10493 'employment_history_id has foreign key hz_employment_history.employment_history_id. ' ||
10494 'x_return_status = ' || x_return_status, l_debug_prefix);
10495 END IF;
10496 */
10497 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10498 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10499 p_message=>'employment_history_id has foreign key hz_employment_history.employment_history_id. ' ||
10500 'x_return_status = ' || x_return_status,
10501 p_msg_level=>fnd_log.level_statement);
10502 END IF;
10503
10504
10505 END IF;
10506 END IF;
10507
10508 ---------------------------------
10509 -- validation for work_class_name
10510 ---------------------------------
10511
10512 -- work_class_name is mandatory field
10513
10514 validate_mandatory (
10515 p_create_update_flag => p_create_update_flag,
10516 p_column => 'work_class_name',
10517 p_column_value => p_work_class_rec.work_class_name,
10518 x_return_status => x_return_status);
10519
10520 /*IF g_debug THEN
10521 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10522 'work_class_name is mandatory field. ' ||
10523 'x_return_status = ' || x_return_status, l_debug_prefix);
10524 END IF;
10525 */
10526 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10527 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'work_class_name is mandatory field. ' ||
10528 'x_return_status = ' || x_return_status,
10529 p_msg_level=>fnd_log.level_statement);
10530 END IF;
10531
10532
10533 ------------------------
10534 -- validation for status
10535 ------------------------
10536 /****Logical APIs - validation not required****/
10537 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10538 -- status is lookup code in lookup type REGISTRY_STATUS
10539 IF p_work_class_rec.status IS NOT NULL
10540 AND
10541 p_work_class_rec.status <> fnd_api.g_miss_char
10542 AND
10543 (p_create_update_flag = 'C'
10544 OR
10545 (p_create_update_flag = 'U'
10546 AND
10547 p_work_class_rec.status <> NVL(l_status, fnd_api.g_miss_char)
10548 )
10549 )
10550 THEN
10551 validate_lookup (
10552 p_column => 'status',
10553 p_lookup_type => 'REGISTRY_STATUS',
10554 p_column_value => p_work_class_rec.status,
10555 x_return_status => x_return_status);
10556
10557 /*IF g_debug THEN
10558 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10559 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
10560 'x_return_status = ' || x_return_status, l_debug_prefix);
10561 END IF;
10562 */
10563 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10564 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10565 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
10566 'x_return_status = ' || x_return_status,
10567 p_msg_level=>fnd_log.level_statement);
10568 END IF;
10569
10570
10571 END IF;
10572 END IF;
10573
10574 -- status cannot be set to null during update
10575 IF p_create_update_flag = 'U' THEN
10576 validate_cannot_update_to_null (
10577 p_column => 'status',
10578 p_column_value => p_work_class_rec.status,
10579 x_return_status => x_return_status);
10580 END IF;
10581
10582
10583 --------------------------------------
10584 -- validate created_by_module
10585 --------------------------------------
10586
10587 validate_created_by_module(
10588 p_create_update_flag => p_create_update_flag,
10589 p_created_by_module => p_work_class_rec.created_by_module,
10590 p_old_created_by_module => l_created_by_module,
10591 x_return_status => x_return_status);
10592
10593 --------------------------------------
10594 -- validate application_id
10595 --------------------------------------
10596
10597 validate_application_id(
10598 p_create_update_flag => p_create_update_flag,
10599 p_application_id => p_work_class_rec.application_id,
10600 p_old_application_id => l_application_id,
10601 x_return_status => x_return_status);
10602
10603 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
10604 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_work_class (-)',
10605 p_msg_level=>fnd_log.level_procedure);
10606 END IF;
10607
10608 END validate_work_class;
10609
10610 /**
10611 * PROCEDURE validate_person_interest
10612 *
10613 * DESCRIPTION
10614 * Validates person_interest record. Checks for
10615 * uniqueness
10616 * lookup types
10617 * mandatory columns
10618 * non-updateable fields
10619 * foreign key validations
10620 * other validations
10621 *
10622 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
10623 *
10624 * ARGUMENTS
10625 * IN:
10626 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
10627 * p_person_interest_rec person_interest record.
10628 * p_rowid Rowid of the record (used only in update mode).
10629 * IN/OUT:
10630 * x_return_status Return status after the call. The status can
10631 * be FND_API.G_RET_STS_SUCCESS (success),
10632 * fnd_api.g_ret_sts_error (error),
10633 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
10634 *
10635 * NOTES
10636 *
10637 * MODIFICATION HISTORY
10638 *
10639 * 31-Jan-2001 Porkodi C o Created.
10640 * 13-Jan-2004 Rajib Ranjan Borah o Bug 3282946.Person interest can be created for
10641 * all type of parties and not necessarily for
10642 * 'PERSON' type parties only.
10643 */
10644
10645 PROCEDURE validate_person_interest(
10646 p_create_update_flag IN VARCHAR2,
10647 p_person_interest_rec IN HZ_PERSON_INFO_V2PUB.person_interest_REC_TYPE,
10648 p_rowid IN ROWID ,
10649 x_return_status IN OUT NOCOPY VARCHAR2
10650 ) IS
10651
10652 l_count NUMBER;
10653 l_person_interest_id NUMBER;
10654 l_dummy VARCHAR2(1);
10655 l_party_id NUMBER := p_person_interest_rec.party_id;
10656 l_created_by_module VARCHAR2(150);
10657 l_application_id NUMBER;
10658 l_status VARCHAR2(1);
10659 l_debug_prefix VARCHAR2(30) := '';
10660 l_begin_date DATE;
10661 l_end_date DATE;
10662
10663 CURSOR person_interest_cur (p_person_interest_id IN NUMBER) IS
10664 SELECT 'Y'
10665 FROM hz_person_interest hc
10666 WHERE hc.person_interest_id = p_person_interest_id;
10667
10668 BEGIN
10669
10670 --enable_debug;
10671
10672 -- Debug info.
10673 /*IF g_debug THEN
10674 hz_utility_v2pub.debug ('validate_person_interest (+)');
10675 END IF;
10676 */
10677 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
10678 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_person_interest (+)',
10679 p_msg_level=>fnd_log.level_procedure);
10680 END IF;
10681
10682
10683 -- do the query to get old values for update
10684 IF p_create_update_flag = 'U'
10685 THEN
10686 SELECT person_interest_ID,
10687 PARTY_ID,
10688 STATUS,
10689 CREATED_BY_MODULE,
10690 APPLICATION_ID
10691 INTO l_person_interest_id,
10692 l_party_id,
10693 l_status,
10694 l_created_by_module,
10695 l_application_id
10696 FROM HZ_person_interest
10697 WHERE ROWID = p_rowid;
10698 END IF;
10699
10700
10701 --------------------------------------
10702 -- validate person_interest_id
10703 --------------------------------------
10704 /****Logical APIs - validation not required****/
10705 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10706 -- If primary key value is passed, check for uniqueness.
10707 -- If primary key value is not passed, it will be generated
10708 -- from sequence by table handler.
10709
10710
10711 IF p_create_update_flag = 'C' THEN
10712 IF p_person_interest_rec.person_interest_id IS NOT NULL AND
10713 p_person_interest_rec.person_interest_id <> fnd_api.g_miss_num
10714 THEN
10715 OPEN person_interest_cur (p_person_interest_rec.person_interest_id);
10716 FETCH person_interest_cur INTO l_dummy;
10717
10718 -- key is not unique, push an error onto the stack.
10719 IF NVL(person_interest_cur%FOUND, FALSE) THEN
10720 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
10721 fnd_message.set_token('COLUMN', 'person_interest_id');
10722 fnd_msg_pub.add;
10723 x_return_status := fnd_api.g_ret_sts_error;
10724 END IF;
10725 CLOSE person_interest_cur;
10726
10727 /*IF g_debug THEN
10728 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10729 'check that person_interest_id is unique during creation. ' ||
10730 ' x_return_status = ' || x_return_status, l_debug_prefix);
10731 END IF;
10732 */
10733 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10734 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10735 p_message=>'check that person_interest_id is unique during creation. ' ||
10736 ' x_return_status = ' || x_return_status,
10737 p_msg_level=>fnd_log.level_statement);
10738 END IF;
10739
10740 END IF;
10741 END IF;
10742
10743
10744 -- person_interest_id is non-updateable field
10745 IF p_create_update_flag = 'U' THEN
10746 validate_nonupdateable (
10747 p_column => 'person_interest_id',
10748 p_column_value => p_person_interest_rec.person_interest_id,
10749 p_old_column_value => l_person_interest_id,
10750 x_return_status => x_return_status);
10751
10752 /*IF g_debug THEN
10753 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10754 'person_interest_id is non-updateable field. ' ||
10755 'x_return_status = ' || x_return_status, l_debug_prefix);
10756 END IF;
10757 */
10758 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10759 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'person_interest_id is non-updateable field. ' ||
10760 'x_return_status = ' || x_return_status,
10761 p_msg_level=>fnd_log.level_statement);
10762 END IF;
10763
10764 END IF;
10765
10766 /*IF g_debug THEN
10767 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10768 '(+) after validation of person_interest_id ... ' ||
10769 'x_return_status = ' || x_return_status, l_debug_prefix);
10770 END IF;
10771 */
10772 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10773 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validation of person_interest_id ... ' ||
10774 'x_return_status = ' || x_return_status,
10775 p_msg_level=>fnd_log.level_statement);
10776 END IF;
10777 END IF;
10778
10779 --------------------------
10780 -- validation for party_id
10781 --------------------------
10782 /****Logical APIs - validation not required****/
10783 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10784 -- party_id is mandatory field
10785 IF p_create_update_flag = 'C' THEN
10786 validate_mandatory (
10787 p_create_update_flag => p_create_update_flag,
10788 p_column => 'party_id',
10789 p_column_value => p_person_interest_rec.party_id,
10790 x_return_status => x_return_status);
10791
10792 /*IF g_debug THEN
10793 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10794 'party_id is mandatory field. ' ||
10795 'x_return_status = ' || x_return_status, l_debug_prefix);
10796 END IF;
10797 */
10798 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10799 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is mandatory field. ' ||
10800 'x_return_status = ' || x_return_status,
10801 p_msg_level=>fnd_log.level_statement);
10802 END IF;
10803
10804
10805 END IF;
10806
10807 -- party_id is non-updateable field
10808 IF p_create_update_flag = 'U' THEN
10809 validate_nonupdateable (
10810 p_column => 'party_id',
10811 p_column_value => p_person_interest_rec.party_id,
10812 p_old_column_value => l_party_id,
10813 x_return_status => x_return_status);
10814
10815 /*IF g_debug THEN
10816 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10817 'party_id is non-updateable field. ' ||
10818 'x_return_status = ' || x_return_status, l_debug_prefix);
10819 END IF;
10820 */
10821 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10822 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable field. ' ||
10823 'x_return_status = ' || x_return_status,
10824 p_msg_level=>fnd_log.level_statement);
10825 END IF;
10826
10827
10828 END IF;
10829
10830 -- party_id has foreign key HZ_PARTIES.PARTY_ID
10831 IF p_create_update_flag = 'C'
10832 AND
10833 p_person_interest_rec.party_id IS NOT NULL
10834 AND
10835 p_person_interest_rec.party_id <> fnd_api.g_miss_num
10836 THEN
10837 BEGIN
10838 SELECT 'Y'
10839 INTO l_dummy
10840 FROM hz_parties p
10841 WHERE p.party_id = p_person_interest_rec.party_id; /*and
10842 party_type = 'PERSON';*/
10843 /*
10844 Bug 3282946. Some teams still insert into hz_person_interest
10845 for non 'PERSON' type parties.
10846 */
10847
10848 EXCEPTION
10849 WHEN NO_DATA_FOUND THEN
10850 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
10851 fnd_message.set_token('FK', 'party_id');
10852 fnd_message.set_token('COLUMN', 'party_id');
10853 fnd_message.set_token('TABLE', 'hz_parties');
10854 fnd_msg_pub.add;
10855 x_return_status := fnd_api.g_ret_sts_error;
10856 END;
10857
10858 /*IF g_debug THEN
10859 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10860 'party_id has foreign key hz_parties.party_id. ' ||
10861 'x_return_status = ' || x_return_status, l_debug_prefix);
10862 END IF;
10863 */
10864 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10865 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
10866 'x_return_status = ' || x_return_status,
10867 p_msg_level=>fnd_log.level_statement);
10868 END IF;
10869
10870
10871 END IF;
10872 END IF;
10873
10874 ---------------------------------
10875 -- validation for sport_indicator
10876 ---------------------------------
10877 /****Logical APIs - validation not required****/
10878 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10879 -- sport_indicator is mandatory field
10880
10881
10882 -- sport_indicator is validated against lookup type YES/NO
10883 validate_lookup (
10884 p_column => 'sport_indicator',
10885 p_lookup_type => 'YES/NO',
10886 p_column_value => p_person_interest_rec.sport_indicator,
10887 x_return_status => x_return_status);
10888
10889
10890 /*IF g_debug THEN
10891 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10892 'sport_indicator should be in lookup YES/NO. ' ||
10893 'x_return_status = ' || x_return_status, l_debug_prefix);
10894 END IF;
10895 */
10896 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10897 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'sport_indicator should be in lookup YES/NO. ' ||
10898 'x_return_status = ' || x_return_status,
10899 p_msg_level=>fnd_log.level_statement);
10900 END IF;
10901 END IF;
10902
10903 ---------------------------------
10904 -- validation for interest_name
10905 ---------------------------------
10906
10907 -- interest_name is mandatory field
10908
10909 validate_mandatory (
10910 p_create_update_flag => p_create_update_flag,
10911 p_column => 'interest_name',
10912 p_column_value => p_person_interest_rec.interest_name,
10913 x_return_status => x_return_status);
10914
10915 /*IF g_debug THEN
10916 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10917 'interest_name is mandatory field. ' ||
10918 'x_return_status = ' || x_return_status, l_debug_prefix);
10919 END IF;
10920 */
10921 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10922 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'interest_name is mandatory field. ' ||
10923 'x_return_status = ' || x_return_status,
10924 p_msg_level=>fnd_log.level_statement);
10925 END IF;
10926
10927
10928 ------------------------
10929 -- validation for status
10930 ------------------------
10931 /****Logical APIs - validation not required****/
10932 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10933 -- status is lookup code in lookup type REGISTRY_STATUS
10934 IF p_person_interest_rec.status IS NOT NULL
10935 AND
10936 p_person_interest_rec.status <> fnd_api.g_miss_char
10937 AND
10938 (p_create_update_flag = 'C'
10939 OR
10940 (p_create_update_flag = 'U'
10941 AND
10942 p_person_interest_rec.status <> NVL(l_status, fnd_api.g_miss_char)
10943 )
10944 )
10945 THEN
10946 validate_lookup (
10947 p_column => 'status',
10948 p_lookup_type => 'REGISTRY_STATUS',
10949 p_column_value => p_person_interest_rec.status,
10950 x_return_status => x_return_status);
10951
10952 /*IF g_debug THEN
10953 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10954 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
10955 'x_return_status = ' || x_return_status, l_debug_prefix);
10956 END IF;
10957 */
10958 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10959 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10960 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
10961 'x_return_status = ' || x_return_status,
10962 p_msg_level=>fnd_log.level_statement);
10963 END IF;
10964
10965
10966 END IF;
10967 END IF;
10968
10969 -- status cannot be set to null during update
10970 IF p_create_update_flag = 'U' THEN
10971 validate_cannot_update_to_null (
10972 p_column => 'status',
10973 p_column_value => p_person_interest_rec.status,
10974 x_return_status => x_return_status);
10975 END IF;
10976
10977
10978 --------------------------------------
10979 -- validate created_by_module
10980 --------------------------------------
10981
10982 validate_created_by_module(
10983 p_create_update_flag => p_create_update_flag,
10984 p_created_by_module => p_person_interest_rec.created_by_module,
10985 p_old_created_by_module => l_created_by_module,
10986 x_return_status => x_return_status);
10987
10988 --------------------------------------
10989 -- validate application_id
10990 --------------------------------------
10991
10992 validate_application_id(
10993 p_create_update_flag => p_create_update_flag,
10994 p_application_id => p_person_interest_rec.application_id,
10995 p_old_application_id => l_application_id,
10996 x_return_status => x_return_status);
10997
10998 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
10999 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_person_interest (-)',
11000 p_msg_level=>fnd_log.level_procedure);
11001 END IF;
11002
11003 END validate_person_interest;
11004
11005
11006 /**
11007 * PROCEDURE validate_location
11008 *
11009 * DESCRIPTION
11010 * Validates location record. Checks for
11011 * uniqueness
11012 * lookup types
11013 * mandatory columns
11014 * non-updateable fields
11015 * foreign key validations
11016 * other validations
11017 *
11018 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
11019 *
11020 * ARGUMENTS
11021 * IN:
11022 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
11023 * p_location_rec Location record.
11024 * p_rowid Rowid of the record (used only in update mode).
11025 * IN/OUT:
11026 * x_return_status Return status after the call. The status can
11027 * be FND_API.G_RET_STS_SUCCESS (success),
11028 * fnd_api.g_ret_sts_error (error),
11029 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
11030 *
11031 * NOTES
11032 *
11033 * MODIFICATION HISTORY
11034 *
11035 * 07-23-2001 Indrajit Sen o Created.
11036 * 06-FEB-2004 Jianying Huang o Bug 3330754: modified validate_location to
11037 * change validation for third party records
11038 * from row level non-updateable checking to
11039 * attribute level checking.
11040 * 01-03-2005 Rajib Ranjan Borah o SSM SST Integration and Extension.
11041 * Newly created user update rules will be used
11042 * to check update privilege.
11043 *
11044 */
11045
11046 PROCEDURE validate_location(
11047 p_create_update_flag IN VARCHAR2,
11048 p_location_rec IN hz_location_v2pub.location_rec_type,
11049 p_rowid IN ROWID ,
11050 x_return_status IN OUT NOCOPY VARCHAR2
11051 ) IS
11052
11053 l_dummy VARCHAR2(1);
11054 l_address_effective_date DATE;
11055 l_content_source_type HZ_LOCATIONS.CONTENT_SOURCE_TYPE%TYPE;
11056 l_created_by_module VARCHAR2(150);
11057 l_application_id NUMBER;
11058 l_debug_prefix VARCHAR2(30) := '';
11059
11060 -- Bug 2197181: added for mix-n-match
11061 db_actual_content_source HZ_LOCATIONS.ACTUAL_CONTENT_SOURCE%TYPE;
11062
11063 -- Bug 3330754: added to support attribute level non-updateable checking for third
11064 -- party records.
11065 db_orig_system_reference HZ_LOCATIONS.ORIG_SYSTEM_REFERENCE%TYPE;
11066 db_country HZ_LOCATIONS.COUNTRY%TYPE;
11067 db_address1 HZ_LOCATIONS.ADDRESS1%TYPE;
11068 db_address2 HZ_LOCATIONS.ADDRESS2%TYPE;
11069 db_address3 HZ_LOCATIONS.ADDRESS3%TYPE;
11070 db_address4 HZ_LOCATIONS.ADDRESS4%TYPE;
11071 db_city HZ_LOCATIONS.CITY%TYPE;
11072 db_postal_code HZ_LOCATIONS.POSTAL_CODE%TYPE;
11073 db_state HZ_LOCATIONS.STATE%TYPE;
11074 db_province HZ_LOCATIONS.PROVINCE%TYPE;
11075 db_county HZ_LOCATIONS.COUNTY%TYPE;
11076 db_postal_plus4_code HZ_LOCATIONS.POSTAL_PLUS4_CODE%TYPE;
11077 db_clli_code HZ_LOCATIONS.CLLI_CODE%TYPE;
11078 db_delivery_point_code HZ_LOCATIONS.DELIVERY_POINT_CODE%TYPE;
11079 db_location_directions HZ_LOCATIONS.LOCATION_DIRECTIONS%TYPE;
11080 l_return_status VARCHAR2(1);
11081
11082 l_vertex_taxware_installed BOOLEAN;
11083
11084 BEGIN
11085
11086 --enable_debug;
11087
11088 -- Debug info.
11089 /*IF g_debug THEN
11090 hz_utility_v2pub.debug ('validate_location (+)');
11091 END IF;
11092 */
11093 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
11094 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_location (+)',
11095 p_msg_level=>fnd_log.level_procedure);
11096 END IF;
11097
11098
11099 -- select columns needed to be checked from table during update
11100
11101 -- Bug 2197181: selecting actual_content_source for mix-n-match
11102 -- Bug 3330754: added to support attribute level non-updateable checking for third
11103 -- party records.
11104
11105 IF (p_create_update_flag = 'U') THEN
11106 SELECT ADDRESS_EFFECTIVE_DATE,
11107 CONTENT_SOURCE_TYPE,
11108 created_by_module,
11109 APPLICATION_ID,
11110 actual_content_source,
11111 -- Bug 3330754: added to support attribute level
11112 -- non-updateable checking for third party records.
11113 orig_system_reference,
11114 country,
11115 address1,
11116 address2,
11117 address3,
11118 address4,
11119 city,
11120 postal_code,
11121 state,
11122 province,
11123 county,
11124 postal_plus4_code,
11125 clli_code,
11126 delivery_point_code,
11127 location_directions
11128 INTO l_address_effective_date,
11129 l_content_source_type,
11130 l_created_by_module,
11131 l_application_id,
11132 db_actual_content_source,
11133 -- Bug 3330754: added to support attribute level
11134 -- non-updateable checking for third party records.
11135 db_orig_system_reference,
11136 db_country,
11137 db_address1,
11138 db_address2,
11139 db_address3,
11140 db_address4,
11141 db_city,
11142 db_postal_code,
11143 db_state,
11144 db_province,
11145 db_county,
11146 db_postal_plus4_code,
11147 db_clli_code,
11148 db_delivery_point_code,
11149 db_location_directions
11150 FROM HZ_LOCATIONS
11151 WHERE ROWID = p_rowid;
11152 END IF;
11153
11154 --------------------
11155 -- validate address1
11156 --------------------
11157
11158 -- address1 is mandatory
11159 validate_mandatory (
11160 p_create_update_flag => p_create_update_flag,
11161 p_column => 'address1',
11162 p_column_value => p_location_rec.address1,
11163 x_return_status => x_return_status);
11164
11165 --------------------
11166 -- validate country
11167 --------------------
11168
11169 -- country is mandatory
11170 validate_mandatory (
11171 p_create_update_flag => p_create_update_flag,
11172 p_column => 'country',
11173 p_column_value => p_location_rec.country,
11174 x_return_status => x_return_status);
11175
11176 -- country has foreign key fnd_territories.territory_code
11177 validate_country_code(
11178 p_column => 'country',
11179 p_column_value => p_location_rec.country,
11180 x_return_status => x_return_status);
11181
11182 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
11183 hz_utility_v2pub.debug(
11184 p_prefix => l_debug_prefix,
11185 p_message => 'country has foreign key fnd_territories.territory_code. ' ||
11186 'x_return_status = ' || x_return_status,
11187 p_msg_level => fnd_log.level_statement);
11188 END IF;
11189
11190 /* Bug 2197181: removed content_source_type validation as this
11191 column has been obsoleted for mix-n-match project.
11192
11193 -------------------------------
11194 -- validate content_source_type
11195 -------------------------------
11196
11197 -- we do not need to check 'content_source_type is mandatory' because
11198 -- we default content_source_type to hz_party_v2pub.g_miss_content_source_type
11199 -- in table handler.
11200
11201 -- content_source_type is non-updateable
11202 IF p_create_update_flag = 'U' THEN
11203 validate_nonupdateable (
11204 p_column => 'content_source_type',
11205 p_column_value => p_location_rec.content_source_type,
11206 p_old_column_value => l_content_source_type,
11207 x_return_status => x_return_status);
11208
11209
11210 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
11211 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'content_source_type is non-updateable. ' ||
11212 'x_return_status = ' || x_return_status,
11213 p_msg_level=>fnd_log.level_statement);
11214 END IF;
11215 END IF;
11216
11217 -- content_source_type is lookup code in lookup type CONTENT_SOURCE_TYPE
11218 validate_lookup (
11219 p_column => 'content_source_type',
11220 p_lookup_type => 'CONTENT_SOURCE_TYPE',
11221 p_column_value => p_location_rec.content_source_type,
11222 x_return_status => x_return_status);
11223
11224 IF g_debug THEN
11225 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
11226 'content_source_type is lookup code in lookup type CONTENT_SOURCE_TYPE. ' ||
11227 'x_return_status = ' || x_return_status, l_debug_prefix);
11228 END IF;
11229 */
11230
11231 -- Bug 2197181: Added validation for mix-n-match
11232
11233 ----------------------------------------
11234 -- validate content_source_type and actual_content_source_type
11235 ----------------------------------------
11236
11237 HZ_MIXNM_UTILITY.ValidateContentSource (
11238 p_api_version => 'V2',
11239 p_create_update_flag => p_create_update_flag,
11240 -- Bug 3330754: replaced row level non-updateable checking to
11241 -- attribute level checking.
11242 p_check_update_privilege => 'N',
11243 p_content_source_type => p_location_rec.content_source_type,
11244 p_old_content_source_type => l_content_source_type,
11245 p_actual_content_source => p_location_rec.actual_content_source,
11246 p_old_actual_content_source => db_actual_content_source,
11247 p_entity_name => 'HZ_LOCATIONS',
11248 x_return_status => x_return_status );
11249
11250 -- Bug 3330754: added to support attribute level non-updateable checking for third
11251 -- party records.
11252
11253 --------------------------------------
11254 -- validate address components which are third-party sourced.
11255 --------------------------------------
11256
11257 -- address components can not be updated by the end-user if
11258 -- actual_content_source <> 'USER_ENTERED'
11259
11260 IF p_create_update_flag = 'U' AND
11261 db_actual_content_source <> 'USER_ENTERED' -- AND
11262 -- SSM SST Integration and Extension
11263 -- Check Updateability using mix-n-match procedure rather than checking the
11264 -- profile value.
11265 /*NVL(FND_PROFILE.value('HZ_UPDATE_THIRD_PARTY_DATA'), 'N') = 'N'*/
11266 --HZ_UTILITY_V2PUB.is_purchased_content_source(db_actual_content_source) = 'Y'
11267 THEN
11268 l_return_status := FND_API.G_RET_STS_SUCCESS;
11269
11270 validate_nonupdateable (
11271 p_column => 'orig_system_reference',
11272 p_column_value => p_location_rec.orig_system_reference,
11273 p_old_column_value => db_orig_system_reference,
11274 x_return_status => l_return_status,
11275 p_raise_error => 'N');
11276
11277 validate_nonupdateable (
11278 p_column => 'country',
11279 p_column_value => p_location_rec.country,
11280 p_old_column_value => db_country,
11281 x_return_status => l_return_status,
11282 p_raise_error => 'N');
11283
11284 validate_nonupdateable (
11285 p_column => 'address1',
11286 p_column_value => p_location_rec.address1,
11287 p_old_column_value => db_address1,
11288 x_return_status => l_return_status,
11289 p_raise_error => 'N');
11290
11291 validate_nonupdateable (
11292 p_column => 'address2',
11293 p_column_value => p_location_rec.address2,
11294 p_old_column_value => db_address2,
11295 x_return_status => l_return_status,
11296 p_raise_error => 'N');
11297
11298 validate_nonupdateable (
11299 p_column => 'address3',
11300 p_column_value => p_location_rec.address3,
11301 p_old_column_value => db_address3,
11302 x_return_status => l_return_status,
11303 p_raise_error => 'N');
11304
11305 validate_nonupdateable (
11306 p_column => 'address4',
11307 p_column_value => p_location_rec.address4,
11308 p_old_column_value => db_address4,
11309 x_return_status => l_return_status,
11310 p_raise_error => 'N');
11311
11312 validate_nonupdateable (
11313 p_column => 'city',
11314 p_column_value => p_location_rec.city,
11315 p_old_column_value => db_city,
11316 x_return_status => l_return_status,
11317 p_raise_error => 'N');
11318
11319 validate_nonupdateable (
11320 p_column => 'postal_code',
11321 p_column_value => p_location_rec.postal_code,
11322 p_old_column_value => db_postal_code,
11323 x_return_status => l_return_status,
11324 p_raise_error => 'N');
11325
11326 validate_nonupdateable (
11327 p_column => 'state',
11328 p_column_value => p_location_rec.state,
11329 p_old_column_value => db_state,
11330 x_return_status => l_return_status,
11331 p_raise_error => 'N');
11332
11333 validate_nonupdateable (
11334 p_column => 'province',
11335 p_column_value => p_location_rec.province,
11336 p_old_column_value => db_province,
11337 x_return_status => l_return_status,
11338 p_raise_error => 'N');
11339
11340 validate_nonupdateable (
11341 p_column => 'county',
11342 p_column_value => p_location_rec.county,
11343 p_old_column_value => db_county,
11344 x_return_status => l_return_status,
11345 p_raise_error => 'N');
11346
11347 validate_nonupdateable (
11348 p_column => 'postal_plus4_code',
11349 p_column_value => p_location_rec.postal_plus4_code,
11350 p_old_column_value => db_postal_plus4_code,
11351 x_return_status => l_return_status,
11352 p_raise_error => 'N');
11353
11354 validate_nonupdateable (
11355 p_column => 'clli_code',
11356 p_column_value => p_location_rec.clli_code,
11357 p_old_column_value => db_clli_code,
11358 x_return_status => l_return_status,
11359 p_raise_error => 'N');
11360
11361 validate_nonupdateable (
11362 p_column => 'delivery_point_code',
11363 p_column_value => p_location_rec.delivery_point_code,
11364 p_old_column_value => db_delivery_point_code,
11365 x_return_status => l_return_status,
11366 p_raise_error => 'N');
11367
11368 validate_nonupdateable (
11369 p_column => 'location_directions',
11370 p_column_value => p_location_rec.location_directions,
11371 p_old_column_value => db_location_directions,
11372 x_return_status => l_return_status,
11373 p_raise_error => 'N');
11374
11375 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11376
11377 HZ_MIXNM_UTILITY.CheckUserUpdatePrivilege(
11378 p_actual_content_source => db_actual_content_source,
11379 p_new_actual_content_source => p_location_rec.actual_content_source,
11380 p_entity_name => 'HZ_LOCATIONS',
11381 x_return_status => x_return_status);
11382 -- Bug 4693719 : set global variable to Y
11383 HZ_UTILITY_V2PUB.G_UPDATE_ACS := 'Y';
11384 /*
11385 FND_MESSAGE.SET_NAME('AR', 'HZ_NOTALLOW_UPDATE_THIRD_PARTY');
11386 FND_MSG_PUB.ADD;
11387 x_return_status := FND_API.G_RET_STS_ERROR;
11388 */
11389 END IF;
11390
11391 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
11392 hz_utility_v2pub.debug(
11393 p_prefix=>l_debug_prefix,
11394 p_message=>'third party address components are non-updateable. ' ||
11395 'x_return_status = ' || x_return_status,
11396 p_msg_level=>fnd_log.level_statement);
11397 END IF;
11398 END IF;
11399
11400 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
11401 hz_utility_v2pub.debug(
11402 p_prefix=>l_debug_prefix,
11403 p_message=>'(+) after validate third party address components ... ' ||
11404 'x_return_status = ' || x_return_status,
11405 p_msg_level=>fnd_log.level_statement);
11406 END IF;
11407
11408 --------------------------
11409 -- validation for language
11410 --------------------------
11411 -- language has foreign key fnd_languages.language_code
11412 IF p_location_rec.language IS NOT NULL
11413 AND
11414 p_location_rec.language <> fnd_api.g_miss_char
11415 THEN
11416 BEGIN
11417 SELECT 'Y'
11418 INTO l_dummy
11419 FROM FND_LANGUAGES
11420 WHERE LANGUAGE_CODE = p_location_rec.language
11421 AND INSTALLED_FLAG IN ('B', 'I');
11422 EXCEPTION
11423 WHEN NO_DATA_FOUND THEN
11424 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
11425 fnd_message.set_token('FK', 'language');
11426 fnd_message.set_token('COLUMN', 'language_code');
11427 fnd_message.set_token('TABLE', 'fnd_languages(installed)');
11428 fnd_msg_pub.add;
11429 x_return_status := fnd_api.g_ret_sts_error;
11430 END;
11431
11432 /*IF g_debug THEN
11433 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
11434 'language has foreign key fnd_languages.language_code (installed). ' ||
11435 'x_return_status = ' || x_return_status, l_debug_prefix);
11436 END IF;
11437 */
11438 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
11439 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
11440 p_message=>'language has foreign key fnd_languages.language_code (installed). ' ||
11441 'x_return_status = ' || x_return_status,
11442 p_msg_level=>fnd_log.level_statement);
11443 END IF;
11444 END IF;
11445
11446 -----------------------------
11447 -- validation for timezone_id
11448 -----------------------------
11449 -- timezone_id has foreign key hz_timezones.timezone_id
11450 IF p_location_rec.timezone_id IS NOT NULL
11451 AND
11452 p_location_rec.timezone_id <> fnd_api.g_miss_num
11453 THEN
11454 BEGIN
11455 /* Bug 11874705 : Changed the validation from HZ_TIMEZONES to FND_TIMEZONES_VL
11456 SELECT 'Y'
11457 INTO l_dummy
11458 FROM HZ_TIMEZONES
11459 WHERE TIMEZONE_ID = p_location_rec.timezone_id;
11460 */
11461
11462 SELECT 'Y'
11463 INTO l_dummy
11464 FROM FND_TIMEZONES_VL
11465 WHERE UPGRADE_TZ_ID = p_location_rec.timezone_id;
11466 EXCEPTION
11467 WHEN NO_DATA_FOUND THEN
11468 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
11469 fnd_message.set_token('FK', 'timezone_id');
11470 fnd_message.set_token('COLUMN', 'upgrade_tz_id');
11471 fnd_message.set_token('TABLE', 'fnd_timezones_vl');
11472 fnd_msg_pub.add;
11473 x_return_status := fnd_api.g_ret_sts_error;
11474 END;
11475
11476 /*IF g_debug THEN
11477 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
11478 'timezone_id has foreign key hz_timezones.timezone_id. ' ||
11479 'x_return_status = ' || x_return_status, l_debug_prefix);
11480 END IF;
11481 */
11482 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
11483 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
11484 p_message=>'timezone_id has foreign key hz_timezones.timezone_id. ' ||
11485 'x_return_status = ' || x_return_status,
11486 p_msg_level=>fnd_log.level_statement);
11487 END IF;
11488 END IF;
11489
11490 --------------------------------------
11491 -- validate created_by_module
11492 --------------------------------------
11493
11494 validate_created_by_module(
11495 p_create_update_flag => p_create_update_flag,
11496 p_created_by_module => p_location_rec.created_by_module,
11497 p_old_created_by_module => l_created_by_module,
11498 x_return_status => x_return_status);
11499
11500 --------------------------------------
11501 -- validate application_id
11502 --------------------------------------
11503
11504 validate_application_id(
11505 p_create_update_flag => p_create_update_flag,
11506 p_application_id => p_location_rec.application_id,
11507 p_old_application_id => l_application_id,
11508 x_return_status => x_return_status);
11509
11510 --------------------------------------------------------------
11511 -- validate sales_tax_geocode and sales_tax_inside_city_limits
11512 --------------------------------------------------------------
11513 -- Added the below validations as a part of bug fix # 4967075
11514
11515 l_vertex_taxware_installed := zx_r11i_tax_partner_pkg.TAX_VENDOR_EXTENSION;
11516
11517 IF p_location_rec.sales_tax_geocode IS NOT NULL AND p_location_rec.sales_tax_geocode <> fnd_api.g_miss_char THEN
11518 If (zx_r11i_tax_partner_pkg.IS_GEOCODE_VALID(p_location_rec.sales_tax_geocode) = FALSE) then
11519 x_return_status := fnd_api.g_ret_sts_error;
11520 end if;
11521 END IF;
11522
11523 IF p_location_rec.sales_tax_inside_city_limits IS NOT NULL AND p_location_rec.sales_tax_inside_city_limits <> fnd_api.g_miss_char THEN
11524 If (zx_r11i_tax_partner_pkg.IS_CITY_LIMIT_VALID(p_location_rec.sales_tax_inside_city_limits) = FALSE) then
11525 x_return_status := fnd_api.g_ret_sts_error;
11526 end if;
11527 END IF;
11528
11529 --------------------------
11530 -- tax location validation
11531 --------------------------
11532
11533 -- do tax location validation when location is inserted from public API.
11534 -- restrict updates on taxable components when location is used by any
11535 -- non prospect customers.
11536 -- tax code will be created when customer account site is created for
11537 -- this location.
11538
11539 tax_location_validation(p_location_rec,
11540 p_create_update_flag,
11541 x_return_status);
11542
11543 IF x_return_status = fnd_api.g_ret_sts_error THEN
11544 RAISE FND_API.G_EXC_ERROR;
11545 END IF;
11546
11547 -- Debug info.
11548 /*IF g_debug THEN
11549 hz_utility_v2pub.debug ('validate_location (-)');
11550 END IF;
11551 */
11552 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
11553 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_location (-)',
11554 p_msg_level=>fnd_log.level_procedure);
11555 END IF;
11556
11557 --disable_debug;
11558
11559 END validate_location;
11560
11561 /**
11562 * PROCEDURE tax_location_validation
11563 *
11564 * DESCRIPTION
11565 * Validates tax location.
11566 *
11567 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
11568 *
11569 * ARGUMENTS
11570 * IN:
11571 * p_location_rec Location record.
11572 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
11573 * IN/OUT:
11574 * x_return_status Return status after the call. The status can
11575 * be FND_API.G_RET_STS_SUCCESS (success),
11576 * fnd_api.g_ret_sts_error (error),
11577 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
11578 *
11579 * NOTES
11580 *
11581 * MODIFICATION HISTORY
11582 *
11583 * 07-23-2001 Indrajit Sen o Created.
11584 *
11585 */
11586
11587 PROCEDURE tax_location_validation(
11588 p_location_rec IN hz_location_v2pub.location_rec_type,
11589 p_create_update_flag IN VARCHAR2,
11590 x_return_status IN OUT NOCOPY VARCHAR2
11591 ) IS
11592 l_location_id NUMBER;
11593 l_loc_id NUMBER;
11594 l_org_id NUMBER;
11595 l_city VARCHAR2(60);
11596 l_state VARCHAR2(60);
11597 l_country VARCHAR2(60);
11598 l_county VARCHAR2(60);
11599 l_province VARCHAR2(60);
11600 l_postal_code VARCHAR2(60);
11601 l_attribute1 VARCHAR2(150);
11602 l_attribute2 VARCHAR2(150);
11603 l_attribute3 VARCHAR2(150);
11604 l_attribute4 VARCHAR2(150);
11605 l_attribute5 VARCHAR2(150);
11606 l_attribute6 VARCHAR2(150);
11607 l_attribute7 VARCHAR2(150);
11608 l_attribute8 VARCHAR2(150);
11609 l_attribute9 VARCHAR2(150);
11610 l_attribute10 VARCHAR2(150);
11611
11612 -- old attributes of location to be modified
11613 o_location_id NUMBER;
11614 o_loc_id NUMBER;
11615 o_org_id NUMBER;
11616 o_city VARCHAR2(60);
11617 o_state VARCHAR2(60);
11618 o_country VARCHAR2(60);
11619 o_county VARCHAR2(60);
11620 o_province VARCHAR2(60);
11621 o_postal_code VARCHAR2(60);
11622 o_attribute1 VARCHAR2(150);
11623 o_attribute2 VARCHAR2(150);
11624 o_attribute3 VARCHAR2(150);
11625 o_attribute4 VARCHAR2(150);
11626 o_attribute5 VARCHAR2(150);
11627 o_attribute6 VARCHAR2(150);
11628 o_attribute7 VARCHAR2(150);
11629 o_attribute8 VARCHAR2(150);
11630 o_attribute9 VARCHAR2(150);
11631 o_attribute10 VARCHAR2(150);
11632
11633 l_loc_assignment_exist VARCHAR2(1) := 'N';
11634 l_is_remit_to_location VARCHAR2(1) := 'N';
11635 l_debug_prefix VARCHAR2(30) := '';
11636
11637 BEGIN
11638
11639 --enable_debug;
11640
11641 -- Debug info.
11642 /*IF g_debug THEN
11643 hz_utility_v2pub.debug ('tax_location_validation (+)');
11644 END IF;
11645 */
11646 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
11647 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'tax_location_validation (+)',
11648 p_msg_level=>fnd_log.level_procedure);
11649 END IF;
11650
11651 -- tax location validation:
11652
11653 l_country := p_location_rec.country;
11654 l_city := p_location_rec.city;
11655 l_state := p_location_rec.state;
11656 l_county := p_location_rec.county;
11657 l_province := p_location_rec.province;
11658 l_postal_code := p_location_rec.postal_code;
11659 l_attribute1 := p_location_rec.attribute1;
11660 l_attribute2 := p_location_rec.attribute2;
11661 l_attribute3 := p_location_rec.attribute3;
11662 l_attribute4 := p_location_rec.attribute4;
11663 l_attribute5 := p_location_rec.attribute5;
11664 l_attribute6 := p_location_rec.attribute6;
11665 l_attribute7 := p_location_rec.attribute7;
11666 l_attribute8 := p_location_rec.attribute8;
11667 l_attribute9 := p_location_rec.attribute9;
11668 l_attribute10 := p_location_rec.attribute10;
11669
11670 IF p_create_update_flag = 'C' THEN
11671 -- no validation to be done
11672 -- tax code will be populated when customer account site is created.
11673 null;
11674
11675 ELSIF p_create_update_flag = 'U' THEN
11676
11677 l_location_id := p_location_rec.location_id;
11678
11679 -- check if the location is only used by prospect customers
11680
11681 BEGIN
11682 SELECT 'Y'
11683 INTO l_loc_assignment_exist
11684 FROM DUAL
11685 WHERE EXISTS (SELECT 1
11686 FROM hz_loc_assignments la
11687 WHERE la.location_id = l_location_id
11688 );
11689 SELECT 'Y'
11690 INTO l_is_remit_to_location
11691 FROM DUAL
11692 WHERE EXISTS (SELECT 1
11693 FROM hz_party_sites ps
11694 WHERE ps.location_id = l_location_id
11695 AND ps.party_id = -1
11696 );
11697 EXCEPTION
11698 WHEN NO_DATA_FOUND THEN
11699 NULL;
11700 END;
11701
11702
11703 IF l_is_remit_to_location = 'N' and l_loc_assignment_exist = 'Y' THEN
11704
11705 -- check if the taxable components are changed
11706 IF ( (p_location_rec.country IS NOT NULL
11707 AND p_location_rec.country <> fnd_api.g_miss_char)
11708 OR (p_location_rec.city IS NOT NULL
11709 AND p_location_rec.city <> fnd_api.g_miss_char)
11710 OR (p_location_rec.state IS NOT NULL
11711 AND p_location_rec.state <> fnd_api.g_miss_char)
11712 OR (p_location_rec.county IS NOT NULL
11713 AND p_location_rec.county <> fnd_api.g_miss_char)
11714 OR (p_location_rec.province IS NOT NULL
11715 AND p_location_rec.province <> fnd_api.g_miss_char)
11716 OR (p_location_rec.postal_code IS NOT NULL
11717 AND p_location_rec.postal_code <> fnd_api.g_miss_char)
11718 OR (p_location_rec.attribute1 IS NOT NULL
11719 AND p_location_rec.attribute1 <> fnd_api.g_miss_char)
11720 OR (p_location_rec.attribute2 IS NOT NULL
11721 AND p_location_rec.attribute2 <> fnd_api.g_miss_char)
11722 OR (p_location_rec.attribute3 IS NOT NULL
11723 AND p_location_rec.attribute3 <> fnd_api.g_miss_char)
11724 OR (p_location_rec.attribute4 IS NOT NULL
11725 AND p_location_rec.attribute4 <> fnd_api.g_miss_char)
11726 OR (p_location_rec.attribute5 IS NOT NULL
11727 AND p_location_rec.attribute5 <> fnd_api.g_miss_char)
11728 OR (p_location_rec.attribute6 IS NOT NULL
11729 AND p_location_rec.attribute6 <> fnd_api.g_miss_char)
11730 OR (p_location_rec.attribute7 IS NOT NULL
11731 AND p_location_rec.attribute7 <> fnd_api.g_miss_char)
11732 OR (p_location_rec.attribute8 IS NOT NULL
11733 AND p_location_rec.attribute8 <> fnd_api.g_miss_char)
11734 OR (p_location_rec.attribute9 IS NOT NULL
11735 AND p_location_rec.attribute9 <> fnd_api.g_miss_char)
11736 OR (p_location_rec.attribute10 IS NOT NULL
11737 AND p_location_rec.attribute10 <> fnd_api.g_miss_char))
11738 THEN
11739 BEGIN
11740 SELECT country, city, state, county, province, postal_code,
11741 attribute1, attribute2, attribute3, attribute4, attribute5,
11742 attribute6, attribute7, attribute8, attribute9, attribute10
11743 INTO o_country, o_city, o_state, o_county, o_province, o_postal_code,
11744 o_attribute1,o_attribute2,o_attribute3,o_attribute4,o_attribute5,
11745 o_attribute6,o_attribute7,o_attribute8,o_attribute9,o_attribute10
11746 FROM HZ_LOCATIONS
11747 WHERE location_id = p_location_rec.location_id ;
11748
11749 IF ( o_country <> p_location_rec.country
11750 OR o_city <> p_location_rec.city
11751 OR o_state <> p_location_rec.state
11752 OR o_county <> p_location_rec.county
11753 OR o_province <> p_location_rec.province
11754 OR o_postal_code <> p_location_rec.postal_code
11755 )
11756 THEN
11757 IF ARH_ADDR_PKG.check_tran_for_all_accts(p_location_rec.location_id)
11758 THEN
11759 fnd_message.set_name('AR', 'AR_CUST_ADDR_HAS_TRANSACTION');
11760 --Bug 2452282 fnd_message.set_token('COLUMN', 'tax related fields');
11761 fnd_msg_pub.add;
11762 x_return_status := fnd_api.g_ret_sts_error;
11763 ELSE -- non taxable components to be modified
11764 null; -- allow updates
11765 END IF;
11766 END IF;
11767 END; -- end of first select
11768 END IF; -- taxable components are not changed
11769 END IF; -- end of p_location_rec.location_id <> -1
11770 END IF;
11771
11772 -- Debug info.
11773 /*IF g_debug THEN
11774 hz_utility_v2pub.debug ('tax_location_validation (-)');
11775 END IF;
11776 */
11777 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
11778 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'tax_location_validation (-)',
11779 p_msg_level=>fnd_log.level_procedure);
11780 END IF;
11781
11782 --disable_debug;
11783
11784 END tax_location_validation;
11785
11786 /**
11787 * PROCEDURE validate_relationship_type
11788 *
11789 * DESCRIPTION
11790 * Validates relationship type record. Checks for
11791 * uniqueness
11792 * lookup types
11793 * mandatory columns
11794 * non-updateable fields
11795 * foreign key validations
11796 * other validations
11797 *
11798 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
11799 *
11800 * ARGUMENTS
11801 * IN:
11802 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
11803 * p_relationship_type_rec relationship type record.
11804 * p_rowid Rowid of the record (used only in update mode).
11805 * IN/OUT:
11806 * x_return_status Return status after the call. The status can
11807 * be FND_API.G_RET_STS_SUCCESS (success),
11808 * fnd_api.g_ret_sts_error (error),
11809 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
11810 *
11811 * NOTES
11812 *
11813 * MODIFICATION HISTORY
11814 *
11815 * 07-23-2001 Indrajit Sen o Created.
11816 * 12-23-2003 Rajib Ranjan Borah o Bug 2751613.Combination of relationship phrase,subject_type
11817 * and object_type should yield an unique phrase in the reverse
11818 * direction.
11819 * 29-NOV-2004 S V Sowjanya o Bug 3491584: Added a validation in procedure validate_relationship_type
11820 * to throw an error message while creating non directional relationship type
11821 * with different subject type and object type.
11822 *
11823 */
11824
11825 PROCEDURE validate_relationship_type(
11826 p_create_update_flag IN VARCHAR2,
11827 p_relationship_type_rec IN HZ_RELATIONSHIP_TYPE_V2PUB.RELATIONSHIP_TYPE_REC_TYPE,
11828 p_rowid IN ROWID ,
11829 x_return_status IN OUT NOCOPY VARCHAR2
11830 ) IS
11831
11832 l_dummy VARCHAR2(1);
11833 l_count NUMBER;
11834 l_code VARCHAR2(30);
11835 l_relationship_type HZ_RELATIONSHIP_TYPES.RELATIONSHIP_TYPE%TYPE;
11836 l_forward_rel_code HZ_RELATIONSHIP_TYPES.FORWARD_REL_CODE%TYPE;
11837 l_backward_rel_code HZ_RELATIONSHIP_TYPES.BACKWARD_REL_CODE%TYPE;
11838 l_direction_code HZ_RELATIONSHIP_TYPES.DIRECTION_CODE%TYPE;
11839 l_create_party_flag HZ_RELATIONSHIP_TYPES.CREATE_PARTY_FLAG%TYPE;
11840 l_allow_relate_to_self_flag HZ_RELATIONSHIP_TYPES.ALLOW_RELATE_TO_SELF_FLAG%TYPE;
11841 l_allow_circular_relationships HZ_RELATIONSHIP_TYPES.ALLOW_CIRCULAR_RELATIONSHIPS%TYPE;
11842 l_hierarchical_flag HZ_RELATIONSHIP_TYPES.HIERARCHICAL_FLAG%TYPE;
11843 l_multiple_parent_allowed HZ_RELATIONSHIP_TYPES.MULTIPLE_PARENT_ALLOWED%TYPE;
11844 l_incl_unrelated_entities HZ_RELATIONSHIP_TYPES.INCL_UNRELATED_ENTITIES%TYPE;
11845 l_subject_type HZ_RELATIONSHIP_TYPES.SUBJECT_TYPE%TYPE;
11846 l_object_type HZ_RELATIONSHIP_TYPES.OBJECT_TYPE%TYPE;
11847 l_created_by_module VARCHAR2(150);
11848 l_application_id NUMBER;
11849 l_status VARCHAR2(1);
11850 l_debug_prefix VARCHAR2(30) := '';
11851 l_role VARCHAR2(30);
11852
11853 BEGIN
11854
11855 --enable_debug;
11856
11857 -- Debug info.
11858 /*IF g_debug THEN
11859 hz_utility_v2pub.debug ('validate_relationship_type (+)');
11860 END IF;
11861 */
11862 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
11863 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_relationship_type (+)',
11864 p_msg_level=>fnd_log.level_procedure);
11865 END IF;
11866
11867 -- select columns needed to be checked from table during update
11868 IF (p_create_update_flag = 'U') THEN
11869 SELECT RELATIONSHIP_TYPE,
11870 FORWARD_REL_CODE,
11871 BACKWARD_REL_CODE,
11872 DIRECTION_CODE,
11873 HIERARCHICAL_FLAG,
11874 CREATE_PARTY_FLAG,
11875 ALLOW_RELATE_TO_SELF_FLAG,
11876 ALLOW_CIRCULAR_RELATIONSHIPS,
11877 MULTIPLE_PARENT_ALLOWED,
11878 INCL_UNRELATED_ENTITIES,
11879 SUBJECT_TYPE,
11880 OBJECT_TYPE,
11881 ROLE,
11882 CREATED_BY_MODULE,
11883 APPLICATION_ID
11884 INTO l_relationship_type,
11885 l_forward_rel_code,
11886 l_backward_rel_code,
11887 l_direction_code,
11888 l_hierarchical_flag,
11889 l_create_party_flag,
11890 l_allow_relate_to_self_flag,
11891 l_allow_circular_relationships,
11892 l_multiple_parent_allowed,
11893 l_incl_unrelated_entities,
11894 l_subject_type,
11895 l_object_type,
11896 l_role,
11897 l_created_by_module,
11898 l_application_id
11899 FROM HZ_RELATIONSHIP_TYPES
11900 WHERE ROWID = p_rowid;
11901 END IF;
11902
11903
11904 -- Validate the nonupdateability of ROLE
11905
11906 IF (p_create_update_flag = 'U') THEN
11907 validate_nonupdateable (
11908 p_column => 'ROLE',
11909 p_column_value => p_relationship_type_rec.forward_role,
11910 p_old_column_value => l_role,
11911 x_return_status => x_return_status
11912 );
11913 --------Bug no: 3564107 ---------------------------------
11914 BEGIN
11915 SELECT ROLE INTO l_role
11916 FROM HZ_RELATIONSHIP_TYPES
11917 WHERE RELATIONSHIP_TYPE = l_relationship_type
11918 AND FORWARD_REL_CODE = l_backward_rel_code
11919 AND BACKWARD_REL_CODE = l_forward_rel_code
11920 AND SUBJECT_TYPE = l_object_type
11921 AND OBJECT_TYPE = l_subject_type
11922 AND ROWNUM = 1;
11923
11924 validate_nonupdateable (
11925 p_column => 'ROLE',
11926 p_column_value => p_relationship_type_rec.backward_role,
11927 p_old_column_value => l_role,
11928 x_return_status => x_return_status
11929 );
11930 EXCEPTION
11931 WHEN NO_DATA_FOUND THEN
11932 NULL;
11933 END;
11934 --------End of Bug no: 3564107 ---------------------------------
11935 END IF;
11936
11937 /* -- Raise an error if user tries to update forward role to NULL
11938 IF (p_create_update_flag = 'U') THEN
11939 validate_cannot_update_to_null (
11940 p_column => 'role',
11941 p_column_value => p_relationship_type_rec.forward_role,
11942 x_return_status => x_return_status
11943 );
11944
11945 -- Raise an error if user tries to update backward role to NULL
11946 IF (p_create_update_flag = 'U') THEN
11947 validate_cannot_update_to_null (
11948 p_column => 'role',
11949 p_column_value => p_relationship_type_rec.backward_role,
11950 x_return_status => x_return_status
11951 );
11952 END IF;*/
11953
11954 /*-- validate forward_role
11955 IF (p_create_update_flag = 'U') THEN
11956 validate_lookup (
11957 p_column => 'role',
11958 p_lookup_type => 'HZ_RELATIONSHIP_ROLE',
11959 p_column_value => p_relationship_type_rec.forward_role,
11960 x_return_status => x_return_status);
11961 END IF;
11962
11963 -- validate backward_role
11964 IF (p_create_update_flag = 'U') THEN
11965 validate_lookup (
11966 p_column => 'role',
11967 p_lookup_type => 'HZ_RELATIONSHIP_ROLE',
11968 p_column_value => p_relationship_type_rec.backward_role,
11969 x_return_status => x_return_status);
11970 END IF; */
11971
11972
11973 -----------------------------
11974 -- validate relationship_type
11975 -----------------------------
11976
11977 -- relationship_type is mandatory
11978 validate_mandatory (
11979 p_create_update_flag => p_create_update_flag,
11980 p_column => 'relationship_type',
11981 p_column_value => p_relationship_type_rec.relationship_type,
11982 x_return_status => x_return_status);
11983
11984 /*IF g_debug THEN
11985 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
11986 'relationship_type is mandatory. ' ||
11987 'x_return_status = ' || x_return_status, l_debug_prefix);
11988 END IF;
11989 */
11990 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
11991 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'relationship_type is mandatory. ' ||
11992 'x_return_status = ' || x_return_status,
11993 p_msg_level=>fnd_log.level_statement);
11994 END IF;
11995
11996
11997 -- relationship_type is non-updateable
11998 IF p_create_update_flag = 'U' THEN
11999 validate_nonupdateable (
12000 p_column => 'relationship_type',
12001 p_column_value => p_relationship_type_rec.relationship_type,
12002 p_old_column_value => l_relationship_type,
12003 x_return_status => x_return_status);
12004 END IF;
12005
12006 /*IF g_debug THEN
12007 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12008 'relationship_type is non-updateable. ' ||
12009 'x_return_status = ' || x_return_status, l_debug_prefix);
12010 END IF;
12011 */
12012 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12013 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'relationship_type is non-updateable. ' ||
12014 'x_return_status = ' || x_return_status,
12015 p_msg_level=>fnd_log.level_statement);
12016 END IF;
12017
12018
12019
12020
12021 ------------------
12022 -- validate status
12023 ------------------
12024
12025 -- status cannot be set to null during update
12026 IF p_create_update_flag = 'U' THEN
12027 validate_cannot_update_to_null (
12028 p_column => 'status',
12029 p_column_value => p_relationship_type_rec.status,
12030 x_return_status => x_return_status);
12031
12032 /*IF g_debug THEN
12033 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12034 'status cannot be set to null during update. ' ||
12035 'x_return_status = ' || x_return_status, l_debug_prefix);
12036 END IF;
12037 */
12038 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12039 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'status cannot be set to null during update. ' ||
12040 'x_return_status = ' || x_return_status,
12041 p_msg_level=>fnd_log.level_statement);
12042 END IF;
12043
12044
12045 END IF;
12046
12047 -- status is lookup code in lookup type CODE_STATUS
12048 IF p_relationship_type_rec.status IS NOT NULL
12049 AND
12050 p_relationship_type_rec.status <> fnd_api.g_miss_char
12051 AND
12052 (p_create_update_flag = 'C'
12053 OR
12054 (p_create_update_flag = 'U'
12055 AND
12056 p_relationship_type_rec.status <> NVL(l_status, fnd_api.g_miss_char)
12057 )
12058 )
12059 THEN
12060 validate_lookup (
12061 p_column => 'status',
12062 p_lookup_type => 'CODE_STATUS',
12063 p_column_value => p_relationship_type_rec.status,
12064 x_return_status => x_return_status);
12065
12066 /*IF g_debug THEN
12067 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12068 'status is lookup code in lookup type CODE_STATUS. ' ||
12069 'x_return_status = ' || x_return_status, l_debug_prefix);
12070 END IF;
12071 */
12072 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12073 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12074 p_message=>'status is lookup code in lookup type CODE_STATUS. ' ||
12075 'x_return_status = ' || x_return_status,
12076 p_msg_level=>fnd_log.level_statement);
12077 END IF;
12078
12079
12080 END IF;
12081
12082 -----------------------------
12083 -- validate create_party_flag
12084 -----------------------------
12085
12086 -- create_party_flag is lookup code in lookup type YES/NO
12087 validate_lookup (
12088 p_column => 'create_party_flag',
12089 p_lookup_type => 'YES/NO',
12090 p_column_value => p_relationship_type_rec.create_party_flag,
12091 x_return_status => x_return_status);
12092
12093 /*IF g_debug THEN
12094 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12095 'create_party_flag should be in lookup YES/NO. ' ||
12096 'x_return_status = ' || x_return_status, l_debug_prefix);
12097 END IF;
12098 */
12099 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12100 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'create_party_flag should be in lookup YES/NO. ' ||
12101 'x_return_status = ' || x_return_status,
12102 p_msg_level=>fnd_log.level_statement);
12103 END IF;
12104
12105
12106 -- create_party_flag is non-updateable if relationship records are already created based
12107 -- on the current value of the flag
12108 IF p_create_update_flag = 'U' THEN
12109 IF p_relationship_type_rec.create_party_flag <> fnd_api.g_miss_char
12110 AND
12111 p_relationship_type_rec.create_party_flag IS NOT NULL
12112 AND
12113 p_relationship_type_rec.create_party_flag <> l_create_party_flag
12114 THEN
12115 IF l_create_party_flag = 'Y' AND p_relationship_type_rec.create_party_flag = 'N' THEN
12116 -- check if there is any relationship with this relationship type having a party.
12117 -- if there is, do not allow the update
12118 BEGIN
12119 SELECT 1 INTO l_count
12120 FROM HZ_RELATIONSHIPS
12121 WHERE RELATIONSHIP_TYPE = l_relationship_type
12122 AND SUBJECT_TYPE = l_subject_type
12123 AND OBJECT_TYPE = l_object_type
12124 AND RELATIONSHIP_CODE = l_forward_rel_code
12125 AND PARTY_ID IS NOT NULL
12126 AND STATUS = 'A'
12127 AND TRUNC(SYSDATE) BETWEEN TRUNC(START_DATE) AND TRUNC(NVL(END_DATE, SYSDATE))
12128 AND ROWNUM = 1;
12129
12130 -- update is not allowed, raise error
12131 fnd_message.set_name('AR', 'HZ_API_CPF_NON_UPDATEABLE');
12132 fnd_msg_pub.add;
12133 x_return_status := fnd_api.g_ret_sts_error;
12134
12135 EXCEPTION
12136 WHEN NO_DATA_FOUND THEN
12137 NULL;
12138 END;
12139 END IF;
12140
12141 IF l_create_party_flag = 'N' AND p_relationship_type_rec.create_party_flag = 'Y' THEN
12142 -- check if there is any relationship with this relationship type not having a party.
12143 -- if there is, do not allow the update.
12144 BEGIN
12145 SELECT 1 INTO l_count
12146 FROM HZ_RELATIONSHIPS
12147 WHERE RELATIONSHIP_TYPE = l_relationship_type
12148 AND SUBJECT_TYPE = l_subject_type
12149 AND OBJECT_TYPE = l_object_type
12150 AND RELATIONSHIP_CODE = l_forward_rel_code
12151 AND PARTY_ID IS NULL
12152 AND STATUS = 'A'
12153 AND TRUNC(SYSDATE) BETWEEN TRUNC(START_DATE) AND TRUNC(NVL(END_DATE, SYSDATE))
12154 AND ROWNUM = 1;
12155
12156 -- update is not allowed, raise error
12157 fnd_message.set_name('AR', 'HZ_API_CPF_NON_UPDATEABLE');
12158 fnd_msg_pub.add;
12159 x_return_status := fnd_api.g_ret_sts_error;
12160
12161 EXCEPTION
12162 WHEN NO_DATA_FOUND THEN
12163 NULL;
12164 END;
12165
12166 END IF;
12167 END IF;
12168 END IF;
12169
12170 /*IF g_debug THEN
12171 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12172 'create_party_flag is updateable/non-updateable. ' ||
12173 'x_return_status = ' || x_return_status, l_debug_prefix);
12174 END IF;
12175 */
12176 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12177 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'create_party_flag is updateable/non-updateable. ' ||
12178 'x_return_status = ' || x_return_status,
12179 p_msg_level=>fnd_log.level_statement);
12180 END IF;
12181
12182
12183 -----------------------------
12184 -- validate allow_circular_relationships
12185 -----------------------------
12186
12187 -- allow_circular_relationships is lookup code in lookup type YES/NO
12188 validate_lookup (
12189 p_column => 'allow_circular_relationships',
12190 p_lookup_type => 'YES/NO',
12191 p_column_value => p_relationship_type_rec.allow_circular_relationships,
12192 x_return_status => x_return_status);
12193
12194 /*IF g_debug THEN
12195 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12196 'allow_circular_relationships should be in lookup YES/NO. ' ||
12197 'x_return_status = ' || x_return_status, l_debug_prefix);
12198 END IF;
12199 */
12200 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12201 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12202 p_message=>'allow_circular_relationships should be in lookup YES/NO. ' ||
12203 'x_return_status = ' || x_return_status,
12204 p_msg_level=>fnd_log.level_statement);
12205 END IF;
12206
12207
12208 -- allow_circular_relationships is non-updateable
12209 IF p_create_update_flag = 'U' THEN
12210 validate_nonupdateable (
12211 p_column => 'allow_circular_relationships',
12212 p_column_value => p_relationship_type_rec.allow_circular_relationships,
12213 p_old_column_value => l_allow_circular_relationships,
12214 x_return_status => x_return_status);
12215
12216 /*IF g_debug THEN
12217 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12218 'allow_circular_relationships is non-updateable. ' ||
12219 'x_return_status = ' || x_return_status, l_debug_prefix);
12220 END IF;
12221 */
12222 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12223 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12224 p_message=>'allow_circular_relationships is non-updateable. ' ||
12225 'x_return_status = ' || x_return_status,
12226 p_msg_level=>fnd_log.level_statement);
12227 END IF;
12228
12229
12230 END IF;
12231
12232 -------------------------------------
12233 -- validate allow_relate_to_self_flag
12234 -------------------------------------
12235
12236 -- allow_relate_to_self_flag is lookup code in lookup type YES/NO
12237 validate_lookup (
12238 p_column => 'allow_relate_to_self_flag',
12239 p_lookup_type => 'YES/NO',
12240 p_column_value => p_relationship_type_rec.allow_relate_to_self_flag,
12241 x_return_status => x_return_status);
12242
12243 /*IF g_debug THEN
12244 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12245 'allow_relate_to_self_flag should be in lookup YES/NO. ' ||
12246 'x_return_status = ' || x_return_status, l_debug_prefix);
12247 END IF;
12248 */
12249 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12250 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12251 p_message=>'allow_relate_to_self_flag should be in lookup YES/NO. ' ||
12252 'x_return_status = ' || x_return_status,
12253 p_msg_level=>fnd_log.level_statement);
12254 END IF;
12255
12256
12257 -- allow_relate_to_self_flag is non-updateable
12258 IF p_create_update_flag = 'U' THEN
12259 validate_nonupdateable (
12260 p_column => 'allow_relate_to_self_flag',
12261 p_column_value => p_relationship_type_rec.allow_relate_to_self_flag,
12262 p_old_column_value => l_allow_relate_to_self_flag,
12263 x_return_status => x_return_status);
12264
12265 /*IF g_debug THEN
12266 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12267 'allow_relate_to_self_flag is non-updateable. ' ||
12268 'x_return_status = ' || x_return_status, l_debug_prefix);
12269 END IF;
12270 */
12271 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12272 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'allow_relate_to_self_flag is non-updateable. ' ||
12273 'x_return_status = ' || x_return_status,
12274 p_msg_level=>fnd_log.level_statement);
12275 END IF;
12276
12277
12278 END IF;
12279
12280 ----------------------------
12281 -- validate forward_rel_code
12282 ----------------------------
12283
12284 -- forward_rel_code is mandatory
12285 validate_mandatory (
12286 p_create_update_flag => p_create_update_flag,
12287 p_column => 'forward_rel_code',
12288 p_column_value => p_relationship_type_rec.forward_rel_code,
12289 x_return_status => x_return_status);
12290
12291 -- forward_rel_code is lookup code in lookup type PARTY_RELATIONS_TYPE
12292 validate_lookup (
12293 p_column => 'forward_rel_code',
12294 p_lookup_type => 'PARTY_RELATIONS_TYPE',
12295 p_column_value => p_relationship_type_rec.forward_rel_code,
12296 x_return_status => x_return_status);
12297
12298 /*IF g_debug THEN
12299 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12300 'forward_rel_code is lookup code in lookup type PARTY_RELATIONS_TYPE. ' ||
12301 'x_return_status = ' || x_return_status, l_debug_prefix);
12302 END IF;
12303 */
12304 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12305 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12306 p_message=>'forward_rel_code is lookup code in lookup type PARTY_RELATIONS_TYPE. ' ||
12307 'x_return_status = ' || x_return_status,
12308 p_msg_level=>fnd_log.level_statement);
12309 END IF;
12310
12311
12312 -- forward_rel_code is non-updateable
12313 IF p_create_update_flag = 'U' THEN
12314 validate_nonupdateable (
12315 p_column => 'forward_rel_code',
12316 p_column_value => p_relationship_type_rec.forward_rel_code,
12317 p_old_column_value => l_forward_rel_code,
12318 x_return_status => x_return_status);
12319
12320 /*IF g_debug THEN
12321 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12322 'forward_rel_code is non-updateable. ' ||
12323 'x_return_status = ' || x_return_status, l_debug_prefix);
12324 END IF;
12325 */
12326 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12327 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'forward_rel_code is non-updateable. ' ||
12328 'x_return_status = ' || x_return_status,
12329 p_msg_level=>fnd_log.level_statement);
12330 END IF;
12331
12332
12333 END IF;
12334
12335 -----------------------------
12336 -- validate backward_rel_code
12337 -----------------------------
12338
12339 -- backward_rel_code is mandatory
12340 validate_mandatory (
12341 p_create_update_flag => p_create_update_flag,
12342 p_column => 'backward_rel_code',
12343 p_column_value => p_relationship_type_rec.backward_rel_code,
12344 x_return_status => x_return_status);
12345
12346 -- backward_rel_code is lookup code in lookup type PARTY_RELATIONS_TYPE
12347 validate_lookup (
12348 p_column => 'backward_rel_code',
12349 p_lookup_type => 'PARTY_RELATIONS_TYPE',
12350 p_column_value => p_relationship_type_rec.backward_rel_code,
12351 x_return_status => x_return_status);
12352
12353 /*IF g_debug THEN
12354 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12355 'backward_rel_code is lookup code in lookup type PARTY_RELATIONS_TYPE. ' ||
12356 'x_return_status = ' || x_return_status, l_debug_prefix);
12357 END IF;
12358 */
12359 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12360 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12361 p_message=>'backward_rel_code is lookup code in lookup type PARTY_RELATIONS_TYPE. ' ||
12362 'x_return_status = ' || x_return_status,
12363 p_msg_level=>fnd_log.level_statement);
12364 END IF;
12365
12366
12367 -- backward_rel_code is non-updateable
12368 IF p_create_update_flag = 'U' THEN
12369 validate_nonupdateable (
12370 p_column => 'backward_rel_code',
12371 p_column_value => p_relationship_type_rec.backward_rel_code,
12372 p_old_column_value => l_backward_rel_code,
12373 x_return_status => x_return_status);
12374
12375 /*IF g_debug THEN
12376 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12377 'backward_rel_code is non-updateable. ' ||
12378 'x_return_status = ' || x_return_status, l_debug_prefix);
12379 END IF;
12380 */
12381 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12382 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'backward_rel_code is non-updateable. ' ||
12383 'x_return_status = ' || x_return_status,
12384 p_msg_level=>fnd_log.level_statement);
12385 END IF;
12386
12387
12388 END IF;
12389
12390 -----------------------------
12391 -- validate direction_code
12392 -----------------------------
12393
12394 -- direction_code is mandatory
12395 validate_mandatory (
12396 p_create_update_flag => p_create_update_flag,
12397 p_column => 'direction_code',
12398 p_column_value => p_relationship_type_rec.direction_code,
12399 x_return_status => x_return_status);
12400
12401 /*IF g_debug THEN
12402 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12403 'direction_code is mandatory. ' ||
12404 'x_return_status = ' || x_return_status, l_debug_prefix);
12405 END IF;
12406 */
12407 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12408 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'direction_code is mandatory. ' ||
12409 'x_return_status = ' || x_return_status,
12410 p_msg_level=>fnd_log.level_statement);
12411 END IF;
12412
12413
12414 -- direction_code is lookup code in lookup type DIRECTION_CODE
12415 validate_lookup (
12416 p_column => 'direction_code',
12417 p_lookup_type => 'DIRECTION_CODE',
12418 p_column_value => p_relationship_type_rec.direction_code,
12419 x_return_status => x_return_status);
12420
12421 /*IF g_debug THEN
12422 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12423 'direction_code is lookup code in lookup type DIRECTION_CODE. ' ||
12424 'x_return_status = ' || x_return_status, l_debug_prefix);
12425 END IF;
12426 */
12427 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12428 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12429 p_message=>'direction_code is lookup code in lookup type DIRECTION_CODE. ' ||
12430 'x_return_status = ' || x_return_status,
12431 p_msg_level=>fnd_log.level_statement);
12432 END IF;
12433
12434
12435 -- direction_code is non-updateable
12436 IF p_create_update_flag = 'U' THEN
12437 validate_nonupdateable (
12438 p_column => 'direction_code',
12439 p_column_value => p_relationship_type_rec.direction_code,
12440 p_old_column_value => l_direction_code,
12441 x_return_status => x_return_status);
12442
12443 /*IF g_debug THEN
12444 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12445 'direction_code is non-updateable. ' ||
12446 'x_return_status = ' || x_return_status, l_debug_prefix);
12447 END IF;
12448 */
12449 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12450 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'direction_code is non-updateable. ' ||
12451 'x_return_status = ' || x_return_status,
12452 p_msg_level=>fnd_log.level_statement);
12453 END IF;
12454
12455
12456 END IF;
12457
12458 --------------------
12459 -- validate subject_type
12460 --------------------
12461
12462 -- subject_type is mandatory
12463 validate_mandatory (
12464 p_create_update_flag => p_create_update_flag,
12465 p_column => 'subject_type',
12466 p_column_value => p_relationship_type_rec.subject_type,
12467 x_return_status => x_return_status);
12468
12469 /*IF g_debug THEN
12470 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12471 'subject_type is mandatory. ' ||
12472 'x_return_status = ' || x_return_status, l_debug_prefix);
12473 END IF;
12474 */
12475 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12476 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_type is mandatory. ' ||
12477 'x_return_status = ' || x_return_status,
12478 p_msg_level=>fnd_log.level_statement);
12479 END IF;
12480
12481
12482 -- subject_type has foreign key fnd_object_instance_sets.instance_set_name
12483 IF p_relationship_type_rec.subject_type IS NOT NULL
12484 AND
12485 p_relationship_type_rec.subject_type <> fnd_api.g_miss_char
12486 THEN
12487 BEGIN
12488 SELECT 'Y'
12489 INTO l_dummy
12490 FROM FND_OBJECT_INSTANCE_SETS
12491 WHERE INSTANCE_SET_NAME = p_relationship_type_rec.subject_type;
12492 EXCEPTION
12493 WHEN NO_DATA_FOUND THEN
12494 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
12495 fnd_message.set_token('FK', 'subject_type');
12496 fnd_message.set_token('COLUMN', 'instance_set_name');
12497 fnd_message.set_token('TABLE', 'fnd_object_instance_sets');
12498 fnd_msg_pub.add;
12499 x_return_status := fnd_api.g_ret_sts_error;
12500 END;
12501
12502 /*IF g_debug THEN
12503 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12504 'subject_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
12505 'x_return_status = ' || x_return_status, l_debug_prefix);
12506 END IF;
12507 */
12508 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12509 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12510 p_message=>'subject_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
12511 'x_return_status = ' || x_return_status,
12512 p_msg_level=>fnd_log.level_statement);
12513 END IF;
12514
12515
12516 END IF;
12517
12518 -- subject_type is non-updateable
12519 IF p_create_update_flag = 'U' THEN
12520 validate_nonupdateable (
12521 p_column => 'subject_type',
12522 p_column_value => p_relationship_type_rec.subject_type,
12523 p_old_column_value => l_subject_type,
12524 x_return_status => x_return_status);
12525
12526 /*IF g_debug THEN
12527 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12528 'subject_type is non-updateable. ' ||
12529 'x_return_status = ' || x_return_status, l_debug_prefix);
12530 END IF;
12531 */
12532 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12533 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_type is non-updateable. ' ||
12534 'x_return_status = ' || x_return_status,
12535 p_msg_level=>fnd_log.level_statement);
12536 END IF;
12537
12538
12539 END IF;
12540
12541 --------------------
12542 -- validate object_type
12543 --------------------
12544
12545 -- object_type is mandatory
12546 validate_mandatory (
12547 p_create_update_flag => p_create_update_flag,
12548 p_column => 'object_type',
12549 p_column_value => p_relationship_type_rec.object_type,
12550 x_return_status => x_return_status);
12551
12552 /*IF g_debug THEN
12553 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12554 'object_type is mandatory. ' ||
12555 'x_return_status = ' || x_return_status, l_debug_prefix);
12556 END IF;
12557 */
12558 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12559 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_type is mandatory. ' ||
12560 'x_return_status = ' || x_return_status,
12561 p_msg_level=>fnd_log.level_statement);
12562 END IF;
12563
12564
12565 -- object_type has foreign key fnd_object_instance_sets.instance_set_name
12566 IF p_relationship_type_rec.object_type IS NOT NULL
12567 AND
12568 p_relationship_type_rec.object_type <> fnd_api.g_miss_char
12569 THEN
12570 BEGIN
12571 SELECT 'Y'
12572 INTO l_dummy
12573 FROM FND_OBJECT_INSTANCE_SETS
12574 WHERE INSTANCE_SET_NAME = p_relationship_type_rec.object_type;
12575 EXCEPTION
12576 WHEN NO_DATA_FOUND THEN
12577 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
12578 fnd_message.set_token('FK', 'object_type');
12579 fnd_message.set_token('COLUMN', 'instance_set_name');
12580 fnd_message.set_token('TABLE', 'fnd_object_instance_sets');
12581 fnd_msg_pub.add;
12582 x_return_status := fnd_api.g_ret_sts_error;
12583 END;
12584
12585 /*IF g_debug THEN
12586 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12587 'object_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
12588 'x_return_status = ' || x_return_status, l_debug_prefix);
12589 END IF;
12590 */
12591 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12592 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12593 p_message=>'object_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
12594 'x_return_status = ' || x_return_status,
12595 p_msg_level=>fnd_log.level_statement);
12596 END IF;
12597
12598
12599 END IF;
12600
12601 -- object_type is non-updateable
12602 IF p_create_update_flag = 'U' THEN
12603 validate_nonupdateable (
12604 p_column => 'object_type',
12605 p_column_value => p_relationship_type_rec.object_type,
12606 p_old_column_value => l_object_type,
12607 x_return_status => x_return_status);
12608
12609 /*IF g_debug THEN
12610 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12611 'object_type is non-updateable. ' ||
12612 'x_return_status = ' || x_return_status, l_debug_prefix);
12613 END IF;
12614 */
12615 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12616 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_type is non-updateable. ' ||
12617 'x_return_status = ' || x_return_status,
12618 p_msg_level=>fnd_log.level_statement);
12619 END IF;
12620
12621
12622 END IF;
12623
12624 ---------------------------
12625 -- validate the combination
12626 ---------------------------
12627
12628 -- the combination of FORWARD_REL_CODE, SUBJECT_TYPE, OBJECT_TYPE should be
12629 -- able to identify a unique BACKWARD_REL_CODE. Thus a second record with same
12630 -- combination of FORWARD_REL_CODE, SUBJECT_TYPE, OBJECT_TYPE should have
12631 -- same BACKWARD_REL_CODE.
12632 -- 07/23/2002. this validation has been enhanced to apply the validation within a
12633 -- relationship type rather than doing the validation across all relatiosnhip
12634 -- types. bug 2453736.
12635 -- first check whether there is one such record
12636 -- Bug 2751613.This validation should work for all the different combinations.
12637 /* Bug 2751613.
12638 | SELECT COUNT(*)
12639 | INTO l_count
12640 | FROM HZ_RELATIONSHIP_TYPES
12641 | WHERE RELATIONSHIP_TYPE = p_relationship_type_rec.relationship_type
12642 | AND FORWARD_REL_CODE = p_relationship_type_rec.forward_rel_code
12643 | AND SUBJECT_TYPE = p_relationship_type_rec.subject_type
12644 | AND OBJECT_TYPE = p_relationship_type_rec.object_type;
12645 |
12646 | IF l_count > 0 THEN
12647 | --since there is one or more such records, we need to get the backward_rel_code
12648 | SELECT BACKWARD_REL_CODE
12649 | INTO l_code
12650 | FROM HZ_RELATIONSHIP_TYPES
12651 | WHERE RELATIONSHIP_TYPE = p_relationship_type_rec.relationship_type
12652 | AND FORWARD_REL_CODE = p_relationship_type_rec.forward_rel_code
12653 | AND SUBJECT_TYPE = p_relationship_type_rec.subject_type
12654 | AND OBJECT_TYPE = p_relationship_type_rec.object_type
12655 | AND ROWNUM = 1;
12656 | -- if the backward_rel_code passed do not match with whatever
12657 | -- obtained from above query, error out NOCOPY
12658 | IF l_code <> p_relationship_type_rec.backward_rel_code then
12659 | fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION');
12660 | fnd_msg_pub.add;
12661 | x_return_status := FND_API.G_RET_STS_ERROR;
12662 | END IF;
12663 | END IF;
12664 */
12665
12666 -- Bug 2751613.
12667 SELECT COUNT(*)
12668 INTO l_count
12669 FROM HZ_RELATIONSHIP_TYPES
12670 WHERE
12671 (
12672 RELATIONSHIP_TYPE = p_relationship_type_rec.relationship_type
12673 )
12674 AND
12675 (
12676 (
12677 (SUBJECT_TYPE = p_relationship_type_rec.subject_type
12678 AND OBJECT_TYPE = p_relationship_type_rec.object_type
12679 )
12680 AND
12681 (
12682 (BACKWARD_REL_CODE <> p_relationship_type_rec.backward_rel_code
12683 AND FORWARD_REL_CODE = p_relationship_type_rec.forward_rel_code
12684 )
12685 OR
12686 (BACKWARD_REL_CODE = p_relationship_type_rec.backward_rel_code
12687 AND FORWARD_REL_CODE <> p_relationship_type_rec.forward_rel_code
12688 )
12689 )
12690 )
12691 OR
12692 (
12693 (SUBJECT_TYPE = p_relationship_type_rec.object_type
12694 AND OBJECT_TYPE = p_relationship_type_rec.subject_type
12695 )
12696 AND
12697 (
12698 (BACKWARD_REL_CODE <> p_relationship_type_rec.forward_rel_code
12699 AND FORWARD_REL_CODE = p_relationship_type_rec.backward_rel_code
12700 )
12701 OR
12702 (BACKWARD_REL_CODE = p_relationship_type_rec.forward_rel_code
12703 AND FORWARD_REL_CODE <> p_relationship_type_rec.backward_rel_code
12704 )
12705 )
12706 )
12707 );
12708
12709 IF l_count <> 0
12710 THEN
12711 fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION');
12712 fnd_msg_pub.add;
12713 x_return_status := FND_API.G_RET_STS_ERROR;
12714 END IF;
12715
12716 /*IF g_debug THEN
12717 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12718 'validate the combination of forward_rel_code, subject_type, object_type. ' ||
12719 'x_return_status = ' || x_return_status, l_debug_prefix);
12720 END IF;
12721 */
12722 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12723 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12724 p_message=>'validate the combination of forward_rel_code,backward_rel_code, subject_type, object_type. ' ||
12725 'x_return_status = ' || x_return_status,
12726 p_msg_level=>fnd_log.level_statement);
12727 END IF;
12728
12729
12730 -----------------------------
12731 -- check for duplicate record
12732 -----------------------------
12733
12734 -- check for duplicate record
12735 BEGIN
12736 SELECT 1
12737 INTO l_count
12738 FROM HZ_RELATIONSHIP_TYPES
12739 WHERE RELATIONSHIP_TYPE = p_relationship_type_rec.relationship_type
12740 AND FORWARD_REL_CODE = p_relationship_type_rec.forward_rel_code
12741 AND BACKWARD_REL_CODE = p_relationship_type_rec.backward_rel_code
12742 AND SUBJECT_TYPE = p_relationship_type_rec.subject_type
12743 AND OBJECT_TYPE = p_relationship_type_rec.object_type
12744 AND RELATIONSHIP_TYPE_ID <> NVL(p_relationship_type_rec.relationship_type_id,-1);
12745
12746 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
12747 fnd_message.set_token('COLUMN', 'relationship type, forward rel code, backward rel code, subject type, object type');
12748 fnd_msg_pub.add;
12749 x_return_status := fnd_api.g_ret_sts_error;
12750
12751 EXCEPTION
12752 WHEN NO_DATA_FOUND THEN
12753 NULL;
12754 END;
12755
12756 /*IF g_debug THEN
12757 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12758 'check for duplicate record. ' ||
12759 'x_return_status = ' || x_return_status, l_debug_prefix);
12760 END IF;
12761 */
12762 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12763 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'check for duplicate record. ' ||
12764 'x_return_status = ' || x_return_status,
12765 p_msg_level=>fnd_log.level_statement);
12766 END IF;
12767
12768
12769 --------------------------
12770 -- validate direction_code
12771 --------------------------
12772
12773 -- if forward_rel_code and backward_rel_code are same then direction_flag
12774 -- cannot be 'P' or 'C'
12775 IF p_relationship_type_rec.forward_rel_code = p_relationship_type_rec.backward_rel_code
12776 AND
12777 p_relationship_type_rec.direction_code <> 'N'
12778 THEN
12779 fnd_message.set_name('AR', 'HZ_INVALID_DIRECTION_CODE1');
12780 fnd_msg_pub.add;
12781 x_return_status := FND_API.G_RET_STS_ERROR;
12782 END IF;
12783
12784 -- if forward_rel_code and backward_rel_code are not same then direction_flag
12785 -- cannot be 'N'
12786 IF p_relationship_type_rec.forward_rel_code <> p_relationship_type_rec.backward_rel_code
12787 AND p_relationship_type_rec.direction_code = 'N'
12788 THEN
12789 fnd_message.set_name('AR', 'HZ_INVALID_DIRECTION_CODE2');
12790 fnd_msg_pub.add;
12791 x_return_status := FND_API.G_RET_STS_ERROR;
12792 END IF;
12793
12794 /*IF g_debug THEN
12795 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12796 'validate direction_code. ' ||
12797 'x_return_status = ' || x_return_status, l_debug_prefix);
12798 END IF;
12799 */
12800 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12801 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate direction_code. ' ||
12802 'x_return_status = ' || x_return_status,
12803 p_msg_level=>fnd_log.level_statement);
12804 END IF;
12805
12806
12807 -----------------------------
12808 -- validate hierarchical_flag
12809 -----------------------------
12810
12811 -- hierarchical_flag is lookup code in lookup type YES/NO
12812 validate_lookup (
12813 p_column => 'hierarchical_flag',
12814 p_lookup_type => 'YES/NO',
12815 p_column_value => p_relationship_type_rec.hierarchical_flag,
12816 x_return_status => x_return_status );
12817
12818 /*IF G_DEBUG THEN
12819 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12820 'hierarchical_flag in lookup YES/NO. ' ||
12821 'x_return_status = ' || x_return_status, l_debug_prefix );
12822 END IF;
12823 */
12824 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12825 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'hierarchical_flag in lookup YES/NO. ' ||
12826 'x_return_status = ' || x_return_status,
12827 p_msg_level=>fnd_log.level_statement);
12828 END IF;
12829
12830
12831 -- hierarchical_flag is non-updateable
12832 IF p_create_update_flag = 'U' THEN
12833 validate_nonupdateable (
12834 p_column => 'hierarchical_flag',
12835 p_column_value => p_relationship_type_rec.hierarchical_flag,
12836 p_old_column_value => l_hierarchical_flag,
12837 x_return_status => x_return_status);
12838
12839 /*IF g_debug THEN
12840 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12841 'hierarchical_flag is non-updateable. ' ||
12842 'x_return_status = ' || x_return_status, l_debug_prefix);
12843 END IF;
12844 */
12845 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12846 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'hierarchical_flag is non-updateable. ' ||
12847 'x_return_status = ' || x_return_status,
12848 p_msg_level=>fnd_log.level_statement);
12849 END IF;
12850
12851
12852 END IF;
12853
12854 ----------------------------------------------------------------------------
12855 -- validate combination of hierarchical_flag and allow_circular_relationship
12856 ----------------------------------------------------------------------------
12857 -- needed only during creation since these columns cannot be updated
12858 IF p_create_update_flag = 'C' THEN
12859 -- if hierarchical_flag = 'Y', then allow_circular_relationships must be 'N'
12860 IF NVL(p_relationship_type_rec.hierarchical_flag, 'N') = 'Y' THEN
12861 IF p_relationship_type_rec.allow_circular_relationships = 'Y' THEN
12862 fnd_message.set_name('AR', 'HZ_API_VAL_DEP_FIELDS');
12863 fnd_message.set_token('COLUMN1', 'hierarchical_flag');
12864 fnd_message.set_token('VALUE1', 'Y(Yes)');
12865 fnd_message.set_token('COLUMN2', 'allow_circular_relationships');
12866 fnd_message.set_token('VALUE2', 'N(No)');
12867 fnd_msg_pub.add;
12868 x_return_status := FND_API.G_RET_STS_ERROR;
12869 END IF;
12870 END IF;
12871 /*IF g_debug THEN
12872 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12873 'if hierarchical_flag = ''Y'', then allow_circular_relationships must be ''N''. ' ||
12874 'x_return_status = ' || x_return_status, l_debug_prefix);
12875 END IF;
12876 */
12877 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12878 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12879 p_message=>'if hierarchical_flag = ''Y'', then allow_circular_relationships must be ''N''. ' ||
12880 'x_return_status = ' || x_return_status,
12881 p_msg_level=>fnd_log.level_statement);
12882 END IF;
12883
12884 END IF;
12885
12886 ---------------------------------------------------------------
12887 -- validate combination of hierarchical_flag and direction_code
12888 ---------------------------------------------------------------
12889 -- needed only during creation since these columns cannot be updated
12890 IF p_create_update_flag = 'C' THEN
12891 -- if hierarchical_flag = 'Y', the direction_code must be 'P' or 'C'
12892 IF NVL(p_relationship_type_rec.hierarchical_flag, 'N') = 'Y' THEN
12893 IF p_relationship_type_rec.direction_code = 'N' THEN
12894 fnd_message.set_name('AR', 'HZ_API_VAL_DEP_FIELDS');
12895 fnd_message.set_token('COLUMN1', 'hierarchical_flag');
12896 fnd_message.set_token('VALUE1', 'Y(Yes)');
12897 fnd_message.set_token('COLUMN2', 'direction_code');
12898 fnd_message.set_token('VALUE2', 'P(Parent)/C(Child)');
12899 fnd_msg_pub.add;
12900 x_return_status := FND_API.G_RET_STS_ERROR;
12901 END IF;
12902 END IF;
12903 /*IF g_debug THEN
12904 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12905 'if hierarchical_flag = ''Y'', the direction_code must be ''P'' or ''C''. ' ||
12906 'x_return_status = ' || x_return_status, l_debug_prefix);
12907 END IF;
12908 */
12909 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12910 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12911 p_message=>'if hierarchical_flag = ''Y'', the direction_code must be ''P'' or ''C''. ' ||
12912 'x_return_status = ' || x_return_status,
12913 p_msg_level=>fnd_log.level_statement);
12914 END IF;
12915
12916 END IF;
12917
12918 -- check for duplicate role
12919
12920 IF p_create_update_flag = 'C' THEN
12921 BEGIN
12922 SELECT count(*)
12923 INTO l_count
12924 FROM HZ_RELATIONSHIP_TYPES
12925 WHERE ROLE = p_relationship_type_rec.forward_role
12926 OR ROLE = p_relationship_type_rec.backward_role;
12927 IF l_count > 0 THEN
12928 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
12929 fnd_message.set_token('COLUMN', 'role');
12930 fnd_msg_pub.add;
12931 x_return_status := fnd_api.g_ret_sts_error;
12932 END IF;
12933 END;
12934 END IF;
12935
12936 -- validate role/rel_code
12937
12938 IF p_create_update_flag = 'C' THEN
12939 IF ( p_relationship_type_rec.forward_role IS NOT NULL AND
12940 p_relationship_type_rec.forward_role <> fnd_api.g_miss_char) AND
12941 ( p_relationship_type_rec.backward_role IS NOT NULL AND
12942 p_relationship_type_rec.backward_role <> fnd_api.g_miss_char) THEN
12943 validate_rel_code(
12944 p_forward_rel_code =>p_relationship_type_rec.forward_rel_code,
12945 p_backward_rel_code =>p_relationship_type_rec.backward_rel_code,
12946 p_forward_role => p_relationship_type_rec.forward_role,
12947 p_backward_role => p_relationship_type_rec.backward_role,
12948 x_return_status => x_return_status);
12949 END IF;
12950 END IF;
12951
12952 -- validate lookup
12953 IF p_create_update_flag = 'C' THEN
12954 IF p_relationship_type_rec.forward_role IS NOT NULL THEN
12955 validate_lookup (
12956 p_column => 'role',
12957 p_lookup_type => 'HZ_RELATIONSHIP_ROLE',
12958 p_column_value => p_relationship_type_rec.forward_role,
12959 x_return_status => x_return_status);
12960 END IF;
12961 IF p_relationship_type_rec.backward_role IS NOT NULL THEN
12962 validate_lookup (
12963 p_column => 'role',
12964 p_lookup_type => 'HZ_RELATIONSHIP_ROLE',
12965 p_column_value => p_relationship_type_rec.backward_role,
12966 x_return_status => x_return_status);
12967 END IF;
12968 END IF;
12969
12970 ----------------------------------------------------------------------------
12971 -- validate combination of hierarchical_flag and allow_relate_to_self_flag
12972 ----------------------------------------------------------------------------
12973 -- needed only during creation since these columns cannot be updated
12974 IF p_create_update_flag = 'C' THEN
12975 -- if hierarchical_flag = 'Y', then allow_relate_to_self_flag must be 'N'
12976 IF NVL(p_relationship_type_rec.hierarchical_flag, 'N') = 'Y' THEN
12977 IF p_relationship_type_rec.allow_relate_to_self_flag = 'Y' THEN
12978 fnd_message.set_name('AR', 'HZ_API_VAL_DEP_FIELDS');
12979 fnd_message.set_token('COLUMN1', 'hierarchical_flag');
12980 fnd_message.set_token('VALUE1', 'Y(Yes)');
12981 fnd_message.set_token('COLUMN2', 'allow_relate_to_self_flag');
12982 fnd_message.set_token('VALUE2', 'N(No)');
12983 fnd_msg_pub.add;
12984 x_return_status := FND_API.G_RET_STS_ERROR;
12985 END IF;
12986 END IF;
12987 /*IF g_debug THEN
12988 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12989 'if hierarchical_flag = ''Y'', then allow_relate_to_self_flag must be ''N''. ' ||
12990 'x_return_status = ' || x_return_status, l_debug_prefix);
12991 END IF;
12992 */
12993 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12994 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12995 p_message=>'if hierarchical_flag = ''Y'', then allow_relate_to_self_flag must be ''N''. ' ||
12996 'x_return_status = ' || x_return_status,
12997 p_msg_level=>fnd_log.level_statement);
12998 END IF;
12999
13000 END IF;
13001
13002
13003 --------------------------------------------------------------------------
13004 -- validate combination of allow_circular_relationships and direction_code
13005 --------------------------------------------------------------------------
13006 -- neede only during creation since these columns cannot be updated
13007 IF p_create_update_flag = 'C' THEN
13008 -- if direction_code = 'N', the allow_circular_relationships must be 'Y'
13009 IF p_relationship_type_rec.direction_code = 'N' THEN
13010 IF NVL(p_relationship_type_rec.allow_circular_relationships, 'Y') = 'N' THEN
13011 fnd_message.set_name('AR', 'HZ_API_VAL_DEP_FIELDS');
13012 fnd_message.set_token('COLUMN1', 'direction_code');
13013 fnd_message.set_token('VALUE1', 'N(No)');
13014 fnd_message.set_token('COLUMN2', 'allow_circular_relationships');
13015 fnd_message.set_token('VALUE2', 'Y(Yes)');
13016 fnd_msg_pub.add;
13017 x_return_status := FND_API.G_RET_STS_ERROR;
13018 END IF;
13019 END IF;
13020 /*IF g_debug THEN
13021 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13022 'if hierarchical_flag = ''Y'', the direction_code must be ''P'' or ''C''. ' ||
13023 'x_return_status = ' || x_return_status, l_debug_prefix);
13024 END IF;
13025 */
13026 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13027 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13028 p_message=>'if hierarchical_flag = ''Y'', the direction_code must be ''P'' or ''C''. ' ||
13029 'x_return_status = ' || x_return_status,
13030 p_msg_level=>fnd_log.level_statement);
13031 END IF;
13032
13033 END IF;
13034
13035 /* THIS UNNECESSARY VALIDATION HAS BEEN COMMENTED AFTER DISCUSSION WITH
13036 SRANGARA AND RPITTS, THE CONCLUSION OF WHICH IS THAT
13037 NON_HIERARCHICAL RELATIONSHIPS DO NOT NEED ANY VALUE
13038 FOR MULTIPLE_PARENT_ALLOWED,SINCE EVEN A SINGLE PARENT
13039 DOES NOT MAKE SENSE FOR A NON_HIERARCHICAL RELATIONSHIP TYPE.
13040 THE do_relationship_type IN HZ_RELATIONSHIP_TYPE_V2PUB WHICH
13041 DEFAULTS THE VALUE OF THIS FLAG TO "Y" FOR NON_HIERARCHICAL
13042 REL TYPES SHOULD ALSO BE CHANGED IN THE FUTURE.
13043
13044 ----- VJN
13045 ------------------------------------------------------------------------
13046 -- validate combination of hierarchical_flag and multiple_parent_allowed
13047 ------------------------------------------------------------------------
13048 -- neede only during creation since these columns cannot be updated
13049 IF p_create_update_flag = 'C' THEN
13050 -- if hierarchical_flag = 'N', then multiple_parent_allowed must be 'Y'
13051 IF NVL(p_relationship_type_rec.hierarchical_flag, 'N') = 'N' THEN
13052 IF NVL(p_relationship_type_rec.multiple_parent_allowed, 'Y') = 'N' THEN
13053 fnd_message.set_name('AR', 'HZ_API_VAL_DEP_FIELDS');
13054 fnd_message.set_token('COLUMN1', 'hierarchical_flag');
13055 fnd_message.set_token('VALUE1', 'N(No)');
13056 fnd_message.set_token('COLUMN2', 'multiple_parent_allowed');
13057 fnd_message.set_token('VALUE2', 'Y(Yes)');
13058 fnd_msg_pub.add;
13059 x_return_status := FND_API.G_RET_STS_ERROR;
13060 END IF;
13061 END IF;
13062
13063 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13064 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13065 p_message=>'if hierarchical_flag = ''N'', the multiple_parent_allowed must be ''Y''. ' ||
13066 'x_return_status = ' || x_return_status,
13067 p_msg_level=>fnd_log.level_statement);
13068 END IF;
13069
13070 END IF;
13071
13072 */
13073
13074
13075 --------------------------------------------------------------------------------
13076 -- validate that all relationship type records with same relationship_type value
13077 -- have same values for hierarchical_flag
13078 --------------------------------------------------------------------------------
13079 -- needed only during creation since hierarchical_flag is not updatable
13080 IF p_create_update_flag = 'C' THEN
13081 BEGIN
13082 SELECT HIERARCHICAL_FLAG
13083 INTO l_hierarchical_flag
13084 FROM HZ_RELATIONSHIP_TYPES
13085 WHERE RELATIONSHIP_TYPE = p_relationship_type_rec.relationship_type
13086 AND ROWNUM = 1;
13087
13088 IF NVL(p_relationship_type_rec.hierarchical_flag, 'N')
13089 <> NVL(l_hierarchical_flag, 'N')
13090 and
13091 NVL(p_relationship_type_rec.hierarchical_flag, 'Y')
13092 <> NVL(l_hierarchical_flag, 'Y')
13093 THEN
13094 fnd_message.set_name('AR', 'HZ_DIFF_VALUE_NOT_ALLOWED');
13095 fnd_message.set_token('ENTITY', 'relationship type');
13096 fnd_message.set_token('COLUMN1', 'relationship_type');
13097 fnd_message.set_token('COLUMN2', 'hierarchical_flag');
13098 fnd_msg_pub.add;
13099 x_return_status := FND_API.G_RET_STS_ERROR;
13100 END IF;
13101
13102 EXCEPTION
13103 -- if no data found, then its fine since this is the first record
13104 WHEN NO_DATA_FOUND THEN
13105 NULL;
13106 END;
13107 /*IF g_debug THEN
13108 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13109 'all relationship type records with same relationship_type value must have same values for hierarchical_flag. ' ||
13110 'x_return_status = ' || x_return_status, l_debug_prefix);
13111 END IF;
13112 */
13113 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13114 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13115 p_message=>'all relationship type records with same relationship_type value must have same values for hierarchical_flag. ' ||
13116 'x_return_status = ' || x_return_status,
13117 p_msg_level=>fnd_log.level_statement);
13118 END IF;
13119
13120 END IF;
13121
13122 --------------------------------------------------------------------------------
13123 -- validate that all relationship type records with same relationship_type value
13124 -- have same values for allow_circular_relationships
13125 --------------------------------------------------------------------------------
13126 -- needed only during creation since allow_circular_relationships is not updatable
13127 IF p_create_update_flag = 'C' THEN
13128 BEGIN
13129 SELECT ALLOW_CIRCULAR_RELATIONSHIPS
13130 INTO l_allow_circular_relationships
13131 FROM HZ_RELATIONSHIP_TYPES
13132 WHERE RELATIONSHIP_TYPE = p_relationship_type_rec.relationship_type
13133 AND ROWNUM = 1;
13134
13135 IF NVL(p_relationship_type_rec.allow_circular_relationships, 'N') <> NVL(l_allow_circular_relationships, 'N')
13136 and
13137 NVL(p_relationship_type_rec.allow_circular_relationships, 'Y') <>
13138 NVL(l_allow_circular_relationships, 'Y')
13139 THEN
13140 fnd_message.set_name('AR', 'HZ_DIFF_VALUE_NOT_ALLOWED');
13141 fnd_message.set_token('ENTITY', 'relationship type');
13142 fnd_message.set_token('COLUMN1', 'relationship_type');
13143 fnd_message.set_token('COLUMN2', 'allow_circular_relationships');
13144 fnd_msg_pub.add;
13145 x_return_status := FND_API.G_RET_STS_ERROR;
13146 END IF;
13147
13148 EXCEPTION
13149 -- if no data found, then its fine since this is the first record
13150 WHEN NO_DATA_FOUND THEN
13151 NULL;
13152 END;
13153
13154 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13155 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13156 p_message=>'all relationship type records with same relationship_type value must have same values for'||
13157 ' allow_circular_relationships. ' ||
13158 'x_return_status = ' || x_return_status,
13159 p_msg_level=>fnd_log.level_statement);
13160 END IF;
13161
13162 END IF;
13163
13164 --------------------------------------------------------------------------------
13165 -- validate that all relationship type records with same relationship_type value
13166 -- have same values for multiple_parent_allowed
13167 --------------------------------------------------------------------------------
13168 -- needed only during creation since multiple_parent_allowed is not updatable
13169 IF p_create_update_flag = 'C' THEN
13170 BEGIN
13171 SELECT MULTIPLE_PARENT_ALLOWED
13172 INTO l_multiple_parent_allowed
13173 FROM HZ_RELATIONSHIP_TYPES
13174 WHERE RELATIONSHIP_TYPE = p_relationship_type_rec.relationship_type
13175 AND ROWNUM = 1;
13176
13177 IF NVL(p_relationship_type_rec.multiple_parent_allowed, 'N') <>
13178 NVL(l_multiple_parent_allowed, 'N')
13179 and
13180 NVL(p_relationship_type_rec.multiple_parent_allowed, 'Y') <>
13181 NVL(l_multiple_parent_allowed, 'Y')
13182 THEN
13183 fnd_message.set_name('AR', 'HZ_DIFF_VALUE_NOT_ALLOWED');
13184 fnd_message.set_token('ENTITY', 'relationship type');
13185 fnd_message.set_token('COLUMN1', 'relationship_type');
13186 fnd_message.set_token('COLUMN2', 'multiple_parent_allowed');
13187 fnd_msg_pub.add;
13188 x_return_status := FND_API.G_RET_STS_ERROR;
13189 END IF;
13190
13191 EXCEPTION
13192 -- if no data found, then its fine since this is the first record
13193 WHEN NO_DATA_FOUND THEN
13194 NULL;
13195 END;
13196 /*IF g_debug THEN
13197 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13198 'all relationship type records with same relationship_type value must have same values for multiple_parent_allowed. ' ||
13199 'x_return_status = ' || x_return_status, l_debug_prefix);
13200 END IF;
13201 */
13202 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13203 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13204 p_message=>'all relationship type records with same relationship_type value must have same values for multiple_parent_allowed. ' ||
13205 'x_return_status = ' || x_return_status,
13206 p_msg_level=>fnd_log.level_statement);
13207 END IF;
13208
13209 END IF;
13210
13211 -----------------------------------
13212 -- validate incl_unrelated_entities
13213 -----------------------------------
13214
13215 -- incl_unrelated_entities is lookup code in lookup type YES/NO
13216 validate_lookup (
13217 p_column => 'incl_unrelated_entities',
13218 p_lookup_type => 'YES/NO',
13219 p_column_value => p_relationship_type_rec.incl_unrelated_entities,
13220 x_return_status => x_return_status );
13221
13222 /*IF G_DEBUG THEN
13223 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13224 'incl_unrelated_entities in lookup YES/NO. ' ||
13225 'x_return_status = ' || x_return_status, l_debug_prefix );
13226 END IF;
13227 */
13228 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13229 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'incl_unrelated_entities in lookup YES/NO. ' ||
13230 'x_return_status = ' || x_return_status,
13231 p_msg_level=>fnd_log.level_statement);
13232 END IF;
13233
13234
13235 -----------------------------------
13236 -- validate multiple_parent_allowed
13237 -----------------------------------
13238
13239 -- multiple_parent_allowed is lookup code in lookup type YES/NO
13240 validate_lookup (
13241 p_column => 'multiple_parent_allowed',
13242 p_lookup_type => 'YES/NO',
13243 p_column_value => p_relationship_type_rec.multiple_parent_allowed,
13244 x_return_status => x_return_status );
13245
13246 /*IF G_DEBUG THEN
13247 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13248 'multiple_parent_allowed in lookup YES/NO. ' ||
13249 'x_return_status = ' || x_return_status, l_debug_prefix );
13250 END IF;
13251 */
13252 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13253 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'multiple_parent_allowed in lookup YES/NO. ' ||
13254 'x_return_status = ' || x_return_status,
13255 p_msg_level=>fnd_log.level_statement);
13256 END IF;
13257
13258
13259 -- multiple_parent_allowed is non-updateable
13260 IF p_create_update_flag = 'U' THEN
13261 validate_nonupdateable (
13262 p_column => 'multiple_parent_allowed',
13263 p_column_value => p_relationship_type_rec.multiple_parent_allowed,
13264 p_old_column_value => l_multiple_parent_allowed,
13265 x_return_status => x_return_status);
13266
13267 /*IF g_debug THEN
13268 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13269 'multiple_parent_allowed is non-updateable. ' ||
13270 'x_return_status = ' || x_return_status, l_debug_prefix);
13271 END IF;
13272 */
13273 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13274 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'multiple_parent_allowed is non-updateable. ' ||
13275 'x_return_status = ' || x_return_status,
13276 p_msg_level=>fnd_log.level_statement);
13277 END IF;
13278
13279
13280 END IF;
13281
13282 --------------------------------------
13283 -- validate created_by_module
13284 --------------------------------------
13285
13286 validate_created_by_module(
13287 p_create_update_flag => p_create_update_flag,
13288 p_created_by_module => p_relationship_type_rec.created_by_module,
13289 p_old_created_by_module => l_created_by_module,
13290 x_return_status => x_return_status);
13291
13292 --------------------------------------
13293 -- validate application_id
13294 --------------------------------------
13295
13296 validate_application_id(
13297 p_create_update_flag => p_create_update_flag,
13298 p_application_id => p_relationship_type_rec.application_id,
13299 p_old_application_id => l_application_id,
13300 x_return_status => x_return_status);
13301
13302 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
13303 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_relationship_type (-)',
13304 p_msg_level=>fnd_log.level_procedure);
13305 END IF;
13306
13307 --bug 3491584
13308 IF (p_create_update_flag = 'C') THEN
13309 IF((p_relationship_type_rec.forward_rel_code = p_relationship_type_rec.backward_rel_code)
13310 AND (p_relationship_type_rec.subject_type <> p_relationship_type_rec.object_type))
13311 THEN
13312 fnd_message.set_name('AR', 'HZ_API_RELTYPE_INVALID');
13313 fnd_msg_pub.add;
13314 x_return_status := fnd_api.g_ret_sts_error;
13315
13316 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13317 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13318 p_message=>'Same subject and object type because the relationship phrase pair has the same subject (forward) and object (backward) phrase. ' ||
13319 'x_return_status = ' || x_return_status,
13320 p_msg_level=>fnd_log.level_statement);
13321 END IF;
13322 END IF;
13323 END IF;
13324
13325 --disable_debug;
13326
13327 END validate_relationship_type;
13328
13329 /**
13330 * PROCEDURE validate_relationship
13331 *
13332 * DESCRIPTION
13333 * Validates relationship record. Checks for
13334 * uniqueness
13335 * lookup types
13336 * mandatory columns
13337 * non-updateable fields
13338 * foreign key validations
13339 * other validations
13340 *
13341 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
13342 *
13343 * ARGUMENTS
13344 * IN:
13345 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
13346 * p_relationship_rec Relationship record.
13347 * p_rowid Rowid of the record (used only in update mode).
13348 * IN/OUT:
13349 * x_return_status Return status after the call. The status can
13350 * be FND_API.G_RET_STS_SUCCESS (success),
13351 * fnd_api.g_ret_sts_error (error),
13352 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
13353 *
13354 * NOTES
13355 *
13356 * MODIFICATION HISTORY
13357 *
13358 * 07-23-2001 Indrajit Sen o Created.
13359 * 13-DEC-2001 Joe del Callar Bug 2145637: Modified to use the new
13360 * time-dependent date overlap check.
13361 */
13362
13363 PROCEDURE validate_relationship(
13364 p_create_update_flag IN VARCHAR2,
13365 p_relationship_rec IN hz_relationship_v2pub.relationship_rec_type,
13366 p_rowid IN ROWID ,
13367 x_return_status IN OUT NOCOPY VARCHAR2
13368 ) IS
13369 l_count NUMBER;
13370 l_subject_id NUMBER := p_relationship_rec.subject_id;
13371 l_object_id NUMBER := p_relationship_rec.object_id;
13372 l_relationship_type hz_relationships.relationship_type%TYPE := p_relationship_rec.relationship_type;
13373 l_relationship_code hz_relationships.relationship_code%TYPE := p_relationship_rec.relationship_code;
13374 l_subject_type hz_relationships.subject_type%TYPE := p_relationship_rec.subject_type;
13375 l_object_type hz_relationships.object_type%TYPE := p_relationship_rec.object_type;
13376 l_subject_table_name hz_relationships.subject_table_name%TYPE := p_relationship_rec.subject_table_name;
13377 l_object_table_name hz_relationships.object_table_name%TYPE := p_relationship_rec.object_table_name;
13378 l_party_id NUMBER;
13379 l_content_source_type hz_relationships.content_source_type%TYPE;
13380 l_start_date DATE := p_relationship_rec.start_date;
13381 l_end_date DATE := p_relationship_rec.end_date;
13382 l_in VARCHAR2(1);
13383 l_overlap VARCHAR2(1);
13384 l_created_by_module VARCHAR2(150);
13385 l_application_id NUMBER;
13386 l_status VARCHAR2(1);
13387 l_debug_prefix VARCHAR2(30) := '';
13388
13389 -- Bug 2197181: Added for mix-n-match
13390 db_actual_content_source hz_relationships.actual_content_source%TYPE;
13391
13392
13393 -- cursor to get all the relationship records...
13394 -- for given subject_id, object_id, relationship_code
13395 -- bug - 2528427, added relationship type to the where...
13396 -- clause so that time overlap is checked among records with...
13397 -- same relationship type, relationship code, subject id and object id
13398 CURSOR c1 (
13399 p_data_source VARCHAR2
13400 ) IS
13401 SELECT hr.start_date,
13402 hr.end_date,
13403 hr.relationship_id,
13404 hr.status
13405 FROM hz_relationships hr
13406 WHERE hr.subject_id = l_subject_id
13407 AND hr.object_id = l_object_id
13408 AND hr.subject_table_name = l_subject_table_name
13409 AND hr.subject_type = l_subject_type
13410 AND hr.object_table_name = l_object_table_name
13411 AND hr.object_type = l_object_type
13412 AND hr.relationship_code = l_relationship_code
13413 AND hr.relationship_type = l_relationship_type
13414 --AND hr.directional_flag = 'F'
13415 AND hr.status = 'A'
13416 AND hr.actual_content_source = p_data_source
13417 AND NVL(p_relationship_rec.relationship_id, fnd_api.g_miss_num) <> hr.relationship_id;
13418
13419 -- Bug 3294936 : Comment rownum = 1 so that the cursor picks all records
13420 -- with same relationship type between same subject and object.
13421
13422 -- AND ROWNUM = 1;
13423
13424
13425 r1 c1%ROWTYPE;
13426
13427 l_dummy VARCHAR2(1);
13428 l_count NUMBER;
13429 l_code VARCHAR2(30);
13430 BEGIN
13431 --enable_debug;
13432
13433 -- Debug info.
13434 /*IF g_debug THEN
13435 hz_utility_v2pub.debug ('validate_relationship (+)');
13436 END IF;
13437 */
13438 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
13439 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_relationship (+)',
13440 p_msg_level=>fnd_log.level_procedure);
13441 END IF;
13442
13443 -- select columns needed to be checked from table during update
13444 IF (p_create_update_flag = 'U') THEN
13445
13446 -- Bug 2197181: selecting actual_content_source for mix-n-match
13447
13448 SELECT subject_id,
13449 subject_type,
13450 subject_table_name,
13451 object_id,
13452 object_type,
13453 object_table_name,
13454 relationship_code,
13455 relationship_type,
13456 party_id,
13457 content_source_type,
13458 start_date,
13459 end_date,
13460 status,
13461 created_by_module,
13462 application_id,
13463 actual_content_source
13464 INTO l_subject_id,
13465 l_subject_type,
13466 l_subject_table_name,
13467 l_object_id,
13468 l_object_type,
13469 l_object_table_name,
13470 l_relationship_code,
13471 l_relationship_type,
13472 l_party_id,
13473 l_content_source_type,
13474 l_start_date,
13475 l_end_date,
13476 l_status,
13477 l_created_by_module,
13478 l_application_id,
13479 db_actual_content_source
13480 FROM hz_relationships
13481 WHERE ROWID = p_rowid;
13482 END IF;
13483
13484 -----------------------------
13485 -- validate relationship_type
13486 -----------------------------
13487
13488 -- relationship_type is mandatory
13489 validate_mandatory (
13490 p_create_update_flag => p_create_update_flag,
13491 p_column => 'relationship_type',
13492 p_column_value => p_relationship_rec.relationship_type,
13493 x_return_status => x_return_status);
13494
13495 /*IF g_debug THEN
13496 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'relationship_type is mandatory. ' ||
13497 'x_return_status = ' || x_return_status,
13498 l_debug_prefix);
13499 END IF;
13500 */
13501 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13502 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'relationship_type is mandatory. ' ||
13503 'x_return_status = ' || x_return_status,
13504 p_msg_level=>fnd_log.level_statement);
13505 END IF;
13506
13507 -- relationship_type is non-updateable
13508 IF p_create_update_flag = 'U' THEN
13509 validate_nonupdateable (
13510 p_column => 'relationship_type',
13511 p_column_value => p_relationship_rec.relationship_type,
13512 p_old_column_value => l_relationship_type,
13513 x_return_status => x_return_status
13514 );
13515
13516 /*IF g_debug THEN
13517 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'relationship_type is non-updateable. ' ||
13518 'x_return_status = ' || x_return_status,
13519 l_debug_prefix);
13520 END IF;
13521 */
13522 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13523 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'relationship_type is non-updateable. ' ||
13524 'x_return_status = ' || x_return_status,
13525 p_msg_level=>fnd_log.level_statement);
13526 END IF;
13527
13528 END IF;
13529
13530 -----------------------------
13531 -- validate relationship_code
13532 -----------------------------
13533
13534 -- relationship_code is mandatory
13535 validate_mandatory (
13536 p_create_update_flag => p_create_update_flag,
13537 p_column => 'relationship_code',
13538 p_column_value => p_relationship_rec.relationship_code,
13539 x_return_status => x_return_status
13540 );
13541
13542 /*IF g_debug THEN
13543 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'relationship_code is mandatory. ' ||
13544 'x_return_status = ' || x_return_status,
13545 l_debug_prefix);
13546 END IF;
13547 */
13548 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13549 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'relationship_code is mandatory. ' ||
13550 'x_return_status = ' || x_return_status,
13551 p_msg_level=>fnd_log.level_statement);
13552 END IF;
13553
13554 -- relationship_code is non-updateable
13555 IF p_create_update_flag = 'U' THEN
13556 validate_nonupdateable (
13557 p_column => 'relationship_code',
13558 p_column_value => p_relationship_rec.relationship_code,
13559 p_old_column_value => l_relationship_code,
13560 x_return_status => x_return_status
13561 );
13562
13563 /*IF g_debug THEN
13564 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'relationship_code is non-updateable. ' ||
13565 'x_return_status = ' || x_return_status,
13566 l_debug_prefix);
13567 END IF;
13568 */
13569 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13570 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'relationship_code is non-updateable. ' ||
13571 'x_return_status = ' || x_return_status,
13572 p_msg_level=>fnd_log.level_statement);
13573 END IF;
13574 END IF;
13575
13576 -- relationship_code is lookup code in lookup type PARTY_RELATIONS_TYPE
13577 IF p_create_update_flag = 'C' THEN
13578 validate_lookup (
13579 p_column => 'relationship_code',
13580 p_lookup_type => 'PARTY_RELATIONS_TYPE',
13581 p_column_value => p_relationship_rec.relationship_code,
13582 x_return_status => x_return_status
13583 );
13584
13585 /*IF g_debug THEN
13586 hz_utility_v2pub.debug (
13587 'relationship_code is lookup code in lookup type PARTY_RELATIONS_TYPE. ' ||
13588 'x_return_status = ' || x_return_status,
13589 l_debug_prefix);
13590 END IF;
13591 */
13592 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13593 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13594 p_message=>'relationship_code is lookup code in lookup type PARTY_RELATIONS_TYPE. ' ||
13595 'x_return_status = ' || x_return_status,
13596 p_msg_level=>fnd_log.level_statement);
13597 END IF;
13598 END IF;
13599
13600 ----------------------
13601 -- validate subject_id
13602 ----------------------
13603 /****Logical APIs - validation not required****/
13604 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
13605 -- subject_id is mandatory
13606 validate_mandatory (
13607 p_create_update_flag => p_create_update_flag,
13608 p_column => 'subject_id',
13609 p_column_value => p_relationship_rec.subject_id,
13610 x_return_status => x_return_status);
13611
13612 /*IF g_debug THEN
13613 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'subject_id is mandatory. ' ||
13614 'x_return_status = ' || x_return_status,
13615 l_debug_prefix);
13616 END IF;
13617 */
13618 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13619 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_id is mandatory. ' ||
13620 'x_return_status = ' || x_return_status,
13621 p_msg_level=>fnd_log.level_statement);
13622 END IF;
13623
13624 -- subject_id is non-updateable
13625 IF p_create_update_flag = 'U' THEN
13626 validate_nonupdateable (
13627 p_column => 'subject_id',
13628 p_column_value => p_relationship_rec.subject_id,
13629 p_old_column_value => l_subject_id,
13630 x_return_status => x_return_status
13631 );
13632
13633 /*IF g_debug THEN
13634 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'subject_id is non-updateable. ' ||
13635 'x_return_status = ' || x_return_status,
13636 l_debug_prefix);
13637 END IF;
13638 */
13639 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13640 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_id is non-updateable. ' ||
13641 'x_return_status = ' || x_return_status,
13642 p_msg_level=>fnd_log.level_statement);
13643 END IF;
13644
13645 END IF;
13646 END IF;
13647
13648 -- check whether subject_id belongs to subject_type
13649 IF p_relationship_rec.subject_id IS NOT NULL
13650 AND p_relationship_rec.subject_id <> fnd_api.g_miss_num
13651 AND p_create_update_flag = 'C'
13652 THEN
13653 l_in := hz_relationship_type_v2pub.in_instance_sets (
13654 p_relationship_rec.subject_type,
13655 p_relationship_rec.subject_id
13656 );
13657
13658 IF l_in = 'N' THEN
13659 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
13660 fnd_message.set_token('FK', 'subject_id');
13661 fnd_message.set_token('COLUMN',
13662 lower(p_relationship_rec.subject_type)||' id');
13663 fnd_message.set_token('TABLE', p_relationship_rec.subject_table_name);
13664 fnd_msg_pub.add;
13665 x_return_status := fnd_api.g_ret_sts_error;
13666 END IF;
13667
13668 /*IF g_debug THEN
13669 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'subject_id belongs to subject_type. ' ||
13670 'x_return_status = ' || x_return_status,
13671 l_debug_prefix);
13672 END IF;
13673 */
13674 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13675 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_id belongs to subject_type. ' ||
13676 'x_return_status = ' || x_return_status,
13677 p_msg_level=>fnd_log.level_statement);
13678 END IF;
13679
13680 END IF;
13681
13682 ------------------------------
13683 -- validate subject_table_name
13684 ------------------------------
13685 /****Logical APIs - validation not required****/
13686 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
13687 -- subject_table_name is mandatory
13688 validate_mandatory (
13689 p_create_update_flag => p_create_update_flag,
13690 p_column => 'subject_table_name',
13691 p_column_value => p_relationship_rec.subject_table_name,
13692 x_return_status => x_return_status);
13693
13694 /*IF g_debug THEN
13695 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'subject_table_name is mandatory. ' ||
13696 'x_return_status = ' || x_return_status,
13697 l_debug_prefix);
13698 END IF;
13699 */
13700 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13701 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_table_name is mandatory. ' ||
13702 'x_return_status = ' || x_return_status,
13703 p_msg_level=>fnd_log.level_statement);
13704 END IF;
13705
13706 -- subject_table_name is non-updateable
13707 IF p_create_update_flag = 'U' THEN
13708 validate_nonupdateable (
13709 p_column => 'subject_table_name',
13710 p_column_value => p_relationship_rec.subject_table_name,
13711 p_old_column_value => l_subject_table_name,
13712 x_return_status => x_return_status);
13713
13714 /*IF g_debug THEN
13715 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'subject_table_name is non-updateable. ' ||
13716 'x_return_status = ' || x_return_status,
13717 l_debug_prefix);
13718 END IF;
13719 */
13720 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13721 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_table_name is non-updateable. ' ||
13722 'x_return_status = ' || x_return_status,
13723 p_msg_level=>fnd_log.level_statement);
13724 END IF;
13725
13726 END IF;
13727
13728 -- subject_table_name has foreign key fnd_objects.obj_name
13729 -- do not need to check during update because subject_table_name is
13730 -- non-updateable.
13731 IF p_create_update_flag = 'C'
13732 AND p_relationship_rec.subject_table_name IS NOT NULL
13733 AND p_relationship_rec.subject_table_name <> fnd_api.g_miss_char
13734 THEN
13735 BEGIN
13736 SELECT 'Y'
13737 INTO l_dummy
13738 FROM fnd_objects fo
13739 WHERE fo.obj_name = p_relationship_rec.subject_table_name;
13740 EXCEPTION
13741 WHEN NO_DATA_FOUND THEN
13742 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
13743 fnd_message.set_token('FK', 'subject_table_name');
13744 fnd_message.set_token('COLUMN', 'obj_name');
13745 fnd_message.set_token('TABLE', 'fnd_objects');
13746 fnd_msg_pub.add;
13747 x_return_status := fnd_api.g_ret_sts_error;
13748 END;
13749
13750 /*IF g_debug THEN
13751 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13752 'subject_table_name has foreign key fnd_objects.obj_name. ' ||
13753 'x_return_status = ' || x_return_status,
13754 l_debug_prefix
13755 );
13756 END IF;
13757 */
13758 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13759 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13760 p_message=>'subject_table_name has foreign key fnd_objects.obj_name. ' ||
13761 'x_return_status = ' || x_return_status,
13762 p_msg_level=>fnd_log.level_statement);
13763 END IF;
13764
13765 END IF;
13766 END IF;
13767
13768 ------------------------
13769 -- validate subject_type
13770 ------------------------
13771 /****Logical APIs - validation not required****/
13772 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
13773 -- subject_type is mandatory
13774 validate_mandatory (
13775 p_create_update_flag => p_create_update_flag,
13776 p_column => 'subject_type',
13777 p_column_value => p_relationship_rec.subject_type,
13778 x_return_status => x_return_status
13779 );
13780
13781 /*IF g_debug THEN
13782 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'subject_type is mandatory. ' ||
13783 'x_return_status = ' || x_return_status,
13784 l_debug_prefix);
13785 END IF;
13786 */
13787 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13788 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_type is mandatory. ' ||
13789 'x_return_status = ' || x_return_status,
13790 p_msg_level=>fnd_log.level_statement);
13791 END IF;
13792
13793 -- subject_type is non-updateable
13794 IF p_create_update_flag = 'U' THEN
13795 validate_nonupdateable (
13796 p_column => 'subject_type',
13797 p_column_value => p_relationship_rec.subject_type,
13798 p_old_column_value => l_subject_type,
13799 x_return_status => x_return_status);
13800
13801 /*IF g_debug THEN
13802 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'subject_type is non-updateable. ' ||
13803 'x_return_status = ' || x_return_status,
13804 l_debug_prefix);
13805 END IF;
13806 */
13807 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13808 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_type is non-updateable. ' ||
13809 'x_return_status = ' || x_return_status,
13810 p_msg_level=>fnd_log.level_statement);
13811 END IF;
13812 END IF;
13813
13814 -- subject_type has foreign key fnd_object_instance_sets.instance_set_name
13815 -- do not need to check during update because subject_type is
13816 -- non-updateable.
13817 IF p_create_update_flag = 'C'
13818 AND p_relationship_rec.subject_type IS NOT NULL
13819 AND p_relationship_rec.subject_type <> fnd_api.g_miss_char
13820 THEN
13821 BEGIN
13822 SELECT 'Y'
13823 INTO l_dummy
13824 FROM fnd_object_instance_sets fois
13825 WHERE fois.instance_set_name = p_relationship_rec.subject_type;
13826 EXCEPTION
13827 WHEN NO_DATA_FOUND THEN
13828 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
13829 fnd_message.set_token('FK', 'subject_type');
13830 fnd_message.set_token('COLUMN', 'instance_set_name');
13831 fnd_message.set_token('TABLE', 'fnd_object_instance_sets');
13832 fnd_msg_pub.add;
13833 x_return_status := fnd_api.g_ret_sts_error;
13834 END;
13835
13836 /*IF g_debug THEN
13837 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13838 'subject_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
13839 'x_return_status = ' || x_return_status,
13840 l_debug_prefix
13841 );
13842 END IF;
13843 */
13844 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13845 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13846 p_message=>'subject_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
13847 'x_return_status = ' || x_return_status,
13848 p_msg_level=>fnd_log.level_statement);
13849 END IF;
13850
13851 END IF;
13852 END IF;
13853
13854 ---------------------
13855 -- validate object_id
13856 ---------------------
13857 /****Logical APIs - validation not required****/
13858 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
13859 -- object_id is mandatory
13860 validate_mandatory (
13861 p_create_update_flag => p_create_update_flag,
13862 p_column => 'object_id',
13863 p_column_value => p_relationship_rec.object_id,
13864 x_return_status => x_return_status
13865 );
13866
13867 /*IF g_debug THEN
13868 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'object_id is mandatory. ' ||
13869 'x_return_status = ' || x_return_status,
13870 l_debug_prefix);
13871 END IF;
13872 */
13873 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13874 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_id is mandatory. ' ||
13875 'x_return_status = ' || x_return_status,
13876 p_msg_level=>fnd_log.level_statement);
13877 END IF;
13878
13879 -- object_id is non-updateable
13880 IF p_create_update_flag = 'U' THEN
13881 validate_nonupdateable (
13882 p_column => 'object_id',
13883 p_column_value => p_relationship_rec.object_id,
13884 p_old_column_value => l_object_id,
13885 x_return_status => x_return_status);
13886
13887 /*IF g_debug THEN
13888 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'object_id is non-updateable. ' ||
13889 'x_return_status = ' || x_return_status,
13890 l_debug_prefix);
13891 END IF;
13892 */
13893 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13894 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_id is non-updateable. ' ||
13895 'x_return_status = ' || x_return_status,
13896 p_msg_level=>fnd_log.level_statement);
13897 END IF;
13898
13899 END IF;
13900 END IF;
13901
13902 -- check whether object_id belongs to object_type
13903 IF p_relationship_rec.object_id IS NOT NULL
13904 AND p_relationship_rec.object_id <> fnd_api.g_miss_num
13905 AND p_create_update_flag = 'C'
13906 THEN
13907 l_in := hz_relationship_type_v2pub.in_instance_sets (
13908 p_relationship_rec.object_type,
13909 p_relationship_rec.object_id
13910 );
13911
13912 IF l_in = 'N' THEN
13913 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
13914 fnd_message.set_token('FK', 'object_id');
13915 fnd_message.set_token('COLUMN',
13916 LOWER(p_relationship_rec.object_type)||' id');
13917 fnd_message.set_token('TABLE', p_relationship_rec.object_table_name);
13918 fnd_msg_pub.add;
13919 x_return_status := fnd_api.g_ret_sts_error;
13920 END IF;
13921
13922 /*IF g_debug THEN
13923 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'object_id belongs to object_type. ' ||
13924 'x_return_status = ' || x_return_status,
13925 l_debug_prefix);
13926 END IF;
13927 */
13928 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13929 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_id belongs to object_type. ' ||
13930 'x_return_status = ' || x_return_status,
13931 p_msg_level=>fnd_log.level_statement);
13932 END IF;
13933
13934 END IF;
13935
13936 -----------------------------
13937 -- validate object_table_name
13938 -----------------------------
13939 /****Logical APIs - validation not required****/
13940 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
13941 -- object_table_name is mandatory
13942 validate_mandatory (
13943 p_create_update_flag => p_create_update_flag,
13944 p_column => 'object_table_name',
13945 p_column_value => p_relationship_rec.object_table_name,
13946 x_return_status => x_return_status
13947 );
13948
13949 /*IF g_debug THEN
13950 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'object_table_name is mandatory. ' ||
13951 'x_return_status = ' || x_return_status,
13952 l_debug_prefix);
13953 END IF;
13954 */
13955 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13956 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_table_name is mandatory. ' ||
13957 'x_return_status = ' || x_return_status,
13958 p_msg_level=>fnd_log.level_statement);
13959 END IF;
13960
13961 -- object_table_name is non-updateable
13962 IF p_create_update_flag = 'U' THEN
13963 validate_nonupdateable (
13964 p_column => 'object_table_name',
13965 p_column_value => p_relationship_rec.object_table_name,
13966 p_old_column_value => l_object_table_name,
13967 x_return_status => x_return_status
13968 );
13969
13970 /*IF g_debug THEN
13971 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'object_table_name is non-updateable. ' ||
13972 'x_return_status = ' || x_return_status,
13973 l_debug_prefix);
13974 END IF;
13975 */
13976 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13977 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_table_name is non-updateable. ' ||
13978 'x_return_status = ' || x_return_status,
13979 p_msg_level=>fnd_log.level_statement);
13980 END IF;
13981
13982 END IF;
13983
13984 -- object_table_name has foreign key fnd_objects.obj_name
13985 -- do not need to check during update because object_table_name is
13986 -- non-updateable.
13987 IF p_create_update_flag = 'C'
13988 AND p_relationship_rec.object_table_name IS NOT NULL
13989 AND p_relationship_rec.object_table_name <> fnd_api.g_miss_char
13990 THEN
13991 BEGIN
13992 SELECT 'Y'
13993 INTO l_dummy
13994 FROM fnd_objects fo
13995 WHERE fo.obj_name = p_relationship_rec.object_table_name;
13996 EXCEPTION
13997 WHEN NO_DATA_FOUND THEN
13998 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
13999 fnd_message.set_token('FK', 'object_table_name');
14000 fnd_message.set_token('COLUMN', 'obj_name');
14001 fnd_message.set_token('TABLE', 'fnd_objects');
14002 fnd_msg_pub.add;
14003 x_return_status := fnd_api.g_ret_sts_error;
14004 END;
14005
14006 /*IF g_debug THEN
14007 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14008 'object_table_name has foreign key fnd_objects.obj_name. ' ||
14009 'x_return_status = ' || x_return_status,
14010 l_debug_prefix
14011 );
14012 END IF;
14013 */
14014 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14015 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14016 p_message=>'object_table_name has foreign key fnd_objects.obj_name. ' ||
14017 'x_return_status = ' || x_return_status,
14018 p_msg_level=>fnd_log.level_statement);
14019 END IF;
14020
14021 END IF;
14022 END IF;
14023
14024 -----------------------
14025 -- validate object_type
14026 -----------------------
14027 /****Logical APIs - validation not required****/
14028 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
14029 -- object_type is mandatory
14030 validate_mandatory (
14031 p_create_update_flag => p_create_update_flag,
14032 p_column => 'object_type',
14033 p_column_value => p_relationship_rec.object_type,
14034 x_return_status => x_return_status
14035 );
14036
14037 /*IF g_debug THEN
14038 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'object_type is mandatory. ' ||
14039 'x_return_status = ' || x_return_status,
14040 l_debug_prefix);
14041 END IF;
14042 */
14043 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14044 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_type is mandatory. ' ||
14045 'x_return_status = ' || x_return_status,
14046 p_msg_level=>fnd_log.level_statement);
14047 END IF;
14048
14049 -- object_type is non-updateable
14050 IF p_create_update_flag = 'U' THEN
14051 validate_nonupdateable (
14052 p_column => 'object_type',
14053 p_column_value => p_relationship_rec.object_type,
14054 p_old_column_value => l_object_type,
14055 x_return_status => x_return_status
14056 );
14057
14058 /*IF g_debug THEN
14059 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'object_type is non-updateable. ' ||
14060 'x_return_status = ' || x_return_status,
14061 l_debug_prefix);
14062 END IF;
14063 */
14064 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14065 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_type is non-updateable. ' ||
14066 'x_return_status = ' || x_return_status,
14067 p_msg_level=>fnd_log.level_statement);
14068 END IF;
14069
14070 END IF;
14071
14072 -- object_type has foreign key fnd_object_instance_sets.instance_set_name
14073 -- do not need to check during update because object_type is
14074 -- non-updateable.
14075 IF p_create_update_flag = 'C'
14076 AND p_relationship_rec.object_type IS NOT NULL
14077 AND p_relationship_rec.object_type <> fnd_api.g_miss_char
14078 THEN
14079 BEGIN
14080 SELECT 'Y'
14081 INTO l_dummy
14082 FROM fnd_object_instance_sets fois
14083 WHERE fois.instance_set_name = p_relationship_rec.object_type;
14084 EXCEPTION
14085 WHEN NO_DATA_FOUND THEN
14086 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
14087 fnd_message.set_token('FK', 'object_type');
14088 fnd_message.set_token('COLUMN', 'instance_set_name');
14089 fnd_message.set_token('TABLE', 'fnd_object_instance_sets');
14090 fnd_msg_pub.add;
14091 x_return_status := fnd_api.g_ret_sts_error;
14092 END;
14093
14094 /*IF g_debug THEN
14095 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14096 'object_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
14097 'x_return_status = ' || x_return_status,
14098 l_debug_prefix
14099 );
14100 END IF;
14101 */
14102 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14103 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14104 p_message=>'object_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
14105 'x_return_status = ' || x_return_status,
14106 p_msg_level=>fnd_log.level_statement);
14107 END IF;
14108
14109 END IF;
14110 END IF;
14111
14112 ----------------------
14113 -- validate start_date
14114 ----------------------
14115 /* The start_date is defaulted in table handler for bug # 2260303
14116 Hence removed the mandatory check for start_date
14117
14118 -- start_date is mandatory
14119 validate_mandatory (
14120 p_create_update_flag => p_create_update_flag,
14121 p_column => 'start_date',
14122 p_column_value => p_relationship_rec.start_date,
14123 x_return_status => x_return_status
14124 );
14125
14126 IF g_debug THEN
14127 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'start_date is mandatory. ' ||
14128 'x_return_status = ' || x_return_status,
14129 l_debug_prefix);
14130 END IF;
14131 */
14132 -- start_date cannot be set to null during update
14133
14134 IF p_create_update_flag = 'U' THEN
14135 validate_cannot_update_to_null (
14136 p_column => 'start_date',
14137 p_column_value => p_relationship_rec.start_date,
14138 x_return_status => x_return_status
14139 );
14140
14141 /*IF g_debug THEN
14142 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14143 'start_date cannot be set to null during update. ' ||
14144 'x_return_status = ' || x_return_status,
14145 l_debug_prefix
14146 );
14147 END IF;
14148 */
14149 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14150 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14151 p_message=>'start_date cannot be set to null during update. ' ||
14152 'x_return_status = ' || x_return_status,
14153 p_msg_level=>fnd_log.level_statement);
14154 END IF;
14155
14156 END IF;
14157
14158 --------------------
14159 -- validate party_id
14160 --------------------
14161
14162 -- party_id is non-updateable
14163 IF p_create_update_flag = 'U' THEN
14164 validate_nonupdateable (
14165 p_column => 'party_id',
14166 p_column_value => p_relationship_rec.party_rec.party_id,
14167 p_old_column_value => l_party_id,
14168 x_return_status => x_return_status);
14169
14170 /*IF g_debug THEN
14171 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'party_id is non-updateable. ' ||
14172 'x_return_status = ' || x_return_status,
14173 l_debug_prefix);
14174 END IF;
14175 */
14176 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14177 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable. ' ||
14178 'x_return_status = ' || x_return_status,
14179 p_msg_level=>fnd_log.level_statement);
14180 END IF;
14181
14182 END IF;
14183
14184 ------------------
14185 -- validate status
14186 ------------------
14187
14188 -- status cannot be set to null during update
14189 IF p_create_update_flag = 'U' THEN
14190 validate_cannot_update_to_null (
14191 p_column => 'status',
14192 p_column_value => p_relationship_rec.status,
14193 x_return_status => x_return_status
14194 );
14195
14196 /*IF g_debug THEN
14197 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14198 'status cannot be set to null during update. ' ||
14199 'x_return_status = ' || x_return_status,
14200 l_debug_prefix);
14201 END IF;
14202 */
14203 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14204 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'status cannot be set to null during update. ' ||
14205 'x_return_status = ' || x_return_status,
14206 p_msg_level=>fnd_log.level_statement);
14207 END IF;
14208
14209 END IF;
14210
14211 /****Logical APIs - validation not required****/
14212 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
14213 -- status is lookup code in lookup type REGISTRY_STATUS
14214 IF p_relationship_rec.status IS NOT NULL
14215 AND p_relationship_rec.status <> fnd_api.g_miss_char
14216 AND (p_create_update_flag = 'C'
14217 OR (p_create_update_flag = 'U'
14218 AND p_relationship_rec.status <> NVL(l_status,
14219 fnd_api.g_miss_char)))
14220 THEN
14221 validate_lookup (
14222 p_column => 'status',
14223 p_lookup_type => 'REGISTRY_STATUS',
14224 p_column_value => p_relationship_rec.status,
14225 x_return_status => x_return_status
14226 );
14227
14228 /*IF g_debug THEN
14229 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14230 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
14231 'x_return_status = ' || x_return_status,
14232 l_debug_prefix);
14233 END IF;
14234 */
14235 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14236 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14237 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
14238 'x_return_status = ' || x_return_status,
14239 p_msg_level=>fnd_log.level_statement);
14240 END IF;
14241
14242 END IF;
14243 END IF;
14244
14245 /* Bug 2197181: removed content_source_type validation as this
14246 column has been obsoleted for mix-n-match project.
14247
14248 ----------------------------------------------
14249 -- validate content_source_type
14250 ----------------------------------------------
14251
14252 -- do not need to chack content_source_type is mandatory because
14253 -- we default content_source_type to
14254 -- hz_party_v2pub.g_miss_content_source_type in the table handler.
14255
14256 -- content_source_type is non-updateable
14257 IF p_create_update_flag = 'U' THEN
14258 validate_nonupdateable (
14259 p_column => 'content_source_type',
14260 p_column_value => p_relationship_rec.content_source_type,
14261 p_old_column_value => l_content_source_type,
14262 x_return_status => x_return_status
14263 );
14264
14265
14266 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14267 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'content_source_type is non-updateable. ' ||
14268 'x_return_status = ' || x_return_status,
14269 p_msg_level=>fnd_log.level_statement);
14270 END IF;
14271
14272 END IF;
14273
14274 -- content_source_type is lookup code in lookup type CONTENT_SOURCE_TYPE
14275 validate_lookup (
14276 p_column => 'content_source_type',
14277 p_lookup_type => 'CONTENT_SOURCE_TYPE',
14278 p_column_value => p_relationship_rec.content_source_type,
14279 x_return_status => x_return_status
14280 );
14281
14282 IF g_debug THEN
14283 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14284 'content_source_type is lookup code in lookup type CONTENT_SOURCE_TYPE. ' ||
14285 'x_return_status = ' || x_return_status,
14286 l_debug_prefix
14287 );
14288 END IF;
14289 */
14290
14291 -- Bug 2197181: Added validation for mix-n-match
14292
14293 ----------------------------------------
14294 -- validate content_source_type and actual_content_source_type
14295 ----------------------------------------
14296
14297 HZ_MIXNM_UTILITY.ValidateContentSource (
14298 p_api_version => 'V2',
14299 p_create_update_flag => p_create_update_flag,
14300 p_check_update_privilege => 'N',
14301 p_content_source_type => p_relationship_rec.content_source_type,
14302 p_old_content_source_type => l_content_source_type,
14303 p_actual_content_source => p_relationship_rec.actual_content_source,
14304 p_old_actual_content_source => db_actual_content_source,
14305 p_entity_name => 'HZ_RELATIONSHIPS',
14306 x_return_status => x_return_status );
14307
14308 ----------------------------------
14309 -- start_date, end_date validation
14310 ----------------------------------
14311
14312 -- end_date must be null or greater than start date
14313 IF (p_create_update_flag = 'C') THEN
14314 IF p_relationship_rec.end_date IS NOT NULL AND
14315 p_relationship_rec.end_date <> fnd_api.g_miss_date AND
14316 p_relationship_rec.end_date < p_relationship_rec.start_date
14317 THEN
14318 fnd_message.set_name('AR', 'HZ_API_START_DATE_GREATER');
14319 fnd_msg_pub.add;
14320 x_return_status := fnd_api.g_ret_sts_error;
14321 END IF;
14322 ELSIF (p_create_update_flag = 'U') THEN
14323 -- old start_date, end_date has been selected from table
14324 -- and put into l_start_date, l_end_date
14325
14326 IF p_relationship_rec.start_date <> fnd_api.g_miss_date THEN
14327 l_start_date := p_relationship_rec.start_date;
14328 END IF;
14329
14330 IF p_relationship_rec.end_date IS NULL
14331 OR p_relationship_rec.end_date <> fnd_api.g_miss_date
14332 THEN
14333 l_end_date := p_relationship_rec.end_date;
14334 END IF;
14335
14336 IF l_end_date IS NOT NULL
14337 AND l_end_date < l_start_date
14338 THEN
14339 fnd_message.set_name('AR', 'HZ_API_START_DATE_GREATER');
14340 fnd_msg_pub.add;
14341 x_return_status := fnd_api.g_ret_sts_error;
14342 END IF;
14343 END IF;
14344
14345 /*IF g_debug THEN
14346 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14347 'end_date must be null or greater than start date. ' ||
14348 'x_return_status = ' || x_return_status,
14349 l_debug_prefix);
14350 END IF;
14351 */
14352 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14353 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'end_date must be null or greater than start date. ' ||
14354 'x_return_status = ' || x_return_status,
14355 p_msg_level=>fnd_log.level_statement);
14356 END IF;
14357
14358 ------------------------
14359 -- validate date overlap
14360 ------------------------
14361
14362 IF p_create_update_flag = 'C' THEN
14363 db_actual_content_source := p_relationship_rec.actual_content_source;
14364 END IF;
14365 -- Bug#12557688
14366 -- When you Inactivate record no need to validate date overlap
14367 -- between two identical relationships.
14368 IF p_relationship_rec.status IS NULL AND p_create_update_flag = 'U' THEN
14369 SELECT status
14370 INTO l_status
14371 FROM hz_relationships
14372 WHERE relationship_id = p_relationship_rec.relationship_id
14373 AND rownum =1;
14374 END IF;
14375
14376 -- there should not be any date overlap between two identical relationships
14377
14378 -- Bug 3294936 : check for all records in the cursor for overlap
14379
14380 -- OPEN c1(db_actual_content_source);
14381 IF nvl(p_relationship_rec.status,l_status) <> 'I' THEN
14382 For r1 in c1(db_actual_content_source)
14383 LOOP
14384 -- FETCH c1 into r1;
14385 -- IF c1%FOUND THEN
14386 l_overlap := hz_common_pub.is_time_overlap(
14387 NVL(p_relationship_rec.start_date,sysdate),
14388 p_relationship_rec.end_date,
14389 r1.start_date,
14390 r1.end_date
14391 );
14392 IF l_overlap = 'Y' THEN
14393 fnd_message.set_name('AR', 'HZ_RELATIONSHIP_DATE_OVERLAP');
14394 fnd_msg_pub.add;
14395 x_return_status := fnd_api.g_ret_sts_error;
14396 -- Bug 3294936 : Add exit to come out of loop
14397 EXIT;
14398 END IF;
14399 END LOOP;
14400 -- END IF;
14401 -- CLOSE c1;
14402 END IF;
14403 /*IF g_debug THEN
14404 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14405 'there should not be any date overlap between two identical relationships. ' ||
14406 'x_return_status = ' || x_return_status, l_debug_prefix);
14407 END IF;
14408 */
14409 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14410 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14411 p_message=>'there should not be any date overlap between two identical relationships. ' ||
14412 'x_return_status = ' || x_return_status,
14413 p_msg_level=>fnd_log.level_statement);
14414 END IF;
14415
14416 --------------------------------------
14417 -- validate created_by_module
14418 --------------------------------------
14419
14420 validate_created_by_module(
14421 p_create_update_flag => p_create_update_flag,
14422 p_created_by_module => p_relationship_rec.created_by_module,
14423 p_old_created_by_module => l_created_by_module,
14424 x_return_status => x_return_status);
14425
14426 --------------------------------------
14427 -- validate application_id
14428 --------------------------------------
14429
14430 validate_application_id(
14431 p_create_update_flag => p_create_update_flag,
14432 p_application_id => p_relationship_rec.application_id,
14433 p_old_application_id => l_application_id,
14434 x_return_status => x_return_status);
14435
14436 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14437 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_relationship (-)',
14438 p_msg_level=>fnd_log.level_procedure);
14439 END IF;
14440
14441 END validate_relationship;
14442
14443 --
14444 -- DESCRIPTION
14445 -- Validates a contact point record (minus EFTs). Kept for backward
14446 -- compatibility.
14447 --
14448 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
14449 --
14450 -- ARGUMENTS
14451 -- IN:
14452 -- p_create_update_flag Create update flag. 'C' = create. 'U' = update.
14453 -- p_contact_point_rec Contact point record.
14454 -- p_edi_rec EDI record.
14455 -- p_email_rec Email record.
14456 -- p_phone_rec Phone record.
14457 -- p_telex_rec Telex record.
14458 -- p_web_rec Web record.
14459 -- p_rowid Rowid of the record (used only in update mode).
14460 -- IN/OUT:
14461 -- x_return_status Return status after the call. The status can
14462 -- be FND_API.G_RET_STS_SUCCESS (success),
14463 -- fnd_api.g_ret_sts_error (error),
14464 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
14465 --
14466 -- NOTES
14467 --
14468 -- MODIFICATION HISTORY
14469 --
14470 -- 07-23-2001 Jianying Huang o Created.
14471 -- 20-NOV-2001 Joe del Callar Bug 2116225: Modified to accept EFT
14472 -- records for bank consolidation.
14473 -- Bug 2117973: Modified to comply with
14474 -- PL/SQL coding standards.
14475 -- 05-DEC-2001 Joe del Callar Bug 2136283: Modified to use generic
14476 -- validation procedure for improved
14477 -- backward compatibility.
14478 --
14479 PROCEDURE validate_contact_point (
14480 p_create_update_flag IN VARCHAR2,
14481 p_contact_point_rec IN hz_contact_point_v2pub.contact_point_rec_type,
14482 p_edi_rec IN hz_contact_point_v2pub.edi_rec_type := hz_contact_point_v2pub.g_miss_edi_rec,
14483 p_email_rec IN hz_contact_point_v2pub.email_rec_type := hz_contact_point_v2pub.g_miss_email_rec,
14484 p_phone_rec IN hz_contact_point_v2pub.phone_rec_type := hz_contact_point_v2pub.g_miss_phone_rec,
14485 p_telex_rec IN hz_contact_point_v2pub.telex_rec_type := hz_contact_point_v2pub.g_miss_telex_rec,
14486 p_web_rec IN hz_contact_point_v2pub.web_rec_type := hz_contact_point_v2pub.g_miss_web_rec,
14487 p_rowid IN ROWID,
14488 x_return_status IN OUT NOCOPY VARCHAR2
14489 ) IS
14490 l_debug_prefix VARCHAR2(30) := '';
14491 BEGIN
14492 -- Check if API is called in debug mode. If yes, enable debug.
14493 --enable_debug;
14494
14495 -- Debug info.
14496 /*IF g_debug THEN
14497 hz_utility_v2pub.debug ('validate_contact_point (+)');
14498 END IF;
14499 */
14500 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14501 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_contact_point (+)',
14502 p_msg_level=>fnd_log.level_procedure);
14503 END IF;
14504
14505
14506 validate_contact_point_main(
14507 p_create_update_flag => p_create_update_flag,
14508 p_contact_point_rec => p_contact_point_rec,
14509 p_edi_rec => p_edi_rec,
14510 p_email_rec => p_email_rec,
14511 p_phone_rec => p_phone_rec,
14512 p_telex_rec => p_telex_rec,
14513 p_web_rec => p_web_rec,
14514 p_rowid => p_rowid,
14515 x_return_status => x_return_status
14516 );
14517
14518 -- Debug info.
14519 /*IF g_debug THEN
14520 hz_utility_v2pub.debug ('validate_contact_point (-)');
14521 END IF;
14522 */
14523 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14524 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_contact_point (-)',
14525 p_msg_level=>fnd_log.level_procedure);
14526 END IF;
14527
14528
14529 -- Check if API is called in debug mode. If yes, disable debug.
14530 --disable_debug;
14531 END validate_contact_point;
14532
14533 --
14534 -- DESCRIPTION
14535 -- Validates an EDI contact point record.
14536 --
14537 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
14538 --
14539 -- ARGUMENTS
14540 -- IN:
14541 -- p_create_update_flag Create update flag. 'C' = create. 'U' = update.
14542 -- p_contact_point_rec Contact point record.
14543 -- p_edi_rec EDI record.
14544 -- p_rowid Rowid of the record (used only in update mode).
14545 -- IN/OUT:
14546 -- x_return_status Return status after the call. The status can
14547 -- be FND_API.G_RET_STS_SUCCESS (success),
14548 -- fnd_api.g_ret_sts_error (error),
14549 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
14550 --
14551 -- NOTES
14552 --
14553 -- MODIFICATION HISTORY
14554 -- 05-DEC-2001 Joe del Callar Bug 2136283: Created to improve
14555 -- backward compatibility.
14556 --
14557 PROCEDURE validate_edi_contact_point (
14558 p_create_update_flag IN VARCHAR2,
14559 p_contact_point_rec IN hz_contact_point_v2pub.contact_point_rec_type,
14560 p_edi_rec IN hz_contact_point_v2pub.edi_rec_type := hz_contact_point_v2pub.g_miss_edi_rec,
14561 p_rowid IN ROWID,
14562 x_return_status IN OUT NOCOPY VARCHAR2
14563 ) IS
14564 l_debug_prefix VARCHAR2(30) := '';
14565 BEGIN
14566 -- Check if API is called in debug mode. If yes, enable debug.
14567 --enable_debug;
14568
14569 -- Debug info.
14570 /*IF g_debug THEN
14571 hz_utility_v2pub.debug ('validate_edi_contact_point (+)');
14572 END IF;
14573 */
14574 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14575 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_edi_contact_point (+)',
14576 p_msg_level=>fnd_log.level_procedure);
14577 END IF;
14578
14579
14580 validate_contact_point_main(
14581 p_create_update_flag => p_create_update_flag,
14582 p_contact_point_rec => p_contact_point_rec,
14583 p_edi_rec => p_edi_rec,
14584 p_rowid => p_rowid,
14585 x_return_status => x_return_status
14586 );
14587
14588 -- Debug info.
14589 /*IF g_debug THEN
14590 hz_utility_v2pub.debug ('validate_edi_contact_point (-)');
14591 END IF;
14592 */
14593 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14594 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_edi_contact_point (-)',
14595 p_msg_level=>fnd_log.level_procedure);
14596 END IF;
14597
14598
14599 -- Check if API is called in debug mode. If yes, disable debug.
14600 --disable_debug;
14601 END validate_edi_contact_point;
14602
14603 --
14604 -- DESCRIPTION
14605 -- Validates an EFT contact point record.
14606 --
14607 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
14608 --
14609 -- ARGUMENTS
14610 -- IN:
14611 -- p_create_update_flag Create update flag. 'C' = create. 'U' = update.
14612 -- p_contact_point_rec Contact point record.
14613 -- p_eft_rec EFT record.
14614 -- p_rowid Rowid of the record (used only in update mode).
14615 -- IN/OUT:
14616 -- x_return_status Return status after the call. The status can
14617 -- be FND_API.G_RET_STS_SUCCESS (success),
14618 -- fnd_api.g_ret_sts_error (error),
14619 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
14620 --
14621 -- NOTES
14622 --
14623 -- MODIFICATION HISTORY
14624 -- 05-DEC-2001 Joe del Callar Bug 2136283: Created to improve
14625 -- backward compatibility.
14626 --
14627 PROCEDURE validate_eft_contact_point (
14628 p_create_update_flag IN VARCHAR2,
14629 p_contact_point_rec IN hz_contact_point_v2pub.contact_point_rec_type,
14630 p_eft_rec IN hz_contact_point_v2pub.eft_rec_type := hz_contact_point_v2pub.g_miss_eft_rec,
14631 p_rowid IN ROWID,
14632 x_return_status IN OUT NOCOPY VARCHAR2
14633 ) IS
14634 l_debug_prefix VARCHAR2(30) := '';
14635 BEGIN
14636 -- Check if API is called in debug mode. If yes, enable debug.
14637 --enable_debug;
14638
14639 -- Debug info.
14640 /*IF g_debug THEN
14641 hz_utility_v2pub.debug ('validate_eft_contact_point (+)');
14642 END IF;
14643 */
14644 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14645 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_eft_contact_point (+)',
14646 p_msg_level=>fnd_log.level_procedure);
14647 END IF;
14648
14649
14650 validate_contact_point_main(
14651 p_create_update_flag => p_create_update_flag,
14652 p_contact_point_rec => p_contact_point_rec,
14653 p_eft_rec => p_eft_rec,
14654 p_rowid => p_rowid,
14655 x_return_status => x_return_status
14656 );
14657
14658 -- Debug info.
14659 /*IF g_debug THEN
14660 hz_utility_v2pub.debug ('validate_eft_contact_point (-)');
14661 END IF;
14662 */
14663 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14664 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_eft_contact_point (-)',
14665 p_msg_level=>fnd_log.level_procedure);
14666 END IF;
14667
14668
14669 -- Check if API is called in debug mode. If yes, disable debug.
14670 --disable_debug;
14671 END validate_eft_contact_point;
14672
14673 --
14674 -- DESCRIPTION
14675 -- Validates an Web contact point record.
14676 --
14677 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
14678 --
14679 -- ARGUMENTS
14680 -- IN:
14681 -- p_create_update_flag Create update flag. 'C' = create. 'U' = update.
14682 -- p_contact_point_rec Contact point record.
14683 -- p_web_rec Web record.
14684 -- p_rowid Rowid of the record (used only in update mode).
14685 -- IN/OUT:
14686 -- x_return_status Return status after the call. The status can
14687 -- be FND_API.G_RET_STS_SUCCESS (success),
14688 -- fnd_api.g_ret_sts_error (error),
14689 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
14690 --
14691 -- NOTES
14692 --
14693 -- MODIFICATION HISTORY
14694 -- 05-DEC-2001 Joe del Callar Bug 2136283: Created to improve
14695 -- backward compatibility.
14696 --
14697 PROCEDURE validate_web_contact_point (
14698 p_create_update_flag IN VARCHAR2,
14699 p_contact_point_rec IN hz_contact_point_v2pub.contact_point_rec_type,
14700 p_web_rec IN hz_contact_point_v2pub.web_rec_type := hz_contact_point_v2pub.g_miss_web_rec,
14701 p_rowid IN ROWID,
14702 x_return_status IN OUT NOCOPY VARCHAR2
14703 ) IS
14704 l_debug_prefix VARCHAR2(30) := '';
14705 BEGIN
14706 -- Check if API is called in debug mode. If yes, enable debug.
14707 --enable_debug;
14708
14709 -- Debug info.
14710 /*IF g_debug THEN
14711 hz_utility_v2pub.debug ('validate_web_contact_point (+)');
14712 END IF;
14713 */
14714 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14715 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_web_contact_point (+)',
14716 p_msg_level=>fnd_log.level_procedure);
14717 END IF;
14718
14719
14720 validate_contact_point_main(
14721 p_create_update_flag => p_create_update_flag,
14722 p_contact_point_rec => p_contact_point_rec,
14723 p_web_rec => p_web_rec,
14724 p_rowid => p_rowid,
14725 x_return_status => x_return_status
14726 );
14727
14728 -- Debug info.
14729 /*IF g_debug THEN
14730 hz_utility_v2pub.debug ('validate_web_contact_point (-)');
14731 END IF;
14732 */
14733
14734
14735 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14736 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_web_contact_point (-)',
14737 p_msg_level=>fnd_log.level_procedure);
14738 END IF;
14739
14740 -- Check if API is called in debug mode. If yes, disable debug.
14741 --disable_debug;
14742 END validate_web_contact_point;
14743
14744 --
14745 -- DESCRIPTION
14746 -- Validates an Phone contact point record.
14747 --
14748 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
14749 --
14750 -- ARGUMENTS
14751 -- IN:
14752 -- p_create_update_flag Create update flag. 'C' = create. 'U' = update.
14753 -- p_contact_point_rec Contact point record.
14754 -- p_phone_rec Phone record.
14755 -- p_rowid Rowid of the record (used only in update mode).
14756 -- IN/OUT:
14757 -- x_return_status Return status after the call. The status can
14758 -- be FND_API.G_RET_STS_SUCCESS (success),
14759 -- fnd_api.g_ret_sts_error (error),
14760 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
14761 --
14762 -- NOTES
14763 --
14764 -- MODIFICATION HISTORY
14765 -- 05-DEC-2001 Joe del Callar Bug 2136283: Created to improve
14766 -- backward compatibility.
14767 --
14768 PROCEDURE validate_phone_contact_point (
14769 p_create_update_flag IN VARCHAR2,
14770 p_contact_point_rec IN hz_contact_point_v2pub.contact_point_rec_type,
14771 p_phone_rec IN hz_contact_point_v2pub.phone_rec_type := hz_contact_point_v2pub.g_miss_phone_rec,
14772 p_rowid IN ROWID,
14773 x_return_status IN OUT NOCOPY VARCHAR2
14774 ) IS
14775 l_debug_prefix VARCHAR2(30) := '';
14776 BEGIN
14777 -- Check if API is called in debug mode. If yes, enable debug.
14778 --enable_debug;
14779
14780 -- Debug info.
14781
14782 /*IF g_debug THEN
14783 hz_utility_v2pub.debug ('validate_phone_contact_point (+)');
14784 END IF;
14785 */
14786 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14787 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_phone_contact_point (+)',
14788 p_msg_level=>fnd_log.level_procedure);
14789 END IF;
14790
14791
14792 validate_contact_point_main(
14793 p_create_update_flag => p_create_update_flag,
14794 p_contact_point_rec => p_contact_point_rec,
14795 p_phone_rec => p_phone_rec,
14796 p_rowid => p_rowid,
14797 x_return_status => x_return_status
14798 );
14799
14800 -- Debug info.
14801 /*IF g_debug THEN
14802 hz_utility_v2pub.debug ('validate_phone_contact_point (-)');
14803 END IF;
14804 */
14805 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14806 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_phone_contact_point (-)',
14807 p_msg_level=>fnd_log.level_procedure);
14808 END IF;
14809
14810 -- Check if API is called in debug mode. If yes, disable debug.
14811 --disable_debug;
14812 END validate_phone_contact_point;
14813
14814 --
14815 -- DESCRIPTION
14816 -- Validates an Telex contact point record.
14817 --
14818 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
14819 --
14820 -- ARGUMENTS
14821 -- IN:
14822 -- p_create_update_flag Create update flag. 'C' = create. 'U' = update.
14823 -- p_contact_point_rec Contact point record.
14824 -- p_telex_rec Telex record.
14825 -- p_rowid Rowid of the record (used only in update mode).
14826 -- IN/OUT:
14827 -- x_return_status Return status after the call. The status can
14828 -- be FND_API.G_RET_STS_SUCCESS (success),
14829 -- fnd_api.g_ret_sts_error (error),
14830 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
14831 --
14832 -- NOTES
14833 --
14834 -- MODIFICATION HISTORY
14835 -- 05-DEC-2001 Joe del Callar Bug 2136283: Created to improve
14836 -- backward compatibility.
14837 --
14838 PROCEDURE validate_telex_contact_point (
14839 p_create_update_flag IN VARCHAR2,
14840 p_contact_point_rec IN hz_contact_point_v2pub.contact_point_rec_type,
14841 p_telex_rec IN hz_contact_point_v2pub.telex_rec_type := hz_contact_point_v2pub.g_miss_telex_rec,
14842 p_rowid IN ROWID,
14843 x_return_status IN OUT NOCOPY VARCHAR2
14844 ) IS
14845 l_debug_prefix VARCHAR2(30) := '';
14846 BEGIN
14847 -- Check if API is called in debug mode. If yes, enable debug.
14848 --enable_debug;
14849
14850 -- Debug info.
14851 /*IF g_debug THEN
14852 hz_utility_v2pub.debug ('validate_telex_contact_point (+)');
14853 END IF;
14854 */
14855 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14856 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_telex_contact_point (+)',
14857 p_msg_level=>fnd_log.level_procedure);
14858 END IF;
14859
14860
14861 validate_contact_point_main(
14862 p_create_update_flag => p_create_update_flag,
14863 p_contact_point_rec => p_contact_point_rec,
14864 p_telex_rec => p_telex_rec,
14865 p_rowid => p_rowid,
14866 x_return_status => x_return_status
14867 );
14868
14869 -- Debug info.
14870 /*IF g_debug THEN
14871 hz_utility_v2pub.debug ('validate_telex_contact_point (-)');
14872 END IF;
14873 */
14874 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14875 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_telex_contact_point (-)',
14876 p_msg_level=>fnd_log.level_procedure);
14877 END IF;
14878
14879
14880 -- Check if API is called in debug mode. If yes, disable debug.
14881 --disable_debug;
14882 END validate_telex_contact_point;
14883
14884 --
14885 -- DESCRIPTION
14886 -- Validates an Email contact point record.
14887 --
14888 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
14889 --
14890 -- ARGUMENTS
14891 -- IN:
14892 -- p_create_update_flag Create update flag. 'C' = create. 'U' = update.
14893 -- p_contact_point_rec Contact point record.
14894 -- p_email_rec Email record.
14895 -- p_rowid Rowid of the record (used only in update mode).
14896 -- IN/OUT:
14897 -- x_return_status Return status after the call. The status can
14898 -- be FND_API.G_RET_STS_SUCCESS (success),
14899 -- fnd_api.g_ret_sts_error (error),
14900 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
14901 --
14902 -- NOTES
14903 --
14904 -- MODIFICATION HISTORY
14905 -- 05-DEC-2001 Joe del Callar Bug 2136283: Created to improve
14906 -- backward compatibility.
14907 --
14908 PROCEDURE validate_email_contact_point (
14909 p_create_update_flag IN VARCHAR2,
14910 p_contact_point_rec IN hz_contact_point_v2pub.contact_point_rec_type,
14911 p_email_rec IN hz_contact_point_v2pub.email_rec_type := hz_contact_point_v2pub.g_miss_email_rec,
14912 p_rowid IN ROWID,
14913 x_return_status IN OUT NOCOPY VARCHAR2
14914 ) IS
14915 l_debug_prefix VARCHAR2(30) := '';
14916 BEGIN
14917 -- Check if API is called in debug mode. If yes, enable debug.
14918 --enable_debug;
14919
14920 -- Debug info.
14921 /*IF g_debug THEN
14922 hz_utility_v2pub.debug ('validate_email_contact_point (+)');
14923 END IF;
14924 */
14925 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14926 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_email_contact_point (+)',
14927 p_msg_level=>fnd_log.level_procedure);
14928 END IF;
14929
14930
14931 validate_contact_point_main(
14932 p_create_update_flag => p_create_update_flag,
14933 p_contact_point_rec => p_contact_point_rec,
14934 p_email_rec => p_email_rec,
14935 p_rowid => p_rowid,
14936 x_return_status => x_return_status
14937 );
14938
14939 -- Debug info.
14940 /*IF g_debug THEN
14941 hz_utility_v2pub.debug ('validate_email_contact_point (-)');
14942 END IF;
14943 */
14944 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14945 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_email_contact_point (-)',
14946 p_msg_level=>fnd_log.level_procedure);
14947 END IF;
14948
14949
14950 -- Check if API is called in debug mode. If yes, disable debug.
14951 --disable_debug;
14952 END validate_email_contact_point;
14953
14954 PROCEDURE validate_org_nonsupport_column (
14955 p_create_update_flag IN VARCHAR2,
14956 p_organization_rec IN HZ_PARTY_V2PUB.ORGANIZATION_REC_TYPE,
14957 x_return_status IN OUT NOCOPY VARCHAR2
14958 ) IS
14959 l_debug_prefix VARCHAR2(30) := '';
14960 BEGIN
14961 -- Debug info.
14962 /* IF G_DEBUG THEN
14963 HZ_UTILITY_V2PUB.debug ( 'validate_org_nonsupport_column (+)' );
14964 END IF;
14965 */
14966 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14967 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_org_nonsupport_column (+)',
14968 p_msg_level=>fnd_log.level_procedure);
14969 END IF;
14970
14971
14972 IF ( p_create_update_flag = 'C' AND
14973 p_organization_rec.avg_high_credit IS NOT NULL AND
14974 p_organization_rec.avg_high_credit <> FND_API.G_MISS_NUM )
14975 OR
14976 ( p_create_update_flag = 'U' AND
14977 ( p_organization_rec.avg_high_credit = FND_API.G_MISS_NUM OR
14978 p_organization_rec.avg_high_credit IS NOT NULL
14979 ) )
14980 THEN
14981 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
14982 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'avg_high_credit' );
14983 FND_MSG_PUB.ADD;
14984 x_return_status := FND_API.G_RET_STS_ERROR;
14985 END IF;
14986
14987 IF ( p_create_update_flag = 'C' AND
14988 p_organization_rec.credit_score IS NOT NULL AND
14989 p_organization_rec.credit_score <> FND_API.G_MISS_CHAR )
14990 OR
14991 ( p_create_update_flag = 'U' AND
14992 ( p_organization_rec.credit_score = FND_API.G_MISS_CHAR OR
14993 p_organization_rec.credit_score IS NOT NULL
14994 ) )
14995 THEN
14996 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
14997 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score' );
14998 FND_MSG_PUB.ADD;
14999 x_return_status := FND_API.G_RET_STS_ERROR;
15000 END IF;
15001
15002 IF ( p_create_update_flag = 'C' AND
15003 p_organization_rec.credit_score_age IS NOT NULL AND
15004 p_organization_rec.credit_score_age <> FND_API.G_MISS_NUM )
15005 OR
15006 ( p_create_update_flag = 'U' AND
15007 ( p_organization_rec.credit_score_age = FND_API.G_MISS_NUM OR
15008 p_organization_rec.credit_score_age IS NOT NULL
15009 ) )
15010 THEN
15011 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15012 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_age' );
15013 FND_MSG_PUB.ADD;
15014 x_return_status := FND_API.G_RET_STS_ERROR;
15015 END IF;
15016
15017 IF ( p_create_update_flag = 'C' AND
15018 p_organization_rec.credit_score_class IS NOT NULL AND
15019 p_organization_rec.credit_score_class <> FND_API.G_MISS_NUM )
15020 OR
15021 ( p_create_update_flag = 'U' AND
15022 ( p_organization_rec.credit_score_class = FND_API.G_MISS_NUM OR
15023 p_organization_rec.credit_score_class IS NOT NULL
15024 ) )
15025 THEN
15026 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15027 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_class' );
15028 FND_MSG_PUB.ADD;
15029 x_return_status := FND_API.G_RET_STS_ERROR;
15030 END IF;
15031
15032 IF ( p_create_update_flag = 'C' AND
15033 p_organization_rec.credit_score_commentary IS NOT NULL AND
15034 p_organization_rec.credit_score_commentary <> FND_API.G_MISS_CHAR )
15035 OR
15036 ( p_create_update_flag = 'U' AND
15037 ( p_organization_rec.credit_score_commentary = FND_API.G_MISS_CHAR OR
15038 p_organization_rec.credit_score_commentary IS NOT NULL
15039 ) )
15040 THEN
15041 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15042 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary' );
15043 FND_MSG_PUB.ADD;
15044 x_return_status := FND_API.G_RET_STS_ERROR;
15045 END IF;
15046
15047 IF ( p_create_update_flag = 'C' AND
15048 p_organization_rec.credit_score_commentary2 IS NOT NULL AND
15049 p_organization_rec.credit_score_commentary2 <> FND_API.G_MISS_CHAR )
15050 OR
15051 ( p_create_update_flag = 'U' AND
15052 ( p_organization_rec.credit_score_commentary2 = FND_API.G_MISS_CHAR OR
15053 p_organization_rec.credit_score_commentary2 IS NOT NULL
15054 ) )
15055 THEN
15056 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15057 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary2' );
15058 FND_MSG_PUB.ADD;
15059 x_return_status := FND_API.G_RET_STS_ERROR;
15060 END IF;
15061
15062 IF ( p_create_update_flag = 'C' AND
15063 p_organization_rec.credit_score_commentary3 IS NOT NULL AND
15064 p_organization_rec.credit_score_commentary3 <> FND_API.G_MISS_CHAR )
15065 OR
15066 ( p_create_update_flag = 'U' AND
15067 ( p_organization_rec.credit_score_commentary3 = FND_API.G_MISS_CHAR OR
15068 p_organization_rec.credit_score_commentary3 IS NOT NULL
15069 ) )
15070 THEN
15071 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15072 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary3' );
15073 FND_MSG_PUB.ADD;
15074 x_return_status := FND_API.G_RET_STS_ERROR;
15075 END IF;
15076
15077 IF ( p_create_update_flag = 'C' AND
15078 p_organization_rec.credit_score_commentary4 IS NOT NULL AND
15079 p_organization_rec.credit_score_commentary4 <> FND_API.G_MISS_CHAR )
15080 OR
15081 ( p_create_update_flag = 'U' AND
15082 ( p_organization_rec.credit_score_commentary4 = FND_API.G_MISS_CHAR OR
15083 p_organization_rec.credit_score_commentary4 IS NOT NULL
15084 ) )
15085 THEN
15086 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15087 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary4' );
15088 FND_MSG_PUB.ADD;
15089 x_return_status := FND_API.G_RET_STS_ERROR;
15090 END IF;
15091
15092 IF ( p_create_update_flag = 'C' AND
15093 p_organization_rec.credit_score_commentary5 IS NOT NULL AND
15094 p_organization_rec.credit_score_commentary5 <> FND_API.G_MISS_CHAR )
15095 OR
15096 ( p_create_update_flag = 'U' AND
15097 ( p_organization_rec.credit_score_commentary5 = FND_API.G_MISS_CHAR OR
15098 p_organization_rec.credit_score_commentary5 IS NOT NULL
15099 ) )
15100 THEN
15101 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15102 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary5' );
15103 FND_MSG_PUB.ADD;
15104 x_return_status := FND_API.G_RET_STS_ERROR;
15105 END IF;
15106
15107 IF ( p_create_update_flag = 'C' AND
15108 p_organization_rec.credit_score_commentary6 IS NOT NULL AND
15109 p_organization_rec.credit_score_commentary6 <> FND_API.G_MISS_CHAR )
15110 OR
15111 ( p_create_update_flag = 'U' AND
15112 ( p_organization_rec.credit_score_commentary6 = FND_API.G_MISS_CHAR OR
15113 p_organization_rec.credit_score_commentary6 IS NOT NULL
15114 ) )
15115 THEN
15116 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15117 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary6' );
15118 FND_MSG_PUB.ADD;
15119 x_return_status := FND_API.G_RET_STS_ERROR;
15120 END IF;
15121
15122 IF ( p_create_update_flag = 'C' AND
15123 p_organization_rec.credit_score_commentary7 IS NOT NULL AND
15124 p_organization_rec.credit_score_commentary7 <> FND_API.G_MISS_CHAR )
15125 OR
15126 ( p_create_update_flag = 'U' AND
15127 ( p_organization_rec.credit_score_commentary7 = FND_API.G_MISS_CHAR OR
15128 p_organization_rec.credit_score_commentary7 IS NOT NULL
15129 ) )
15130 THEN
15131 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15132 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary7' );
15133 FND_MSG_PUB.ADD;
15134 x_return_status := FND_API.G_RET_STS_ERROR;
15135 END IF;
15136
15137 IF ( p_create_update_flag = 'C' AND
15138 p_organization_rec.credit_score_commentary8 IS NOT NULL AND
15139 p_organization_rec.credit_score_commentary8 <> FND_API.G_MISS_CHAR )
15140 OR
15141 ( p_create_update_flag = 'U' AND
15142 ( p_organization_rec.credit_score_commentary8 = FND_API.G_MISS_CHAR OR
15143 p_organization_rec.credit_score_commentary8 IS NOT NULL
15144 ) )
15145 THEN
15146 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15147 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary8' );
15148 FND_MSG_PUB.ADD;
15149 x_return_status := FND_API.G_RET_STS_ERROR;
15150 END IF;
15151
15152 IF ( p_create_update_flag = 'C' AND
15153 p_organization_rec.credit_score_commentary9 IS NOT NULL AND
15154 p_organization_rec.credit_score_commentary9 <> FND_API.G_MISS_CHAR )
15155 OR
15156 ( p_create_update_flag = 'U' AND
15157 ( p_organization_rec.credit_score_commentary9 = FND_API.G_MISS_CHAR OR
15158 p_organization_rec.credit_score_commentary9 IS NOT NULL
15159 ) )
15160 THEN
15161 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15162 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary9' );
15163 FND_MSG_PUB.ADD;
15164 x_return_status := FND_API.G_RET_STS_ERROR;
15165 END IF;
15166
15167 IF ( p_create_update_flag = 'C' AND
15168 p_organization_rec.credit_score_commentary10 IS NOT NULL AND
15169 p_organization_rec.credit_score_commentary10 <> FND_API.G_MISS_CHAR )
15170 OR
15171 ( p_create_update_flag = 'U' AND
15172 ( p_organization_rec.credit_score_commentary10 = FND_API.G_MISS_CHAR OR
15173 p_organization_rec.credit_score_commentary10 IS NOT NULL
15174 ) )
15175 THEN
15176 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15177 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary10' );
15178 FND_MSG_PUB.ADD;
15179 x_return_status := FND_API.G_RET_STS_ERROR;
15180 END IF;
15181
15182 IF ( p_create_update_flag = 'C' AND
15183 p_organization_rec.credit_score_date IS NOT NULL AND
15184 p_organization_rec.credit_score_date <> FND_API.G_MISS_DATE )
15185 OR
15186 ( p_create_update_flag = 'U' AND
15187 ( p_organization_rec.credit_score_date = FND_API.G_MISS_DATE OR
15188 p_organization_rec.credit_score_date IS NOT NULL
15189 ) )
15190 THEN
15191 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15192 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_date' );
15193 FND_MSG_PUB.ADD;
15194 x_return_status := FND_API.G_RET_STS_ERROR;
15195 END IF;
15196
15197 IF ( p_create_update_flag = 'C' AND
15198 p_organization_rec.credit_score_incd_default IS NOT NULL AND
15199 p_organization_rec.credit_score_incd_default <> FND_API.G_MISS_NUM )
15200 OR
15201 ( p_create_update_flag = 'U' AND
15202 ( p_organization_rec.credit_score_incd_default = FND_API.G_MISS_NUM OR
15203 p_organization_rec.credit_score_incd_default IS NOT NULL
15204 ) )
15205 THEN
15206 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15207 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_incd_default' );
15208 FND_MSG_PUB.ADD;
15209 x_return_status := FND_API.G_RET_STS_ERROR;
15210 END IF;
15211
15212 IF ( p_create_update_flag = 'C' AND
15213 p_organization_rec.credit_score_natl_percentile IS NOT NULL AND
15214 p_organization_rec.credit_score_natl_percentile <> FND_API.G_MISS_NUM)
15215 OR
15216 ( p_create_update_flag = 'U' AND
15217 ( p_organization_rec.credit_score_natl_percentile = FND_API.G_MISS_NUM OR
15218 p_organization_rec.credit_score_natl_percentile IS NOT NULL
15219 ) )
15220 THEN
15221 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15222 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_natl_percentile' );
15223 FND_MSG_PUB.ADD;
15224 x_return_status := FND_API.G_RET_STS_ERROR;
15225 END IF;
15226
15227 IF ( p_create_update_flag = 'C' AND
15228 p_organization_rec.db_rating IS NOT NULL AND
15229 p_organization_rec.db_rating <> FND_API.G_MISS_CHAR )
15230 OR
15231 ( p_create_update_flag = 'U' AND
15232 ( p_organization_rec.db_rating = FND_API.G_MISS_CHAR OR
15233 p_organization_rec.db_rating IS NOT NULL
15234 ) )
15235 THEN
15236 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15237 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'db_rating' );
15238 FND_MSG_PUB.ADD;
15239 x_return_status := FND_API.G_RET_STS_ERROR;
15240 END IF;
15241
15242 IF ( p_create_update_flag = 'C' AND
15243 p_organization_rec.debarment_ind IS NOT NULL AND
15244 p_organization_rec.debarment_ind <> FND_API.G_MISS_CHAR )
15245 OR
15246 ( p_create_update_flag = 'U' AND
15247 ( p_organization_rec.debarment_ind = FND_API.G_MISS_CHAR OR
15248 p_organization_rec.debarment_ind IS NOT NULL
15249 ) )
15250 THEN
15251 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15252 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'debarment_ind' );
15253 FND_MSG_PUB.ADD;
15254 x_return_status := FND_API.G_RET_STS_ERROR;
15255 END IF;
15256
15257 IF ( p_create_update_flag = 'C' AND
15258 p_organization_rec.debarments_count IS NOT NULL AND
15259 p_organization_rec.debarments_count <> FND_API.G_MISS_NUM )
15260 OR
15261 ( p_create_update_flag = 'U' AND
15262 ( p_organization_rec.debarments_count = FND_API.G_MISS_NUM OR
15263 p_organization_rec.debarments_count IS NOT NULL
15264 ) )
15265 THEN
15266 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15267 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'debarments_count' );
15268 FND_MSG_PUB.ADD;
15269 x_return_status := FND_API.G_RET_STS_ERROR;
15270 END IF;
15271
15272 IF ( p_create_update_flag = 'C' AND
15273 p_organization_rec.debarments_date IS NOT NULL AND
15274 p_organization_rec.debarments_date <> FND_API.G_MISS_DATE )
15275 OR
15276 ( p_create_update_flag = 'U' AND
15277 ( p_organization_rec.debarments_date = FND_API.G_MISS_DATE OR
15278 p_organization_rec.debarments_date IS NOT NULL
15279 ) )
15280 THEN
15281 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15282 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'debarments_date' );
15283 FND_MSG_PUB.ADD;
15284 x_return_status := FND_API.G_RET_STS_ERROR;
15285 END IF;
15286
15287 IF ( p_create_update_flag = 'C' AND
15288 p_organization_rec.high_credit IS NOT NULL AND
15289 p_organization_rec.high_credit <> FND_API.G_MISS_NUM )
15290 OR
15291 ( p_create_update_flag = 'U' AND
15292 ( p_organization_rec.high_credit = FND_API.G_MISS_NUM OR
15293 p_organization_rec.high_credit IS NOT NULL
15294 ) )
15295 THEN
15296 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15297 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'high_credit' );
15298 FND_MSG_PUB.ADD;
15299 x_return_status := FND_API.G_RET_STS_ERROR;
15300 END IF;
15301
15302 IF ( p_create_update_flag = 'C' AND
15303 p_organization_rec.maximum_credit_currency_code IS NOT NULL AND
15304 p_organization_rec.maximum_credit_currency_code <> FND_API.G_MISS_CHAR )
15305 OR
15306 ( p_create_update_flag = 'U' AND
15307 ( p_organization_rec.maximum_credit_currency_code = FND_API.G_MISS_CHAR OR
15308 p_organization_rec.maximum_credit_currency_code IS NOT NULL
15309 ) )
15310 THEN
15311 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15312 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'maximum_credit_currency_code' );
15313 FND_MSG_PUB.ADD;
15314 x_return_status := FND_API.G_RET_STS_ERROR;
15315 END IF;
15316
15317 IF ( p_create_update_flag = 'C' AND
15318 p_organization_rec.maximum_credit_recommendation IS NOT NULL AND
15319 p_organization_rec.maximum_credit_recommendation <> FND_API.G_MISS_NUM)
15320 OR
15321 ( p_create_update_flag = 'U' AND
15322 ( p_organization_rec.maximum_credit_recommendation = FND_API.G_MISS_NUM OR
15323 p_organization_rec.maximum_credit_recommendation IS NOT NULL
15324 ) )
15325 THEN
15326 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15327 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'maximum_credit_recommendation' );
15328 FND_MSG_PUB.ADD;
15329 x_return_status := FND_API.G_RET_STS_ERROR;
15330 END IF;
15331
15332 IF ( p_create_update_flag = 'C' AND
15333 p_organization_rec.paydex_norm IS NOT NULL AND
15334 p_organization_rec.paydex_norm <> FND_API.G_MISS_CHAR )
15335 OR
15336 ( p_create_update_flag = 'U' AND
15337 ( p_organization_rec.paydex_norm = FND_API.G_MISS_CHAR OR
15338 p_organization_rec.paydex_norm IS NOT NULL
15339 ) )
15340 THEN
15341 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15342 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'paydex_norm' );
15343 FND_MSG_PUB.ADD;
15344 x_return_status := FND_API.G_RET_STS_ERROR;
15345 END IF;
15346
15347 IF ( p_create_update_flag = 'C' AND
15348 p_organization_rec.paydex_score IS NOT NULL AND
15349 p_organization_rec.paydex_score <> FND_API.G_MISS_CHAR )
15350 OR
15351 ( p_create_update_flag = 'U' AND
15352 ( p_organization_rec.paydex_score = FND_API.G_MISS_CHAR OR
15353 p_organization_rec.paydex_score IS NOT NULL
15354 ) )
15355 THEN
15356 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15357 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'paydex_score' );
15358 FND_MSG_PUB.ADD;
15359 x_return_status := FND_API.G_RET_STS_ERROR;
15360 END IF;
15361
15362 IF ( p_create_update_flag = 'C' AND
15363 p_organization_rec.paydex_three_months_ago IS NOT NULL AND
15364 p_organization_rec.paydex_three_months_ago <> FND_API.G_MISS_CHAR )
15365 OR
15366 ( p_create_update_flag = 'U' AND
15367 ( p_organization_rec.paydex_three_months_ago = FND_API.G_MISS_CHAR OR
15368 p_organization_rec.paydex_three_months_ago IS NOT NULL
15369 ) )
15370 THEN
15371 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15372 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'paydex_three_months_ago' );
15373 FND_MSG_PUB.ADD;
15374 x_return_status := FND_API.G_RET_STS_ERROR;
15375 END IF;
15376
15377 IF ( p_create_update_flag = 'C' AND
15378 p_organization_rec.failure_score IS NOT NULL AND
15379 p_organization_rec.failure_score <> FND_API.G_MISS_CHAR )
15380 OR
15381 ( p_create_update_flag = 'U' AND
15382 ( p_organization_rec.failure_score = FND_API.G_MISS_CHAR OR
15383 p_organization_rec.failure_score IS NOT NULL
15384 ) )
15385 THEN
15386 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15387 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score' );
15388 FND_MSG_PUB.ADD;
15389 x_return_status := FND_API.G_RET_STS_ERROR;
15390 END IF;
15391
15392 IF ( p_create_update_flag = 'C' AND
15393 p_organization_rec.failure_score_age IS NOT NULL AND
15394 p_organization_rec.failure_score_age <> FND_API.G_MISS_NUM )
15395 OR
15396 ( p_create_update_flag = 'U' AND
15397 ( p_organization_rec.failure_score_age = FND_API.G_MISS_NUM OR
15398 p_organization_rec.failure_score_age IS NOT NULL
15399 ) )
15400 THEN
15401 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15402 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_age' );
15403 FND_MSG_PUB.ADD;
15404 x_return_status := FND_API.G_RET_STS_ERROR;
15405 END IF;
15406
15407 IF ( p_create_update_flag = 'C' AND
15408 p_organization_rec.failure_score_class IS NOT NULL AND
15409 p_organization_rec.failure_score_class <> FND_API.G_MISS_NUM )
15410 OR
15411 ( p_create_update_flag = 'U' AND
15412 ( p_organization_rec.failure_score_class = FND_API.G_MISS_NUM OR
15413 p_organization_rec.failure_score_class IS NOT NULL
15414 ) )
15415 THEN
15416 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15417 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_class' );
15418 FND_MSG_PUB.ADD;
15419 x_return_status := FND_API.G_RET_STS_ERROR;
15420 END IF;
15421
15422 IF ( p_create_update_flag = 'C' AND
15423 p_organization_rec.failure_score_commentary IS NOT NULL AND
15424 p_organization_rec.failure_score_commentary <> FND_API.G_MISS_CHAR )
15425 OR
15426 ( p_create_update_flag = 'U' AND
15427 ( p_organization_rec.failure_score_commentary = FND_API.G_MISS_CHAR OR
15428 p_organization_rec.failure_score_commentary IS NOT NULL
15429 ) )
15430 THEN
15431 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15432 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary' );
15433 FND_MSG_PUB.ADD;
15434 x_return_status := FND_API.G_RET_STS_ERROR;
15435 END IF;
15436
15437 IF ( p_create_update_flag = 'C' AND
15438 p_organization_rec.failure_score_commentary2 IS NOT NULL AND
15439 p_organization_rec.failure_score_commentary2 <> FND_API.G_MISS_CHAR )
15440 OR
15441 ( p_create_update_flag = 'U' AND
15442 ( p_organization_rec.failure_score_commentary2 = FND_API.G_MISS_CHAR OR
15443 p_organization_rec.failure_score_commentary2 IS NOT NULL
15444 ) )
15445 THEN
15446 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15447 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary2' );
15448 FND_MSG_PUB.ADD;
15449 x_return_status := FND_API.G_RET_STS_ERROR;
15450 END IF;
15451
15452 IF ( p_create_update_flag = 'C' AND
15453 p_organization_rec.failure_score_commentary3 IS NOT NULL AND
15454 p_organization_rec.failure_score_commentary3 <> FND_API.G_MISS_CHAR )
15455 OR
15456 ( p_create_update_flag = 'U' AND
15457 ( p_organization_rec.failure_score_commentary3 = FND_API.G_MISS_CHAR OR
15458 p_organization_rec.failure_score_commentary3 IS NOT NULL
15459 ) )
15460 THEN
15461 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15462 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary3' );
15463 FND_MSG_PUB.ADD;
15464 x_return_status := FND_API.G_RET_STS_ERROR;
15465 END IF;
15466
15467 IF ( p_create_update_flag = 'C' AND
15468 p_organization_rec.failure_score_commentary4 IS NOT NULL AND
15469 p_organization_rec.failure_score_commentary4 <> FND_API.G_MISS_CHAR )
15470 OR
15471 ( p_create_update_flag = 'U' AND
15472 ( p_organization_rec.failure_score_commentary4 = FND_API.G_MISS_CHAR OR
15473 p_organization_rec.failure_score_commentary4 IS NOT NULL
15474 ) )
15475 THEN
15476 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15477 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary4' );
15478 FND_MSG_PUB.ADD;
15479 x_return_status := FND_API.G_RET_STS_ERROR;
15480 END IF;
15481
15482 IF ( p_create_update_flag = 'C' AND
15483 p_organization_rec.failure_score_commentary5 IS NOT NULL AND
15484 p_organization_rec.failure_score_commentary5 <> FND_API.G_MISS_CHAR )
15485 OR
15486 ( p_create_update_flag = 'U' AND
15487 ( p_organization_rec.failure_score_commentary5 = FND_API.G_MISS_CHAR OR
15488 p_organization_rec.failure_score_commentary5 IS NOT NULL
15489 ) )
15490 THEN
15491 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15492 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary5' );
15493 FND_MSG_PUB.ADD;
15494 x_return_status := FND_API.G_RET_STS_ERROR;
15495 END IF;
15496
15497 IF ( p_create_update_flag = 'C' AND
15498 p_organization_rec.failure_score_commentary6 IS NOT NULL AND
15499 p_organization_rec.failure_score_commentary6 <> FND_API.G_MISS_CHAR )
15500 OR
15501 ( p_create_update_flag = 'U' AND
15502 ( p_organization_rec.failure_score_commentary6 = FND_API.G_MISS_CHAR OR
15503 p_organization_rec.failure_score_commentary6 IS NOT NULL
15504 ) )
15505 THEN
15506 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15507 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary6' );
15508 FND_MSG_PUB.ADD;
15509 x_return_status := FND_API.G_RET_STS_ERROR;
15510 END IF;
15511
15512 IF ( p_create_update_flag = 'C' AND
15513 p_organization_rec.failure_score_commentary7 IS NOT NULL AND
15514 p_organization_rec.failure_score_commentary7 <> FND_API.G_MISS_CHAR )
15515 OR
15516 ( p_create_update_flag = 'U' AND
15517 ( p_organization_rec.failure_score_commentary7 = FND_API.G_MISS_CHAR OR
15518 p_organization_rec.failure_score_commentary7 IS NOT NULL
15519 ) )
15520 THEN
15521 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15522 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary7' );
15523 FND_MSG_PUB.ADD;
15524 x_return_status := FND_API.G_RET_STS_ERROR;
15525 END IF;
15526
15527 IF ( p_create_update_flag = 'C' AND
15528 p_organization_rec.failure_score_commentary8 IS NOT NULL AND
15529 p_organization_rec.failure_score_commentary8 <> FND_API.G_MISS_CHAR )
15530 OR
15531 ( p_create_update_flag = 'U' AND
15532 ( p_organization_rec.failure_score_commentary8 = FND_API.G_MISS_CHAR OR
15533 p_organization_rec.failure_score_commentary8 IS NOT NULL
15534 ) )
15535 THEN
15536 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15537 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary8' );
15538 FND_MSG_PUB.ADD;
15539 x_return_status := FND_API.G_RET_STS_ERROR;
15540 END IF;
15541
15542 IF ( p_create_update_flag = 'C' AND
15543 p_organization_rec.failure_score_commentary9 IS NOT NULL AND
15544 p_organization_rec.failure_score_commentary9 <> FND_API.G_MISS_CHAR )
15545 OR
15546 ( p_create_update_flag = 'U' AND
15547 ( p_organization_rec.failure_score_commentary9 = FND_API.G_MISS_CHAR OR
15548 p_organization_rec.failure_score_commentary9 IS NOT NULL
15549 ) )
15550 THEN
15551 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15552 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary9' );
15553 FND_MSG_PUB.ADD;
15554 x_return_status := FND_API.G_RET_STS_ERROR;
15555 END IF;
15556
15557 IF ( p_create_update_flag = 'C' AND
15558 p_organization_rec.failure_score_commentary10 IS NOT NULL AND
15559 p_organization_rec.failure_score_commentary10 <> FND_API.G_MISS_CHAR )
15560 OR
15561 ( p_create_update_flag = 'U' AND
15562 ( p_organization_rec.failure_score_commentary10 = FND_API.G_MISS_CHAR OR
15563 p_organization_rec.failure_score_commentary10 IS NOT NULL
15564 ) )
15565 THEN
15566 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15567 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary10' );
15568 FND_MSG_PUB.ADD;
15569 x_return_status := FND_API.G_RET_STS_ERROR;
15570 END IF;
15571
15572 IF ( p_create_update_flag = 'C' AND
15573 p_organization_rec.failure_score_date IS NOT NULL AND
15574 p_organization_rec.failure_score_date <> FND_API.G_MISS_DATE )
15575 OR
15576 ( p_create_update_flag = 'U' AND
15577 ( p_organization_rec.failure_score_date = FND_API.G_MISS_DATE OR
15578 p_organization_rec.failure_score_date IS NOT NULL
15579 ) )
15580 THEN
15581 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15582 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_date' );
15583 FND_MSG_PUB.ADD;
15584 x_return_status := FND_API.G_RET_STS_ERROR;
15585 END IF;
15586
15587 IF ( p_create_update_flag = 'C' AND
15588 p_organization_rec.failure_score_incd_default IS NOT NULL AND
15589 p_organization_rec.failure_score_incd_default <> FND_API.G_MISS_NUM )
15590 OR
15591 ( p_create_update_flag = 'U' AND
15592 ( p_organization_rec.failure_score_incd_default = FND_API.G_MISS_NUM OR
15593 p_organization_rec.failure_score_incd_default IS NOT NULL
15594 ) )
15595 THEN
15596 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15597 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_incd_default' );
15598 FND_MSG_PUB.ADD;
15599 x_return_status := FND_API.G_RET_STS_ERROR;
15600 END IF;
15601
15602 IF ( p_create_update_flag = 'C' AND
15603 p_organization_rec.failure_score_natnl_percentile IS NOT NULL AND
15604 p_organization_rec.failure_score_natnl_percentile <> FND_API.G_MISS_NUM)
15605 OR
15606 ( p_create_update_flag = 'U' AND
15607 ( p_organization_rec.failure_score_natnl_percentile = FND_API.G_MISS_NUM OR
15608 p_organization_rec.failure_score_natnl_percentile IS NOT NULL
15609 ) )
15610 THEN
15611 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15612 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_natnl_percentile' );
15613 FND_MSG_PUB.ADD;
15614 x_return_status := FND_API.G_RET_STS_ERROR;
15615 END IF;
15616
15617 IF ( p_create_update_flag = 'C' AND
15618 p_organization_rec.failure_score_override_code IS NOT NULL AND
15619 p_organization_rec.failure_score_override_code <> FND_API.G_MISS_CHAR)
15620 OR
15621 ( p_create_update_flag = 'U' AND
15622 ( p_organization_rec.failure_score_override_code = FND_API.G_MISS_CHAR OR
15623 p_organization_rec.failure_score_override_code IS NOT NULL
15624 ) )
15625 THEN
15626 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15627 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_override_code' );
15628 FND_MSG_PUB.ADD;
15629 x_return_status := FND_API.G_RET_STS_ERROR;
15630 END IF;
15631
15632 IF ( p_create_update_flag = 'C' AND
15633 p_organization_rec.global_failure_score IS NOT NULL AND
15634 p_organization_rec.global_failure_score <> FND_API.G_MISS_CHAR)
15635 OR
15636 ( p_create_update_flag = 'U' AND
15637 ( p_organization_rec.global_failure_score = FND_API.G_MISS_CHAR OR
15638 p_organization_rec.global_failure_score IS NOT NULL
15639 ) )
15640 THEN
15641 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15642 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'global_failure_score' );
15643 FND_MSG_PUB.ADD;
15644 x_return_status := FND_API.G_RET_STS_ERROR;
15645 END IF;
15646
15647 -- Debug info.
15648 /*IF G_DEBUG THEN
15649 HZ_UTILITY_V2PUB.debug ( 'validate_org_nonsupport_column (-)' );
15650 END IF;
15651 */
15652 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
15653 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_org_nonsupport_column (-)',
15654 p_msg_level=>fnd_log.level_procedure);
15655 END IF;
15656
15657 END validate_org_nonsupport_column;
15658
15659 PROCEDURE validate_rel_code (
15660 p_forward_rel_code IN VARCHAR2,
15661 p_backward_rel_code IN VARCHAR2,
15662 p_forward_role IN VARCHAR2,
15663 p_backward_role IN VARCHAR2,
15664 x_return_status IN OUT NOCOPY VARCHAR2
15665 ) IS
15666
15667 l_error1 BOOLEAN := FALSE;
15668 l_error2 BOOLEAN := FALSE;
15669
15670 BEGIN
15671
15672 IF p_forward_rel_code = p_backward_rel_code THEN
15673 IF p_forward_role <> p_backward_role THEN
15674 fnd_message.set_name('AR', 'HZ_INVALID_ROLE1');
15675 fnd_msg_pub.add;
15676 x_return_status := FND_API.G_RET_STS_ERROR;
15677 END IF;
15678 END IF;
15679
15680 IF p_forward_rel_code <> p_backward_rel_code THEN
15681 IF p_forward_role = p_backward_role THEN
15682 fnd_message.set_name('AR', 'HZ_INVALID_ROLE2');
15683 fnd_msg_pub.add;
15684 x_return_status := FND_API.G_RET_STS_ERROR;
15685 END IF;
15686 END IF;
15687
15688 END validate_rel_code;
15689
15690 /**
15691 * PROCEDURE validate_financial_report
15692 *
15693 * DESCRIPTION
15694 * Validates financial report record. Checks for
15695 * uniqueness
15696 * lookup types
15697 * mandatory columns
15698 * non-updateable fields
15699 * foreign key validations
15700 * other validations
15701 *
15702 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
15703 *
15704 * ARGUMENTS
15705 * IN:
15706 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
15707 * p_financial_report_rec Financial report record.
15708 * p_rowid Rowid of the record (used only in update mode).
15709 * IN/OUT:
15710 * x_return_status Return status after the call. The status can
15711 * be FND_API.G_RET_STS_SUCCESS (success),
15712 * fnd_api.g_ret_sts_error (error),
15713 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
15714 *
15715 * NOTES
15716 *
15717 * MODIFICATION HISTORY
15718 *
15719 * 29-JAN-2003 Sreedhar Mohan o Created.
15720 * 11-MAR-2003 Sreedhar Mohan o Bug 2829046: Changed the message token values.
15721 * 10-OCT-2003 Rajib Ranjan Borah o Bug Number 3148753.Commented old validation
15722 * which did not take care of the case when both
15723 * issue_period and report_start_date are not
15724 * provided.Furthermore new validation does the check
15725 * only if p_create_update_flag='C' as both these
15726 * fields are non_updateable.
15727 * 23-MAR-2004 Rajib Ranjan Borah o Bug 3456205.Validation for party_id being a foreing
15728 * key of HZ_PARTIES and party_type should be
15729 * 'ORGANIZATION', are performed using a single cursor now.
15730 * o Validation on report_start_date, report_end_date,
15731 * party_id will be performed only during creation as these
15732 * are non-updateable columns.
15733 * o Removed unused local variables.
15734 * 01-APR-2004 Rajib Ranjan Borah o Bug 3539597.Commented out changes incorporated in fix
15735 * 3200870. Issued_period and report_start_date cannot be
15736 * both null or not null. Fix 3200870 had added
15737 * date_report_issued to the list of attributes which cannot
15738 * be NULL at the same time.
15739 * o Modified cursor c_unique_financial_report_rec as it used
15740 * fail earlier when issued_period was null.Truncated the
15741 * date parameters.
15742 * 01-03-2005 Rajib Ranjan Borah o SSM SST Integration and Extension.
15743 * Actual_content_source will be validated against HZ_ORIG_SYSTEMS_B
15744 * in HZ_MIXNM_UTILITY.ValidateContentSource instead of
15745 * being validated against lookup OCNTENT_SOURCE_TYPE.
15746 */
15747
15748 PROCEDURE validate_financial_report(
15749 p_create_update_flag IN VARCHAR2,
15750 p_financial_report_rec IN HZ_ORGANIZATION_INFO_V2PUB.FINANCIAL_REPORT_REC_TYPE,
15751 p_rowid IN ROWID,
15752 x_return_status IN OUT NOCOPY VARCHAR2
15753 ) IS
15754
15755 CURSOR c_dup_financial_report_id (p_financial_report_id IN NUMBER) IS
15756 SELECT 'Y'
15757 FROM hz_financial_reports hfr
15758 WHERE hfr.financial_report_id = p_financial_report_id;
15759
15760 CURSOR c_unique_financial_report_rec ( p_party_id IN NUMBER,
15761 p_type_of_financial_report IN VARCHAR2,
15762 p_document_reference IN VARCHAR2,
15763 p_date_report_issued IN DATE,
15764 p_issued_period IN VARCHAR2,
15765 p_report_start_date IN DATE,
15766 p_report_end_date IN DATE,
15767 p_actual_content_source IN VARCHAR2) IS
15768 SELECT 'Y'
15769 FROM hz_financial_reports
15770 WHERE party_id = p_party_id
15771 AND nvl(type_of_financial_report, 'XXX') = nvl(p_type_of_financial_report, 'XXX')
15772 AND nvl(document_reference, 'XXX') = nvl(p_document_reference, 'XXX')
15773 AND actual_content_source = nvl(p_actual_content_source,'USER_ENTERED')
15774 AND trunc(nvl(date_report_issued, to_date('12/31/4712','MM/DD/YYYY'))) =
15775 trunc(nvl(p_date_report_issued, to_date('12/31/4712','MM/DD/YYYY')))
15776 AND nvl(issued_period, to_date('12/31/4712','MM/DD/YYYY')) =
15777 nvl( p_issued_period, to_date('12/31/4712','MM/DD/YYYY'))
15778 AND trunc(nvl(report_start_date, to_date('12/31/4712','MM/DD/YYYY'))) =
15779 trunc(nvl(p_report_start_date, to_date('12/31/4712','MM/DD/YYYY')))
15780 AND trunc(nvl(report_end_date, to_date('12/31/4712','MM/DD/YYYY'))) =
15781 trunc(nvl(p_report_end_date, to_date('12/31/4712','MM/DD/YYYY')))
15782 ;
15783
15784 CURSOR c_partytype IS
15785 SELECT hp.party_type
15786 FROM hz_parties hp
15787 WHERE hp.party_id = p_financial_report_rec.party_id;
15788
15789 l_party_type VARCHAR2(30);
15790 l_financial_report_id hz_financial_reports.financial_report_id%TYPE;
15791 l_document_reference hz_financial_reports.document_reference%TYPE;
15792 l_date_report_issued hz_financial_reports.date_report_issued%TYPE;
15793 l_issued_period hz_financial_reports.issued_period%TYPE;
15794 l_party_id hz_financial_reports.party_id%TYPE;
15795 -- l_requiring_authority hz_financial_reports.requiring_authority%TYPE;
15796 l_type_of_financial_report hz_financial_reports.type_of_financial_report%TYPE;
15797 l_report_start_date hz_financial_reports.report_start_date%TYPE;
15798 l_report_end_date hz_financial_reports.report_end_date%TYPE;
15799 -- l_audit_ind hz_financial_reports.audit_ind%TYPE;
15800 -- l_consolidated_ind hz_financial_reports.consolidated_ind%TYPE;
15801 -- l_estimated_ind hz_financial_reports.estimated_ind%TYPE;
15802 -- l_fiscal_ind hz_financial_reports.fiscal_ind%TYPE;
15803 -- l_final_ind hz_financial_reports.final_ind%TYPE;
15804 -- l_forecast_ind hz_financial_reports.forecast_ind%TYPE;
15805 -- l_opening_ind hz_financial_reports.opening_ind%TYPE;
15806 -- l_proforma_ind hz_financial_reports.proforma_ind%TYPE;
15807 -- l_qualified_ind hz_financial_reports.qualified_ind%TYPE;
15808 -- l_restated_ind hz_financial_reports.restated_ind%TYPE;
15809 -- l_signed_by_principals_ind hz_financial_reports.signed_by_principals_ind%TYPE;
15810 -- l_trial_balance_ind hz_financial_reports.trial_balance_ind%TYPE;
15811 -- l_unbalanced_ind hz_financial_reports.unbalanced_ind%TYPE;
15812 l_content_source_type hz_financial_reports.content_source_type%TYPE;
15813 l_actual_content_source hz_financial_reports.actual_content_source%TYPE;
15814 -- l_request_id hz_financial_reports.request_id%TYPE;
15815 l_status hz_financial_reports.status%TYPE;
15816 l_created_by_module hz_financial_reports.created_by_module%TYPE;
15817
15818 -- l_temp_issued_period hz_financial_reports.issued_period%TYPE;
15819 -- l_temp_report_start_date hz_financial_reports.report_start_date%TYPE;
15820 -- l_temp_report_end_date hz_financial_reports.report_end_date%TYPE;
15821 l_dummy VARCHAR2(1);
15822 l_debug_prefix VARCHAR2(30) := '';
15823
15824 BEGIN
15825
15826 --enable_debug;
15827
15828 -- Debug info.
15829 /*IF g_debug THEN
15830 hz_utility_v2pub.debug ('validate_financial_report (+)');
15831 END IF;
15832 */
15833 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
15834 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_financial_report (+)',
15835 p_msg_level=>fnd_log.level_procedure);
15836 END IF;
15837
15838
15839 -- do the query to get old values for update
15840
15841 -- Bug 3456205. Some of the local variables populated by this select statement were not
15842 -- used at all and have been commented out.
15843
15844 IF p_create_update_flag = 'U'
15845 THEN
15846 SELECT FINANCIAL_REPORT_ID,
15847 PARTY_ID,
15848 DOCUMENT_REFERENCE,
15849 DATE_REPORT_ISSUED,
15850 ISSUED_PERIOD,
15851 -- REQUIRING_AUTHORITY,
15852 TYPE_OF_FINANCIAL_REPORT,
15853 REPORT_START_DATE,
15854 REPORT_END_DATE,
15855 -- AUDIT_IND,
15856 -- CONSOLIDATED_IND,
15857 -- ESTIMATED_IND,
15858 -- FISCAL_IND,
15859 -- FINAL_IND,
15860 -- FORECAST_IND,
15861 -- OPENING_IND,
15862 -- PROFORMA_IND,
15863 -- QUALIFIED_IND,
15864 -- RESTATED_IND,
15865 -- SIGNED_BY_PRINCIPALS_IND,
15866 -- TRIAL_BALANCE_IND,
15867 -- UNBALANCED_IND,
15868 CONTENT_SOURCE_TYPE,
15869 ACTUAL_CONTENT_SOURCE,
15870 -- REQUEST_ID,
15871 STATUS,
15872 CREATED_BY_MODULE
15873 INTO l_financial_report_id,
15874 l_party_id,
15875 l_document_reference,
15876 l_date_report_issued,
15877 l_issued_period,
15878 -- l_requiring_authority,
15879 l_type_of_financial_report,
15880 l_report_start_date,
15881 l_report_end_date,
15882 -- l_audit_ind,
15883 -- l_consolidated_ind,
15884 -- l_estimated_ind,
15885 -- l_fiscal_ind,
15886 -- l_final_ind,
15887 -- l_forecast_ind,
15888 -- l_opening_ind,
15889 -- l_proforma_ind,
15890 -- l_qualified_ind,
15891 -- l_restated_ind,
15892 -- l_signed_by_principals_ind,
15893 -- l_trial_balance_ind,
15894 -- l_unbalanced_ind,
15895 l_content_source_type,
15896 l_actual_content_source,
15897 -- l_request_id,
15898 l_status,
15899 l_created_by_module
15900 FROM HZ_FINANCIAL_REPORTS
15901 WHERE ROWID = p_rowid;
15902 END IF;
15903
15904 -------------------------------------
15905 -- validation for financial_report_id
15906 -------------------------------------
15907 /****Logical APIs - validation not required****/
15908 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
15909 --check for unique financial_report_id
15910 IF p_create_update_flag = 'C' THEN
15911 IF p_financial_report_rec.financial_report_id IS NOT NULL AND
15912 p_financial_report_rec.financial_report_id <> fnd_api.g_miss_num
15913 THEN
15914 OPEN c_dup_financial_report_id (p_financial_report_rec.financial_report_id);
15915 FETCH c_dup_financial_report_id INTO l_dummy;
15916
15917 -- key is not unique, push an error onto the stack.
15918 IF NVL(c_dup_financial_report_id%FOUND, FALSE) THEN
15919 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
15920 fnd_message.set_token('COLUMN', 'financial_report_id');
15921 fnd_msg_pub.add;
15922 x_return_status := fnd_api.g_ret_sts_error;
15923 END IF;
15924 CLOSE c_dup_financial_report_id;
15925
15926 /*IF g_debug THEN
15927 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
15928 'check that financial_report_id is unique during creation. ' ||
15929 ' x_return_status = ' || x_return_status, l_debug_prefix);
15930 END IF;
15931 */
15932 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
15933 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'check that financial_report_id is unique during creation. ' ||
15934 ' x_return_status = ' || x_return_status,
15935 p_msg_level=>fnd_log.level_statement);
15936 END IF;
15937
15938
15939 END IF;
15940 END IF;
15941
15942 /*IF g_debug THEN
15943 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
15944 '(+) after validate financial_report_id ... ' ||
15945 'x_return_status = ' || x_return_status, l_debug_prefix);
15946 END IF;
15947 */
15948 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
15949 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate financial_report_id ... ' ||
15950 'x_return_status = ' || x_return_status,
15951 p_msg_level=>fnd_log.level_statement);
15952 END IF;
15953
15954
15955 -- financial_report_id is non-updateable field
15956 IF p_create_update_flag = 'U' THEN
15957 validate_nonupdateable (
15958 p_column => 'financial_report_id',
15959 p_column_value => p_financial_report_rec.financial_report_id,
15960 p_old_column_value => l_financial_report_id,
15961 x_return_status => x_return_status);
15962
15963 /*IF g_debug THEN
15964 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
15965 'financial_report_id is non-updateable field. ' ||
15966 'x_return_status = ' || x_return_status, l_debug_prefix);
15967 END IF;
15968 */
15969 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
15970 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'financial_report_id is non-updateable field. ' ||
15971 'x_return_status = ' || x_return_status,
15972 p_msg_level=>fnd_log.level_statement);
15973 END IF;
15974
15975
15976 END IF;
15977 END IF;
15978
15979 --------------------------
15980 -- validation for party_id
15981 --------------------------
15982 /****Logical APIs - validation not required****/
15983 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
15984 -- party_id is mandatory field
15985 IF p_create_update_flag = 'C' THEN
15986 validate_mandatory (
15987 p_create_update_flag => p_create_update_flag,
15988 p_column => 'party_id',
15989 p_column_value => p_financial_report_rec.party_id,
15990 x_return_status => x_return_status);
15991
15992 /*IF g_debug THEN
15993 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
15994 'party_id is mandatory field. ' ||
15995 'x_return_status = ' || x_return_status, l_debug_prefix);
15996 END IF;
15997 */
15998 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
15999 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is mandatory field. ' ||
16000 'x_return_status = ' || x_return_status,
16001 p_msg_level=>fnd_log.level_statement);
16002 END IF;
16003
16004
16005 END IF;
16006
16007 -- party_id is non-updateable field
16008 IF p_create_update_flag = 'U' THEN
16009 validate_nonupdateable (
16010 p_column => 'party_id',
16011 p_column_value => p_financial_report_rec.party_id,
16012 p_old_column_value => l_party_id,
16013 x_return_status => x_return_status);
16014
16015 /*IF g_debug THEN
16016 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16017 'party_id is non-updateable field. ' ||
16018 'x_return_status = ' || x_return_status, l_debug_prefix);
16019 END IF;
16020 */
16021 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16022 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable field. ' ||
16023 'x_return_status = ' || x_return_status,
16024 p_msg_level=>fnd_log.level_statement);
16025 END IF;
16026
16027
16028 END IF;
16029 /*
16030 -- party_id has foreign key HZ_PARTIES.PARTY_ID
16031 IF p_create_update_flag = 'C'
16032 AND
16033 p_financial_report_rec.party_id IS NOT NULL
16034 AND
16035 p_financial_report_rec.party_id <> fnd_api.g_miss_num
16036 THEN
16037 BEGIN
16038 SELECT 'Y'
16039 INTO l_dummy
16040 FROM hz_parties p
16041 WHERE p.party_id = p_financial_report_rec.party_id;
16042
16043 EXCEPTION
16044 WHEN NO_DATA_FOUND THEN
16045 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
16046 fnd_message.set_token('FK', 'party_id');
16047 fnd_message.set_token('COLUMN', 'party_id');
16048 fnd_message.set_token('TABLE', 'hz_parties');
16049 fnd_msg_pub.add;
16050 x_return_status := fnd_api.g_ret_sts_error;
16051 END;
16052 */
16053 /*IF g_debug THEN
16054 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16055 'party_id has foreign key hz_parties.party_id. ' ||
16056 'x_return_status = ' || x_return_status, l_debug_prefix);
16057 END IF;
16058 */
16059 /* IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16060 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
16061 'x_return_status = ' || x_return_status,
16062 p_msg_level=>fnd_log.level_statement);
16063 END IF;
16064
16065
16066 END IF;
16067 */
16068 -- make sure that the l_party_id belongs to an organization.
16069 IF p_create_update_flag = 'C'
16070 /* Bug 3456205 Party_id is not updateable.
16071 OR
16072 p_create_update_flag = 'U'
16073 If the value is NULL / G_MISS, error should be thrown in validate_mandatory only.
16074 */
16075 AND p_financial_report_rec.party_id IS NOT NULL
16076 AND p_financial_report_rec.party_id <> FND_API.G_MISS_NUM
16077 THEN
16078 --Bug 2886268: Added the following code instead of calling check_organization
16079 OPEN c_partytype;
16080
16081 FETCH c_partytype INTO l_party_type;
16082 IF c_partytype%FOUND
16083 THEN
16084 IF rtrim(ltrim(l_party_type)) <> 'ORGANIZATION'
16085 THEN
16086 -- This is not an organization. Hence throw error
16087 fnd_message.set_name('AR', 'HZ_API_INVALID_PARTY_TYPE');
16088 fnd_message.set_token('PARTY_ID', TO_CHAR(p_financial_report_rec.party_id));
16089 fnd_message.set_token('TYPE', 'ORGANIZATION');
16090 fnd_msg_pub.add;
16091 x_return_status := fnd_api.g_ret_sts_error;
16092 END IF;
16093 ELSE -- 3456205
16094 -- party_id has foreign key HZ_PARTIES.PARTY_ID
16095 -- However since no record found in HZ_PARTIES, therefore throw error.
16096 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
16097 fnd_message.set_token('FK', 'party_id');
16098 fnd_message.set_token('COLUMN', 'party_id');
16099 fnd_message.set_token('TABLE', 'hz_parties');
16100 fnd_msg_pub.add;
16101 x_return_status := fnd_api.g_ret_sts_error;
16102 END IF;
16103 CLOSE c_partytype;
16104 --Bug 2886268: Commented out the following call as it is throwing erroneous message
16105 --check_organization(p_financial_report_rec.party_id, x_return_status);
16106 END IF;
16107 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16108 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
16109 'x_return_status = ' || x_return_status,
16110 p_msg_level=>fnd_log.level_statement);
16111 END IF;
16112 END IF;
16113
16114 -------------------------------
16115 -- validation for issued_period
16116 -------------------------------
16117 --Either issued_period or report_start_date must be provided (not both).
16118 --Added database values when passed with null values
16119
16120 --Bug Number 3148753.Commented the validation code as it only checked for the case
16121 --when both the values are set.
16122 --There is no validation for the case when both the values are not provided.
16123
16124 --Furthermore as both the fields are non-updateable, therefore it is enough to check
16125 --during creation that only one of the fields is being provided.
16126
16127 /*
16128 |IF ((nvl(p_financial_report_rec.issued_period, l_issued_period) IS NOT NULL AND
16129 | nvl(p_financial_report_rec.issued_period, l_issued_period) <> fnd_api.g_miss_char) AND
16130 | (nvl(p_financial_report_rec.report_start_date, l_report_start_date) IS NOT NULL AND
16131 | nvl(p_financial_report_rec.report_start_date, l_report_start_date) <> fnd_api.g_miss_date))
16132 |THEN
16133 | fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION2');
16134 | fnd_message.set_token('COLUMN1', 'issued_period');
16135 | fnd_message.set_token('COLUMN2', 'report_start_date');
16136 | fnd_msg_pub.add;
16137 | x_return_status := fnd_api.g_ret_sts_error;
16138 |END IF;
16139 */
16140
16141 --Bug Number 3148753.As both the fields are non-updateable,therefore validation
16142 --during creation is enough.
16143
16144
16145 IF(p_create_update_flag='C')
16146 THEN
16147 IF (
16148 (--Both the values are not set during creation.
16149 (
16150 p_financial_report_rec.issued_period IS NULL
16151 OR
16152 p_financial_report_rec.issued_period = fnd_api.g_miss_char
16153 )
16154 AND
16155 (
16156 p_financial_report_rec.report_start_date IS NULL
16157 OR
16158 p_financial_report_rec.report_start_date = fnd_api.g_miss_date
16159 )
16160 /* Bug 3539597.Commented out changes incorporated in fix 3200870.
16161 | AND
16162 | (
16163 | p_financial_report_rec.DATE_REPORT_ISSUED IS NULL
16164 | OR
16165 | p_financial_report_rec.DATE_REPORT_ISSUED = fnd_api.g_miss_date
16166 | )
16167 */
16168 )
16169 OR
16170 (--Both the values are provided during creation
16171 (
16172 p_financial_report_rec.issued_period IS NOT NULL
16173 AND
16174 p_financial_report_rec.issued_period <> fnd_api.g_miss_char
16175 )
16176 AND
16177 (
16178 p_financial_report_rec.report_start_date IS NOT NULL
16179 AND
16180 p_financial_report_rec.report_start_date <> fnd_api.g_miss_date
16181 )
16182 )
16183 )
16184 THEN
16185 fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION2');
16186 fnd_message.set_token('COLUMN1', 'issued_period');
16187 fnd_message.set_token('COLUMN2', 'report_start_date');
16188 fnd_msg_pub.add;
16189 x_return_status := fnd_api.g_ret_sts_error;
16190 END IF;
16191 END IF;
16192
16193 -----------------------------------
16194 -- validation for report_start_date
16195 -----------------------------------
16196
16197 -- bug 4417943.
16198 IF p_create_update_flag = 'C' /*Bug 3456205 Both these columns are non-updateable */
16199 AND (
16200 (p_financial_report_rec.report_start_date IS NOT NULL
16201 AND p_financial_report_rec.report_start_date <> fnd_api.g_miss_date
16202 AND (p_financial_report_rec.report_end_date IS NULL OR
16203 p_financial_report_rec.report_end_date = fnd_api.g_miss_date )
16204 ) OR
16205 (p_financial_report_rec.report_end_date IS NOT NULL
16206 AND p_financial_report_rec.report_end_date <> fnd_api.g_miss_date
16207 AND (p_financial_report_rec.report_start_date IS NULL OR
16208 p_financial_report_rec.report_start_date = fnd_api.g_miss_date)
16209 ))
16210 THEN
16211 fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION3');
16212 fnd_message.set_token('COLUMN1', 'report_start_date');
16213 fnd_message.set_token('COLUMN2', 'report_end_date');
16214 fnd_msg_pub.add;
16215 x_return_status := fnd_api.g_ret_sts_error;
16216 END IF;
16217
16218 --Bug 2888670: Modified the end_date validation as per V1 validation.
16219 --If report_start_date is provided, then it must be less than or equal
16220 --to report_end_date.
16221
16222 IF p_create_update_flag = 'C' THEN
16223 IF p_financial_report_rec.report_end_date is NOT NULL AND
16224 p_financial_report_rec.report_end_date <> FND_API.G_MISS_DATE THEN
16225 if (p_financial_report_rec.report_end_date
16226 < p_financial_report_rec.report_start_date
16227 ) THEN
16228 FND_MESSAGE.SET_NAME('AR', 'HZ_API_START_DATE_GREATER');
16229 FND_MSG_PUB.ADD;
16230 x_return_status := FND_API.G_RET_STS_ERROR;
16231 end if;
16232 END IF;
16233 END IF;
16234
16235 /* Bug 3456205. As both report_start_date, report_end_date are non-updateable,
16236 therefore this validation need not be performed during updation.
16237
16238 -- compare end_date with database data and user passed data.
16239 ELSIF p_create_update_flag = 'U' THEN
16240 if (p_financial_report_rec.report_end_date is NOT NULL AND
16241 p_financial_report_rec.report_end_date <> FND_API.G_MISS_DATE) THEN
16242 if p_financial_report_rec.report_start_date is NOT NULL AND
16243 p_financial_report_rec.report_start_date <> FND_API.G_MISS_DATE then
16244 if p_financial_report_rec.report_end_date
16245 < p_financial_report_rec.report_start_date then
16246 FND_MESSAGE.SET_NAME('AR', 'HZ_API_START_DATE_GREATER');
16247 FND_MSG_PUB.ADD;
16248 x_return_status := FND_API.G_RET_STS_ERROR;
16249
16250 end if;
16251 elsif ( p_financial_report_rec.report_end_date < l_report_start_date OR
16252 l_report_start_date is NULL) then
16253 FND_MESSAGE.SET_NAME('AR', 'HZ_API_START_DATE_GREATER');
16254 FND_MSG_PUB.ADD;
16255 x_return_status := FND_API.G_RET_STS_ERROR;
16256
16257 end if;
16258 elsif (p_financial_report_rec.report_start_date is NOT NULL AND
16259 p_financial_report_rec.report_start_date <> FND_API.G_MISS_DATE) THEN
16260 if l_report_end_date < p_financial_report_rec.report_start_date then
16261 FND_MESSAGE.SET_NAME('AR', 'HZ_API_START_DATE_GREATER');
16262 FND_MSG_PUB.ADD;
16263 x_return_status := FND_API.G_RET_STS_ERROR;
16264
16265 end if;
16266 end if;
16267
16268 END IF;*/
16269
16270 ---------------------------------------
16271 --Bug 2868953: Unique record Validation
16272 ---------------------------------------
16273 IF p_create_update_flag = 'C' THEN
16274 OPEN c_unique_financial_report_rec ( p_financial_report_rec.party_id,
16275 p_financial_report_rec.type_of_financial_report,
16276 p_financial_report_rec.document_reference,
16277 p_financial_report_rec.date_report_issued,
16278 p_financial_report_rec.issued_period,
16279 p_financial_report_rec.report_start_date,
16280 p_financial_report_rec.report_end_date,
16281 p_financial_report_rec.actual_content_source);
16282
16283 FETCH c_unique_financial_report_rec INTO l_dummy;
16284
16285 -- combination key is not unique, push an error onto the stack.
16286 IF NVL(c_unique_financial_report_rec%FOUND, FALSE) THEN
16287 fnd_message.set_name('AR', 'HZ_API_DUP_FIN_REPORT_REC');
16288 fnd_msg_pub.add;
16289 x_return_status := fnd_api.g_ret_sts_error;
16290 END IF;
16291 CLOSE c_unique_financial_report_rec;
16292
16293 /*IF g_debug THEN
16294 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16295 'The following column combination should be unique:' ||
16296 ' PARTY_ID, FINANCIAL_REPORT_TYPE, DOCUMENT_REFERENCE, DATE_REPORT_ISSUED, ' ||
16297 ' (ISSUED_PERIOD or REPORT_START_DATE and REPORT_END_DATE).' ||
16298 ' x_return_status = ' || x_return_status, l_debug_prefix);
16299 END IF;
16300 */
16301 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16302 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16303 p_message=>'The following column combination should be unique:' ||
16304 ' PARTY_ID, FINANCIAL_REPORT_TYPE, DOCUMENT_REFERENCE, DATE_REPORT_ISSUED, ' ||
16305 ' (ISSUED_PERIOD or REPORT_START_DATE and REPORT_END_DATE).' ||
16306 ' x_return_status = ' || x_return_status,
16307 p_msg_level=>fnd_log.level_statement);
16308 END IF;
16309
16310 END IF;
16311 -- type_of_financial_report is non-updateable field
16312 IF p_create_update_flag = 'U' THEN
16313 validate_nonupdateable (
16314 p_column => 'type_of_financial_report',
16315 p_column_value => p_financial_report_rec.type_of_financial_report,
16316 p_old_column_value => l_type_of_financial_report,
16317 x_return_status => x_return_status);
16318
16319 /*IF g_debug THEN
16320 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16321 'type_of_financial_report is non-updateable field. ' ||
16322 'x_return_status = ' || x_return_status, l_debug_prefix);
16323 END IF;
16324 */
16325 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16326 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'type_of_financial_report is non-updateable field. ' ||
16327 'x_return_status = ' || x_return_status,
16328 p_msg_level=>fnd_log.level_statement);
16329 END IF;
16330
16331
16332 END IF;
16333 -- document_reference is non-updateable field
16334 IF p_create_update_flag = 'U' THEN
16335 validate_nonupdateable (
16336 p_column => 'document_reference',
16337 p_column_value => p_financial_report_rec.document_reference,
16338 p_old_column_value => l_document_reference,
16339 x_return_status => x_return_status);
16340
16341 /*IF g_debug THEN
16342 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16343 'document_reference is non-updateable field. ' ||
16344 'x_return_status = ' || x_return_status, l_debug_prefix);
16345 END IF;
16346 */
16347 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16348 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'document_reference is non-updateable field. ' ||
16349 'x_return_status = ' || x_return_status,
16350 p_msg_level=>fnd_log.level_statement);
16351 END IF;
16352
16353
16354 END IF;
16355 -- date_report_issued is non-updateable field
16356 IF p_create_update_flag = 'U' THEN
16357 validate_nonupdateable (
16358 p_column => 'date_report_issued',
16359 p_column_value => trunc(p_financial_report_rec.date_report_issued),
16360 p_old_column_value => trunc(l_date_report_issued),
16361 x_return_status => x_return_status);
16362
16363 /*IF g_debug THEN
16364 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16365 'date_report_issued is non-updateable field. ' ||
16366 'x_return_status = ' || x_return_status, l_debug_prefix);
16367 END IF;
16368 */
16369 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16370 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'date_report_issued is non-updateable field. ' ||
16371 'x_return_status = ' || x_return_status,
16372 p_msg_level=>fnd_log.level_statement);
16373 END IF;
16374
16375
16376 END IF;
16377 -- issued_period is non-updateable field
16378 IF p_create_update_flag = 'U' THEN
16379 validate_nonupdateable (
16380 p_column => 'issued_period',
16381 p_column_value => p_financial_report_rec.issued_period,
16382 p_old_column_value => l_issued_period,
16383 x_return_status => x_return_status);
16384
16385 /*IF g_debug THEN
16386 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16387 'issued_period is non-updateable field. ' ||
16388 'x_return_status = ' || x_return_status, l_debug_prefix);
16389 END IF;
16390 */
16391 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16392 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'issued_period is non-updateable field. ' ||
16393 'x_return_status = ' || x_return_status,
16394 p_msg_level=>fnd_log.level_statement);
16395 END IF;
16396
16397
16398 END IF;
16399 -- report_start_date is non-updateable field
16400 IF p_create_update_flag = 'U' THEN
16401 validate_nonupdateable (
16402 p_column => 'report_start_date',
16403 p_column_value => trunc(p_financial_report_rec.report_start_date),
16404 p_old_column_value => trunc(l_report_start_date),
16405 x_return_status => x_return_status);
16406
16407 /*IF g_debug THEN
16408 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16409 'report_start_date is non-updateable field. ' ||
16410 'x_return_status = ' || x_return_status, l_debug_prefix);
16411 END IF;
16412 */
16413 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16414 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'report_start_date is non-updateable field. ' ||
16415 'x_return_status = ' || x_return_status,
16416 p_msg_level=>fnd_log.level_statement);
16417 END IF;
16418
16419
16420 END IF;
16421 -- report_end_date is non-updateable field
16422 IF p_create_update_flag = 'U' THEN
16423 validate_nonupdateable (
16424 p_column => 'report_end_date',
16425 p_column_value => trunc(p_financial_report_rec.report_end_date),
16426 p_old_column_value => trunc(l_report_end_date),
16427 x_return_status => x_return_status);
16428
16429 /*IF g_debug THEN
16430 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16431 'report_end_date is non-updateable field. ' ||
16432 'x_return_status = ' || x_return_status, l_debug_prefix);
16433 END IF;
16434 */
16435 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16436 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'report_end_date is non-updateable field. ' ||
16437 'x_return_status = ' || x_return_status,
16438 p_msg_level=>fnd_log.level_statement);
16439 END IF;
16440
16441
16442 END IF;
16443 ------------------------------------
16444 --Lookup Validations
16445 --validation for audit_ind
16446 ------------------------------------
16447 /****Logical APIs - validation not required****/
16448 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16449 -- audit_ind is lookup code in lookup type YES/NO
16450 validate_lookup (
16451 p_column => 'audit_ind',
16452 p_lookup_type => 'YES/NO',
16453 p_column_value => p_financial_report_rec.audit_ind,
16454 x_return_status => x_return_status);
16455
16456 /*IF g_debug THEN
16457 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16458 'audit_ind should be in lookup YES/NO. ' ||
16459 'x_return_status = ' || x_return_status, l_debug_prefix);
16460 END IF;
16461 */
16462 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16463 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'audit_ind should be in lookup YES/NO. ' ||
16464 'x_return_status = ' || x_return_status,
16465 p_msg_level=>fnd_log.level_statement);
16466 END IF;
16467 END IF;
16468
16469 ----------------------------------
16470 -- validation for consolidated_ind
16471 ----------------------------------
16472 /****Logical APIs - validation not required****/
16473 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16474 -- consolidated_ind is lookup code in lookup type YES/NO
16475 validate_lookup (
16476 p_column => 'consolidated_ind',
16477 p_lookup_type => 'YES/NO',
16478 p_column_value => p_financial_report_rec.consolidated_ind,
16479 x_return_status => x_return_status);
16480
16481 /*IF g_debug THEN
16482 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16483 'consolidated_ind should be in lookup YES/NO. ' ||
16484 'x_return_status = ' || x_return_status, l_debug_prefix);
16485 END IF;
16486 */
16487 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16488 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'consolidated_ind should be in lookup YES/NO. ' ||
16489 'x_return_status = ' || x_return_status,
16490 p_msg_level=>fnd_log.level_statement);
16491 END IF;
16492 END IF;
16493
16494 ------------------------------------
16495 --validation for estimated_ind
16496 ------------------------------------
16497 /****Logical APIs - validation not required****/
16498 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16499 -- estimated_ind is lookup code in lookup type YES/NO
16500 validate_lookup (
16501 p_column => 'estimated_ind',
16502 p_lookup_type => 'YES/NO',
16503 p_column_value => p_financial_report_rec.estimated_ind,
16504 x_return_status => x_return_status);
16505
16506 /*IF g_debug THEN
16507 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16508 'estimated_ind should be in lookup YES/NO. ' ||
16509 'x_return_status = ' || x_return_status, l_debug_prefix);
16510 END IF;
16511 */
16512 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16513 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'estimated_ind should be in lookup YES/NO. ' ||
16514 'x_return_status = ' || x_return_status,
16515 p_msg_level=>fnd_log.level_statement);
16516 END IF;
16517 END IF;
16518
16519 ----------------------------------
16520 -- validation for fiscal_ind
16521 ----------------------------------
16522 /****Logical APIs - validation not required****/
16523 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16524 -- fiscal_ind is lookup code in lookup type YES/NO
16525 validate_lookup (
16526 p_column => 'fiscal_ind',
16527 p_lookup_type => 'YES/NO',
16528 p_column_value => p_financial_report_rec.fiscal_ind,
16529 x_return_status => x_return_status);
16530
16531 /*IF g_debug THEN
16532 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16533 'fiscal_ind should be in lookup YES/NO. ' ||
16534 'x_return_status = ' || x_return_status, l_debug_prefix);
16535 END IF;
16536 */
16537 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16538 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'fiscal_ind should be in lookup YES/NO. ' ||
16539 'x_return_status = ' || x_return_status,
16540 p_msg_level=>fnd_log.level_statement);
16541 END IF;
16542 END IF;
16543
16544 --Bug 2940399: Added FINAL_IND column in financial_report_rec_type. Hence
16545 --added the validation for final_ind.
16546
16547 ----------------------------------
16548 -- validation for final_ind
16549 ----------------------------------
16550 /****Logical APIs - validation not required****/
16551 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16552 -- fiscal_ind is lookup code in lookup type YES/NO
16553 validate_lookup (
16554 p_column => 'final_ind',
16555 p_lookup_type => 'YES/NO',
16556 p_column_value => p_financial_report_rec.final_ind,
16557 x_return_status => x_return_status);
16558
16559 /*IF g_debug THEN
16560 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16561 'final_ind should be in lookup YES/NO. ' ||
16562 'x_return_status = ' || x_return_status, l_debug_prefix);
16563 END IF;
16564 */
16565 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16566 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'final_ind should be in lookup YES/NO. ' ||
16567 'x_return_status = ' || x_return_status,
16568 p_msg_level=>fnd_log.level_statement);
16569 END IF;
16570 END IF;
16571
16572 ------------------------------------
16573 --validation for forecast_ind
16574 ------------------------------------
16575 /****Logical APIs - validation not required****/
16576 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16577 -- forecast_ind is lookup code in lookup type YES/NO
16578 validate_lookup (
16579 p_column => 'forecast_ind',
16580 p_lookup_type => 'YES/NO',
16581 p_column_value => p_financial_report_rec.forecast_ind,
16582 x_return_status => x_return_status);
16583
16584 /*IF g_debug THEN
16585 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16586 'forecast_ind should be in lookup YES/NO. ' ||
16587 'x_return_status = ' || x_return_status, l_debug_prefix);
16588 END IF;
16589 */
16590 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16591 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'forecast_ind should be in lookup YES/NO. ' ||
16592 'x_return_status = ' || x_return_status,
16593 p_msg_level=>fnd_log.level_statement);
16594 END IF;
16595 END IF;
16596
16597 ----------------------------------
16598 -- validation for opening_ind
16599 ----------------------------------
16600 /****Logical APIs - validation not required****/
16601 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16602 -- opening_ind is lookup code in lookup type YES/NO
16603 validate_lookup (
16604 p_column => 'opening_ind',
16605 p_lookup_type => 'YES/NO',
16606 p_column_value => p_financial_report_rec.opening_ind,
16607 x_return_status => x_return_status);
16608
16609 /*IF g_debug THEN
16610 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16611 'opening_ind should be in lookup YES/NO. ' ||
16612 'x_return_status = ' || x_return_status, l_debug_prefix);
16613 END IF;
16614 */
16615 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16616 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'opening_ind should be in lookup YES/NO. ' ||
16617 'x_return_status = ' || x_return_status,
16618 p_msg_level=>fnd_log.level_statement);
16619 END IF;
16620 END IF;
16621
16622 ------------------------------------
16623 --validation for proforma_ind
16624 ------------------------------------
16625 /****Logical APIs - validation not required****/
16626 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16627 -- proforma_ind is lookup code in lookup type YES/NO
16628 validate_lookup (
16629 p_column => 'proforma_ind',
16630 p_lookup_type => 'YES/NO',
16631 p_column_value => p_financial_report_rec.proforma_ind,
16632 x_return_status => x_return_status);
16633
16634 /*IF g_debug THEN
16635 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16636 'proforma_ind should be in lookup YES/NO. ' ||
16637 'x_return_status = ' || x_return_status, l_debug_prefix);
16638 END IF;
16639 */
16640 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16641 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'proforma_ind should be in lookup YES/NO. ' ||
16642 'x_return_status = ' || x_return_status,
16643 p_msg_level=>fnd_log.level_statement);
16644 END IF;
16645 END IF;
16646
16647 ----------------------------------
16648 -- validation for qualified_ind
16649 ----------------------------------
16650 /****Logical APIs - validation not required****/
16651 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16652 -- qualified_ind is lookup code in lookup type YES/NO
16653 validate_lookup (
16654 p_column => 'qualified_ind',
16655 p_lookup_type => 'YES/NO',
16656 p_column_value => p_financial_report_rec.qualified_ind,
16657 x_return_status => x_return_status);
16658
16659 /*IF g_debug THEN
16660 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16661 'qualified_ind should be in lookup YES/NO. ' ||
16662 'x_return_status = ' || x_return_status, l_debug_prefix);
16663 END IF;
16664 */
16665 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16666 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'qualified_ind should be in lookup YES/NO. ' ||
16667 'x_return_status = ' || x_return_status,
16668 p_msg_level=>fnd_log.level_statement);
16669 END IF;
16670 END IF;
16671
16672 ------------------------------------
16673 --validation for restated_ind
16674 ------------------------------------
16675 /****Logical APIs - validation not required****/
16676 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16677 -- restated_ind is lookup code in lookup type YES/NO
16678 validate_lookup (
16679 p_column => 'restated_ind',
16680 p_lookup_type => 'YES/NO',
16681 p_column_value => p_financial_report_rec.restated_ind,
16682 x_return_status => x_return_status);
16683
16684 /*IF g_debug THEN
16685 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16686 'restated_ind should be in lookup YES/NO. ' ||
16687 'x_return_status = ' || x_return_status, l_debug_prefix);
16688 END IF;
16689 */
16690 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16691 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'restated_ind should be in lookup YES/NO. ' ||
16692 'x_return_status = ' || x_return_status,
16693 p_msg_level=>fnd_log.level_statement);
16694 END IF;
16695 END IF;
16696
16697 ----------------------------------
16698 -- validation for signed_by_principals_ind
16699 ----------------------------------
16700 /****Logical APIs - validation not required****/
16701 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16702 -- signed_by_principals_ind is lookup code in lookup type YES/NO
16703 validate_lookup (
16704 p_column => 'signed_by_principals_ind',
16705 p_lookup_type => 'YES/NO',
16706 p_column_value => p_financial_report_rec.signed_by_principals_ind,
16707 x_return_status => x_return_status);
16708
16709 /*IF g_debug THEN
16710 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16711 'signed_by_principals_ind should be in lookup YES/NO. ' ||
16712 'x_return_status = ' || x_return_status, l_debug_prefix);
16713 END IF;
16714 */
16715 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16716 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'signed_by_principals_ind should be in lookup YES/NO. ' ||
16717 'x_return_status = ' || x_return_status,
16718 p_msg_level=>fnd_log.level_statement);
16719 END IF;
16720 END IF;
16721
16722 ------------------------------------
16723 --validation for trial_balance_ind
16724 ------------------------------------
16725 /****Logical APIs - validation not required****/
16726 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16727 -- trial_balance_ind is lookup code in lookup type YES/NO
16728 validate_lookup (
16729 p_column => 'trial_balance_ind',
16730 p_lookup_type => 'YES/NO',
16731 p_column_value => p_financial_report_rec.trial_balance_ind,
16732 x_return_status => x_return_status);
16733
16734 /*IF g_debug THEN
16735 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16736 'trial_balance_ind should be in lookup YES/NO. ' ||
16737 'x_return_status = ' || x_return_status, l_debug_prefix);
16738 END IF;
16739 */
16740 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16741 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'trial_balance_ind should be in lookup YES/NO. ' ||
16742 'x_return_status = ' || x_return_status,
16743 p_msg_level=>fnd_log.level_statement);
16744 END IF;
16745 END IF;
16746
16747 ----------------------------------
16748 -- validation for unbalanced_ind
16749 ----------------------------------
16750 /****Logical APIs - validation not required****/
16751 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16752 -- unbalanced_ind is lookup code in lookup type YES/NO
16753 validate_lookup (
16754 p_column => 'unbalanced_ind',
16755 p_lookup_type => 'YES/NO',
16756 p_column_value => p_financial_report_rec.unbalanced_ind,
16757 x_return_status => x_return_status);
16758
16759 /*IF g_debug THEN
16760 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16761 'unbalanced_ind should be in lookup YES/NO. ' ||
16762 'x_return_status = ' || x_return_status, l_debug_prefix);
16763 END IF;
16764 */
16765 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16766 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'unbalanced_ind should be in lookup YES/NO. ' ||
16767 'x_return_status = ' || x_return_status,
16768 p_msg_level=>fnd_log.level_statement);
16769 END IF;
16770 END IF;
16771
16772 ------------------------
16773 -- validation for status
16774 ------------------------
16775 /****Logical APIs - validation not required****/
16776 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16777 -- status is lookup code in lookup type REGISTRY_STATUS
16778 IF p_financial_report_rec.status IS NOT NULL
16779 AND
16780 p_financial_report_rec.status <> fnd_api.g_miss_char
16781 AND
16782 (p_create_update_flag = 'C'
16783 OR
16784 (p_create_update_flag = 'U'
16785 AND
16786 p_financial_report_rec.status <> NVL(l_status, fnd_api.g_miss_char)
16787 )
16788 )
16789 THEN
16790 validate_lookup (
16791 p_column => 'status',
16792 p_lookup_type => 'REGISTRY_STATUS',
16793 p_column_value => p_financial_report_rec.status,
16794 x_return_status => x_return_status);
16795
16796 /*IF g_debug THEN
16797 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16798 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
16799 'x_return_status = ' || x_return_status, l_debug_prefix);
16800 END IF;
16801 */
16802 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16803 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=> 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
16804 'x_return_status = ' || x_return_status,
16805 p_msg_level=>fnd_log.level_statement);
16806 END IF;
16807
16808
16809 END IF;
16810 END IF;
16811
16812 -- status cannot be set to null during update
16813 IF p_create_update_flag = 'U' THEN
16814 validate_cannot_update_to_null (
16815 p_column => 'status',
16816 p_column_value => p_financial_report_rec.status,
16817 x_return_status => x_return_status);
16818 END IF;
16819
16820 --------------------------------
16821 --validate actual_content_source
16822 --------------------------------
16823
16824 -- actual_content_source is mandatory field
16825 IF p_create_update_flag = 'C' THEN
16826 validate_mandatory (
16827 p_create_update_flag => p_create_update_flag,
16828 p_column => 'actual_content_source',
16829 p_column_value => p_financial_report_rec.actual_content_source,
16830 x_return_status => x_return_status);
16831
16832 /*IF g_debug THEN
16833 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16834 'actual_content_source is mandatory field. ' ||
16835 'x_return_status = ' || x_return_status, l_debug_prefix);
16836 END IF;
16837 */
16838 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16839 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'actual_content_source is mandatory field. ' ||
16840 'x_return_status = ' || x_return_status,
16841 p_msg_level=>fnd_log.level_statement);
16842 END IF;
16843
16844
16845 END IF;
16846
16847 /* SSM SST Integration and Extension
16848 * actual_content_source is now a foreign key to HZ_ORIG_SYSTEMS_B.orig_system where sst_flag = 'Y'.
16849 -- actual_content_source is lookup code in lookup type CONTENT_SOURCE_TYPE
16850 validate_lookup (
16851 p_column => 'actual_content_source',
16852 p_lookup_type => 'CONTENT_SOURCE_TYPE',
16853 p_column_value => p_financial_report_rec.actual_content_source,
16854 x_return_status => x_return_status);
16855 */
16856 /*IF g_debug THEN
16857 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16858 'actual_content_source should be in lookup CONTENT_SOURCE_TYPE. ' ||
16859 'x_return_status = ' || x_return_status, l_debug_prefix);
16860 END IF;
16861 */
16862 /*
16863 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16864 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16865 p_message=>'actual_content_source should be in lookup CONTENT_SOURCE_TYPE. ' ||
16866 'x_return_status = ' || x_return_status,
16867 p_msg_level=>fnd_log.level_statement);
16868 END IF;
16869 */
16870
16871 HZ_MIXNM_UTILITY.ValidateContentSource (
16872 p_api_version => 'V2',
16873 p_create_update_flag => p_create_update_flag,
16874 p_check_update_privilege => 'Y',
16875 p_content_source_type => 'USER_ENTERED',
16876 p_old_content_source_type => 'USER_ENTERED',
16877 p_actual_content_source => p_financial_report_rec.actual_content_source,
16878 p_old_actual_content_source => l_actual_content_source,
16879 p_entity_name => 'HZ_FINANCIAL_REPORTS',
16880 x_return_status => x_return_status );
16881
16882 ----------------------------
16883 --validate created_by_module
16884 ----------------------------
16885
16886 validate_created_by_module(
16887 p_create_update_flag => p_create_update_flag,
16888 p_created_by_module => p_financial_report_rec.created_by_module,
16889 p_old_created_by_module => l_created_by_module,
16890 x_return_status => x_return_status);
16891
16892 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
16893 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_financial_report (-)',
16894 p_msg_level=>fnd_log.level_procedure);
16895 END IF;
16896
16897 END validate_financial_report;
16898
16899 /**
16900 * PROCEDURE validate_financial_number
16901 *
16902 * DESCRIPTION
16903 * Validates financial number record. Checks for
16904 * uniqueness
16905 * lookup types
16906 * mandatory columns
16907 * non-updateable fields
16908 * foreign key validations
16909 * other validations
16910 *
16911 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
16912 *
16913 * ARGUMENTS
16914 * IN:
16915 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
16916 * p_financial_number_rec Financial number record.
16917 * p_rowid Rowid of the record (used only in update mode).
16918 * IN/OUT:
16919 * x_return_status Return status after the call. The status can
16920 * be FND_API.G_RET_STS_SUCCESS (success),
16921 * fnd_api.g_ret_sts_error (error),
16922 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
16923 *
16924 * NOTES
16925 *
16926 * MODIFICATION HISTORY
16927 *
16928 * 29-JAN-2003 Sreedhar Mohan o Created.
16929 *
16930 */
16931 --bug 3942332: added out parameter x_actual_content_source
16932 PROCEDURE validate_financial_number(
16933 p_create_update_flag IN VARCHAR2,
16934 p_financial_number_rec IN HZ_ORGANIZATION_INFO_V2PUB.FINANCIAL_NUMBER_REC_TYPE,
16935 p_rowid IN ROWID,
16936 x_return_status IN OUT NOCOPY VARCHAR2,
16937 x_actual_content_source OUT NOCOPY VARCHAR2
16938 ) IS
16939
16940 CURSOR c_dup_financial_number_id (p_financial_report_id IN NUMBER) IS
16941 SELECT 'Y'
16942 FROM hz_financial_numbers hfr
16943 WHERE hfr.financial_number_id = financial_number_id;
16944
16945 CURSOR c_unique_financial_number_rec ( p_financial_report_id IN NUMBER,
16946 p_financial_number_name IN VARCHAR2) IS
16947 SELECT 'Y'
16948 FROM hz_financial_numbers
16949 WHERE financial_report_id = p_financial_report_id
16950 AND nvl(financial_number_name, 'XXX') = nvl(p_financial_number_name, 'XXX');
16951
16952 l_financial_number_id hz_financial_numbers.financial_number_id%TYPE;
16953 l_financial_number_name hz_financial_numbers.financial_number_name%TYPE;
16954 l_financial_report_id hz_financial_numbers.financial_report_id%TYPE;
16955 l_status hz_financial_numbers.status%TYPE;
16956 l_created_by_module hz_financial_numbers.created_by_module%TYPE;
16957 l_dummy VARCHAR2(1);
16958 l_debug_prefix VARCHAR2(30) := '';
16959
16960 BEGIN
16961
16962 --enable_debug;
16963
16964 -- Debug info.
16965 /*IF g_debug THEN
16966 hz_utility_v2pub.debug ('validate_financial_number (+)');
16967 END IF;
16968 */
16969 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
16970 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_financial_number (+)',
16971 p_msg_level=>fnd_log.level_procedure);
16972 END IF;
16973
16974 -- do the query to get old values for update
16975 IF p_create_update_flag = 'U'
16976 THEN
16977 SELECT FINANCIAL_NUMBER_ID,
16978 FINANCIAL_REPORT_ID,
16979 FINANCIAL_NUMBER_NAME,
16980 STATUS,
16981 CREATED_BY_MODULE
16982 INTO l_financial_number_id,
16983 l_financial_report_id,
16984 l_financial_number_name,
16985 l_status,
16986 l_created_by_module
16987 FROM HZ_FINANCIAL_NUMBERS
16988 WHERE ROWID = p_rowid;
16989 END IF;
16990
16991 -------------------------------------
16992 -- validation for financial_number_id
16993 -------------------------------------
16994 /****Logical APIs - validation not required****/
16995 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16996 --check for unique financial_number_id
16997 IF p_create_update_flag = 'C' THEN
16998 IF p_financial_number_rec.financial_number_id IS NOT NULL AND
16999 p_financial_number_rec.financial_number_id <> fnd_api.g_miss_num
17000 THEN
17001 OPEN c_dup_financial_number_id (p_financial_number_rec.financial_number_id);
17002 FETCH c_dup_financial_number_id INTO l_dummy;
17003
17004 -- key is not unique, push an error onto the stack.
17005 IF NVL(c_dup_financial_number_id%FOUND, FALSE) THEN
17006 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
17007 fnd_message.set_token('COLUMN', 'financial_number_id');
17008 fnd_msg_pub.add;
17009 x_return_status := fnd_api.g_ret_sts_error;
17010 END IF;
17011 CLOSE c_dup_financial_number_id;
17012
17013 /*IF g_debug THEN
17014 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17015 'check that financial_number_id is unique during creation. ' ||
17016 ' x_return_status = ' || x_return_status, l_debug_prefix);
17017 END IF;
17018 */
17019 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17020 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'check that financial_number_id is unique during creation. ' ||
17021 ' x_return_status = ' || x_return_status,
17022 p_msg_level=>fnd_log.level_statement);
17023 END IF;
17024
17025 END IF;
17026 END IF;
17027
17028 /*IF g_debug THEN
17029 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17030 '(+) after validate financial_number_id ... ' ||
17031 'x_return_status = ' || x_return_status, l_debug_prefix);
17032 END IF;
17033 */
17034 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17035 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate financial_number_id ... ' ||
17036 'x_return_status = ' || x_return_status,
17037 p_msg_level=>fnd_log.level_statement);
17038 END IF;
17039
17040 -- financial_number_id is non-updateable field
17041 IF p_create_update_flag = 'U' THEN
17042 validate_nonupdateable (
17043 p_column => 'financial_number_id',
17044 p_column_value => p_financial_number_rec.financial_number_id,
17045 p_old_column_value => l_financial_number_id,
17046 x_return_status => x_return_status);
17047
17048 /*IF g_debug THEN
17049 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17050 'financial_number_id is non-updateable field. ' ||
17051 'x_return_status = ' || x_return_status, l_debug_prefix);
17052 END IF;
17053 */
17054 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17055 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'financial_number_id is non-updateable field. ' ||
17056 'x_return_status = ' || x_return_status,
17057 p_msg_level=>fnd_log.level_statement);
17058 END IF;
17059
17060 END IF;
17061 END IF;
17062
17063 -------------------------------------
17064 -- validation for financial_report_id
17065 -------------------------------------
17066 /****Logical APIs - validation not required****/
17067 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
17068 --Must exist in HZ_FINANCIAL_REPORTS. Non-updateable.
17069 -- financial_report_id has foreign key HZ_FINANCIAL_REPORTS.FINANCIAL_REPORT_ID
17070 IF p_create_update_flag = 'C'
17071 AND
17072 p_financial_number_rec.financial_report_id IS NOT NULL
17073 AND
17074 p_financial_number_rec.financial_report_id <> fnd_api.g_miss_num
17075 THEN
17076 BEGIN
17077 --bug 3942332: selected actual_content_source from the hz_financial_reports record.
17078 --SELECT 'Y'
17079 --INTO l_dummy
17080 SELECT actual_content_source
17081 INTO x_actual_content_source
17082 FROM hz_financial_reports hfr
17083 WHERE hfr.financial_report_id = p_financial_number_rec.financial_report_id;
17084
17085 EXCEPTION
17086 WHEN NO_DATA_FOUND THEN
17087 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
17088 fnd_message.set_token('FK', 'financial_report_id');
17089 fnd_message.set_token('COLUMN', 'financial_report_id');
17090 fnd_message.set_token('TABLE', 'hz_financial_reports');
17091 fnd_msg_pub.add;
17092 x_return_status := fnd_api.g_ret_sts_error;
17093 END;
17094
17095 /*IF g_debug THEN
17096 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17097 'financial_report_id has foreign key hz_financial_reports.financial_report_id. ' ||
17098 'x_return_status = ' || x_return_status, l_debug_prefix);
17099 END IF;
17100 */
17101 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17102 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17103 p_message=>'financial_report_id has foreign key hz_financial_reports.financial_report_id. ' ||
17104 'x_return_status = ' || x_return_status,
17105 p_msg_level=>fnd_log.level_statement);
17106 END IF;
17107
17108 END IF;
17109
17110 -- financial_report_id is non-updateable field
17111 IF p_create_update_flag = 'U' THEN
17112 validate_nonupdateable (
17113 p_column => 'financial_report_id',
17114 p_column_value => p_financial_number_rec.financial_report_id,
17115 p_old_column_value => l_financial_report_id,
17116 x_return_status => x_return_status);
17117
17118 /*IF g_debug THEN
17119 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17120 'financial_report_id is non-updateable field. ' ||
17121 'x_return_status = ' || x_return_status, l_debug_prefix);
17122 END IF;
17123 */
17124 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17125 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'financial_report_id is non-updateable field. ' ||
17126 'x_return_status = ' || x_return_status,
17127 p_msg_level=>fnd_log.level_statement);
17128 END IF;
17129
17130 END IF;
17131
17132 -- financial_report_id is mandatory field
17133 IF p_create_update_flag = 'C' THEN
17134 validate_mandatory (
17135 p_create_update_flag => p_create_update_flag,
17136 p_column => 'financial_report_id',
17137 p_column_value => p_financial_number_rec.financial_report_id,
17138 x_return_status => x_return_status);
17139
17140 /*IF g_debug THEN
17141 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17142 'financial_report_id is mandatory field. ' ||
17143 'x_return_status = ' || x_return_status, l_debug_prefix);
17144 END IF;
17145 */
17146 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17147 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'financial_report_id is mandatory field. ' ||
17148 'x_return_status = ' || x_return_status,
17149 p_msg_level=>fnd_log.level_statement);
17150 END IF;
17151
17152 END IF;
17153 END IF;
17154
17155 ---------------------------------------
17156 --Bug 2869162: Unique record Validation
17157 ---------------------------------------
17158 IF p_create_update_flag = 'C' THEN
17159 OPEN c_unique_financial_number_rec ( p_financial_number_rec.financial_report_id,
17160 p_financial_number_rec.financial_number_name);
17161
17162 FETCH c_unique_financial_number_rec INTO l_dummy;
17163
17164 -- combination key is not unique, push an error onto the stack.
17165 IF NVL(c_unique_financial_number_rec%FOUND, FALSE) THEN
17166 fnd_message.set_name('AR', 'HZ_API_DUP_FIN_NUMBER_REC');
17167 fnd_msg_pub.add;
17168 x_return_status := fnd_api.g_ret_sts_error;
17169 END IF;
17170 CLOSE c_unique_financial_number_rec;
17171
17172 /*IF g_debug THEN
17173 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17174 'The following column combination should be unique:' ||
17175 ' FINANCIAL_REPORT_ID, FINANCIAL_NUMBER_NAME. ' ||
17176 ' x_return_status = ' || x_return_status, l_debug_prefix);
17177 END IF;
17178 */
17179 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17180 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'The following column combination should be unique:' ||
17181 ' FINANCIAL_REPORT_ID, FINANCIAL_NUMBER_NAME. ' ||
17182 ' x_return_status = ' || x_return_status,
17183 p_msg_level=>fnd_log.level_statement);
17184 END IF;
17185 END IF;
17186 -----------------------------------------
17187 --financial_number_name in non-updateable
17188 -----------------------------------------
17189 IF p_create_update_flag = 'U' THEN
17190 validate_nonupdateable (
17191 p_column => 'financial_number_name',
17192 p_column_value => p_financial_number_rec.financial_number_name,
17193 p_old_column_value => l_financial_number_name,
17194 x_return_status => x_return_status);
17195
17196 /*IF g_debug THEN
17197 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17198 'financial_number_name is non-updateable field. ' ||
17199 'x_return_status = ' || x_return_status, l_debug_prefix);
17200 END IF;
17201 */
17202 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17203 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17204 p_message=>'financial_number_name is non-updateable field. ' ||
17205 'x_return_status = ' || x_return_status,
17206 p_msg_level=>fnd_log.level_statement);
17207 END IF;
17208
17209 END IF;
17210 ---------------------------------------
17211 -- validation for financial_number_name
17212 ---------------------------------------
17213
17214 -- financial_number_name is lookup code in lookup type FIN_NUM_NAME
17215 validate_lookup (
17216 p_column => 'financial_number_name',
17217 p_lookup_type => 'FIN_NUM_NAME',
17218 p_column_value => p_financial_number_rec.financial_number_name,
17219 x_return_status => x_return_status);
17220
17221 /*IF g_debug THEN
17222 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17223 'financial_number_name should be in lookup YES/NO. ' ||
17224 'x_return_status = ' || x_return_status, l_debug_prefix);
17225 END IF;
17226 */
17227 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17228 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17229 p_message=>'financial_number_name should be in lookup YES/NO. ' ||
17230 'x_return_status = ' || x_return_status,
17231 p_msg_level=>fnd_log.level_statement);
17232 END IF;
17233
17234 ------------------------
17235 -- validation for status
17236 ------------------------
17237 /****Logical APIs - validation not required****/
17238 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
17239 -- status is lookup code in lookup type REGISTRY_STATUS
17240 IF p_financial_number_rec.status IS NOT NULL
17241 AND
17242 p_financial_number_rec.status <> fnd_api.g_miss_char
17243 AND
17244 (p_create_update_flag = 'C'
17245 OR
17246 (p_create_update_flag = 'U'
17247 AND
17248 p_financial_number_rec.status <> NVL(l_status, fnd_api.g_miss_char)
17249 )
17250 )
17251 THEN
17252 validate_lookup (
17253 p_column => 'status',
17254 p_lookup_type => 'REGISTRY_STATUS',
17255 p_column_value => p_financial_number_rec.status,
17256 x_return_status => x_return_status);
17257
17258 /*IF g_debug THEN
17259 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17260 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
17261 'x_return_status = ' || x_return_status, l_debug_prefix);
17262 END IF;
17263 */
17264 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17265 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17266 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
17267 'x_return_status = ' || x_return_status,
17268 p_msg_level=>fnd_log.level_statement);
17269 END IF;
17270
17271 END IF;
17272 END IF;
17273
17274 -- status cannot be set to null during update
17275 IF p_create_update_flag = 'U' THEN
17276 validate_cannot_update_to_null (
17277 p_column => 'status',
17278 p_column_value => p_financial_number_rec.status,
17279 x_return_status => x_return_status);
17280 END IF;
17281
17282 --------------------------------------
17283 -- validate created_by_module
17284 --------------------------------------
17285
17286 validate_created_by_module(
17287 p_create_update_flag => p_create_update_flag,
17288 p_created_by_module => p_financial_number_rec.created_by_module,
17289 p_old_created_by_module => l_created_by_module,
17290 x_return_status => x_return_status);
17291
17292 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
17293 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_financial_number (-)',
17294 p_msg_level=>fnd_log.level_procedure);
17295 END IF;
17296
17297 END validate_financial_number;
17298
17299 /**
17300 * PROCEDURE validate_credit_rating
17301 *
17302 * DESCRIPTION
17303 * Validates credit rating record. Checks for
17304 * uniqueness
17305 * lookup types
17306 * mandatory columns
17307 * non-updateable fields
17308 * foreign key validations
17309 * other validations
17310 *
17311 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
17312 *
17313 * ARGUMENTS
17314 * IN:
17315 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
17316 * p_credit_rating_rec Credit rating record.
17317 * p_rowid Rowid of the record (used only in update mode).
17318 * IN/OUT:
17319 * x_return_status Return status after the call. The status can
17320 * be FND_API.G_RET_STS_SUCCESS (success),
17321 * fnd_api.g_ret_sts_error (error),
17322 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
17323 *
17324 * NOTES
17325 *
17326 * MODIFICATION HISTORY
17327 *
17328 * 01-27-2003 Sreedhar Mohan o Created.
17329 * 03-11-2003 Sreedhar Mohan Changed the lookup_type to FAILURE_SCORE_OVERRIDE_CODE
17330 * instead of FAILURE_SCORE_OVERRIDE_SCORE
17331 * for the code credit_score_override_code
17332 * 03-14-2003 Sreedhar Mohan Bug 2843453, modified such that, fincl_embt_ind should
17333 * be validated against YES/NO instead of REGISTRY_STATUS
17334 * 10-09-2003 Rajib R Borah o Bug 3090928.Commented the code to check for uniqueness of
17335 * party_id,rated_as_of_date,rating_organization. This is now
17336 * handled by the unique index HZ_CREDIT_RATINGS_U2.
17337 * 04-05-2004 Rajib R Borah o Bug 3181460. Credit_score_natl_percentile and
17338 * failure_score_natnl_percentile should have a value
17339 * within 0 to 100 only.
17340 * o Added local variables l_credit_score_natl_percentile and
17341 * l_fail_score_natnl_percentile for the same.
17342 * 01-03-2005 Rajib Ranjan Borah o SSM SST Integration and Extension.
17343 * Actual_content_source will now be validated against
17344 * HZ_ORIG_SYSTEMS_B by calling Hz_MIXNM_UTILITY.ValidateContentSource
17345 * instead of being validated against lookup CONTENT_SOURCE_TYPE.
17346 * 01-24-2005 Kalyan o Bug 3877782. Added the condition to consider 'start_date_active' and
17347 * 'end_date_active'.
17348 */
17349
17350 PROCEDURE validate_credit_rating(
17351 p_create_update_flag IN VARCHAR2,
17352 p_credit_rating_rec IN HZ_PARTY_INFO_V2PUB.CREDIT_RATING_REC_TYPE,
17353 p_rowid IN ROWID,
17354 x_return_status IN OUT NOCOPY VARCHAR2
17355 ) IS
17356
17357 CURSOR c_dup_credit_rating_id (p_credting_rating_id IN NUMBER) IS
17358 SELECT 'Y'
17359 FROM hz_credit_ratings hcr
17360 WHERE hcr.credit_rating_id = p_credting_rating_id;
17361
17362 CURSOR c_unique_credit_rating_rec ( p_party_id IN NUMBER,
17363 p_rated_as_of_date IN DATE,
17364 p_rating_organization IN VARCHAR2,
17365 p_actual_content_source IN VARCHAR2) IS
17366 SELECT 'Y'
17367 FROM hz_credit_ratings hc
17368 WHERE hc.party_id = p_party_id
17369 AND trunc(nvl(hc.rated_as_of_date, to_date('12/31/4712','MM/DD/YYYY'))) =
17370 trunc(nvl(p_rated_as_of_date, to_date('12/31/4712','MM/DD/YYYY')))
17371 AND nvl(hc.rating_organization, 'XXX') = nvl(p_rating_organization, 'XXX')
17372 AND nvl(hc.actual_content_source, hz_party_v2pub.G_MISS_CONTENT_SOURCE_TYPE) =
17373 nvl(p_actual_content_source, hz_party_v2pub.G_MISS_CONTENT_SOURCE_TYPE);
17374
17375 l_credit_rating_id hz_credit_ratings.credit_rating_id%TYPE;
17376 l_party_id hz_credit_ratings.party_id%TYPE;
17377 l_rating_organization hz_credit_ratings.rating_organization%TYPE;
17378 l_rated_as_of_date hz_credit_ratings.rated_as_of_date%TYPE;
17379 l_fincl_embt_ind hz_credit_ratings.fincl_embt_ind%TYPE;
17380 l_credit_score_commentary hz_credit_ratings.credit_score_commentary%TYPE;
17381 l_credit_score_commentary2 hz_credit_ratings.credit_score_commentary2%TYPE;
17382 l_credit_score_commentary3 hz_credit_ratings.credit_score_commentary3%TYPE;
17383 l_credit_score_commentary4 hz_credit_ratings.credit_score_commentary4%TYPE;
17384 l_credit_score_commentary5 hz_credit_ratings.credit_score_commentary5%TYPE;
17385 l_credit_score_commentary6 hz_credit_ratings.credit_score_commentary6%TYPE;
17386 l_credit_score_commentary7 hz_credit_ratings.credit_score_commentary7%TYPE;
17387 l_credit_score_commentary8 hz_credit_ratings.credit_score_commentary8%TYPE;
17388 l_credit_score_commentary9 hz_credit_ratings.credit_score_commentary9%TYPE;
17389 l_credit_score_commentary10 hz_credit_ratings.credit_score_commentary10%TYPE;
17390 l_failure_score_commentary hz_credit_ratings.failure_score_commentary%TYPE;
17391 l_failure_score_commentary2 hz_credit_ratings.failure_score_commentary2%TYPE;
17392 l_failure_score_commentary3 hz_credit_ratings.failure_score_commentary3%TYPE;
17393 l_failure_score_commentary4 hz_credit_ratings.failure_score_commentary4%TYPE;
17394 l_failure_score_commentary5 hz_credit_ratings.failure_score_commentary5%TYPE;
17395 l_failure_score_commentary6 hz_credit_ratings.failure_score_commentary6%TYPE;
17396 l_failure_score_commentary7 hz_credit_ratings.failure_score_commentary7%TYPE;
17397 l_failure_score_commentary8 hz_credit_ratings.failure_score_commentary8%TYPE;
17398 l_failure_score_commentary9 hz_credit_ratings.failure_score_commentary9%TYPE;
17399 l_failure_score_commentary10 hz_credit_ratings.failure_score_commentary10%TYPE;
17400 l_status hz_credit_ratings.status%TYPE;
17401 l_created_by_module hz_credit_ratings.created_by_module%TYPE;
17402 l_debarment_ind hz_credit_ratings.debarment_ind%TYPE;
17403 l_maximum_credit_currency_code hz_credit_ratings.maximum_credit_currency_code%TYPE;
17404 l_credit_score_override_code hz_credit_ratings.credit_score_override_code%TYPE;
17405 l_suit_ind hz_credit_ratings.suit_ind%TYPE;
17406 l_lien_ind hz_credit_ratings.lien_ind%TYPE;
17407 l_judgement_ind hz_credit_ratings.judgement_ind%TYPE;
17408 l_bankruptcy_ind hz_credit_ratings.bankruptcy_ind%TYPE;
17409 l_no_trade_ind hz_credit_ratings.no_trade_ind%TYPE;
17410 l_prnt_hq_bkcy_ind hz_credit_ratings.prnt_hq_bkcy_ind%TYPE;
17411 l_actual_content_source hz_credit_ratings.actual_content_source%TYPE;
17412 l_credit_score_natl_percentile hz_credit_ratings.credit_score_natl_percentile%TYPE;
17413 l_fail_score_natnl_percentile hz_credit_ratings.failure_score_natnl_percentile%TYPE;
17414 l_dummy VARCHAR2(1);
17415 l_debug_prefix VARCHAR2(30) := '';
17416
17417 BEGIN
17418
17419 --enable_debug;
17420
17421 -- Debug info.
17422 /*IF g_debug THEN
17423 hz_utility_v2pub.debug ('validate_credit_rating (+)');
17424 END IF;
17425 */
17426 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
17427 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_credit_rating (+)',
17428 p_msg_level=>fnd_log.level_procedure);
17429 END IF;
17430
17431 -- do the query to get old values for update
17432 IF p_create_update_flag = 'U'
17433 THEN
17434 SELECT CREDIT_RATING_ID,
17435 PARTY_ID,
17436 RATING_ORGANIZATION,
17437 RATED_AS_OF_DATE,
17438 FINCL_EMBT_IND,
17439 CREDIT_SCORE_COMMENTARY,
17440 CREDIT_SCORE_COMMENTARY2,
17441 CREDIT_SCORE_COMMENTARY3,
17442 CREDIT_SCORE_COMMENTARY4,
17443 CREDIT_SCORE_COMMENTARY5,
17444 CREDIT_SCORE_COMMENTARY6,
17445 CREDIT_SCORE_COMMENTARY7,
17446 CREDIT_SCORE_COMMENTARY8,
17447 CREDIT_SCORE_COMMENTARY9,
17448 CREDIT_SCORE_COMMENTARY10,
17449 FAILURE_SCORE_COMMENTARY,
17450 FAILURE_SCORE_COMMENTARY2,
17451 FAILURE_SCORE_COMMENTARY3,
17452 FAILURE_SCORE_COMMENTARY4,
17453 FAILURE_SCORE_COMMENTARY5,
17454 FAILURE_SCORE_COMMENTARY6,
17455 FAILURE_SCORE_COMMENTARY7,
17456 FAILURE_SCORE_COMMENTARY8,
17457 FAILURE_SCORE_COMMENTARY9,
17458 FAILURE_SCORE_COMMENTARY10,
17459 DEBARMENT_IND,
17460 MAXIMUM_CREDIT_CURRENCY_CODE,
17461 CREDIT_SCORE_OVERRIDE_CODE,
17462 SUIT_IND,
17463 LIEN_IND,
17464 JUDGEMENT_IND,
17465 BANKRUPTCY_IND,
17466 NO_TRADE_IND,
17467 PRNT_HQ_BKCY_IND,
17468 ACTUAL_CONTENT_SOURCE,
17469 STATUS,
17470 CREATED_BY_MODULE,
17471 CREDIT_SCORE_NATL_PERCENTILE,
17472 FAILURE_SCORE_NATNL_PERCENTILE
17473 INTO l_credit_rating_id,
17474 l_party_id,
17475 l_rating_organization,
17476 l_rated_as_of_date,
17477 l_fincl_embt_ind,
17478 l_credit_score_commentary,
17479 l_credit_score_commentary2,
17480 l_credit_score_commentary3,
17481 l_credit_score_commentary4,
17482 l_credit_score_commentary5,
17483 l_credit_score_commentary6,
17484 l_credit_score_commentary7,
17485 l_credit_score_commentary8,
17486 l_credit_score_commentary9,
17487 l_credit_score_commentary10,
17488 l_failure_score_commentary,
17489 l_failure_score_commentary2,
17490 l_failure_score_commentary3,
17491 l_failure_score_commentary4,
17492 l_failure_score_commentary5,
17493 l_failure_score_commentary6,
17494 l_failure_score_commentary7,
17495 l_failure_score_commentary8,
17496 l_failure_score_commentary9,
17497 l_failure_score_commentary10,
17498 l_debarment_ind,
17499 l_maximum_credit_currency_code,
17500 l_credit_score_override_code,
17501 l_suit_ind,
17502 l_lien_ind,
17503 l_judgement_ind,
17504 l_bankruptcy_ind,
17505 l_no_trade_ind,
17506 l_prnt_hq_bkcy_ind,
17507 l_actual_content_source,
17508 l_status,
17509 l_created_by_module,
17510 l_credit_score_natl_percentile,
17511 l_fail_score_natnl_percentile
17512 FROM HZ_CREDIT_RATINGS
17513 WHERE ROWID = p_rowid;
17514 END IF;
17515
17516 -------------------------------------
17517 -- validation for credit_rating_id
17518 -------------------------------------
17519 /****Logical APIs - validation not required****/
17520 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
17521 --check for unique credit_rating_id
17522 IF p_create_update_flag = 'C' THEN
17523 IF p_credit_rating_rec.credit_rating_id IS NOT NULL AND
17524 p_credit_rating_rec.credit_rating_id <> fnd_api.g_miss_num
17525 THEN
17526 OPEN c_dup_credit_rating_id (p_credit_rating_rec.credit_rating_id);
17527 FETCH c_dup_credit_rating_id INTO l_dummy;
17528
17529 -- key is not unique, push an error onto the stack.
17530 IF NVL(c_dup_credit_rating_id%FOUND, FALSE) THEN
17531 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
17532 fnd_message.set_token('COLUMN', 'credit_rating_id');
17533 fnd_msg_pub.add;
17534 x_return_status := fnd_api.g_ret_sts_error;
17535 END IF;
17536 CLOSE c_dup_credit_rating_id;
17537
17538 /*IF g_debug THEN
17539 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17540 'check that credit_rating_id is unique during creation. ' ||
17541 ' x_return_status = ' || x_return_status, l_debug_prefix);
17542 END IF;
17543 */
17544 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17545 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17546 p_message=>'check that credit_rating_id is unique during creation. ' ||
17547 ' x_return_status = ' || x_return_status,
17548 p_msg_level=>fnd_log.level_statement);
17549 END IF;
17550
17551 END IF;
17552 END IF;
17553
17554 /*IF g_debug THEN
17555 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17556 '(+) after validate credit_rating_id ... ' ||
17557 'x_return_status = ' || x_return_status, l_debug_prefix);
17558 END IF;
17559 */
17560 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17561 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate credit_rating_id ... ' ||
17562 'x_return_status = ' || x_return_status,
17563 p_msg_level=>fnd_log.level_statement);
17564 END IF;
17565
17566 -- credit_rating_id is non-updateable field
17567 IF p_create_update_flag = 'U' THEN
17568 validate_nonupdateable (
17569 p_column => 'credit_rating_id',
17570 p_column_value => p_credit_rating_rec.credit_rating_id,
17571 p_old_column_value => l_credit_rating_id,
17572 x_return_status => x_return_status);
17573
17574 /*IF g_debug THEN
17575 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17576 'credit_rating_id is non-updateable field. ' ||
17577 'x_return_status = ' || x_return_status, l_debug_prefix);
17578 END IF;
17579 */
17580 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17581 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'credit_rating_id is non-updateable field. ' ||
17582 'x_return_status = ' || x_return_status,
17583 p_msg_level=>fnd_log.level_statement);
17584 END IF;
17585
17586 END IF;
17587 END IF;
17588
17589 -------------------------------------
17590 -- validation for party_id
17591 -------------------------------------
17592 /****Logical APIs - validation not required****/
17593 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
17594 --party_id is a mandatory field
17595 IF p_create_update_flag = 'C' THEN
17596 validate_mandatory (
17597 p_create_update_flag => p_create_update_flag,
17598 p_column => 'party_id',
17599 p_column_value => p_credit_rating_rec.party_id,
17600 x_return_status => x_return_status);
17601
17602 /*IF g_debug THEN
17603 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17604 'party_id is mandatory field. ' ||
17605 'x_return_status = ' || x_return_status, l_debug_prefix);
17606 END IF;
17607 */
17608 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17609 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is mandatory field. ' ||
17610 'x_return_status = ' || x_return_status,
17611 p_msg_level=>fnd_log.level_statement);
17612 END IF;
17613
17614 END IF;
17615 -- party_id has foreign key HZ_PARTIES.PARTY_ID
17616 IF p_create_update_flag = 'C'
17617 AND
17618 p_credit_rating_rec.party_id IS NOT NULL
17619 AND
17620 p_credit_rating_rec.party_id <> fnd_api.g_miss_num
17621 THEN
17622 BEGIN
17623 SELECT 'Y'
17624 INTO l_dummy
17625 FROM hz_parties p
17626 WHERE p.party_id = p_credit_rating_rec.party_id;
17627
17628 EXCEPTION
17629 WHEN NO_DATA_FOUND THEN
17630 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
17631 fnd_message.set_token('FK', 'party_id');
17632 fnd_message.set_token('COLUMN', 'party_id');
17633 fnd_message.set_token('TABLE', 'hz_parties');
17634 fnd_msg_pub.add;
17635 x_return_status := fnd_api.g_ret_sts_error;
17636 END;
17637
17638 /*IF g_debug THEN
17639 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17640 'party_id has foreign key hz_parties.party_id. ' ||
17641 'x_return_status = ' || x_return_status, l_debug_prefix);
17642 END IF;
17643 */
17644 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17645 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
17646 'x_return_status = ' || x_return_status,
17647 p_msg_level=>fnd_log.level_statement);
17648 END IF;
17649
17650 END IF;
17651
17652 -- party_id is non-updateable field
17653 IF p_create_update_flag = 'U' THEN
17654 validate_nonupdateable (
17655 p_column => 'party_id',
17656 p_column_value => p_credit_rating_rec.party_id,
17657 p_old_column_value => l_party_id,
17658 x_return_status => x_return_status);
17659
17660 /*IF g_debug THEN
17661 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17662 'party_id is non-updateable field. ' ||
17663 'x_return_status = ' || x_return_status, l_debug_prefix);
17664 END IF;
17665 */
17666 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17667 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable field. ' ||
17668 'x_return_status = ' || x_return_status,
17669 p_msg_level=>fnd_log.level_statement);
17670 END IF;
17671
17672 END IF;
17673 END IF;
17674
17675 /**********************************************************************************
17676 Bug Number 3090928:Removed the validation below and used the unique index HZ_CREDIT_RATINGS_U2
17677 on table HZ_CREDIT_RATINGS to check for uniqueness.Now this check is done by handling the
17678 exception DUP_VAL_ON_INDEX for the unique index HZ_CREDIT_RATINGS_U2 in the procedure
17679 HZ_CREDIT_RATINGS_PKG.Insert_Row.
17680 ***********************************************************************************
17681 |---------------------------------------
17682 |--Bug 2869178: Unique record Validation
17683 |---------------------------------------
17684 |IF p_create_update_flag = 'C' THEN
17685 | OPEN c_unique_credit_rating_rec (p_credit_rating_rec.party_id,
17686 | p_credit_rating_rec.rated_as_of_date,
17687 | p_credit_rating_rec.rating_organization,
17688 | p_credit_rating_rec.actual_content_source);
17689 | FETCH c_unique_credit_rating_rec INTO l_dummy;
17690 |
17691 | -- combination key is not unique, push an error onto the stack.
17692 | IF NVL(c_unique_credit_rating_rec%FOUND, FALSE) THEN
17693 | fnd_message.set_name('AR', 'HZ_API_DUP_CREDIT_RATING_REC');
17694 | fnd_msg_pub.add;
17695 | x_return_status := fnd_api.g_ret_sts_error;
17696 | END IF;
17697 | CLOSE c_unique_credit_rating_rec;
17698 |
17699 | IF g_debug THEN
17700 | hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17701 | 'The following column combination should be unique:' ||
17702 | ' PARTY_ID, TRUNC(RATED_AS_OF_DATE), RATING_ORGANIZATION, and ACTUAL_CONTENT_SOURCE. ' ||
17703 | ' x_return_status = ' || x_return_status, l_debug_prefix);
17704 | END IF;
17705 |END IF;
17706 ********************************************************************************
17707 End of code commented for Bug Number 3090928.
17708 ********************************************************************************/
17709 ------------------------------------
17710 --rated_as_of_date is not updateable
17711 ------------------------------------
17712 IF p_create_update_flag = 'U' THEN
17713 validate_nonupdateable (
17714 p_column => 'rated_as_of_date',
17715 p_column_value => trunc(p_credit_rating_rec.rated_as_of_date),
17716 p_old_column_value => trunc(l_rated_as_of_date),
17717 x_return_status => x_return_status);
17718
17719 /*IF g_debug THEN
17720 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17721 'rated_as_of_date is non-updateable field. ' ||
17722 'x_return_status = ' || x_return_status, l_debug_prefix);
17723 END IF;
17724 */
17725 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17726 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'rated_as_of_date is non-updateable field. ' ||
17727 'x_return_status = ' || x_return_status,
17728 p_msg_level=>fnd_log.level_statement);
17729 END IF;
17730
17731 END IF;
17732 ---------------------------------------
17733 --rating_organization is not updateable
17734 ---------------------------------------
17735 IF p_create_update_flag = 'U' THEN
17736 validate_nonupdateable (
17737 p_column => 'rating_organization',
17738 p_column_value => p_credit_rating_rec.rating_organization,
17739 p_old_column_value => l_rating_organization,
17740 x_return_status => x_return_status);
17741
17742 /*IF g_debug THEN
17743 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17744 'rating_organization is non-updateable field. ' ||
17745 'x_return_status = ' || x_return_status, l_debug_prefix);
17746 END IF;
17747 */
17748 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17749 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'rating_organization is non-updateable field. ' ||
17750 'x_return_status = ' || x_return_status,
17751 p_msg_level=>fnd_log.level_statement);
17752 END IF;
17753
17754 END IF;
17755 ----------------------------------
17756 -- validation for fincl_embt_ind
17757 ----------------------------------
17758 /****Logical APIs - validation not required****/
17759 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
17760 --bug 2843453, fincl_embt_ind should be validated against YES/NO instead
17761 --of REGISTRY_STATUS
17762 -- fincl_embt_ind is lookup code in lookup type YES/NO
17763 validate_lookup (
17764 p_column => 'fincl_embt_ind',
17765 p_lookup_type => 'YES/NO',
17766 p_column_value => p_credit_rating_rec.fincl_embt_ind,
17767 x_return_status => x_return_status);
17768
17769 /*IF g_debug THEN
17770 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17771 'fincl_embt_ind should be in lookup YES/NO. ' ||
17772 'x_return_status = ' || x_return_status, l_debug_prefix);
17773 END IF;
17774 */
17775 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17776 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'fincl_embt_ind should be in lookup YES/NO. ' ||
17777 'x_return_status = ' || x_return_status,
17778 p_msg_level=>fnd_log.level_statement);
17779 END IF;
17780 END IF;
17781
17782 -----------------------------------------
17783 -- validation for credit_score_commentary
17784 -----------------------------------------
17785
17786 -- credit_score_commentary is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17787 validate_lookup (
17788 p_column => 'credit_score_commentary',
17789 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17790 p_column_value => p_credit_rating_rec.credit_score_commentary,
17791 x_return_status => x_return_status);
17792
17793 /*IF g_debug THEN
17794 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17795 'credit_score_commentary should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17796 'x_return_status = ' || x_return_status, l_debug_prefix);
17797 END IF;
17798 */
17799 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17800 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17801 p_message=>'credit_score_commentary should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17802 'x_return_status = ' || x_return_status,
17803 p_msg_level=>fnd_log.level_statement);
17804 END IF;
17805
17806
17807 ------------------------------------------
17808 -- validation for credit_score_commentary2
17809 ------------------------------------------
17810
17811 -- credit_score_commentary2 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17812 validate_lookup (
17813 p_column => 'credit_score_commentary2',
17814 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17815 p_column_value => p_credit_rating_rec.credit_score_commentary2,
17816 x_return_status => x_return_status);
17817
17818 /*IF g_debug THEN
17819 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17820 'credit_score_commentary2 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17821 'x_return_status = ' || x_return_status, l_debug_prefix);
17822 END IF;
17823 */
17824 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17825 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'credit_score_commentary2 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17826 'x_return_status = ' || x_return_status,
17827 p_msg_level=>fnd_log.level_statement);
17828 END IF;
17829
17830 ------------------------------------------
17831 -- validation for credit_score_commentary3
17832 ------------------------------------------
17833
17834 -- credit_score_commentary3 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17835 validate_lookup (
17836 p_column => 'credit_score_commentary3',
17837 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17838 p_column_value => p_credit_rating_rec.credit_score_commentary3,
17839 x_return_status => x_return_status);
17840
17841 /*IF g_debug THEN
17842 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17843 'credit_score_commentary3 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17844 'x_return_status = ' || x_return_status, l_debug_prefix);
17845 END IF;
17846 */
17847 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17848 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'credit_score_commentary3 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17849 'x_return_status = ' || x_return_status,
17850 p_msg_level=>fnd_log.level_statement);
17851 END IF;
17852
17853 ------------------------------------------
17854 -- validation for credit_score_commentary4
17855 ------------------------------------------
17856
17857 -- credit_score_commentary4 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17858 validate_lookup (
17859 p_column => 'credit_score_commentary4',
17860 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17861 p_column_value => p_credit_rating_rec.credit_score_commentary4,
17862 x_return_status => x_return_status);
17863
17864 /*IF g_debug THEN
17865 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17866 'credit_score_commentary4 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17867 'x_return_status = ' || x_return_status, l_debug_prefix);
17868 END IF;
17869 */
17870 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17871 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'credit_score_commentary4 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17872 'x_return_status = ' || x_return_status,
17873 p_msg_level=>fnd_log.level_statement);
17874 END IF;
17875
17876 ------------------------------------------
17877 -- validation for credit_score_commentary5
17878 ------------------------------------------
17879
17880 -- credit_score_commentary5 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17881 validate_lookup (
17882 p_column => 'credit_score_commentary5',
17883 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17884 p_column_value => p_credit_rating_rec.credit_score_commentary5,
17885 x_return_status => x_return_status);
17886
17887 /*IF g_debug THEN
17888 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17889 'credit_score_commentary5 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17890 'x_return_status = ' || x_return_status, l_debug_prefix);
17891 END IF;
17892 */
17893 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17894 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'credit_score_commentary5 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17895 'x_return_status = ' || x_return_status,
17896 p_msg_level=>fnd_log.level_statement);
17897 END IF;
17898
17899 ------------------------------------------
17900 -- validation for credit_score_commentary6
17901 ------------------------------------------
17902
17903 -- credit_score_commentary6 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17904 validate_lookup (
17905 p_column => 'credit_score_commentary6',
17906 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17907 p_column_value => p_credit_rating_rec.credit_score_commentary6,
17908 x_return_status => x_return_status);
17909
17910 /*IF g_debug THEN
17911 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17912 'credit_score_commentary6 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17913 'x_return_status = ' || x_return_status, l_debug_prefix);
17914 END IF;
17915 */
17916 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17917 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'credit_score_commentary6 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17918 'x_return_status = ' || x_return_status,
17919 p_msg_level=>fnd_log.level_statement);
17920 END IF;
17921
17922 ------------------------------------------
17923 -- validation for credit_score_commentary7
17924 ------------------------------------------
17925
17926 -- credit_score_commentary7 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17927 validate_lookup (
17928 p_column => 'credit_score_commentary7',
17929 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17930 p_column_value => p_credit_rating_rec.credit_score_commentary7,
17931 x_return_status => x_return_status);
17932
17933 /*IF g_debug THEN
17934 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17935 'credit_score_commentary7 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17936 'x_return_status = ' || x_return_status, l_debug_prefix);
17937 END IF;
17938 */
17939 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17940 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'credit_score_commentary7 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17941 'x_return_status = ' || x_return_status,
17942 p_msg_level=>fnd_log.level_statement);
17943 END IF;
17944
17945 ------------------------------------------
17946 -- validation for credit_score_commentary8
17947 ------------------------------------------
17948
17949 -- credit_score_commentary8 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17950 validate_lookup (
17951 p_column => 'credit_score_commentary8',
17952 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17953 p_column_value => p_credit_rating_rec.credit_score_commentary8,
17954 x_return_status => x_return_status);
17955
17956 /*IF g_debug THEN
17957 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17958 'credit_score_commentary8 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17959 'x_return_status = ' || x_return_status, l_debug_prefix);
17960 END IF;
17961 */
17962 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17963 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17964 p_message=>'credit_score_commentary8 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17965 'x_return_status = ' || x_return_status,
17966 p_msg_level=>fnd_log.level_statement);
17967 END IF;
17968
17969 ------------------------------------------
17970 -- validation for credit_score_commentary9
17971 ------------------------------------------
17972
17973 -- credit_score_commentary9 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17974 validate_lookup (
17975 p_column => 'credit_score_commentary9',
17976 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17977 p_column_value => p_credit_rating_rec.credit_score_commentary9,
17978 x_return_status => x_return_status);
17979
17980 /*IF g_debug THEN
17981 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17982 'credit_score_commentary9 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17983 'x_return_status = ' || x_return_status, l_debug_prefix);
17984 END IF;
17985 */
17986 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17987 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17988 p_message=>'credit_score_commentary9 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17989 'x_return_status = ' || x_return_status,
17990 p_msg_level=>fnd_log.level_statement);
17991 END IF;
17992
17993 -------------------------------------------
17994 -- validation for credit_score_commentary10
17995 -------------------------------------------
17996
17997 -- credit_score_commentary10 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17998 validate_lookup (
17999 p_column => 'credit_score_commentary10',
18000 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
18001 p_column_value => p_credit_rating_rec.credit_score_commentary10,
18002 x_return_status => x_return_status);
18003
18004 /*IF g_debug THEN
18005 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18006 'credit_score_commentary10 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
18007 'x_return_status = ' || x_return_status, l_debug_prefix);
18008 END IF;
18009 */
18010 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18011 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18012 p_message=>'credit_score_commentary10 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
18013 'x_return_status = ' || x_return_status,
18014 p_msg_level=>fnd_log.level_statement);
18015 END IF;
18016
18017 ------------------------------------------
18018 -- validation for failure_score_commentary
18019 ------------------------------------------
18020
18021 -- failure_score_commentary is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18022 validate_lookup (
18023 p_column => 'failure_score_commentary',
18024 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18025 p_column_value => p_credit_rating_rec.failure_score_commentary,
18026 x_return_status => x_return_status);
18027
18028 /*IF g_debug THEN
18029 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18030 'failure_score_commentary should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18031 'x_return_status = ' || x_return_status, l_debug_prefix);
18032 END IF;
18033 */
18034 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18035 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18036 p_message=>'failure_score_commentary should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18037 'x_return_status = ' || x_return_status,
18038 p_msg_level=>fnd_log.level_statement);
18039 END IF;
18040
18041 -------------------------------------------
18042 -- validation for failure_score_commentary2
18043 -------------------------------------------
18044
18045 -- failure_score_commentary2 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18046 validate_lookup (
18047 p_column => 'failure_score_commentary2',
18048 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18049 p_column_value => p_credit_rating_rec.failure_score_commentary2,
18050 x_return_status => x_return_status);
18051
18052 /*IF g_debug THEN
18053 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18054 'failure_score_commentary2 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18055 'x_return_status = ' || x_return_status, l_debug_prefix);
18056 END IF;
18057 */
18058 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18059 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18060 p_message=>'failure_score_commentary2 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18061 'x_return_status = ' || x_return_status,
18062 p_msg_level=>fnd_log.level_statement);
18063 END IF;
18064
18065 -------------------------------------------
18066 -- validation for failure_score_commentary3
18067 -------------------------------------------
18068
18069 -- failure_score_commentary3 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18070 validate_lookup (
18071 p_column => 'failure_score_commentary3',
18072 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18073 p_column_value => p_credit_rating_rec.failure_score_commentary3,
18074 x_return_status => x_return_status);
18075
18076 /*IF g_debug THEN
18077 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18078 'failure_score_commentary2 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18079 'x_return_status = ' || x_return_status, l_debug_prefix);
18080 END IF;
18081 */
18082 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18083 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18084 p_message=>'failure_score_commentary2 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18085 'x_return_status = ' || x_return_status,
18086 p_msg_level=>fnd_log.level_statement);
18087 END IF;
18088
18089 -------------------------------------------
18090 -- validation for failure_score_commentary4
18091 -------------------------------------------
18092
18093 -- failure_score_commentary4 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18094 validate_lookup (
18095 p_column => 'failure_score_commentary4',
18096 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18097 p_column_value => p_credit_rating_rec.failure_score_commentary4,
18098 x_return_status => x_return_status);
18099
18100 /*IF g_debug THEN
18101 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18102 'failure_score_commentary4 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18103 'x_return_status = ' || x_return_status, l_debug_prefix);
18104 END IF;
18105 */
18106 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18107 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18108 p_message=>'failure_score_commentary4 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18109 'x_return_status = ' || x_return_status,
18110 p_msg_level=>fnd_log.level_statement);
18111 END IF;
18112
18113 -------------------------------------------
18114 -- validation for failure_score_commentary5
18115 -------------------------------------------
18116
18117 -- failure_score_commentary5 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18118 validate_lookup (
18119 p_column => 'failure_score_commentary5',
18120 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18121 p_column_value => p_credit_rating_rec.failure_score_commentary5,
18122 x_return_status => x_return_status);
18123
18124 /*IF g_debug THEN
18125 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18126 'failure_score_commentary5 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18127 'x_return_status = ' || x_return_status, l_debug_prefix);
18128 END IF;
18129 */
18130 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18131 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18132 p_message=>'failure_score_commentary5 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18133 'x_return_status = ' || x_return_status,
18134 p_msg_level=>fnd_log.level_statement);
18135 END IF;
18136
18137 -------------------------------------------
18138 -- validation for failure_score_commentary6
18139 -------------------------------------------
18140
18141 -- failure_score_commentary6 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18142 validate_lookup (
18143 p_column => 'failure_score_commentary6',
18144 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18145 p_column_value => p_credit_rating_rec.failure_score_commentary6,
18146 x_return_status => x_return_status);
18147
18148 /*IF g_debug THEN
18149 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18150 'failure_score_commentary6 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18151 'x_return_status = ' || x_return_status, l_debug_prefix);
18152 END IF;
18153 */
18154 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18155 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18156 p_message=>'failure_score_commentary6 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18157 'x_return_status = ' || x_return_status,
18158 p_msg_level=>fnd_log.level_statement);
18159 END IF;
18160
18161 -------------------------------------------
18162 -- validation for failure_score_commentary7
18163 -------------------------------------------
18164
18165 -- failure_score_commentary7 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18166 validate_lookup (
18167 p_column => 'failure_score_commentary7',
18168 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18169 p_column_value => p_credit_rating_rec.failure_score_commentary7,
18170 x_return_status => x_return_status);
18171
18172 /*IF g_debug THEN
18173 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18174 'failure_score_commentary7 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18175 'x_return_status = ' || x_return_status, l_debug_prefix);
18176 END IF;
18177 */
18178 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18179 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18180 p_message=>'failure_score_commentary7 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18181 'x_return_status = ' || x_return_status,
18182 p_msg_level=>fnd_log.level_statement);
18183 END IF;
18184
18185 -------------------------------------------
18186 -- validation for failure_score_commentary8
18187 -------------------------------------------
18188
18189 -- failure_score_commentary8 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18190 validate_lookup (
18191 p_column => 'failure_score_commentary8',
18192 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18193 p_column_value => p_credit_rating_rec.failure_score_commentary8,
18194 x_return_status => x_return_status);
18195
18196 /*IF g_debug THEN
18197 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18198 'failure_score_commentary8 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18199 'x_return_status = ' || x_return_status, l_debug_prefix);
18200 END IF;
18201 */
18202 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18203 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18204 p_message=>'failure_score_commentary8 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18205 'x_return_status = ' || x_return_status,
18206 p_msg_level=>fnd_log.level_statement);
18207 END IF;
18208
18209 -------------------------------------------
18210 -- validation for failure_score_commentary9
18211 -------------------------------------------
18212
18213 -- failure_score_commentary9 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18214 validate_lookup (
18215 p_column => 'failure_score_commentary9',
18216 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18217 p_column_value => p_credit_rating_rec.failure_score_commentary9,
18218 x_return_status => x_return_status);
18219
18220 /*IF g_debug THEN
18221 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18222 'failure_score_commentary9 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18223 'x_return_status = ' || x_return_status, l_debug_prefix);
18224 END IF;
18225 */
18226 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18227 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18228 p_message=>'failure_score_commentary9 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18229 'x_return_status = ' || x_return_status,
18230 p_msg_level=>fnd_log.level_statement);
18231 END IF;
18232
18233 --------------------------------------------
18234 -- validation for failure_score_commentary10
18235 --------------------------------------------
18236
18237 -- failure_score_commentary10 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18238 validate_lookup (
18239 p_column => 'failure_score_commentary10',
18240 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18241 p_column_value => p_credit_rating_rec.failure_score_commentary10,
18242 x_return_status => x_return_status);
18243
18244 /*IF g_debug THEN
18245 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18246 'failure_score_commentary10 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18247 'x_return_status = ' || x_return_status, l_debug_prefix);
18248 END IF;
18249 */
18250 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18251 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18252 p_message=>'failure_score_commentary10 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18253 'x_return_status = ' || x_return_status,
18254 p_msg_level=>fnd_log.level_statement);
18255 END IF;
18256
18257 --------------------------------------------
18258 -- validation for credit_score_override_code
18259 --------------------------------------------
18260
18261 -- credit_score_override_code is lookup code in lookup type FAILURE_SCORE_OVERRIDE_CODE
18262 validate_lookup (
18263 p_column => 'credit_score_override_code',
18264 p_lookup_type => 'FAILURE_SCORE_OVERRIDE_CODE',
18265 p_column_value => p_credit_rating_rec.credit_score_override_code,
18266 x_return_status => x_return_status);
18267
18268 /*IF g_debug THEN
18269 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18270 'credit_score_override_code should be in lookup FAILURE_SCORE_OVERRIDE_CODE. ' ||
18271 'x_return_status = ' || x_return_status, l_debug_prefix);
18272 END IF;
18273 */
18274 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18275 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18276 p_message=>'credit_score_override_code should be in lookup FAILURE_SCORE_OVERRIDE_CODE. ' ||
18277 'x_return_status = ' || x_return_status,
18278 p_msg_level=>fnd_log.level_statement);
18279 END IF;
18280
18281 --------------------------------------------
18282 -- validation for debarment_ind
18283 --------------------------------------------
18284 /****Logical APIs - validation not required****/
18285 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
18286 -- debarment_ind is lookup code in lookup type YES/NO
18287 validate_lookup (
18288 p_column => 'debarment_ind',
18289 p_lookup_type => 'YES/NO',
18290 p_column_value => p_credit_rating_rec.debarment_ind,
18291 x_return_status => x_return_status);
18292
18293 /*IF g_debug THEN
18294 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18295 'debarment_ind should be in lookup YES/NO. ' ||
18296 'x_return_status = ' || x_return_status, l_debug_prefix);
18297 END IF;
18298 */
18299 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18300 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'debarment_ind should be in lookup YES/NO. ' ||
18301 'x_return_status = ' || x_return_status,
18302 p_msg_level=>fnd_log.level_statement);
18303 END IF;
18304 END IF;
18305
18306 --------------------------------------------
18307 -- validation for suit_ind
18308 --------------------------------------------
18309 /****Logical APIs - validation not required****/
18310 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
18311 -- suit_ind is lookup code in lookup type YES/NO
18312 validate_lookup (
18313 p_column => 'suit_ind',
18314 p_lookup_type => 'YES/NO',
18315 p_column_value => p_credit_rating_rec.suit_ind,
18316 x_return_status => x_return_status);
18317
18318 /*IF g_debug THEN
18319 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18320 'suit_ind should be in lookup YES/NO. ' ||
18321 'x_return_status = ' || x_return_status, l_debug_prefix);
18322 END IF;
18323 */
18324 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18325 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'suit_ind should be in lookup YES/NO. ' ||
18326 'x_return_status = ' || x_return_status,
18327 p_msg_level=>fnd_log.level_statement);
18328 END IF;
18329 END IF;
18330
18331 --------------------------------------------
18332 -- validation for lien_ind
18333 --------------------------------------------
18334 /****Logical APIs - validation not required****/
18335 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
18336 -- lien_ind is lookup code in lookup type YES/NO
18337 validate_lookup (
18338 p_column => 'lien_ind',
18339 p_lookup_type => 'YES/NO',
18340 p_column_value => p_credit_rating_rec.lien_ind,
18341 x_return_status => x_return_status);
18342
18343 /*IF g_debug THEN
18344 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18345 'lien_ind should be in lookup YES/NO. ' ||
18346 'x_return_status = ' || x_return_status, l_debug_prefix);
18347 END IF;
18348 */
18349 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18350 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'lien_ind should be in lookup YES/NO. ' ||
18351 'x_return_status = ' || x_return_status,
18352 p_msg_level=>fnd_log.level_statement);
18353 END IF;
18354 END IF;
18355
18356 --------------------------------------------
18357 -- validation for judgement_ind
18358 --------------------------------------------
18359 /****Logical APIs - validation not required****/
18360 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
18361 -- judgement_ind is lookup code in lookup type YES/NO
18362 validate_lookup (
18363 p_column => 'judgement_ind',
18364 p_lookup_type => 'YES/NO',
18365 p_column_value => p_credit_rating_rec.judgement_ind,
18366 x_return_status => x_return_status);
18367
18368 /*IF g_debug THEN
18369 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18370 'judgement_ind should be in lookup YES/NO. ' ||
18371 'x_return_status = ' || x_return_status, l_debug_prefix);
18372 END IF;
18373 */
18374 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18375 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'judgement_ind should be in lookup YES/NO. ' ||
18376 'x_return_status = ' || x_return_status,
18377 p_msg_level=>fnd_log.level_statement);
18378 END IF;
18379 END IF;
18380
18381 --------------------------------------------
18382 -- validation for no_trade_ind
18383 --------------------------------------------
18384 /****Logical APIs - validation not required****/
18385 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
18386 -- no_trade_ind is lookup code in lookup type YES/NO
18387 validate_lookup (
18388 p_column => 'no_trade_ind',
18389 p_lookup_type => 'YES/NO',
18390 p_column_value => p_credit_rating_rec.no_trade_ind,
18391 x_return_status => x_return_status);
18392
18393 /*IF g_debug THEN
18394 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18395 'no_trade_ind should be in lookup YES/NO. ' ||
18396 'x_return_status = ' || x_return_status, l_debug_prefix);
18397 END IF;
18398 */
18399 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18400 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'no_trade_ind should be in lookup YES/NO. ' ||
18401 'x_return_status = ' || x_return_status,
18402 p_msg_level=>fnd_log.level_statement);
18403 END IF;
18404 END IF;
18405
18406 --------------------------------------------
18407 -- validation for prnt_hq_bkcy_ind
18408 --------------------------------------------
18409 --Bug 2898670: prnt_hq_bkcy_ind lookup code should be in the
18410 --lookup_type PRNT_HQ_IND instead of YES/NO
18411 validate_lookup (
18412 p_column => 'prnt_hq_bkcy_ind',
18413 p_lookup_type => 'PRNT_HQ_IND',
18414 p_column_value => p_credit_rating_rec.prnt_hq_bkcy_ind,
18415 x_return_status => x_return_status);
18416
18417 /*IF g_debug THEN
18418 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18419 'prnt_hq_bkcy_ind should be in lookup PRNT_HQ_IND. ' ||
18420 'x_return_status = ' || x_return_status, l_debug_prefix);
18421 END IF;
18422 */
18423 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18424 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'prnt_hq_bkcy_ind should be in lookup PRNT_HQ_IND. ' ||
18425 'x_return_status = ' || x_return_status,
18426 p_msg_level=>fnd_log.level_statement);
18427 END IF;
18428
18429 ----------------------------------------------
18430 -- validation for maximum_credit_currency_code
18431 ----------------------------------------------
18432
18433 -- maximum_credit_currency_code is foreign key to FND_CURRENCIES.CURRENCY_CODE
18434 IF p_create_update_flag = 'C'
18435 AND
18436 p_credit_rating_rec.maximum_credit_currency_code IS NOT NULL
18437 AND
18438 p_credit_rating_rec.maximum_credit_currency_code <> fnd_api.g_miss_char
18439 THEN
18440 BEGIN
18441 --Bug 2898670: Changed the validation as the foreign key validation
18442 --has to be against active records
18443 --Bug 3877782. Added the condition to consider start_date_active and end_date_active.
18444 SELECT 'Y'
18445 INTO l_dummy
18446 FROM fnd_currencies f
18447 WHERE f.currency_code = p_credit_rating_rec.maximum_credit_currency_code
18448 AND currency_flag = 'Y'
18449 AND enabled_flag = 'Y'
18450 AND trunc(sysdate) between trunc(nvl(start_date_active,sysdate))
18451 and trunc(nvl(end_date_active,sysdate));
18452 EXCEPTION
18453 WHEN NO_DATA_FOUND THEN
18454 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
18455 fnd_message.set_token('FK', 'currency_code');
18456 fnd_message.set_token('COLUMN', 'maximum_credit_currency_code');
18457 fnd_message.set_token('TABLE', 'fnd_currencies');
18458 fnd_msg_pub.add;
18459 x_return_status := fnd_api.g_ret_sts_error;
18460 END;
18461
18462 /*IF g_debug THEN
18463 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18464 'maximum_credit_currency_code has foreign key fnd_currencies.currency_code. ' ||
18465 'x_return_status = ' || x_return_status, l_debug_prefix);
18466 END IF;
18467 */
18468 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18469 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18470 p_message=>'maximum_credit_currency_code has foreign key fnd_currencies.currency_code. ' ||
18471 'x_return_status = ' || x_return_status,
18472 p_msg_level=>fnd_log.level_statement);
18473 END IF;
18474
18475 END IF;
18476
18477
18478 ------------------------
18479 -- validation for status
18480 ------------------------
18481 /****Logical APIs - validation not required****/
18482 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
18483 -- status is lookup code in lookup type REGISTRY_STATUS
18484 IF p_credit_rating_rec.status IS NOT NULL
18485 AND
18486 p_credit_rating_rec.status <> fnd_api.g_miss_char
18487 AND
18488 (p_create_update_flag = 'C'
18489 OR
18490 (p_create_update_flag = 'U'
18491 AND
18492 p_credit_rating_rec.status <> NVL(l_status, fnd_api.g_miss_char)
18493 )
18494 )
18495 THEN
18496 validate_lookup (
18497 p_column => 'status',
18498 p_lookup_type => 'REGISTRY_STATUS',
18499 p_column_value => p_credit_rating_rec.status,
18500 x_return_status => x_return_status);
18501
18502 /*IF g_debug THEN
18503 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18504 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
18505 'x_return_status = ' || x_return_status, l_debug_prefix);
18506 END IF;
18507 */
18508 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18509 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18510 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
18511 'x_return_status = ' || x_return_status,
18512 p_msg_level=>fnd_log.level_statement);
18513 END IF;
18514
18515 END IF;
18516 END IF;
18517
18518 -- status cannot be set to null during update
18519 IF p_create_update_flag = 'U' THEN
18520 validate_cannot_update_to_null (
18521 p_column => 'status',
18522 p_column_value => p_credit_rating_rec.status,
18523 x_return_status => x_return_status);
18524 END IF;
18525
18526 --------------------------------------------------------
18527 -- validate credit_score_natl_percentile ( Bug 3181460 )
18528 --------------------------------------------------------
18529 -- This column should have a value within the range 0 - 100.
18530
18531 IF p_credit_rating_rec.credit_score_natl_percentile IS NOT NULL AND
18532 p_credit_rating_rec.credit_score_natl_percentile <> FND_API.G_MISS_NUM AND
18533 (p_create_update_flag = 'C' OR
18534 (
18535 p_create_update_flag = 'U' AND
18536 p_credit_rating_rec.credit_score_natl_percentile <> l_credit_score_natl_percentile
18537 )
18538 )
18539 THEN
18540 IF p_credit_rating_rec.credit_score_natl_percentile < 0 OR
18541 p_credit_rating_rec.credit_score_natl_percentile > 100
18542 THEN
18543 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_PERCENTAGE');
18544 FND_MESSAGE.SET_TOKEN('INVALIDVAL', p_credit_rating_rec.credit_score_natl_percentile);
18545 FND_MESSAGE.SET_TOKEN('ATTRIBUTE', 'credit_score_natl_percentile');
18546 FND_MSG_PUB.ADD;
18547 x_return_status := fnd_api.g_ret_sts_error;
18548 END IF;
18549 END IF;
18550
18551 ----------------------------------------------------------
18552 -- validate failure_score_natnl_percentile ( Bug 3181460 )
18553 ----------------------------------------------------------
18554 -- This column should have a value within the range 0 - 100.
18555
18556 IF p_credit_rating_rec.failure_score_natnl_percentile IS NOT NULL AND
18557 p_credit_rating_rec.failure_score_natnl_percentile <> FND_API.G_MISS_NUM AND
18558 (
18559 p_create_update_flag = 'C' OR
18560 (
18561 p_create_update_flag = 'U' AND
18562 p_credit_rating_rec.failure_score_natnl_percentile <> l_fail_score_natnl_percentile
18563 )
18564 )
18565 THEN
18566 IF p_credit_rating_rec.failure_score_natnl_percentile < 0 OR
18567 p_credit_rating_rec.failure_score_natnl_percentile > 100
18568 THEN
18569 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_PERCENTAGE');
18570 FND_MESSAGE.SET_TOKEN('INVALIDVAL', p_credit_rating_rec.failure_score_natnl_percentile);
18571 FND_MESSAGE.SET_TOKEN('ATTRIBUTE', 'failure_score_natnl_percentile');
18572 FND_MSG_PUB.ADD;
18573 x_return_status := fnd_api.g_ret_sts_error;
18574 END IF;
18575 END IF;
18576
18577
18578 --------------------------------------
18579 -- validate created_by_module
18580 --------------------------------------
18581
18582 validate_created_by_module(
18583 p_create_update_flag => p_create_update_flag,
18584 p_created_by_module => p_credit_rating_rec.created_by_module,
18585 p_old_created_by_module => l_created_by_module,
18586 x_return_status => x_return_status);
18587
18588 --------------------------------------------------------------
18589 -- validate content_source_type and actual_content_source_type
18590 --------------------------------------------------------------
18591 /* SSM SST Integration and Extension
18592 * actual_content_source is now a foreign key to HZ_ORIG_SYSTEMS_B.orig_system with sst_flag = 'Y'.
18593 -- actual_content_source is lookup code in lookup type CONTENT_SOURCE_TYPE
18594 validate_lookup (
18595 p_column => 'actual_content_source',
18596 p_lookup_type => 'CONTENT_SOURCE_TYPE',
18597 p_column_value => p_credit_rating_rec.actual_content_source,
18598 x_return_status => x_return_status);
18599 */
18600 /*IF g_debug THEN
18601 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18602 'actual_content_source should be in lookup CONTENT_SOURCE_TYPE. ' ||
18603 'x_return_status = ' || x_return_status, l_debug_prefix);
18604 END IF;
18605 */
18606 /*
18607 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18608 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18609 p_message=>'actual_content_source should be in lookup CONTENT_SOURCE_TYPE. ' ||
18610 'x_return_status = ' || x_return_status,
18611 p_msg_level=>fnd_log.level_statement);
18612 END IF;
18613 */
18614 HZ_MIXNM_UTILITY.ValidateContentSource (
18615 p_api_version => 'V2',
18616 p_create_update_flag => p_create_update_flag,
18617 p_check_update_privilege => 'Y',
18618 p_content_source_type => 'USER_ENTERED',
18619 p_old_content_source_type => 'USER_ENTERED',
18620 p_actual_content_source => p_credit_rating_rec.actual_content_source,
18621 p_old_actual_content_source => l_actual_content_source,
18622 p_entity_name => 'HZ_CREDIT_RATINGS',
18623 x_return_status => x_return_status );
18624
18625 -- Debug info.
18626 /*IF g_debug THEN
18627 hz_utility_v2pub.debug ('validate_credit_rating (-)');
18628 END IF;
18629 */
18630 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
18631 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_credit_rating (-)',
18632 p_msg_level=>fnd_log.level_procedure);
18633 END IF;
18634
18635 --disable_debug;
18636
18637 END validate_credit_rating;
18638
18639
18640 /**
18641 * PROCEDURE validate_created_by_module
18642 *
18643 * DESCRIPTION
18644 * validate created by module
18645 * ARGUMENTS
18646 * IN:
18647 * p_create_update_flag create update flag
18648 * p_created_by_module created by module
18649 * p_old_created_by_module old value of created by module
18650 * x_return_status return status
18651 */
18652
18653 PROCEDURE validate_created_by_module (
18654 p_create_update_flag IN VARCHAR2,
18655 p_created_by_module IN VARCHAR2,
18656 p_old_created_by_module IN VARCHAR2,
18657 x_return_status IN OUT NOCOPY VARCHAR2
18658 ) IS
18659
18660 l_column CONSTANT VARCHAR2(30) := 'created_by_module';
18661
18662 BEGIN
18663
18664 -- skip mandatory and non-updateable check from logical API
18665 IF HZ_UTILITY_V2PUB.G_CALLING_API IS NULL THEN
18666 -- created_by_module is mandatory field
18667 -- Since created_by_module is non-updateable, we only need to check mandatory
18668 -- during creation.
18669
18670 IF p_create_update_flag = 'C' THEN
18671 validate_mandatory (
18672 p_create_update_flag => p_create_update_flag,
18673 p_column => l_column,
18674 p_column_value => p_created_by_module,
18675 x_return_status => x_return_status);
18676
18677 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
18678 hz_utility_v2pub.debug(
18679 p_prefix => '',
18680 p_message => l_column || ' is mandatory. ' ||
18681 'x_return_status = ' || x_return_status,
18682 p_msg_level => fnd_log.level_statement);
18683 END IF;
18684 END IF;
18685
18686 -- created_by_module is non-updateable field. But it can be updated from
18687 -- NULL to some value.
18688
18689 IF p_create_update_flag = 'U' AND
18690 p_created_by_module IS NOT NULL
18691 THEN
18692 validate_nonupdateable (
18693 p_column => l_column,
18694 p_column_value => p_created_by_module,
18695 p_old_column_value => p_old_created_by_module,
18696 p_restricted => 'N',
18697 x_return_status => x_return_status);
18698
18699 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
18700 hz_utility_v2pub.debug(
18701 p_prefix => '',
18702 p_message => l_column || ' is non-updateable. It can be updated from NULL to a value. ' ||
18703 'x_return_status = ' || x_return_status,
18704 p_msg_level => fnd_log.level_statement);
18705 END IF;
18706 END IF;
18707 END IF;
18708
18709 -- created_by_module is lookup code in lookup type HZ_CREATED_BY_MODULES
18710 IF p_created_by_module IS NOT NULL AND
18711 p_created_by_module <> fnd_api.g_miss_char AND
18712 (p_create_update_flag = 'C' OR
18713 (p_create_update_flag = 'U' AND
18714 (p_old_created_by_module IS NULL OR
18715 p_created_by_module <> p_old_created_by_module)))
18716 THEN
18717 validate_lookup (
18718 p_column => l_column,
18719 p_lookup_type => 'HZ_CREATED_BY_MODULES',
18720 p_column_value => p_created_by_module,
18721 x_return_status => x_return_status);
18722
18723 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
18724 hz_utility_v2pub.debug(
18725 p_prefix => '',
18726 p_message => l_column || ' is lookup code in lookup type HZ_CREATED_BY_MODULES. ' ||
18727 'x_return_status = ' || x_return_status,
18728 p_msg_level => fnd_log.level_statement);
18729 END IF;
18730 END IF;
18731
18732 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
18733 hz_utility_v2pub.debug(
18734 p_prefix => '',
18735 p_message => 'after validate ' || l_column || ' ... ' ||
18736 'x_return_status = ' || x_return_status,
18737 p_msg_level => fnd_log.level_statement);
18738 END IF;
18739
18740 END validate_created_by_module;
18741
18742
18743 /**
18744 * PROCEDURE validate_application_id
18745 *
18746 * DESCRIPTION
18747 * validate application id
18748 * ARGUMENTS
18749 * IN:
18750 * p_create_update_flag create update flag
18751 * p_application_id application id
18752 * p_old_application_id old value of application id
18753 * x_return_status return status
18754 */
18755
18756 PROCEDURE validate_application_id (
18757 p_create_update_flag IN VARCHAR2,
18758 p_application_id IN NUMBER,
18759 p_old_application_id IN NUMBER,
18760 x_return_status IN OUT NOCOPY VARCHAR2
18761 ) IS
18762
18763 l_column CONSTANT VARCHAR2(30) := 'application_id';
18764
18765 BEGIN
18766
18767 -- skip non-updateable check from logical API
18768 IF HZ_UTILITY_V2PUB.G_CALLING_API IS NULL THEN
18769 -- application_id is non-updateable field. But it can be updated from NULL
18770 -- to some value.
18771
18772 IF p_create_update_flag = 'U' AND
18773 p_application_id IS NOT NULL
18774 THEN
18775 validate_nonupdateable (
18776 p_column => l_column,
18777 p_column_value => p_application_id,
18778 p_old_column_value => p_old_application_id,
18779 p_restricted => 'N',
18780 x_return_status => x_return_status);
18781
18782 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
18783 hz_utility_v2pub.debug(
18784 p_prefix => '',
18785 p_message => l_column || ' is non-updateable. It can be updated from NULL to a value. ' ||
18786 'x_return_status = ' || x_return_status,
18787 p_msg_level => fnd_log.level_statement);
18788 END IF;
18789 END IF;
18790 END IF;
18791
18792 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
18793 hz_utility_v2pub.debug(
18794 p_prefix => '',
18795 p_message => 'after validate ' || l_column || ' ... ' ||
18796 'x_return_status = ' || x_return_status,
18797 p_msg_level => fnd_log.level_statement);
18798 END IF;
18799
18800 END validate_application_id;
18801
18802 END hz_registry_validate_v2pub;