[Home] [Help]
PACKAGE BODY: APPS.HZ_REGISTRY_VALIDATE_V2PUB
Source
1 PACKAGE BODY hz_registry_validate_v2pub AS
2 /*$Header: ARH2RGVB.pls 120.126.12010000.2 2008/09/22 11:46:45 ajaising 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 <> l_global_location_number
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 BEGIN
6754 SELECT 'Y'
6755 INTO l_dummy
6756 FROM HZ_PARTY_SITE_USES
6757 -- Bug 3988537.
6758 WHERE PARTY_SITE_ID = nvl(p_party_site_use_rec.party_site_id,l_party_site_id)
6759 AND SITE_USE_TYPE = nvl(p_party_site_use_rec.site_use_type,l_site_use_type)
6760 AND STATUS = 'A'
6761 AND PARTY_SITE_USE_ID <> NVL(p_party_site_use_rec.party_site_use_id, fnd_api.g_miss_num);
6762
6763 fnd_message.set_name('AR', 'HZ_API_UNIQUE_SITE_USE_TYPE');
6764 fnd_msg_pub.add;
6765 x_return_status := fnd_api.g_ret_sts_error;
6766
6767 EXCEPTION
6768 WHEN NO_DATA_FOUND THEN
6769 NULL;
6770 END;
6771
6772 /*IF g_debug THEN
6773 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6774 'combination of party_site_id and site_use_type is unique. ' ||
6775 'x_return_status = ' || x_return_status, l_debug_prefix);
6776 END IF;
6777 */
6778 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6779 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6780 p_message=>'combination of party_site_id and site_use_type is unique. ' ||
6781 'x_return_status = ' || x_return_status,
6782 p_msg_level=>fnd_log.level_statement);
6783 END IF;
6784
6785
6786 ------------------
6787 -- validate status
6788 ------------------
6789
6790 -- status cannot be set to null during update
6791 IF p_create_update_flag = 'U' THEN
6792 validate_cannot_update_to_null (
6793 p_column => 'status',
6794 p_column_value => p_party_site_use_rec.status,
6795 x_return_status => x_return_status);
6796 END IF;
6797
6798 /****Logical APIs - validation not required****/
6799 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
6800 -- status is lookup code in lookup type REGISTRY_STATUS
6801 IF p_party_site_use_rec.status IS NOT NULL
6802 AND
6803 p_party_site_use_rec.status <> fnd_api.g_miss_char
6804 AND
6805 (p_create_update_flag = 'C'
6806 OR
6807 (p_create_update_flag = 'U'
6808 AND
6809 p_party_site_use_rec.status <> NVL(l_status, fnd_api.g_miss_char)
6810 )
6811 )
6812 THEN
6813 validate_lookup (
6814 p_column => 'status',
6815 p_lookup_type => 'REGISTRY_STATUS',
6816 p_column_value => p_party_site_use_rec.status,
6817 x_return_status => x_return_status);
6818
6819 /*IF g_debug THEN
6820 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6821 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
6822 'x_return_status = ' || x_return_status, l_debug_prefix);
6823 END IF;
6824 */
6825 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6826 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6827 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
6828 'x_return_status = ' || x_return_status,
6829 p_msg_level=>fnd_log.level_statement);
6830 END IF;
6831
6832
6833 END IF;
6834 END IF;
6835
6836 --------------------------------------
6837 -- validate created_by_module
6838 --------------------------------------
6839
6840 validate_created_by_module(
6841 p_create_update_flag => p_create_update_flag,
6842 p_created_by_module => p_party_site_use_rec.created_by_module,
6843 p_old_created_by_module => l_created_by_module,
6844 x_return_status => x_return_status);
6845
6846 --------------------------------------
6847 -- validate application_id
6848 --------------------------------------
6849
6850 validate_application_id(
6851 p_create_update_flag => p_create_update_flag,
6852 p_application_id => p_party_site_use_rec.application_id,
6853 p_old_application_id => l_application_id,
6854 x_return_status => x_return_status);
6855
6856 -- Bug 2065191.status and primary_per_type cannot be 'I' and 'Y' at the same time.
6857 ----------------------------------------
6858 -- validate primary_per_type and status.
6859 ----------------------------------------
6860
6861 IF NVL(p_party_site_use_rec.primary_per_type,l_primary_per_type) ='Y'
6862 AND NVL(p_party_site_use_rec.status,l_status) = 'I'
6863 THEN
6864 FND_MESSAGE.SET_NAME('AR','HZ_API_INACTIVE_CANNOT_PRIM');
6865 FND_MESSAGE.SET_TOKEN('ENTITY','Party Site Use');
6866 -- FND_MESSAGE.SET_TOKEN('COLUMN1','PRIMARY_PER_TYPE');
6867 -- FND_MESSAGE.SET_TOKEN('COLUMN2','STATUS');
6868 FND_MSG_PUB.ADD;
6869 x_return_status := FND_API.G_RET_STS_ERROR;
6870 END IF;
6871
6872
6873 -- Debug info.
6874 /*IF g_debug THEN
6875 hz_utility_v2pub.debug ('validate_party_site_use (-)');
6876 END IF;
6877 */
6878 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6879 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_party_site_use (-)',
6880 p_msg_level=>fnd_log.level_procedure);
6881 END IF;
6882
6883
6884 --disable_debug;
6885
6886 END validate_party_site_use;
6887
6888 /**
6889 * PROCEDURE validate_org_contact
6890 *
6891 * DESCRIPTION
6892 * Validates org contact record. Checks for
6893 * uniqueness
6894 * lookup types
6895 * mandatory columns
6896 * non-updateable fields
6897 * foreign key validations
6898 * other validations
6899 *
6900 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
6901 *
6902 * ARGUMENTS
6903 * IN:
6904 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
6905 * p_org_contact_rec Org contact record.
6906 * p_rowid Rowid of the record (used only in update mode).
6907 * IN/OUT:
6908 * x_return_status Return status after the call. The status can
6909 * be FND_API.G_RET_STS_SUCCESS (success),
6910 * fnd_api.g_ret_sts_error (error),
6911 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
6912 *
6913 * NOTES
6914 *
6915 * MODIFICATION HISTORY
6916 *
6917 * 07-23-2001 Indrajit Sen o Created.
6918 *
6919 */
6920
6921 PROCEDURE validate_org_contact(
6922 p_create_update_flag IN VARCHAR2,
6923 p_org_contact_rec IN HZ_PARTY_CONTACT_V2PUB.ORG_CONTACT_REC_TYPE,
6924 p_rowid IN ROWID,
6925 x_return_status IN OUT NOCOPY VARCHAR2
6926 ) IS
6927
6928 l_party_relationship_id NUMBER;
6929 l_dummy VARCHAR2(1);
6930 l_created_by_module VARCHAR2(150);
6931 l_application_id NUMBER;
6932 -- l_title VARCHAR2(30);
6933 l_job_title_code VARCHAR2(30);
6934 l_department_code VARCHAR2(30);
6935 l_debug_prefix VARCHAR2(30) := '';
6936
6937 BEGIN
6938
6939 --enable_debug;
6940
6941 -- Debug info.
6942 /*IF g_debug THEN
6943 hz_utility_v2pub.debug ('validate_org_contact (+)');
6944 END IF;
6945 */
6946 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6947 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_org_contact (+)',
6948 p_msg_level=>fnd_log.level_procedure);
6949 END IF;
6950
6951
6952 -- select fields for later use during update.
6953 IF p_create_update_flag = 'U' THEN
6954 SELECT PARTY_RELATIONSHIP_ID,
6955 -- TITLE,
6956 JOB_TITLE_CODE,
6957 DEPARTMENT_CODE,
6958 CREATED_BY_MODULE,
6959 APPLICATION_ID
6960 INTO l_party_relationship_id,
6961 -- l_title,
6962 l_job_title_code,
6963 l_department_code,
6964 l_created_by_module,
6965 l_application_id
6966 FROM HZ_ORG_CONTACTS
6967 WHERE ROWID = p_rowid;
6968 END IF;
6969
6970 ---------------------------------
6971 -- validate party_relationship_id
6972 ---------------------------------
6973
6974 -- party_relationship_id is non-updateable field
6975 IF p_create_update_flag = 'U' THEN
6976 validate_nonupdateable (
6977 p_column => 'party_relationship_id',
6978 p_column_value => p_org_contact_rec.party_rel_rec.relationship_id,
6979 p_old_column_value => l_party_relationship_id,
6980 x_return_status => x_return_status);
6981
6982 /*IF g_debug THEN
6983 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
6984 'party_relationship_id is non-updateable field. ' ||
6985 'x_return_status = ' || x_return_status, l_debug_prefix);
6986 END IF;
6987 */
6988 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6989 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_relationship_id is non-updateable field. ' ||
6990 'x_return_status = ' || x_return_status,
6991 p_msg_level=>fnd_log.level_statement);
6992 END IF;
6993
6994
6995 END IF;
6996
6997 /* comment out the validation as the title column is obsoleted in r12
6998 -----------------
6999 -- validate title
7000 -----------------
7001
7002 -- title is lookup code in lookup type CONTACT_TITLE
7003 IF p_org_contact_rec.title IS NOT NULL
7004 AND
7005 p_org_contact_rec.title <> fnd_api.g_miss_char
7006 AND
7007 (p_create_update_flag = 'C'
7008 OR
7009 (p_create_update_flag = 'U'
7010 AND
7011 p_org_contact_rec.title <> NVL(l_title, fnd_api.g_miss_char)
7012 )
7013 )
7014 THEN
7015 validate_lookup (
7016 p_column => 'title',
7017 p_lookup_type => 'CONTACT_TITLE',
7018 p_column_value => p_org_contact_rec.title,
7019 x_return_status => x_return_status);
7020
7021 -- IF g_debug THEN
7022 -- hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7023 -- 'title is lookup code in lookup type CONTACT_TITLE. ' ||
7024 -- 'x_return_status = ' || x_return_status, l_debug_prefix);
7025 --- END IF;
7026
7027 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7028 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'title is lookup code in lookup type CONTACT_TITLE. ' ||
7029 'x_return_status = ' || x_return_status,
7030 p_msg_level=>fnd_log.level_statement);
7031 END IF;
7032
7033
7034 END IF;
7035 */
7036
7037 --------------------------
7038 -- validate job_title_code
7039 --------------------------
7040
7041 -- job_title_code is lookup code in lookup type RESPONSIBILITY
7042 IF p_org_contact_rec.job_title_code IS NOT NULL
7043 AND
7044 p_org_contact_rec.job_title_code <> fnd_api.g_miss_char
7045 AND
7046 (p_create_update_flag = 'C'
7047 OR
7048 (p_create_update_flag = 'U'
7049 AND
7050 p_org_contact_rec.job_title_code <> NVL(l_job_title_code, fnd_api.g_miss_char)
7051 )
7052 )
7053 THEN
7054 validate_lookup (
7055 p_column => 'job_title_code',
7056 p_lookup_type => 'RESPONSIBILITY',
7057 p_column_value => p_org_contact_rec.job_title_code,
7058 x_return_status => x_return_status);
7059
7060 /*IF g_debug THEN
7061 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7062 'job_title_code is lookup code in lookup type RESPONSIBILITY. ' ||
7063 'x_return_status = ' || x_return_status, l_debug_prefix);
7064 END IF;
7065 */
7066 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7067 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7068 p_message=>'job_title_code is lookup code in lookup type RESPONSIBILITY. ' ||
7069 'x_return_status = ' || x_return_status,
7070 p_msg_level=>fnd_log.level_statement);
7071 END IF;
7072
7073
7074 END IF;
7075
7076 -------------------------------
7077 -- validate decision_maker_flag
7078 -------------------------------
7079 /****Logical APIs - validation not required****/
7080 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
7081 -- decision_maker_flag is lookup code in lookup type YES/NO
7082 validate_lookup (
7083 p_column => 'decision_maker_flag',
7084 p_lookup_type => 'YES/NO',
7085 p_column_value => p_org_contact_rec.decision_maker_flag,
7086 x_return_status => x_return_status);
7087
7088 /*IF g_debug THEN
7089 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7090 'decision_maker_flag should be in lookup YES/NO. ' ||
7091 'x_return_status = ' || x_return_status, l_debug_prefix);
7092 END IF;
7093 */
7094 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7095 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'decision_maker_flag should be in lookup YES/NO. ' ||
7096 'x_return_status = ' || x_return_status,
7097 p_msg_level=>fnd_log.level_statement);
7098 END IF;
7099 END IF;
7100
7101 ------------------------------
7102 -- validate reference_use_flag
7103 ------------------------------
7104 /****Logical APIs - validation not required****/
7105 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
7106 -- reference_use_flag is lookup code in lookup type YES/NO
7107 validate_lookup (
7108 p_column => 'reference_use_flag',
7109 p_lookup_type => 'YES/NO',
7110 p_column_value => p_org_contact_rec.reference_use_flag,
7111 x_return_status => x_return_status);
7112
7113 /*IF g_debug THEN
7114 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7115 'reference_use_flag should be in lookup YES/NO. ' ||
7116 'x_return_status = ' || x_return_status, l_debug_prefix);
7117 END IF;
7118 */
7119 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7120 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'reference_use_flag should be in lookup YES/NO. ' ||
7121 'x_return_status = ' || x_return_status,
7122 p_msg_level=>fnd_log.level_statement);
7123 END IF;
7124 END IF;
7125
7126 ---------------------------
7127 -- validate department_code
7128 ---------------------------
7129
7130 -- department_code is lookup code in lookup type DEPARTMENT_TYPE
7131 IF p_org_contact_rec.department_code IS NOT NULL
7132 AND
7133 p_org_contact_rec.department_code <> fnd_api.g_miss_char
7134 AND
7135 (p_create_update_flag = 'C'
7136 OR
7137 (p_create_update_flag = 'U'
7138 AND
7139 p_org_contact_rec.department_code <> NVL(l_department_code, fnd_api.g_miss_char)
7140 )
7141 )
7142 THEN
7143 validate_lookup (
7144 p_column => 'department_code',
7145 p_lookup_type => 'DEPARTMENT_TYPE',
7146 p_column_value => p_org_contact_rec.department_code,
7147 x_return_status => x_return_status);
7148
7149 /*IF g_debug THEN
7150 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7151 'department_code is lookup code in lookup type DEPARTMENT_TYPE. ' ||
7152 'x_return_status = ' || x_return_status, l_debug_prefix);
7153 END IF;
7154 */
7155 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7156 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7157 p_message=>'department_code is lookup code in lookup type DEPARTMENT_TYPE. ' ||
7158 'x_return_status = ' || x_return_status,
7159 p_msg_level=>fnd_log.level_statement);
7160 END IF;
7161
7162
7163 END IF;
7164
7165 -------------------------
7166 -- validate party_site_id
7167 -------------------------
7168
7169 -- if party_site_id is passed, then it must be validated as
7170 -- foreign key to hz_party_sites.party_site_id
7171 IF p_org_contact_rec.party_site_id IS NOT NULL
7172 AND
7173 p_org_contact_rec.party_site_id <> fnd_api.g_miss_num
7174 THEN
7175 BEGIN
7176 SELECT 'Y'
7177 INTO l_dummy
7178 FROM HZ_PARTY_SITES
7179 WHERE PARTY_SITE_ID = p_org_contact_rec.party_site_id;
7180 EXCEPTION
7181 WHEN NO_DATA_FOUND THEN
7182 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
7183 fnd_message.set_token('FK', 'party_site_id');
7184 fnd_message.set_token('COLUMN', 'party_site_id');
7185 fnd_message.set_token('TABLE', 'hz_party_sites');
7186 fnd_msg_pub.add;
7187 x_return_status := fnd_api.g_ret_sts_error;
7188 END;
7189
7190 /*IF g_debug THEN
7191 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7192 'party_site_id is foreign key to hz_party_sites.party_site_id. ' ||
7193 'x_return_status = ' || x_return_status, l_debug_prefix);
7194 END IF;
7195 */
7196 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7197 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7198 p_message=>'party_site_id is foreign key to hz_party_sites.party_site_id. ' ||
7199 'x_return_status = ' || x_return_status,
7200 p_msg_level=>fnd_log.level_statement);
7201 END IF;
7202
7203
7204 END IF;
7205
7206 -- if party_site_id is passed then its party_id should be
7207 -- same as the object_id of the relationship record for the org_contact
7208 IF p_org_contact_rec.party_site_id IS NOT NULL
7209 AND
7210 p_org_contact_rec.party_site_id <> fnd_api.g_miss_num
7211 THEN
7212 BEGIN
7213 SELECT 'Y'
7214 INTO l_dummy
7215 FROM HZ_PARTY_SITES
7216 WHERE PARTY_SITE_ID = p_org_contact_rec.party_site_id
7217 AND PARTY_ID = p_org_contact_rec.party_rel_rec.object_id;
7218 EXCEPTION
7219 WHEN NO_DATA_FOUND THEN
7220 fnd_message.set_name('AR', 'HZ_API_PARTY_OBJECT_MISMATCH');
7221 fnd_msg_pub.add;
7222 x_return_status := fnd_api.g_ret_sts_error;
7223 END;
7224
7225 /*IF g_debug THEN
7226 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7227 'party_id of party site should be same as the object_id of the relationship record. ' ||
7228 'x_return_status = ' || x_return_status, l_debug_prefix);
7229 END IF;
7230 */
7231 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7232 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7233 p_message=>'party_id of party site should be same as the object_id of the relationship record. ' ||
7234 'x_return_status = ' || x_return_status,
7235 p_msg_level=>fnd_log.level_statement);
7236 END IF;
7237
7238
7239 END IF;
7240
7241 --------------------------------------
7242 -- validate created_by_module
7243 --------------------------------------
7244
7245 validate_created_by_module(
7246 p_create_update_flag => p_create_update_flag,
7247 p_created_by_module => p_org_contact_rec.created_by_module,
7248 p_old_created_by_module => l_created_by_module,
7249 x_return_status => x_return_status);
7250
7251 --------------------------------------
7252 -- validate application_id
7253 --------------------------------------
7254
7255 validate_application_id(
7256 p_create_update_flag => p_create_update_flag,
7257 p_application_id => p_org_contact_rec.application_id,
7258 p_old_application_id => l_application_id,
7259 x_return_status => x_return_status);
7260
7261 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
7262 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_org_contact (-)',
7263 p_msg_level=>fnd_log.level_procedure);
7264 END IF;
7265
7266 END validate_org_contact;
7267
7268 /**
7269 * PROCEDURE validate_org_contact_role
7270 *
7271 * DESCRIPTION
7272 * Validates org contact role record. Checks for
7273 * uniqueness
7274 * lookup types
7275 * mandatory columns
7276 * non-updateable fields
7277 * foreign key validations
7278 * other validations
7279 *
7280 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
7281 *
7282 * ARGUMENTS
7283 * IN:
7284 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
7285 * p_org_contact_role_rec Org contact role record.
7286 * p_rowid Rowid of the record (used only in update mode).
7287 * IN/OUT:
7288 * x_return_status Return status after the call. The status can
7289 * be FND_API.G_RET_STS_SUCCESS (success),
7290 * fnd_api.g_ret_sts_error (error),
7291 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
7292 *
7293 * NOTES
7294 *
7295 * MODIFICATION HISTORY
7296 *
7297 * 07-23-2001 Indrajit Sen o Created.
7298 *
7299 */
7300
7301 PROCEDURE validate_org_contact_role(
7302 p_create_update_flag IN VARCHAR2,
7303 p_org_contact_role_rec IN HZ_PARTY_CONTACT_V2PUB.ORG_CONTACT_ROLE_REC_TYPE,
7304 p_rowid IN ROWID,
7305 x_return_status IN OUT NOCOPY VARCHAR2
7306 ) IS
7307
7308 l_org_contact_id NUMBER;
7309 l_orig_system_reference VARCHAR2(240);
7310 l_role_id NUMBER;
7311 l_dummy VARCHAR2(1);
7312 l_created_by_module VARCHAR2(150);
7313 l_application_id NUMBER;
7314 l_count NUMBER;
7315 l_status VARCHAR2(1);
7316 l_debug_prefix VARCHAR2(30) := '';
7317 l_validate_osr varchar2(1) := 'Y';
7318 l_mosr_owner_table_id number;
7319 l_temp_return_status VARCHAR2(10); -- for storing return status from
7320 -- hz_orig_system_ref_pub.get_owner_table_id
7321 BEGIN
7322
7323 --enable_debug;
7324
7325 -- Debug info.
7326 /*IF g_debug THEN
7327 hz_utility_v2pub.debug ('validate_org_contact_role (+)');
7328 END IF;
7329 */
7330 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
7331 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_org_contact_role (+)',
7332 p_msg_level=>fnd_log.level_procedure);
7333 END IF;
7334
7335 IF p_create_update_flag = 'U' THEN
7336 SELECT ORG_CONTACT_ID,
7337 ORIG_SYSTEM_REFERENCE,
7338 STATUS,
7339 CREATED_BY_MODULE,
7340 APPLICATION_ID
7341 INTO l_org_contact_id,
7342 l_orig_system_reference,
7343 l_status,
7344 l_created_by_module,
7345 l_application_id
7346 FROM HZ_ORG_CONTACT_ROLES
7347 WHERE ROWID = p_rowid;
7348 END IF;
7349
7350 --------------------------
7351 -- validate org_contact_id
7352 --------------------------
7353 /****Logical APIs - validation not required****/
7354 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
7355 -- org_contact_id is mandatory field
7356 validate_mandatory (
7357 p_create_update_flag => p_create_update_flag,
7358 p_column => 'org_contact_id',
7359 p_column_value => p_org_contact_role_rec.org_contact_id,
7360 x_return_status => x_return_status);
7361
7362 /*IF g_debug THEN
7363 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7364 'org_contact_id is mandatory field. ' ||
7365 'x_return_status = ' || x_return_status, l_debug_prefix);
7366 END IF;
7367 */
7368 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7369 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'org_contact_id is mandatory field. ' ||
7370 'x_return_status = ' || x_return_status,
7371 p_msg_level=>fnd_log.level_statement);
7372 END IF;
7373
7374 -- org_contact_id is non-updateable field
7375 IF p_create_update_flag = 'U' THEN
7376 validate_nonupdateable (
7377 p_column => 'org_contact_id',
7378 p_column_value => p_org_contact_role_rec.org_contact_id,
7379 p_old_column_value => l_org_contact_id,
7380 x_return_status => x_return_status);
7381
7382 /*IF g_debug THEN
7383 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7384 'org_contact_id is non-updateable field. ' ||
7385 'x_return_status = ' || x_return_status, l_debug_prefix);
7386 END IF;
7387 */
7388 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7389 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'org_contact_id is non-updateable field. ' ||
7390 'x_return_status = ' || x_return_status,
7391 p_msg_level=>fnd_log.level_statement);
7392 END IF;
7393
7394 END IF;
7395
7396 -- org_contact_id is foreign key of hz_org_contacts.org_contact_id.
7397 -- do not need to check during update because org_contact_id is
7398 -- non-updateable.
7399 IF p_create_update_flag = 'C'
7400 AND
7401 p_org_contact_role_rec.org_contact_id IS NOT NULL
7402 AND p_org_contact_role_rec.org_contact_id <> fnd_api.g_miss_num
7403 THEN
7404 BEGIN
7405 SELECT 'Y'
7406 INTO l_dummy
7407 FROM HZ_ORG_CONTACTS
7408 WHERE ORG_CONTACT_ID = p_org_contact_role_rec.org_contact_id;
7409 EXCEPTION
7410 WHEN NO_DATA_FOUND THEN
7411 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
7412 fnd_message.set_token('FK', 'org_contact_id');
7413 fnd_message.set_token('COLUMN', 'org_contact_id');
7414 fnd_message.set_token('TABLE', 'hz_org_contacts');
7415 fnd_msg_pub.add;
7416 x_return_status := fnd_api.g_ret_sts_error;
7417 END;
7418
7419 /*IF g_debug THEN
7420 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7421 'org_contact_id is foreign key of hz_org_contacts.org_contact_id. ' ||
7422 'x_return_status = ' || x_return_status, l_debug_prefix);
7423 END IF;
7424 */
7425 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7426 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7427 p_message=>'org_contact_id is foreign key of hz_org_contacts.org_contact_id. ' ||
7428 'x_return_status = ' || x_return_status,
7429 p_msg_level=>fnd_log.level_statement);
7430 END IF;
7431
7432 END IF;
7433 END IF;
7434
7435 ---------------------------------
7436 -- validate orig_system_reference
7437 ---------------------------------
7438 /****Logical APIs - validation not required****/
7439 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
7440 IF (p_org_contact_role_rec.orig_system is not null
7441 and p_org_contact_role_rec.orig_system <>fnd_api.g_miss_char)
7442 and (p_org_contact_role_rec.orig_system_reference is not null
7443 and p_org_contact_role_rec.orig_system_reference <>fnd_api.g_miss_char)
7444 and p_create_update_flag = 'U'
7445
7446 then
7447 hz_orig_system_ref_pub.get_owner_table_id
7448 (p_orig_system => p_org_contact_role_rec.orig_system,
7449 p_orig_system_reference => p_org_contact_role_rec.orig_system_reference,
7450 p_owner_table_name => 'HZ_ORG_CONTACT_ROLES',
7451 x_owner_table_id => l_mosr_owner_table_id,
7452 x_return_status => l_temp_return_status);
7453
7454 IF (l_temp_return_status = fnd_api.g_ret_sts_success AND
7455 l_mosr_owner_table_id= nvl(p_org_contact_role_rec.org_contact_role_id,l_mosr_owner_table_id))
7456 THEN
7457 l_validate_osr := 'N';
7458 -- if we can get owner_table_id based on osr and os in mosr table,
7459 -- we will use unique osr and os for update - bypass osr validation
7460 ELSE l_validate_osr := 'Y';
7461 END IF;
7462
7463 -- Call to hz_orig_system_ref_pub.get_owner_table_id API was resetting the
7464 -- x_return_status. Set x_return_status to error, ONLY if there is error.
7465 -- In case of success, leave it to carry over previous value as before this call.
7466 -- Fix for Bug 5498116 (29-AUG-2006)
7467 IF (l_temp_return_status = FND_API.G_RET_STS_ERROR) THEN
7468 x_return_status := l_temp_return_status;
7469 END IF;
7470
7471 end if;
7472 -- orig_system_reference is non-updateable field
7473 IF p_create_update_flag = 'U' and l_validate_osr = 'Y' THEN
7474 validate_nonupdateable (
7475 p_column => 'orig_system_reference',
7476 p_column_value => p_org_contact_role_rec.orig_system_reference,
7477 p_old_column_value => l_orig_system_reference,
7478 x_return_status => x_return_status);
7479
7480 /*IF g_debug THEN
7481 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7482 'orig_system_reference is non-updateable field. ' ||
7483 'x_return_status = ' || x_return_status, l_debug_prefix);
7484 END IF;
7485 */
7486 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7487 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7488 p_message=>'orig_system_reference is non-updateable field. ' ||
7489 'x_return_status = ' || x_return_status,
7490 p_msg_level=>fnd_log.level_statement);
7491 END IF;
7492
7493 END IF;
7494 END IF;
7495
7496 ---------------------
7497 -- validate role_type
7498 ---------------------
7499
7500 -- role_type is mandatory field
7501 validate_mandatory (
7502 p_create_update_flag => p_create_update_flag,
7503 p_column => 'role_type',
7504 p_column_value => p_org_contact_role_rec.role_type,
7505 x_return_status => x_return_status);
7506
7507 /*IF g_debug THEN
7508 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7509 'role_type is mandatory field. ' ||
7510 'x_return_status = ' || x_return_status, l_debug_prefix);
7511 END IF;
7512 */
7513 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7514 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'role_type is mandatory field. ' ||
7515 'x_return_status = ' || x_return_status,
7516 p_msg_level=>fnd_log.level_statement);
7517 END IF;
7518
7519 -- role_type cannot be set to null during update
7520 IF p_create_update_flag = 'U' THEN
7521 validate_cannot_update_to_null (
7522 p_column => 'role_type',
7523 p_column_value => p_org_contact_role_rec.role_type,
7524 x_return_status => x_return_status);
7525
7526 /*IF g_debug THEN
7527 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7528 'role_type cannot be set to null during update. ' ||
7529 'x_return_status = ' || x_return_status, l_debug_prefix);
7530 END IF;
7531 */
7532 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7533 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7534 p_message=>'role_type cannot be set to null during update. ' ||
7535 'x_return_status = ' || x_return_status,
7536 p_msg_level=>fnd_log.level_statement);
7537 END IF;
7538
7539 END IF;
7540
7541 -- role_type is lookup code in lookup type CONTACT_ROLE_TYPE
7542 validate_lookup (
7543 p_column => 'role_type',
7544 p_lookup_type => 'CONTACT_ROLE_TYPE',
7545 p_column_value => p_org_contact_role_rec.role_type,
7546 x_return_status => x_return_status);
7547
7548 /*IF g_debug THEN
7549 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7550 'role_type is lookup code in lookup type CONTACT_ROLE_TYPE. ' ||
7551 'x_return_status = ' || x_return_status, l_debug_prefix);
7552 END IF;
7553 */
7554 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7555 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7556 p_message=>'role_type is lookup code in lookup type CONTACT_ROLE_TYPE. ' ||
7557 'x_return_status = ' || x_return_status,
7558 p_msg_level=>fnd_log.level_statement);
7559 END IF;
7560
7561 ------------------------
7562 -- validate primary_flag
7563 ------------------------
7564 /****Logical APIs - validation not required****/
7565 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
7566 -- primary_flag is lookup code in lookup type YES/NO
7567 validate_lookup (
7568 p_column => 'primary_flag',
7569 p_lookup_type => 'YES/NO',
7570 p_column_value => p_org_contact_role_rec.primary_flag,
7571 x_return_status => x_return_status);
7572
7573 /*IF g_debug THEN
7574 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7575 'primary_flag should be in lookup YES/NO. ' ||
7576 'x_return_status = ' || x_return_status, l_debug_prefix);
7577 END IF;
7578 */
7579 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7580 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'primary_flag should be in lookup YES/NO. ' ||
7581 'x_return_status = ' || x_return_status,
7582 p_msg_level=>fnd_log.level_statement);
7583 END IF;
7584 END IF;
7585
7586 -- primary_flag can be set only for one record of org_contact_id.
7587 IF p_org_contact_role_rec.primary_flag = 'Y' THEN
7588 BEGIN
7589 SELECT ORG_CONTACT_ROLE_ID
7590 INTO l_role_id
7591 FROM HZ_ORG_CONTACT_ROLES
7592 WHERE ORG_CONTACT_ID = p_org_contact_role_rec.org_contact_id
7593 AND PRIMARY_FLAG = 'Y'
7594 AND ROWNUM = 1;
7595 /* Bug Fix: 3936336 */
7596 IF l_role_id <> p_org_contact_role_rec.org_contact_role_id OR
7597 p_create_update_flag = 'C' THEN
7598 fnd_message.set_name('AR', 'HZ_API_UNIQUE_PRIMARY_ROLE');
7599 fnd_msg_pub.add;
7600 x_return_status := fnd_api.g_ret_sts_error;
7601 END IF;
7602 EXCEPTION
7603 WHEN NO_DATA_FOUND THEN
7604 NULL;
7605 END;
7606
7607 /*IF g_debug THEN
7608 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7609 'primary_flag can be set only for one record of org_contact_id. ' ||
7610 'x_return_status = ' || x_return_status, l_debug_prefix);
7611 END IF;
7612 */
7613 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7614 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7615 p_message=>'primary_flag can be set only for one record of org_contact_id. ' ||
7616 'x_return_status = ' || x_return_status,
7617 p_msg_level=>fnd_log.level_statement);
7618 END IF;
7619
7620 END IF;
7621
7622 -------------------------------------------------------
7623 -- validate combination of org_contact_id and role_type
7624 -------------------------------------------------------
7625
7626 -- combination of org_contact_id and role_type must be unique.
7627 -- validates only when role_id in the database is different from
7628 -- the role_id to be updated.
7629
7630 BEGIN
7631 SELECT ORG_CONTACT_ROLE_ID
7632 INTO l_role_id
7633 FROM HZ_ORG_CONTACT_ROLES
7634 WHERE ORG_CONTACT_ID = NVL(p_org_contact_role_rec.org_contact_id, fnd_api.g_miss_num)
7635 AND ROLE_TYPE = p_org_contact_role_rec.role_type
7636 AND STATUS = 'A' -- Added: Bug#6411541
7637 AND ROWNUM = 1;
7638
7639 IF l_role_id <> nvl(p_org_contact_role_rec.org_contact_role_id, fnd_api.g_miss_num) THEN
7640 fnd_message.set_name('AR', 'HZ_API_UNIQUE_ROLE_TYPE');
7641 fnd_msg_pub.add;
7642 x_return_status := fnd_api.g_ret_sts_error;
7643 END IF;
7644 EXCEPTION
7645 WHEN NO_DATA_FOUND THEN
7646 NULL;
7647 END;
7648
7649 /*IF g_debug THEN
7650 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7651 'combination of org_contact_id and role_type must be unique. ' ||
7652 'x_return_status = ' || x_return_status, l_debug_prefix);
7653 END IF;
7654 */
7655 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7656 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7657 p_message=>'combination of org_contact_id and role_type must be unique. ' ||
7658 'x_return_status = ' || x_return_status,
7659 p_msg_level=>fnd_log.level_statement);
7660 END IF;
7661
7662 -----------------------------------------
7663 -- validate primary_contact_per_role_type
7664 -----------------------------------------
7665
7666 -- primary_contact_per_role_type is lookup code in lookup type YES/NO
7667 validate_lookup (
7668 p_column => 'primary_contact_per_role_type',
7669 p_lookup_type => 'YES/NO',
7670 p_column_value => p_org_contact_role_rec.primary_contact_per_role_type,
7671 x_return_status => x_return_status);
7672
7673 /*IF g_debug THEN
7674 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7675 'primary_contact_per_role_type should be in lookup YES/NO. ' ||
7676 'x_return_status = ' || x_return_status, l_debug_prefix);
7677 END IF;
7678 */
7679 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7680 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7681 p_message=>'primary_contact_per_role_type should be in lookup YES/NO. ' ||
7682 'x_return_status = ' || x_return_status,
7683 p_msg_level=>fnd_log.level_statement);
7684 END IF;
7685
7686 -- only one org contact can be set as primary within
7687 -- same organization party.
7688 IF p_org_contact_role_rec.primary_contact_per_role_type = 'Y' THEN
7689 BEGIN
7690 SELECT 'Y'
7691 INTO l_dummy
7692 FROM HZ_RELATIONSHIPS PR,
7693 HZ_ORG_CONTACTS OC,
7694 HZ_ORG_CONTACT_ROLES OCR,
7695 HZ_RELATIONSHIPS PR2,
7696 HZ_ORG_CONTACTS OC2
7697 WHERE OCR.PRIMARY_CONTACT_PER_ROLE_TYPE = 'Y'
7698 AND OCR.ROLE_TYPE = p_org_contact_role_rec.role_type
7699 AND OCR.ORG_CONTACT_ID = OC.ORG_CONTACT_ID
7700 AND OC.PARTY_RELATIONSHIP_ID = PR.RELATIONSHIP_ID
7701 AND PR.OBJECT_ID = PR2.OBJECT_ID
7702 AND PR2.RELATIONSHIP_ID = OC2.PARTY_RELATIONSHIP_ID
7703 AND OC2.ORG_CONTACT_ID = P_ORG_CONTACT_ROLE_REC.ORG_CONTACT_ID
7704 AND PR.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
7705 AND PR.OBJECT_TABLE_NAME = 'HZ_PARTIES'
7706 AND PR.DIRECTIONAL_FLAG = 'F'
7707 AND PR2.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
7708 AND PR2.OBJECT_TABLE_NAME = 'HZ_PARTIES'
7709 AND PR2.DIRECTIONAL_FLAG = 'F'
7710 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
7711
7712 fnd_message.set_name('AR', 'HZ_API_UNIQUE_PRIMARY_ORG_CONT');
7713 fnd_msg_pub.add;
7714 x_return_status := fnd_api.g_ret_sts_error;
7715 EXCEPTION
7716 WHEN NO_DATA_FOUND THEN
7717 NULL;
7718 END;
7719
7720 /*IF g_debug THEN
7721 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7722 'only one org contact can be set as primary within same organization party. ' ||
7723 'x_return_status = ' || x_return_status, l_debug_prefix);
7724 END IF;
7725 */
7726 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7727 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7728 p_message=>'only one org contact can be set as primary within same organization party. ' ||
7729 'x_return_status = ' || x_return_status,
7730 p_msg_level=>fnd_log.level_statement);
7731 END IF;
7732
7733 END IF;
7734
7735 ------------------
7736 -- validate status
7737 ------------------
7738 /****Logical APIs - validation not required****/
7739 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
7740 -- status is lookup code in lookup type REGISTRY_STATUS
7741 IF p_org_contact_role_rec.status IS NOT NULL
7742 AND
7743 p_org_contact_role_rec.status <> fnd_api.g_miss_char
7744 AND
7745 (p_create_update_flag = 'C'
7746 OR
7747 (p_create_update_flag = 'U'
7748 AND
7749 p_org_contact_role_rec.status <> NVL(l_status, fnd_api.g_miss_char)
7750 )
7751 )
7752 THEN
7753 validate_lookup (
7754 p_column => 'status',
7755 p_lookup_type => 'REGISTRY_STATUS',
7756 p_column_value => p_org_contact_role_rec.status,
7757 x_return_status => x_return_status);
7758
7759 /*IF g_debug THEN
7760 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7761 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
7762 'x_return_status = ' || x_return_status, l_debug_prefix);
7763 END IF;
7764 */
7765 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7766 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7767 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
7768 'x_return_status = ' || x_return_status,
7769 p_msg_level=>fnd_log.level_statement);
7770 END IF;
7771
7772 END IF;
7773 END IF;
7774
7775 -- status cannot be set to null during update
7776 IF p_create_update_flag = 'U' THEN
7777 validate_cannot_update_to_null (
7778 p_column => 'status',
7779 p_column_value => p_org_contact_role_rec.status,
7780 x_return_status => x_return_status);
7781 END IF;
7782
7783 --------------------------------------
7784 -- validate created_by_module
7785 --------------------------------------
7786
7787 validate_created_by_module(
7788 p_create_update_flag => p_create_update_flag,
7789 p_created_by_module => p_org_contact_role_rec.created_by_module,
7790 p_old_created_by_module => l_created_by_module,
7791 x_return_status => x_return_status);
7792
7793 --------------------------------------
7794 -- validate application_id
7795 --------------------------------------
7796
7797 validate_application_id(
7798 p_create_update_flag => p_create_update_flag,
7799 p_application_id => p_org_contact_role_rec.application_id,
7800 p_old_application_id => l_application_id,
7801 x_return_status => x_return_status);
7802
7803 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
7804 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_org_contact_role (-)',
7805 p_msg_level=>fnd_log.level_procedure);
7806 END IF;
7807
7808 END validate_org_contact_role;
7809
7810 /**
7811 * PROCEDURE validate_person_language
7812 *
7813 * DESCRIPTION
7814 * Validates person language record. Checks for
7815 * uniqueness
7816 * lookup types
7817 * mandatory columns
7818 * non-updateable fields
7819 * foreign key validations
7820 * other validations
7821 *
7822 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
7823 *
7824 * ARGUMENTS
7825 * IN:
7826 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
7827 * p_person_language_rec Person language record.
7828 * p_rowid Rowid of the record (used only in update mode).
7829 * IN/OUT:
7830 * x_return_status Return status after the call. The status can
7831 * be FND_API.G_RET_STS_SUCCESS (success),
7832 * fnd_api.g_ret_sts_error (error),
7833 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
7834 *
7835 * NOTES
7836 *
7837 * MODIFICATION HISTORY
7838 *
7839 * 07-23-2001 Indrajit Sen o Created.
7840 * 01-10-2003 Porkodi Chinnandar o Added few lines to have validation for spoken_
7841 * comprehension_level. The value entered for spoken_
7842 * comprehension_level is validated against lookup type
7843 * HZ_LANGUAGE_PROFICIENCY.
7844 * 18-03-2003 Porkodi Chinnandar o 2820135, Party should have only one native_languge and
7845 * one primary language. This check has been moved to
7846 * ARH2PISB due to the update involved in this.
7847 * 01-MAR-2004 Rajib Ranjan Borah o Bug 3363458.Modified previous validation to ensure
7848 * that the primary language cannot be inactive.
7849 * Added local variable l_primary_language_indicator
7850 * for the same.
7851 * 03-May-3004 Venkata Sowjanya S Bug No : 3609601. Commented the statements which sets tokens Column1,Column2
7852 * for message HZ_API_INACTIVE_CANNOT_PRIM
7853 */
7854
7855 PROCEDURE validate_person_language(
7856 p_create_update_flag IN VARCHAR2,
7857 p_person_language_rec IN HZ_PERSON_INFO_V2PUB.PERSON_LANGUAGE_REC_TYPE,
7858 p_rowid IN ROWID ,
7859 x_return_status IN OUT NOCOPY VARCHAR2
7860 ) IS
7861
7862 l_count NUMBER;
7863 l_dummy VARCHAR2(1);
7864 l_party_id NUMBER := p_person_language_rec.party_id;
7865 l_created_by_module VARCHAR2(150);
7866 l_application_id NUMBER;
7867 l_language_name VARCHAR2(4);
7868 l_status VARCHAR2(1);
7869 l_debug_prefix VARCHAR2(30) := '';
7870 l_primary_language_indicator VARCHAR2(1);
7871
7872 BEGIN
7873
7874 --enable_debug;
7875
7876 -- Debug info.
7877 /*IF g_debug THEN
7878 hz_utility_v2pub.debug ('validate_person_language (+)');
7879 END IF;
7880 */
7881 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
7882 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_person_language (+)',
7883 p_msg_level=>fnd_log.level_procedure);
7884 END IF;
7885
7886 -- do the query to get old values for update
7887 IF p_create_update_flag = 'U'
7888 THEN
7889 SELECT PARTY_ID,
7890 LANGUAGE_NAME,
7891 STATUS,
7892 CREATED_BY_MODULE,
7893 APPLICATION_ID,
7894 PRIMARY_LANGUAGE_INDICATOR
7895 INTO l_party_id,
7896 l_language_name,
7897 l_status,
7898 l_created_by_module,
7899 l_application_id,
7900 l_primary_language_indicator
7901 FROM HZ_PERSON_LANGUAGE
7902 WHERE ROWID = p_rowid;
7903 END IF;
7904
7905 --------------------------
7906 -- validation for party_id
7907 --------------------------
7908 /****Logical APIs - validation not required****/
7909 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
7910 -- party_id is mandatory field
7911 IF p_create_update_flag = 'C' THEN
7912 validate_mandatory (
7913 p_create_update_flag => p_create_update_flag,
7914 p_column => 'party_id',
7915 p_column_value => p_person_language_rec.party_id,
7916 x_return_status => x_return_status);
7917
7918 /*IF g_debug THEN
7919 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7920 'party_id is mandatory field. ' ||
7921 'x_return_status = ' || x_return_status, l_debug_prefix);
7922 END IF;
7923 */
7924 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7925 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is mandatory field. ' ||
7926 'x_return_status = ' || x_return_status,
7927 p_msg_level=>fnd_log.level_statement);
7928 END IF;
7929
7930 END IF;
7931
7932 -- party_id is non-updateable field
7933 IF p_create_update_flag = 'U' THEN
7934 validate_nonupdateable (
7935 p_column => 'party_id',
7936 p_column_value => p_person_language_rec.party_id,
7937 p_old_column_value => l_party_id,
7938 x_return_status => x_return_status);
7939
7940 /*IF g_debug THEN
7941 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7942 'party_id is non-updateable field. ' ||
7943 'x_return_status = ' || x_return_status, l_debug_prefix);
7944 END IF;
7945 */
7946 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7947 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable field. ' ||
7948 'x_return_status = ' || x_return_status,
7949 p_msg_level=>fnd_log.level_statement);
7950 END IF;
7951
7952 END IF;
7953
7954 -- party_id has foreign key HZ_PARTIES.PARTY_ID
7955 IF p_create_update_flag = 'C'
7956 AND
7957 p_person_language_rec.party_id IS NOT NULL
7958 AND
7959 p_person_language_rec.party_id <> fnd_api.g_miss_num
7960 THEN
7961 BEGIN
7962 SELECT 'Y'
7963 INTO l_dummy
7964 FROM hz_parties
7965 WHERE party_id = p_person_language_rec.party_id;
7966
7967 EXCEPTION
7968 WHEN NO_DATA_FOUND THEN
7969 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
7970 fnd_message.set_token('FK', 'party_id');
7971 fnd_message.set_token('COLUMN', 'party_id');
7972 fnd_message.set_token('TABLE', 'hz_parties');
7973 fnd_msg_pub.add;
7974 x_return_status := fnd_api.g_ret_sts_error;
7975 END;
7976
7977 /*IF g_debug THEN
7978 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
7979 'party_id has foreign key hz_parties.party_id. ' ||
7980 'x_return_status = ' || x_return_status, l_debug_prefix);
7981 END IF;
7982 */
7983 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7984 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
7985 'x_return_status = ' || x_return_status,
7986 p_msg_level=>fnd_log.level_statement);
7987 END IF;
7988
7989 END IF;
7990 END IF;
7991
7992 -------------------------------
7993 -- validation for language_name
7994 -------------------------------
7995
7996 -- language_name is mandatory field
7997 IF p_create_update_flag = 'C' THEN
7998 validate_mandatory (
7999 p_create_update_flag => p_create_update_flag,
8000 p_column => 'language_name',
8001 p_column_value => p_person_language_rec.language_name,
8002 x_return_status => x_return_status);
8003
8004 /*IF g_debug THEN
8005 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8006 'language_name is mandatory field. ' ||
8007 'x_return_status = ' || x_return_status, l_debug_prefix);
8008 END IF;
8009 */
8010 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8011 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'language_name is mandatory field. ' ||
8012 'x_return_status = ' || x_return_status,
8013 p_msg_level=>fnd_log.level_statement);
8014 END IF;
8015
8016 END IF;
8017
8018 -- language_name is non-updateable field
8019 IF p_create_update_flag = 'U' THEN
8020 validate_nonupdateable (
8021 p_column => 'language_name',
8022 p_column_value => p_person_language_rec.language_name,
8023 p_old_column_value => l_language_name,
8024 x_return_status => x_return_status);
8025
8026 /*IF g_debug THEN
8027 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8028 'language_name is non-updateable field. ' ||
8029 'x_return_status = ' || x_return_status, l_debug_prefix);
8030 END IF;
8031 */
8032 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8033 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'language_name is non-updateable field. ' ||
8034 'x_return_status = ' || x_return_status,
8035 p_msg_level=>fnd_log.level_statement);
8036 END IF;
8037
8038 END IF;
8039
8040 -- language_name has foreign key fnd_languages.language_code
8041 IF p_person_language_rec.language_name IS NOT NULL
8042 AND
8043 p_person_language_rec.language_name <> fnd_api.g_miss_char
8044 THEN
8045 BEGIN
8046 SELECT 'Y'
8047 INTO l_dummy
8048 FROM FND_LANGUAGES
8049 WHERE LANGUAGE_CODE = p_person_language_rec.language_name;
8050 EXCEPTION
8051 WHEN NO_DATA_FOUND THEN
8052 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
8053 fnd_message.set_token('FK', 'language_name');
8054 fnd_message.set_token('COLUMN', 'language_code');
8055 fnd_message.set_token('TABLE', 'fnd_languages');
8056 fnd_msg_pub.add;
8057 x_return_status := fnd_api.g_ret_sts_error;
8058 END;
8059
8060 /*IF g_debug THEN
8061 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8062 'language_name has foreign key fnd_languages.language_code. ' ||
8063 'x_return_status = ' || x_return_status, l_debug_prefix);
8064 END IF;
8065 */
8066 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8067 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8068 p_message=>'language_name has foreign key fnd_languages.language_code. ' ||
8069 'x_return_status = ' || x_return_status,
8070 p_msg_level=>fnd_log.level_statement);
8071 END IF;
8072
8073 END IF;
8074
8075 -- there can be only one record for a given party and language
8076 BEGIN
8077 SELECT 1
8078 INTO l_dummy
8079 FROM HZ_PERSON_LANGUAGE
8080 WHERE PARTY_ID = l_party_id
8081 AND LANGUAGE_NAME = p_person_language_rec.language_name
8082 AND LANGUAGE_USE_REFERENCE_ID <> NVL(p_person_language_rec.language_use_reference_id, fnd_api.g_miss_num);
8083
8084 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
8085 fnd_message.set_token('COLUMN', 'language_name');
8086 fnd_msg_pub.add;
8087 x_return_status := fnd_api.g_ret_sts_error;
8088
8089 EXCEPTION
8090 WHEN NO_DATA_FOUND THEN
8091 NULL;
8092 END;
8093
8094 ---------------------------------
8095 -- validation for native_language
8096 ---------------------------------
8097 /****Logical APIs - validation not required****/
8098 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8099 -- native_language is lookup code in lookup type YES/NO
8100 validate_lookup (
8101 p_column => 'native_language',
8102 p_lookup_type => 'YES/NO',
8103 p_column_value => p_person_language_rec.native_language,
8104 x_return_status => x_return_status);
8105
8106 /*IF g_debug THEN
8107 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8108 'native_language should be in lookup YES/NO. ' ||
8109 'x_return_status = ' || x_return_status, l_debug_prefix);
8110 END IF;
8111 */
8112 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8113 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'native_language should be in lookup YES/NO. ' ||
8114 'x_return_status = ' || x_return_status,
8115 p_msg_level=>fnd_log.level_statement);
8116 END IF;
8117 END IF;
8118
8119 --------------------------------------------
8120 -- validation for spoken_comprehension_level
8121 --------------------------------------------
8122
8123 -- spoken_comprehension_level is lookup code in lookup type HZ_LANGUAGE_PROFICIENCY
8124 validate_lookup (
8125 p_column => 'spoken_comprehension_level',
8126 p_lookup_type => 'HZ_LANGUAGE_PROFICIENCY',
8127 p_column_value => p_person_language_rec.spoken_comprehension_level,
8128 x_return_status => x_return_status);
8129
8130
8131 /*IF g_debug THEN
8132 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8133 'spoken_comprehension_level should be in lookup HZ_LANGUAGE_PROFICIENCY. ' ||
8134 'x_return_status = ' || x_return_status, l_debug_prefix);
8135 END IF;
8136 */
8137 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8138 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8139 p_message=>'spoken_comprehension_level should be in lookup HZ_LANGUAGE_PROFICIENCY. ' ||
8140 'x_return_status = ' || x_return_status,
8141 p_msg_level=>fnd_log.level_statement);
8142 END IF;
8143
8144
8145 --------------------------------------------
8146 -- validation for primary_language_indicator
8147 --------------------------------------------
8148 /****Logical APIs - validation not required****/
8149 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8150 -- primary_language_indicator is lookup code in lookup type YES/NO
8151 validate_lookup (
8152 p_column => 'primary_language_indicator',
8153 p_lookup_type => 'YES/NO',
8154 p_column_value => p_person_language_rec.primary_language_indicator,
8155 x_return_status => x_return_status);
8156
8157 /*IF g_debug THEN
8158 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8159 'primary_language_indicator should be in lookup YES/NO. ' ||
8160 'x_return_status = ' || x_return_status, l_debug_prefix);
8161 END IF;
8162 */
8163 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8164 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8165 p_message=>'primary_language_indicator should be in lookup YES/NO. ' ||
8166 'x_return_status = ' || x_return_status,
8167 p_msg_level=>fnd_log.level_statement);
8168 END IF;
8169 END IF;
8170
8171 ------------------------
8172 -- validation for status
8173 ------------------------
8174 /****Logical APIs - validation not required****/
8175 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8176 -- status is lookup code in lookup type REGISTRY_STATUS
8177 IF p_person_language_rec.status IS NOT NULL
8178 AND
8179 p_person_language_rec.status <> fnd_api.g_miss_char
8180 AND
8181 (p_create_update_flag = 'C'
8182 OR
8183 (p_create_update_flag = 'U'
8184 AND
8185 p_person_language_rec.status <> NVL(l_status, fnd_api.g_miss_char)
8186 )
8187 )
8188 THEN
8189 validate_lookup (
8190 p_column => 'status',
8191 p_lookup_type => 'REGISTRY_STATUS',
8192 p_column_value => p_person_language_rec.status,
8193 x_return_status => x_return_status);
8194
8195 /*IF g_debug THEN
8196 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8197 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
8198 'x_return_status = ' || x_return_status, l_debug_prefix);
8199 END IF;
8200 */
8201 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8202 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8203 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
8204 'x_return_status = ' || x_return_status,
8205 p_msg_level=>fnd_log.level_statement);
8206 END IF;
8207
8208 END IF;
8209 END IF;
8210
8211 -- status cannot be set to null during update
8212 IF p_create_update_flag = 'U' THEN
8213 validate_cannot_update_to_null (
8214 p_column => 'status',
8215 p_column_value => p_person_language_rec.status,
8216 x_return_status => x_return_status);
8217 END IF;
8218
8219
8220 -- 2820135, the following check has been made as part of this bug
8221 -- If the primary_language_indicator is set to Yes, the status column should
8222 -- not be Inactive
8223
8224 -- Bug 3363458.The previous validation did not take care of the condition when
8225 -- the status for a primary language was updated from 'A' to 'I'.
8226
8227 /*
8228 IF p_person_language_rec.primary_language_indicator is NOT NULL
8229 AND p_person_language_rec.primary_language_indicator <> fnd_api.g_miss_char
8230 AND (p_create_update_flag = 'C'
8231 OR (p_create_update_flag = 'U'
8232 AND p_person_language_rec.primary_language_indicator <>
8233 NVL(l_primary_language_indicator, fnd_api.g_miss_char)))
8234 THEN
8235 SELECT DECODE(p_person_language_rec.primary_language_indicator,
8236 'Y', DECODE(p_person_language_rec.status,
8237 'I', 'N',
8238 '', DECODE(l_status, 'I', 'N')),
8239 'Y')
8240 INTO l_dummy
8241 FROM dual;
8242
8243 IF l_dummy <> 'Y' THEN
8244 fnd_message.set_name('AR', 'HZ_API_INACTIVE_CANNOT_PRIM');
8245 fnd_message.set_token('ENTITY', 'language');
8246 -- fnd_message.set_token('COLUMN1', 'primary_language_indicator');
8247 -- fnd_message.set_token('COLUMN2', 'status');
8248 fnd_msg_pub.add;
8249 x_return_status := FND_API.G_RET_STS_ERROR;
8250 END IF;
8251
8252 */
8253
8254 -- Bug 3363458.
8255 IF p_create_update_flag = 'C'
8256 THEN
8257 IF (p_person_language_rec.primary_language_indicator = 'Y'
8258 AND p_person_language_rec.status = 'I')
8259 THEN
8260 fnd_message.set_name('AR', 'HZ_API_INACTIVE_CANNOT_PRIM');
8261 fnd_message.set_token('ENTITY', 'Language');
8262 -- fnd_message.set_token('COLUMN1', 'primary_language_indicator');
8263 -- fnd_message.set_token('COLUMN2', 'status');
8264 fnd_msg_pub.add;
8265 x_return_status := FND_API.G_RET_STS_ERROR;
8266
8267 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8268 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8269 p_message=>'If the primary_language_indicator is set to Yes, the status column should not be Inactive.' ||
8270 'x_return_status = ' || x_return_status,
8271 p_msg_level=>fnd_log.level_statement);
8272 END IF;
8273
8274 END IF;
8275 ELSE -- p_create_update_flag = 'U'
8276 IF (NVL(p_person_language_rec.primary_language_indicator,l_primary_language_indicator)='Y'
8277 AND NVL(p_person_language_rec.status,l_status)='I')
8278 THEN
8279 fnd_message.set_name('AR', 'HZ_API_INACTIVE_CANNOT_PRIM');
8280 fnd_message.set_token('ENTITY', 'Language');
8281 --fnd_message.set_token('COLUMN1', 'primary_language_indicator');
8282 -- fnd_message.set_token('COLUMN2', 'status');
8283 fnd_msg_pub.add;
8284 x_return_status := FND_API.G_RET_STS_ERROR;
8285
8286 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8287 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8288 p_message=>'If the primary_language_indicator is set to Yes, the status column should not be Inactive.' ||
8289 'x_return_status = ' || x_return_status,
8290 p_msg_level=>fnd_log.level_statement);
8291 END IF;
8292
8293 END IF;
8294 END IF; -- corresponding to IF p_create_update_flag = 'C'
8295
8296 /*IF g_debug THEN
8297 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8298 'If the primary_language_indicator is set to Yes, the status column should not be Inactive.' ||
8299 'x_return_status = ' || x_return_status,
8300 l_debug_prefix
8301 );
8302 END IF;
8303 */
8304
8305 --------------------------------------
8306 -- validate created_by_module
8307 --------------------------------------
8308
8309 validate_created_by_module(
8310 p_create_update_flag => p_create_update_flag,
8311 p_created_by_module => p_person_language_rec.created_by_module,
8312 p_old_created_by_module => l_created_by_module,
8313 x_return_status => x_return_status);
8314
8315 --------------------------------------
8316 -- validate application_id
8317 --------------------------------------
8318
8319 validate_application_id(
8320 p_create_update_flag => p_create_update_flag,
8321 p_application_id => p_person_language_rec.application_id,
8322 p_old_application_id => l_application_id,
8323 x_return_status => x_return_status);
8324
8325 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
8326 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_person_language (-)',
8327 p_msg_level=>fnd_log.level_procedure);
8328 END IF;
8329
8330 END validate_person_language;
8331
8332
8333 /**
8334 * PROCEDURE validate_citizenship
8335 *
8336 * DESCRIPTION
8337 * Validates citizenship record. Checks for
8338 * uniqueness
8339 * lookup types
8340 * mandatory columns
8341 * non-updateable fields
8342 * foreign key validations
8343 * other validations
8344 *
8345 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
8346 *
8347 * ARGUMENTS
8348 * IN:
8349 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
8350 * p_citizenship_rec Citizenship record.
8351 * p_rowid Rowid of the record (used only in update mode).
8352 * IN/OUT:
8353 * x_return_status Return status after the call. The status can
8354 * be FND_API.G_RET_STS_SUCCESS (success),
8355 * fnd_api.g_ret_sts_error (error),
8356 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
8357 *
8358 * NOTES
8359 *
8360 * MODIFICATION HISTORY
8361 *
8362 * 31-Jan-2001 Porkodi C o Created.
8363 * 10-Mar-2003 Porkodi C o Bug 2820483, Added mandatory check for country_code
8364 * Bug 2820462, Added the party_type check for the party_id
8365 *
8366 */
8367
8368 PROCEDURE validate_citizenship(
8369 p_create_update_flag IN VARCHAR2,
8370 p_citizenship_rec IN HZ_PERSON_INFO_V2PUB.CITIZENSHIP_REC_TYPE,
8371 p_rowid IN ROWID ,
8372 x_return_status IN OUT NOCOPY VARCHAR2
8373 ) IS
8374
8375 l_count NUMBER;
8376 l_dummy VARCHAR2(1);
8377 l_party_id NUMBER := p_citizenship_rec.party_id;
8378 l_created_by_module VARCHAR2(150);
8379 l_application_id NUMBER;
8380 l_citizenship_id NUMBER;
8381 l_status VARCHAR2(1);
8382 l_debug_prefix VARCHAR2(30) := '';
8383
8384
8385 CURSOR citizen_cur (p_citizenship_id IN NUMBER) IS
8386 SELECT 'Y'
8387 FROM hz_citizenship hc
8388 WHERE hc.citizenship_id = p_citizenship_id;
8389
8390
8391 BEGIN
8392
8393 --enable_debug;
8394
8395 -- Debug info.
8396 /*IF g_debug THEN
8397 hz_utility_v2pub.debug ('validate_citizenship (+)');
8398 END IF;
8399 */
8400 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
8401 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_citizenship (+)',
8402 p_msg_level=>fnd_log.level_procedure);
8403 END IF;
8404
8405 -- do the query to get old values for update
8406 IF p_create_update_flag = 'U'
8407 THEN
8408 SELECT CITIZENSHIP_ID,
8409 PARTY_ID,
8410 STATUS,
8411 CREATED_BY_MODULE,
8412 APPLICATION_ID
8413 INTO l_citizenship_id,
8414 l_party_id,
8415 l_status,
8416 l_created_by_module,
8417 l_application_id
8418 FROM HZ_CITIZENSHIP
8419 WHERE ROWID = p_rowid;
8420 END IF;
8421
8422
8423 --------------------------------------
8424 -- validate citizenship_id
8425 --------------------------------------
8426 /****Logical APIs - validation not required****/
8427 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8428 -- If primary key value is passed, check for uniqueness.
8429 -- If primary key value is not passed, it will be generated
8430 -- from sequence by table handler.
8431
8432 IF p_create_update_flag = 'C' THEN
8433 IF p_citizenship_rec.citizenship_id IS NOT NULL AND
8434 p_citizenship_rec.citizenship_id <> fnd_api.g_miss_num
8435 THEN
8436 OPEN citizen_cur (p_citizenship_rec.citizenship_id);
8437 FETCH citizen_cur INTO l_dummy;
8438
8439 -- key is not unique, push an error onto the stack.
8440 IF NVL(citizen_cur%FOUND, FALSE) THEN
8441 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
8442 fnd_message.set_token('COLUMN', 'citizenship_id');
8443 fnd_msg_pub.add;
8444 x_return_status := fnd_api.g_ret_sts_error;
8445 END IF;
8446 CLOSE citizen_cur;
8447
8448 /*IF g_debug THEN
8449 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8450 'check that citizenship_id is unique during creation. ' ||
8451 ' x_return_status = ' || x_return_status, l_debug_prefix);
8452 END IF;
8453 */
8454 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8455 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8456 p_message=>'check that citizenship_id is unique during creation. ' ||
8457 ' x_return_status = ' || x_return_status,
8458 p_msg_level=>fnd_log.level_statement);
8459 END IF;
8460
8461 END IF;
8462 END IF;
8463
8464 /*IF g_debug THEN
8465 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8466 '(+) after validate citizenship_id ... ' ||
8467 'x_return_status = ' || x_return_status, l_debug_prefix);
8468 END IF;
8469 */
8470 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8471 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate citizenship_id ... ' ||
8472 'x_return_status = ' || x_return_status,
8473 p_msg_level=>fnd_log.level_statement);
8474 END IF;
8475
8476
8477 -- citizenship_id is non-updateable field
8478 IF p_create_update_flag = 'U' THEN
8479 validate_nonupdateable (
8480 p_column => 'citizenship_id',
8481 p_column_value => p_citizenship_rec.citizenship_id,
8482 p_old_column_value => l_citizenship_id,
8483 x_return_status => x_return_status);
8484
8485 /*IF g_debug THEN
8486 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8487 'citizenship_id is non-updateable field. ' ||
8488 'x_return_status = ' || x_return_status, l_debug_prefix);
8489 END IF;
8490 */
8491 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8492 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'citizenship_id is non-updateable field. ' ||
8493 'x_return_status = ' || x_return_status,
8494 p_msg_level=>fnd_log.level_statement);
8495 END IF;
8496
8497
8498 END IF;
8499 END IF;
8500
8501 --------------------------
8502 -- validation for party_id
8503 --------------------------
8504 /****Logical APIs - validation not required****/
8505 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8506 -- party_id is mandatory field
8507 IF p_create_update_flag = 'C' THEN
8508 validate_mandatory (
8509 p_create_update_flag => p_create_update_flag,
8510 p_column => 'party_id',
8511 p_column_value => p_citizenship_rec.party_id,
8512 x_return_status => x_return_status);
8513
8514 /*IF g_debug THEN
8515 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8516 'party_id is mandatory field. ' ||
8517 'x_return_status = ' || x_return_status, l_debug_prefix);
8518 END IF;
8519 */
8520 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8521 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is mandatory field. ' ||
8522 'x_return_status = ' || x_return_status,
8523 p_msg_level=>fnd_log.level_statement);
8524 END IF;
8525
8526
8527 END IF;
8528
8529 -- party_id is non-updateable field
8530 IF p_create_update_flag = 'U' THEN
8531 validate_nonupdateable (
8532 p_column => 'party_id',
8533 p_column_value => p_citizenship_rec.party_id,
8534 p_old_column_value => l_party_id,
8535 x_return_status => x_return_status);
8536
8537 /*IF g_debug THEN
8538 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8539 'party_id is non-updateable field. ' ||
8540 'x_return_status = ' || x_return_status, l_debug_prefix);
8541 END IF;
8542 */
8543 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8544 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable field. ' ||
8545 'x_return_status = ' || x_return_status,
8546 p_msg_level=>fnd_log.level_statement);
8547 END IF;
8548
8549
8550 END IF;
8551
8552 -- 2820462, Party_type check has been added to the where clause
8553 -- party_id has foreign key HZ_PARTIES.PARTY_ID
8554 IF p_create_update_flag = 'C'
8555 AND
8556 p_citizenship_rec.party_id IS NOT NULL
8557 AND
8558 p_citizenship_rec.party_id <> fnd_api.g_miss_num
8559 THEN
8560 BEGIN
8561 SELECT 'Y'
8562 INTO l_dummy
8563 FROM hz_parties p
8564 WHERE p.party_type='PERSON' and
8565 p.party_id = p_citizenship_rec.party_id;
8566
8567 EXCEPTION
8568 WHEN NO_DATA_FOUND THEN
8569 fnd_message.set_name('AR', 'HZ_API_PARTY_NOT_PERSON');
8570 -- fnd_message.set_token('FK', 'party_id');
8571 fnd_message.set_token('TABLE_NAME', 'HZ_CITIZENSHIP');
8572 fnd_message.set_token('PARTY_ID_COL', 'party_id');
8573 fnd_msg_pub.add;
8574 x_return_status := fnd_api.g_ret_sts_error;
8575 END;
8576
8577 /*IF g_debug THEN
8578 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8579 'party_id has foreign key hz_parties.party_id. ' ||
8580 'x_return_status = ' || x_return_status, l_debug_prefix);
8581 END IF;
8582 */
8583 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8584 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
8585 'x_return_status = ' || x_return_status,
8586 p_msg_level=>fnd_log.level_statement);
8587 END IF;
8588
8589
8590 END IF;
8591 END IF;
8592
8593 ---------------------------------------
8594 -- validation for birth_or_selected
8595 ---------------------------------------
8596
8597 -- birth_or_selected is lookup code in lookup type HZ_CITIZENSHIP_ACQUISITION
8598
8599 validate_lookup (
8600 p_column => 'birth_or_selected',
8601 p_lookup_type => 'HZ_CITIZENSHIP_ACQUISITION',
8602 p_column_value => p_citizenship_rec.birth_or_selected,
8603 x_return_status => x_return_status);
8604
8605
8606 /*IF g_debug THEN
8607 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8608 'birth_or_selected should be in lookup HZ_CITIZENSHIP_ACQUISITION. ' ||
8609 'x_return_status = ' || x_return_status, l_debug_prefix);
8610 END IF;
8611 */
8612 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8613 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8614 p_message=>'birth_or_selected should be in lookup HZ_CITIZENSHIP_ACQUISITION. ' ||
8615 'x_return_status = ' || x_return_status,
8616 p_msg_level=>fnd_log.level_statement);
8617 END IF;
8618
8619
8620 ---------------------------------------
8621 -- validation for country_code
8622 ---------------------------------------
8623
8624 -- 2820483, Added the mandatory check
8625 -- country_code is mandatory field
8626 IF p_create_update_flag = 'C' THEN
8627 validate_mandatory (
8628 p_create_update_flag => p_create_update_flag,
8629 p_column => 'country_code',
8630 p_column_value => p_citizenship_rec.country_code,
8631 x_return_status => x_return_status);
8632
8633 /*IF g_debug THEN
8634 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8635 'country_code is mandatory field. ' ||
8636 'x_return_status = ' || x_return_status, l_debug_prefix);
8637 END IF;
8638 */
8639 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8640 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8641 p_message=>'country_code is mandatory field. ' ||
8642 'x_return_status = ' || x_return_status,
8643 p_msg_level=>fnd_log.level_statement);
8644 END IF;
8645
8646
8647 END IF;
8648
8649 -- country has foreign key fnd_territories.territory_code
8650 validate_country_code(
8651 p_column => 'country_code',
8652 p_column_value => p_citizenship_rec.country_code,
8653 x_return_status => x_return_status);
8654
8655 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
8656 hz_utility_v2pub.debug(
8657 p_prefix => l_debug_prefix,
8658 p_message => 'country_code should be in fnd_territories.territory_code. ' ||
8659 'x_return_status = ' || x_return_status,
8660 p_msg_level => fnd_log.level_statement);
8661 END IF;
8662
8663 -- 2820483, Added the following check also
8664 -- country_code cannot be set to null during update
8665 IF p_create_update_flag = 'U' THEN
8666 validate_cannot_update_to_null (
8667 p_column => 'country_code',
8668 p_column_value => p_citizenship_rec.country_code,
8669 x_return_status => x_return_status);
8670 END IF;
8671
8672
8673 ------------------------
8674 -- validation for status
8675 ------------------------
8676 /****Logical APIs - validation not required****/
8677 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8678 -- status is lookup code in lookup type REGISTRY_STATUS
8679 IF p_citizenship_rec.status IS NOT NULL
8680 AND
8681 p_citizenship_rec.status <> fnd_api.g_miss_char
8682 AND
8683 (p_create_update_flag = 'C'
8684 OR
8685 (p_create_update_flag = 'U'
8686 AND
8687 p_citizenship_rec.status <> NVL(l_status, fnd_api.g_miss_char)
8688 )
8689 )
8690 THEN
8691 validate_lookup (
8692 p_column => 'status',
8693 p_lookup_type => 'REGISTRY_STATUS',
8694 p_column_value => p_citizenship_rec.status,
8695 x_return_status => x_return_status);
8696
8697 /*IF g_debug THEN
8698 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8699 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
8700 'x_return_status = ' || x_return_status, l_debug_prefix);
8701 END IF;
8702 */
8703 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8704 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8705 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
8706 'x_return_status = ' || x_return_status,
8707 p_msg_level=>fnd_log.level_statement);
8708 END IF;
8709
8710
8711 END IF;
8712 END IF;
8713
8714 -- status cannot be set to null during update
8715 IF p_create_update_flag = 'U' THEN
8716 validate_cannot_update_to_null (
8717 p_column => 'status',
8718 p_column_value => p_citizenship_rec.status,
8719 x_return_status => x_return_status);
8720 END IF;
8721
8722 --------------------------------------
8723 -- validate created_by_module
8724 --------------------------------------
8725
8726 validate_created_by_module(
8727 p_create_update_flag => p_create_update_flag,
8728 p_created_by_module => p_citizenship_rec.created_by_module,
8729 p_old_created_by_module => l_created_by_module,
8730 x_return_status => x_return_status);
8731
8732 --------------------------------------
8733 -- validate application_id
8734 --------------------------------------
8735
8736 validate_application_id(
8737 p_create_update_flag => p_create_update_flag,
8738 p_application_id => p_citizenship_rec.application_id,
8739 p_old_application_id => l_application_id,
8740 x_return_status => x_return_status);
8741
8742 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
8743 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_citizenship (-)',
8744 p_msg_level=>fnd_log.level_procedure);
8745 END IF;
8746
8747 END validate_citizenship;
8748
8749
8750 /**
8751 * PROCEDURE validate_education
8752 *
8753 * DESCRIPTION
8754 * Validates education record. Checks for
8755 * uniqueness
8756 * lookup types
8757 * mandatory columns
8758 * non-updateable fields
8759 * foreign key validations
8760 * other validations
8761 *
8762 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
8763 *
8764 * ARGUMENTS
8765 * IN:
8766 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
8767 * p_education_rec Education record.
8768 * p_rowid Rowid of the record (used only in update mode).
8769 * IN/OUT:
8770 * x_return_status Return status after the call. The status can
8771 * be FND_API.G_RET_STS_SUCCESS (success),
8772 * fnd_api.g_ret_sts_error (error),
8773 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
8774 *
8775 * NOTES
8776 *
8777 * MODIFICATION HISTORY
8778 *
8779 * 31-Jan-2001 Porkodi C o Created.
8780 * 11-Mar-2003 Porkodi C o 2820602: Changed the error message, when wrong
8781 * party_type has been passed to the user.
8782 * 07-Apr-2003 Porkodi C o 2888486: On update mutual exclusivity between
8783 * school_party_id and school_attended_name was not
8784 * been maintained.
8785 * 09-Apr-2003 Porkodi C o 2888399: validation for start_date_attended and last_date_attended
8786 * has been modified
8787 * 17-Feb-2004 Rajib Ranjan B o Bug 3425871.Type_of_school will be validated only
8788 * if the column value changes.
8789 */
8790
8791 PROCEDURE validate_education(
8792 p_create_update_flag IN VARCHAR2,
8793 p_education_rec IN HZ_PERSON_INFO_V2PUB.EDUCATION_REC_TYPE,
8794 p_rowid IN ROWID ,
8795 x_return_status IN OUT NOCOPY VARCHAR2
8796 ) IS
8797
8798 l_count NUMBER;
8799 l_education_id NUMBER;
8800 l_dummy VARCHAR2(1);
8801 l_party_id NUMBER := p_education_rec.party_id;
8802 l_created_by_module VARCHAR2(30);
8803 l_application_id NUMBER;
8804 l_status VARCHAR2(1);
8805 l_debug_prefix VARCHAR2(30) := '';
8806 l_start_date_attended DATE;
8807 l_last_date_attended DATE;
8808 l_school_party_id NUMBER;
8809 l_school_attended_name VARCHAR2(60);
8810 -- Code modified for Bug 3473418 starts here
8811 l_type_of_school VARCHAR2(30);
8812 -- Code modified for Bug 3473418 ends here
8813 temp_school_party_id NUMBER;
8814 temp_school_attended_name VARCHAR2(60);
8815 temp_start_date_attended DATE;
8816 temp_last_date_attended DATE;
8817
8818 CURSOR education_cur (p_education_id IN NUMBER) IS
8819 SELECT 'Y'
8820 FROM hz_education hc
8821 WHERE hc.education_id = p_education_id;
8822
8823 BEGIN
8824
8825 --enable_debug;
8826
8827 -- Debug info.
8828 /*IF g_debug THEN
8829 hz_utility_v2pub.debug ('validate_education (+)');
8830 END IF;
8831 */
8832 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
8833 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_education (+)',
8834 p_msg_level=>fnd_log.level_procedure);
8835 END IF;
8836
8837
8838 -- do the query to get old values for update
8839 IF p_create_update_flag = 'U'
8840 THEN
8841 SELECT EDUCATION_ID,
8842 PARTY_ID,
8843 START_DATE_ATTENDED,
8844 LAST_DATE_ATTENDED,
8845 STATUS,
8846 CREATED_BY_MODULE,
8847 APPLICATION_ID,
8848 SCHOOL_PARTY_ID,
8849 SCHOOL_ATTENDED_NAME,
8850 TYPE_OF_SCHOOL
8851 INTO l_education_id,
8852 l_party_id,
8853 l_start_date_attended,
8854 l_last_date_attended,
8855 l_status,
8856 l_created_by_module,
8857 l_application_id,
8858 l_school_party_id,
8859 l_school_attended_name,
8860 l_type_of_school
8861 FROM HZ_EDUCATION
8862 WHERE ROWID = p_rowid;
8863 END IF;
8864
8865
8866 --------------------------------------
8867 -- validate education_id
8868 --------------------------------------
8869 /****Logical APIs - validation not required****/
8870 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8871 -- If primary key value is passed, check for uniqueness.
8872 -- If primary key value is not passed, it will be generated
8873 -- from sequence by table handler.
8874
8875
8876 IF p_create_update_flag = 'C' THEN
8877 IF p_education_rec.education_id IS NOT NULL AND
8878 p_education_rec.education_id <> fnd_api.g_miss_num
8879 THEN
8880 OPEN education_cur (p_education_rec.education_id);
8881 FETCH education_cur INTO l_dummy;
8882
8883 -- key is not unique, push an error onto the stack.
8884 IF NVL(education_cur%FOUND, FALSE) THEN
8885 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
8886 fnd_message.set_token('COLUMN', 'education_id');
8887 fnd_msg_pub.add;
8888 x_return_status := fnd_api.g_ret_sts_error;
8889 END IF;
8890 CLOSE education_cur;
8891
8892 /*IF g_debug THEN
8893 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8894 'check that education_id is unique during creation. ' ||
8895 ' x_return_status = ' || x_return_status, l_debug_prefix);
8896 END IF;
8897 */
8898 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8899 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8900 p_message=>'check that education_id is unique during creation. ' ||
8901 ' x_return_status = ' || x_return_status,
8902 p_msg_level=>fnd_log.level_statement);
8903 END IF;
8904
8905 END IF;
8906 END IF;
8907
8908
8909 -- education_id is non-updateable field
8910 IF p_create_update_flag = 'U' THEN
8911 validate_nonupdateable (
8912 p_column => 'education_id',
8913 p_column_value => p_education_rec.education_id,
8914 p_old_column_value => l_education_id,
8915 x_return_status => x_return_status);
8916
8917 /*IF g_debug THEN
8918 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8919 'education_id is non-updateable field. ' ||
8920 'x_return_status = ' || x_return_status, l_debug_prefix);
8921 END IF;
8922 */
8923 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8924 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'education_id is non-updateable field. ' ||
8925 'x_return_status = ' || x_return_status,
8926 p_msg_level=>fnd_log.level_statement);
8927 END IF;
8928
8929 END IF;
8930
8931 /*IF g_debug THEN
8932 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8933 '(+) after validate education_id ... ' ||
8934 'x_return_status = ' || x_return_status, l_debug_prefix);
8935 END IF;
8936 */
8937 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8938 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate education_id ... ' ||
8939 'x_return_status = ' || x_return_status,
8940 p_msg_level=>fnd_log.level_statement);
8941 END IF;
8942 END IF;
8943
8944 --------------------------
8945 -- validation for party_id
8946 --------------------------
8947 /****Logical APIs - validation not required****/
8948 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
8949 -- party_id is mandatory field
8950 IF p_create_update_flag = 'C' THEN
8951 validate_mandatory (
8952 p_create_update_flag => p_create_update_flag,
8953 p_column => 'party_id',
8954 p_column_value => p_education_rec.party_id,
8955 x_return_status => x_return_status);
8956
8957 /*IF g_debug THEN
8958 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8959 'party_id is mandatory field. ' ||
8960 'x_return_status = ' || x_return_status, l_debug_prefix);
8961 END IF;
8962 */
8963 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8964 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is mandatory field. ' ||
8965 'x_return_status = ' || x_return_status,
8966 p_msg_level=>fnd_log.level_statement);
8967 END IF;
8968
8969
8970 END IF;
8971
8972 -- party_id is non-updateable field
8973 IF p_create_update_flag = 'U' THEN
8974 validate_nonupdateable (
8975 p_column => 'party_id',
8976 p_column_value => p_education_rec.party_id,
8977 p_old_column_value => l_party_id,
8978 x_return_status => x_return_status);
8979
8980 /*IF g_debug THEN
8981 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
8982 'party_id is non-updateable field. ' ||
8983 'x_return_status = ' || x_return_status, l_debug_prefix);
8984 END IF;
8985 */
8986 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
8987 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable field. ' ||
8988 'x_return_status = ' || x_return_status,
8989 p_msg_level=>fnd_log.level_statement);
8990 END IF;
8991
8992
8993 END IF;
8994
8995 -- 2820602, Changed message due to this bug.
8996 -- party_id has foreign key HZ_PARTIES.PARTY_ID
8997 IF p_create_update_flag = 'C'
8998 AND
8999 p_education_rec.party_id IS NOT NULL
9000 AND
9001 p_education_rec.party_id <> fnd_api.g_miss_num
9002 THEN
9003 BEGIN
9004 SELECT 'Y'
9005 INTO l_dummy
9006 FROM hz_parties p
9007 WHERE p.party_id = p_education_rec.party_id and
9008 party_type = 'PERSON';
9009
9010 EXCEPTION
9011 WHEN NO_DATA_FOUND THEN
9012 fnd_message.set_name('AR', 'HZ_API_PARTY_NOT_PERSON');
9013 fnd_message.set_token('TABLE_NAME', 'HZ_EDUCATION');
9014 fnd_message.set_token('PARTY_ID_COL', 'party_id');
9015 fnd_msg_pub.add;
9016 x_return_status := fnd_api.g_ret_sts_error;
9017 END;
9018
9019 /*IF g_debug THEN
9020 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9021 'party_id has foreign key hz_parties.party_id. ' ||
9022 'x_return_status = ' || x_return_status, l_debug_prefix);
9023 END IF;
9024 */
9025 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9026 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
9027 'x_return_status = ' || x_return_status,
9028 p_msg_level=>fnd_log.level_statement);
9029 END IF;
9030
9031
9032 END IF;
9033 END IF;
9034
9035 ------------------------------------
9036 -- validation for last_date_attended
9037 ------------------------------------
9038
9039 -- If start_date_attended and last_dated_attended are passed,
9040 -- then last_date_attended must be greater than or equal to
9041 -- start_date_attended.
9042
9043
9044
9045 --2888399, For update check added more checks
9046
9047 IF p_create_update_flag = 'U' THEN
9048 IF p_education_rec.start_date_attended IS NOT NULL then
9049 temp_start_date_attended := p_education_rec.start_date_attended;
9050 ELSE
9051 temp_start_date_attended := l_start_date_attended;
9052 END IF;
9053 ELSIF p_create_update_flag = 'C' THEN
9054 temp_start_date_attended := p_education_rec.start_date_attended;
9055 END IF;
9056
9057 IF p_create_update_flag = 'U' THEN
9058 IF p_education_rec.last_date_attended IS NOT NULL then
9059 temp_last_date_attended := p_education_rec.last_date_attended;
9060 ELSE
9061 temp_last_date_attended := l_last_date_attended;
9062 END IF;
9063 ELSIF p_create_update_flag = 'C' THEN
9064 temp_last_date_attended := p_education_rec.last_date_attended;
9065 END IF;
9066
9067 IF (temp_start_date_attended IS NOT NULL AND
9068 temp_start_date_attended <> FND_API.G_MISS_DATE AND
9069 temp_last_date_attended IS NOT NULL AND
9070 temp_last_date_attended <> FND_API.G_MISS_DATE) THEN
9071
9072 validate_start_end_date (
9073
9074 p_create_update_flag => p_create_update_flag,
9075 p_start_date_column_name => 'start_date_attended',
9076 p_start_date => p_education_rec.start_date_attended,
9077 p_old_start_date => l_start_date_attended,
9078 p_end_date_column_name => 'last_date_attended',
9079 p_end_date => p_education_rec.last_date_attended,
9080 p_old_end_date => l_last_date_attended,
9081 x_return_status => x_return_status
9082 );
9083
9084 /*IF g_debug THEN
9085 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9086 'check whether last_date_attended is greater then or equal to start_date_attended. ' ||
9087 'x_return_status = ' || x_return_status, l_debug_prefix);
9088 END IF;
9089 */
9090 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9091 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9092 p_message=>'check whether last_date_attended is greater then or equal to start_date_attended. ' ||
9093 'x_return_status = ' || x_return_status,
9094 p_msg_level=>fnd_log.level_statement);
9095 END IF;
9096
9097 END IF;
9098
9099 /*IF g_debug THEN
9100 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9101 '(+) after validating the last_date_attended and start_date_attended... ' ||
9102 'x_return_status = ' || x_return_status, l_debug_prefix);
9103 END IF;
9104 */
9105 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9106 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9107 p_message=>'(+) after validating the last_date_attended and start_date_attended... ' ||
9108 'x_return_status = ' || x_return_status,
9109 p_msg_level=>fnd_log.level_statement);
9110 END IF;
9111
9112
9113
9114 --------------------------------------
9115 -- validation for school_attended_name
9116 --------------------------------------
9117
9118 -- If school_party_id is passed, school_attended_name
9119 -- should not be passed.
9120
9121 --2888486, Added these checks for update
9122 IF p_create_update_flag = 'U' THEN
9123 IF p_education_rec.school_party_id IS NOT NULL then
9124 temp_school_party_id := p_education_rec.school_party_id;
9125 ELSE
9126 temp_school_party_id := l_school_party_id;
9127 END IF;
9128 ELSIF p_create_update_flag = 'C' THEN
9129 temp_school_party_id := p_education_rec.school_party_id;
9130 END IF;
9131
9132 IF p_create_update_flag = 'U' THEN
9133 IF p_education_rec.school_attended_name IS NOT NULL then
9134 temp_school_attended_name := p_education_rec.school_attended_name;
9135 ELSE
9136 temp_school_attended_name := l_school_attended_name;
9137 END IF;
9138 ELSIF p_create_update_flag = 'C' THEN
9139 temp_school_attended_name := p_education_rec.school_attended_name;
9140 END IF;
9141
9142 IF temp_school_party_id is NOT NULL and
9143 temp_school_party_id <> fnd_api.g_miss_num and
9144 temp_school_attended_name is NOT NULL and
9145 temp_school_attended_name <> fnd_api.g_miss_char then
9146
9147 fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION2');
9148 fnd_message.set_token('COLUMN1', 'school_party_id');
9149 fnd_message.set_token('COLUMN2', 'school_attended_name');
9150 fnd_msg_pub.add;
9151 x_return_status := fnd_api.g_ret_sts_error;
9152 END IF;
9153
9154 /*IF g_debug THEN
9155 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9156 'check that school_attended_name is empty when school_party_id isn t. '||
9157 ' x_return_status = ' || x_return_status, l_debug_prefix);
9158 END IF;
9159 */
9160 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9161 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9162 p_message=>'check that school_attended_name is empty when school_party_id isn t. '||
9163 ' x_return_status = ' || x_return_status,
9164 p_msg_level=>fnd_log.level_statement);
9165 END IF;
9166
9167
9168 ---------------------------------
9169 -- validation for school_party_id
9170 ---------------------------------
9171
9172
9173 -- school_party_id must exist in HZ_PARTIES
9174 IF p_education_rec.school_party_id IS NOT NULL
9175 AND
9176 p_education_rec.school_party_id <> fnd_api.g_miss_num
9177 THEN
9178 BEGIN
9179 SELECT 'Y'
9180 INTO l_dummy
9181 FROM HZ_PARTIES
9182 WHERE PARTY_ID = p_education_rec.school_party_id AND
9183 PARTY_TYPE= 'ORGANIZATION';
9184
9185 EXCEPTION
9186 WHEN NO_DATA_FOUND THEN
9187 fnd_message.set_name('AR', 'HZ_API_PARTY_NOT_ORG');
9188 fnd_message.set_token('TABLE_NAME', 'HZ_EDUCATION');
9189 fnd_message.set_token('PARTY_ID_COL', 'school_party_id');
9190 fnd_msg_pub.add;
9191 x_return_status := fnd_api.g_ret_sts_error;
9192 END;
9193
9194 /*IF g_debug THEN
9195 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9196 'school_party_id should be in hz_parties.party_id. ' ||
9197 'x_return_status = ' || x_return_status, l_debug_prefix);
9198 END IF;
9199 */
9200 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9201 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9202 p_message=>'school_party_id should be in hz_parties.party_id. ' ||
9203 'x_return_status = ' || x_return_status,
9204 p_msg_level=>fnd_log.level_statement);
9205 END IF;
9206
9207 END IF;
9208
9209
9210 ---------------------------------------
9211 -- validation for type_of_school
9212 ---------------------------------------
9213
9214 -- type_of_school is a lookup code for lookup type HZ_TYPE_OF_SCHOOL
9215
9216 -- Bug 3425871
9217 -- The validation will be called only if the value changes.
9218
9219 IF p_education_rec.type_of_school IS NOT NULL
9220 AND
9221 p_education_rec.type_of_school <> fnd_api.g_miss_char
9222 AND
9223 (
9224 p_create_update_flag = 'C'
9225 OR
9226 (
9227 p_create_update_flag = 'U'
9228 AND
9229 p_education_rec.type_of_school <> l_type_of_school
9230 )
9231 )
9232 THEN
9233
9234 validate_lookup (
9235 p_column => 'type_of_school',
9236 p_lookup_type => 'HZ_TYPE_OF_SCHOOL',
9237 p_column_value => p_education_rec.type_of_school,
9238 x_return_status => x_return_status);
9239
9240
9241 /*IF g_debug THEN
9242 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9243 'type_of_school should be in lookup HZ_TYPE_OF_SCHOOL. ' ||
9244 'x_return_status = ' || x_return_status, l_debug_prefix);
9245 END IF;
9246 */
9247 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9248 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9249 p_message=>'type_of_school should be in lookup HZ_TYPE_OF_SCHOOL. ' ||
9250 'x_return_status = ' || x_return_status,
9251 p_msg_level=>fnd_log.level_statement);
9252 END IF;
9253 END IF;
9254
9255
9256 ------------------------
9257 -- validation for status
9258 ------------------------
9259 /****Logical APIs - validation not required****/
9260 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
9261 -- status is lookup code in lookup type REGISTRY_STATUS
9262 IF p_education_rec.status IS NOT NULL
9263 AND
9264 p_education_rec.status <> fnd_api.g_miss_char
9265 AND
9266 (p_create_update_flag = 'C'
9267 OR
9268 (p_create_update_flag = 'U'
9269 AND
9270 p_education_rec.status <> NVL(l_status, fnd_api.g_miss_char)
9271 )
9272 )
9273 THEN
9274 validate_lookup (
9275 p_column => 'status',
9276 p_lookup_type => 'REGISTRY_STATUS',
9277 p_column_value => p_education_rec.status,
9278 x_return_status => x_return_status);
9279
9280 /*IF g_debug THEN
9281 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9282 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
9283 'x_return_status = ' || x_return_status, l_debug_prefix);
9284 END IF;
9285 */
9286 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9287 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9288 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
9289 'x_return_status = ' || x_return_status,
9290 p_msg_level=>fnd_log.level_statement);
9291 END IF;
9292
9293
9294 END IF;
9295 END IF;
9296
9297 -- status cannot be set to null during update
9298 IF p_create_update_flag = 'U' THEN
9299 validate_cannot_update_to_null (
9300 p_column => 'status',
9301 p_column_value => p_education_rec.status,
9302 x_return_status => x_return_status);
9303 END IF;
9304
9305
9306 --------------------------------------
9307 -- validate created_by_module
9308 --------------------------------------
9309
9310 validate_created_by_module(
9311 p_create_update_flag => p_create_update_flag,
9312 p_created_by_module => p_education_rec.created_by_module,
9313 p_old_created_by_module => l_created_by_module,
9314 x_return_status => x_return_status);
9315
9316 --------------------------------------
9317 -- validate application_id
9318 --------------------------------------
9319
9320 validate_application_id(
9321 p_create_update_flag => p_create_update_flag,
9322 p_application_id => p_education_rec.application_id,
9323 p_old_application_id => l_application_id,
9324 x_return_status => x_return_status);
9325
9326 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
9327 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_education (-)',
9328 p_msg_level=>fnd_log.level_procedure);
9329 END IF;
9330
9331 END validate_education;
9332
9333
9334 /**
9335 * PROCEDURE validate_employment_history
9336 *
9337 * DESCRIPTION
9338 * Validates employment_history record. Checks for
9339 * uniqueness
9340 * lookup types
9341 * mandatory columns
9342 * non-updateable fields
9343 * foreign key validations
9344 * other validations
9345 *
9346 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
9347 *
9348 * ARGUMENTS
9349 * IN:
9350 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
9351 * p_employment_history_rec Employment_history record.
9352 * p_rowid Rowid of the record (used only in update mode).
9353 * IN/OUT:
9354 * x_return_status Return status after the call. The status can
9355 * be FND_API.G_RET_STS_SUCCESS (success),
9356 * fnd_api.g_ret_sts_error (error),
9357 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
9358 *
9359 * NOTES
9360 *
9361 * MODIFICATION HISTORY
9362 *
9363 * 31-Jan-2001 Porkodi C o Created.
9364 * 11-Mar-2003 Porkodi C o 2829037, Changed the code to update values for tenure_code and
9365 * fraction_of_tenure, while the value for faculty_position_flag is
9366 * is null.
9367 * 09-Apr-2003 Porkodi C o 2890662, validation for begin_date and end_date combination has
9368 * been modified.
9369 * 25-Oct-2005 Jayashree K o 3848056 Validation for weekly hours to hold the value 0
9370 */
9371
9372 PROCEDURE validate_employment_history(
9373 p_create_update_flag IN VARCHAR2,
9374 p_employment_history_rec IN HZ_PERSON_INFO_V2PUB.EMPLOYMENT_HISTORY_REC_TYPE,
9375 p_rowid IN ROWID ,
9376 x_return_status IN OUT NOCOPY VARCHAR2
9377 ) IS
9378
9379 l_count NUMBER;
9380 l_employment_history_id NUMBER;
9381 l_dummy VARCHAR2(1);
9382 l_party_id NUMBER := p_employment_history_rec.party_id;
9383 l_created_by_module VARCHAR2(150);
9384 l_application_id NUMBER;
9385 l_status VARCHAR2(1);
9386 l_debug_prefix VARCHAR2(30) := '';
9387 l_begin_date DATE;
9388 l_end_date DATE;
9389 l_faculty_position_flag VARCHAR2(1);
9390 l_employed_by_party_id NUMBER;
9391 l_employed_by_name_company VARCHAR2(60);
9392 l_employed_as_title_code VARCHAR2(30);
9393 l_employed_as_title VARCHAR2(60);
9394 temp_faculty_position_flag VARCHAR2(1);
9395 temp_begin_date DATE;
9396 temp_end_date DATE;
9397 temp_employed_by_party_id NUMBER;
9398 temp_employed_by_name_company VARCHAR2(60);
9399 temp_employed_as_title_code VARCHAR2(30);
9400 temp_employed_as_title VARCHAR2(60);
9401
9402 CURSOR employment_history_cur (p_employment_history_id IN NUMBER) IS
9403 SELECT 'Y'
9404 FROM hz_employment_history hc
9405 WHERE hc.employment_history_id = p_employment_history_id;
9406
9407 BEGIN
9408
9409 --enable_debug;
9410
9411 -- Debug info.
9412 /*IF g_debug THEN
9413 hz_utility_v2pub.debug ('validate_employment_history (+)');
9414 END IF;
9415 */
9416 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
9417 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_employment_history (+)',
9418 p_msg_level=>fnd_log.level_procedure);
9419 END IF;
9420
9421 -- do the query to get old values for update
9422 IF p_create_update_flag = 'U'
9423 THEN
9424 SELECT EMPLOYMENT_HISTORY_ID,
9425 PARTY_ID,
9426 BEGIN_DATE,
9427 END_DATE,
9428 FACULTY_POSITION_FLAG,
9429 EMPLOYED_BY_PARTY_ID,
9430 EMPLOYED_BY_NAME_COMPANY,
9431 EMPLOYED_AS_TITLE_CODE,
9432 EMPLOYED_AS_TITLE,
9433 STATUS,
9434 CREATED_BY_MODULE,
9435 APPLICATION_ID
9436 INTO l_employment_history_id,
9437 l_party_id,
9438 l_begin_date,
9439 l_end_date,
9440 l_faculty_position_flag,
9441 l_employed_by_party_id,
9442 l_employed_by_name_company,
9443 l_employed_as_title_code,
9444 l_employed_as_title,
9445 l_status,
9446 l_created_by_module,
9447 l_application_id
9448 FROM HZ_EMPLOYMENT_HISTORY
9449 WHERE ROWID = p_rowid;
9450 END IF;
9451
9452
9453 --------------------------------------
9454 -- validate employment_history_id
9455 --------------------------------------
9456 /****Logical APIs - validation not required****/
9457 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
9458 -- If primary key value is passed, check for uniqueness.
9459 -- If primary key value is not passed, it will be generated
9460 -- from sequence by table handler.
9461
9462
9463 IF p_create_update_flag = 'C' THEN
9464 IF p_employment_history_rec.employment_history_id IS NOT NULL AND
9465 p_employment_history_rec.employment_history_id <> fnd_api.g_miss_num
9466 THEN
9467 OPEN employment_history_cur (p_employment_history_rec.employment_history_id);
9468 FETCH employment_history_cur INTO l_dummy;
9469
9470 -- key is not unique, push an error onto the stack.
9471 IF NVL(employment_history_cur%FOUND, FALSE) THEN
9472 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
9473 fnd_message.set_token('COLUMN', 'employment_history_id');
9474 fnd_msg_pub.add;
9475 x_return_status := fnd_api.g_ret_sts_error;
9476 END IF;
9477 CLOSE employment_history_cur;
9478
9479 /*IF g_debug THEN
9480 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9481 'check that employment_history_id is unique during creation. ' ||
9482 ' x_return_status = ' || x_return_status, l_debug_prefix);
9483 END IF;
9484 */
9485 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9486 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9487 p_message=>'check that employment_history_id is unique during creation. ' ||
9488 ' x_return_status = ' || x_return_status,
9489 p_msg_level=>fnd_log.level_statement);
9490 END IF;
9491
9492 END IF;
9493 END IF;
9494
9495
9496 -- employment_history_id is non-updateable field
9497 IF p_create_update_flag = 'U' THEN
9498 validate_nonupdateable (
9499 p_column => 'employment_history_id',
9500 p_column_value => p_employment_history_rec.employment_history_id,
9501 p_old_column_value => l_employment_history_id,
9502 x_return_status => x_return_status);
9503
9504 /*IF g_debug THEN
9505 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9506 'employment_history_id is non-updateable field. ' ||
9507 'x_return_status = ' || x_return_status, l_debug_prefix);
9508 END IF;
9509 */
9510 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9511 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9512 p_message=>'employment_history_id is non-updateable field. ' ||
9513 'x_return_status = ' || x_return_status,
9514 p_msg_level=>fnd_log.level_statement);
9515 END IF;
9516
9517 END IF;
9518
9519 /*IF g_debug THEN
9520 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9521 '(+) after validation of employment_history_id ... ' ||
9522 'x_return_status = ' || x_return_status, l_debug_prefix);
9523 END IF;
9524 */
9525 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9526 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9527 p_message=>'(+) after validation of employment_history_id ... ' ||
9528 'x_return_status = ' || x_return_status,
9529 p_msg_level=>fnd_log.level_statement);
9530 END IF;
9531 END IF;
9532
9533 --------------------------
9534 -- validation for party_id
9535 --------------------------
9536 /****Logical APIs - validation not required****/
9537 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
9538 -- party_id is mandatory field
9539 IF p_create_update_flag = 'C' THEN
9540 validate_mandatory (
9541 p_create_update_flag => p_create_update_flag,
9542 p_column => 'party_id',
9543 p_column_value => p_employment_history_rec.party_id,
9544 x_return_status => x_return_status);
9545
9546 /*IF g_debug THEN
9547 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9548 'party_id is mandatory field. ' ||
9549 'x_return_status = ' || x_return_status, l_debug_prefix);
9550 END IF;
9551 */
9552 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9553 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is mandatory field. ' ||
9554 'x_return_status = ' || x_return_status,
9555 p_msg_level=>fnd_log.level_statement);
9556 END IF;
9557
9558
9559 END IF;
9560
9561 -- party_id is non-updateable field
9562 IF p_create_update_flag = 'U' THEN
9563 validate_nonupdateable (
9564 p_column => 'party_id',
9565 p_column_value => p_employment_history_rec.party_id,
9566 p_old_column_value => l_party_id,
9567 x_return_status => x_return_status);
9568
9569 /*IF g_debug THEN
9570 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9571 'party_id is non-updateable field. ' ||
9572 'x_return_status = ' || x_return_status, l_debug_prefix);
9573 END IF;
9574 */
9575 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9576 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable field. ' ||
9577 'x_return_status = ' || x_return_status,
9578 p_msg_level=>fnd_log.level_statement);
9579 END IF;
9580
9581
9582 END IF;
9583
9584 -- party_id has foreign key HZ_PARTIES.PARTY_ID
9585 IF p_create_update_flag = 'C'
9586 AND
9587 p_employment_history_rec.party_id IS NOT NULL
9588 AND
9589 p_employment_history_rec.party_id <> fnd_api.g_miss_num
9590 THEN
9591 BEGIN
9592 SELECT 'Y'
9593 INTO l_dummy
9594 FROM hz_parties p
9595 WHERE p.party_id = p_employment_history_rec.party_id and
9596 party_type = 'PERSON';
9597
9598 EXCEPTION
9599 WHEN NO_DATA_FOUND THEN
9600 fnd_message.set_name('AR', 'HZ_API_PARTY_NOT_PERSON');
9601 fnd_message.set_token('TABLE_NAME', 'HZ_EMPLOYMENT_HISTORY');
9602 fnd_message.set_token('PARTY_ID_COL', 'party_id');
9603 fnd_msg_pub.add;
9604 x_return_status := fnd_api.g_ret_sts_error;
9605 END;
9606
9607 /*IF g_debug THEN
9608 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9609 'party_id has foreign key hz_parties.party_id. ' ||
9610 'x_return_status = ' || x_return_status, l_debug_prefix);
9611 END IF;
9612 */
9613 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9614 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
9615 'x_return_status = ' || x_return_status,
9616 p_msg_level=>fnd_log.level_statement);
9617 END IF;
9618
9619
9620 END IF;
9621 END IF;
9622
9623 ------------------------------------
9624 -- validation for end_date
9625 ------------------------------------
9626
9627 -- If begin_date and end_date are passed, then end_date must be
9628 -- greater than or equal to begin_date.
9629
9630
9631
9632 --2890662, Added more if conditions
9633
9634 IF p_create_update_flag = 'U' THEN
9635 IF p_employment_history_rec.begin_date IS NOT NULL then
9636 temp_begin_date := p_employment_history_rec.begin_date;
9637 ELSE
9638 temp_begin_date := l_begin_date;
9639 END IF;
9640 ELSIF p_create_update_flag = 'C' THEN
9641 temp_begin_date := p_employment_history_rec.begin_date;
9642 END IF;
9643
9644 IF p_create_update_flag = 'U' THEN
9645 IF p_employment_history_rec.end_date IS NOT NULL then
9646 temp_end_date := p_employment_history_rec.end_date;
9647 ELSE
9648 temp_end_date := l_end_date;
9649 END IF;
9650 ELSIF p_create_update_flag = 'C' THEN
9651 temp_end_date := p_employment_history_rec.end_date;
9652 END IF;
9653
9654 IF (temp_begin_date IS NOT NULL AND
9655 temp_begin_date <> FND_API.G_MISS_DATE AND
9656 temp_end_date IS NOT NULL AND
9657 temp_end_date <> FND_API.G_MISS_DATE) THEN
9658
9659 validate_start_end_date (
9660
9661 p_create_update_flag => p_create_update_flag,
9662 p_start_date_column_name => 'begin_date',
9663 p_start_date => p_employment_history_rec.begin_date,
9664 p_old_start_date => l_begin_date,
9665 p_end_date_column_name => 'end_date',
9666 p_end_date => p_employment_history_rec.end_date,
9667 p_old_end_date => l_end_date,
9668 x_return_status => x_return_status
9669 );
9670
9671 /*IF g_debug THEN
9672 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9673 'check whether end_date is greater than or equal to begin_date. ' ||
9674 'x_return_status = ' || x_return_status, l_debug_prefix);
9675 END IF;
9676 */
9677 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9678 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9679 p_message=>'check whether end_date is greater than or equal to begin_date. ' ||
9680 'x_return_status = ' || x_return_status,
9681 p_msg_level=>fnd_log.level_statement);
9682 END IF;
9683
9684 END IF;
9685
9686 /*IF g_debug THEN
9687 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9688 '(+) after validating the begin_date and end_date... ' ||
9689 'x_return_status = ' || x_return_status, l_debug_prefix);
9690 END IF;
9691 */
9692 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9693 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9694 p_message=>'(+) after validating the begin_date and end_date... ' ||
9695 'x_return_status = ' || x_return_status,
9696 p_msg_level=>fnd_log.level_statement);
9697 END IF;
9698
9699
9700
9701 ---------------------------------------
9702 -- validation for employment_type_code
9703 ---------------------------------------
9704
9705 -- employment_type_code is validated against lookup type HZ_EMPLOYMENT_TYPE
9706 validate_lookup (
9707 p_column => 'employment_type_code',
9708 p_lookup_type => 'HZ_EMPLOYMENT_TYPE',
9709 p_column_value => p_employment_history_rec.employment_type_code,
9710 x_return_status => x_return_status);
9711
9712
9713 /*IF g_debug THEN
9714 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9715 'employment_type_code should be in lookup HZ_EMPLOYMENT_TYPE. ' ||
9716 'x_return_status = ' || x_return_status, l_debug_prefix);
9717 END IF;
9718 */
9719 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9720 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9721 p_message=>'employment_type_code should be in lookup HZ_EMPLOYMENT_TYPE. ' ||
9722 'x_return_status = ' || x_return_status,
9723 p_msg_level=>fnd_log.level_statement);
9724 END IF;
9725
9726
9727
9728 ----------------------------------------
9729 -- validation for employed_as_title_code
9730 ----------------------------------------
9731
9732 -- employed_as_title_code is validated against lookup type RESPONSIBILITY
9733 validate_lookup (
9734 p_column => 'employed_as_title_code',
9735 p_lookup_type => 'RESPONSIBILITY',
9736 p_column_value => p_employment_history_rec.employed_as_title_code,
9737 x_return_status => x_return_status);
9738
9739
9740 /*IF g_debug THEN
9741 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9742 'employed_as_title_code should be in lookup RESPONSIBILITY. ' ||
9743 'x_return_status = ' || x_return_status, l_debug_prefix);
9744 END IF;
9745 */
9746 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9747 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9748 p_message=>'employed_as_title_code should be in lookup RESPONSIBILITY. ' ||
9749 'x_return_status = ' || x_return_status,
9750 p_msg_level=>fnd_log.level_statement);
9751 END IF;
9752
9753
9754
9755 ------------------------------------
9756 -- validation for employed_as_title
9757 ------------------------------------
9758
9759 -- If employed_as_title_code is passed, employed_as_title
9760 -- should be null.
9761
9762 IF p_create_update_flag = 'U' THEN
9763 IF p_employment_history_rec.employed_as_title_code IS NOT NULL then
9764 temp_employed_as_title_code := p_employment_history_rec.employed_as_title_code;
9765 ELSE
9766 temp_employed_as_title_code := l_employed_as_title_code;
9767 END IF;
9768 ELSIF p_create_update_flag = 'C' THEN
9769 temp_employed_as_title_code := p_employment_history_rec.employed_as_title_code;
9770 END IF;
9771
9772
9773 IF p_create_update_flag = 'U' THEN
9774 IF p_employment_history_rec.employed_as_title IS NOT NULL then
9775 temp_employed_as_title := p_employment_history_rec.employed_as_title;
9776 ELSE
9777 temp_employed_as_title := l_employed_as_title;
9778 END IF;
9779 ELSIF p_create_update_flag = 'C' THEN
9780 temp_employed_as_title := p_employment_history_rec.employed_as_title;
9781 END IF;
9782
9783
9784 IF (temp_employed_as_title_code IS NOT NULL and
9785 temp_employed_as_title_code <> FND_API.G_MISS_CHAR AND
9786 temp_employed_as_title IS NOT NULL AND
9787 temp_employed_as_title <> FND_API.G_MISS_CHAR) THEN
9788
9789 fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION2');
9790 fnd_message.set_token('COLUMN1', 'employed_as_title');
9791 fnd_message.set_token('COLUMN2', 'employed_as_title_code');
9792 fnd_msg_pub.add;
9793 x_return_status := fnd_api.g_ret_sts_error;
9794
9795 /*IF g_debug THEN
9796 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9797 'check that employed_as_title is empty when employed_as_title_code isn t. '||
9798 ' x_return_status = ' || x_return_status, l_debug_prefix);
9799 END IF;
9800 */
9801 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9802 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9803 p_message=>'check that employed_as_title is empty when employed_as_title_code isn t. '||
9804 ' x_return_status = ' || x_return_status,
9805 p_msg_level=>fnd_log.level_statement);
9806 END IF;
9807
9808 END IF;
9809
9810
9811 /*IF g_debug THEN
9812 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9813 '(+) after validating employed_as_title ... ' ||
9814 'x_return_status = ' || x_return_status, l_debug_prefix);
9815 END IF;
9816 */
9817 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9818 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9819 p_message=>'(+) after validating employed_as_title ... ' ||
9820 'x_return_status = ' || x_return_status,
9821 p_msg_level=>fnd_log.level_statement);
9822 END IF;
9823
9824
9825
9826 --------------------------------------
9827 -- validation for employed_by_party_id
9828 --------------------------------------
9829
9830
9831 -- employed_by_party_id must exist in HZ_PARTIES
9832 IF p_employment_history_rec.employed_by_party_id IS NOT NULL
9833 AND
9834 p_employment_history_rec.employed_by_party_id <> fnd_api.g_miss_num
9835 THEN
9836 BEGIN
9837 SELECT 'Y'
9838 INTO l_dummy
9839 FROM HZ_PARTIES
9840 WHERE PARTY_ID = p_employment_history_rec.employed_by_party_id;
9841
9842 EXCEPTION
9843 WHEN NO_DATA_FOUND THEN
9844 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
9845 fnd_message.set_token('FK', 'employed_by_party_id');
9846 fnd_message.set_token('COLUMN', 'party_id');
9847 fnd_message.set_token('TABLE', 'hz_parties');
9848 fnd_msg_pub.add;
9849 x_return_status := fnd_api.g_ret_sts_error;
9850 END;
9851
9852 /*IF g_debug THEN
9853 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9854 'employed_by_party_id should be in hz_parties.party_id. ' ||
9855 'x_return_status = ' || x_return_status, l_debug_prefix);
9856 END IF;
9857 */
9858 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9859 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9860 p_message=>'employed_by_party_id should be in hz_parties.party_id. ' ||
9861 'x_return_status = ' || x_return_status,
9862 p_msg_level=>fnd_log.level_statement);
9863 END IF;
9864
9865 END IF;
9866
9867
9868 ------------------------------------------
9869 -- validation for employed_by_name_company
9870 ------------------------------------------
9871
9872 -- If employed_by_party_id is passed, employed_by_name_company
9873 -- should be null.
9874
9875 IF p_create_update_flag = 'U' THEN
9876 IF p_employment_history_rec.employed_by_party_id IS NOT NULL then
9877 temp_employed_by_party_id := p_employment_history_rec.employed_by_party_id;
9878 ELSE
9879 temp_employed_by_party_id := l_employed_by_party_id;
9880 END IF;
9881 ELSIF p_create_update_flag = 'C' THEN
9882 temp_employed_by_party_id := p_employment_history_rec.employed_by_party_id;
9883 END IF;
9884
9885
9886 IF p_create_update_flag = 'U' THEN
9887 IF p_employment_history_rec.employed_by_name_company IS NOT NULL then
9888 temp_employed_by_name_company := p_employment_history_rec.employed_by_name_company;
9889 ELSE
9890 temp_employed_by_name_company := l_employed_by_name_company;
9891 END IF;
9892 ELSIF p_create_update_flag = 'C' THEN
9893 temp_employed_by_name_company := p_employment_history_rec.employed_by_name_company;
9894 END IF;
9895
9896
9897 IF (temp_employed_by_party_id IS NOT NULL and
9898 temp_employed_by_party_id <> FND_API.G_MISS_NUM AND
9899 temp_employed_by_name_company IS NOT NULL AND
9900 temp_employed_by_name_company <> FND_API.G_MISS_CHAR) THEN
9901
9902 fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION2');
9903 fnd_message.set_token('COLUMN1', 'employed_by_name_company');
9904 fnd_message.set_token('COLUMN2', 'employed_by_party_id');
9905 fnd_msg_pub.add;
9906 x_return_status := fnd_api.g_ret_sts_error;
9907
9908 /*IF g_debug THEN
9909 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9910 'check that employed_by_name_company is empty when employed_by_party_id isn t. ' ||
9911 ' x_return_status = ' || x_return_status, l_debug_prefix);
9912 END IF;
9913 */
9914 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9915 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9916 p_message=>'check that employed_by_name_company is empty when employed_by_party_id isn t. ' ||
9917 ' x_return_status = ' || x_return_status,
9918 p_msg_level=>fnd_log.level_statement);
9919 END IF;
9920
9921 END IF;
9922
9923
9924 /*IF g_debug THEN
9925 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9926 '(+) after validating employed_by_name_company ... ' ||
9927 'x_return_status = ' || x_return_status, l_debug_prefix);
9928 END IF;
9929 */
9930 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9931 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9932 p_message=>'(+) after validating employed_by_name_company ... ' ||
9933 'x_return_status = ' || x_return_status,
9934 p_msg_level=>fnd_log.level_statement);
9935 END IF;
9936
9937
9938
9939 --------------------------------------
9940 -- validation for weekly_work_hours
9941 --------------------------------------
9942 -- 3848056 Changed the condition for the Weekly Hours to hold the value 0
9943
9944 -- If weekly_work_hours is passed, must be greater than or equal to zero
9945 -- and less than or equal to 168.
9946
9947 IF p_employment_history_rec.weekly_work_hours IS NOT NULL AND
9948 p_employment_history_rec.weekly_work_hours <> fnd_api.g_miss_num
9949 THEN
9950
9951 IF p_employment_history_rec.weekly_work_hours < 0 OR
9952 p_employment_history_rec.weekly_work_hours > 168 THEN
9953
9954 fnd_message.set_name('AR', 'HZ_API_VALUE_BETWEEN');
9955 fnd_message.set_token('COLUMN', 'weekly_work_hours');
9956 -- Bug 4226199 : This should be changed for bug 3848056
9957 fnd_message.set_token('VALUE1', '0');
9958 fnd_message.set_token('VALUE2', '168');
9959 fnd_msg_pub.add;
9960 x_return_status := fnd_api.g_ret_sts_error;
9961 END IF;
9962
9963 /*IF g_debug THEN
9964 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9965 'check that weekly_work_hours is 1 to 168 value range. ' ||
9966 ' x_return_status = ' || x_return_status, l_debug_prefix);
9967 END IF;
9968 */
9969 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9970 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9971 p_message=>'check that weekly_work_hours is 1 to 168 value range. ' ||
9972 ' x_return_status = ' || x_return_status,
9973 p_msg_level=>fnd_log.level_statement);
9974 END IF;
9975
9976 END IF;
9977
9978
9979 /*IF g_debug THEN
9980 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9981 '(+) after validating weekly_work_hours ... ' ||
9982 'x_return_status = ' || x_return_status, l_debug_prefix);
9983 END IF;
9984 */
9985 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
9986 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
9987 p_message=>'(+) after validating weekly_work_hours ... ' ||
9988 'x_return_status = ' || x_return_status,
9989 p_msg_level=>fnd_log.level_statement);
9990 END IF;
9991
9992
9993
9994 ---------------------------------------
9995 -- validation for faculty_position_flag
9996 ---------------------------------------
9997
9998 -- faculty_position_flag is mandatory field
9999
10000 validate_mandatory (
10001 p_create_update_flag => p_create_update_flag,
10002 p_column => 'faculty_position_flag',
10003 p_column_value => p_employment_history_rec.faculty_position_flag,
10004 x_return_status => x_return_status);
10005
10006 /*IF g_debug THEN
10007 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10008 'faculty_position_flag is mandatory field. ' ||
10009 'x_return_status = ' || x_return_status, l_debug_prefix);
10010 END IF;
10011 */
10012 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10013 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'faculty_position_flag is mandatory field. ' ||
10014 'x_return_status = ' || x_return_status,
10015 p_msg_level=>fnd_log.level_statement);
10016 END IF;
10017
10018
10019
10020 -- faculty_position_flag is validated against lookup type YES/NO
10021 validate_lookup (
10022 p_column => 'faculty_position_flag',
10023 p_lookup_type => 'YES/NO',
10024 p_column_value => p_employment_history_rec.faculty_position_flag,
10025 x_return_status => x_return_status);
10026
10027
10028 /*IF g_debug THEN
10029 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10030 'faculty_position_flag should be in lookup YES/NO. ' ||
10031 'x_return_status = ' || x_return_status, l_debug_prefix);
10032 END IF;
10033 */
10034 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10035 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'faculty_position_flag should be in lookup YES/NO. ' ||
10036 'x_return_status = ' || x_return_status,
10037 p_msg_level=>fnd_log.level_statement);
10038 END IF;
10039
10040
10041
10042 --------------------------------
10043 -- validation for tenure_code
10044 --------------------------------
10045
10046 -- If tenure_code is passed, faculty_position_flag
10047 -- should be Y.
10048
10049 --2829037 added few more checks due to this bug.
10050 IF p_create_update_flag = 'U' THEN
10051 IF p_employment_history_rec.faculty_position_flag IS NOT NULL then
10052 temp_faculty_position_flag := p_employment_history_rec.faculty_position_flag;
10053 ELSE
10054 temp_faculty_position_flag := l_faculty_position_flag;
10055 END IF;
10056 ELSIF p_create_update_flag = 'C' THEN
10057 temp_faculty_position_flag := p_employment_history_rec.faculty_position_flag;
10058 END IF;
10059
10060 IF p_employment_history_rec.tenure_code IS NOT NULL AND
10061 p_employment_history_rec.tenure_code <> fnd_api.g_miss_char then
10062
10063 IF temp_faculty_position_flag = 'Y' THEN
10064
10065 validate_lookup (
10066 p_column => 'tenure_code',
10067 p_lookup_type => 'HZ_TENURE_CODE',
10068 p_column_value => p_employment_history_rec.tenure_code,
10069 x_return_status => x_return_status);
10070
10071
10072 /*IF g_debug THEN
10073 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10074 'tenure_code should be in lookup HZ_TENURE_CODE. ' ||
10075 ' x_return_status = ' || x_return_status, l_debug_prefix);
10076 END IF;
10077 */
10078 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10079 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10080 p_message=>'tenure_code should be in lookup HZ_TENURE_CODE. ' ||
10081 ' x_return_status = ' || x_return_status,
10082 p_msg_level=>fnd_log.level_statement);
10083 END IF;
10084
10085 ELSE
10086 fnd_message.set_name('AR', 'HZ_API_VAL_DEP_FIELDS');
10087 fnd_message.set_token('COLUMN1', 'faculty_position_flag');
10088 fnd_message.set_token('COLUMN2', 'tenure_code');
10089 fnd_message.set_token('VALUE1', 'N');
10090 fnd_message.set_token('VALUE2', 'null');
10091 fnd_msg_pub.add;
10092 x_return_status := fnd_api.g_ret_sts_error;
10093
10094 END IF;
10095
10096 /*IF g_debug THEN
10097 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10098 '(+) after validating tenure_code ... ' ||
10099 'x_return_status = ' || x_return_status, l_debug_prefix);
10100 END IF;
10101 */
10102 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10103 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validating tenure_code ... ' ||
10104 'x_return_status = ' || x_return_status,
10105 p_msg_level=>fnd_log.level_statement);
10106 END IF;
10107
10108 END IF;
10109
10110 ------------------------------------
10111 -- validation for fraction_of_tenure
10112 ------------------------------------
10113
10114 -- If fraction_of_tenure is passed, faculty_position_flag
10115 -- should be Y.
10116
10117 IF p_employment_history_rec.fraction_of_tenure IS NOT NULL AND
10118 p_employment_history_rec.fraction_of_tenure <> fnd_api.g_miss_num then
10119 IF temp_faculty_position_flag = 'Y' then
10120 IF p_employment_history_rec.fraction_of_tenure < 0 OR
10121 p_employment_history_rec.fraction_of_tenure > 100 THEN
10122
10123 fnd_message.set_name('AR', 'HZ_API_VALUE_BETWEEN');
10124 fnd_message.set_token('COLUMN', 'fraction_of_tenure');
10125 fnd_message.set_token('VALUE1', '0');
10126 fnd_message.set_token('VALUE2', '100');
10127 fnd_msg_pub.add;
10128 x_return_status := fnd_api.g_ret_sts_error;
10129 END IF;
10130
10131 /*IF g_debug THEN
10132 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10133 'check that fraction_of_tenure is 0 to 100 value range. ' ||
10134 ' x_return_status = ' || x_return_status, l_debug_prefix);
10135 END IF;
10136 */
10137 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10138 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10139 p_message=>'check that fraction_of_tenure is 0 to 100 value range. ' ||
10140 ' x_return_status = ' || x_return_status,
10141 p_msg_level=>fnd_log.level_statement);
10142 END IF;
10143
10144 ELSE
10145 fnd_message.set_name('AR', 'HZ_API_VAL_DEP_FIELDS');
10146 fnd_message.set_token('COLUMN1', 'faculty_position_flag');
10147 fnd_message.set_token('COLUMN2', 'fraction_of_tenure');
10148 fnd_message.set_token('VALUE1', 'N');
10149 fnd_message.set_token('VALUE2', 'null');
10150
10151 fnd_message.set_token('COLUMN', 'fraction_of_tenure');
10152 fnd_msg_pub.add;
10153 x_return_status := fnd_api.g_ret_sts_error;
10154 END IF;
10155
10156 END IF;
10157
10158 /*IF g_debug THEN
10159 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10160 '(+) after validating fraction_of_tenure ... ' ||
10161 'x_return_status = ' || x_return_status, l_debug_prefix);
10162 END IF;
10163 */
10164 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10165 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validating fraction_of_tenure ... ' ||
10166 'x_return_status = ' || x_return_status,
10167 p_msg_level=>fnd_log.level_statement);
10168 END IF;
10169
10170
10171
10172 ------------------------
10173 -- validation for status
10174 ------------------------
10175 /****Logical APIs - validation not required****/
10176 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10177 -- status is lookup code in lookup type REGISTRY_STATUS
10178 IF p_employment_history_rec.status IS NOT NULL
10179 AND
10180 p_employment_history_rec.status <> fnd_api.g_miss_char
10181 AND
10182 (p_create_update_flag = 'C'
10183 OR
10184 (p_create_update_flag = 'U'
10185 AND
10186 p_employment_history_rec.status <> NVL(l_status, fnd_api.g_miss_char)
10187 )
10188 )
10189 THEN
10190 validate_lookup (
10191 p_column => 'status',
10192 p_lookup_type => 'REGISTRY_STATUS',
10193 p_column_value => p_employment_history_rec.status,
10194 x_return_status => x_return_status);
10195
10196 /*IF g_debug THEN
10197 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10198 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
10199 'x_return_status = ' || x_return_status, l_debug_prefix);
10200 END IF;
10201 */
10202 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10203 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10204 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
10205 'x_return_status = ' || x_return_status,
10206 p_msg_level=>fnd_log.level_statement);
10207 END IF;
10208
10209
10210 END IF;
10211 END IF;
10212
10213 -- status cannot be set to null during update
10214 IF p_create_update_flag = 'U' THEN
10215 validate_cannot_update_to_null (
10216 p_column => 'status',
10217 p_column_value => p_employment_history_rec.status,
10218 x_return_status => x_return_status);
10219 END IF;
10220
10221
10222 --------------------------------------
10223 -- validate created_by_module
10224 --------------------------------------
10225
10226 validate_created_by_module(
10227 p_create_update_flag => p_create_update_flag,
10228 p_created_by_module => p_employment_history_rec.created_by_module,
10229 p_old_created_by_module => l_created_by_module,
10230 x_return_status => x_return_status);
10231
10232 --------------------------------------
10233 -- validate application_id
10234 --------------------------------------
10235
10236 validate_application_id(
10237 p_create_update_flag => p_create_update_flag,
10238 p_application_id => p_employment_history_rec.application_id,
10239 p_old_application_id => l_application_id,
10240 x_return_status => x_return_status);
10241
10242 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
10243 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_employment_history (-)',
10244 p_msg_level=>fnd_log.level_procedure);
10245 END IF;
10246
10247 END validate_employment_history;
10248
10249
10250 /**
10251 * PROCEDURE validate_work_class
10252 *
10253 * DESCRIPTION
10254 * Validates work_class record. Checks for
10255 * uniqueness
10256 * mandatory columns
10257 * non-updateable fields
10258 * foreign key validations
10259 *
10260 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
10261 *
10262 * ARGUMENTS
10263 * IN:
10264 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
10265 * p_work_class_rec Work_class record.
10266 * p_rowid Rowid of the record (used only in update mode).
10267 * IN/OUT:
10268 * x_return_status Return status after the call. The status can
10269 * be FND_API.G_RET_STS_SUCCESS (success),
10270 * fnd_api.g_ret_sts_error (error),
10271 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
10272 *
10273 * NOTES
10274 *
10275 * MODIFICATION HISTORY
10276 *
10277 * 02-Feb-2003 Porkodi C o Created.
10278 * 10-Mar-2003 Porkodi C Bug 2829041, Corrected the validation for employment_history_id
10279 * to be a foreign key from hz_employment_history.
10280 *
10281 */
10282
10283 PROCEDURE validate_work_class(
10284 p_create_update_flag IN VARCHAR2,
10285 p_work_class_rec IN HZ_PERSON_INFO_V2PUB.WORK_CLASS_REC_TYPE,
10286 p_rowid IN ROWID ,
10287 x_return_status IN OUT NOCOPY VARCHAR2
10288 ) IS
10289
10290 l_count NUMBER;
10291 l_work_class_id NUMBER;
10292 l_dummy VARCHAR2(1);
10293 l_employment_history_id NUMBER := p_work_class_rec.employment_history_id;
10294 l_created_by_module VARCHAR2(150);
10295 l_application_id NUMBER;
10296 l_status VARCHAR2(1);
10297 l_debug_prefix VARCHAR2(30) := '';
10298
10299 CURSOR work_class_cur (p_work_class_id IN NUMBER) IS
10300 SELECT 'Y'
10301 FROM hz_work_class hc
10302 WHERE hc.work_class_id = p_work_class_id;
10303
10304 BEGIN
10305
10306 --enable_debug;
10307
10308 -- Debug info.
10309 /*IF g_debug THEN
10310 hz_utility_v2pub.debug ('validate_work_class (+)');
10311 END IF;
10312 */
10313 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
10314 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_work_class (+)',
10315 p_msg_level=>fnd_log.level_procedure);
10316 END IF;
10317
10318 -- do the query to get old values for update
10319 IF p_create_update_flag = 'U'
10320 THEN
10321 SELECT WORK_CLASS_ID,
10322 EMPLOYMENT_HISTORY_ID,
10323 STATUS,
10324 CREATED_BY_MODULE,
10325 APPLICATION_ID
10326 INTO L_work_class_id,
10327 l_employment_history_id,
10328 l_status,
10329 l_created_by_module,
10330 l_application_id
10331 FROM HZ_work_class
10332 WHERE ROWID = p_rowid;
10333 END IF;
10334
10335
10336 --------------------------------------
10337 -- validate work_class_id
10338 --------------------------------------
10339 /****Logical APIs - validation not required****/
10340 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10341 -- If primary key value is passed, check for uniqueness.
10342 -- If primary key value is not passed, it will be generated
10343 -- from sequence by table handler.
10344
10345
10346 IF p_create_update_flag = 'C' THEN
10347 IF p_work_class_rec.work_class_id IS NOT NULL AND
10348 p_work_class_rec.work_class_id <> fnd_api.g_miss_num
10349 THEN
10350 OPEN work_class_cur (p_work_class_rec.work_class_id);
10351 FETCH work_class_cur INTO l_dummy;
10352
10353 -- key is not unique, push an error onto the stack.
10354 IF NVL(work_class_cur%FOUND, FALSE) THEN
10355 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
10356 fnd_message.set_token('COLUMN', 'work_class_id');
10357 fnd_msg_pub.add;
10358 x_return_status := fnd_api.g_ret_sts_error;
10359 END IF;
10360 CLOSE work_class_cur;
10361
10362 /*IF g_debug THEN
10363 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10364 'check that work_class_id is unique during creation. ' ||
10365 ' x_return_status = ' || x_return_status, l_debug_prefix);
10366 END IF;
10367 */
10368 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10369 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10370 p_message=>'check that work_class_id is unique during creation. ' ||
10371 ' x_return_status = ' || x_return_status,
10372 p_msg_level=>fnd_log.level_statement);
10373 END IF;
10374
10375 END IF;
10376 END IF;
10377
10378
10379 -- work_class_id is non-updateable field
10380 IF p_create_update_flag = 'U' THEN
10381 validate_nonupdateable (
10382 p_column => 'work_class_id',
10383 p_column_value => p_work_class_rec.work_class_id,
10384 p_old_column_value => l_work_class_id,
10385 x_return_status => x_return_status);
10386
10387 /*IF g_debug THEN
10388 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10389 'work_class_id is non-updateable field. ' ||
10390 'x_return_status = ' || x_return_status, l_debug_prefix);
10391 END IF;
10392 */
10393 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10394 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'work_class_id is non-updateable field. ' ||
10395 'x_return_status = ' || x_return_status,
10396 p_msg_level=>fnd_log.level_statement);
10397 END IF;
10398
10399 END IF;
10400
10401 /*IF g_debug THEN
10402 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10403 '(+) after validation of work_class_id ... ' ||
10404 'x_return_status = ' || x_return_status, l_debug_prefix);
10405 END IF;
10406 */
10407 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10408 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validation of work_class_id ... ' ||
10409 'x_return_status = ' || x_return_status,
10410 p_msg_level=>fnd_log.level_statement);
10411 END IF;
10412 END IF;
10413
10414 ---------------------------------------
10415 -- validation for employment_history_id
10416 ---------------------------------------
10417 /****Logical APIs - validation not required****/
10418 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10419 -- employment_history_id is mandatory field
10420 IF p_create_update_flag = 'C' THEN
10421 validate_mandatory (
10422 p_create_update_flag => p_create_update_flag,
10423 p_column => 'employment_history_id',
10424 p_column_value => p_work_class_rec.employment_history_id,
10425 x_return_status => x_return_status);
10426
10427 /*IF g_debug THEN
10428 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10429 'employment_history_id is mandatory field. ' ||
10430 'x_return_status = ' || x_return_status, l_debug_prefix);
10431 END IF;
10432 */
10433 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10434 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'employment_history_id is mandatory field. ' ||
10435 'x_return_status = ' || x_return_status,
10436 p_msg_level=>fnd_log.level_statement);
10437 END IF;
10438
10439
10440 END IF;
10441
10442 -- employment_history_id is non-updateable field
10443 IF p_create_update_flag = 'U' THEN
10444 validate_nonupdateable (
10445 p_column => 'employment_history_id',
10446 p_column_value => p_work_class_rec.employment_history_id,
10447 p_old_column_value => l_employment_history_id,
10448 x_return_status => x_return_status);
10449
10450 /*IF g_debug THEN
10451 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10452 'employment_history_id is non-updateable field. ' ||
10453 'x_return_status = ' || x_return_status, l_debug_prefix);
10454 END IF;
10455 */
10456 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10457 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'employment_history_id is non-updateable field. ' ||
10458 'x_return_status = ' || x_return_status,
10459 p_msg_level=>fnd_log.level_statement);
10460 END IF;
10461
10462
10463 END IF;
10464
10465 -- employment_history_id has foreign key HZ_EMPLOYMENT_HISTORY.EMPLOYMENT_HISTORY_ID
10466 IF p_create_update_flag = 'C'
10467 AND
10468 p_work_class_rec.employment_history_id IS NOT NULL
10469 AND
10470 p_work_class_rec.employment_history_id <> fnd_api.g_miss_num
10471 THEN
10472 BEGIN
10473 SELECT 'Y'
10474 INTO l_dummy
10475 FROM hz_employment_history p
10476 WHERE p.employment_history_id = p_work_class_rec.employment_history_id;
10477
10478 EXCEPTION
10479 WHEN NO_DATA_FOUND THEN
10480 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
10481 fnd_message.set_token('FK', 'employment_history_id');
10482 fnd_message.set_token('COLUMN', 'employment_history_id');
10483 fnd_message.set_token('TABLE', 'hz_employment_history');
10484 fnd_msg_pub.add;
10485 x_return_status := fnd_api.g_ret_sts_error;
10486 END;
10487
10488 /*IF g_debug THEN
10489 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10490 'employment_history_id has foreign key hz_employment_history.employment_history_id. ' ||
10491 'x_return_status = ' || x_return_status, l_debug_prefix);
10492 END IF;
10493 */
10494 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10495 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10496 p_message=>'employment_history_id has foreign key hz_employment_history.employment_history_id. ' ||
10497 'x_return_status = ' || x_return_status,
10498 p_msg_level=>fnd_log.level_statement);
10499 END IF;
10500
10501
10502 END IF;
10503 END IF;
10504
10505 ---------------------------------
10506 -- validation for work_class_name
10507 ---------------------------------
10508
10509 -- work_class_name is mandatory field
10510
10511 validate_mandatory (
10512 p_create_update_flag => p_create_update_flag,
10513 p_column => 'work_class_name',
10514 p_column_value => p_work_class_rec.work_class_name,
10515 x_return_status => x_return_status);
10516
10517 /*IF g_debug THEN
10518 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10519 'work_class_name is mandatory field. ' ||
10520 'x_return_status = ' || x_return_status, l_debug_prefix);
10521 END IF;
10522 */
10523 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10524 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'work_class_name is mandatory field. ' ||
10525 'x_return_status = ' || x_return_status,
10526 p_msg_level=>fnd_log.level_statement);
10527 END IF;
10528
10529
10530 ------------------------
10531 -- validation for status
10532 ------------------------
10533 /****Logical APIs - validation not required****/
10534 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10535 -- status is lookup code in lookup type REGISTRY_STATUS
10536 IF p_work_class_rec.status IS NOT NULL
10537 AND
10538 p_work_class_rec.status <> fnd_api.g_miss_char
10539 AND
10540 (p_create_update_flag = 'C'
10541 OR
10542 (p_create_update_flag = 'U'
10543 AND
10544 p_work_class_rec.status <> NVL(l_status, fnd_api.g_miss_char)
10545 )
10546 )
10547 THEN
10548 validate_lookup (
10549 p_column => 'status',
10550 p_lookup_type => 'REGISTRY_STATUS',
10551 p_column_value => p_work_class_rec.status,
10552 x_return_status => x_return_status);
10553
10554 /*IF g_debug THEN
10555 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10556 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
10557 'x_return_status = ' || x_return_status, l_debug_prefix);
10558 END IF;
10559 */
10560 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10561 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10562 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
10563 'x_return_status = ' || x_return_status,
10564 p_msg_level=>fnd_log.level_statement);
10565 END IF;
10566
10567
10568 END IF;
10569 END IF;
10570
10571 -- status cannot be set to null during update
10572 IF p_create_update_flag = 'U' THEN
10573 validate_cannot_update_to_null (
10574 p_column => 'status',
10575 p_column_value => p_work_class_rec.status,
10576 x_return_status => x_return_status);
10577 END IF;
10578
10579
10580 --------------------------------------
10581 -- validate created_by_module
10582 --------------------------------------
10583
10584 validate_created_by_module(
10585 p_create_update_flag => p_create_update_flag,
10586 p_created_by_module => p_work_class_rec.created_by_module,
10587 p_old_created_by_module => l_created_by_module,
10588 x_return_status => x_return_status);
10589
10590 --------------------------------------
10591 -- validate application_id
10592 --------------------------------------
10593
10594 validate_application_id(
10595 p_create_update_flag => p_create_update_flag,
10596 p_application_id => p_work_class_rec.application_id,
10597 p_old_application_id => l_application_id,
10598 x_return_status => x_return_status);
10599
10600 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
10601 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_work_class (-)',
10602 p_msg_level=>fnd_log.level_procedure);
10603 END IF;
10604
10605 END validate_work_class;
10606
10607 /**
10608 * PROCEDURE validate_person_interest
10609 *
10610 * DESCRIPTION
10611 * Validates person_interest record. Checks for
10612 * uniqueness
10613 * lookup types
10614 * mandatory columns
10615 * non-updateable fields
10616 * foreign key validations
10617 * other validations
10618 *
10619 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
10620 *
10621 * ARGUMENTS
10622 * IN:
10623 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
10624 * p_person_interest_rec person_interest record.
10625 * p_rowid Rowid of the record (used only in update mode).
10626 * IN/OUT:
10627 * x_return_status Return status after the call. The status can
10628 * be FND_API.G_RET_STS_SUCCESS (success),
10629 * fnd_api.g_ret_sts_error (error),
10630 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
10631 *
10632 * NOTES
10633 *
10634 * MODIFICATION HISTORY
10635 *
10636 * 31-Jan-2001 Porkodi C o Created.
10637 * 13-Jan-2004 Rajib Ranjan Borah o Bug 3282946.Person interest can be created for
10638 * all type of parties and not necessarily for
10639 * 'PERSON' type parties only.
10640 */
10641
10642 PROCEDURE validate_person_interest(
10643 p_create_update_flag IN VARCHAR2,
10644 p_person_interest_rec IN HZ_PERSON_INFO_V2PUB.person_interest_REC_TYPE,
10645 p_rowid IN ROWID ,
10646 x_return_status IN OUT NOCOPY VARCHAR2
10647 ) IS
10648
10649 l_count NUMBER;
10650 l_person_interest_id NUMBER;
10651 l_dummy VARCHAR2(1);
10652 l_party_id NUMBER := p_person_interest_rec.party_id;
10653 l_created_by_module VARCHAR2(150);
10654 l_application_id NUMBER;
10655 l_status VARCHAR2(1);
10656 l_debug_prefix VARCHAR2(30) := '';
10657 l_begin_date DATE;
10658 l_end_date DATE;
10659
10660 CURSOR person_interest_cur (p_person_interest_id IN NUMBER) IS
10661 SELECT 'Y'
10662 FROM hz_person_interest hc
10663 WHERE hc.person_interest_id = p_person_interest_id;
10664
10665 BEGIN
10666
10667 --enable_debug;
10668
10669 -- Debug info.
10670 /*IF g_debug THEN
10671 hz_utility_v2pub.debug ('validate_person_interest (+)');
10672 END IF;
10673 */
10674 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
10675 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_person_interest (+)',
10676 p_msg_level=>fnd_log.level_procedure);
10677 END IF;
10678
10679
10680 -- do the query to get old values for update
10681 IF p_create_update_flag = 'U'
10682 THEN
10683 SELECT person_interest_ID,
10684 PARTY_ID,
10685 STATUS,
10686 CREATED_BY_MODULE,
10687 APPLICATION_ID
10688 INTO l_person_interest_id,
10689 l_party_id,
10690 l_status,
10691 l_created_by_module,
10692 l_application_id
10693 FROM HZ_person_interest
10694 WHERE ROWID = p_rowid;
10695 END IF;
10696
10697
10698 --------------------------------------
10699 -- validate person_interest_id
10700 --------------------------------------
10701 /****Logical APIs - validation not required****/
10702 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10703 -- If primary key value is passed, check for uniqueness.
10704 -- If primary key value is not passed, it will be generated
10705 -- from sequence by table handler.
10706
10707
10708 IF p_create_update_flag = 'C' THEN
10709 IF p_person_interest_rec.person_interest_id IS NOT NULL AND
10710 p_person_interest_rec.person_interest_id <> fnd_api.g_miss_num
10711 THEN
10712 OPEN person_interest_cur (p_person_interest_rec.person_interest_id);
10713 FETCH person_interest_cur INTO l_dummy;
10714
10715 -- key is not unique, push an error onto the stack.
10716 IF NVL(person_interest_cur%FOUND, FALSE) THEN
10717 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
10718 fnd_message.set_token('COLUMN', 'person_interest_id');
10719 fnd_msg_pub.add;
10720 x_return_status := fnd_api.g_ret_sts_error;
10721 END IF;
10722 CLOSE person_interest_cur;
10723
10724 /*IF g_debug THEN
10725 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10726 'check that person_interest_id is unique during creation. ' ||
10727 ' x_return_status = ' || x_return_status, l_debug_prefix);
10728 END IF;
10729 */
10730 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10731 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10732 p_message=>'check that person_interest_id is unique during creation. ' ||
10733 ' x_return_status = ' || x_return_status,
10734 p_msg_level=>fnd_log.level_statement);
10735 END IF;
10736
10737 END IF;
10738 END IF;
10739
10740
10741 -- person_interest_id is non-updateable field
10742 IF p_create_update_flag = 'U' THEN
10743 validate_nonupdateable (
10744 p_column => 'person_interest_id',
10745 p_column_value => p_person_interest_rec.person_interest_id,
10746 p_old_column_value => l_person_interest_id,
10747 x_return_status => x_return_status);
10748
10749 /*IF g_debug THEN
10750 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10751 'person_interest_id is non-updateable field. ' ||
10752 'x_return_status = ' || x_return_status, l_debug_prefix);
10753 END IF;
10754 */
10755 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10756 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'person_interest_id is non-updateable field. ' ||
10757 'x_return_status = ' || x_return_status,
10758 p_msg_level=>fnd_log.level_statement);
10759 END IF;
10760
10761 END IF;
10762
10763 /*IF g_debug THEN
10764 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10765 '(+) after validation of person_interest_id ... ' ||
10766 'x_return_status = ' || x_return_status, l_debug_prefix);
10767 END IF;
10768 */
10769 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10770 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validation of person_interest_id ... ' ||
10771 'x_return_status = ' || x_return_status,
10772 p_msg_level=>fnd_log.level_statement);
10773 END IF;
10774 END IF;
10775
10776 --------------------------
10777 -- validation for party_id
10778 --------------------------
10779 /****Logical APIs - validation not required****/
10780 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10781 -- party_id is mandatory field
10782 IF p_create_update_flag = 'C' THEN
10783 validate_mandatory (
10784 p_create_update_flag => p_create_update_flag,
10785 p_column => 'party_id',
10786 p_column_value => p_person_interest_rec.party_id,
10787 x_return_status => x_return_status);
10788
10789 /*IF g_debug THEN
10790 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10791 'party_id is mandatory field. ' ||
10792 'x_return_status = ' || x_return_status, l_debug_prefix);
10793 END IF;
10794 */
10795 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10796 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is mandatory field. ' ||
10797 'x_return_status = ' || x_return_status,
10798 p_msg_level=>fnd_log.level_statement);
10799 END IF;
10800
10801
10802 END IF;
10803
10804 -- party_id is non-updateable field
10805 IF p_create_update_flag = 'U' THEN
10806 validate_nonupdateable (
10807 p_column => 'party_id',
10808 p_column_value => p_person_interest_rec.party_id,
10809 p_old_column_value => l_party_id,
10810 x_return_status => x_return_status);
10811
10812 /*IF g_debug THEN
10813 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10814 'party_id is non-updateable field. ' ||
10815 'x_return_status = ' || x_return_status, l_debug_prefix);
10816 END IF;
10817 */
10818 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10819 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable field. ' ||
10820 'x_return_status = ' || x_return_status,
10821 p_msg_level=>fnd_log.level_statement);
10822 END IF;
10823
10824
10825 END IF;
10826
10827 -- party_id has foreign key HZ_PARTIES.PARTY_ID
10828 IF p_create_update_flag = 'C'
10829 AND
10830 p_person_interest_rec.party_id IS NOT NULL
10831 AND
10832 p_person_interest_rec.party_id <> fnd_api.g_miss_num
10833 THEN
10834 BEGIN
10835 SELECT 'Y'
10836 INTO l_dummy
10837 FROM hz_parties p
10838 WHERE p.party_id = p_person_interest_rec.party_id; /*and
10839 party_type = 'PERSON';*/
10840 /*
10841 Bug 3282946. Some teams still insert into hz_person_interest
10842 for non 'PERSON' type parties.
10843 */
10844
10845 EXCEPTION
10846 WHEN NO_DATA_FOUND THEN
10847 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
10848 fnd_message.set_token('FK', 'party_id');
10849 fnd_message.set_token('COLUMN', 'party_id');
10850 fnd_message.set_token('TABLE', 'hz_parties');
10851 fnd_msg_pub.add;
10852 x_return_status := fnd_api.g_ret_sts_error;
10853 END;
10854
10855 /*IF g_debug THEN
10856 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10857 'party_id has foreign key hz_parties.party_id. ' ||
10858 'x_return_status = ' || x_return_status, l_debug_prefix);
10859 END IF;
10860 */
10861 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10862 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
10863 'x_return_status = ' || x_return_status,
10864 p_msg_level=>fnd_log.level_statement);
10865 END IF;
10866
10867
10868 END IF;
10869 END IF;
10870
10871 ---------------------------------
10872 -- validation for sport_indicator
10873 ---------------------------------
10874 /****Logical APIs - validation not required****/
10875 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10876 -- sport_indicator is mandatory field
10877
10878
10879 -- sport_indicator is validated against lookup type YES/NO
10880 validate_lookup (
10881 p_column => 'sport_indicator',
10882 p_lookup_type => 'YES/NO',
10883 p_column_value => p_person_interest_rec.sport_indicator,
10884 x_return_status => x_return_status);
10885
10886
10887 /*IF g_debug THEN
10888 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10889 'sport_indicator should be in lookup YES/NO. ' ||
10890 'x_return_status = ' || x_return_status, l_debug_prefix);
10891 END IF;
10892 */
10893 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10894 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'sport_indicator should be in lookup YES/NO. ' ||
10895 'x_return_status = ' || x_return_status,
10896 p_msg_level=>fnd_log.level_statement);
10897 END IF;
10898 END IF;
10899
10900 ---------------------------------
10901 -- validation for interest_name
10902 ---------------------------------
10903
10904 -- interest_name is mandatory field
10905
10906 validate_mandatory (
10907 p_create_update_flag => p_create_update_flag,
10908 p_column => 'interest_name',
10909 p_column_value => p_person_interest_rec.interest_name,
10910 x_return_status => x_return_status);
10911
10912 /*IF g_debug THEN
10913 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10914 'interest_name is mandatory field. ' ||
10915 'x_return_status = ' || x_return_status, l_debug_prefix);
10916 END IF;
10917 */
10918 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10919 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'interest_name is mandatory field. ' ||
10920 'x_return_status = ' || x_return_status,
10921 p_msg_level=>fnd_log.level_statement);
10922 END IF;
10923
10924
10925 ------------------------
10926 -- validation for status
10927 ------------------------
10928 /****Logical APIs - validation not required****/
10929 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
10930 -- status is lookup code in lookup type REGISTRY_STATUS
10931 IF p_person_interest_rec.status IS NOT NULL
10932 AND
10933 p_person_interest_rec.status <> fnd_api.g_miss_char
10934 AND
10935 (p_create_update_flag = 'C'
10936 OR
10937 (p_create_update_flag = 'U'
10938 AND
10939 p_person_interest_rec.status <> NVL(l_status, fnd_api.g_miss_char)
10940 )
10941 )
10942 THEN
10943 validate_lookup (
10944 p_column => 'status',
10945 p_lookup_type => 'REGISTRY_STATUS',
10946 p_column_value => p_person_interest_rec.status,
10947 x_return_status => x_return_status);
10948
10949 /*IF g_debug THEN
10950 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10951 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
10952 'x_return_status = ' || x_return_status, l_debug_prefix);
10953 END IF;
10954 */
10955 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
10956 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
10957 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
10958 'x_return_status = ' || x_return_status,
10959 p_msg_level=>fnd_log.level_statement);
10960 END IF;
10961
10962
10963 END IF;
10964 END IF;
10965
10966 -- status cannot be set to null during update
10967 IF p_create_update_flag = 'U' THEN
10968 validate_cannot_update_to_null (
10969 p_column => 'status',
10970 p_column_value => p_person_interest_rec.status,
10971 x_return_status => x_return_status);
10972 END IF;
10973
10974
10975 --------------------------------------
10976 -- validate created_by_module
10977 --------------------------------------
10978
10979 validate_created_by_module(
10980 p_create_update_flag => p_create_update_flag,
10981 p_created_by_module => p_person_interest_rec.created_by_module,
10982 p_old_created_by_module => l_created_by_module,
10983 x_return_status => x_return_status);
10984
10985 --------------------------------------
10986 -- validate application_id
10987 --------------------------------------
10988
10989 validate_application_id(
10990 p_create_update_flag => p_create_update_flag,
10991 p_application_id => p_person_interest_rec.application_id,
10992 p_old_application_id => l_application_id,
10993 x_return_status => x_return_status);
10994
10995 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
10996 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_person_interest (-)',
10997 p_msg_level=>fnd_log.level_procedure);
10998 END IF;
10999
11000 END validate_person_interest;
11001
11002
11003 /**
11004 * PROCEDURE validate_location
11005 *
11006 * DESCRIPTION
11007 * Validates location record. Checks for
11008 * uniqueness
11009 * lookup types
11010 * mandatory columns
11011 * non-updateable fields
11012 * foreign key validations
11013 * other validations
11014 *
11015 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
11016 *
11017 * ARGUMENTS
11018 * IN:
11019 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
11020 * p_location_rec Location record.
11021 * p_rowid Rowid of the record (used only in update mode).
11022 * IN/OUT:
11023 * x_return_status Return status after the call. The status can
11024 * be FND_API.G_RET_STS_SUCCESS (success),
11025 * fnd_api.g_ret_sts_error (error),
11026 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
11027 *
11028 * NOTES
11029 *
11030 * MODIFICATION HISTORY
11031 *
11032 * 07-23-2001 Indrajit Sen o Created.
11033 * 06-FEB-2004 Jianying Huang o Bug 3330754: modified validate_location to
11034 * change validation for third party records
11035 * from row level non-updateable checking to
11036 * attribute level checking.
11037 * 01-03-2005 Rajib Ranjan Borah o SSM SST Integration and Extension.
11038 * Newly created user update rules will be used
11039 * to check update privilege.
11040 *
11041 */
11042
11043 PROCEDURE validate_location(
11044 p_create_update_flag IN VARCHAR2,
11045 p_location_rec IN hz_location_v2pub.location_rec_type,
11046 p_rowid IN ROWID ,
11047 x_return_status IN OUT NOCOPY VARCHAR2
11048 ) IS
11049
11050 l_dummy VARCHAR2(1);
11051 l_address_effective_date DATE;
11052 l_content_source_type HZ_LOCATIONS.CONTENT_SOURCE_TYPE%TYPE;
11053 l_created_by_module VARCHAR2(150);
11054 l_application_id NUMBER;
11055 l_debug_prefix VARCHAR2(30) := '';
11056
11057 -- Bug 2197181: added for mix-n-match
11058 db_actual_content_source HZ_LOCATIONS.ACTUAL_CONTENT_SOURCE%TYPE;
11059
11060 -- Bug 3330754: added to support attribute level non-updateable checking for third
11061 -- party records.
11062 db_orig_system_reference HZ_LOCATIONS.ORIG_SYSTEM_REFERENCE%TYPE;
11063 db_country HZ_LOCATIONS.COUNTRY%TYPE;
11064 db_address1 HZ_LOCATIONS.ADDRESS1%TYPE;
11065 db_address2 HZ_LOCATIONS.ADDRESS2%TYPE;
11066 db_address3 HZ_LOCATIONS.ADDRESS3%TYPE;
11067 db_address4 HZ_LOCATIONS.ADDRESS4%TYPE;
11068 db_city HZ_LOCATIONS.CITY%TYPE;
11069 db_postal_code HZ_LOCATIONS.POSTAL_CODE%TYPE;
11070 db_state HZ_LOCATIONS.STATE%TYPE;
11071 db_province HZ_LOCATIONS.PROVINCE%TYPE;
11072 db_county HZ_LOCATIONS.COUNTY%TYPE;
11073 db_postal_plus4_code HZ_LOCATIONS.POSTAL_PLUS4_CODE%TYPE;
11074 db_clli_code HZ_LOCATIONS.CLLI_CODE%TYPE;
11075 db_delivery_point_code HZ_LOCATIONS.DELIVERY_POINT_CODE%TYPE;
11076 db_location_directions HZ_LOCATIONS.LOCATION_DIRECTIONS%TYPE;
11077 l_return_status VARCHAR2(1);
11078
11079 l_vertex_taxware_installed BOOLEAN;
11080
11081 BEGIN
11082
11083 --enable_debug;
11084
11085 -- Debug info.
11086 /*IF g_debug THEN
11087 hz_utility_v2pub.debug ('validate_location (+)');
11088 END IF;
11089 */
11090 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
11091 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_location (+)',
11092 p_msg_level=>fnd_log.level_procedure);
11093 END IF;
11094
11095
11096 -- select columns needed to be checked from table during update
11097
11098 -- Bug 2197181: selecting actual_content_source for mix-n-match
11099 -- Bug 3330754: added to support attribute level non-updateable checking for third
11100 -- party records.
11101
11102 IF (p_create_update_flag = 'U') THEN
11103 SELECT ADDRESS_EFFECTIVE_DATE,
11104 CONTENT_SOURCE_TYPE,
11105 created_by_module,
11106 APPLICATION_ID,
11107 actual_content_source,
11108 -- Bug 3330754: added to support attribute level
11109 -- non-updateable checking for third party records.
11110 orig_system_reference,
11111 country,
11112 address1,
11113 address2,
11114 address3,
11115 address4,
11116 city,
11117 postal_code,
11118 state,
11119 province,
11120 county,
11121 postal_plus4_code,
11122 clli_code,
11123 delivery_point_code,
11124 location_directions
11125 INTO l_address_effective_date,
11126 l_content_source_type,
11127 l_created_by_module,
11128 l_application_id,
11129 db_actual_content_source,
11130 -- Bug 3330754: added to support attribute level
11131 -- non-updateable checking for third party records.
11132 db_orig_system_reference,
11133 db_country,
11134 db_address1,
11135 db_address2,
11136 db_address3,
11137 db_address4,
11138 db_city,
11139 db_postal_code,
11140 db_state,
11141 db_province,
11142 db_county,
11143 db_postal_plus4_code,
11144 db_clli_code,
11145 db_delivery_point_code,
11146 db_location_directions
11147 FROM HZ_LOCATIONS
11148 WHERE ROWID = p_rowid;
11149 END IF;
11150
11151 --------------------
11152 -- validate address1
11153 --------------------
11154
11155 -- address1 is mandatory
11156 validate_mandatory (
11157 p_create_update_flag => p_create_update_flag,
11158 p_column => 'address1',
11159 p_column_value => p_location_rec.address1,
11160 x_return_status => x_return_status);
11161
11162 --------------------
11163 -- validate country
11164 --------------------
11165
11166 -- country is mandatory
11167 validate_mandatory (
11168 p_create_update_flag => p_create_update_flag,
11169 p_column => 'country',
11170 p_column_value => p_location_rec.country,
11171 x_return_status => x_return_status);
11172
11173 -- country has foreign key fnd_territories.territory_code
11174 validate_country_code(
11175 p_column => 'country',
11176 p_column_value => p_location_rec.country,
11177 x_return_status => x_return_status);
11178
11179 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
11180 hz_utility_v2pub.debug(
11181 p_prefix => l_debug_prefix,
11182 p_message => 'country has foreign key fnd_territories.territory_code. ' ||
11183 'x_return_status = ' || x_return_status,
11184 p_msg_level => fnd_log.level_statement);
11185 END IF;
11186
11187 /* Bug 2197181: removed content_source_type validation as this
11188 column has been obsoleted for mix-n-match project.
11189
11190 -------------------------------
11191 -- validate content_source_type
11192 -------------------------------
11193
11194 -- we do not need to check 'content_source_type is mandatory' because
11195 -- we default content_source_type to hz_party_v2pub.g_miss_content_source_type
11196 -- in table handler.
11197
11198 -- content_source_type is non-updateable
11199 IF p_create_update_flag = 'U' THEN
11200 validate_nonupdateable (
11201 p_column => 'content_source_type',
11202 p_column_value => p_location_rec.content_source_type,
11203 p_old_column_value => l_content_source_type,
11204 x_return_status => x_return_status);
11205
11206
11207 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
11208 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'content_source_type is non-updateable. ' ||
11209 'x_return_status = ' || x_return_status,
11210 p_msg_level=>fnd_log.level_statement);
11211 END IF;
11212 END IF;
11213
11214 -- content_source_type is lookup code in lookup type CONTENT_SOURCE_TYPE
11215 validate_lookup (
11216 p_column => 'content_source_type',
11217 p_lookup_type => 'CONTENT_SOURCE_TYPE',
11218 p_column_value => p_location_rec.content_source_type,
11219 x_return_status => x_return_status);
11220
11221 IF g_debug THEN
11222 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
11223 'content_source_type is lookup code in lookup type CONTENT_SOURCE_TYPE. ' ||
11224 'x_return_status = ' || x_return_status, l_debug_prefix);
11225 END IF;
11226 */
11227
11228 -- Bug 2197181: Added validation for mix-n-match
11229
11230 ----------------------------------------
11231 -- validate content_source_type and actual_content_source_type
11232 ----------------------------------------
11233
11234 HZ_MIXNM_UTILITY.ValidateContentSource (
11235 p_api_version => 'V2',
11236 p_create_update_flag => p_create_update_flag,
11237 -- Bug 3330754: replaced row level non-updateable checking to
11238 -- attribute level checking.
11239 p_check_update_privilege => 'N',
11240 p_content_source_type => p_location_rec.content_source_type,
11241 p_old_content_source_type => l_content_source_type,
11242 p_actual_content_source => p_location_rec.actual_content_source,
11243 p_old_actual_content_source => db_actual_content_source,
11244 p_entity_name => 'HZ_LOCATIONS',
11245 x_return_status => x_return_status );
11246
11247 -- Bug 3330754: added to support attribute level non-updateable checking for third
11248 -- party records.
11249
11250 --------------------------------------
11251 -- validate address components which are third-party sourced.
11252 --------------------------------------
11253
11254 -- address components can not be updated by the end-user if
11255 -- actual_content_source <> 'USER_ENTERED'
11256
11257 IF p_create_update_flag = 'U' AND
11258 db_actual_content_source <> 'USER_ENTERED' -- AND
11259 -- SSM SST Integration and Extension
11260 -- Check Updateability using mix-n-match procedure rather than checking the
11261 -- profile value.
11262 /*NVL(FND_PROFILE.value('HZ_UPDATE_THIRD_PARTY_DATA'), 'N') = 'N'*/
11263 --HZ_UTILITY_V2PUB.is_purchased_content_source(db_actual_content_source) = 'Y'
11264 THEN
11265 l_return_status := FND_API.G_RET_STS_SUCCESS;
11266
11267 validate_nonupdateable (
11268 p_column => 'orig_system_reference',
11269 p_column_value => p_location_rec.orig_system_reference,
11270 p_old_column_value => db_orig_system_reference,
11271 x_return_status => l_return_status,
11272 p_raise_error => 'N');
11273
11274 validate_nonupdateable (
11275 p_column => 'country',
11276 p_column_value => p_location_rec.country,
11277 p_old_column_value => db_country,
11278 x_return_status => l_return_status,
11279 p_raise_error => 'N');
11280
11281 validate_nonupdateable (
11282 p_column => 'address1',
11283 p_column_value => p_location_rec.address1,
11284 p_old_column_value => db_address1,
11285 x_return_status => l_return_status,
11286 p_raise_error => 'N');
11287
11288 validate_nonupdateable (
11289 p_column => 'address2',
11290 p_column_value => p_location_rec.address2,
11291 p_old_column_value => db_address2,
11292 x_return_status => l_return_status,
11293 p_raise_error => 'N');
11294
11295 validate_nonupdateable (
11296 p_column => 'address3',
11297 p_column_value => p_location_rec.address3,
11298 p_old_column_value => db_address3,
11299 x_return_status => l_return_status,
11300 p_raise_error => 'N');
11301
11302 validate_nonupdateable (
11303 p_column => 'address4',
11304 p_column_value => p_location_rec.address4,
11305 p_old_column_value => db_address4,
11306 x_return_status => l_return_status,
11307 p_raise_error => 'N');
11308
11309 validate_nonupdateable (
11310 p_column => 'city',
11311 p_column_value => p_location_rec.city,
11312 p_old_column_value => db_city,
11313 x_return_status => l_return_status,
11314 p_raise_error => 'N');
11315
11316 validate_nonupdateable (
11317 p_column => 'postal_code',
11318 p_column_value => p_location_rec.postal_code,
11319 p_old_column_value => db_postal_code,
11320 x_return_status => l_return_status,
11321 p_raise_error => 'N');
11322
11323 validate_nonupdateable (
11324 p_column => 'state',
11325 p_column_value => p_location_rec.state,
11326 p_old_column_value => db_state,
11327 x_return_status => l_return_status,
11328 p_raise_error => 'N');
11329
11330 validate_nonupdateable (
11331 p_column => 'province',
11332 p_column_value => p_location_rec.province,
11333 p_old_column_value => db_province,
11334 x_return_status => l_return_status,
11335 p_raise_error => 'N');
11336
11337 validate_nonupdateable (
11338 p_column => 'county',
11339 p_column_value => p_location_rec.county,
11340 p_old_column_value => db_county,
11341 x_return_status => l_return_status,
11342 p_raise_error => 'N');
11343
11344 validate_nonupdateable (
11345 p_column => 'postal_plus4_code',
11346 p_column_value => p_location_rec.postal_plus4_code,
11347 p_old_column_value => db_postal_plus4_code,
11348 x_return_status => l_return_status,
11349 p_raise_error => 'N');
11350
11351 validate_nonupdateable (
11352 p_column => 'clli_code',
11353 p_column_value => p_location_rec.clli_code,
11354 p_old_column_value => db_clli_code,
11355 x_return_status => l_return_status,
11356 p_raise_error => 'N');
11357
11358 validate_nonupdateable (
11359 p_column => 'delivery_point_code',
11360 p_column_value => p_location_rec.delivery_point_code,
11361 p_old_column_value => db_delivery_point_code,
11362 x_return_status => l_return_status,
11363 p_raise_error => 'N');
11364
11365 validate_nonupdateable (
11366 p_column => 'location_directions',
11367 p_column_value => p_location_rec.location_directions,
11368 p_old_column_value => db_location_directions,
11369 x_return_status => l_return_status,
11370 p_raise_error => 'N');
11371
11372 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11373
11374 HZ_MIXNM_UTILITY.CheckUserUpdatePrivilege(
11375 p_actual_content_source => db_actual_content_source,
11376 p_new_actual_content_source => p_location_rec.actual_content_source,
11377 p_entity_name => 'HZ_LOCATIONS',
11378 x_return_status => x_return_status);
11379 -- Bug 4693719 : set global variable to Y
11380 HZ_UTILITY_V2PUB.G_UPDATE_ACS := 'Y';
11381 /*
11382 FND_MESSAGE.SET_NAME('AR', 'HZ_NOTALLOW_UPDATE_THIRD_PARTY');
11383 FND_MSG_PUB.ADD;
11384 x_return_status := FND_API.G_RET_STS_ERROR;
11385 */
11386 END IF;
11387
11388 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
11389 hz_utility_v2pub.debug(
11390 p_prefix=>l_debug_prefix,
11391 p_message=>'third party address components are non-updateable. ' ||
11392 'x_return_status = ' || x_return_status,
11393 p_msg_level=>fnd_log.level_statement);
11394 END IF;
11395 END IF;
11396
11397 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
11398 hz_utility_v2pub.debug(
11399 p_prefix=>l_debug_prefix,
11400 p_message=>'(+) after validate third party address components ... ' ||
11401 'x_return_status = ' || x_return_status,
11402 p_msg_level=>fnd_log.level_statement);
11403 END IF;
11404
11405 --------------------------
11406 -- validation for language
11407 --------------------------
11408 -- language has foreign key fnd_languages.language_code
11409 IF p_location_rec.language IS NOT NULL
11410 AND
11411 p_location_rec.language <> fnd_api.g_miss_char
11412 THEN
11413 BEGIN
11414 SELECT 'Y'
11415 INTO l_dummy
11416 FROM FND_LANGUAGES
11417 WHERE LANGUAGE_CODE = p_location_rec.language
11418 AND INSTALLED_FLAG IN ('B', 'I');
11419 EXCEPTION
11420 WHEN NO_DATA_FOUND THEN
11421 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
11422 fnd_message.set_token('FK', 'language');
11423 fnd_message.set_token('COLUMN', 'language_code');
11424 fnd_message.set_token('TABLE', 'fnd_languages(installed)');
11425 fnd_msg_pub.add;
11426 x_return_status := fnd_api.g_ret_sts_error;
11427 END;
11428
11429 /*IF g_debug THEN
11430 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
11431 'language has foreign key fnd_languages.language_code (installed). ' ||
11432 'x_return_status = ' || x_return_status, l_debug_prefix);
11433 END IF;
11434 */
11435 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
11436 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
11437 p_message=>'language has foreign key fnd_languages.language_code (installed). ' ||
11438 'x_return_status = ' || x_return_status,
11439 p_msg_level=>fnd_log.level_statement);
11440 END IF;
11441 END IF;
11442
11443 -----------------------------
11444 -- validation for timezone_id
11445 -----------------------------
11446 -- timezone_id has foreign key hz_timezones.timezone_id
11447 IF p_location_rec.timezone_id IS NOT NULL
11448 AND
11449 p_location_rec.timezone_id <> fnd_api.g_miss_num
11450 THEN
11451 BEGIN
11452 SELECT 'Y'
11453 INTO l_dummy
11454 FROM HZ_TIMEZONES
11455 WHERE TIMEZONE_ID = p_location_rec.timezone_id;
11456 EXCEPTION
11457 WHEN NO_DATA_FOUND THEN
11458 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
11459 fnd_message.set_token('FK', 'timezone_id');
11460 fnd_message.set_token('COLUMN', 'timezone_id');
11461 fnd_message.set_token('TABLE', 'hz_timezones');
11462 fnd_msg_pub.add;
11463 x_return_status := fnd_api.g_ret_sts_error;
11464 END;
11465
11466 /*IF g_debug THEN
11467 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
11468 'timezone_id has foreign key hz_timezones.timezone_id. ' ||
11469 'x_return_status = ' || x_return_status, l_debug_prefix);
11470 END IF;
11471 */
11472 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
11473 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
11474 p_message=>'timezone_id has foreign key hz_timezones.timezone_id. ' ||
11475 'x_return_status = ' || x_return_status,
11476 p_msg_level=>fnd_log.level_statement);
11477 END IF;
11478 END IF;
11479
11480 --------------------------------------
11481 -- validate created_by_module
11482 --------------------------------------
11483
11484 validate_created_by_module(
11485 p_create_update_flag => p_create_update_flag,
11486 p_created_by_module => p_location_rec.created_by_module,
11487 p_old_created_by_module => l_created_by_module,
11488 x_return_status => x_return_status);
11489
11490 --------------------------------------
11491 -- validate application_id
11492 --------------------------------------
11493
11494 validate_application_id(
11495 p_create_update_flag => p_create_update_flag,
11496 p_application_id => p_location_rec.application_id,
11497 p_old_application_id => l_application_id,
11498 x_return_status => x_return_status);
11499
11500 --------------------------------------------------------------
11501 -- validate sales_tax_geocode and sales_tax_inside_city_limits
11502 --------------------------------------------------------------
11503 -- Added the below validations as a part of bug fix # 4967075
11504
11505 l_vertex_taxware_installed := zx_r11i_tax_partner_pkg.TAX_VENDOR_EXTENSION;
11506
11507 IF p_location_rec.sales_tax_geocode IS NOT NULL AND p_location_rec.sales_tax_geocode <> fnd_api.g_miss_char THEN
11508 If (zx_r11i_tax_partner_pkg.IS_GEOCODE_VALID(p_location_rec.sales_tax_geocode) = FALSE) then
11509 x_return_status := fnd_api.g_ret_sts_error;
11510 end if;
11511 END IF;
11512
11513 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
11514 If (zx_r11i_tax_partner_pkg.IS_CITY_LIMIT_VALID(p_location_rec.sales_tax_inside_city_limits) = FALSE) then
11515 x_return_status := fnd_api.g_ret_sts_error;
11516 end if;
11517 END IF;
11518
11519 --------------------------
11520 -- tax location validation
11521 --------------------------
11522
11523 -- do tax location validation when location is inserted from public API.
11524 -- restrict updates on taxable components when location is used by any
11525 -- non prospect customers.
11526 -- tax code will be created when customer account site is created for
11527 -- this location.
11528
11529 tax_location_validation(p_location_rec,
11530 p_create_update_flag,
11531 x_return_status);
11532
11533 IF x_return_status = fnd_api.g_ret_sts_error THEN
11534 RAISE FND_API.G_EXC_ERROR;
11535 END IF;
11536
11537 -- Debug info.
11538 /*IF g_debug THEN
11539 hz_utility_v2pub.debug ('validate_location (-)');
11540 END IF;
11541 */
11542 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
11543 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_location (-)',
11544 p_msg_level=>fnd_log.level_procedure);
11545 END IF;
11546
11547 --disable_debug;
11548
11549 END validate_location;
11550
11551 /**
11552 * PROCEDURE tax_location_validation
11553 *
11554 * DESCRIPTION
11555 * Validates tax location.
11556 *
11557 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
11558 *
11559 * ARGUMENTS
11560 * IN:
11561 * p_location_rec Location record.
11562 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
11563 * IN/OUT:
11564 * x_return_status Return status after the call. The status can
11565 * be FND_API.G_RET_STS_SUCCESS (success),
11566 * fnd_api.g_ret_sts_error (error),
11567 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
11568 *
11569 * NOTES
11570 *
11571 * MODIFICATION HISTORY
11572 *
11573 * 07-23-2001 Indrajit Sen o Created.
11574 *
11575 */
11576
11577 PROCEDURE tax_location_validation(
11578 p_location_rec IN hz_location_v2pub.location_rec_type,
11579 p_create_update_flag IN VARCHAR2,
11580 x_return_status IN OUT NOCOPY VARCHAR2
11581 ) IS
11582 l_location_id NUMBER;
11583 l_loc_id NUMBER;
11584 l_org_id NUMBER;
11585 l_city VARCHAR2(60);
11586 l_state VARCHAR2(60);
11587 l_country VARCHAR2(60);
11588 l_county VARCHAR2(60);
11589 l_province VARCHAR2(60);
11590 l_postal_code VARCHAR2(60);
11591 l_attribute1 VARCHAR2(150);
11592 l_attribute2 VARCHAR2(150);
11593 l_attribute3 VARCHAR2(150);
11594 l_attribute4 VARCHAR2(150);
11595 l_attribute5 VARCHAR2(150);
11596 l_attribute6 VARCHAR2(150);
11597 l_attribute7 VARCHAR2(150);
11598 l_attribute8 VARCHAR2(150);
11599 l_attribute9 VARCHAR2(150);
11600 l_attribute10 VARCHAR2(150);
11601
11602 -- old attributes of location to be modified
11603 o_location_id NUMBER;
11604 o_loc_id NUMBER;
11605 o_org_id NUMBER;
11606 o_city VARCHAR2(60);
11607 o_state VARCHAR2(60);
11608 o_country VARCHAR2(60);
11609 o_county VARCHAR2(60);
11610 o_province VARCHAR2(60);
11611 o_postal_code VARCHAR2(60);
11612 o_attribute1 VARCHAR2(150);
11613 o_attribute2 VARCHAR2(150);
11614 o_attribute3 VARCHAR2(150);
11615 o_attribute4 VARCHAR2(150);
11616 o_attribute5 VARCHAR2(150);
11617 o_attribute6 VARCHAR2(150);
11618 o_attribute7 VARCHAR2(150);
11619 o_attribute8 VARCHAR2(150);
11620 o_attribute9 VARCHAR2(150);
11621 o_attribute10 VARCHAR2(150);
11622
11623 l_loc_assignment_exist VARCHAR2(1) := 'N';
11624 l_is_remit_to_location VARCHAR2(1) := 'N';
11625 l_debug_prefix VARCHAR2(30) := '';
11626
11627 BEGIN
11628
11629 --enable_debug;
11630
11631 -- Debug info.
11632 /*IF g_debug THEN
11633 hz_utility_v2pub.debug ('tax_location_validation (+)');
11634 END IF;
11635 */
11636 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
11637 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'tax_location_validation (+)',
11638 p_msg_level=>fnd_log.level_procedure);
11639 END IF;
11640
11641 -- tax location validation:
11642
11643 l_country := p_location_rec.country;
11644 l_city := p_location_rec.city;
11645 l_state := p_location_rec.state;
11646 l_county := p_location_rec.county;
11647 l_province := p_location_rec.province;
11648 l_postal_code := p_location_rec.postal_code;
11649 l_attribute1 := p_location_rec.attribute1;
11650 l_attribute2 := p_location_rec.attribute2;
11651 l_attribute3 := p_location_rec.attribute3;
11652 l_attribute4 := p_location_rec.attribute4;
11653 l_attribute5 := p_location_rec.attribute5;
11654 l_attribute6 := p_location_rec.attribute6;
11655 l_attribute7 := p_location_rec.attribute7;
11656 l_attribute8 := p_location_rec.attribute8;
11657 l_attribute9 := p_location_rec.attribute9;
11658 l_attribute10 := p_location_rec.attribute10;
11659
11660 IF p_create_update_flag = 'C' THEN
11661 -- no validation to be done
11662 -- tax code will be populated when customer account site is created.
11663 null;
11664
11665 ELSIF p_create_update_flag = 'U' THEN
11666
11667 l_location_id := p_location_rec.location_id;
11668
11669 -- check if the location is only used by prospect customers
11670
11671 BEGIN
11672 SELECT 'Y'
11673 INTO l_loc_assignment_exist
11674 FROM DUAL
11675 WHERE EXISTS (SELECT 1
11676 FROM hz_loc_assignments la
11677 WHERE la.location_id = l_location_id
11678 );
11679 SELECT 'Y'
11680 INTO l_is_remit_to_location
11681 FROM DUAL
11682 WHERE EXISTS (SELECT 1
11683 FROM hz_party_sites ps
11684 WHERE ps.location_id = l_location_id
11685 AND ps.party_id = -1
11686 );
11687 EXCEPTION
11688 WHEN NO_DATA_FOUND THEN
11689 NULL;
11690 END;
11691
11692
11693 IF l_is_remit_to_location = 'N' and l_loc_assignment_exist = 'Y' THEN
11694
11695 -- check if the taxable components are changed
11696 IF ( (p_location_rec.country IS NOT NULL
11697 AND p_location_rec.country <> fnd_api.g_miss_char)
11698 OR (p_location_rec.city IS NOT NULL
11699 AND p_location_rec.city <> fnd_api.g_miss_char)
11700 OR (p_location_rec.state IS NOT NULL
11701 AND p_location_rec.state <> fnd_api.g_miss_char)
11702 OR (p_location_rec.county IS NOT NULL
11703 AND p_location_rec.county <> fnd_api.g_miss_char)
11704 OR (p_location_rec.province IS NOT NULL
11705 AND p_location_rec.province <> fnd_api.g_miss_char)
11706 OR (p_location_rec.postal_code IS NOT NULL
11707 AND p_location_rec.postal_code <> fnd_api.g_miss_char)
11708 OR (p_location_rec.attribute1 IS NOT NULL
11709 AND p_location_rec.attribute1 <> fnd_api.g_miss_char)
11710 OR (p_location_rec.attribute2 IS NOT NULL
11711 AND p_location_rec.attribute2 <> fnd_api.g_miss_char)
11712 OR (p_location_rec.attribute3 IS NOT NULL
11713 AND p_location_rec.attribute3 <> fnd_api.g_miss_char)
11714 OR (p_location_rec.attribute4 IS NOT NULL
11715 AND p_location_rec.attribute4 <> fnd_api.g_miss_char)
11716 OR (p_location_rec.attribute5 IS NOT NULL
11717 AND p_location_rec.attribute5 <> fnd_api.g_miss_char)
11718 OR (p_location_rec.attribute6 IS NOT NULL
11719 AND p_location_rec.attribute6 <> fnd_api.g_miss_char)
11720 OR (p_location_rec.attribute7 IS NOT NULL
11721 AND p_location_rec.attribute7 <> fnd_api.g_miss_char)
11722 OR (p_location_rec.attribute8 IS NOT NULL
11723 AND p_location_rec.attribute8 <> fnd_api.g_miss_char)
11724 OR (p_location_rec.attribute9 IS NOT NULL
11725 AND p_location_rec.attribute9 <> fnd_api.g_miss_char)
11726 OR (p_location_rec.attribute10 IS NOT NULL
11727 AND p_location_rec.attribute10 <> fnd_api.g_miss_char))
11728 THEN
11729 BEGIN
11730 SELECT country, city, state, county, province, postal_code,
11731 attribute1, attribute2, attribute3, attribute4, attribute5,
11732 attribute6, attribute7, attribute8, attribute9, attribute10
11733 INTO o_country, o_city, o_state, o_county, o_province, o_postal_code,
11734 o_attribute1,o_attribute2,o_attribute3,o_attribute4,o_attribute5,
11735 o_attribute6,o_attribute7,o_attribute8,o_attribute9,o_attribute10
11736 FROM HZ_LOCATIONS
11737 WHERE location_id = p_location_rec.location_id ;
11738
11739 IF ( o_country <> p_location_rec.country
11740 OR o_city <> p_location_rec.city
11741 OR o_state <> p_location_rec.state
11742 OR o_county <> p_location_rec.county
11743 OR o_province <> p_location_rec.province
11744 OR o_postal_code <> p_location_rec.postal_code
11745 )
11746 THEN
11747 IF ARH_ADDR_PKG.check_tran_for_all_accts(p_location_rec.location_id)
11748 THEN
11749 fnd_message.set_name('AR', 'AR_CUST_ADDR_HAS_TRANSACTION');
11750 --Bug 2452282 fnd_message.set_token('COLUMN', 'tax related fields');
11751 fnd_msg_pub.add;
11752 x_return_status := fnd_api.g_ret_sts_error;
11753 ELSE -- non taxable components to be modified
11754 null; -- allow updates
11755 END IF;
11756 END IF;
11757 END; -- end of first select
11758 END IF; -- taxable components are not changed
11759 END IF; -- end of p_location_rec.location_id <> -1
11760 END IF;
11761
11762 -- Debug info.
11763 /*IF g_debug THEN
11764 hz_utility_v2pub.debug ('tax_location_validation (-)');
11765 END IF;
11766 */
11767 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
11768 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'tax_location_validation (-)',
11769 p_msg_level=>fnd_log.level_procedure);
11770 END IF;
11771
11772 --disable_debug;
11773
11774 END tax_location_validation;
11775
11776 /**
11777 * PROCEDURE validate_relationship_type
11778 *
11779 * DESCRIPTION
11780 * Validates relationship type record. Checks for
11781 * uniqueness
11782 * lookup types
11783 * mandatory columns
11784 * non-updateable fields
11785 * foreign key validations
11786 * other validations
11787 *
11788 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
11789 *
11790 * ARGUMENTS
11791 * IN:
11792 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
11793 * p_relationship_type_rec relationship type record.
11794 * p_rowid Rowid of the record (used only in update mode).
11795 * IN/OUT:
11796 * x_return_status Return status after the call. The status can
11797 * be FND_API.G_RET_STS_SUCCESS (success),
11798 * fnd_api.g_ret_sts_error (error),
11799 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
11800 *
11801 * NOTES
11802 *
11803 * MODIFICATION HISTORY
11804 *
11805 * 07-23-2001 Indrajit Sen o Created.
11806 * 12-23-2003 Rajib Ranjan Borah o Bug 2751613.Combination of relationship phrase,subject_type
11807 * and object_type should yield an unique phrase in the reverse
11808 * direction.
11809 * 29-NOV-2004 S V Sowjanya o Bug 3491584: Added a validation in procedure validate_relationship_type
11810 * to throw an error message while creating non directional relationship type
11811 * with different subject type and object type.
11812 *
11813 */
11814
11815 PROCEDURE validate_relationship_type(
11816 p_create_update_flag IN VARCHAR2,
11817 p_relationship_type_rec IN HZ_RELATIONSHIP_TYPE_V2PUB.RELATIONSHIP_TYPE_REC_TYPE,
11818 p_rowid IN ROWID ,
11819 x_return_status IN OUT NOCOPY VARCHAR2
11820 ) IS
11821
11822 l_dummy VARCHAR2(1);
11823 l_count NUMBER;
11824 l_code VARCHAR2(30);
11825 l_relationship_type HZ_RELATIONSHIP_TYPES.RELATIONSHIP_TYPE%TYPE;
11826 l_forward_rel_code HZ_RELATIONSHIP_TYPES.FORWARD_REL_CODE%TYPE;
11827 l_backward_rel_code HZ_RELATIONSHIP_TYPES.BACKWARD_REL_CODE%TYPE;
11828 l_direction_code HZ_RELATIONSHIP_TYPES.DIRECTION_CODE%TYPE;
11829 l_create_party_flag HZ_RELATIONSHIP_TYPES.CREATE_PARTY_FLAG%TYPE;
11830 l_allow_relate_to_self_flag HZ_RELATIONSHIP_TYPES.ALLOW_RELATE_TO_SELF_FLAG%TYPE;
11831 l_allow_circular_relationships HZ_RELATIONSHIP_TYPES.ALLOW_CIRCULAR_RELATIONSHIPS%TYPE;
11832 l_hierarchical_flag HZ_RELATIONSHIP_TYPES.HIERARCHICAL_FLAG%TYPE;
11833 l_multiple_parent_allowed HZ_RELATIONSHIP_TYPES.MULTIPLE_PARENT_ALLOWED%TYPE;
11834 l_incl_unrelated_entities HZ_RELATIONSHIP_TYPES.INCL_UNRELATED_ENTITIES%TYPE;
11835 l_subject_type HZ_RELATIONSHIP_TYPES.SUBJECT_TYPE%TYPE;
11836 l_object_type HZ_RELATIONSHIP_TYPES.OBJECT_TYPE%TYPE;
11837 l_created_by_module VARCHAR2(150);
11838 l_application_id NUMBER;
11839 l_status VARCHAR2(1);
11840 l_debug_prefix VARCHAR2(30) := '';
11841 l_role VARCHAR2(30);
11842
11843 BEGIN
11844
11845 --enable_debug;
11846
11847 -- Debug info.
11848 /*IF g_debug THEN
11849 hz_utility_v2pub.debug ('validate_relationship_type (+)');
11850 END IF;
11851 */
11852 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
11853 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_relationship_type (+)',
11854 p_msg_level=>fnd_log.level_procedure);
11855 END IF;
11856
11857 -- select columns needed to be checked from table during update
11858 IF (p_create_update_flag = 'U') THEN
11859 SELECT RELATIONSHIP_TYPE,
11860 FORWARD_REL_CODE,
11861 BACKWARD_REL_CODE,
11862 DIRECTION_CODE,
11863 HIERARCHICAL_FLAG,
11864 CREATE_PARTY_FLAG,
11865 ALLOW_RELATE_TO_SELF_FLAG,
11866 ALLOW_CIRCULAR_RELATIONSHIPS,
11867 MULTIPLE_PARENT_ALLOWED,
11868 INCL_UNRELATED_ENTITIES,
11869 SUBJECT_TYPE,
11870 OBJECT_TYPE,
11871 ROLE,
11872 CREATED_BY_MODULE,
11873 APPLICATION_ID
11874 INTO l_relationship_type,
11875 l_forward_rel_code,
11876 l_backward_rel_code,
11877 l_direction_code,
11878 l_hierarchical_flag,
11879 l_create_party_flag,
11880 l_allow_relate_to_self_flag,
11881 l_allow_circular_relationships,
11882 l_multiple_parent_allowed,
11883 l_incl_unrelated_entities,
11884 l_subject_type,
11885 l_object_type,
11886 l_role,
11887 l_created_by_module,
11888 l_application_id
11889 FROM HZ_RELATIONSHIP_TYPES
11890 WHERE ROWID = p_rowid;
11891 END IF;
11892
11893
11894 -- Validate the nonupdateability of ROLE
11895
11896 IF (p_create_update_flag = 'U') THEN
11897 validate_nonupdateable (
11898 p_column => 'ROLE',
11899 p_column_value => p_relationship_type_rec.forward_role,
11900 p_old_column_value => l_role,
11901 x_return_status => x_return_status
11902 );
11903 --------Bug no: 3564107 ---------------------------------
11904 BEGIN
11905 SELECT ROLE INTO l_role
11906 FROM HZ_RELATIONSHIP_TYPES
11907 WHERE RELATIONSHIP_TYPE = l_relationship_type
11908 AND FORWARD_REL_CODE = l_backward_rel_code
11909 AND BACKWARD_REL_CODE = l_forward_rel_code
11910 AND SUBJECT_TYPE = l_object_type
11911 AND OBJECT_TYPE = l_subject_type
11912 AND ROWNUM = 1;
11913
11914 validate_nonupdateable (
11915 p_column => 'ROLE',
11916 p_column_value => p_relationship_type_rec.backward_role,
11917 p_old_column_value => l_role,
11918 x_return_status => x_return_status
11919 );
11920 EXCEPTION
11921 WHEN NO_DATA_FOUND THEN
11922 NULL;
11923 END;
11924 --------End of Bug no: 3564107 ---------------------------------
11925 END IF;
11926
11927 /* -- Raise an error if user tries to update forward role to NULL
11928 IF (p_create_update_flag = 'U') THEN
11929 validate_cannot_update_to_null (
11930 p_column => 'role',
11931 p_column_value => p_relationship_type_rec.forward_role,
11932 x_return_status => x_return_status
11933 );
11934
11935 -- Raise an error if user tries to update backward role to NULL
11936 IF (p_create_update_flag = 'U') THEN
11937 validate_cannot_update_to_null (
11938 p_column => 'role',
11939 p_column_value => p_relationship_type_rec.backward_role,
11940 x_return_status => x_return_status
11941 );
11942 END IF;*/
11943
11944 /*-- validate forward_role
11945 IF (p_create_update_flag = 'U') THEN
11946 validate_lookup (
11947 p_column => 'role',
11948 p_lookup_type => 'HZ_RELATIONSHIP_ROLE',
11949 p_column_value => p_relationship_type_rec.forward_role,
11950 x_return_status => x_return_status);
11951 END IF;
11952
11953 -- validate backward_role
11954 IF (p_create_update_flag = 'U') THEN
11955 validate_lookup (
11956 p_column => 'role',
11957 p_lookup_type => 'HZ_RELATIONSHIP_ROLE',
11958 p_column_value => p_relationship_type_rec.backward_role,
11959 x_return_status => x_return_status);
11960 END IF; */
11961
11962
11963 -----------------------------
11964 -- validate relationship_type
11965 -----------------------------
11966
11967 -- relationship_type is mandatory
11968 validate_mandatory (
11969 p_create_update_flag => p_create_update_flag,
11970 p_column => 'relationship_type',
11971 p_column_value => p_relationship_type_rec.relationship_type,
11972 x_return_status => x_return_status);
11973
11974 /*IF g_debug THEN
11975 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
11976 'relationship_type is mandatory. ' ||
11977 'x_return_status = ' || x_return_status, l_debug_prefix);
11978 END IF;
11979 */
11980 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
11981 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'relationship_type is mandatory. ' ||
11982 'x_return_status = ' || x_return_status,
11983 p_msg_level=>fnd_log.level_statement);
11984 END IF;
11985
11986
11987 -- relationship_type is non-updateable
11988 IF p_create_update_flag = 'U' THEN
11989 validate_nonupdateable (
11990 p_column => 'relationship_type',
11991 p_column_value => p_relationship_type_rec.relationship_type,
11992 p_old_column_value => l_relationship_type,
11993 x_return_status => x_return_status);
11994 END IF;
11995
11996 /*IF g_debug THEN
11997 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
11998 'relationship_type is non-updateable. ' ||
11999 'x_return_status = ' || x_return_status, l_debug_prefix);
12000 END IF;
12001 */
12002 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12003 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'relationship_type is non-updateable. ' ||
12004 'x_return_status = ' || x_return_status,
12005 p_msg_level=>fnd_log.level_statement);
12006 END IF;
12007
12008
12009
12010
12011 ------------------
12012 -- validate status
12013 ------------------
12014
12015 -- status cannot be set to null during update
12016 IF p_create_update_flag = 'U' THEN
12017 validate_cannot_update_to_null (
12018 p_column => 'status',
12019 p_column_value => p_relationship_type_rec.status,
12020 x_return_status => x_return_status);
12021
12022 /*IF g_debug THEN
12023 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12024 'status cannot be set to null during update. ' ||
12025 'x_return_status = ' || x_return_status, l_debug_prefix);
12026 END IF;
12027 */
12028 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12029 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'status cannot be set to null during update. ' ||
12030 'x_return_status = ' || x_return_status,
12031 p_msg_level=>fnd_log.level_statement);
12032 END IF;
12033
12034
12035 END IF;
12036
12037 -- status is lookup code in lookup type CODE_STATUS
12038 IF p_relationship_type_rec.status IS NOT NULL
12039 AND
12040 p_relationship_type_rec.status <> fnd_api.g_miss_char
12041 AND
12042 (p_create_update_flag = 'C'
12043 OR
12044 (p_create_update_flag = 'U'
12045 AND
12046 p_relationship_type_rec.status <> NVL(l_status, fnd_api.g_miss_char)
12047 )
12048 )
12049 THEN
12050 validate_lookup (
12051 p_column => 'status',
12052 p_lookup_type => 'CODE_STATUS',
12053 p_column_value => p_relationship_type_rec.status,
12054 x_return_status => x_return_status);
12055
12056 /*IF g_debug THEN
12057 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12058 'status is lookup code in lookup type CODE_STATUS. ' ||
12059 'x_return_status = ' || x_return_status, l_debug_prefix);
12060 END IF;
12061 */
12062 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12063 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12064 p_message=>'status is lookup code in lookup type CODE_STATUS. ' ||
12065 'x_return_status = ' || x_return_status,
12066 p_msg_level=>fnd_log.level_statement);
12067 END IF;
12068
12069
12070 END IF;
12071
12072 -----------------------------
12073 -- validate create_party_flag
12074 -----------------------------
12075
12076 -- create_party_flag is lookup code in lookup type YES/NO
12077 validate_lookup (
12078 p_column => 'create_party_flag',
12079 p_lookup_type => 'YES/NO',
12080 p_column_value => p_relationship_type_rec.create_party_flag,
12081 x_return_status => x_return_status);
12082
12083 /*IF g_debug THEN
12084 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12085 'create_party_flag should be in lookup YES/NO. ' ||
12086 'x_return_status = ' || x_return_status, l_debug_prefix);
12087 END IF;
12088 */
12089 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12090 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'create_party_flag should be in lookup YES/NO. ' ||
12091 'x_return_status = ' || x_return_status,
12092 p_msg_level=>fnd_log.level_statement);
12093 END IF;
12094
12095
12096 -- create_party_flag is non-updateable if relationship records are already created based
12097 -- on the current value of the flag
12098 IF p_create_update_flag = 'U' THEN
12099 IF p_relationship_type_rec.create_party_flag <> fnd_api.g_miss_char
12100 AND
12101 p_relationship_type_rec.create_party_flag IS NOT NULL
12102 AND
12103 p_relationship_type_rec.create_party_flag <> l_create_party_flag
12104 THEN
12105 IF l_create_party_flag = 'Y' AND p_relationship_type_rec.create_party_flag = 'N' THEN
12106 -- check if there is any relationship with this relationship type having a party.
12107 -- if there is, do not allow the update
12108 BEGIN
12109 SELECT 1 INTO l_count
12110 FROM HZ_RELATIONSHIPS
12111 WHERE RELATIONSHIP_TYPE = l_relationship_type
12112 AND SUBJECT_TYPE = l_subject_type
12113 AND OBJECT_TYPE = l_object_type
12114 AND RELATIONSHIP_CODE = l_forward_rel_code
12115 AND PARTY_ID IS NOT NULL
12116 AND STATUS = 'A'
12117 AND TRUNC(SYSDATE) BETWEEN TRUNC(START_DATE) AND TRUNC(NVL(END_DATE, SYSDATE))
12118 AND ROWNUM = 1;
12119
12120 -- update is not allowed, raise error
12121 fnd_message.set_name('AR', 'HZ_API_CPF_NON_UPDATEABLE');
12122 fnd_msg_pub.add;
12123 x_return_status := fnd_api.g_ret_sts_error;
12124
12125 EXCEPTION
12126 WHEN NO_DATA_FOUND THEN
12127 NULL;
12128 END;
12129 END IF;
12130
12131 IF l_create_party_flag = 'N' AND p_relationship_type_rec.create_party_flag = 'Y' THEN
12132 -- check if there is any relationship with this relationship type not having a party.
12133 -- if there is, do not allow the update.
12134 BEGIN
12135 SELECT 1 INTO l_count
12136 FROM HZ_RELATIONSHIPS
12137 WHERE RELATIONSHIP_TYPE = l_relationship_type
12138 AND SUBJECT_TYPE = l_subject_type
12139 AND OBJECT_TYPE = l_object_type
12140 AND RELATIONSHIP_CODE = l_forward_rel_code
12141 AND PARTY_ID IS NULL
12142 AND STATUS = 'A'
12143 AND TRUNC(SYSDATE) BETWEEN TRUNC(START_DATE) AND TRUNC(NVL(END_DATE, SYSDATE))
12144 AND ROWNUM = 1;
12145
12146 -- update is not allowed, raise error
12147 fnd_message.set_name('AR', 'HZ_API_CPF_NON_UPDATEABLE');
12148 fnd_msg_pub.add;
12149 x_return_status := fnd_api.g_ret_sts_error;
12150
12151 EXCEPTION
12152 WHEN NO_DATA_FOUND THEN
12153 NULL;
12154 END;
12155
12156 END IF;
12157 END IF;
12158 END IF;
12159
12160 /*IF g_debug THEN
12161 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12162 'create_party_flag is updateable/non-updateable. ' ||
12163 'x_return_status = ' || x_return_status, l_debug_prefix);
12164 END IF;
12165 */
12166 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12167 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'create_party_flag is updateable/non-updateable. ' ||
12168 'x_return_status = ' || x_return_status,
12169 p_msg_level=>fnd_log.level_statement);
12170 END IF;
12171
12172
12173 -----------------------------
12174 -- validate allow_circular_relationships
12175 -----------------------------
12176
12177 -- allow_circular_relationships is lookup code in lookup type YES/NO
12178 validate_lookup (
12179 p_column => 'allow_circular_relationships',
12180 p_lookup_type => 'YES/NO',
12181 p_column_value => p_relationship_type_rec.allow_circular_relationships,
12182 x_return_status => x_return_status);
12183
12184 /*IF g_debug THEN
12185 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12186 'allow_circular_relationships should be in lookup YES/NO. ' ||
12187 'x_return_status = ' || x_return_status, l_debug_prefix);
12188 END IF;
12189 */
12190 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12191 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12192 p_message=>'allow_circular_relationships should be in lookup YES/NO. ' ||
12193 'x_return_status = ' || x_return_status,
12194 p_msg_level=>fnd_log.level_statement);
12195 END IF;
12196
12197
12198 -- allow_circular_relationships is non-updateable
12199 IF p_create_update_flag = 'U' THEN
12200 validate_nonupdateable (
12201 p_column => 'allow_circular_relationships',
12202 p_column_value => p_relationship_type_rec.allow_circular_relationships,
12203 p_old_column_value => l_allow_circular_relationships,
12204 x_return_status => x_return_status);
12205
12206 /*IF g_debug THEN
12207 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12208 'allow_circular_relationships is non-updateable. ' ||
12209 'x_return_status = ' || x_return_status, l_debug_prefix);
12210 END IF;
12211 */
12212 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12213 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12214 p_message=>'allow_circular_relationships is non-updateable. ' ||
12215 'x_return_status = ' || x_return_status,
12216 p_msg_level=>fnd_log.level_statement);
12217 END IF;
12218
12219
12220 END IF;
12221
12222 -------------------------------------
12223 -- validate allow_relate_to_self_flag
12224 -------------------------------------
12225
12226 -- allow_relate_to_self_flag is lookup code in lookup type YES/NO
12227 validate_lookup (
12228 p_column => 'allow_relate_to_self_flag',
12229 p_lookup_type => 'YES/NO',
12230 p_column_value => p_relationship_type_rec.allow_relate_to_self_flag,
12231 x_return_status => x_return_status);
12232
12233 /*IF g_debug THEN
12234 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12235 'allow_relate_to_self_flag should be in lookup YES/NO. ' ||
12236 'x_return_status = ' || x_return_status, l_debug_prefix);
12237 END IF;
12238 */
12239 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12240 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12241 p_message=>'allow_relate_to_self_flag should be in lookup YES/NO. ' ||
12242 'x_return_status = ' || x_return_status,
12243 p_msg_level=>fnd_log.level_statement);
12244 END IF;
12245
12246
12247 -- allow_relate_to_self_flag is non-updateable
12248 IF p_create_update_flag = 'U' THEN
12249 validate_nonupdateable (
12250 p_column => 'allow_relate_to_self_flag',
12251 p_column_value => p_relationship_type_rec.allow_relate_to_self_flag,
12252 p_old_column_value => l_allow_relate_to_self_flag,
12253 x_return_status => x_return_status);
12254
12255 /*IF g_debug THEN
12256 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12257 'allow_relate_to_self_flag is non-updateable. ' ||
12258 'x_return_status = ' || x_return_status, l_debug_prefix);
12259 END IF;
12260 */
12261 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12262 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'allow_relate_to_self_flag is non-updateable. ' ||
12263 'x_return_status = ' || x_return_status,
12264 p_msg_level=>fnd_log.level_statement);
12265 END IF;
12266
12267
12268 END IF;
12269
12270 ----------------------------
12271 -- validate forward_rel_code
12272 ----------------------------
12273
12274 -- forward_rel_code is mandatory
12275 validate_mandatory (
12276 p_create_update_flag => p_create_update_flag,
12277 p_column => 'forward_rel_code',
12278 p_column_value => p_relationship_type_rec.forward_rel_code,
12279 x_return_status => x_return_status);
12280
12281 -- forward_rel_code is lookup code in lookup type PARTY_RELATIONS_TYPE
12282 validate_lookup (
12283 p_column => 'forward_rel_code',
12284 p_lookup_type => 'PARTY_RELATIONS_TYPE',
12285 p_column_value => p_relationship_type_rec.forward_rel_code,
12286 x_return_status => x_return_status);
12287
12288 /*IF g_debug THEN
12289 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12290 'forward_rel_code is lookup code in lookup type PARTY_RELATIONS_TYPE. ' ||
12291 'x_return_status = ' || x_return_status, l_debug_prefix);
12292 END IF;
12293 */
12294 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12295 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12296 p_message=>'forward_rel_code is lookup code in lookup type PARTY_RELATIONS_TYPE. ' ||
12297 'x_return_status = ' || x_return_status,
12298 p_msg_level=>fnd_log.level_statement);
12299 END IF;
12300
12301
12302 -- forward_rel_code is non-updateable
12303 IF p_create_update_flag = 'U' THEN
12304 validate_nonupdateable (
12305 p_column => 'forward_rel_code',
12306 p_column_value => p_relationship_type_rec.forward_rel_code,
12307 p_old_column_value => l_forward_rel_code,
12308 x_return_status => x_return_status);
12309
12310 /*IF g_debug THEN
12311 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12312 'forward_rel_code is non-updateable. ' ||
12313 'x_return_status = ' || x_return_status, l_debug_prefix);
12314 END IF;
12315 */
12316 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12317 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'forward_rel_code is non-updateable. ' ||
12318 'x_return_status = ' || x_return_status,
12319 p_msg_level=>fnd_log.level_statement);
12320 END IF;
12321
12322
12323 END IF;
12324
12325 -----------------------------
12326 -- validate backward_rel_code
12327 -----------------------------
12328
12329 -- backward_rel_code is mandatory
12330 validate_mandatory (
12331 p_create_update_flag => p_create_update_flag,
12332 p_column => 'backward_rel_code',
12333 p_column_value => p_relationship_type_rec.backward_rel_code,
12334 x_return_status => x_return_status);
12335
12336 -- backward_rel_code is lookup code in lookup type PARTY_RELATIONS_TYPE
12337 validate_lookup (
12338 p_column => 'backward_rel_code',
12339 p_lookup_type => 'PARTY_RELATIONS_TYPE',
12340 p_column_value => p_relationship_type_rec.backward_rel_code,
12341 x_return_status => x_return_status);
12342
12343 /*IF g_debug THEN
12344 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12345 'backward_rel_code is lookup code in lookup type PARTY_RELATIONS_TYPE. ' ||
12346 'x_return_status = ' || x_return_status, l_debug_prefix);
12347 END IF;
12348 */
12349 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12350 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12351 p_message=>'backward_rel_code is lookup code in lookup type PARTY_RELATIONS_TYPE. ' ||
12352 'x_return_status = ' || x_return_status,
12353 p_msg_level=>fnd_log.level_statement);
12354 END IF;
12355
12356
12357 -- backward_rel_code is non-updateable
12358 IF p_create_update_flag = 'U' THEN
12359 validate_nonupdateable (
12360 p_column => 'backward_rel_code',
12361 p_column_value => p_relationship_type_rec.backward_rel_code,
12362 p_old_column_value => l_backward_rel_code,
12363 x_return_status => x_return_status);
12364
12365 /*IF g_debug THEN
12366 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12367 'backward_rel_code is non-updateable. ' ||
12368 'x_return_status = ' || x_return_status, l_debug_prefix);
12369 END IF;
12370 */
12371 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12372 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'backward_rel_code is non-updateable. ' ||
12373 'x_return_status = ' || x_return_status,
12374 p_msg_level=>fnd_log.level_statement);
12375 END IF;
12376
12377
12378 END IF;
12379
12380 -----------------------------
12381 -- validate direction_code
12382 -----------------------------
12383
12384 -- direction_code is mandatory
12385 validate_mandatory (
12386 p_create_update_flag => p_create_update_flag,
12387 p_column => 'direction_code',
12388 p_column_value => p_relationship_type_rec.direction_code,
12389 x_return_status => x_return_status);
12390
12391 /*IF g_debug THEN
12392 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12393 'direction_code is mandatory. ' ||
12394 'x_return_status = ' || x_return_status, l_debug_prefix);
12395 END IF;
12396 */
12397 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12398 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'direction_code is mandatory. ' ||
12399 'x_return_status = ' || x_return_status,
12400 p_msg_level=>fnd_log.level_statement);
12401 END IF;
12402
12403
12404 -- direction_code is lookup code in lookup type DIRECTION_CODE
12405 validate_lookup (
12406 p_column => 'direction_code',
12407 p_lookup_type => 'DIRECTION_CODE',
12408 p_column_value => p_relationship_type_rec.direction_code,
12409 x_return_status => x_return_status);
12410
12411 /*IF g_debug THEN
12412 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12413 'direction_code is lookup code in lookup type DIRECTION_CODE. ' ||
12414 'x_return_status = ' || x_return_status, l_debug_prefix);
12415 END IF;
12416 */
12417 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12418 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12419 p_message=>'direction_code is lookup code in lookup type DIRECTION_CODE. ' ||
12420 'x_return_status = ' || x_return_status,
12421 p_msg_level=>fnd_log.level_statement);
12422 END IF;
12423
12424
12425 -- direction_code is non-updateable
12426 IF p_create_update_flag = 'U' THEN
12427 validate_nonupdateable (
12428 p_column => 'direction_code',
12429 p_column_value => p_relationship_type_rec.direction_code,
12430 p_old_column_value => l_direction_code,
12431 x_return_status => x_return_status);
12432
12433 /*IF g_debug THEN
12434 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12435 'direction_code is non-updateable. ' ||
12436 'x_return_status = ' || x_return_status, l_debug_prefix);
12437 END IF;
12438 */
12439 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12440 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'direction_code is non-updateable. ' ||
12441 'x_return_status = ' || x_return_status,
12442 p_msg_level=>fnd_log.level_statement);
12443 END IF;
12444
12445
12446 END IF;
12447
12448 --------------------
12449 -- validate subject_type
12450 --------------------
12451
12452 -- subject_type is mandatory
12453 validate_mandatory (
12454 p_create_update_flag => p_create_update_flag,
12455 p_column => 'subject_type',
12456 p_column_value => p_relationship_type_rec.subject_type,
12457 x_return_status => x_return_status);
12458
12459 /*IF g_debug THEN
12460 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12461 'subject_type is mandatory. ' ||
12462 'x_return_status = ' || x_return_status, l_debug_prefix);
12463 END IF;
12464 */
12465 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12466 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_type is mandatory. ' ||
12467 'x_return_status = ' || x_return_status,
12468 p_msg_level=>fnd_log.level_statement);
12469 END IF;
12470
12471
12472 -- subject_type has foreign key fnd_object_instance_sets.instance_set_name
12473 IF p_relationship_type_rec.subject_type IS NOT NULL
12474 AND
12475 p_relationship_type_rec.subject_type <> fnd_api.g_miss_char
12476 THEN
12477 BEGIN
12478 SELECT 'Y'
12479 INTO l_dummy
12480 FROM FND_OBJECT_INSTANCE_SETS
12481 WHERE INSTANCE_SET_NAME = p_relationship_type_rec.subject_type;
12482 EXCEPTION
12483 WHEN NO_DATA_FOUND THEN
12484 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
12485 fnd_message.set_token('FK', 'subject_type');
12486 fnd_message.set_token('COLUMN', 'instance_set_name');
12487 fnd_message.set_token('TABLE', 'fnd_object_instance_sets');
12488 fnd_msg_pub.add;
12489 x_return_status := fnd_api.g_ret_sts_error;
12490 END;
12491
12492 /*IF g_debug THEN
12493 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12494 'subject_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
12495 'x_return_status = ' || x_return_status, l_debug_prefix);
12496 END IF;
12497 */
12498 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12499 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12500 p_message=>'subject_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
12501 'x_return_status = ' || x_return_status,
12502 p_msg_level=>fnd_log.level_statement);
12503 END IF;
12504
12505
12506 END IF;
12507
12508 -- subject_type is non-updateable
12509 IF p_create_update_flag = 'U' THEN
12510 validate_nonupdateable (
12511 p_column => 'subject_type',
12512 p_column_value => p_relationship_type_rec.subject_type,
12513 p_old_column_value => l_subject_type,
12514 x_return_status => x_return_status);
12515
12516 /*IF g_debug THEN
12517 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12518 'subject_type is non-updateable. ' ||
12519 'x_return_status = ' || x_return_status, l_debug_prefix);
12520 END IF;
12521 */
12522 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12523 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_type is non-updateable. ' ||
12524 'x_return_status = ' || x_return_status,
12525 p_msg_level=>fnd_log.level_statement);
12526 END IF;
12527
12528
12529 END IF;
12530
12531 --------------------
12532 -- validate object_type
12533 --------------------
12534
12535 -- object_type is mandatory
12536 validate_mandatory (
12537 p_create_update_flag => p_create_update_flag,
12538 p_column => 'object_type',
12539 p_column_value => p_relationship_type_rec.object_type,
12540 x_return_status => x_return_status);
12541
12542 /*IF g_debug THEN
12543 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12544 'object_type is mandatory. ' ||
12545 'x_return_status = ' || x_return_status, l_debug_prefix);
12546 END IF;
12547 */
12548 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12549 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_type is mandatory. ' ||
12550 'x_return_status = ' || x_return_status,
12551 p_msg_level=>fnd_log.level_statement);
12552 END IF;
12553
12554
12555 -- object_type has foreign key fnd_object_instance_sets.instance_set_name
12556 IF p_relationship_type_rec.object_type IS NOT NULL
12557 AND
12558 p_relationship_type_rec.object_type <> fnd_api.g_miss_char
12559 THEN
12560 BEGIN
12561 SELECT 'Y'
12562 INTO l_dummy
12563 FROM FND_OBJECT_INSTANCE_SETS
12564 WHERE INSTANCE_SET_NAME = p_relationship_type_rec.object_type;
12565 EXCEPTION
12566 WHEN NO_DATA_FOUND THEN
12567 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
12568 fnd_message.set_token('FK', 'object_type');
12569 fnd_message.set_token('COLUMN', 'instance_set_name');
12570 fnd_message.set_token('TABLE', 'fnd_object_instance_sets');
12571 fnd_msg_pub.add;
12572 x_return_status := fnd_api.g_ret_sts_error;
12573 END;
12574
12575 /*IF g_debug THEN
12576 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12577 'object_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
12578 'x_return_status = ' || x_return_status, l_debug_prefix);
12579 END IF;
12580 */
12581 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12582 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12583 p_message=>'object_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
12584 'x_return_status = ' || x_return_status,
12585 p_msg_level=>fnd_log.level_statement);
12586 END IF;
12587
12588
12589 END IF;
12590
12591 -- object_type is non-updateable
12592 IF p_create_update_flag = 'U' THEN
12593 validate_nonupdateable (
12594 p_column => 'object_type',
12595 p_column_value => p_relationship_type_rec.object_type,
12596 p_old_column_value => l_object_type,
12597 x_return_status => x_return_status);
12598
12599 /*IF g_debug THEN
12600 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12601 'object_type is non-updateable. ' ||
12602 'x_return_status = ' || x_return_status, l_debug_prefix);
12603 END IF;
12604 */
12605 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12606 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_type is non-updateable. ' ||
12607 'x_return_status = ' || x_return_status,
12608 p_msg_level=>fnd_log.level_statement);
12609 END IF;
12610
12611
12612 END IF;
12613
12614 ---------------------------
12615 -- validate the combination
12616 ---------------------------
12617
12618 -- the combination of FORWARD_REL_CODE, SUBJECT_TYPE, OBJECT_TYPE should be
12619 -- able to identify a unique BACKWARD_REL_CODE. Thus a second record with same
12620 -- combination of FORWARD_REL_CODE, SUBJECT_TYPE, OBJECT_TYPE should have
12621 -- same BACKWARD_REL_CODE.
12622 -- 07/23/2002. this validation has been enhanced to apply the validation within a
12623 -- relationship type rather than doing the validation across all relatiosnhip
12624 -- types. bug 2453736.
12625 -- first check whether there is one such record
12626 -- Bug 2751613.This validation should work for all the different combinations.
12627 /* Bug 2751613.
12628 | SELECT COUNT(*)
12629 | INTO l_count
12630 | FROM HZ_RELATIONSHIP_TYPES
12631 | WHERE RELATIONSHIP_TYPE = p_relationship_type_rec.relationship_type
12632 | AND FORWARD_REL_CODE = p_relationship_type_rec.forward_rel_code
12633 | AND SUBJECT_TYPE = p_relationship_type_rec.subject_type
12634 | AND OBJECT_TYPE = p_relationship_type_rec.object_type;
12635 |
12636 | IF l_count > 0 THEN
12637 | --since there is one or more such records, we need to get the backward_rel_code
12638 | SELECT BACKWARD_REL_CODE
12639 | INTO l_code
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 | AND ROWNUM = 1;
12646 | -- if the backward_rel_code passed do not match with whatever
12647 | -- obtained from above query, error out NOCOPY
12648 | IF l_code <> p_relationship_type_rec.backward_rel_code then
12649 | fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION');
12650 | fnd_msg_pub.add;
12651 | x_return_status := FND_API.G_RET_STS_ERROR;
12652 | END IF;
12653 | END IF;
12654 */
12655
12656 -- Bug 2751613.
12657 SELECT COUNT(*)
12658 INTO l_count
12659 FROM HZ_RELATIONSHIP_TYPES
12660 WHERE
12661 (
12662 RELATIONSHIP_TYPE = p_relationship_type_rec.relationship_type
12663 )
12664 AND
12665 (
12666 (
12667 (SUBJECT_TYPE = p_relationship_type_rec.subject_type
12668 AND OBJECT_TYPE = p_relationship_type_rec.object_type
12669 )
12670 AND
12671 (
12672 (BACKWARD_REL_CODE <> p_relationship_type_rec.backward_rel_code
12673 AND FORWARD_REL_CODE = p_relationship_type_rec.forward_rel_code
12674 )
12675 OR
12676 (BACKWARD_REL_CODE = p_relationship_type_rec.backward_rel_code
12677 AND FORWARD_REL_CODE <> p_relationship_type_rec.forward_rel_code
12678 )
12679 )
12680 )
12681 OR
12682 (
12683 (SUBJECT_TYPE = p_relationship_type_rec.object_type
12684 AND OBJECT_TYPE = p_relationship_type_rec.subject_type
12685 )
12686 AND
12687 (
12688 (BACKWARD_REL_CODE <> p_relationship_type_rec.forward_rel_code
12689 AND FORWARD_REL_CODE = p_relationship_type_rec.backward_rel_code
12690 )
12691 OR
12692 (BACKWARD_REL_CODE = p_relationship_type_rec.forward_rel_code
12693 AND FORWARD_REL_CODE <> p_relationship_type_rec.backward_rel_code
12694 )
12695 )
12696 )
12697 );
12698
12699 IF l_count <> 0
12700 THEN
12701 fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION');
12702 fnd_msg_pub.add;
12703 x_return_status := FND_API.G_RET_STS_ERROR;
12704 END IF;
12705
12706 /*IF g_debug THEN
12707 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12708 'validate the combination of forward_rel_code, subject_type, object_type. ' ||
12709 'x_return_status = ' || x_return_status, l_debug_prefix);
12710 END IF;
12711 */
12712 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12713 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12714 p_message=>'validate the combination of forward_rel_code,backward_rel_code, subject_type, object_type. ' ||
12715 'x_return_status = ' || x_return_status,
12716 p_msg_level=>fnd_log.level_statement);
12717 END IF;
12718
12719
12720 -----------------------------
12721 -- check for duplicate record
12722 -----------------------------
12723
12724 -- check for duplicate record
12725 BEGIN
12726 SELECT 1
12727 INTO l_count
12728 FROM HZ_RELATIONSHIP_TYPES
12729 WHERE RELATIONSHIP_TYPE = p_relationship_type_rec.relationship_type
12730 AND FORWARD_REL_CODE = p_relationship_type_rec.forward_rel_code
12731 AND BACKWARD_REL_CODE = p_relationship_type_rec.backward_rel_code
12732 AND SUBJECT_TYPE = p_relationship_type_rec.subject_type
12733 AND OBJECT_TYPE = p_relationship_type_rec.object_type
12734 AND RELATIONSHIP_TYPE_ID <> NVL(p_relationship_type_rec.relationship_type_id,-1);
12735
12736 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
12737 fnd_message.set_token('COLUMN', 'relationship type, forward rel code, backward rel code, subject type, object type');
12738 fnd_msg_pub.add;
12739 x_return_status := fnd_api.g_ret_sts_error;
12740
12741 EXCEPTION
12742 WHEN NO_DATA_FOUND THEN
12743 NULL;
12744 END;
12745
12746 /*IF g_debug THEN
12747 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12748 'check for duplicate record. ' ||
12749 'x_return_status = ' || x_return_status, l_debug_prefix);
12750 END IF;
12751 */
12752 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12753 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'check for duplicate record. ' ||
12754 'x_return_status = ' || x_return_status,
12755 p_msg_level=>fnd_log.level_statement);
12756 END IF;
12757
12758
12759 --------------------------
12760 -- validate direction_code
12761 --------------------------
12762
12763 -- if forward_rel_code and backward_rel_code are same then direction_flag
12764 -- cannot be 'P' or 'C'
12765 IF p_relationship_type_rec.forward_rel_code = p_relationship_type_rec.backward_rel_code
12766 AND
12767 p_relationship_type_rec.direction_code <> 'N'
12768 THEN
12769 fnd_message.set_name('AR', 'HZ_INVALID_DIRECTION_CODE1');
12770 fnd_msg_pub.add;
12771 x_return_status := FND_API.G_RET_STS_ERROR;
12772 END IF;
12773
12774 -- if forward_rel_code and backward_rel_code are not same then direction_flag
12775 -- cannot be 'N'
12776 IF p_relationship_type_rec.forward_rel_code <> p_relationship_type_rec.backward_rel_code
12777 AND p_relationship_type_rec.direction_code = 'N'
12778 THEN
12779 fnd_message.set_name('AR', 'HZ_INVALID_DIRECTION_CODE2');
12780 fnd_msg_pub.add;
12781 x_return_status := FND_API.G_RET_STS_ERROR;
12782 END IF;
12783
12784 /*IF g_debug THEN
12785 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12786 'validate direction_code. ' ||
12787 'x_return_status = ' || x_return_status, l_debug_prefix);
12788 END IF;
12789 */
12790 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12791 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate direction_code. ' ||
12792 'x_return_status = ' || x_return_status,
12793 p_msg_level=>fnd_log.level_statement);
12794 END IF;
12795
12796
12797 -----------------------------
12798 -- validate hierarchical_flag
12799 -----------------------------
12800
12801 -- hierarchical_flag is lookup code in lookup type YES/NO
12802 validate_lookup (
12803 p_column => 'hierarchical_flag',
12804 p_lookup_type => 'YES/NO',
12805 p_column_value => p_relationship_type_rec.hierarchical_flag,
12806 x_return_status => x_return_status );
12807
12808 /*IF G_DEBUG THEN
12809 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12810 'hierarchical_flag in lookup YES/NO. ' ||
12811 'x_return_status = ' || x_return_status, l_debug_prefix );
12812 END IF;
12813 */
12814 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12815 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'hierarchical_flag in lookup YES/NO. ' ||
12816 'x_return_status = ' || x_return_status,
12817 p_msg_level=>fnd_log.level_statement);
12818 END IF;
12819
12820
12821 -- hierarchical_flag is non-updateable
12822 IF p_create_update_flag = 'U' THEN
12823 validate_nonupdateable (
12824 p_column => 'hierarchical_flag',
12825 p_column_value => p_relationship_type_rec.hierarchical_flag,
12826 p_old_column_value => l_hierarchical_flag,
12827 x_return_status => x_return_status);
12828
12829 /*IF g_debug THEN
12830 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12831 'hierarchical_flag is non-updateable. ' ||
12832 'x_return_status = ' || x_return_status, l_debug_prefix);
12833 END IF;
12834 */
12835 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12836 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'hierarchical_flag is non-updateable. ' ||
12837 'x_return_status = ' || x_return_status,
12838 p_msg_level=>fnd_log.level_statement);
12839 END IF;
12840
12841
12842 END IF;
12843
12844 ----------------------------------------------------------------------------
12845 -- validate combination of hierarchical_flag and allow_circular_relationship
12846 ----------------------------------------------------------------------------
12847 -- needed only during creation since these columns cannot be updated
12848 IF p_create_update_flag = 'C' THEN
12849 -- if hierarchical_flag = 'Y', then allow_circular_relationships must be 'N'
12850 IF NVL(p_relationship_type_rec.hierarchical_flag, 'N') = 'Y' THEN
12851 IF p_relationship_type_rec.allow_circular_relationships = 'Y' THEN
12852 fnd_message.set_name('AR', 'HZ_API_VAL_DEP_FIELDS');
12853 fnd_message.set_token('COLUMN1', 'hierarchical_flag');
12854 fnd_message.set_token('VALUE1', 'Y(Yes)');
12855 fnd_message.set_token('COLUMN2', 'allow_circular_relationships');
12856 fnd_message.set_token('VALUE2', 'N(No)');
12857 fnd_msg_pub.add;
12858 x_return_status := FND_API.G_RET_STS_ERROR;
12859 END IF;
12860 END IF;
12861 /*IF g_debug THEN
12862 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12863 'if hierarchical_flag = ''Y'', then allow_circular_relationships must be ''N''. ' ||
12864 'x_return_status = ' || x_return_status, l_debug_prefix);
12865 END IF;
12866 */
12867 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12868 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12869 p_message=>'if hierarchical_flag = ''Y'', then allow_circular_relationships must be ''N''. ' ||
12870 'x_return_status = ' || x_return_status,
12871 p_msg_level=>fnd_log.level_statement);
12872 END IF;
12873
12874 END IF;
12875
12876 ---------------------------------------------------------------
12877 -- validate combination of hierarchical_flag and direction_code
12878 ---------------------------------------------------------------
12879 -- needed only during creation since these columns cannot be updated
12880 IF p_create_update_flag = 'C' THEN
12881 -- if hierarchical_flag = 'Y', the direction_code must be 'P' or 'C'
12882 IF NVL(p_relationship_type_rec.hierarchical_flag, 'N') = 'Y' THEN
12883 IF p_relationship_type_rec.direction_code = 'N' THEN
12884 fnd_message.set_name('AR', 'HZ_API_VAL_DEP_FIELDS');
12885 fnd_message.set_token('COLUMN1', 'hierarchical_flag');
12886 fnd_message.set_token('VALUE1', 'Y(Yes)');
12887 fnd_message.set_token('COLUMN2', 'direction_code');
12888 fnd_message.set_token('VALUE2', 'P(Parent)/C(Child)');
12889 fnd_msg_pub.add;
12890 x_return_status := FND_API.G_RET_STS_ERROR;
12891 END IF;
12892 END IF;
12893 /*IF g_debug THEN
12894 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12895 'if hierarchical_flag = ''Y'', the direction_code must be ''P'' or ''C''. ' ||
12896 'x_return_status = ' || x_return_status, l_debug_prefix);
12897 END IF;
12898 */
12899 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12900 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12901 p_message=>'if hierarchical_flag = ''Y'', the direction_code must be ''P'' or ''C''. ' ||
12902 'x_return_status = ' || x_return_status,
12903 p_msg_level=>fnd_log.level_statement);
12904 END IF;
12905
12906 END IF;
12907
12908 -- check for duplicate role
12909
12910 IF p_create_update_flag = 'C' THEN
12911 BEGIN
12912 SELECT count(*)
12913 INTO l_count
12914 FROM HZ_RELATIONSHIP_TYPES
12915 WHERE ROLE = p_relationship_type_rec.forward_role
12916 OR ROLE = p_relationship_type_rec.backward_role;
12917 IF l_count > 0 THEN
12918 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
12919 fnd_message.set_token('COLUMN', 'role');
12920 fnd_msg_pub.add;
12921 x_return_status := fnd_api.g_ret_sts_error;
12922 END IF;
12923 END;
12924 END IF;
12925
12926 -- validate role/rel_code
12927
12928 IF p_create_update_flag = 'C' THEN
12929 IF ( p_relationship_type_rec.forward_role IS NOT NULL AND
12930 p_relationship_type_rec.forward_role <> fnd_api.g_miss_char) AND
12931 ( p_relationship_type_rec.backward_role IS NOT NULL AND
12932 p_relationship_type_rec.backward_role <> fnd_api.g_miss_char) THEN
12933 validate_rel_code(
12934 p_forward_rel_code =>p_relationship_type_rec.forward_rel_code,
12935 p_backward_rel_code =>p_relationship_type_rec.backward_rel_code,
12936 p_forward_role => p_relationship_type_rec.forward_role,
12937 p_backward_role => p_relationship_type_rec.backward_role,
12938 x_return_status => x_return_status);
12939 END IF;
12940 END IF;
12941
12942 -- validate lookup
12943 IF p_create_update_flag = 'C' THEN
12944 IF p_relationship_type_rec.forward_role IS NOT NULL THEN
12945 validate_lookup (
12946 p_column => 'role',
12947 p_lookup_type => 'HZ_RELATIONSHIP_ROLE',
12948 p_column_value => p_relationship_type_rec.forward_role,
12949 x_return_status => x_return_status);
12950 END IF;
12951 IF p_relationship_type_rec.backward_role IS NOT NULL THEN
12952 validate_lookup (
12953 p_column => 'role',
12954 p_lookup_type => 'HZ_RELATIONSHIP_ROLE',
12955 p_column_value => p_relationship_type_rec.backward_role,
12956 x_return_status => x_return_status);
12957 END IF;
12958 END IF;
12959
12960 ----------------------------------------------------------------------------
12961 -- validate combination of hierarchical_flag and allow_relate_to_self_flag
12962 ----------------------------------------------------------------------------
12963 -- needed only during creation since these columns cannot be updated
12964 IF p_create_update_flag = 'C' THEN
12965 -- if hierarchical_flag = 'Y', then allow_relate_to_self_flag must be 'N'
12966 IF NVL(p_relationship_type_rec.hierarchical_flag, 'N') = 'Y' THEN
12967 IF p_relationship_type_rec.allow_relate_to_self_flag = 'Y' THEN
12968 fnd_message.set_name('AR', 'HZ_API_VAL_DEP_FIELDS');
12969 fnd_message.set_token('COLUMN1', 'hierarchical_flag');
12970 fnd_message.set_token('VALUE1', 'Y(Yes)');
12971 fnd_message.set_token('COLUMN2', 'allow_relate_to_self_flag');
12972 fnd_message.set_token('VALUE2', 'N(No)');
12973 fnd_msg_pub.add;
12974 x_return_status := FND_API.G_RET_STS_ERROR;
12975 END IF;
12976 END IF;
12977 /*IF g_debug THEN
12978 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12979 'if hierarchical_flag = ''Y'', then allow_relate_to_self_flag must be ''N''. ' ||
12980 'x_return_status = ' || x_return_status, l_debug_prefix);
12981 END IF;
12982 */
12983 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
12984 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
12985 p_message=>'if hierarchical_flag = ''Y'', then allow_relate_to_self_flag must be ''N''. ' ||
12986 'x_return_status = ' || x_return_status,
12987 p_msg_level=>fnd_log.level_statement);
12988 END IF;
12989
12990 END IF;
12991
12992
12993 --------------------------------------------------------------------------
12994 -- validate combination of allow_circular_relationships and direction_code
12995 --------------------------------------------------------------------------
12996 -- neede only during creation since these columns cannot be updated
12997 IF p_create_update_flag = 'C' THEN
12998 -- if direction_code = 'N', the allow_circular_relationships must be 'Y'
12999 IF p_relationship_type_rec.direction_code = 'N' THEN
13000 IF NVL(p_relationship_type_rec.allow_circular_relationships, 'Y') = 'N' THEN
13001 fnd_message.set_name('AR', 'HZ_API_VAL_DEP_FIELDS');
13002 fnd_message.set_token('COLUMN1', 'direction_code');
13003 fnd_message.set_token('VALUE1', 'N(No)');
13004 fnd_message.set_token('COLUMN2', 'allow_circular_relationships');
13005 fnd_message.set_token('VALUE2', 'Y(Yes)');
13006 fnd_msg_pub.add;
13007 x_return_status := FND_API.G_RET_STS_ERROR;
13008 END IF;
13009 END IF;
13010 /*IF g_debug THEN
13011 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13012 'if hierarchical_flag = ''Y'', the direction_code must be ''P'' or ''C''. ' ||
13013 'x_return_status = ' || x_return_status, l_debug_prefix);
13014 END IF;
13015 */
13016 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13017 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13018 p_message=>'if hierarchical_flag = ''Y'', the direction_code must be ''P'' or ''C''. ' ||
13019 'x_return_status = ' || x_return_status,
13020 p_msg_level=>fnd_log.level_statement);
13021 END IF;
13022
13023 END IF;
13024
13025 /* THIS UNNECESSARY VALIDATION HAS BEEN COMMENTED AFTER DISCUSSION WITH
13026 SRANGARA AND RPITTS, THE CONCLUSION OF WHICH IS THAT
13027 NON_HIERARCHICAL RELATIONSHIPS DO NOT NEED ANY VALUE
13028 FOR MULTIPLE_PARENT_ALLOWED,SINCE EVEN A SINGLE PARENT
13029 DOES NOT MAKE SENSE FOR A NON_HIERARCHICAL RELATIONSHIP TYPE.
13030 THE do_relationship_type IN HZ_RELATIONSHIP_TYPE_V2PUB WHICH
13031 DEFAULTS THE VALUE OF THIS FLAG TO "Y" FOR NON_HIERARCHICAL
13032 REL TYPES SHOULD ALSO BE CHANGED IN THE FUTURE.
13033
13034 ----- VJN
13035 ------------------------------------------------------------------------
13036 -- validate combination of hierarchical_flag and multiple_parent_allowed
13037 ------------------------------------------------------------------------
13038 -- neede only during creation since these columns cannot be updated
13039 IF p_create_update_flag = 'C' THEN
13040 -- if hierarchical_flag = 'N', then multiple_parent_allowed must be 'Y'
13041 IF NVL(p_relationship_type_rec.hierarchical_flag, 'N') = 'N' THEN
13042 IF NVL(p_relationship_type_rec.multiple_parent_allowed, 'Y') = 'N' THEN
13043 fnd_message.set_name('AR', 'HZ_API_VAL_DEP_FIELDS');
13044 fnd_message.set_token('COLUMN1', 'hierarchical_flag');
13045 fnd_message.set_token('VALUE1', 'N(No)');
13046 fnd_message.set_token('COLUMN2', 'multiple_parent_allowed');
13047 fnd_message.set_token('VALUE2', 'Y(Yes)');
13048 fnd_msg_pub.add;
13049 x_return_status := FND_API.G_RET_STS_ERROR;
13050 END IF;
13051 END IF;
13052
13053 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13054 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13055 p_message=>'if hierarchical_flag = ''N'', the multiple_parent_allowed must be ''Y''. ' ||
13056 'x_return_status = ' || x_return_status,
13057 p_msg_level=>fnd_log.level_statement);
13058 END IF;
13059
13060 END IF;
13061
13062 */
13063
13064
13065 --------------------------------------------------------------------------------
13066 -- validate that all relationship type records with same relationship_type value
13067 -- have same values for hierarchical_flag
13068 --------------------------------------------------------------------------------
13069 -- needed only during creation since hierarchical_flag is not updatable
13070 IF p_create_update_flag = 'C' THEN
13071 BEGIN
13072 SELECT HIERARCHICAL_FLAG
13073 INTO l_hierarchical_flag
13074 FROM HZ_RELATIONSHIP_TYPES
13075 WHERE RELATIONSHIP_TYPE = p_relationship_type_rec.relationship_type
13076 AND ROWNUM = 1;
13077
13078 IF NVL(p_relationship_type_rec.hierarchical_flag, 'N')
13079 <> NVL(l_hierarchical_flag, 'N')
13080 and
13081 NVL(p_relationship_type_rec.hierarchical_flag, 'Y')
13082 <> NVL(l_hierarchical_flag, 'Y')
13083 THEN
13084 fnd_message.set_name('AR', 'HZ_DIFF_VALUE_NOT_ALLOWED');
13085 fnd_message.set_token('ENTITY', 'relationship type');
13086 fnd_message.set_token('COLUMN1', 'relationship_type');
13087 fnd_message.set_token('COLUMN2', 'hierarchical_flag');
13088 fnd_msg_pub.add;
13089 x_return_status := FND_API.G_RET_STS_ERROR;
13090 END IF;
13091
13092 EXCEPTION
13093 -- if no data found, then its fine since this is the first record
13094 WHEN NO_DATA_FOUND THEN
13095 NULL;
13096 END;
13097 /*IF g_debug THEN
13098 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13099 'all relationship type records with same relationship_type value must have same values for hierarchical_flag. ' ||
13100 'x_return_status = ' || x_return_status, l_debug_prefix);
13101 END IF;
13102 */
13103 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13104 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13105 p_message=>'all relationship type records with same relationship_type value must have same values for hierarchical_flag. ' ||
13106 'x_return_status = ' || x_return_status,
13107 p_msg_level=>fnd_log.level_statement);
13108 END IF;
13109
13110 END IF;
13111
13112 --------------------------------------------------------------------------------
13113 -- validate that all relationship type records with same relationship_type value
13114 -- have same values for allow_circular_relationships
13115 --------------------------------------------------------------------------------
13116 -- needed only during creation since allow_circular_relationships is not updatable
13117 IF p_create_update_flag = 'C' THEN
13118 BEGIN
13119 SELECT ALLOW_CIRCULAR_RELATIONSHIPS
13120 INTO l_allow_circular_relationships
13121 FROM HZ_RELATIONSHIP_TYPES
13122 WHERE RELATIONSHIP_TYPE = p_relationship_type_rec.relationship_type
13123 AND ROWNUM = 1;
13124
13125 IF NVL(p_relationship_type_rec.allow_circular_relationships, 'N') <> NVL(l_allow_circular_relationships, 'N')
13126 and
13127 NVL(p_relationship_type_rec.allow_circular_relationships, 'Y') <>
13128 NVL(l_allow_circular_relationships, 'Y')
13129 THEN
13130 fnd_message.set_name('AR', 'HZ_DIFF_VALUE_NOT_ALLOWED');
13131 fnd_message.set_token('ENTITY', 'relationship type');
13132 fnd_message.set_token('COLUMN1', 'relationship_type');
13133 fnd_message.set_token('COLUMN2', 'allow_circular_relationships');
13134 fnd_msg_pub.add;
13135 x_return_status := FND_API.G_RET_STS_ERROR;
13136 END IF;
13137
13138 EXCEPTION
13139 -- if no data found, then its fine since this is the first record
13140 WHEN NO_DATA_FOUND THEN
13141 NULL;
13142 END;
13143
13144 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13145 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13146 p_message=>'all relationship type records with same relationship_type value must have same values for'||
13147 ' allow_circular_relationships. ' ||
13148 'x_return_status = ' || x_return_status,
13149 p_msg_level=>fnd_log.level_statement);
13150 END IF;
13151
13152 END IF;
13153
13154 --------------------------------------------------------------------------------
13155 -- validate that all relationship type records with same relationship_type value
13156 -- have same values for multiple_parent_allowed
13157 --------------------------------------------------------------------------------
13158 -- needed only during creation since multiple_parent_allowed is not updatable
13159 IF p_create_update_flag = 'C' THEN
13160 BEGIN
13161 SELECT MULTIPLE_PARENT_ALLOWED
13162 INTO l_multiple_parent_allowed
13163 FROM HZ_RELATIONSHIP_TYPES
13164 WHERE RELATIONSHIP_TYPE = p_relationship_type_rec.relationship_type
13165 AND ROWNUM = 1;
13166
13167 IF NVL(p_relationship_type_rec.multiple_parent_allowed, 'N') <>
13168 NVL(l_multiple_parent_allowed, 'N')
13169 and
13170 NVL(p_relationship_type_rec.multiple_parent_allowed, 'Y') <>
13171 NVL(l_multiple_parent_allowed, 'Y')
13172 THEN
13173 fnd_message.set_name('AR', 'HZ_DIFF_VALUE_NOT_ALLOWED');
13174 fnd_message.set_token('ENTITY', 'relationship type');
13175 fnd_message.set_token('COLUMN1', 'relationship_type');
13176 fnd_message.set_token('COLUMN2', 'multiple_parent_allowed');
13177 fnd_msg_pub.add;
13178 x_return_status := FND_API.G_RET_STS_ERROR;
13179 END IF;
13180
13181 EXCEPTION
13182 -- if no data found, then its fine since this is the first record
13183 WHEN NO_DATA_FOUND THEN
13184 NULL;
13185 END;
13186 /*IF g_debug THEN
13187 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13188 'all relationship type records with same relationship_type value must have same values for multiple_parent_allowed. ' ||
13189 'x_return_status = ' || x_return_status, l_debug_prefix);
13190 END IF;
13191 */
13192 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13193 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13194 p_message=>'all relationship type records with same relationship_type value must have same values for multiple_parent_allowed. ' ||
13195 'x_return_status = ' || x_return_status,
13196 p_msg_level=>fnd_log.level_statement);
13197 END IF;
13198
13199 END IF;
13200
13201 -----------------------------------
13202 -- validate incl_unrelated_entities
13203 -----------------------------------
13204
13205 -- incl_unrelated_entities is lookup code in lookup type YES/NO
13206 validate_lookup (
13207 p_column => 'incl_unrelated_entities',
13208 p_lookup_type => 'YES/NO',
13209 p_column_value => p_relationship_type_rec.incl_unrelated_entities,
13210 x_return_status => x_return_status );
13211
13212 /*IF G_DEBUG THEN
13213 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13214 'incl_unrelated_entities in lookup YES/NO. ' ||
13215 'x_return_status = ' || x_return_status, l_debug_prefix );
13216 END IF;
13217 */
13218 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13219 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'incl_unrelated_entities in lookup YES/NO. ' ||
13220 'x_return_status = ' || x_return_status,
13221 p_msg_level=>fnd_log.level_statement);
13222 END IF;
13223
13224
13225 -----------------------------------
13226 -- validate multiple_parent_allowed
13227 -----------------------------------
13228
13229 -- multiple_parent_allowed is lookup code in lookup type YES/NO
13230 validate_lookup (
13231 p_column => 'multiple_parent_allowed',
13232 p_lookup_type => 'YES/NO',
13233 p_column_value => p_relationship_type_rec.multiple_parent_allowed,
13234 x_return_status => x_return_status );
13235
13236 /*IF G_DEBUG THEN
13237 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13238 'multiple_parent_allowed in lookup YES/NO. ' ||
13239 'x_return_status = ' || x_return_status, l_debug_prefix );
13240 END IF;
13241 */
13242 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13243 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'multiple_parent_allowed in lookup YES/NO. ' ||
13244 'x_return_status = ' || x_return_status,
13245 p_msg_level=>fnd_log.level_statement);
13246 END IF;
13247
13248
13249 -- multiple_parent_allowed is non-updateable
13250 IF p_create_update_flag = 'U' THEN
13251 validate_nonupdateable (
13252 p_column => 'multiple_parent_allowed',
13253 p_column_value => p_relationship_type_rec.multiple_parent_allowed,
13254 p_old_column_value => l_multiple_parent_allowed,
13255 x_return_status => x_return_status);
13256
13257 /*IF g_debug THEN
13258 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13259 'multiple_parent_allowed is non-updateable. ' ||
13260 'x_return_status = ' || x_return_status, l_debug_prefix);
13261 END IF;
13262 */
13263 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13264 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'multiple_parent_allowed is non-updateable. ' ||
13265 'x_return_status = ' || x_return_status,
13266 p_msg_level=>fnd_log.level_statement);
13267 END IF;
13268
13269
13270 END IF;
13271
13272 --------------------------------------
13273 -- validate created_by_module
13274 --------------------------------------
13275
13276 validate_created_by_module(
13277 p_create_update_flag => p_create_update_flag,
13278 p_created_by_module => p_relationship_type_rec.created_by_module,
13279 p_old_created_by_module => l_created_by_module,
13280 x_return_status => x_return_status);
13281
13282 --------------------------------------
13283 -- validate application_id
13284 --------------------------------------
13285
13286 validate_application_id(
13287 p_create_update_flag => p_create_update_flag,
13288 p_application_id => p_relationship_type_rec.application_id,
13289 p_old_application_id => l_application_id,
13290 x_return_status => x_return_status);
13291
13292 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
13293 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_relationship_type (-)',
13294 p_msg_level=>fnd_log.level_procedure);
13295 END IF;
13296
13297 --bug 3491584
13298 IF (p_create_update_flag = 'C') THEN
13299 IF((p_relationship_type_rec.forward_rel_code = p_relationship_type_rec.backward_rel_code)
13300 AND (p_relationship_type_rec.subject_type <> p_relationship_type_rec.object_type))
13301 THEN
13302 fnd_message.set_name('AR', 'HZ_API_RELTYPE_INVALID');
13303 fnd_msg_pub.add;
13304 x_return_status := fnd_api.g_ret_sts_error;
13305
13306 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13307 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13308 p_message=>'Same subject and object type because the relationship phrase pair has the same subject (forward) and object (backward) phrase. ' ||
13309 'x_return_status = ' || x_return_status,
13310 p_msg_level=>fnd_log.level_statement);
13311 END IF;
13312 END IF;
13313 END IF;
13314
13315 --disable_debug;
13316
13317 END validate_relationship_type;
13318
13319 /**
13320 * PROCEDURE validate_relationship
13321 *
13322 * DESCRIPTION
13323 * Validates relationship record. Checks for
13324 * uniqueness
13325 * lookup types
13326 * mandatory columns
13327 * non-updateable fields
13328 * foreign key validations
13329 * other validations
13330 *
13331 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
13332 *
13333 * ARGUMENTS
13334 * IN:
13335 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
13336 * p_relationship_rec Relationship record.
13337 * p_rowid Rowid of the record (used only in update mode).
13338 * IN/OUT:
13339 * x_return_status Return status after the call. The status can
13340 * be FND_API.G_RET_STS_SUCCESS (success),
13341 * fnd_api.g_ret_sts_error (error),
13342 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
13343 *
13344 * NOTES
13345 *
13346 * MODIFICATION HISTORY
13347 *
13348 * 07-23-2001 Indrajit Sen o Created.
13349 * 13-DEC-2001 Joe del Callar Bug 2145637: Modified to use the new
13350 * time-dependent date overlap check.
13351 */
13352
13353 PROCEDURE validate_relationship(
13354 p_create_update_flag IN VARCHAR2,
13355 p_relationship_rec IN hz_relationship_v2pub.relationship_rec_type,
13356 p_rowid IN ROWID ,
13357 x_return_status IN OUT NOCOPY VARCHAR2
13358 ) IS
13359 l_count NUMBER;
13360 l_subject_id NUMBER := p_relationship_rec.subject_id;
13361 l_object_id NUMBER := p_relationship_rec.object_id;
13362 l_relationship_type hz_relationships.relationship_type%TYPE := p_relationship_rec.relationship_type;
13363 l_relationship_code hz_relationships.relationship_code%TYPE := p_relationship_rec.relationship_code;
13364 l_subject_type hz_relationships.subject_type%TYPE := p_relationship_rec.subject_type;
13365 l_object_type hz_relationships.object_type%TYPE := p_relationship_rec.object_type;
13366 l_subject_table_name hz_relationships.subject_table_name%TYPE := p_relationship_rec.subject_table_name;
13367 l_object_table_name hz_relationships.object_table_name%TYPE := p_relationship_rec.object_table_name;
13368 l_party_id NUMBER;
13369 l_content_source_type hz_relationships.content_source_type%TYPE;
13370 l_start_date DATE := p_relationship_rec.start_date;
13371 l_end_date DATE := p_relationship_rec.end_date;
13372 l_in VARCHAR2(1);
13373 l_overlap VARCHAR2(1);
13374 l_created_by_module VARCHAR2(150);
13375 l_application_id NUMBER;
13376 l_status VARCHAR2(1);
13377 l_debug_prefix VARCHAR2(30) := '';
13378
13379 -- Bug 2197181: Added for mix-n-match
13380 db_actual_content_source hz_relationships.actual_content_source%TYPE;
13381
13382
13383 -- cursor to get all the relationship records...
13384 -- for given subject_id, object_id, relationship_code
13385 -- bug - 2528427, added relationship type to the where...
13386 -- clause so that time overlap is checked among records with...
13387 -- same relationship type, relationship code, subject id and object id
13388 CURSOR c1 (
13389 p_data_source VARCHAR2
13390 ) IS
13391 SELECT hr.start_date,
13392 hr.end_date,
13393 hr.relationship_id,
13394 hr.status
13395 FROM hz_relationships hr
13396 WHERE hr.subject_id = l_subject_id
13397 AND hr.object_id = l_object_id
13398 AND hr.subject_table_name = l_subject_table_name
13399 AND hr.subject_type = l_subject_type
13400 AND hr.object_table_name = l_object_table_name
13401 AND hr.object_type = l_object_type
13402 AND hr.relationship_code = l_relationship_code
13403 AND hr.relationship_type = l_relationship_type
13404 --AND hr.directional_flag = 'F'
13405 AND hr.status = 'A'
13406 AND hr.actual_content_source = p_data_source
13407 AND NVL(p_relationship_rec.relationship_id, fnd_api.g_miss_num) <> hr.relationship_id;
13408
13409 -- Bug 3294936 : Comment rownum = 1 so that the cursor picks all records
13410 -- with same relationship type between same subject and object.
13411
13412 -- AND ROWNUM = 1;
13413
13414
13415 r1 c1%ROWTYPE;
13416
13417 l_dummy VARCHAR2(1);
13418 l_count NUMBER;
13419 l_code VARCHAR2(30);
13420 BEGIN
13421 --enable_debug;
13422
13423 -- Debug info.
13424 /*IF g_debug THEN
13425 hz_utility_v2pub.debug ('validate_relationship (+)');
13426 END IF;
13427 */
13428 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
13429 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_relationship (+)',
13430 p_msg_level=>fnd_log.level_procedure);
13431 END IF;
13432
13433 -- select columns needed to be checked from table during update
13434 IF (p_create_update_flag = 'U') THEN
13435
13436 -- Bug 2197181: selecting actual_content_source for mix-n-match
13437
13438 SELECT subject_id,
13439 subject_type,
13440 subject_table_name,
13441 object_id,
13442 object_type,
13443 object_table_name,
13444 relationship_code,
13445 relationship_type,
13446 party_id,
13447 content_source_type,
13448 start_date,
13449 end_date,
13450 status,
13451 created_by_module,
13452 application_id,
13453 actual_content_source
13454 INTO l_subject_id,
13455 l_subject_type,
13456 l_subject_table_name,
13457 l_object_id,
13458 l_object_type,
13459 l_object_table_name,
13460 l_relationship_code,
13461 l_relationship_type,
13462 l_party_id,
13463 l_content_source_type,
13464 l_start_date,
13465 l_end_date,
13466 l_status,
13467 l_created_by_module,
13468 l_application_id,
13469 db_actual_content_source
13470 FROM hz_relationships
13471 WHERE ROWID = p_rowid;
13472 END IF;
13473
13474 -----------------------------
13475 -- validate relationship_type
13476 -----------------------------
13477
13478 -- relationship_type is mandatory
13479 validate_mandatory (
13480 p_create_update_flag => p_create_update_flag,
13481 p_column => 'relationship_type',
13482 p_column_value => p_relationship_rec.relationship_type,
13483 x_return_status => x_return_status);
13484
13485 /*IF g_debug THEN
13486 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'relationship_type is mandatory. ' ||
13487 'x_return_status = ' || x_return_status,
13488 l_debug_prefix);
13489 END IF;
13490 */
13491 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13492 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'relationship_type is mandatory. ' ||
13493 'x_return_status = ' || x_return_status,
13494 p_msg_level=>fnd_log.level_statement);
13495 END IF;
13496
13497 -- relationship_type is non-updateable
13498 IF p_create_update_flag = 'U' THEN
13499 validate_nonupdateable (
13500 p_column => 'relationship_type',
13501 p_column_value => p_relationship_rec.relationship_type,
13502 p_old_column_value => l_relationship_type,
13503 x_return_status => x_return_status
13504 );
13505
13506 /*IF g_debug THEN
13507 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'relationship_type is non-updateable. ' ||
13508 'x_return_status = ' || x_return_status,
13509 l_debug_prefix);
13510 END IF;
13511 */
13512 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13513 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'relationship_type is non-updateable. ' ||
13514 'x_return_status = ' || x_return_status,
13515 p_msg_level=>fnd_log.level_statement);
13516 END IF;
13517
13518 END IF;
13519
13520 -----------------------------
13521 -- validate relationship_code
13522 -----------------------------
13523
13524 -- relationship_code is mandatory
13525 validate_mandatory (
13526 p_create_update_flag => p_create_update_flag,
13527 p_column => 'relationship_code',
13528 p_column_value => p_relationship_rec.relationship_code,
13529 x_return_status => x_return_status
13530 );
13531
13532 /*IF g_debug THEN
13533 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'relationship_code is mandatory. ' ||
13534 'x_return_status = ' || x_return_status,
13535 l_debug_prefix);
13536 END IF;
13537 */
13538 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13539 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'relationship_code is mandatory. ' ||
13540 'x_return_status = ' || x_return_status,
13541 p_msg_level=>fnd_log.level_statement);
13542 END IF;
13543
13544 -- relationship_code is non-updateable
13545 IF p_create_update_flag = 'U' THEN
13546 validate_nonupdateable (
13547 p_column => 'relationship_code',
13548 p_column_value => p_relationship_rec.relationship_code,
13549 p_old_column_value => l_relationship_code,
13550 x_return_status => x_return_status
13551 );
13552
13553 /*IF g_debug THEN
13554 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'relationship_code is non-updateable. ' ||
13555 'x_return_status = ' || x_return_status,
13556 l_debug_prefix);
13557 END IF;
13558 */
13559 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13560 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'relationship_code is non-updateable. ' ||
13561 'x_return_status = ' || x_return_status,
13562 p_msg_level=>fnd_log.level_statement);
13563 END IF;
13564 END IF;
13565
13566 -- relationship_code is lookup code in lookup type PARTY_RELATIONS_TYPE
13567 IF p_create_update_flag = 'C' THEN
13568 validate_lookup (
13569 p_column => 'relationship_code',
13570 p_lookup_type => 'PARTY_RELATIONS_TYPE',
13571 p_column_value => p_relationship_rec.relationship_code,
13572 x_return_status => x_return_status
13573 );
13574
13575 /*IF g_debug THEN
13576 hz_utility_v2pub.debug (
13577 'relationship_code is lookup code in lookup type PARTY_RELATIONS_TYPE. ' ||
13578 'x_return_status = ' || x_return_status,
13579 l_debug_prefix);
13580 END IF;
13581 */
13582 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13583 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13584 p_message=>'relationship_code is lookup code in lookup type PARTY_RELATIONS_TYPE. ' ||
13585 'x_return_status = ' || x_return_status,
13586 p_msg_level=>fnd_log.level_statement);
13587 END IF;
13588 END IF;
13589
13590 ----------------------
13591 -- validate subject_id
13592 ----------------------
13593 /****Logical APIs - validation not required****/
13594 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
13595 -- subject_id is mandatory
13596 validate_mandatory (
13597 p_create_update_flag => p_create_update_flag,
13598 p_column => 'subject_id',
13599 p_column_value => p_relationship_rec.subject_id,
13600 x_return_status => x_return_status);
13601
13602 /*IF g_debug THEN
13603 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'subject_id is mandatory. ' ||
13604 'x_return_status = ' || x_return_status,
13605 l_debug_prefix);
13606 END IF;
13607 */
13608 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13609 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_id is mandatory. ' ||
13610 'x_return_status = ' || x_return_status,
13611 p_msg_level=>fnd_log.level_statement);
13612 END IF;
13613
13614 -- subject_id is non-updateable
13615 IF p_create_update_flag = 'U' THEN
13616 validate_nonupdateable (
13617 p_column => 'subject_id',
13618 p_column_value => p_relationship_rec.subject_id,
13619 p_old_column_value => l_subject_id,
13620 x_return_status => x_return_status
13621 );
13622
13623 /*IF g_debug THEN
13624 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'subject_id is non-updateable. ' ||
13625 'x_return_status = ' || x_return_status,
13626 l_debug_prefix);
13627 END IF;
13628 */
13629 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13630 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_id is non-updateable. ' ||
13631 'x_return_status = ' || x_return_status,
13632 p_msg_level=>fnd_log.level_statement);
13633 END IF;
13634
13635 END IF;
13636 END IF;
13637
13638 -- check whether subject_id belongs to subject_type
13639 IF p_relationship_rec.subject_id IS NOT NULL
13640 AND p_relationship_rec.subject_id <> fnd_api.g_miss_num
13641 AND p_create_update_flag = 'C'
13642 THEN
13643 l_in := hz_relationship_type_v2pub.in_instance_sets (
13644 p_relationship_rec.subject_type,
13645 p_relationship_rec.subject_id
13646 );
13647
13648 IF l_in = 'N' THEN
13649 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
13650 fnd_message.set_token('FK', 'subject_id');
13651 fnd_message.set_token('COLUMN',
13652 lower(p_relationship_rec.subject_type)||' id');
13653 fnd_message.set_token('TABLE', p_relationship_rec.subject_table_name);
13654 fnd_msg_pub.add;
13655 x_return_status := fnd_api.g_ret_sts_error;
13656 END IF;
13657
13658 /*IF g_debug THEN
13659 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'subject_id belongs to subject_type. ' ||
13660 'x_return_status = ' || x_return_status,
13661 l_debug_prefix);
13662 END IF;
13663 */
13664 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13665 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_id belongs to subject_type. ' ||
13666 'x_return_status = ' || x_return_status,
13667 p_msg_level=>fnd_log.level_statement);
13668 END IF;
13669
13670 END IF;
13671
13672 ------------------------------
13673 -- validate subject_table_name
13674 ------------------------------
13675 /****Logical APIs - validation not required****/
13676 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
13677 -- subject_table_name is mandatory
13678 validate_mandatory (
13679 p_create_update_flag => p_create_update_flag,
13680 p_column => 'subject_table_name',
13681 p_column_value => p_relationship_rec.subject_table_name,
13682 x_return_status => x_return_status);
13683
13684 /*IF g_debug THEN
13685 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'subject_table_name is mandatory. ' ||
13686 'x_return_status = ' || x_return_status,
13687 l_debug_prefix);
13688 END IF;
13689 */
13690 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13691 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_table_name is mandatory. ' ||
13692 'x_return_status = ' || x_return_status,
13693 p_msg_level=>fnd_log.level_statement);
13694 END IF;
13695
13696 -- subject_table_name is non-updateable
13697 IF p_create_update_flag = 'U' THEN
13698 validate_nonupdateable (
13699 p_column => 'subject_table_name',
13700 p_column_value => p_relationship_rec.subject_table_name,
13701 p_old_column_value => l_subject_table_name,
13702 x_return_status => x_return_status);
13703
13704 /*IF g_debug THEN
13705 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'subject_table_name is non-updateable. ' ||
13706 'x_return_status = ' || x_return_status,
13707 l_debug_prefix);
13708 END IF;
13709 */
13710 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13711 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_table_name is non-updateable. ' ||
13712 'x_return_status = ' || x_return_status,
13713 p_msg_level=>fnd_log.level_statement);
13714 END IF;
13715
13716 END IF;
13717
13718 -- subject_table_name has foreign key fnd_objects.obj_name
13719 -- do not need to check during update because subject_table_name is
13720 -- non-updateable.
13721 IF p_create_update_flag = 'C'
13722 AND p_relationship_rec.subject_table_name IS NOT NULL
13723 AND p_relationship_rec.subject_table_name <> fnd_api.g_miss_char
13724 THEN
13725 BEGIN
13726 SELECT 'Y'
13727 INTO l_dummy
13728 FROM fnd_objects fo
13729 WHERE fo.obj_name = p_relationship_rec.subject_table_name;
13730 EXCEPTION
13731 WHEN NO_DATA_FOUND THEN
13732 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
13733 fnd_message.set_token('FK', 'subject_table_name');
13734 fnd_message.set_token('COLUMN', 'obj_name');
13735 fnd_message.set_token('TABLE', 'fnd_objects');
13736 fnd_msg_pub.add;
13737 x_return_status := fnd_api.g_ret_sts_error;
13738 END;
13739
13740 /*IF g_debug THEN
13741 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13742 'subject_table_name has foreign key fnd_objects.obj_name. ' ||
13743 'x_return_status = ' || x_return_status,
13744 l_debug_prefix
13745 );
13746 END IF;
13747 */
13748 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13749 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13750 p_message=>'subject_table_name has foreign key fnd_objects.obj_name. ' ||
13751 'x_return_status = ' || x_return_status,
13752 p_msg_level=>fnd_log.level_statement);
13753 END IF;
13754
13755 END IF;
13756 END IF;
13757
13758 ------------------------
13759 -- validate subject_type
13760 ------------------------
13761 /****Logical APIs - validation not required****/
13762 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
13763 -- subject_type is mandatory
13764 validate_mandatory (
13765 p_create_update_flag => p_create_update_flag,
13766 p_column => 'subject_type',
13767 p_column_value => p_relationship_rec.subject_type,
13768 x_return_status => x_return_status
13769 );
13770
13771 /*IF g_debug THEN
13772 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'subject_type is mandatory. ' ||
13773 'x_return_status = ' || x_return_status,
13774 l_debug_prefix);
13775 END IF;
13776 */
13777 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13778 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_type is mandatory. ' ||
13779 'x_return_status = ' || x_return_status,
13780 p_msg_level=>fnd_log.level_statement);
13781 END IF;
13782
13783 -- subject_type is non-updateable
13784 IF p_create_update_flag = 'U' THEN
13785 validate_nonupdateable (
13786 p_column => 'subject_type',
13787 p_column_value => p_relationship_rec.subject_type,
13788 p_old_column_value => l_subject_type,
13789 x_return_status => x_return_status);
13790
13791 /*IF g_debug THEN
13792 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'subject_type is non-updateable. ' ||
13793 'x_return_status = ' || x_return_status,
13794 l_debug_prefix);
13795 END IF;
13796 */
13797 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13798 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'subject_type is non-updateable. ' ||
13799 'x_return_status = ' || x_return_status,
13800 p_msg_level=>fnd_log.level_statement);
13801 END IF;
13802 END IF;
13803
13804 -- subject_type has foreign key fnd_object_instance_sets.instance_set_name
13805 -- do not need to check during update because subject_type is
13806 -- non-updateable.
13807 IF p_create_update_flag = 'C'
13808 AND p_relationship_rec.subject_type IS NOT NULL
13809 AND p_relationship_rec.subject_type <> fnd_api.g_miss_char
13810 THEN
13811 BEGIN
13812 SELECT 'Y'
13813 INTO l_dummy
13814 FROM fnd_object_instance_sets fois
13815 WHERE fois.instance_set_name = p_relationship_rec.subject_type;
13816 EXCEPTION
13817 WHEN NO_DATA_FOUND THEN
13818 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
13819 fnd_message.set_token('FK', 'subject_type');
13820 fnd_message.set_token('COLUMN', 'instance_set_name');
13821 fnd_message.set_token('TABLE', 'fnd_object_instance_sets');
13822 fnd_msg_pub.add;
13823 x_return_status := fnd_api.g_ret_sts_error;
13824 END;
13825
13826 /*IF g_debug THEN
13827 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13828 'subject_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
13829 'x_return_status = ' || x_return_status,
13830 l_debug_prefix
13831 );
13832 END IF;
13833 */
13834 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13835 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13836 p_message=>'subject_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
13837 'x_return_status = ' || x_return_status,
13838 p_msg_level=>fnd_log.level_statement);
13839 END IF;
13840
13841 END IF;
13842 END IF;
13843
13844 ---------------------
13845 -- validate object_id
13846 ---------------------
13847 /****Logical APIs - validation not required****/
13848 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
13849 -- object_id is mandatory
13850 validate_mandatory (
13851 p_create_update_flag => p_create_update_flag,
13852 p_column => 'object_id',
13853 p_column_value => p_relationship_rec.object_id,
13854 x_return_status => x_return_status
13855 );
13856
13857 /*IF g_debug THEN
13858 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'object_id is mandatory. ' ||
13859 'x_return_status = ' || x_return_status,
13860 l_debug_prefix);
13861 END IF;
13862 */
13863 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13864 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_id is mandatory. ' ||
13865 'x_return_status = ' || x_return_status,
13866 p_msg_level=>fnd_log.level_statement);
13867 END IF;
13868
13869 -- object_id is non-updateable
13870 IF p_create_update_flag = 'U' THEN
13871 validate_nonupdateable (
13872 p_column => 'object_id',
13873 p_column_value => p_relationship_rec.object_id,
13874 p_old_column_value => l_object_id,
13875 x_return_status => x_return_status);
13876
13877 /*IF g_debug THEN
13878 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'object_id is non-updateable. ' ||
13879 'x_return_status = ' || x_return_status,
13880 l_debug_prefix);
13881 END IF;
13882 */
13883 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13884 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_id is non-updateable. ' ||
13885 'x_return_status = ' || x_return_status,
13886 p_msg_level=>fnd_log.level_statement);
13887 END IF;
13888
13889 END IF;
13890 END IF;
13891
13892 -- check whether object_id belongs to object_type
13893 IF p_relationship_rec.object_id IS NOT NULL
13894 AND p_relationship_rec.object_id <> fnd_api.g_miss_num
13895 AND p_create_update_flag = 'C'
13896 THEN
13897 l_in := hz_relationship_type_v2pub.in_instance_sets (
13898 p_relationship_rec.object_type,
13899 p_relationship_rec.object_id
13900 );
13901
13902 IF l_in = 'N' THEN
13903 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
13904 fnd_message.set_token('FK', 'object_id');
13905 fnd_message.set_token('COLUMN',
13906 LOWER(p_relationship_rec.object_type)||' id');
13907 fnd_message.set_token('TABLE', p_relationship_rec.object_table_name);
13908 fnd_msg_pub.add;
13909 x_return_status := fnd_api.g_ret_sts_error;
13910 END IF;
13911
13912 /*IF g_debug THEN
13913 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'object_id belongs to object_type. ' ||
13914 'x_return_status = ' || x_return_status,
13915 l_debug_prefix);
13916 END IF;
13917 */
13918 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13919 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_id belongs to object_type. ' ||
13920 'x_return_status = ' || x_return_status,
13921 p_msg_level=>fnd_log.level_statement);
13922 END IF;
13923
13924 END IF;
13925
13926 -----------------------------
13927 -- validate object_table_name
13928 -----------------------------
13929 /****Logical APIs - validation not required****/
13930 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
13931 -- object_table_name is mandatory
13932 validate_mandatory (
13933 p_create_update_flag => p_create_update_flag,
13934 p_column => 'object_table_name',
13935 p_column_value => p_relationship_rec.object_table_name,
13936 x_return_status => x_return_status
13937 );
13938
13939 /*IF g_debug THEN
13940 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'object_table_name is mandatory. ' ||
13941 'x_return_status = ' || x_return_status,
13942 l_debug_prefix);
13943 END IF;
13944 */
13945 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13946 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_table_name is mandatory. ' ||
13947 'x_return_status = ' || x_return_status,
13948 p_msg_level=>fnd_log.level_statement);
13949 END IF;
13950
13951 -- object_table_name is non-updateable
13952 IF p_create_update_flag = 'U' THEN
13953 validate_nonupdateable (
13954 p_column => 'object_table_name',
13955 p_column_value => p_relationship_rec.object_table_name,
13956 p_old_column_value => l_object_table_name,
13957 x_return_status => x_return_status
13958 );
13959
13960 /*IF g_debug THEN
13961 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'object_table_name is non-updateable. ' ||
13962 'x_return_status = ' || x_return_status,
13963 l_debug_prefix);
13964 END IF;
13965 */
13966 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
13967 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_table_name is non-updateable. ' ||
13968 'x_return_status = ' || x_return_status,
13969 p_msg_level=>fnd_log.level_statement);
13970 END IF;
13971
13972 END IF;
13973
13974 -- object_table_name has foreign key fnd_objects.obj_name
13975 -- do not need to check during update because object_table_name is
13976 -- non-updateable.
13977 IF p_create_update_flag = 'C'
13978 AND p_relationship_rec.object_table_name IS NOT NULL
13979 AND p_relationship_rec.object_table_name <> fnd_api.g_miss_char
13980 THEN
13981 BEGIN
13982 SELECT 'Y'
13983 INTO l_dummy
13984 FROM fnd_objects fo
13985 WHERE fo.obj_name = p_relationship_rec.object_table_name;
13986 EXCEPTION
13987 WHEN NO_DATA_FOUND THEN
13988 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
13989 fnd_message.set_token('FK', 'object_table_name');
13990 fnd_message.set_token('COLUMN', 'obj_name');
13991 fnd_message.set_token('TABLE', 'fnd_objects');
13992 fnd_msg_pub.add;
13993 x_return_status := fnd_api.g_ret_sts_error;
13994 END;
13995
13996 /*IF g_debug THEN
13997 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
13998 'object_table_name has foreign key fnd_objects.obj_name. ' ||
13999 'x_return_status = ' || x_return_status,
14000 l_debug_prefix
14001 );
14002 END IF;
14003 */
14004 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14005 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14006 p_message=>'object_table_name has foreign key fnd_objects.obj_name. ' ||
14007 'x_return_status = ' || x_return_status,
14008 p_msg_level=>fnd_log.level_statement);
14009 END IF;
14010
14011 END IF;
14012 END IF;
14013
14014 -----------------------
14015 -- validate object_type
14016 -----------------------
14017 /****Logical APIs - validation not required****/
14018 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
14019 -- object_type is mandatory
14020 validate_mandatory (
14021 p_create_update_flag => p_create_update_flag,
14022 p_column => 'object_type',
14023 p_column_value => p_relationship_rec.object_type,
14024 x_return_status => x_return_status
14025 );
14026
14027 /*IF g_debug THEN
14028 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'object_type is mandatory. ' ||
14029 'x_return_status = ' || x_return_status,
14030 l_debug_prefix);
14031 END IF;
14032 */
14033 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14034 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_type is mandatory. ' ||
14035 'x_return_status = ' || x_return_status,
14036 p_msg_level=>fnd_log.level_statement);
14037 END IF;
14038
14039 -- object_type is non-updateable
14040 IF p_create_update_flag = 'U' THEN
14041 validate_nonupdateable (
14042 p_column => 'object_type',
14043 p_column_value => p_relationship_rec.object_type,
14044 p_old_column_value => l_object_type,
14045 x_return_status => x_return_status
14046 );
14047
14048 /*IF g_debug THEN
14049 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'object_type is non-updateable. ' ||
14050 'x_return_status = ' || x_return_status,
14051 l_debug_prefix);
14052 END IF;
14053 */
14054 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14055 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'object_type is non-updateable. ' ||
14056 'x_return_status = ' || x_return_status,
14057 p_msg_level=>fnd_log.level_statement);
14058 END IF;
14059
14060 END IF;
14061
14062 -- object_type has foreign key fnd_object_instance_sets.instance_set_name
14063 -- do not need to check during update because object_type is
14064 -- non-updateable.
14065 IF p_create_update_flag = 'C'
14066 AND p_relationship_rec.object_type IS NOT NULL
14067 AND p_relationship_rec.object_type <> fnd_api.g_miss_char
14068 THEN
14069 BEGIN
14070 SELECT 'Y'
14071 INTO l_dummy
14072 FROM fnd_object_instance_sets fois
14073 WHERE fois.instance_set_name = p_relationship_rec.object_type;
14074 EXCEPTION
14075 WHEN NO_DATA_FOUND THEN
14076 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
14077 fnd_message.set_token('FK', 'object_type');
14078 fnd_message.set_token('COLUMN', 'instance_set_name');
14079 fnd_message.set_token('TABLE', 'fnd_object_instance_sets');
14080 fnd_msg_pub.add;
14081 x_return_status := fnd_api.g_ret_sts_error;
14082 END;
14083
14084 /*IF g_debug THEN
14085 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14086 'object_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
14087 'x_return_status = ' || x_return_status,
14088 l_debug_prefix
14089 );
14090 END IF;
14091 */
14092 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14093 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14094 p_message=>'object_type has foreign key fnd_object_instance_sets.instance_set_name. ' ||
14095 'x_return_status = ' || x_return_status,
14096 p_msg_level=>fnd_log.level_statement);
14097 END IF;
14098
14099 END IF;
14100 END IF;
14101
14102 ----------------------
14103 -- validate start_date
14104 ----------------------
14105 /* The start_date is defaulted in table handler for bug # 2260303
14106 Hence removed the mandatory check for start_date
14107
14108 -- start_date is mandatory
14109 validate_mandatory (
14110 p_create_update_flag => p_create_update_flag,
14111 p_column => 'start_date',
14112 p_column_value => p_relationship_rec.start_date,
14113 x_return_status => x_return_status
14114 );
14115
14116 IF g_debug THEN
14117 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'start_date is mandatory. ' ||
14118 'x_return_status = ' || x_return_status,
14119 l_debug_prefix);
14120 END IF;
14121 */
14122 -- start_date cannot be set to null during update
14123
14124 IF p_create_update_flag = 'U' THEN
14125 validate_cannot_update_to_null (
14126 p_column => 'start_date',
14127 p_column_value => p_relationship_rec.start_date,
14128 x_return_status => x_return_status
14129 );
14130
14131 /*IF g_debug THEN
14132 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14133 'start_date cannot be set to null during update. ' ||
14134 'x_return_status = ' || x_return_status,
14135 l_debug_prefix
14136 );
14137 END IF;
14138 */
14139 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14140 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14141 p_message=>'start_date cannot be set to null during update. ' ||
14142 'x_return_status = ' || x_return_status,
14143 p_msg_level=>fnd_log.level_statement);
14144 END IF;
14145
14146 END IF;
14147
14148 --------------------
14149 -- validate party_id
14150 --------------------
14151
14152 -- party_id is non-updateable
14153 IF p_create_update_flag = 'U' THEN
14154 validate_nonupdateable (
14155 p_column => 'party_id',
14156 p_column_value => p_relationship_rec.party_rec.party_id,
14157 p_old_column_value => l_party_id,
14158 x_return_status => x_return_status);
14159
14160 /*IF g_debug THEN
14161 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,'party_id is non-updateable. ' ||
14162 'x_return_status = ' || x_return_status,
14163 l_debug_prefix);
14164 END IF;
14165 */
14166 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14167 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable. ' ||
14168 'x_return_status = ' || x_return_status,
14169 p_msg_level=>fnd_log.level_statement);
14170 END IF;
14171
14172 END IF;
14173
14174 ------------------
14175 -- validate status
14176 ------------------
14177
14178 -- status cannot be set to null during update
14179 IF p_create_update_flag = 'U' THEN
14180 validate_cannot_update_to_null (
14181 p_column => 'status',
14182 p_column_value => p_relationship_rec.status,
14183 x_return_status => x_return_status
14184 );
14185
14186 /*IF g_debug THEN
14187 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14188 'status cannot be set to null during update. ' ||
14189 'x_return_status = ' || x_return_status,
14190 l_debug_prefix);
14191 END IF;
14192 */
14193 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14194 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'status cannot be set to null during update. ' ||
14195 'x_return_status = ' || x_return_status,
14196 p_msg_level=>fnd_log.level_statement);
14197 END IF;
14198
14199 END IF;
14200
14201 /****Logical APIs - validation not required****/
14202 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
14203 -- status is lookup code in lookup type REGISTRY_STATUS
14204 IF p_relationship_rec.status IS NOT NULL
14205 AND p_relationship_rec.status <> fnd_api.g_miss_char
14206 AND (p_create_update_flag = 'C'
14207 OR (p_create_update_flag = 'U'
14208 AND p_relationship_rec.status <> NVL(l_status,
14209 fnd_api.g_miss_char)))
14210 THEN
14211 validate_lookup (
14212 p_column => 'status',
14213 p_lookup_type => 'REGISTRY_STATUS',
14214 p_column_value => p_relationship_rec.status,
14215 x_return_status => x_return_status
14216 );
14217
14218 /*IF g_debug THEN
14219 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14220 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
14221 'x_return_status = ' || x_return_status,
14222 l_debug_prefix);
14223 END IF;
14224 */
14225 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14226 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14227 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
14228 'x_return_status = ' || x_return_status,
14229 p_msg_level=>fnd_log.level_statement);
14230 END IF;
14231
14232 END IF;
14233 END IF;
14234
14235 /* Bug 2197181: removed content_source_type validation as this
14236 column has been obsoleted for mix-n-match project.
14237
14238 ----------------------------------------------
14239 -- validate content_source_type
14240 ----------------------------------------------
14241
14242 -- do not need to chack content_source_type is mandatory because
14243 -- we default content_source_type to
14244 -- hz_party_v2pub.g_miss_content_source_type in the table handler.
14245
14246 -- content_source_type is non-updateable
14247 IF p_create_update_flag = 'U' THEN
14248 validate_nonupdateable (
14249 p_column => 'content_source_type',
14250 p_column_value => p_relationship_rec.content_source_type,
14251 p_old_column_value => l_content_source_type,
14252 x_return_status => x_return_status
14253 );
14254
14255
14256 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14257 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'content_source_type is non-updateable. ' ||
14258 'x_return_status = ' || x_return_status,
14259 p_msg_level=>fnd_log.level_statement);
14260 END IF;
14261
14262 END IF;
14263
14264 -- content_source_type is lookup code in lookup type CONTENT_SOURCE_TYPE
14265 validate_lookup (
14266 p_column => 'content_source_type',
14267 p_lookup_type => 'CONTENT_SOURCE_TYPE',
14268 p_column_value => p_relationship_rec.content_source_type,
14269 x_return_status => x_return_status
14270 );
14271
14272 IF g_debug THEN
14273 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14274 'content_source_type is lookup code in lookup type CONTENT_SOURCE_TYPE. ' ||
14275 'x_return_status = ' || x_return_status,
14276 l_debug_prefix
14277 );
14278 END IF;
14279 */
14280
14281 -- Bug 2197181: Added validation for mix-n-match
14282
14283 ----------------------------------------
14284 -- validate content_source_type and actual_content_source_type
14285 ----------------------------------------
14286
14287 HZ_MIXNM_UTILITY.ValidateContentSource (
14288 p_api_version => 'V2',
14289 p_create_update_flag => p_create_update_flag,
14290 p_check_update_privilege => 'N',
14291 p_content_source_type => p_relationship_rec.content_source_type,
14292 p_old_content_source_type => l_content_source_type,
14293 p_actual_content_source => p_relationship_rec.actual_content_source,
14294 p_old_actual_content_source => db_actual_content_source,
14295 p_entity_name => 'HZ_RELATIONSHIPS',
14296 x_return_status => x_return_status );
14297
14298 ----------------------------------
14299 -- start_date, end_date validation
14300 ----------------------------------
14301
14302 -- end_date must be null or greater than start date
14303 IF (p_create_update_flag = 'C') THEN
14304 IF p_relationship_rec.end_date IS NOT NULL AND
14305 p_relationship_rec.end_date <> fnd_api.g_miss_date AND
14306 p_relationship_rec.end_date < p_relationship_rec.start_date
14307 THEN
14308 fnd_message.set_name('AR', 'HZ_API_START_DATE_GREATER');
14309 fnd_msg_pub.add;
14310 x_return_status := fnd_api.g_ret_sts_error;
14311 END IF;
14312 ELSIF (p_create_update_flag = 'U') THEN
14313 -- old start_date, end_date has been selected from table
14314 -- and put into l_start_date, l_end_date
14315
14316 IF p_relationship_rec.start_date <> fnd_api.g_miss_date THEN
14317 l_start_date := p_relationship_rec.start_date;
14318 END IF;
14319
14320 IF p_relationship_rec.end_date IS NULL
14321 OR p_relationship_rec.end_date <> fnd_api.g_miss_date
14322 THEN
14323 l_end_date := p_relationship_rec.end_date;
14324 END IF;
14325
14326 IF l_end_date IS NOT NULL
14327 AND l_end_date < l_start_date
14328 THEN
14329 fnd_message.set_name('AR', 'HZ_API_START_DATE_GREATER');
14330 fnd_msg_pub.add;
14331 x_return_status := fnd_api.g_ret_sts_error;
14332 END IF;
14333 END IF;
14334
14335 /*IF g_debug THEN
14336 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14337 'end_date must be null or greater than start date. ' ||
14338 'x_return_status = ' || x_return_status,
14339 l_debug_prefix);
14340 END IF;
14341 */
14342 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14343 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'end_date must be null or greater than start date. ' ||
14344 'x_return_status = ' || x_return_status,
14345 p_msg_level=>fnd_log.level_statement);
14346 END IF;
14347
14348 ------------------------
14349 -- validate date overlap
14350 ------------------------
14351
14352 IF p_create_update_flag = 'C' THEN
14353 db_actual_content_source := p_relationship_rec.actual_content_source;
14354 END IF;
14355
14356 -- there should not be any date overlap between two identical relationships
14357
14358 -- Bug 3294936 : check for all records in the cursor for overlap
14359
14360 -- OPEN c1(db_actual_content_source);
14361
14362 For r1 in c1(db_actual_content_source)
14363 LOOP
14364 -- FETCH c1 into r1;
14365 -- IF c1%FOUND THEN
14366 l_overlap := hz_common_pub.is_time_overlap(
14367 NVL(p_relationship_rec.start_date,sysdate),
14368 p_relationship_rec.end_date,
14369 r1.start_date,
14370 r1.end_date
14371 );
14372 IF l_overlap = 'Y' THEN
14373 fnd_message.set_name('AR', 'HZ_RELATIONSHIP_DATE_OVERLAP');
14374 fnd_msg_pub.add;
14375 x_return_status := fnd_api.g_ret_sts_error;
14376 -- Bug 3294936 : Add exit to come out of loop
14377 EXIT;
14378 END IF;
14379 END LOOP;
14380 -- END IF;
14381 -- CLOSE c1;
14382
14383 /*IF g_debug THEN
14384 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14385 'there should not be any date overlap between two identical relationships. ' ||
14386 'x_return_status = ' || x_return_status, l_debug_prefix);
14387 END IF;
14388 */
14389 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
14390 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
14391 p_message=>'there should not be any date overlap between two identical relationships. ' ||
14392 'x_return_status = ' || x_return_status,
14393 p_msg_level=>fnd_log.level_statement);
14394 END IF;
14395
14396 --------------------------------------
14397 -- validate created_by_module
14398 --------------------------------------
14399
14400 validate_created_by_module(
14401 p_create_update_flag => p_create_update_flag,
14402 p_created_by_module => p_relationship_rec.created_by_module,
14403 p_old_created_by_module => l_created_by_module,
14404 x_return_status => x_return_status);
14405
14406 --------------------------------------
14407 -- validate application_id
14408 --------------------------------------
14409
14410 validate_application_id(
14411 p_create_update_flag => p_create_update_flag,
14412 p_application_id => p_relationship_rec.application_id,
14413 p_old_application_id => l_application_id,
14414 x_return_status => x_return_status);
14415
14416 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14417 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_relationship (-)',
14418 p_msg_level=>fnd_log.level_procedure);
14419 END IF;
14420
14421 END validate_relationship;
14422
14423 --
14424 -- DESCRIPTION
14425 -- Validates a contact point record (minus EFTs). Kept for backward
14426 -- compatibility.
14427 --
14428 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
14429 --
14430 -- ARGUMENTS
14431 -- IN:
14432 -- p_create_update_flag Create update flag. 'C' = create. 'U' = update.
14433 -- p_contact_point_rec Contact point record.
14434 -- p_edi_rec EDI record.
14435 -- p_email_rec Email record.
14436 -- p_phone_rec Phone record.
14437 -- p_telex_rec Telex record.
14438 -- p_web_rec Web record.
14439 -- p_rowid Rowid of the record (used only in update mode).
14440 -- IN/OUT:
14441 -- x_return_status Return status after the call. The status can
14442 -- be FND_API.G_RET_STS_SUCCESS (success),
14443 -- fnd_api.g_ret_sts_error (error),
14444 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
14445 --
14446 -- NOTES
14447 --
14448 -- MODIFICATION HISTORY
14449 --
14450 -- 07-23-2001 Jianying Huang o Created.
14451 -- 20-NOV-2001 Joe del Callar Bug 2116225: Modified to accept EFT
14452 -- records for bank consolidation.
14453 -- Bug 2117973: Modified to comply with
14454 -- PL/SQL coding standards.
14455 -- 05-DEC-2001 Joe del Callar Bug 2136283: Modified to use generic
14456 -- validation procedure for improved
14457 -- backward compatibility.
14458 --
14459 PROCEDURE validate_contact_point (
14460 p_create_update_flag IN VARCHAR2,
14461 p_contact_point_rec IN hz_contact_point_v2pub.contact_point_rec_type,
14462 p_edi_rec IN hz_contact_point_v2pub.edi_rec_type := hz_contact_point_v2pub.g_miss_edi_rec,
14463 p_email_rec IN hz_contact_point_v2pub.email_rec_type := hz_contact_point_v2pub.g_miss_email_rec,
14464 p_phone_rec IN hz_contact_point_v2pub.phone_rec_type := hz_contact_point_v2pub.g_miss_phone_rec,
14465 p_telex_rec IN hz_contact_point_v2pub.telex_rec_type := hz_contact_point_v2pub.g_miss_telex_rec,
14466 p_web_rec IN hz_contact_point_v2pub.web_rec_type := hz_contact_point_v2pub.g_miss_web_rec,
14467 p_rowid IN ROWID,
14468 x_return_status IN OUT NOCOPY VARCHAR2
14469 ) IS
14470 l_debug_prefix VARCHAR2(30) := '';
14471 BEGIN
14472 -- Check if API is called in debug mode. If yes, enable debug.
14473 --enable_debug;
14474
14475 -- Debug info.
14476 /*IF g_debug THEN
14477 hz_utility_v2pub.debug ('validate_contact_point (+)');
14478 END IF;
14479 */
14480 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14481 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_contact_point (+)',
14482 p_msg_level=>fnd_log.level_procedure);
14483 END IF;
14484
14485
14486 validate_contact_point_main(
14487 p_create_update_flag => p_create_update_flag,
14488 p_contact_point_rec => p_contact_point_rec,
14489 p_edi_rec => p_edi_rec,
14490 p_email_rec => p_email_rec,
14491 p_phone_rec => p_phone_rec,
14492 p_telex_rec => p_telex_rec,
14493 p_web_rec => p_web_rec,
14494 p_rowid => p_rowid,
14495 x_return_status => x_return_status
14496 );
14497
14498 -- Debug info.
14499 /*IF g_debug THEN
14500 hz_utility_v2pub.debug ('validate_contact_point (-)');
14501 END IF;
14502 */
14503 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14504 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_contact_point (-)',
14505 p_msg_level=>fnd_log.level_procedure);
14506 END IF;
14507
14508
14509 -- Check if API is called in debug mode. If yes, disable debug.
14510 --disable_debug;
14511 END validate_contact_point;
14512
14513 --
14514 -- DESCRIPTION
14515 -- Validates an EDI contact point record.
14516 --
14517 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
14518 --
14519 -- ARGUMENTS
14520 -- IN:
14521 -- p_create_update_flag Create update flag. 'C' = create. 'U' = update.
14522 -- p_contact_point_rec Contact point record.
14523 -- p_edi_rec EDI record.
14524 -- p_rowid Rowid of the record (used only in update mode).
14525 -- IN/OUT:
14526 -- x_return_status Return status after the call. The status can
14527 -- be FND_API.G_RET_STS_SUCCESS (success),
14528 -- fnd_api.g_ret_sts_error (error),
14529 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
14530 --
14531 -- NOTES
14532 --
14533 -- MODIFICATION HISTORY
14534 -- 05-DEC-2001 Joe del Callar Bug 2136283: Created to improve
14535 -- backward compatibility.
14536 --
14537 PROCEDURE validate_edi_contact_point (
14538 p_create_update_flag IN VARCHAR2,
14539 p_contact_point_rec IN hz_contact_point_v2pub.contact_point_rec_type,
14540 p_edi_rec IN hz_contact_point_v2pub.edi_rec_type := hz_contact_point_v2pub.g_miss_edi_rec,
14541 p_rowid IN ROWID,
14542 x_return_status IN OUT NOCOPY VARCHAR2
14543 ) IS
14544 l_debug_prefix VARCHAR2(30) := '';
14545 BEGIN
14546 -- Check if API is called in debug mode. If yes, enable debug.
14547 --enable_debug;
14548
14549 -- Debug info.
14550 /*IF g_debug THEN
14551 hz_utility_v2pub.debug ('validate_edi_contact_point (+)');
14552 END IF;
14553 */
14554 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14555 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_edi_contact_point (+)',
14556 p_msg_level=>fnd_log.level_procedure);
14557 END IF;
14558
14559
14560 validate_contact_point_main(
14561 p_create_update_flag => p_create_update_flag,
14562 p_contact_point_rec => p_contact_point_rec,
14563 p_edi_rec => p_edi_rec,
14564 p_rowid => p_rowid,
14565 x_return_status => x_return_status
14566 );
14567
14568 -- Debug info.
14569 /*IF g_debug THEN
14570 hz_utility_v2pub.debug ('validate_edi_contact_point (-)');
14571 END IF;
14572 */
14573 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14574 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_edi_contact_point (-)',
14575 p_msg_level=>fnd_log.level_procedure);
14576 END IF;
14577
14578
14579 -- Check if API is called in debug mode. If yes, disable debug.
14580 --disable_debug;
14581 END validate_edi_contact_point;
14582
14583 --
14584 -- DESCRIPTION
14585 -- Validates an EFT contact point record.
14586 --
14587 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
14588 --
14589 -- ARGUMENTS
14590 -- IN:
14591 -- p_create_update_flag Create update flag. 'C' = create. 'U' = update.
14592 -- p_contact_point_rec Contact point record.
14593 -- p_eft_rec EFT record.
14594 -- p_rowid Rowid of the record (used only in update mode).
14595 -- IN/OUT:
14596 -- x_return_status Return status after the call. The status can
14597 -- be FND_API.G_RET_STS_SUCCESS (success),
14598 -- fnd_api.g_ret_sts_error (error),
14599 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
14600 --
14601 -- NOTES
14602 --
14603 -- MODIFICATION HISTORY
14604 -- 05-DEC-2001 Joe del Callar Bug 2136283: Created to improve
14605 -- backward compatibility.
14606 --
14607 PROCEDURE validate_eft_contact_point (
14608 p_create_update_flag IN VARCHAR2,
14609 p_contact_point_rec IN hz_contact_point_v2pub.contact_point_rec_type,
14610 p_eft_rec IN hz_contact_point_v2pub.eft_rec_type := hz_contact_point_v2pub.g_miss_eft_rec,
14611 p_rowid IN ROWID,
14612 x_return_status IN OUT NOCOPY VARCHAR2
14613 ) IS
14614 l_debug_prefix VARCHAR2(30) := '';
14615 BEGIN
14616 -- Check if API is called in debug mode. If yes, enable debug.
14617 --enable_debug;
14618
14619 -- Debug info.
14620 /*IF g_debug THEN
14621 hz_utility_v2pub.debug ('validate_eft_contact_point (+)');
14622 END IF;
14623 */
14624 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14625 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_eft_contact_point (+)',
14626 p_msg_level=>fnd_log.level_procedure);
14627 END IF;
14628
14629
14630 validate_contact_point_main(
14631 p_create_update_flag => p_create_update_flag,
14632 p_contact_point_rec => p_contact_point_rec,
14633 p_eft_rec => p_eft_rec,
14634 p_rowid => p_rowid,
14635 x_return_status => x_return_status
14636 );
14637
14638 -- Debug info.
14639 /*IF g_debug THEN
14640 hz_utility_v2pub.debug ('validate_eft_contact_point (-)');
14641 END IF;
14642 */
14643 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14644 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_eft_contact_point (-)',
14645 p_msg_level=>fnd_log.level_procedure);
14646 END IF;
14647
14648
14649 -- Check if API is called in debug mode. If yes, disable debug.
14650 --disable_debug;
14651 END validate_eft_contact_point;
14652
14653 --
14654 -- DESCRIPTION
14655 -- Validates an Web contact point record.
14656 --
14657 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
14658 --
14659 -- ARGUMENTS
14660 -- IN:
14661 -- p_create_update_flag Create update flag. 'C' = create. 'U' = update.
14662 -- p_contact_point_rec Contact point record.
14663 -- p_web_rec Web record.
14664 -- p_rowid Rowid of the record (used only in update mode).
14665 -- IN/OUT:
14666 -- x_return_status Return status after the call. The status can
14667 -- be FND_API.G_RET_STS_SUCCESS (success),
14668 -- fnd_api.g_ret_sts_error (error),
14669 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
14670 --
14671 -- NOTES
14672 --
14673 -- MODIFICATION HISTORY
14674 -- 05-DEC-2001 Joe del Callar Bug 2136283: Created to improve
14675 -- backward compatibility.
14676 --
14677 PROCEDURE validate_web_contact_point (
14678 p_create_update_flag IN VARCHAR2,
14679 p_contact_point_rec IN hz_contact_point_v2pub.contact_point_rec_type,
14680 p_web_rec IN hz_contact_point_v2pub.web_rec_type := hz_contact_point_v2pub.g_miss_web_rec,
14681 p_rowid IN ROWID,
14682 x_return_status IN OUT NOCOPY VARCHAR2
14683 ) IS
14684 l_debug_prefix VARCHAR2(30) := '';
14685 BEGIN
14686 -- Check if API is called in debug mode. If yes, enable debug.
14687 --enable_debug;
14688
14689 -- Debug info.
14690 /*IF g_debug THEN
14691 hz_utility_v2pub.debug ('validate_web_contact_point (+)');
14692 END IF;
14693 */
14694 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14695 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_web_contact_point (+)',
14696 p_msg_level=>fnd_log.level_procedure);
14697 END IF;
14698
14699
14700 validate_contact_point_main(
14701 p_create_update_flag => p_create_update_flag,
14702 p_contact_point_rec => p_contact_point_rec,
14703 p_web_rec => p_web_rec,
14704 p_rowid => p_rowid,
14705 x_return_status => x_return_status
14706 );
14707
14708 -- Debug info.
14709 /*IF g_debug THEN
14710 hz_utility_v2pub.debug ('validate_web_contact_point (-)');
14711 END IF;
14712 */
14713
14714
14715 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14716 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_web_contact_point (-)',
14717 p_msg_level=>fnd_log.level_procedure);
14718 END IF;
14719
14720 -- Check if API is called in debug mode. If yes, disable debug.
14721 --disable_debug;
14722 END validate_web_contact_point;
14723
14724 --
14725 -- DESCRIPTION
14726 -- Validates an Phone contact point record.
14727 --
14728 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
14729 --
14730 -- ARGUMENTS
14731 -- IN:
14732 -- p_create_update_flag Create update flag. 'C' = create. 'U' = update.
14733 -- p_contact_point_rec Contact point record.
14734 -- p_phone_rec Phone record.
14735 -- p_rowid Rowid of the record (used only in update mode).
14736 -- IN/OUT:
14737 -- x_return_status Return status after the call. The status can
14738 -- be FND_API.G_RET_STS_SUCCESS (success),
14739 -- fnd_api.g_ret_sts_error (error),
14740 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
14741 --
14742 -- NOTES
14743 --
14744 -- MODIFICATION HISTORY
14745 -- 05-DEC-2001 Joe del Callar Bug 2136283: Created to improve
14746 -- backward compatibility.
14747 --
14748 PROCEDURE validate_phone_contact_point (
14749 p_create_update_flag IN VARCHAR2,
14750 p_contact_point_rec IN hz_contact_point_v2pub.contact_point_rec_type,
14751 p_phone_rec IN hz_contact_point_v2pub.phone_rec_type := hz_contact_point_v2pub.g_miss_phone_rec,
14752 p_rowid IN ROWID,
14753 x_return_status IN OUT NOCOPY VARCHAR2
14754 ) IS
14755 l_debug_prefix VARCHAR2(30) := '';
14756 BEGIN
14757 -- Check if API is called in debug mode. If yes, enable debug.
14758 --enable_debug;
14759
14760 -- Debug info.
14761
14762 /*IF g_debug THEN
14763 hz_utility_v2pub.debug ('validate_phone_contact_point (+)');
14764 END IF;
14765 */
14766 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14767 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_phone_contact_point (+)',
14768 p_msg_level=>fnd_log.level_procedure);
14769 END IF;
14770
14771
14772 validate_contact_point_main(
14773 p_create_update_flag => p_create_update_flag,
14774 p_contact_point_rec => p_contact_point_rec,
14775 p_phone_rec => p_phone_rec,
14776 p_rowid => p_rowid,
14777 x_return_status => x_return_status
14778 );
14779
14780 -- Debug info.
14781 /*IF g_debug THEN
14782 hz_utility_v2pub.debug ('validate_phone_contact_point (-)');
14783 END IF;
14784 */
14785 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14786 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_phone_contact_point (-)',
14787 p_msg_level=>fnd_log.level_procedure);
14788 END IF;
14789
14790 -- Check if API is called in debug mode. If yes, disable debug.
14791 --disable_debug;
14792 END validate_phone_contact_point;
14793
14794 --
14795 -- DESCRIPTION
14796 -- Validates an Telex contact point record.
14797 --
14798 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
14799 --
14800 -- ARGUMENTS
14801 -- IN:
14802 -- p_create_update_flag Create update flag. 'C' = create. 'U' = update.
14803 -- p_contact_point_rec Contact point record.
14804 -- p_telex_rec Telex record.
14805 -- p_rowid Rowid of the record (used only in update mode).
14806 -- IN/OUT:
14807 -- x_return_status Return status after the call. The status can
14808 -- be FND_API.G_RET_STS_SUCCESS (success),
14809 -- fnd_api.g_ret_sts_error (error),
14810 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
14811 --
14812 -- NOTES
14813 --
14814 -- MODIFICATION HISTORY
14815 -- 05-DEC-2001 Joe del Callar Bug 2136283: Created to improve
14816 -- backward compatibility.
14817 --
14818 PROCEDURE validate_telex_contact_point (
14819 p_create_update_flag IN VARCHAR2,
14820 p_contact_point_rec IN hz_contact_point_v2pub.contact_point_rec_type,
14821 p_telex_rec IN hz_contact_point_v2pub.telex_rec_type := hz_contact_point_v2pub.g_miss_telex_rec,
14822 p_rowid IN ROWID,
14823 x_return_status IN OUT NOCOPY VARCHAR2
14824 ) IS
14825 l_debug_prefix VARCHAR2(30) := '';
14826 BEGIN
14827 -- Check if API is called in debug mode. If yes, enable debug.
14828 --enable_debug;
14829
14830 -- Debug info.
14831 /*IF g_debug THEN
14832 hz_utility_v2pub.debug ('validate_telex_contact_point (+)');
14833 END IF;
14834 */
14835 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14836 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_telex_contact_point (+)',
14837 p_msg_level=>fnd_log.level_procedure);
14838 END IF;
14839
14840
14841 validate_contact_point_main(
14842 p_create_update_flag => p_create_update_flag,
14843 p_contact_point_rec => p_contact_point_rec,
14844 p_telex_rec => p_telex_rec,
14845 p_rowid => p_rowid,
14846 x_return_status => x_return_status
14847 );
14848
14849 -- Debug info.
14850 /*IF g_debug THEN
14851 hz_utility_v2pub.debug ('validate_telex_contact_point (-)');
14852 END IF;
14853 */
14854 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14855 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_telex_contact_point (-)',
14856 p_msg_level=>fnd_log.level_procedure);
14857 END IF;
14858
14859
14860 -- Check if API is called in debug mode. If yes, disable debug.
14861 --disable_debug;
14862 END validate_telex_contact_point;
14863
14864 --
14865 -- DESCRIPTION
14866 -- Validates an Email contact point record.
14867 --
14868 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
14869 --
14870 -- ARGUMENTS
14871 -- IN:
14872 -- p_create_update_flag Create update flag. 'C' = create. 'U' = update.
14873 -- p_contact_point_rec Contact point record.
14874 -- p_email_rec Email record.
14875 -- p_rowid Rowid of the record (used only in update mode).
14876 -- IN/OUT:
14877 -- x_return_status Return status after the call. The status can
14878 -- be FND_API.G_RET_STS_SUCCESS (success),
14879 -- fnd_api.g_ret_sts_error (error),
14880 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
14881 --
14882 -- NOTES
14883 --
14884 -- MODIFICATION HISTORY
14885 -- 05-DEC-2001 Joe del Callar Bug 2136283: Created to improve
14886 -- backward compatibility.
14887 --
14888 PROCEDURE validate_email_contact_point (
14889 p_create_update_flag IN VARCHAR2,
14890 p_contact_point_rec IN hz_contact_point_v2pub.contact_point_rec_type,
14891 p_email_rec IN hz_contact_point_v2pub.email_rec_type := hz_contact_point_v2pub.g_miss_email_rec,
14892 p_rowid IN ROWID,
14893 x_return_status IN OUT NOCOPY VARCHAR2
14894 ) IS
14895 l_debug_prefix VARCHAR2(30) := '';
14896 BEGIN
14897 -- Check if API is called in debug mode. If yes, enable debug.
14898 --enable_debug;
14899
14900 -- Debug info.
14901 /*IF g_debug THEN
14902 hz_utility_v2pub.debug ('validate_email_contact_point (+)');
14903 END IF;
14904 */
14905 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14906 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_email_contact_point (+)',
14907 p_msg_level=>fnd_log.level_procedure);
14908 END IF;
14909
14910
14911 validate_contact_point_main(
14912 p_create_update_flag => p_create_update_flag,
14913 p_contact_point_rec => p_contact_point_rec,
14914 p_email_rec => p_email_rec,
14915 p_rowid => p_rowid,
14916 x_return_status => x_return_status
14917 );
14918
14919 -- Debug info.
14920 /*IF g_debug THEN
14921 hz_utility_v2pub.debug ('validate_email_contact_point (-)');
14922 END IF;
14923 */
14924 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14925 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_email_contact_point (-)',
14926 p_msg_level=>fnd_log.level_procedure);
14927 END IF;
14928
14929
14930 -- Check if API is called in debug mode. If yes, disable debug.
14931 --disable_debug;
14932 END validate_email_contact_point;
14933
14934 PROCEDURE validate_org_nonsupport_column (
14935 p_create_update_flag IN VARCHAR2,
14936 p_organization_rec IN HZ_PARTY_V2PUB.ORGANIZATION_REC_TYPE,
14937 x_return_status IN OUT NOCOPY VARCHAR2
14938 ) IS
14939 l_debug_prefix VARCHAR2(30) := '';
14940 BEGIN
14941 -- Debug info.
14942 /* IF G_DEBUG THEN
14943 HZ_UTILITY_V2PUB.debug ( 'validate_org_nonsupport_column (+)' );
14944 END IF;
14945 */
14946 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
14947 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_org_nonsupport_column (+)',
14948 p_msg_level=>fnd_log.level_procedure);
14949 END IF;
14950
14951
14952 IF ( p_create_update_flag = 'C' AND
14953 p_organization_rec.avg_high_credit IS NOT NULL AND
14954 p_organization_rec.avg_high_credit <> FND_API.G_MISS_NUM )
14955 OR
14956 ( p_create_update_flag = 'U' AND
14957 ( p_organization_rec.avg_high_credit = FND_API.G_MISS_NUM OR
14958 p_organization_rec.avg_high_credit IS NOT NULL
14959 ) )
14960 THEN
14961 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
14962 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'avg_high_credit' );
14963 FND_MSG_PUB.ADD;
14964 x_return_status := FND_API.G_RET_STS_ERROR;
14965 END IF;
14966
14967 IF ( p_create_update_flag = 'C' AND
14968 p_organization_rec.credit_score IS NOT NULL AND
14969 p_organization_rec.credit_score <> FND_API.G_MISS_CHAR )
14970 OR
14971 ( p_create_update_flag = 'U' AND
14972 ( p_organization_rec.credit_score = FND_API.G_MISS_CHAR OR
14973 p_organization_rec.credit_score IS NOT NULL
14974 ) )
14975 THEN
14976 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
14977 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score' );
14978 FND_MSG_PUB.ADD;
14979 x_return_status := FND_API.G_RET_STS_ERROR;
14980 END IF;
14981
14982 IF ( p_create_update_flag = 'C' AND
14983 p_organization_rec.credit_score_age IS NOT NULL AND
14984 p_organization_rec.credit_score_age <> FND_API.G_MISS_NUM )
14985 OR
14986 ( p_create_update_flag = 'U' AND
14987 ( p_organization_rec.credit_score_age = FND_API.G_MISS_NUM OR
14988 p_organization_rec.credit_score_age IS NOT NULL
14989 ) )
14990 THEN
14991 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
14992 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_age' );
14993 FND_MSG_PUB.ADD;
14994 x_return_status := FND_API.G_RET_STS_ERROR;
14995 END IF;
14996
14997 IF ( p_create_update_flag = 'C' AND
14998 p_organization_rec.credit_score_class IS NOT NULL AND
14999 p_organization_rec.credit_score_class <> FND_API.G_MISS_NUM )
15000 OR
15001 ( p_create_update_flag = 'U' AND
15002 ( p_organization_rec.credit_score_class = FND_API.G_MISS_NUM OR
15003 p_organization_rec.credit_score_class IS NOT NULL
15004 ) )
15005 THEN
15006 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15007 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_class' );
15008 FND_MSG_PUB.ADD;
15009 x_return_status := FND_API.G_RET_STS_ERROR;
15010 END IF;
15011
15012 IF ( p_create_update_flag = 'C' AND
15013 p_organization_rec.credit_score_commentary IS NOT NULL AND
15014 p_organization_rec.credit_score_commentary <> FND_API.G_MISS_CHAR )
15015 OR
15016 ( p_create_update_flag = 'U' AND
15017 ( p_organization_rec.credit_score_commentary = FND_API.G_MISS_CHAR OR
15018 p_organization_rec.credit_score_commentary IS NOT NULL
15019 ) )
15020 THEN
15021 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15022 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary' );
15023 FND_MSG_PUB.ADD;
15024 x_return_status := FND_API.G_RET_STS_ERROR;
15025 END IF;
15026
15027 IF ( p_create_update_flag = 'C' AND
15028 p_organization_rec.credit_score_commentary2 IS NOT NULL AND
15029 p_organization_rec.credit_score_commentary2 <> FND_API.G_MISS_CHAR )
15030 OR
15031 ( p_create_update_flag = 'U' AND
15032 ( p_organization_rec.credit_score_commentary2 = FND_API.G_MISS_CHAR OR
15033 p_organization_rec.credit_score_commentary2 IS NOT NULL
15034 ) )
15035 THEN
15036 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15037 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary2' );
15038 FND_MSG_PUB.ADD;
15039 x_return_status := FND_API.G_RET_STS_ERROR;
15040 END IF;
15041
15042 IF ( p_create_update_flag = 'C' AND
15043 p_organization_rec.credit_score_commentary3 IS NOT NULL AND
15044 p_organization_rec.credit_score_commentary3 <> FND_API.G_MISS_CHAR )
15045 OR
15046 ( p_create_update_flag = 'U' AND
15047 ( p_organization_rec.credit_score_commentary3 = FND_API.G_MISS_CHAR OR
15048 p_organization_rec.credit_score_commentary3 IS NOT NULL
15049 ) )
15050 THEN
15051 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15052 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary3' );
15053 FND_MSG_PUB.ADD;
15054 x_return_status := FND_API.G_RET_STS_ERROR;
15055 END IF;
15056
15057 IF ( p_create_update_flag = 'C' AND
15058 p_organization_rec.credit_score_commentary4 IS NOT NULL AND
15059 p_organization_rec.credit_score_commentary4 <> FND_API.G_MISS_CHAR )
15060 OR
15061 ( p_create_update_flag = 'U' AND
15062 ( p_organization_rec.credit_score_commentary4 = FND_API.G_MISS_CHAR OR
15063 p_organization_rec.credit_score_commentary4 IS NOT NULL
15064 ) )
15065 THEN
15066 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15067 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary4' );
15068 FND_MSG_PUB.ADD;
15069 x_return_status := FND_API.G_RET_STS_ERROR;
15070 END IF;
15071
15072 IF ( p_create_update_flag = 'C' AND
15073 p_organization_rec.credit_score_commentary5 IS NOT NULL AND
15074 p_organization_rec.credit_score_commentary5 <> FND_API.G_MISS_CHAR )
15075 OR
15076 ( p_create_update_flag = 'U' AND
15077 ( p_organization_rec.credit_score_commentary5 = FND_API.G_MISS_CHAR OR
15078 p_organization_rec.credit_score_commentary5 IS NOT NULL
15079 ) )
15080 THEN
15081 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15082 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary5' );
15083 FND_MSG_PUB.ADD;
15084 x_return_status := FND_API.G_RET_STS_ERROR;
15085 END IF;
15086
15087 IF ( p_create_update_flag = 'C' AND
15088 p_organization_rec.credit_score_commentary6 IS NOT NULL AND
15089 p_organization_rec.credit_score_commentary6 <> FND_API.G_MISS_CHAR )
15090 OR
15091 ( p_create_update_flag = 'U' AND
15092 ( p_organization_rec.credit_score_commentary6 = FND_API.G_MISS_CHAR OR
15093 p_organization_rec.credit_score_commentary6 IS NOT NULL
15094 ) )
15095 THEN
15096 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15097 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary6' );
15098 FND_MSG_PUB.ADD;
15099 x_return_status := FND_API.G_RET_STS_ERROR;
15100 END IF;
15101
15102 IF ( p_create_update_flag = 'C' AND
15103 p_organization_rec.credit_score_commentary7 IS NOT NULL AND
15104 p_organization_rec.credit_score_commentary7 <> FND_API.G_MISS_CHAR )
15105 OR
15106 ( p_create_update_flag = 'U' AND
15107 ( p_organization_rec.credit_score_commentary7 = FND_API.G_MISS_CHAR OR
15108 p_organization_rec.credit_score_commentary7 IS NOT NULL
15109 ) )
15110 THEN
15111 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15112 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary7' );
15113 FND_MSG_PUB.ADD;
15114 x_return_status := FND_API.G_RET_STS_ERROR;
15115 END IF;
15116
15117 IF ( p_create_update_flag = 'C' AND
15118 p_organization_rec.credit_score_commentary8 IS NOT NULL AND
15119 p_organization_rec.credit_score_commentary8 <> FND_API.G_MISS_CHAR )
15120 OR
15121 ( p_create_update_flag = 'U' AND
15122 ( p_organization_rec.credit_score_commentary8 = FND_API.G_MISS_CHAR OR
15123 p_organization_rec.credit_score_commentary8 IS NOT NULL
15124 ) )
15125 THEN
15126 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15127 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary8' );
15128 FND_MSG_PUB.ADD;
15129 x_return_status := FND_API.G_RET_STS_ERROR;
15130 END IF;
15131
15132 IF ( p_create_update_flag = 'C' AND
15133 p_organization_rec.credit_score_commentary9 IS NOT NULL AND
15134 p_organization_rec.credit_score_commentary9 <> FND_API.G_MISS_CHAR )
15135 OR
15136 ( p_create_update_flag = 'U' AND
15137 ( p_organization_rec.credit_score_commentary9 = FND_API.G_MISS_CHAR OR
15138 p_organization_rec.credit_score_commentary9 IS NOT NULL
15139 ) )
15140 THEN
15141 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15142 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary9' );
15143 FND_MSG_PUB.ADD;
15144 x_return_status := FND_API.G_RET_STS_ERROR;
15145 END IF;
15146
15147 IF ( p_create_update_flag = 'C' AND
15148 p_organization_rec.credit_score_commentary10 IS NOT NULL AND
15149 p_organization_rec.credit_score_commentary10 <> FND_API.G_MISS_CHAR )
15150 OR
15151 ( p_create_update_flag = 'U' AND
15152 ( p_organization_rec.credit_score_commentary10 = FND_API.G_MISS_CHAR OR
15153 p_organization_rec.credit_score_commentary10 IS NOT NULL
15154 ) )
15155 THEN
15156 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15157 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_commentary10' );
15158 FND_MSG_PUB.ADD;
15159 x_return_status := FND_API.G_RET_STS_ERROR;
15160 END IF;
15161
15162 IF ( p_create_update_flag = 'C' AND
15163 p_organization_rec.credit_score_date IS NOT NULL AND
15164 p_organization_rec.credit_score_date <> FND_API.G_MISS_DATE )
15165 OR
15166 ( p_create_update_flag = 'U' AND
15167 ( p_organization_rec.credit_score_date = FND_API.G_MISS_DATE OR
15168 p_organization_rec.credit_score_date IS NOT NULL
15169 ) )
15170 THEN
15171 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15172 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_date' );
15173 FND_MSG_PUB.ADD;
15174 x_return_status := FND_API.G_RET_STS_ERROR;
15175 END IF;
15176
15177 IF ( p_create_update_flag = 'C' AND
15178 p_organization_rec.credit_score_incd_default IS NOT NULL AND
15179 p_organization_rec.credit_score_incd_default <> FND_API.G_MISS_NUM )
15180 OR
15181 ( p_create_update_flag = 'U' AND
15182 ( p_organization_rec.credit_score_incd_default = FND_API.G_MISS_NUM OR
15183 p_organization_rec.credit_score_incd_default IS NOT NULL
15184 ) )
15185 THEN
15186 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15187 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_incd_default' );
15188 FND_MSG_PUB.ADD;
15189 x_return_status := FND_API.G_RET_STS_ERROR;
15190 END IF;
15191
15192 IF ( p_create_update_flag = 'C' AND
15193 p_organization_rec.credit_score_natl_percentile IS NOT NULL AND
15194 p_organization_rec.credit_score_natl_percentile <> FND_API.G_MISS_NUM)
15195 OR
15196 ( p_create_update_flag = 'U' AND
15197 ( p_organization_rec.credit_score_natl_percentile = FND_API.G_MISS_NUM OR
15198 p_organization_rec.credit_score_natl_percentile IS NOT NULL
15199 ) )
15200 THEN
15201 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15202 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'credit_score_natl_percentile' );
15203 FND_MSG_PUB.ADD;
15204 x_return_status := FND_API.G_RET_STS_ERROR;
15205 END IF;
15206
15207 IF ( p_create_update_flag = 'C' AND
15208 p_organization_rec.db_rating IS NOT NULL AND
15209 p_organization_rec.db_rating <> FND_API.G_MISS_CHAR )
15210 OR
15211 ( p_create_update_flag = 'U' AND
15212 ( p_organization_rec.db_rating = FND_API.G_MISS_CHAR OR
15213 p_organization_rec.db_rating IS NOT NULL
15214 ) )
15215 THEN
15216 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15217 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'db_rating' );
15218 FND_MSG_PUB.ADD;
15219 x_return_status := FND_API.G_RET_STS_ERROR;
15220 END IF;
15221
15222 IF ( p_create_update_flag = 'C' AND
15223 p_organization_rec.debarment_ind IS NOT NULL AND
15224 p_organization_rec.debarment_ind <> FND_API.G_MISS_CHAR )
15225 OR
15226 ( p_create_update_flag = 'U' AND
15227 ( p_organization_rec.debarment_ind = FND_API.G_MISS_CHAR OR
15228 p_organization_rec.debarment_ind IS NOT NULL
15229 ) )
15230 THEN
15231 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15232 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'debarment_ind' );
15233 FND_MSG_PUB.ADD;
15234 x_return_status := FND_API.G_RET_STS_ERROR;
15235 END IF;
15236
15237 IF ( p_create_update_flag = 'C' AND
15238 p_organization_rec.debarments_count IS NOT NULL AND
15239 p_organization_rec.debarments_count <> FND_API.G_MISS_NUM )
15240 OR
15241 ( p_create_update_flag = 'U' AND
15242 ( p_organization_rec.debarments_count = FND_API.G_MISS_NUM OR
15243 p_organization_rec.debarments_count IS NOT NULL
15244 ) )
15245 THEN
15246 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15247 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'debarments_count' );
15248 FND_MSG_PUB.ADD;
15249 x_return_status := FND_API.G_RET_STS_ERROR;
15250 END IF;
15251
15252 IF ( p_create_update_flag = 'C' AND
15253 p_organization_rec.debarments_date IS NOT NULL AND
15254 p_organization_rec.debarments_date <> FND_API.G_MISS_DATE )
15255 OR
15256 ( p_create_update_flag = 'U' AND
15257 ( p_organization_rec.debarments_date = FND_API.G_MISS_DATE OR
15258 p_organization_rec.debarments_date IS NOT NULL
15259 ) )
15260 THEN
15261 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15262 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'debarments_date' );
15263 FND_MSG_PUB.ADD;
15264 x_return_status := FND_API.G_RET_STS_ERROR;
15265 END IF;
15266
15267 IF ( p_create_update_flag = 'C' AND
15268 p_organization_rec.high_credit IS NOT NULL AND
15269 p_organization_rec.high_credit <> FND_API.G_MISS_NUM )
15270 OR
15271 ( p_create_update_flag = 'U' AND
15272 ( p_organization_rec.high_credit = FND_API.G_MISS_NUM OR
15273 p_organization_rec.high_credit IS NOT NULL
15274 ) )
15275 THEN
15276 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15277 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'high_credit' );
15278 FND_MSG_PUB.ADD;
15279 x_return_status := FND_API.G_RET_STS_ERROR;
15280 END IF;
15281
15282 IF ( p_create_update_flag = 'C' AND
15283 p_organization_rec.maximum_credit_currency_code IS NOT NULL AND
15284 p_organization_rec.maximum_credit_currency_code <> FND_API.G_MISS_CHAR )
15285 OR
15286 ( p_create_update_flag = 'U' AND
15287 ( p_organization_rec.maximum_credit_currency_code = FND_API.G_MISS_CHAR OR
15288 p_organization_rec.maximum_credit_currency_code IS NOT NULL
15289 ) )
15290 THEN
15291 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15292 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'maximum_credit_currency_code' );
15293 FND_MSG_PUB.ADD;
15294 x_return_status := FND_API.G_RET_STS_ERROR;
15295 END IF;
15296
15297 IF ( p_create_update_flag = 'C' AND
15298 p_organization_rec.maximum_credit_recommendation IS NOT NULL AND
15299 p_organization_rec.maximum_credit_recommendation <> FND_API.G_MISS_NUM)
15300 OR
15301 ( p_create_update_flag = 'U' AND
15302 ( p_organization_rec.maximum_credit_recommendation = FND_API.G_MISS_NUM OR
15303 p_organization_rec.maximum_credit_recommendation IS NOT NULL
15304 ) )
15305 THEN
15306 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15307 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'maximum_credit_recommendation' );
15308 FND_MSG_PUB.ADD;
15309 x_return_status := FND_API.G_RET_STS_ERROR;
15310 END IF;
15311
15312 IF ( p_create_update_flag = 'C' AND
15313 p_organization_rec.paydex_norm IS NOT NULL AND
15314 p_organization_rec.paydex_norm <> FND_API.G_MISS_CHAR )
15315 OR
15316 ( p_create_update_flag = 'U' AND
15317 ( p_organization_rec.paydex_norm = FND_API.G_MISS_CHAR OR
15318 p_organization_rec.paydex_norm IS NOT NULL
15319 ) )
15320 THEN
15321 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15322 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'paydex_norm' );
15323 FND_MSG_PUB.ADD;
15324 x_return_status := FND_API.G_RET_STS_ERROR;
15325 END IF;
15326
15327 IF ( p_create_update_flag = 'C' AND
15328 p_organization_rec.paydex_score IS NOT NULL AND
15329 p_organization_rec.paydex_score <> FND_API.G_MISS_CHAR )
15330 OR
15331 ( p_create_update_flag = 'U' AND
15332 ( p_organization_rec.paydex_score = FND_API.G_MISS_CHAR OR
15333 p_organization_rec.paydex_score IS NOT NULL
15334 ) )
15335 THEN
15336 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15337 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'paydex_score' );
15338 FND_MSG_PUB.ADD;
15339 x_return_status := FND_API.G_RET_STS_ERROR;
15340 END IF;
15341
15342 IF ( p_create_update_flag = 'C' AND
15343 p_organization_rec.paydex_three_months_ago IS NOT NULL AND
15344 p_organization_rec.paydex_three_months_ago <> FND_API.G_MISS_CHAR )
15345 OR
15346 ( p_create_update_flag = 'U' AND
15347 ( p_organization_rec.paydex_three_months_ago = FND_API.G_MISS_CHAR OR
15348 p_organization_rec.paydex_three_months_ago IS NOT NULL
15349 ) )
15350 THEN
15351 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15352 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'paydex_three_months_ago' );
15353 FND_MSG_PUB.ADD;
15354 x_return_status := FND_API.G_RET_STS_ERROR;
15355 END IF;
15356
15357 IF ( p_create_update_flag = 'C' AND
15358 p_organization_rec.failure_score IS NOT NULL AND
15359 p_organization_rec.failure_score <> FND_API.G_MISS_CHAR )
15360 OR
15361 ( p_create_update_flag = 'U' AND
15362 ( p_organization_rec.failure_score = FND_API.G_MISS_CHAR OR
15363 p_organization_rec.failure_score IS NOT NULL
15364 ) )
15365 THEN
15366 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15367 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score' );
15368 FND_MSG_PUB.ADD;
15369 x_return_status := FND_API.G_RET_STS_ERROR;
15370 END IF;
15371
15372 IF ( p_create_update_flag = 'C' AND
15373 p_organization_rec.failure_score_age IS NOT NULL AND
15374 p_organization_rec.failure_score_age <> FND_API.G_MISS_NUM )
15375 OR
15376 ( p_create_update_flag = 'U' AND
15377 ( p_organization_rec.failure_score_age = FND_API.G_MISS_NUM OR
15378 p_organization_rec.failure_score_age IS NOT NULL
15379 ) )
15380 THEN
15381 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15382 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_age' );
15383 FND_MSG_PUB.ADD;
15384 x_return_status := FND_API.G_RET_STS_ERROR;
15385 END IF;
15386
15387 IF ( p_create_update_flag = 'C' AND
15388 p_organization_rec.failure_score_class IS NOT NULL AND
15389 p_organization_rec.failure_score_class <> FND_API.G_MISS_NUM )
15390 OR
15391 ( p_create_update_flag = 'U' AND
15392 ( p_organization_rec.failure_score_class = FND_API.G_MISS_NUM OR
15393 p_organization_rec.failure_score_class IS NOT NULL
15394 ) )
15395 THEN
15396 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15397 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_class' );
15398 FND_MSG_PUB.ADD;
15399 x_return_status := FND_API.G_RET_STS_ERROR;
15400 END IF;
15401
15402 IF ( p_create_update_flag = 'C' AND
15403 p_organization_rec.failure_score_commentary IS NOT NULL AND
15404 p_organization_rec.failure_score_commentary <> FND_API.G_MISS_CHAR )
15405 OR
15406 ( p_create_update_flag = 'U' AND
15407 ( p_organization_rec.failure_score_commentary = FND_API.G_MISS_CHAR OR
15408 p_organization_rec.failure_score_commentary IS NOT NULL
15409 ) )
15410 THEN
15411 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15412 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary' );
15413 FND_MSG_PUB.ADD;
15414 x_return_status := FND_API.G_RET_STS_ERROR;
15415 END IF;
15416
15417 IF ( p_create_update_flag = 'C' AND
15418 p_organization_rec.failure_score_commentary2 IS NOT NULL AND
15419 p_organization_rec.failure_score_commentary2 <> FND_API.G_MISS_CHAR )
15420 OR
15421 ( p_create_update_flag = 'U' AND
15422 ( p_organization_rec.failure_score_commentary2 = FND_API.G_MISS_CHAR OR
15423 p_organization_rec.failure_score_commentary2 IS NOT NULL
15424 ) )
15425 THEN
15426 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15427 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary2' );
15428 FND_MSG_PUB.ADD;
15429 x_return_status := FND_API.G_RET_STS_ERROR;
15430 END IF;
15431
15432 IF ( p_create_update_flag = 'C' AND
15433 p_organization_rec.failure_score_commentary3 IS NOT NULL AND
15434 p_organization_rec.failure_score_commentary3 <> FND_API.G_MISS_CHAR )
15435 OR
15436 ( p_create_update_flag = 'U' AND
15437 ( p_organization_rec.failure_score_commentary3 = FND_API.G_MISS_CHAR OR
15438 p_organization_rec.failure_score_commentary3 IS NOT NULL
15439 ) )
15440 THEN
15441 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15442 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary3' );
15443 FND_MSG_PUB.ADD;
15444 x_return_status := FND_API.G_RET_STS_ERROR;
15445 END IF;
15446
15447 IF ( p_create_update_flag = 'C' AND
15448 p_organization_rec.failure_score_commentary4 IS NOT NULL AND
15449 p_organization_rec.failure_score_commentary4 <> FND_API.G_MISS_CHAR )
15450 OR
15451 ( p_create_update_flag = 'U' AND
15452 ( p_organization_rec.failure_score_commentary4 = FND_API.G_MISS_CHAR OR
15453 p_organization_rec.failure_score_commentary4 IS NOT NULL
15454 ) )
15455 THEN
15456 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15457 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary4' );
15458 FND_MSG_PUB.ADD;
15459 x_return_status := FND_API.G_RET_STS_ERROR;
15460 END IF;
15461
15462 IF ( p_create_update_flag = 'C' AND
15463 p_organization_rec.failure_score_commentary5 IS NOT NULL AND
15464 p_organization_rec.failure_score_commentary5 <> FND_API.G_MISS_CHAR )
15465 OR
15466 ( p_create_update_flag = 'U' AND
15467 ( p_organization_rec.failure_score_commentary5 = FND_API.G_MISS_CHAR OR
15468 p_organization_rec.failure_score_commentary5 IS NOT NULL
15469 ) )
15470 THEN
15471 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15472 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary5' );
15473 FND_MSG_PUB.ADD;
15474 x_return_status := FND_API.G_RET_STS_ERROR;
15475 END IF;
15476
15477 IF ( p_create_update_flag = 'C' AND
15478 p_organization_rec.failure_score_commentary6 IS NOT NULL AND
15479 p_organization_rec.failure_score_commentary6 <> FND_API.G_MISS_CHAR )
15480 OR
15481 ( p_create_update_flag = 'U' AND
15482 ( p_organization_rec.failure_score_commentary6 = FND_API.G_MISS_CHAR OR
15483 p_organization_rec.failure_score_commentary6 IS NOT NULL
15484 ) )
15485 THEN
15486 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15487 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary6' );
15488 FND_MSG_PUB.ADD;
15489 x_return_status := FND_API.G_RET_STS_ERROR;
15490 END IF;
15491
15492 IF ( p_create_update_flag = 'C' AND
15493 p_organization_rec.failure_score_commentary7 IS NOT NULL AND
15494 p_organization_rec.failure_score_commentary7 <> FND_API.G_MISS_CHAR )
15495 OR
15496 ( p_create_update_flag = 'U' AND
15497 ( p_organization_rec.failure_score_commentary7 = FND_API.G_MISS_CHAR OR
15498 p_organization_rec.failure_score_commentary7 IS NOT NULL
15499 ) )
15500 THEN
15501 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15502 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary7' );
15503 FND_MSG_PUB.ADD;
15504 x_return_status := FND_API.G_RET_STS_ERROR;
15505 END IF;
15506
15507 IF ( p_create_update_flag = 'C' AND
15508 p_organization_rec.failure_score_commentary8 IS NOT NULL AND
15509 p_organization_rec.failure_score_commentary8 <> FND_API.G_MISS_CHAR )
15510 OR
15511 ( p_create_update_flag = 'U' AND
15512 ( p_organization_rec.failure_score_commentary8 = FND_API.G_MISS_CHAR OR
15513 p_organization_rec.failure_score_commentary8 IS NOT NULL
15514 ) )
15515 THEN
15516 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15517 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary8' );
15518 FND_MSG_PUB.ADD;
15519 x_return_status := FND_API.G_RET_STS_ERROR;
15520 END IF;
15521
15522 IF ( p_create_update_flag = 'C' AND
15523 p_organization_rec.failure_score_commentary9 IS NOT NULL AND
15524 p_organization_rec.failure_score_commentary9 <> FND_API.G_MISS_CHAR )
15525 OR
15526 ( p_create_update_flag = 'U' AND
15527 ( p_organization_rec.failure_score_commentary9 = FND_API.G_MISS_CHAR OR
15528 p_organization_rec.failure_score_commentary9 IS NOT NULL
15529 ) )
15530 THEN
15531 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15532 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary9' );
15533 FND_MSG_PUB.ADD;
15534 x_return_status := FND_API.G_RET_STS_ERROR;
15535 END IF;
15536
15537 IF ( p_create_update_flag = 'C' AND
15538 p_organization_rec.failure_score_commentary10 IS NOT NULL AND
15539 p_organization_rec.failure_score_commentary10 <> FND_API.G_MISS_CHAR )
15540 OR
15541 ( p_create_update_flag = 'U' AND
15542 ( p_organization_rec.failure_score_commentary10 = FND_API.G_MISS_CHAR OR
15543 p_organization_rec.failure_score_commentary10 IS NOT NULL
15544 ) )
15545 THEN
15546 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15547 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_commentary10' );
15548 FND_MSG_PUB.ADD;
15549 x_return_status := FND_API.G_RET_STS_ERROR;
15550 END IF;
15551
15552 IF ( p_create_update_flag = 'C' AND
15553 p_organization_rec.failure_score_date IS NOT NULL AND
15554 p_organization_rec.failure_score_date <> FND_API.G_MISS_DATE )
15555 OR
15556 ( p_create_update_flag = 'U' AND
15557 ( p_organization_rec.failure_score_date = FND_API.G_MISS_DATE OR
15558 p_organization_rec.failure_score_date IS NOT NULL
15559 ) )
15560 THEN
15561 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15562 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_date' );
15563 FND_MSG_PUB.ADD;
15564 x_return_status := FND_API.G_RET_STS_ERROR;
15565 END IF;
15566
15567 IF ( p_create_update_flag = 'C' AND
15568 p_organization_rec.failure_score_incd_default IS NOT NULL AND
15569 p_organization_rec.failure_score_incd_default <> FND_API.G_MISS_NUM )
15570 OR
15571 ( p_create_update_flag = 'U' AND
15572 ( p_organization_rec.failure_score_incd_default = FND_API.G_MISS_NUM OR
15573 p_organization_rec.failure_score_incd_default IS NOT NULL
15574 ) )
15575 THEN
15576 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15577 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_incd_default' );
15578 FND_MSG_PUB.ADD;
15579 x_return_status := FND_API.G_RET_STS_ERROR;
15580 END IF;
15581
15582 IF ( p_create_update_flag = 'C' AND
15583 p_organization_rec.failure_score_natnl_percentile IS NOT NULL AND
15584 p_organization_rec.failure_score_natnl_percentile <> FND_API.G_MISS_NUM)
15585 OR
15586 ( p_create_update_flag = 'U' AND
15587 ( p_organization_rec.failure_score_natnl_percentile = FND_API.G_MISS_NUM OR
15588 p_organization_rec.failure_score_natnl_percentile IS NOT NULL
15589 ) )
15590 THEN
15591 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15592 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_natnl_percentile' );
15593 FND_MSG_PUB.ADD;
15594 x_return_status := FND_API.G_RET_STS_ERROR;
15595 END IF;
15596
15597 IF ( p_create_update_flag = 'C' AND
15598 p_organization_rec.failure_score_override_code IS NOT NULL AND
15599 p_organization_rec.failure_score_override_code <> FND_API.G_MISS_CHAR)
15600 OR
15601 ( p_create_update_flag = 'U' AND
15602 ( p_organization_rec.failure_score_override_code = FND_API.G_MISS_CHAR OR
15603 p_organization_rec.failure_score_override_code IS NOT NULL
15604 ) )
15605 THEN
15606 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15607 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'failure_score_override_code' );
15608 FND_MSG_PUB.ADD;
15609 x_return_status := FND_API.G_RET_STS_ERROR;
15610 END IF;
15611
15612 IF ( p_create_update_flag = 'C' AND
15613 p_organization_rec.global_failure_score IS NOT NULL AND
15614 p_organization_rec.global_failure_score <> FND_API.G_MISS_CHAR)
15615 OR
15616 ( p_create_update_flag = 'U' AND
15617 ( p_organization_rec.global_failure_score = FND_API.G_MISS_CHAR OR
15618 p_organization_rec.global_failure_score IS NOT NULL
15619 ) )
15620 THEN
15621 FND_MESSAGE.SET_NAME( 'AR', 'HZ_DNB_MOVED_COLUMN' );
15622 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'global_failure_score' );
15623 FND_MSG_PUB.ADD;
15624 x_return_status := FND_API.G_RET_STS_ERROR;
15625 END IF;
15626
15627 -- Debug info.
15628 /*IF G_DEBUG THEN
15629 HZ_UTILITY_V2PUB.debug ( 'validate_org_nonsupport_column (-)' );
15630 END IF;
15631 */
15632 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
15633 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_org_nonsupport_column (-)',
15634 p_msg_level=>fnd_log.level_procedure);
15635 END IF;
15636
15637 END validate_org_nonsupport_column;
15638
15639 PROCEDURE validate_rel_code (
15640 p_forward_rel_code IN VARCHAR2,
15641 p_backward_rel_code IN VARCHAR2,
15642 p_forward_role IN VARCHAR2,
15643 p_backward_role IN VARCHAR2,
15644 x_return_status IN OUT NOCOPY VARCHAR2
15645 ) IS
15646
15647 l_error1 BOOLEAN := FALSE;
15648 l_error2 BOOLEAN := FALSE;
15649
15650 BEGIN
15651
15652 IF p_forward_rel_code = p_backward_rel_code THEN
15653 IF p_forward_role <> p_backward_role THEN
15654 fnd_message.set_name('AR', 'HZ_INVALID_ROLE1');
15655 fnd_msg_pub.add;
15656 x_return_status := FND_API.G_RET_STS_ERROR;
15657 END IF;
15658 END IF;
15659
15660 IF p_forward_rel_code <> p_backward_rel_code THEN
15661 IF p_forward_role = p_backward_role THEN
15662 fnd_message.set_name('AR', 'HZ_INVALID_ROLE2');
15663 fnd_msg_pub.add;
15664 x_return_status := FND_API.G_RET_STS_ERROR;
15665 END IF;
15666 END IF;
15667
15668 END validate_rel_code;
15669
15670 /**
15671 * PROCEDURE validate_financial_report
15672 *
15673 * DESCRIPTION
15674 * Validates financial report record. Checks for
15675 * uniqueness
15676 * lookup types
15677 * mandatory columns
15678 * non-updateable fields
15679 * foreign key validations
15680 * other validations
15681 *
15682 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
15683 *
15684 * ARGUMENTS
15685 * IN:
15686 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
15687 * p_financial_report_rec Financial report record.
15688 * p_rowid Rowid of the record (used only in update mode).
15689 * IN/OUT:
15690 * x_return_status Return status after the call. The status can
15691 * be FND_API.G_RET_STS_SUCCESS (success),
15692 * fnd_api.g_ret_sts_error (error),
15693 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
15694 *
15695 * NOTES
15696 *
15697 * MODIFICATION HISTORY
15698 *
15699 * 29-JAN-2003 Sreedhar Mohan o Created.
15700 * 11-MAR-2003 Sreedhar Mohan o Bug 2829046: Changed the message token values.
15701 * 10-OCT-2003 Rajib Ranjan Borah o Bug Number 3148753.Commented old validation
15702 * which did not take care of the case when both
15703 * issue_period and report_start_date are not
15704 * provided.Furthermore new validation does the check
15705 * only if p_create_update_flag='C' as both these
15706 * fields are non_updateable.
15707 * 23-MAR-2004 Rajib Ranjan Borah o Bug 3456205.Validation for party_id being a foreing
15708 * key of HZ_PARTIES and party_type should be
15709 * 'ORGANIZATION', are performed using a single cursor now.
15710 * o Validation on report_start_date, report_end_date,
15711 * party_id will be performed only during creation as these
15712 * are non-updateable columns.
15713 * o Removed unused local variables.
15714 * 01-APR-2004 Rajib Ranjan Borah o Bug 3539597.Commented out changes incorporated in fix
15715 * 3200870. Issued_period and report_start_date cannot be
15716 * both null or not null. Fix 3200870 had added
15717 * date_report_issued to the list of attributes which cannot
15718 * be NULL at the same time.
15719 * o Modified cursor c_unique_financial_report_rec as it used
15720 * fail earlier when issued_period was null.Truncated the
15721 * date parameters.
15722 * 01-03-2005 Rajib Ranjan Borah o SSM SST Integration and Extension.
15723 * Actual_content_source will be validated against HZ_ORIG_SYSTEMS_B
15724 * in HZ_MIXNM_UTILITY.ValidateContentSource instead of
15725 * being validated against lookup OCNTENT_SOURCE_TYPE.
15726 */
15727
15728 PROCEDURE validate_financial_report(
15729 p_create_update_flag IN VARCHAR2,
15730 p_financial_report_rec IN HZ_ORGANIZATION_INFO_V2PUB.FINANCIAL_REPORT_REC_TYPE,
15731 p_rowid IN ROWID,
15732 x_return_status IN OUT NOCOPY VARCHAR2
15733 ) IS
15734
15735 CURSOR c_dup_financial_report_id (p_financial_report_id IN NUMBER) IS
15736 SELECT 'Y'
15737 FROM hz_financial_reports hfr
15738 WHERE hfr.financial_report_id = p_financial_report_id;
15739
15740 CURSOR c_unique_financial_report_rec ( p_party_id IN NUMBER,
15741 p_type_of_financial_report IN VARCHAR2,
15742 p_document_reference IN VARCHAR2,
15743 p_date_report_issued IN DATE,
15744 p_issued_period IN VARCHAR2,
15745 p_report_start_date IN DATE,
15746 p_report_end_date IN DATE,
15747 p_actual_content_source IN VARCHAR2) IS
15748 SELECT 'Y'
15749 FROM hz_financial_reports
15750 WHERE party_id = p_party_id
15751 AND nvl(type_of_financial_report, 'XXX') = nvl(p_type_of_financial_report, 'XXX')
15752 AND nvl(document_reference, 'XXX') = nvl(p_document_reference, 'XXX')
15753 AND actual_content_source = nvl(p_actual_content_source,'USER_ENTERED')
15754 AND trunc(nvl(date_report_issued, to_date('12/31/4712','MM/DD/YYYY'))) =
15755 trunc(nvl(p_date_report_issued, to_date('12/31/4712','MM/DD/YYYY')))
15756 AND nvl(issued_period, to_date('12/31/4712','MM/DD/YYYY')) =
15757 nvl( p_issued_period, to_date('12/31/4712','MM/DD/YYYY'))
15758 AND trunc(nvl(report_start_date, to_date('12/31/4712','MM/DD/YYYY'))) =
15759 trunc(nvl(p_report_start_date, to_date('12/31/4712','MM/DD/YYYY')))
15760 AND trunc(nvl(report_end_date, to_date('12/31/4712','MM/DD/YYYY'))) =
15761 trunc(nvl(p_report_end_date, to_date('12/31/4712','MM/DD/YYYY')))
15762 ;
15763
15764 CURSOR c_partytype IS
15765 SELECT hp.party_type
15766 FROM hz_parties hp
15767 WHERE hp.party_id = p_financial_report_rec.party_id;
15768
15769 l_party_type VARCHAR2(30);
15770 l_financial_report_id hz_financial_reports.financial_report_id%TYPE;
15771 l_document_reference hz_financial_reports.document_reference%TYPE;
15772 l_date_report_issued hz_financial_reports.date_report_issued%TYPE;
15773 l_issued_period hz_financial_reports.issued_period%TYPE;
15774 l_party_id hz_financial_reports.party_id%TYPE;
15775 -- l_requiring_authority hz_financial_reports.requiring_authority%TYPE;
15776 l_type_of_financial_report hz_financial_reports.type_of_financial_report%TYPE;
15777 l_report_start_date hz_financial_reports.report_start_date%TYPE;
15778 l_report_end_date hz_financial_reports.report_end_date%TYPE;
15779 -- l_audit_ind hz_financial_reports.audit_ind%TYPE;
15780 -- l_consolidated_ind hz_financial_reports.consolidated_ind%TYPE;
15781 -- l_estimated_ind hz_financial_reports.estimated_ind%TYPE;
15782 -- l_fiscal_ind hz_financial_reports.fiscal_ind%TYPE;
15783 -- l_final_ind hz_financial_reports.final_ind%TYPE;
15784 -- l_forecast_ind hz_financial_reports.forecast_ind%TYPE;
15785 -- l_opening_ind hz_financial_reports.opening_ind%TYPE;
15786 -- l_proforma_ind hz_financial_reports.proforma_ind%TYPE;
15787 -- l_qualified_ind hz_financial_reports.qualified_ind%TYPE;
15788 -- l_restated_ind hz_financial_reports.restated_ind%TYPE;
15789 -- l_signed_by_principals_ind hz_financial_reports.signed_by_principals_ind%TYPE;
15790 -- l_trial_balance_ind hz_financial_reports.trial_balance_ind%TYPE;
15791 -- l_unbalanced_ind hz_financial_reports.unbalanced_ind%TYPE;
15792 l_content_source_type hz_financial_reports.content_source_type%TYPE;
15793 l_actual_content_source hz_financial_reports.actual_content_source%TYPE;
15794 -- l_request_id hz_financial_reports.request_id%TYPE;
15795 l_status hz_financial_reports.status%TYPE;
15796 l_created_by_module hz_financial_reports.created_by_module%TYPE;
15797
15798 -- l_temp_issued_period hz_financial_reports.issued_period%TYPE;
15799 -- l_temp_report_start_date hz_financial_reports.report_start_date%TYPE;
15800 -- l_temp_report_end_date hz_financial_reports.report_end_date%TYPE;
15801 l_dummy VARCHAR2(1);
15802 l_debug_prefix VARCHAR2(30) := '';
15803
15804 BEGIN
15805
15806 --enable_debug;
15807
15808 -- Debug info.
15809 /*IF g_debug THEN
15810 hz_utility_v2pub.debug ('validate_financial_report (+)');
15811 END IF;
15812 */
15813 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
15814 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_financial_report (+)',
15815 p_msg_level=>fnd_log.level_procedure);
15816 END IF;
15817
15818
15819 -- do the query to get old values for update
15820
15821 -- Bug 3456205. Some of the local variables populated by this select statement were not
15822 -- used at all and have been commented out.
15823
15824 IF p_create_update_flag = 'U'
15825 THEN
15826 SELECT FINANCIAL_REPORT_ID,
15827 PARTY_ID,
15828 DOCUMENT_REFERENCE,
15829 DATE_REPORT_ISSUED,
15830 ISSUED_PERIOD,
15831 -- REQUIRING_AUTHORITY,
15832 TYPE_OF_FINANCIAL_REPORT,
15833 REPORT_START_DATE,
15834 REPORT_END_DATE,
15835 -- AUDIT_IND,
15836 -- CONSOLIDATED_IND,
15837 -- ESTIMATED_IND,
15838 -- FISCAL_IND,
15839 -- FINAL_IND,
15840 -- FORECAST_IND,
15841 -- OPENING_IND,
15842 -- PROFORMA_IND,
15843 -- QUALIFIED_IND,
15844 -- RESTATED_IND,
15845 -- SIGNED_BY_PRINCIPALS_IND,
15846 -- TRIAL_BALANCE_IND,
15847 -- UNBALANCED_IND,
15848 CONTENT_SOURCE_TYPE,
15849 ACTUAL_CONTENT_SOURCE,
15850 -- REQUEST_ID,
15851 STATUS,
15852 CREATED_BY_MODULE
15853 INTO l_financial_report_id,
15854 l_party_id,
15855 l_document_reference,
15856 l_date_report_issued,
15857 l_issued_period,
15858 -- l_requiring_authority,
15859 l_type_of_financial_report,
15860 l_report_start_date,
15861 l_report_end_date,
15862 -- l_audit_ind,
15863 -- l_consolidated_ind,
15864 -- l_estimated_ind,
15865 -- l_fiscal_ind,
15866 -- l_final_ind,
15867 -- l_forecast_ind,
15868 -- l_opening_ind,
15869 -- l_proforma_ind,
15870 -- l_qualified_ind,
15871 -- l_restated_ind,
15872 -- l_signed_by_principals_ind,
15873 -- l_trial_balance_ind,
15874 -- l_unbalanced_ind,
15875 l_content_source_type,
15876 l_actual_content_source,
15877 -- l_request_id,
15878 l_status,
15879 l_created_by_module
15880 FROM HZ_FINANCIAL_REPORTS
15881 WHERE ROWID = p_rowid;
15882 END IF;
15883
15884 -------------------------------------
15885 -- validation for financial_report_id
15886 -------------------------------------
15887 /****Logical APIs - validation not required****/
15888 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
15889 --check for unique financial_report_id
15890 IF p_create_update_flag = 'C' THEN
15891 IF p_financial_report_rec.financial_report_id IS NOT NULL AND
15892 p_financial_report_rec.financial_report_id <> fnd_api.g_miss_num
15893 THEN
15894 OPEN c_dup_financial_report_id (p_financial_report_rec.financial_report_id);
15895 FETCH c_dup_financial_report_id INTO l_dummy;
15896
15897 -- key is not unique, push an error onto the stack.
15898 IF NVL(c_dup_financial_report_id%FOUND, FALSE) THEN
15899 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
15900 fnd_message.set_token('COLUMN', 'financial_report_id');
15901 fnd_msg_pub.add;
15902 x_return_status := fnd_api.g_ret_sts_error;
15903 END IF;
15904 CLOSE c_dup_financial_report_id;
15905
15906 /*IF g_debug THEN
15907 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
15908 'check that financial_report_id is unique during creation. ' ||
15909 ' x_return_status = ' || x_return_status, l_debug_prefix);
15910 END IF;
15911 */
15912 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
15913 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'check that financial_report_id is unique during creation. ' ||
15914 ' x_return_status = ' || x_return_status,
15915 p_msg_level=>fnd_log.level_statement);
15916 END IF;
15917
15918
15919 END IF;
15920 END IF;
15921
15922 /*IF g_debug THEN
15923 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
15924 '(+) after validate financial_report_id ... ' ||
15925 'x_return_status = ' || x_return_status, l_debug_prefix);
15926 END IF;
15927 */
15928 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
15929 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate financial_report_id ... ' ||
15930 'x_return_status = ' || x_return_status,
15931 p_msg_level=>fnd_log.level_statement);
15932 END IF;
15933
15934
15935 -- financial_report_id is non-updateable field
15936 IF p_create_update_flag = 'U' THEN
15937 validate_nonupdateable (
15938 p_column => 'financial_report_id',
15939 p_column_value => p_financial_report_rec.financial_report_id,
15940 p_old_column_value => l_financial_report_id,
15941 x_return_status => x_return_status);
15942
15943 /*IF g_debug THEN
15944 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
15945 'financial_report_id is non-updateable field. ' ||
15946 'x_return_status = ' || x_return_status, l_debug_prefix);
15947 END IF;
15948 */
15949 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
15950 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'financial_report_id is non-updateable field. ' ||
15951 'x_return_status = ' || x_return_status,
15952 p_msg_level=>fnd_log.level_statement);
15953 END IF;
15954
15955
15956 END IF;
15957 END IF;
15958
15959 --------------------------
15960 -- validation for party_id
15961 --------------------------
15962 /****Logical APIs - validation not required****/
15963 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
15964 -- party_id is mandatory field
15965 IF p_create_update_flag = 'C' THEN
15966 validate_mandatory (
15967 p_create_update_flag => p_create_update_flag,
15968 p_column => 'party_id',
15969 p_column_value => p_financial_report_rec.party_id,
15970 x_return_status => x_return_status);
15971
15972 /*IF g_debug THEN
15973 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
15974 'party_id is mandatory field. ' ||
15975 'x_return_status = ' || x_return_status, l_debug_prefix);
15976 END IF;
15977 */
15978 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
15979 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is mandatory field. ' ||
15980 'x_return_status = ' || x_return_status,
15981 p_msg_level=>fnd_log.level_statement);
15982 END IF;
15983
15984
15985 END IF;
15986
15987 -- party_id is non-updateable field
15988 IF p_create_update_flag = 'U' THEN
15989 validate_nonupdateable (
15990 p_column => 'party_id',
15991 p_column_value => p_financial_report_rec.party_id,
15992 p_old_column_value => l_party_id,
15993 x_return_status => x_return_status);
15994
15995 /*IF g_debug THEN
15996 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
15997 'party_id is non-updateable field. ' ||
15998 'x_return_status = ' || x_return_status, l_debug_prefix);
15999 END IF;
16000 */
16001 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16002 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable field. ' ||
16003 'x_return_status = ' || x_return_status,
16004 p_msg_level=>fnd_log.level_statement);
16005 END IF;
16006
16007
16008 END IF;
16009 /*
16010 -- party_id has foreign key HZ_PARTIES.PARTY_ID
16011 IF p_create_update_flag = 'C'
16012 AND
16013 p_financial_report_rec.party_id IS NOT NULL
16014 AND
16015 p_financial_report_rec.party_id <> fnd_api.g_miss_num
16016 THEN
16017 BEGIN
16018 SELECT 'Y'
16019 INTO l_dummy
16020 FROM hz_parties p
16021 WHERE p.party_id = p_financial_report_rec.party_id;
16022
16023 EXCEPTION
16024 WHEN NO_DATA_FOUND THEN
16025 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
16026 fnd_message.set_token('FK', 'party_id');
16027 fnd_message.set_token('COLUMN', 'party_id');
16028 fnd_message.set_token('TABLE', 'hz_parties');
16029 fnd_msg_pub.add;
16030 x_return_status := fnd_api.g_ret_sts_error;
16031 END;
16032 */
16033 /*IF g_debug THEN
16034 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16035 'party_id has foreign key hz_parties.party_id. ' ||
16036 'x_return_status = ' || x_return_status, l_debug_prefix);
16037 END IF;
16038 */
16039 /* IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16040 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
16041 'x_return_status = ' || x_return_status,
16042 p_msg_level=>fnd_log.level_statement);
16043 END IF;
16044
16045
16046 END IF;
16047 */
16048 -- make sure that the l_party_id belongs to an organization.
16049 IF p_create_update_flag = 'C'
16050 /* Bug 3456205 Party_id is not updateable.
16051 OR
16052 p_create_update_flag = 'U'
16053 If the value is NULL / G_MISS, error should be thrown in validate_mandatory only.
16054 */
16055 AND p_financial_report_rec.party_id IS NOT NULL
16056 AND p_financial_report_rec.party_id <> FND_API.G_MISS_NUM
16057 THEN
16058 --Bug 2886268: Added the following code instead of calling check_organization
16059 OPEN c_partytype;
16060
16061 FETCH c_partytype INTO l_party_type;
16062 IF c_partytype%FOUND
16063 THEN
16064 IF rtrim(ltrim(l_party_type)) <> 'ORGANIZATION'
16065 THEN
16066 -- This is not an organization. Hence throw error
16067 fnd_message.set_name('AR', 'HZ_API_INVALID_PARTY_TYPE');
16068 fnd_message.set_token('PARTY_ID', TO_CHAR(p_financial_report_rec.party_id));
16069 fnd_message.set_token('TYPE', 'ORGANIZATION');
16070 fnd_msg_pub.add;
16071 x_return_status := fnd_api.g_ret_sts_error;
16072 END IF;
16073 ELSE -- 3456205
16074 -- party_id has foreign key HZ_PARTIES.PARTY_ID
16075 -- However since no record found in HZ_PARTIES, therefore throw error.
16076 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
16077 fnd_message.set_token('FK', 'party_id');
16078 fnd_message.set_token('COLUMN', 'party_id');
16079 fnd_message.set_token('TABLE', 'hz_parties');
16080 fnd_msg_pub.add;
16081 x_return_status := fnd_api.g_ret_sts_error;
16082 END IF;
16083 CLOSE c_partytype;
16084 --Bug 2886268: Commented out the following call as it is throwing erroneous message
16085 --check_organization(p_financial_report_rec.party_id, x_return_status);
16086 END IF;
16087 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16088 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
16089 'x_return_status = ' || x_return_status,
16090 p_msg_level=>fnd_log.level_statement);
16091 END IF;
16092 END IF;
16093
16094 -------------------------------
16095 -- validation for issued_period
16096 -------------------------------
16097 --Either issued_period or report_start_date must be provided (not both).
16098 --Added database values when passed with null values
16099
16100 --Bug Number 3148753.Commented the validation code as it only checked for the case
16101 --when both the values are set.
16102 --There is no validation for the case when both the values are not provided.
16103
16104 --Furthermore as both the fields are non-updateable, therefore it is enough to check
16105 --during creation that only one of the fields is being provided.
16106
16107 /*
16108 |IF ((nvl(p_financial_report_rec.issued_period, l_issued_period) IS NOT NULL AND
16109 | nvl(p_financial_report_rec.issued_period, l_issued_period) <> fnd_api.g_miss_char) AND
16110 | (nvl(p_financial_report_rec.report_start_date, l_report_start_date) IS NOT NULL AND
16111 | nvl(p_financial_report_rec.report_start_date, l_report_start_date) <> fnd_api.g_miss_date))
16112 |THEN
16113 | fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION2');
16114 | fnd_message.set_token('COLUMN1', 'issued_period');
16115 | fnd_message.set_token('COLUMN2', 'report_start_date');
16116 | fnd_msg_pub.add;
16117 | x_return_status := fnd_api.g_ret_sts_error;
16118 |END IF;
16119 */
16120
16121 --Bug Number 3148753.As both the fields are non-updateable,therefore validation
16122 --during creation is enough.
16123
16124
16125 IF(p_create_update_flag='C')
16126 THEN
16127 IF (
16128 (--Both the values are not set during creation.
16129 (
16130 p_financial_report_rec.issued_period IS NULL
16131 OR
16132 p_financial_report_rec.issued_period = fnd_api.g_miss_char
16133 )
16134 AND
16135 (
16136 p_financial_report_rec.report_start_date IS NULL
16137 OR
16138 p_financial_report_rec.report_start_date = fnd_api.g_miss_date
16139 )
16140 /* Bug 3539597.Commented out changes incorporated in fix 3200870.
16141 | AND
16142 | (
16143 | p_financial_report_rec.DATE_REPORT_ISSUED IS NULL
16144 | OR
16145 | p_financial_report_rec.DATE_REPORT_ISSUED = fnd_api.g_miss_date
16146 | )
16147 */
16148 )
16149 OR
16150 (--Both the values are provided during creation
16151 (
16152 p_financial_report_rec.issued_period IS NOT NULL
16153 AND
16154 p_financial_report_rec.issued_period <> fnd_api.g_miss_char
16155 )
16156 AND
16157 (
16158 p_financial_report_rec.report_start_date IS NOT NULL
16159 AND
16160 p_financial_report_rec.report_start_date <> fnd_api.g_miss_date
16161 )
16162 )
16163 )
16164 THEN
16165 fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION2');
16166 fnd_message.set_token('COLUMN1', 'issued_period');
16167 fnd_message.set_token('COLUMN2', 'report_start_date');
16168 fnd_msg_pub.add;
16169 x_return_status := fnd_api.g_ret_sts_error;
16170 END IF;
16171 END IF;
16172
16173 -----------------------------------
16174 -- validation for report_start_date
16175 -----------------------------------
16176
16177 -- bug 4417943.
16178 IF p_create_update_flag = 'C' /*Bug 3456205 Both these columns are non-updateable */
16179 AND (
16180 (p_financial_report_rec.report_start_date IS NOT NULL
16181 AND p_financial_report_rec.report_start_date <> fnd_api.g_miss_date
16182 AND (p_financial_report_rec.report_end_date IS NULL OR
16183 p_financial_report_rec.report_end_date = fnd_api.g_miss_date )
16184 ) OR
16185 (p_financial_report_rec.report_end_date IS NOT NULL
16186 AND p_financial_report_rec.report_end_date <> fnd_api.g_miss_date
16187 AND (p_financial_report_rec.report_start_date IS NULL OR
16188 p_financial_report_rec.report_start_date = fnd_api.g_miss_date)
16189 ))
16190 THEN
16191 fnd_message.set_name('AR', 'HZ_API_INVALID_COMBINATION3');
16192 fnd_message.set_token('COLUMN1', 'report_start_date');
16193 fnd_message.set_token('COLUMN2', 'report_end_date');
16194 fnd_msg_pub.add;
16195 x_return_status := fnd_api.g_ret_sts_error;
16196 END IF;
16197
16198 --Bug 2888670: Modified the end_date validation as per V1 validation.
16199 --If report_start_date is provided, then it must be less than or equal
16200 --to report_end_date.
16201
16202 IF p_create_update_flag = 'C' THEN
16203 IF p_financial_report_rec.report_end_date is NOT NULL AND
16204 p_financial_report_rec.report_end_date <> FND_API.G_MISS_DATE THEN
16205 if (p_financial_report_rec.report_end_date
16206 < p_financial_report_rec.report_start_date
16207 ) THEN
16208 FND_MESSAGE.SET_NAME('AR', 'HZ_API_START_DATE_GREATER');
16209 FND_MSG_PUB.ADD;
16210 x_return_status := FND_API.G_RET_STS_ERROR;
16211 end if;
16212 END IF;
16213 END IF;
16214
16215 /* Bug 3456205. As both report_start_date, report_end_date are non-updateable,
16216 therefore this validation need not be performed during updation.
16217
16218 -- compare end_date with database data and user passed data.
16219 ELSIF p_create_update_flag = 'U' THEN
16220 if (p_financial_report_rec.report_end_date is NOT NULL AND
16221 p_financial_report_rec.report_end_date <> FND_API.G_MISS_DATE) THEN
16222 if p_financial_report_rec.report_start_date is NOT NULL AND
16223 p_financial_report_rec.report_start_date <> FND_API.G_MISS_DATE then
16224 if p_financial_report_rec.report_end_date
16225 < p_financial_report_rec.report_start_date then
16226 FND_MESSAGE.SET_NAME('AR', 'HZ_API_START_DATE_GREATER');
16227 FND_MSG_PUB.ADD;
16228 x_return_status := FND_API.G_RET_STS_ERROR;
16229
16230 end if;
16231 elsif ( p_financial_report_rec.report_end_date < l_report_start_date OR
16232 l_report_start_date is NULL) then
16233 FND_MESSAGE.SET_NAME('AR', 'HZ_API_START_DATE_GREATER');
16234 FND_MSG_PUB.ADD;
16235 x_return_status := FND_API.G_RET_STS_ERROR;
16236
16237 end if;
16238 elsif (p_financial_report_rec.report_start_date is NOT NULL AND
16239 p_financial_report_rec.report_start_date <> FND_API.G_MISS_DATE) THEN
16240 if l_report_end_date < p_financial_report_rec.report_start_date then
16241 FND_MESSAGE.SET_NAME('AR', 'HZ_API_START_DATE_GREATER');
16242 FND_MSG_PUB.ADD;
16243 x_return_status := FND_API.G_RET_STS_ERROR;
16244
16245 end if;
16246 end if;
16247
16248 END IF;*/
16249
16250 ---------------------------------------
16251 --Bug 2868953: Unique record Validation
16252 ---------------------------------------
16253 IF p_create_update_flag = 'C' THEN
16254 OPEN c_unique_financial_report_rec ( p_financial_report_rec.party_id,
16255 p_financial_report_rec.type_of_financial_report,
16256 p_financial_report_rec.document_reference,
16257 p_financial_report_rec.date_report_issued,
16258 p_financial_report_rec.issued_period,
16259 p_financial_report_rec.report_start_date,
16260 p_financial_report_rec.report_end_date,
16261 p_financial_report_rec.actual_content_source);
16262
16263 FETCH c_unique_financial_report_rec INTO l_dummy;
16264
16265 -- combination key is not unique, push an error onto the stack.
16266 IF NVL(c_unique_financial_report_rec%FOUND, FALSE) THEN
16267 fnd_message.set_name('AR', 'HZ_API_DUP_FIN_REPORT_REC');
16268 fnd_msg_pub.add;
16269 x_return_status := fnd_api.g_ret_sts_error;
16270 END IF;
16271 CLOSE c_unique_financial_report_rec;
16272
16273 /*IF g_debug THEN
16274 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16275 'The following column combination should be unique:' ||
16276 ' PARTY_ID, FINANCIAL_REPORT_TYPE, DOCUMENT_REFERENCE, DATE_REPORT_ISSUED, ' ||
16277 ' (ISSUED_PERIOD or REPORT_START_DATE and REPORT_END_DATE).' ||
16278 ' x_return_status = ' || x_return_status, l_debug_prefix);
16279 END IF;
16280 */
16281 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16282 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16283 p_message=>'The following column combination should be unique:' ||
16284 ' PARTY_ID, FINANCIAL_REPORT_TYPE, DOCUMENT_REFERENCE, DATE_REPORT_ISSUED, ' ||
16285 ' (ISSUED_PERIOD or REPORT_START_DATE and REPORT_END_DATE).' ||
16286 ' x_return_status = ' || x_return_status,
16287 p_msg_level=>fnd_log.level_statement);
16288 END IF;
16289
16290 END IF;
16291 -- type_of_financial_report is non-updateable field
16292 IF p_create_update_flag = 'U' THEN
16293 validate_nonupdateable (
16294 p_column => 'type_of_financial_report',
16295 p_column_value => p_financial_report_rec.type_of_financial_report,
16296 p_old_column_value => l_type_of_financial_report,
16297 x_return_status => x_return_status);
16298
16299 /*IF g_debug THEN
16300 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16301 'type_of_financial_report is non-updateable field. ' ||
16302 'x_return_status = ' || x_return_status, l_debug_prefix);
16303 END IF;
16304 */
16305 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16306 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'type_of_financial_report is non-updateable field. ' ||
16307 'x_return_status = ' || x_return_status,
16308 p_msg_level=>fnd_log.level_statement);
16309 END IF;
16310
16311
16312 END IF;
16313 -- document_reference is non-updateable field
16314 IF p_create_update_flag = 'U' THEN
16315 validate_nonupdateable (
16316 p_column => 'document_reference',
16317 p_column_value => p_financial_report_rec.document_reference,
16318 p_old_column_value => l_document_reference,
16319 x_return_status => x_return_status);
16320
16321 /*IF g_debug THEN
16322 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16323 'document_reference is non-updateable field. ' ||
16324 'x_return_status = ' || x_return_status, l_debug_prefix);
16325 END IF;
16326 */
16327 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16328 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'document_reference is non-updateable field. ' ||
16329 'x_return_status = ' || x_return_status,
16330 p_msg_level=>fnd_log.level_statement);
16331 END IF;
16332
16333
16334 END IF;
16335 -- date_report_issued is non-updateable field
16336 IF p_create_update_flag = 'U' THEN
16337 validate_nonupdateable (
16338 p_column => 'date_report_issued',
16339 p_column_value => trunc(p_financial_report_rec.date_report_issued),
16340 p_old_column_value => trunc(l_date_report_issued),
16341 x_return_status => x_return_status);
16342
16343 /*IF g_debug THEN
16344 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16345 'date_report_issued is non-updateable field. ' ||
16346 'x_return_status = ' || x_return_status, l_debug_prefix);
16347 END IF;
16348 */
16349 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16350 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'date_report_issued is non-updateable field. ' ||
16351 'x_return_status = ' || x_return_status,
16352 p_msg_level=>fnd_log.level_statement);
16353 END IF;
16354
16355
16356 END IF;
16357 -- issued_period is non-updateable field
16358 IF p_create_update_flag = 'U' THEN
16359 validate_nonupdateable (
16360 p_column => 'issued_period',
16361 p_column_value => p_financial_report_rec.issued_period,
16362 p_old_column_value => l_issued_period,
16363 x_return_status => x_return_status);
16364
16365 /*IF g_debug THEN
16366 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16367 'issued_period is non-updateable field. ' ||
16368 'x_return_status = ' || x_return_status, l_debug_prefix);
16369 END IF;
16370 */
16371 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16372 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'issued_period is non-updateable field. ' ||
16373 'x_return_status = ' || x_return_status,
16374 p_msg_level=>fnd_log.level_statement);
16375 END IF;
16376
16377
16378 END IF;
16379 -- report_start_date is non-updateable field
16380 IF p_create_update_flag = 'U' THEN
16381 validate_nonupdateable (
16382 p_column => 'report_start_date',
16383 p_column_value => trunc(p_financial_report_rec.report_start_date),
16384 p_old_column_value => trunc(l_report_start_date),
16385 x_return_status => x_return_status);
16386
16387 /*IF g_debug THEN
16388 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16389 'report_start_date is non-updateable field. ' ||
16390 'x_return_status = ' || x_return_status, l_debug_prefix);
16391 END IF;
16392 */
16393 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16394 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'report_start_date is non-updateable field. ' ||
16395 'x_return_status = ' || x_return_status,
16396 p_msg_level=>fnd_log.level_statement);
16397 END IF;
16398
16399
16400 END IF;
16401 -- report_end_date is non-updateable field
16402 IF p_create_update_flag = 'U' THEN
16403 validate_nonupdateable (
16404 p_column => 'report_end_date',
16405 p_column_value => trunc(p_financial_report_rec.report_end_date),
16406 p_old_column_value => trunc(l_report_end_date),
16407 x_return_status => x_return_status);
16408
16409 /*IF g_debug THEN
16410 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16411 'report_end_date is non-updateable field. ' ||
16412 'x_return_status = ' || x_return_status, l_debug_prefix);
16413 END IF;
16414 */
16415 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16416 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'report_end_date is non-updateable field. ' ||
16417 'x_return_status = ' || x_return_status,
16418 p_msg_level=>fnd_log.level_statement);
16419 END IF;
16420
16421
16422 END IF;
16423 ------------------------------------
16424 --Lookup Validations
16425 --validation for audit_ind
16426 ------------------------------------
16427 /****Logical APIs - validation not required****/
16428 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16429 -- audit_ind is lookup code in lookup type YES/NO
16430 validate_lookup (
16431 p_column => 'audit_ind',
16432 p_lookup_type => 'YES/NO',
16433 p_column_value => p_financial_report_rec.audit_ind,
16434 x_return_status => x_return_status);
16435
16436 /*IF g_debug THEN
16437 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16438 'audit_ind should be in lookup YES/NO. ' ||
16439 'x_return_status = ' || x_return_status, l_debug_prefix);
16440 END IF;
16441 */
16442 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16443 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'audit_ind should be in lookup YES/NO. ' ||
16444 'x_return_status = ' || x_return_status,
16445 p_msg_level=>fnd_log.level_statement);
16446 END IF;
16447 END IF;
16448
16449 ----------------------------------
16450 -- validation for consolidated_ind
16451 ----------------------------------
16452 /****Logical APIs - validation not required****/
16453 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16454 -- consolidated_ind is lookup code in lookup type YES/NO
16455 validate_lookup (
16456 p_column => 'consolidated_ind',
16457 p_lookup_type => 'YES/NO',
16458 p_column_value => p_financial_report_rec.consolidated_ind,
16459 x_return_status => x_return_status);
16460
16461 /*IF g_debug THEN
16462 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16463 'consolidated_ind should be in lookup YES/NO. ' ||
16464 'x_return_status = ' || x_return_status, l_debug_prefix);
16465 END IF;
16466 */
16467 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16468 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'consolidated_ind should be in lookup YES/NO. ' ||
16469 'x_return_status = ' || x_return_status,
16470 p_msg_level=>fnd_log.level_statement);
16471 END IF;
16472 END IF;
16473
16474 ------------------------------------
16475 --validation for estimated_ind
16476 ------------------------------------
16477 /****Logical APIs - validation not required****/
16478 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16479 -- estimated_ind is lookup code in lookup type YES/NO
16480 validate_lookup (
16481 p_column => 'estimated_ind',
16482 p_lookup_type => 'YES/NO',
16483 p_column_value => p_financial_report_rec.estimated_ind,
16484 x_return_status => x_return_status);
16485
16486 /*IF g_debug THEN
16487 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16488 'estimated_ind should be in lookup YES/NO. ' ||
16489 'x_return_status = ' || x_return_status, l_debug_prefix);
16490 END IF;
16491 */
16492 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16493 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'estimated_ind should be in lookup YES/NO. ' ||
16494 'x_return_status = ' || x_return_status,
16495 p_msg_level=>fnd_log.level_statement);
16496 END IF;
16497 END IF;
16498
16499 ----------------------------------
16500 -- validation for fiscal_ind
16501 ----------------------------------
16502 /****Logical APIs - validation not required****/
16503 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16504 -- fiscal_ind is lookup code in lookup type YES/NO
16505 validate_lookup (
16506 p_column => 'fiscal_ind',
16507 p_lookup_type => 'YES/NO',
16508 p_column_value => p_financial_report_rec.fiscal_ind,
16509 x_return_status => x_return_status);
16510
16511 /*IF g_debug THEN
16512 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16513 'fiscal_ind should be in lookup YES/NO. ' ||
16514 'x_return_status = ' || x_return_status, l_debug_prefix);
16515 END IF;
16516 */
16517 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16518 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'fiscal_ind should be in lookup YES/NO. ' ||
16519 'x_return_status = ' || x_return_status,
16520 p_msg_level=>fnd_log.level_statement);
16521 END IF;
16522 END IF;
16523
16524 --Bug 2940399: Added FINAL_IND column in financial_report_rec_type. Hence
16525 --added the validation for final_ind.
16526
16527 ----------------------------------
16528 -- validation for final_ind
16529 ----------------------------------
16530 /****Logical APIs - validation not required****/
16531 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16532 -- fiscal_ind is lookup code in lookup type YES/NO
16533 validate_lookup (
16534 p_column => 'final_ind',
16535 p_lookup_type => 'YES/NO',
16536 p_column_value => p_financial_report_rec.final_ind,
16537 x_return_status => x_return_status);
16538
16539 /*IF g_debug THEN
16540 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16541 'final_ind should be in lookup YES/NO. ' ||
16542 'x_return_status = ' || x_return_status, l_debug_prefix);
16543 END IF;
16544 */
16545 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16546 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'final_ind should be in lookup YES/NO. ' ||
16547 'x_return_status = ' || x_return_status,
16548 p_msg_level=>fnd_log.level_statement);
16549 END IF;
16550 END IF;
16551
16552 ------------------------------------
16553 --validation for forecast_ind
16554 ------------------------------------
16555 /****Logical APIs - validation not required****/
16556 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16557 -- forecast_ind is lookup code in lookup type YES/NO
16558 validate_lookup (
16559 p_column => 'forecast_ind',
16560 p_lookup_type => 'YES/NO',
16561 p_column_value => p_financial_report_rec.forecast_ind,
16562 x_return_status => x_return_status);
16563
16564 /*IF g_debug THEN
16565 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16566 'forecast_ind should be in lookup YES/NO. ' ||
16567 'x_return_status = ' || x_return_status, l_debug_prefix);
16568 END IF;
16569 */
16570 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16571 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'forecast_ind should be in lookup YES/NO. ' ||
16572 'x_return_status = ' || x_return_status,
16573 p_msg_level=>fnd_log.level_statement);
16574 END IF;
16575 END IF;
16576
16577 ----------------------------------
16578 -- validation for opening_ind
16579 ----------------------------------
16580 /****Logical APIs - validation not required****/
16581 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16582 -- opening_ind is lookup code in lookup type YES/NO
16583 validate_lookup (
16584 p_column => 'opening_ind',
16585 p_lookup_type => 'YES/NO',
16586 p_column_value => p_financial_report_rec.opening_ind,
16587 x_return_status => x_return_status);
16588
16589 /*IF g_debug THEN
16590 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16591 'opening_ind should be in lookup YES/NO. ' ||
16592 'x_return_status = ' || x_return_status, l_debug_prefix);
16593 END IF;
16594 */
16595 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16596 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'opening_ind should be in lookup YES/NO. ' ||
16597 'x_return_status = ' || x_return_status,
16598 p_msg_level=>fnd_log.level_statement);
16599 END IF;
16600 END IF;
16601
16602 ------------------------------------
16603 --validation for proforma_ind
16604 ------------------------------------
16605 /****Logical APIs - validation not required****/
16606 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16607 -- proforma_ind is lookup code in lookup type YES/NO
16608 validate_lookup (
16609 p_column => 'proforma_ind',
16610 p_lookup_type => 'YES/NO',
16611 p_column_value => p_financial_report_rec.proforma_ind,
16612 x_return_status => x_return_status);
16613
16614 /*IF g_debug THEN
16615 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16616 'proforma_ind should be in lookup YES/NO. ' ||
16617 'x_return_status = ' || x_return_status, l_debug_prefix);
16618 END IF;
16619 */
16620 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16621 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'proforma_ind should be in lookup YES/NO. ' ||
16622 'x_return_status = ' || x_return_status,
16623 p_msg_level=>fnd_log.level_statement);
16624 END IF;
16625 END IF;
16626
16627 ----------------------------------
16628 -- validation for qualified_ind
16629 ----------------------------------
16630 /****Logical APIs - validation not required****/
16631 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16632 -- qualified_ind is lookup code in lookup type YES/NO
16633 validate_lookup (
16634 p_column => 'qualified_ind',
16635 p_lookup_type => 'YES/NO',
16636 p_column_value => p_financial_report_rec.qualified_ind,
16637 x_return_status => x_return_status);
16638
16639 /*IF g_debug THEN
16640 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16641 'qualified_ind should be in lookup YES/NO. ' ||
16642 'x_return_status = ' || x_return_status, l_debug_prefix);
16643 END IF;
16644 */
16645 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16646 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'qualified_ind should be in lookup YES/NO. ' ||
16647 'x_return_status = ' || x_return_status,
16648 p_msg_level=>fnd_log.level_statement);
16649 END IF;
16650 END IF;
16651
16652 ------------------------------------
16653 --validation for restated_ind
16654 ------------------------------------
16655 /****Logical APIs - validation not required****/
16656 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16657 -- restated_ind is lookup code in lookup type YES/NO
16658 validate_lookup (
16659 p_column => 'restated_ind',
16660 p_lookup_type => 'YES/NO',
16661 p_column_value => p_financial_report_rec.restated_ind,
16662 x_return_status => x_return_status);
16663
16664 /*IF g_debug THEN
16665 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16666 'restated_ind should be in lookup YES/NO. ' ||
16667 'x_return_status = ' || x_return_status, l_debug_prefix);
16668 END IF;
16669 */
16670 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16671 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'restated_ind should be in lookup YES/NO. ' ||
16672 'x_return_status = ' || x_return_status,
16673 p_msg_level=>fnd_log.level_statement);
16674 END IF;
16675 END IF;
16676
16677 ----------------------------------
16678 -- validation for signed_by_principals_ind
16679 ----------------------------------
16680 /****Logical APIs - validation not required****/
16681 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16682 -- signed_by_principals_ind is lookup code in lookup type YES/NO
16683 validate_lookup (
16684 p_column => 'signed_by_principals_ind',
16685 p_lookup_type => 'YES/NO',
16686 p_column_value => p_financial_report_rec.signed_by_principals_ind,
16687 x_return_status => x_return_status);
16688
16689 /*IF g_debug THEN
16690 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16691 'signed_by_principals_ind should be in lookup YES/NO. ' ||
16692 'x_return_status = ' || x_return_status, l_debug_prefix);
16693 END IF;
16694 */
16695 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16696 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'signed_by_principals_ind should be in lookup YES/NO. ' ||
16697 'x_return_status = ' || x_return_status,
16698 p_msg_level=>fnd_log.level_statement);
16699 END IF;
16700 END IF;
16701
16702 ------------------------------------
16703 --validation for trial_balance_ind
16704 ------------------------------------
16705 /****Logical APIs - validation not required****/
16706 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16707 -- trial_balance_ind is lookup code in lookup type YES/NO
16708 validate_lookup (
16709 p_column => 'trial_balance_ind',
16710 p_lookup_type => 'YES/NO',
16711 p_column_value => p_financial_report_rec.trial_balance_ind,
16712 x_return_status => x_return_status);
16713
16714 /*IF g_debug THEN
16715 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16716 'trial_balance_ind should be in lookup YES/NO. ' ||
16717 'x_return_status = ' || x_return_status, l_debug_prefix);
16718 END IF;
16719 */
16720 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16721 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'trial_balance_ind should be in lookup YES/NO. ' ||
16722 'x_return_status = ' || x_return_status,
16723 p_msg_level=>fnd_log.level_statement);
16724 END IF;
16725 END IF;
16726
16727 ----------------------------------
16728 -- validation for unbalanced_ind
16729 ----------------------------------
16730 /****Logical APIs - validation not required****/
16731 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16732 -- unbalanced_ind is lookup code in lookup type YES/NO
16733 validate_lookup (
16734 p_column => 'unbalanced_ind',
16735 p_lookup_type => 'YES/NO',
16736 p_column_value => p_financial_report_rec.unbalanced_ind,
16737 x_return_status => x_return_status);
16738
16739 /*IF g_debug THEN
16740 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16741 'unbalanced_ind should be in lookup YES/NO. ' ||
16742 'x_return_status = ' || x_return_status, l_debug_prefix);
16743 END IF;
16744 */
16745 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16746 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'unbalanced_ind should be in lookup YES/NO. ' ||
16747 'x_return_status = ' || x_return_status,
16748 p_msg_level=>fnd_log.level_statement);
16749 END IF;
16750 END IF;
16751
16752 ------------------------
16753 -- validation for status
16754 ------------------------
16755 /****Logical APIs - validation not required****/
16756 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16757 -- status is lookup code in lookup type REGISTRY_STATUS
16758 IF p_financial_report_rec.status IS NOT NULL
16759 AND
16760 p_financial_report_rec.status <> fnd_api.g_miss_char
16761 AND
16762 (p_create_update_flag = 'C'
16763 OR
16764 (p_create_update_flag = 'U'
16765 AND
16766 p_financial_report_rec.status <> NVL(l_status, fnd_api.g_miss_char)
16767 )
16768 )
16769 THEN
16770 validate_lookup (
16771 p_column => 'status',
16772 p_lookup_type => 'REGISTRY_STATUS',
16773 p_column_value => p_financial_report_rec.status,
16774 x_return_status => x_return_status);
16775
16776 /*IF g_debug THEN
16777 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16778 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
16779 'x_return_status = ' || x_return_status, l_debug_prefix);
16780 END IF;
16781 */
16782 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16783 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=> 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
16784 'x_return_status = ' || x_return_status,
16785 p_msg_level=>fnd_log.level_statement);
16786 END IF;
16787
16788
16789 END IF;
16790 END IF;
16791
16792 -- status cannot be set to null during update
16793 IF p_create_update_flag = 'U' THEN
16794 validate_cannot_update_to_null (
16795 p_column => 'status',
16796 p_column_value => p_financial_report_rec.status,
16797 x_return_status => x_return_status);
16798 END IF;
16799
16800 --------------------------------
16801 --validate actual_content_source
16802 --------------------------------
16803
16804 -- actual_content_source is mandatory field
16805 IF p_create_update_flag = 'C' THEN
16806 validate_mandatory (
16807 p_create_update_flag => p_create_update_flag,
16808 p_column => 'actual_content_source',
16809 p_column_value => p_financial_report_rec.actual_content_source,
16810 x_return_status => x_return_status);
16811
16812 /*IF g_debug THEN
16813 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16814 'actual_content_source is mandatory field. ' ||
16815 'x_return_status = ' || x_return_status, l_debug_prefix);
16816 END IF;
16817 */
16818 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16819 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'actual_content_source is mandatory field. ' ||
16820 'x_return_status = ' || x_return_status,
16821 p_msg_level=>fnd_log.level_statement);
16822 END IF;
16823
16824
16825 END IF;
16826
16827 /* SSM SST Integration and Extension
16828 * actual_content_source is now a foreign key to HZ_ORIG_SYSTEMS_B.orig_system where sst_flag = 'Y'.
16829 -- actual_content_source is lookup code in lookup type CONTENT_SOURCE_TYPE
16830 validate_lookup (
16831 p_column => 'actual_content_source',
16832 p_lookup_type => 'CONTENT_SOURCE_TYPE',
16833 p_column_value => p_financial_report_rec.actual_content_source,
16834 x_return_status => x_return_status);
16835 */
16836 /*IF g_debug THEN
16837 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16838 'actual_content_source should be in lookup CONTENT_SOURCE_TYPE. ' ||
16839 'x_return_status = ' || x_return_status, l_debug_prefix);
16840 END IF;
16841 */
16842 /*
16843 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
16844 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16845 p_message=>'actual_content_source should be in lookup CONTENT_SOURCE_TYPE. ' ||
16846 'x_return_status = ' || x_return_status,
16847 p_msg_level=>fnd_log.level_statement);
16848 END IF;
16849 */
16850
16851 HZ_MIXNM_UTILITY.ValidateContentSource (
16852 p_api_version => 'V2',
16853 p_create_update_flag => p_create_update_flag,
16854 p_check_update_privilege => 'Y',
16855 p_content_source_type => 'USER_ENTERED',
16856 p_old_content_source_type => 'USER_ENTERED',
16857 p_actual_content_source => p_financial_report_rec.actual_content_source,
16858 p_old_actual_content_source => l_actual_content_source,
16859 p_entity_name => 'HZ_FINANCIAL_REPORTS',
16860 x_return_status => x_return_status );
16861
16862 ----------------------------
16863 --validate created_by_module
16864 ----------------------------
16865
16866 validate_created_by_module(
16867 p_create_update_flag => p_create_update_flag,
16868 p_created_by_module => p_financial_report_rec.created_by_module,
16869 p_old_created_by_module => l_created_by_module,
16870 x_return_status => x_return_status);
16871
16872 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
16873 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_financial_report (-)',
16874 p_msg_level=>fnd_log.level_procedure);
16875 END IF;
16876
16877 END validate_financial_report;
16878
16879 /**
16880 * PROCEDURE validate_financial_number
16881 *
16882 * DESCRIPTION
16883 * Validates financial number record. Checks for
16884 * uniqueness
16885 * lookup types
16886 * mandatory columns
16887 * non-updateable fields
16888 * foreign key validations
16889 * other validations
16890 *
16891 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
16892 *
16893 * ARGUMENTS
16894 * IN:
16895 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
16896 * p_financial_number_rec Financial number record.
16897 * p_rowid Rowid of the record (used only in update mode).
16898 * IN/OUT:
16899 * x_return_status Return status after the call. The status can
16900 * be FND_API.G_RET_STS_SUCCESS (success),
16901 * fnd_api.g_ret_sts_error (error),
16902 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
16903 *
16904 * NOTES
16905 *
16906 * MODIFICATION HISTORY
16907 *
16908 * 29-JAN-2003 Sreedhar Mohan o Created.
16909 *
16910 */
16911 --bug 3942332: added out parameter x_actual_content_source
16912 PROCEDURE validate_financial_number(
16913 p_create_update_flag IN VARCHAR2,
16914 p_financial_number_rec IN HZ_ORGANIZATION_INFO_V2PUB.FINANCIAL_NUMBER_REC_TYPE,
16915 p_rowid IN ROWID,
16916 x_return_status IN OUT NOCOPY VARCHAR2,
16917 x_actual_content_source OUT NOCOPY VARCHAR2
16918 ) IS
16919
16920 CURSOR c_dup_financial_number_id (p_financial_report_id IN NUMBER) IS
16921 SELECT 'Y'
16922 FROM hz_financial_numbers hfr
16923 WHERE hfr.financial_number_id = financial_number_id;
16924
16925 CURSOR c_unique_financial_number_rec ( p_financial_report_id IN NUMBER,
16926 p_financial_number_name IN VARCHAR2) IS
16927 SELECT 'Y'
16928 FROM hz_financial_numbers
16929 WHERE financial_report_id = p_financial_report_id
16930 AND nvl(financial_number_name, 'XXX') = nvl(p_financial_number_name, 'XXX');
16931
16932 l_financial_number_id hz_financial_numbers.financial_number_id%TYPE;
16933 l_financial_number_name hz_financial_numbers.financial_number_name%TYPE;
16934 l_financial_report_id hz_financial_numbers.financial_report_id%TYPE;
16935 l_status hz_financial_numbers.status%TYPE;
16936 l_created_by_module hz_financial_numbers.created_by_module%TYPE;
16937 l_dummy VARCHAR2(1);
16938 l_debug_prefix VARCHAR2(30) := '';
16939
16940 BEGIN
16941
16942 --enable_debug;
16943
16944 -- Debug info.
16945 /*IF g_debug THEN
16946 hz_utility_v2pub.debug ('validate_financial_number (+)');
16947 END IF;
16948 */
16949 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
16950 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_financial_number (+)',
16951 p_msg_level=>fnd_log.level_procedure);
16952 END IF;
16953
16954 -- do the query to get old values for update
16955 IF p_create_update_flag = 'U'
16956 THEN
16957 SELECT FINANCIAL_NUMBER_ID,
16958 FINANCIAL_REPORT_ID,
16959 FINANCIAL_NUMBER_NAME,
16960 STATUS,
16961 CREATED_BY_MODULE
16962 INTO l_financial_number_id,
16963 l_financial_report_id,
16964 l_financial_number_name,
16965 l_status,
16966 l_created_by_module
16967 FROM HZ_FINANCIAL_NUMBERS
16968 WHERE ROWID = p_rowid;
16969 END IF;
16970
16971 -------------------------------------
16972 -- validation for financial_number_id
16973 -------------------------------------
16974 /****Logical APIs - validation not required****/
16975 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
16976 --check for unique financial_number_id
16977 IF p_create_update_flag = 'C' THEN
16978 IF p_financial_number_rec.financial_number_id IS NOT NULL AND
16979 p_financial_number_rec.financial_number_id <> fnd_api.g_miss_num
16980 THEN
16981 OPEN c_dup_financial_number_id (p_financial_number_rec.financial_number_id);
16982 FETCH c_dup_financial_number_id INTO l_dummy;
16983
16984 -- key is not unique, push an error onto the stack.
16985 IF NVL(c_dup_financial_number_id%FOUND, FALSE) THEN
16986 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
16987 fnd_message.set_token('COLUMN', 'financial_number_id');
16988 fnd_msg_pub.add;
16989 x_return_status := fnd_api.g_ret_sts_error;
16990 END IF;
16991 CLOSE c_dup_financial_number_id;
16992
16993 /*IF g_debug THEN
16994 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
16995 'check that financial_number_id is unique during creation. ' ||
16996 ' x_return_status = ' || x_return_status, l_debug_prefix);
16997 END IF;
16998 */
16999 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17000 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'check that financial_number_id is unique during creation. ' ||
17001 ' x_return_status = ' || x_return_status,
17002 p_msg_level=>fnd_log.level_statement);
17003 END IF;
17004
17005 END IF;
17006 END IF;
17007
17008 /*IF g_debug THEN
17009 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17010 '(+) after validate financial_number_id ... ' ||
17011 'x_return_status = ' || x_return_status, l_debug_prefix);
17012 END IF;
17013 */
17014 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17015 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate financial_number_id ... ' ||
17016 'x_return_status = ' || x_return_status,
17017 p_msg_level=>fnd_log.level_statement);
17018 END IF;
17019
17020 -- financial_number_id is non-updateable field
17021 IF p_create_update_flag = 'U' THEN
17022 validate_nonupdateable (
17023 p_column => 'financial_number_id',
17024 p_column_value => p_financial_number_rec.financial_number_id,
17025 p_old_column_value => l_financial_number_id,
17026 x_return_status => x_return_status);
17027
17028 /*IF g_debug THEN
17029 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17030 'financial_number_id is non-updateable field. ' ||
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=>'financial_number_id is non-updateable field. ' ||
17036 'x_return_status = ' || x_return_status,
17037 p_msg_level=>fnd_log.level_statement);
17038 END IF;
17039
17040 END IF;
17041 END IF;
17042
17043 -------------------------------------
17044 -- validation for financial_report_id
17045 -------------------------------------
17046 /****Logical APIs - validation not required****/
17047 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
17048 --Must exist in HZ_FINANCIAL_REPORTS. Non-updateable.
17049 -- financial_report_id has foreign key HZ_FINANCIAL_REPORTS.FINANCIAL_REPORT_ID
17050 IF p_create_update_flag = 'C'
17051 AND
17052 p_financial_number_rec.financial_report_id IS NOT NULL
17053 AND
17054 p_financial_number_rec.financial_report_id <> fnd_api.g_miss_num
17055 THEN
17056 BEGIN
17057 --bug 3942332: selected actual_content_source from the hz_financial_reports record.
17058 --SELECT 'Y'
17059 --INTO l_dummy
17060 SELECT actual_content_source
17061 INTO x_actual_content_source
17062 FROM hz_financial_reports hfr
17063 WHERE hfr.financial_report_id = p_financial_number_rec.financial_report_id;
17064
17065 EXCEPTION
17066 WHEN NO_DATA_FOUND THEN
17067 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
17068 fnd_message.set_token('FK', 'financial_report_id');
17069 fnd_message.set_token('COLUMN', 'financial_report_id');
17070 fnd_message.set_token('TABLE', 'hz_financial_reports');
17071 fnd_msg_pub.add;
17072 x_return_status := fnd_api.g_ret_sts_error;
17073 END;
17074
17075 /*IF g_debug THEN
17076 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17077 'financial_report_id has foreign key hz_financial_reports.financial_report_id. ' ||
17078 'x_return_status = ' || x_return_status, l_debug_prefix);
17079 END IF;
17080 */
17081 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17082 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17083 p_message=>'financial_report_id has foreign key hz_financial_reports.financial_report_id. ' ||
17084 'x_return_status = ' || x_return_status,
17085 p_msg_level=>fnd_log.level_statement);
17086 END IF;
17087
17088 END IF;
17089
17090 -- financial_report_id is non-updateable field
17091 IF p_create_update_flag = 'U' THEN
17092 validate_nonupdateable (
17093 p_column => 'financial_report_id',
17094 p_column_value => p_financial_number_rec.financial_report_id,
17095 p_old_column_value => l_financial_report_id,
17096 x_return_status => x_return_status);
17097
17098 /*IF g_debug THEN
17099 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17100 'financial_report_id is non-updateable field. ' ||
17101 'x_return_status = ' || x_return_status, l_debug_prefix);
17102 END IF;
17103 */
17104 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17105 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'financial_report_id is non-updateable field. ' ||
17106 'x_return_status = ' || x_return_status,
17107 p_msg_level=>fnd_log.level_statement);
17108 END IF;
17109
17110 END IF;
17111
17112 -- financial_report_id is mandatory field
17113 IF p_create_update_flag = 'C' THEN
17114 validate_mandatory (
17115 p_create_update_flag => p_create_update_flag,
17116 p_column => 'financial_report_id',
17117 p_column_value => p_financial_number_rec.financial_report_id,
17118 x_return_status => x_return_status);
17119
17120 /*IF g_debug THEN
17121 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17122 'financial_report_id is mandatory field. ' ||
17123 'x_return_status = ' || x_return_status, l_debug_prefix);
17124 END IF;
17125 */
17126 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17127 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'financial_report_id is mandatory field. ' ||
17128 'x_return_status = ' || x_return_status,
17129 p_msg_level=>fnd_log.level_statement);
17130 END IF;
17131
17132 END IF;
17133 END IF;
17134
17135 ---------------------------------------
17136 --Bug 2869162: Unique record Validation
17137 ---------------------------------------
17138 IF p_create_update_flag = 'C' THEN
17139 OPEN c_unique_financial_number_rec ( p_financial_number_rec.financial_report_id,
17140 p_financial_number_rec.financial_number_name);
17141
17142 FETCH c_unique_financial_number_rec INTO l_dummy;
17143
17144 -- combination key is not unique, push an error onto the stack.
17145 IF NVL(c_unique_financial_number_rec%FOUND, FALSE) THEN
17146 fnd_message.set_name('AR', 'HZ_API_DUP_FIN_NUMBER_REC');
17147 fnd_msg_pub.add;
17148 x_return_status := fnd_api.g_ret_sts_error;
17149 END IF;
17150 CLOSE c_unique_financial_number_rec;
17151
17152 /*IF g_debug THEN
17153 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17154 'The following column combination should be unique:' ||
17155 ' FINANCIAL_REPORT_ID, FINANCIAL_NUMBER_NAME. ' ||
17156 ' x_return_status = ' || x_return_status, l_debug_prefix);
17157 END IF;
17158 */
17159 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17160 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'The following column combination should be unique:' ||
17161 ' FINANCIAL_REPORT_ID, FINANCIAL_NUMBER_NAME. ' ||
17162 ' x_return_status = ' || x_return_status,
17163 p_msg_level=>fnd_log.level_statement);
17164 END IF;
17165 END IF;
17166 -----------------------------------------
17167 --financial_number_name in non-updateable
17168 -----------------------------------------
17169 IF p_create_update_flag = 'U' THEN
17170 validate_nonupdateable (
17171 p_column => 'financial_number_name',
17172 p_column_value => p_financial_number_rec.financial_number_name,
17173 p_old_column_value => l_financial_number_name,
17174 x_return_status => x_return_status);
17175
17176 /*IF g_debug THEN
17177 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17178 'financial_number_name is non-updateable field. ' ||
17179 'x_return_status = ' || x_return_status, l_debug_prefix);
17180 END IF;
17181 */
17182 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17183 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17184 p_message=>'financial_number_name is non-updateable field. ' ||
17185 'x_return_status = ' || x_return_status,
17186 p_msg_level=>fnd_log.level_statement);
17187 END IF;
17188
17189 END IF;
17190 ---------------------------------------
17191 -- validation for financial_number_name
17192 ---------------------------------------
17193
17194 -- financial_number_name is lookup code in lookup type FIN_NUM_NAME
17195 validate_lookup (
17196 p_column => 'financial_number_name',
17197 p_lookup_type => 'FIN_NUM_NAME',
17198 p_column_value => p_financial_number_rec.financial_number_name,
17199 x_return_status => x_return_status);
17200
17201 /*IF g_debug THEN
17202 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17203 'financial_number_name should be in lookup YES/NO. ' ||
17204 'x_return_status = ' || x_return_status, l_debug_prefix);
17205 END IF;
17206 */
17207 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17208 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17209 p_message=>'financial_number_name should be in lookup YES/NO. ' ||
17210 'x_return_status = ' || x_return_status,
17211 p_msg_level=>fnd_log.level_statement);
17212 END IF;
17213
17214 ------------------------
17215 -- validation for status
17216 ------------------------
17217 /****Logical APIs - validation not required****/
17218 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
17219 -- status is lookup code in lookup type REGISTRY_STATUS
17220 IF p_financial_number_rec.status IS NOT NULL
17221 AND
17222 p_financial_number_rec.status <> fnd_api.g_miss_char
17223 AND
17224 (p_create_update_flag = 'C'
17225 OR
17226 (p_create_update_flag = 'U'
17227 AND
17228 p_financial_number_rec.status <> NVL(l_status, fnd_api.g_miss_char)
17229 )
17230 )
17231 THEN
17232 validate_lookup (
17233 p_column => 'status',
17234 p_lookup_type => 'REGISTRY_STATUS',
17235 p_column_value => p_financial_number_rec.status,
17236 x_return_status => x_return_status);
17237
17238 /*IF g_debug THEN
17239 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17240 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
17241 'x_return_status = ' || x_return_status, l_debug_prefix);
17242 END IF;
17243 */
17244 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17245 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17246 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
17247 'x_return_status = ' || x_return_status,
17248 p_msg_level=>fnd_log.level_statement);
17249 END IF;
17250
17251 END IF;
17252 END IF;
17253
17254 -- status cannot be set to null during update
17255 IF p_create_update_flag = 'U' THEN
17256 validate_cannot_update_to_null (
17257 p_column => 'status',
17258 p_column_value => p_financial_number_rec.status,
17259 x_return_status => x_return_status);
17260 END IF;
17261
17262 --------------------------------------
17263 -- validate created_by_module
17264 --------------------------------------
17265
17266 validate_created_by_module(
17267 p_create_update_flag => p_create_update_flag,
17268 p_created_by_module => p_financial_number_rec.created_by_module,
17269 p_old_created_by_module => l_created_by_module,
17270 x_return_status => x_return_status);
17271
17272 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
17273 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_financial_number (-)',
17274 p_msg_level=>fnd_log.level_procedure);
17275 END IF;
17276
17277 END validate_financial_number;
17278
17279 /**
17280 * PROCEDURE validate_credit_rating
17281 *
17282 * DESCRIPTION
17283 * Validates credit rating record. Checks for
17284 * uniqueness
17285 * lookup types
17286 * mandatory columns
17287 * non-updateable fields
17288 * foreign key validations
17289 * other validations
17290 *
17291 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
17292 *
17293 * ARGUMENTS
17294 * IN:
17295 * p_create_update_flag Create update flag. 'C' = create. 'U' = update.
17296 * p_credit_rating_rec Credit rating record.
17297 * p_rowid Rowid of the record (used only in update mode).
17298 * IN/OUT:
17299 * x_return_status Return status after the call. The status can
17300 * be FND_API.G_RET_STS_SUCCESS (success),
17301 * fnd_api.g_ret_sts_error (error),
17302 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
17303 *
17304 * NOTES
17305 *
17306 * MODIFICATION HISTORY
17307 *
17308 * 01-27-2003 Sreedhar Mohan o Created.
17309 * 03-11-2003 Sreedhar Mohan Changed the lookup_type to FAILURE_SCORE_OVERRIDE_CODE
17310 * instead of FAILURE_SCORE_OVERRIDE_SCORE
17311 * for the code credit_score_override_code
17312 * 03-14-2003 Sreedhar Mohan Bug 2843453, modified such that, fincl_embt_ind should
17313 * be validated against YES/NO instead of REGISTRY_STATUS
17314 * 10-09-2003 Rajib R Borah o Bug 3090928.Commented the code to check for uniqueness of
17315 * party_id,rated_as_of_date,rating_organization. This is now
17316 * handled by the unique index HZ_CREDIT_RATINGS_U2.
17317 * 04-05-2004 Rajib R Borah o Bug 3181460. Credit_score_natl_percentile and
17318 * failure_score_natnl_percentile should have a value
17319 * within 0 to 100 only.
17320 * o Added local variables l_credit_score_natl_percentile and
17321 * l_fail_score_natnl_percentile for the same.
17322 * 01-03-2005 Rajib Ranjan Borah o SSM SST Integration and Extension.
17323 * Actual_content_source will now be validated against
17324 * HZ_ORIG_SYSTEMS_B by calling Hz_MIXNM_UTILITY.ValidateContentSource
17325 * instead of being validated against lookup CONTENT_SOURCE_TYPE.
17326 * 01-24-2005 Kalyan o Bug 3877782. Added the condition to consider 'start_date_active' and
17327 * 'end_date_active'.
17328 */
17329
17330 PROCEDURE validate_credit_rating(
17331 p_create_update_flag IN VARCHAR2,
17332 p_credit_rating_rec IN HZ_PARTY_INFO_V2PUB.CREDIT_RATING_REC_TYPE,
17333 p_rowid IN ROWID,
17334 x_return_status IN OUT NOCOPY VARCHAR2
17335 ) IS
17336
17337 CURSOR c_dup_credit_rating_id (p_credting_rating_id IN NUMBER) IS
17338 SELECT 'Y'
17339 FROM hz_credit_ratings hcr
17340 WHERE hcr.credit_rating_id = p_credting_rating_id;
17341
17342 CURSOR c_unique_credit_rating_rec ( p_party_id IN NUMBER,
17343 p_rated_as_of_date IN DATE,
17344 p_rating_organization IN VARCHAR2,
17345 p_actual_content_source IN VARCHAR2) IS
17346 SELECT 'Y'
17347 FROM hz_credit_ratings hc
17348 WHERE hc.party_id = p_party_id
17349 AND trunc(nvl(hc.rated_as_of_date, to_date('12/31/4712','MM/DD/YYYY'))) =
17350 trunc(nvl(p_rated_as_of_date, to_date('12/31/4712','MM/DD/YYYY')))
17351 AND nvl(hc.rating_organization, 'XXX') = nvl(p_rating_organization, 'XXX')
17352 AND nvl(hc.actual_content_source, hz_party_v2pub.G_MISS_CONTENT_SOURCE_TYPE) =
17353 nvl(p_actual_content_source, hz_party_v2pub.G_MISS_CONTENT_SOURCE_TYPE);
17354
17355 l_credit_rating_id hz_credit_ratings.credit_rating_id%TYPE;
17356 l_party_id hz_credit_ratings.party_id%TYPE;
17357 l_rating_organization hz_credit_ratings.rating_organization%TYPE;
17358 l_rated_as_of_date hz_credit_ratings.rated_as_of_date%TYPE;
17359 l_fincl_embt_ind hz_credit_ratings.fincl_embt_ind%TYPE;
17360 l_credit_score_commentary hz_credit_ratings.credit_score_commentary%TYPE;
17361 l_credit_score_commentary2 hz_credit_ratings.credit_score_commentary2%TYPE;
17362 l_credit_score_commentary3 hz_credit_ratings.credit_score_commentary3%TYPE;
17363 l_credit_score_commentary4 hz_credit_ratings.credit_score_commentary4%TYPE;
17364 l_credit_score_commentary5 hz_credit_ratings.credit_score_commentary5%TYPE;
17365 l_credit_score_commentary6 hz_credit_ratings.credit_score_commentary6%TYPE;
17366 l_credit_score_commentary7 hz_credit_ratings.credit_score_commentary7%TYPE;
17367 l_credit_score_commentary8 hz_credit_ratings.credit_score_commentary8%TYPE;
17368 l_credit_score_commentary9 hz_credit_ratings.credit_score_commentary9%TYPE;
17369 l_credit_score_commentary10 hz_credit_ratings.credit_score_commentary10%TYPE;
17370 l_failure_score_commentary hz_credit_ratings.failure_score_commentary%TYPE;
17371 l_failure_score_commentary2 hz_credit_ratings.failure_score_commentary2%TYPE;
17372 l_failure_score_commentary3 hz_credit_ratings.failure_score_commentary3%TYPE;
17373 l_failure_score_commentary4 hz_credit_ratings.failure_score_commentary4%TYPE;
17374 l_failure_score_commentary5 hz_credit_ratings.failure_score_commentary5%TYPE;
17375 l_failure_score_commentary6 hz_credit_ratings.failure_score_commentary6%TYPE;
17376 l_failure_score_commentary7 hz_credit_ratings.failure_score_commentary7%TYPE;
17377 l_failure_score_commentary8 hz_credit_ratings.failure_score_commentary8%TYPE;
17378 l_failure_score_commentary9 hz_credit_ratings.failure_score_commentary9%TYPE;
17379 l_failure_score_commentary10 hz_credit_ratings.failure_score_commentary10%TYPE;
17380 l_status hz_credit_ratings.status%TYPE;
17381 l_created_by_module hz_credit_ratings.created_by_module%TYPE;
17382 l_debarment_ind hz_credit_ratings.debarment_ind%TYPE;
17383 l_maximum_credit_currency_code hz_credit_ratings.maximum_credit_currency_code%TYPE;
17384 l_credit_score_override_code hz_credit_ratings.credit_score_override_code%TYPE;
17385 l_suit_ind hz_credit_ratings.suit_ind%TYPE;
17386 l_lien_ind hz_credit_ratings.lien_ind%TYPE;
17387 l_judgement_ind hz_credit_ratings.judgement_ind%TYPE;
17388 l_bankruptcy_ind hz_credit_ratings.bankruptcy_ind%TYPE;
17389 l_no_trade_ind hz_credit_ratings.no_trade_ind%TYPE;
17390 l_prnt_hq_bkcy_ind hz_credit_ratings.prnt_hq_bkcy_ind%TYPE;
17391 l_actual_content_source hz_credit_ratings.actual_content_source%TYPE;
17392 l_credit_score_natl_percentile hz_credit_ratings.credit_score_natl_percentile%TYPE;
17393 l_fail_score_natnl_percentile hz_credit_ratings.failure_score_natnl_percentile%TYPE;
17394 l_dummy VARCHAR2(1);
17395 l_debug_prefix VARCHAR2(30) := '';
17396
17397 BEGIN
17398
17399 --enable_debug;
17400
17401 -- Debug info.
17402 /*IF g_debug THEN
17403 hz_utility_v2pub.debug ('validate_credit_rating (+)');
17404 END IF;
17405 */
17406 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
17407 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_credit_rating (+)',
17408 p_msg_level=>fnd_log.level_procedure);
17409 END IF;
17410
17411 -- do the query to get old values for update
17412 IF p_create_update_flag = 'U'
17413 THEN
17414 SELECT CREDIT_RATING_ID,
17415 PARTY_ID,
17416 RATING_ORGANIZATION,
17417 RATED_AS_OF_DATE,
17418 FINCL_EMBT_IND,
17419 CREDIT_SCORE_COMMENTARY,
17420 CREDIT_SCORE_COMMENTARY2,
17421 CREDIT_SCORE_COMMENTARY3,
17422 CREDIT_SCORE_COMMENTARY4,
17423 CREDIT_SCORE_COMMENTARY5,
17424 CREDIT_SCORE_COMMENTARY6,
17425 CREDIT_SCORE_COMMENTARY7,
17426 CREDIT_SCORE_COMMENTARY8,
17427 CREDIT_SCORE_COMMENTARY9,
17428 CREDIT_SCORE_COMMENTARY10,
17429 FAILURE_SCORE_COMMENTARY,
17430 FAILURE_SCORE_COMMENTARY2,
17431 FAILURE_SCORE_COMMENTARY3,
17432 FAILURE_SCORE_COMMENTARY4,
17433 FAILURE_SCORE_COMMENTARY5,
17434 FAILURE_SCORE_COMMENTARY6,
17435 FAILURE_SCORE_COMMENTARY7,
17436 FAILURE_SCORE_COMMENTARY8,
17437 FAILURE_SCORE_COMMENTARY9,
17438 FAILURE_SCORE_COMMENTARY10,
17439 DEBARMENT_IND,
17440 MAXIMUM_CREDIT_CURRENCY_CODE,
17441 CREDIT_SCORE_OVERRIDE_CODE,
17442 SUIT_IND,
17443 LIEN_IND,
17444 JUDGEMENT_IND,
17445 BANKRUPTCY_IND,
17446 NO_TRADE_IND,
17447 PRNT_HQ_BKCY_IND,
17448 ACTUAL_CONTENT_SOURCE,
17449 STATUS,
17450 CREATED_BY_MODULE,
17451 CREDIT_SCORE_NATL_PERCENTILE,
17452 FAILURE_SCORE_NATNL_PERCENTILE
17453 INTO l_credit_rating_id,
17454 l_party_id,
17455 l_rating_organization,
17456 l_rated_as_of_date,
17457 l_fincl_embt_ind,
17458 l_credit_score_commentary,
17459 l_credit_score_commentary2,
17460 l_credit_score_commentary3,
17461 l_credit_score_commentary4,
17462 l_credit_score_commentary5,
17463 l_credit_score_commentary6,
17464 l_credit_score_commentary7,
17465 l_credit_score_commentary8,
17466 l_credit_score_commentary9,
17467 l_credit_score_commentary10,
17468 l_failure_score_commentary,
17469 l_failure_score_commentary2,
17470 l_failure_score_commentary3,
17471 l_failure_score_commentary4,
17472 l_failure_score_commentary5,
17473 l_failure_score_commentary6,
17474 l_failure_score_commentary7,
17475 l_failure_score_commentary8,
17476 l_failure_score_commentary9,
17477 l_failure_score_commentary10,
17478 l_debarment_ind,
17479 l_maximum_credit_currency_code,
17480 l_credit_score_override_code,
17481 l_suit_ind,
17482 l_lien_ind,
17483 l_judgement_ind,
17484 l_bankruptcy_ind,
17485 l_no_trade_ind,
17486 l_prnt_hq_bkcy_ind,
17487 l_actual_content_source,
17488 l_status,
17489 l_created_by_module,
17490 l_credit_score_natl_percentile,
17491 l_fail_score_natnl_percentile
17492 FROM HZ_CREDIT_RATINGS
17493 WHERE ROWID = p_rowid;
17494 END IF;
17495
17496 -------------------------------------
17497 -- validation for credit_rating_id
17498 -------------------------------------
17499 /****Logical APIs - validation not required****/
17500 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
17501 --check for unique credit_rating_id
17502 IF p_create_update_flag = 'C' THEN
17503 IF p_credit_rating_rec.credit_rating_id IS NOT NULL AND
17504 p_credit_rating_rec.credit_rating_id <> fnd_api.g_miss_num
17505 THEN
17506 OPEN c_dup_credit_rating_id (p_credit_rating_rec.credit_rating_id);
17507 FETCH c_dup_credit_rating_id INTO l_dummy;
17508
17509 -- key is not unique, push an error onto the stack.
17510 IF NVL(c_dup_credit_rating_id%FOUND, FALSE) THEN
17511 fnd_message.set_name('AR', 'HZ_API_DUPLICATE_COLUMN');
17512 fnd_message.set_token('COLUMN', 'credit_rating_id');
17513 fnd_msg_pub.add;
17514 x_return_status := fnd_api.g_ret_sts_error;
17515 END IF;
17516 CLOSE c_dup_credit_rating_id;
17517
17518 /*IF g_debug THEN
17519 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17520 'check that credit_rating_id is unique during creation. ' ||
17521 ' x_return_status = ' || x_return_status, l_debug_prefix);
17522 END IF;
17523 */
17524 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17525 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17526 p_message=>'check that credit_rating_id is unique during creation. ' ||
17527 ' x_return_status = ' || x_return_status,
17528 p_msg_level=>fnd_log.level_statement);
17529 END IF;
17530
17531 END IF;
17532 END IF;
17533
17534 /*IF g_debug THEN
17535 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17536 '(+) after validate credit_rating_id ... ' ||
17537 'x_return_status = ' || x_return_status, l_debug_prefix);
17538 END IF;
17539 */
17540 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17541 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'(+) after validate credit_rating_id ... ' ||
17542 'x_return_status = ' || x_return_status,
17543 p_msg_level=>fnd_log.level_statement);
17544 END IF;
17545
17546 -- credit_rating_id is non-updateable field
17547 IF p_create_update_flag = 'U' THEN
17548 validate_nonupdateable (
17549 p_column => 'credit_rating_id',
17550 p_column_value => p_credit_rating_rec.credit_rating_id,
17551 p_old_column_value => l_credit_rating_id,
17552 x_return_status => x_return_status);
17553
17554 /*IF g_debug THEN
17555 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17556 'credit_rating_id is non-updateable field. ' ||
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=>'credit_rating_id is non-updateable field. ' ||
17562 'x_return_status = ' || x_return_status,
17563 p_msg_level=>fnd_log.level_statement);
17564 END IF;
17565
17566 END IF;
17567 END IF;
17568
17569 -------------------------------------
17570 -- validation for party_id
17571 -------------------------------------
17572 /****Logical APIs - validation not required****/
17573 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
17574 --party_id is a mandatory field
17575 IF p_create_update_flag = 'C' THEN
17576 validate_mandatory (
17577 p_create_update_flag => p_create_update_flag,
17578 p_column => 'party_id',
17579 p_column_value => p_credit_rating_rec.party_id,
17580 x_return_status => x_return_status);
17581
17582 /*IF g_debug THEN
17583 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17584 'party_id is mandatory field. ' ||
17585 'x_return_status = ' || x_return_status, l_debug_prefix);
17586 END IF;
17587 */
17588 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17589 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is mandatory field. ' ||
17590 'x_return_status = ' || x_return_status,
17591 p_msg_level=>fnd_log.level_statement);
17592 END IF;
17593
17594 END IF;
17595 -- party_id has foreign key HZ_PARTIES.PARTY_ID
17596 IF p_create_update_flag = 'C'
17597 AND
17598 p_credit_rating_rec.party_id IS NOT NULL
17599 AND
17600 p_credit_rating_rec.party_id <> fnd_api.g_miss_num
17601 THEN
17602 BEGIN
17603 SELECT 'Y'
17604 INTO l_dummy
17605 FROM hz_parties p
17606 WHERE p.party_id = p_credit_rating_rec.party_id;
17607
17608 EXCEPTION
17609 WHEN NO_DATA_FOUND THEN
17610 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
17611 fnd_message.set_token('FK', 'party_id');
17612 fnd_message.set_token('COLUMN', 'party_id');
17613 fnd_message.set_token('TABLE', 'hz_parties');
17614 fnd_msg_pub.add;
17615 x_return_status := fnd_api.g_ret_sts_error;
17616 END;
17617
17618 /*IF g_debug THEN
17619 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17620 'party_id has foreign key hz_parties.party_id. ' ||
17621 'x_return_status = ' || x_return_status, l_debug_prefix);
17622 END IF;
17623 */
17624 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17625 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id has foreign key hz_parties.party_id. ' ||
17626 'x_return_status = ' || x_return_status,
17627 p_msg_level=>fnd_log.level_statement);
17628 END IF;
17629
17630 END IF;
17631
17632 -- party_id is non-updateable field
17633 IF p_create_update_flag = 'U' THEN
17634 validate_nonupdateable (
17635 p_column => 'party_id',
17636 p_column_value => p_credit_rating_rec.party_id,
17637 p_old_column_value => l_party_id,
17638 x_return_status => x_return_status);
17639
17640 /*IF g_debug THEN
17641 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17642 'party_id is non-updateable field. ' ||
17643 'x_return_status = ' || x_return_status, l_debug_prefix);
17644 END IF;
17645 */
17646 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17647 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'party_id is non-updateable field. ' ||
17648 'x_return_status = ' || x_return_status,
17649 p_msg_level=>fnd_log.level_statement);
17650 END IF;
17651
17652 END IF;
17653 END IF;
17654
17655 /**********************************************************************************
17656 Bug Number 3090928:Removed the validation below and used the unique index HZ_CREDIT_RATINGS_U2
17657 on table HZ_CREDIT_RATINGS to check for uniqueness.Now this check is done by handling the
17658 exception DUP_VAL_ON_INDEX for the unique index HZ_CREDIT_RATINGS_U2 in the procedure
17659 HZ_CREDIT_RATINGS_PKG.Insert_Row.
17660 ***********************************************************************************
17661 |---------------------------------------
17662 |--Bug 2869178: Unique record Validation
17663 |---------------------------------------
17664 |IF p_create_update_flag = 'C' THEN
17665 | OPEN c_unique_credit_rating_rec (p_credit_rating_rec.party_id,
17666 | p_credit_rating_rec.rated_as_of_date,
17667 | p_credit_rating_rec.rating_organization,
17668 | p_credit_rating_rec.actual_content_source);
17669 | FETCH c_unique_credit_rating_rec INTO l_dummy;
17670 |
17671 | -- combination key is not unique, push an error onto the stack.
17672 | IF NVL(c_unique_credit_rating_rec%FOUND, FALSE) THEN
17673 | fnd_message.set_name('AR', 'HZ_API_DUP_CREDIT_RATING_REC');
17674 | fnd_msg_pub.add;
17675 | x_return_status := fnd_api.g_ret_sts_error;
17676 | END IF;
17677 | CLOSE c_unique_credit_rating_rec;
17678 |
17679 | IF g_debug THEN
17680 | hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17681 | 'The following column combination should be unique:' ||
17682 | ' PARTY_ID, TRUNC(RATED_AS_OF_DATE), RATING_ORGANIZATION, and ACTUAL_CONTENT_SOURCE. ' ||
17683 | ' x_return_status = ' || x_return_status, l_debug_prefix);
17684 | END IF;
17685 |END IF;
17686 ********************************************************************************
17687 End of code commented for Bug Number 3090928.
17688 ********************************************************************************/
17689 ------------------------------------
17690 --rated_as_of_date is not updateable
17691 ------------------------------------
17692 IF p_create_update_flag = 'U' THEN
17693 validate_nonupdateable (
17694 p_column => 'rated_as_of_date',
17695 p_column_value => trunc(p_credit_rating_rec.rated_as_of_date),
17696 p_old_column_value => trunc(l_rated_as_of_date),
17697 x_return_status => x_return_status);
17698
17699 /*IF g_debug THEN
17700 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17701 'rated_as_of_date is non-updateable field. ' ||
17702 'x_return_status = ' || x_return_status, l_debug_prefix);
17703 END IF;
17704 */
17705 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17706 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'rated_as_of_date is non-updateable field. ' ||
17707 'x_return_status = ' || x_return_status,
17708 p_msg_level=>fnd_log.level_statement);
17709 END IF;
17710
17711 END IF;
17712 ---------------------------------------
17713 --rating_organization is not updateable
17714 ---------------------------------------
17715 IF p_create_update_flag = 'U' THEN
17716 validate_nonupdateable (
17717 p_column => 'rating_organization',
17718 p_column_value => p_credit_rating_rec.rating_organization,
17719 p_old_column_value => l_rating_organization,
17720 x_return_status => x_return_status);
17721
17722 /*IF g_debug THEN
17723 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17724 'rating_organization is non-updateable field. ' ||
17725 'x_return_status = ' || x_return_status, l_debug_prefix);
17726 END IF;
17727 */
17728 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17729 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'rating_organization is non-updateable field. ' ||
17730 'x_return_status = ' || x_return_status,
17731 p_msg_level=>fnd_log.level_statement);
17732 END IF;
17733
17734 END IF;
17735 ----------------------------------
17736 -- validation for fincl_embt_ind
17737 ----------------------------------
17738 /****Logical APIs - validation not required****/
17739 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
17740 --bug 2843453, fincl_embt_ind should be validated against YES/NO instead
17741 --of REGISTRY_STATUS
17742 -- fincl_embt_ind is lookup code in lookup type YES/NO
17743 validate_lookup (
17744 p_column => 'fincl_embt_ind',
17745 p_lookup_type => 'YES/NO',
17746 p_column_value => p_credit_rating_rec.fincl_embt_ind,
17747 x_return_status => x_return_status);
17748
17749 /*IF g_debug THEN
17750 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17751 'fincl_embt_ind should be in lookup YES/NO. ' ||
17752 'x_return_status = ' || x_return_status, l_debug_prefix);
17753 END IF;
17754 */
17755 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17756 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'fincl_embt_ind should be in lookup YES/NO. ' ||
17757 'x_return_status = ' || x_return_status,
17758 p_msg_level=>fnd_log.level_statement);
17759 END IF;
17760 END IF;
17761
17762 -----------------------------------------
17763 -- validation for credit_score_commentary
17764 -----------------------------------------
17765
17766 -- credit_score_commentary is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17767 validate_lookup (
17768 p_column => 'credit_score_commentary',
17769 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17770 p_column_value => p_credit_rating_rec.credit_score_commentary,
17771 x_return_status => x_return_status);
17772
17773 /*IF g_debug THEN
17774 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17775 'credit_score_commentary should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17776 'x_return_status = ' || x_return_status, l_debug_prefix);
17777 END IF;
17778 */
17779 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17780 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17781 p_message=>'credit_score_commentary should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17782 'x_return_status = ' || x_return_status,
17783 p_msg_level=>fnd_log.level_statement);
17784 END IF;
17785
17786
17787 ------------------------------------------
17788 -- validation for credit_score_commentary2
17789 ------------------------------------------
17790
17791 -- credit_score_commentary2 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17792 validate_lookup (
17793 p_column => 'credit_score_commentary2',
17794 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17795 p_column_value => p_credit_rating_rec.credit_score_commentary2,
17796 x_return_status => x_return_status);
17797
17798 /*IF g_debug THEN
17799 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17800 'credit_score_commentary2 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17801 'x_return_status = ' || x_return_status, l_debug_prefix);
17802 END IF;
17803 */
17804 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17805 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'credit_score_commentary2 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17806 'x_return_status = ' || x_return_status,
17807 p_msg_level=>fnd_log.level_statement);
17808 END IF;
17809
17810 ------------------------------------------
17811 -- validation for credit_score_commentary3
17812 ------------------------------------------
17813
17814 -- credit_score_commentary3 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17815 validate_lookup (
17816 p_column => 'credit_score_commentary3',
17817 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17818 p_column_value => p_credit_rating_rec.credit_score_commentary3,
17819 x_return_status => x_return_status);
17820
17821 /*IF g_debug THEN
17822 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17823 'credit_score_commentary3 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17824 'x_return_status = ' || x_return_status, l_debug_prefix);
17825 END IF;
17826 */
17827 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17828 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'credit_score_commentary3 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17829 'x_return_status = ' || x_return_status,
17830 p_msg_level=>fnd_log.level_statement);
17831 END IF;
17832
17833 ------------------------------------------
17834 -- validation for credit_score_commentary4
17835 ------------------------------------------
17836
17837 -- credit_score_commentary4 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17838 validate_lookup (
17839 p_column => 'credit_score_commentary4',
17840 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17841 p_column_value => p_credit_rating_rec.credit_score_commentary4,
17842 x_return_status => x_return_status);
17843
17844 /*IF g_debug THEN
17845 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17846 'credit_score_commentary4 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17847 'x_return_status = ' || x_return_status, l_debug_prefix);
17848 END IF;
17849 */
17850 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17851 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'credit_score_commentary4 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17852 'x_return_status = ' || x_return_status,
17853 p_msg_level=>fnd_log.level_statement);
17854 END IF;
17855
17856 ------------------------------------------
17857 -- validation for credit_score_commentary5
17858 ------------------------------------------
17859
17860 -- credit_score_commentary5 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17861 validate_lookup (
17862 p_column => 'credit_score_commentary5',
17863 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17864 p_column_value => p_credit_rating_rec.credit_score_commentary5,
17865 x_return_status => x_return_status);
17866
17867 /*IF g_debug THEN
17868 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17869 'credit_score_commentary5 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17870 'x_return_status = ' || x_return_status, l_debug_prefix);
17871 END IF;
17872 */
17873 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17874 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'credit_score_commentary5 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17875 'x_return_status = ' || x_return_status,
17876 p_msg_level=>fnd_log.level_statement);
17877 END IF;
17878
17879 ------------------------------------------
17880 -- validation for credit_score_commentary6
17881 ------------------------------------------
17882
17883 -- credit_score_commentary6 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17884 validate_lookup (
17885 p_column => 'credit_score_commentary6',
17886 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17887 p_column_value => p_credit_rating_rec.credit_score_commentary6,
17888 x_return_status => x_return_status);
17889
17890 /*IF g_debug THEN
17891 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17892 'credit_score_commentary6 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17893 'x_return_status = ' || x_return_status, l_debug_prefix);
17894 END IF;
17895 */
17896 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17897 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'credit_score_commentary6 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17898 'x_return_status = ' || x_return_status,
17899 p_msg_level=>fnd_log.level_statement);
17900 END IF;
17901
17902 ------------------------------------------
17903 -- validation for credit_score_commentary7
17904 ------------------------------------------
17905
17906 -- credit_score_commentary7 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17907 validate_lookup (
17908 p_column => 'credit_score_commentary7',
17909 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17910 p_column_value => p_credit_rating_rec.credit_score_commentary7,
17911 x_return_status => x_return_status);
17912
17913 /*IF g_debug THEN
17914 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17915 'credit_score_commentary7 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17916 'x_return_status = ' || x_return_status, l_debug_prefix);
17917 END IF;
17918 */
17919 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17920 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'credit_score_commentary7 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17921 'x_return_status = ' || x_return_status,
17922 p_msg_level=>fnd_log.level_statement);
17923 END IF;
17924
17925 ------------------------------------------
17926 -- validation for credit_score_commentary8
17927 ------------------------------------------
17928
17929 -- credit_score_commentary8 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17930 validate_lookup (
17931 p_column => 'credit_score_commentary8',
17932 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17933 p_column_value => p_credit_rating_rec.credit_score_commentary8,
17934 x_return_status => x_return_status);
17935
17936 /*IF g_debug THEN
17937 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17938 'credit_score_commentary8 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17939 'x_return_status = ' || x_return_status, l_debug_prefix);
17940 END IF;
17941 */
17942 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17943 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17944 p_message=>'credit_score_commentary8 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17945 'x_return_status = ' || x_return_status,
17946 p_msg_level=>fnd_log.level_statement);
17947 END IF;
17948
17949 ------------------------------------------
17950 -- validation for credit_score_commentary9
17951 ------------------------------------------
17952
17953 -- credit_score_commentary9 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17954 validate_lookup (
17955 p_column => 'credit_score_commentary9',
17956 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17957 p_column_value => p_credit_rating_rec.credit_score_commentary9,
17958 x_return_status => x_return_status);
17959
17960 /*IF g_debug THEN
17961 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17962 'credit_score_commentary9 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17963 'x_return_status = ' || x_return_status, l_debug_prefix);
17964 END IF;
17965 */
17966 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17967 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17968 p_message=>'credit_score_commentary9 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17969 'x_return_status = ' || x_return_status,
17970 p_msg_level=>fnd_log.level_statement);
17971 END IF;
17972
17973 -------------------------------------------
17974 -- validation for credit_score_commentary10
17975 -------------------------------------------
17976
17977 -- credit_score_commentary10 is lookup code in lookup type CREDIT_SCORE_COMMENTARY
17978 validate_lookup (
17979 p_column => 'credit_score_commentary10',
17980 p_lookup_type => 'CREDIT_SCORE_COMMENTARY',
17981 p_column_value => p_credit_rating_rec.credit_score_commentary10,
17982 x_return_status => x_return_status);
17983
17984 /*IF g_debug THEN
17985 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17986 'credit_score_commentary10 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17987 'x_return_status = ' || x_return_status, l_debug_prefix);
17988 END IF;
17989 */
17990 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
17991 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
17992 p_message=>'credit_score_commentary10 should be in lookup CREDIT_SCORE_COMMENTARY. ' ||
17993 'x_return_status = ' || x_return_status,
17994 p_msg_level=>fnd_log.level_statement);
17995 END IF;
17996
17997 ------------------------------------------
17998 -- validation for failure_score_commentary
17999 ------------------------------------------
18000
18001 -- failure_score_commentary is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18002 validate_lookup (
18003 p_column => 'failure_score_commentary',
18004 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18005 p_column_value => p_credit_rating_rec.failure_score_commentary,
18006 x_return_status => x_return_status);
18007
18008 /*IF g_debug THEN
18009 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18010 'failure_score_commentary should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18011 'x_return_status = ' || x_return_status, l_debug_prefix);
18012 END IF;
18013 */
18014 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18015 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18016 p_message=>'failure_score_commentary should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18017 'x_return_status = ' || x_return_status,
18018 p_msg_level=>fnd_log.level_statement);
18019 END IF;
18020
18021 -------------------------------------------
18022 -- validation for failure_score_commentary2
18023 -------------------------------------------
18024
18025 -- failure_score_commentary2 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18026 validate_lookup (
18027 p_column => 'failure_score_commentary2',
18028 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18029 p_column_value => p_credit_rating_rec.failure_score_commentary2,
18030 x_return_status => x_return_status);
18031
18032 /*IF g_debug THEN
18033 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18034 'failure_score_commentary2 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18035 'x_return_status = ' || x_return_status, l_debug_prefix);
18036 END IF;
18037 */
18038 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18039 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18040 p_message=>'failure_score_commentary2 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18041 'x_return_status = ' || x_return_status,
18042 p_msg_level=>fnd_log.level_statement);
18043 END IF;
18044
18045 -------------------------------------------
18046 -- validation for failure_score_commentary3
18047 -------------------------------------------
18048
18049 -- failure_score_commentary3 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18050 validate_lookup (
18051 p_column => 'failure_score_commentary3',
18052 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18053 p_column_value => p_credit_rating_rec.failure_score_commentary3,
18054 x_return_status => x_return_status);
18055
18056 /*IF g_debug THEN
18057 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18058 'failure_score_commentary2 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18059 'x_return_status = ' || x_return_status, l_debug_prefix);
18060 END IF;
18061 */
18062 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18063 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18064 p_message=>'failure_score_commentary2 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18065 'x_return_status = ' || x_return_status,
18066 p_msg_level=>fnd_log.level_statement);
18067 END IF;
18068
18069 -------------------------------------------
18070 -- validation for failure_score_commentary4
18071 -------------------------------------------
18072
18073 -- failure_score_commentary4 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18074 validate_lookup (
18075 p_column => 'failure_score_commentary4',
18076 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18077 p_column_value => p_credit_rating_rec.failure_score_commentary4,
18078 x_return_status => x_return_status);
18079
18080 /*IF g_debug THEN
18081 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18082 'failure_score_commentary4 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18083 'x_return_status = ' || x_return_status, l_debug_prefix);
18084 END IF;
18085 */
18086 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18087 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18088 p_message=>'failure_score_commentary4 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18089 'x_return_status = ' || x_return_status,
18090 p_msg_level=>fnd_log.level_statement);
18091 END IF;
18092
18093 -------------------------------------------
18094 -- validation for failure_score_commentary5
18095 -------------------------------------------
18096
18097 -- failure_score_commentary5 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18098 validate_lookup (
18099 p_column => 'failure_score_commentary5',
18100 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18101 p_column_value => p_credit_rating_rec.failure_score_commentary5,
18102 x_return_status => x_return_status);
18103
18104 /*IF g_debug THEN
18105 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18106 'failure_score_commentary5 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18107 'x_return_status = ' || x_return_status, l_debug_prefix);
18108 END IF;
18109 */
18110 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18111 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18112 p_message=>'failure_score_commentary5 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18113 'x_return_status = ' || x_return_status,
18114 p_msg_level=>fnd_log.level_statement);
18115 END IF;
18116
18117 -------------------------------------------
18118 -- validation for failure_score_commentary6
18119 -------------------------------------------
18120
18121 -- failure_score_commentary6 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18122 validate_lookup (
18123 p_column => 'failure_score_commentary6',
18124 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18125 p_column_value => p_credit_rating_rec.failure_score_commentary6,
18126 x_return_status => x_return_status);
18127
18128 /*IF g_debug THEN
18129 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18130 'failure_score_commentary6 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18131 'x_return_status = ' || x_return_status, l_debug_prefix);
18132 END IF;
18133 */
18134 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18135 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18136 p_message=>'failure_score_commentary6 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18137 'x_return_status = ' || x_return_status,
18138 p_msg_level=>fnd_log.level_statement);
18139 END IF;
18140
18141 -------------------------------------------
18142 -- validation for failure_score_commentary7
18143 -------------------------------------------
18144
18145 -- failure_score_commentary7 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18146 validate_lookup (
18147 p_column => 'failure_score_commentary7',
18148 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18149 p_column_value => p_credit_rating_rec.failure_score_commentary7,
18150 x_return_status => x_return_status);
18151
18152 /*IF g_debug THEN
18153 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18154 'failure_score_commentary7 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18155 'x_return_status = ' || x_return_status, l_debug_prefix);
18156 END IF;
18157 */
18158 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18159 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18160 p_message=>'failure_score_commentary7 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18161 'x_return_status = ' || x_return_status,
18162 p_msg_level=>fnd_log.level_statement);
18163 END IF;
18164
18165 -------------------------------------------
18166 -- validation for failure_score_commentary8
18167 -------------------------------------------
18168
18169 -- failure_score_commentary8 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18170 validate_lookup (
18171 p_column => 'failure_score_commentary8',
18172 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18173 p_column_value => p_credit_rating_rec.failure_score_commentary8,
18174 x_return_status => x_return_status);
18175
18176 /*IF g_debug THEN
18177 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18178 'failure_score_commentary8 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18179 'x_return_status = ' || x_return_status, l_debug_prefix);
18180 END IF;
18181 */
18182 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18183 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18184 p_message=>'failure_score_commentary8 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18185 'x_return_status = ' || x_return_status,
18186 p_msg_level=>fnd_log.level_statement);
18187 END IF;
18188
18189 -------------------------------------------
18190 -- validation for failure_score_commentary9
18191 -------------------------------------------
18192
18193 -- failure_score_commentary9 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18194 validate_lookup (
18195 p_column => 'failure_score_commentary9',
18196 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18197 p_column_value => p_credit_rating_rec.failure_score_commentary9,
18198 x_return_status => x_return_status);
18199
18200 /*IF g_debug THEN
18201 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18202 'failure_score_commentary9 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18203 'x_return_status = ' || x_return_status, l_debug_prefix);
18204 END IF;
18205 */
18206 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18207 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18208 p_message=>'failure_score_commentary9 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18209 'x_return_status = ' || x_return_status,
18210 p_msg_level=>fnd_log.level_statement);
18211 END IF;
18212
18213 --------------------------------------------
18214 -- validation for failure_score_commentary10
18215 --------------------------------------------
18216
18217 -- failure_score_commentary10 is lookup code in lookup type FAILURE_SCORE_COMMENTARY
18218 validate_lookup (
18219 p_column => 'failure_score_commentary10',
18220 p_lookup_type => 'FAILURE_SCORE_COMMENTARY',
18221 p_column_value => p_credit_rating_rec.failure_score_commentary10,
18222 x_return_status => x_return_status);
18223
18224 /*IF g_debug THEN
18225 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18226 'failure_score_commentary10 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18227 'x_return_status = ' || x_return_status, l_debug_prefix);
18228 END IF;
18229 */
18230 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18231 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18232 p_message=>'failure_score_commentary10 should be in lookup FAILURE_SCORE_COMMENTARY. ' ||
18233 'x_return_status = ' || x_return_status,
18234 p_msg_level=>fnd_log.level_statement);
18235 END IF;
18236
18237 --------------------------------------------
18238 -- validation for credit_score_override_code
18239 --------------------------------------------
18240
18241 -- credit_score_override_code is lookup code in lookup type FAILURE_SCORE_OVERRIDE_CODE
18242 validate_lookup (
18243 p_column => 'credit_score_override_code',
18244 p_lookup_type => 'FAILURE_SCORE_OVERRIDE_CODE',
18245 p_column_value => p_credit_rating_rec.credit_score_override_code,
18246 x_return_status => x_return_status);
18247
18248 /*IF g_debug THEN
18249 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18250 'credit_score_override_code should be in lookup FAILURE_SCORE_OVERRIDE_CODE. ' ||
18251 'x_return_status = ' || x_return_status, l_debug_prefix);
18252 END IF;
18253 */
18254 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18255 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18256 p_message=>'credit_score_override_code should be in lookup FAILURE_SCORE_OVERRIDE_CODE. ' ||
18257 'x_return_status = ' || x_return_status,
18258 p_msg_level=>fnd_log.level_statement);
18259 END IF;
18260
18261 --------------------------------------------
18262 -- validation for debarment_ind
18263 --------------------------------------------
18264 /****Logical APIs - validation not required****/
18265 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
18266 -- debarment_ind is lookup code in lookup type YES/NO
18267 validate_lookup (
18268 p_column => 'debarment_ind',
18269 p_lookup_type => 'YES/NO',
18270 p_column_value => p_credit_rating_rec.debarment_ind,
18271 x_return_status => x_return_status);
18272
18273 /*IF g_debug THEN
18274 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18275 'debarment_ind should be in lookup YES/NO. ' ||
18276 'x_return_status = ' || x_return_status, l_debug_prefix);
18277 END IF;
18278 */
18279 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18280 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'debarment_ind should be in lookup YES/NO. ' ||
18281 'x_return_status = ' || x_return_status,
18282 p_msg_level=>fnd_log.level_statement);
18283 END IF;
18284 END IF;
18285
18286 --------------------------------------------
18287 -- validation for suit_ind
18288 --------------------------------------------
18289 /****Logical APIs - validation not required****/
18290 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
18291 -- suit_ind is lookup code in lookup type YES/NO
18292 validate_lookup (
18293 p_column => 'suit_ind',
18294 p_lookup_type => 'YES/NO',
18295 p_column_value => p_credit_rating_rec.suit_ind,
18296 x_return_status => x_return_status);
18297
18298 /*IF g_debug THEN
18299 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18300 'suit_ind should be in lookup YES/NO. ' ||
18301 'x_return_status = ' || x_return_status, l_debug_prefix);
18302 END IF;
18303 */
18304 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18305 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'suit_ind should be in lookup YES/NO. ' ||
18306 'x_return_status = ' || x_return_status,
18307 p_msg_level=>fnd_log.level_statement);
18308 END IF;
18309 END IF;
18310
18311 --------------------------------------------
18312 -- validation for lien_ind
18313 --------------------------------------------
18314 /****Logical APIs - validation not required****/
18315 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
18316 -- lien_ind is lookup code in lookup type YES/NO
18317 validate_lookup (
18318 p_column => 'lien_ind',
18319 p_lookup_type => 'YES/NO',
18320 p_column_value => p_credit_rating_rec.lien_ind,
18321 x_return_status => x_return_status);
18322
18323 /*IF g_debug THEN
18324 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18325 'lien_ind should be in lookup YES/NO. ' ||
18326 'x_return_status = ' || x_return_status, l_debug_prefix);
18327 END IF;
18328 */
18329 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18330 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'lien_ind should be in lookup YES/NO. ' ||
18331 'x_return_status = ' || x_return_status,
18332 p_msg_level=>fnd_log.level_statement);
18333 END IF;
18334 END IF;
18335
18336 --------------------------------------------
18337 -- validation for judgement_ind
18338 --------------------------------------------
18339 /****Logical APIs - validation not required****/
18340 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
18341 -- judgement_ind is lookup code in lookup type YES/NO
18342 validate_lookup (
18343 p_column => 'judgement_ind',
18344 p_lookup_type => 'YES/NO',
18345 p_column_value => p_credit_rating_rec.judgement_ind,
18346 x_return_status => x_return_status);
18347
18348 /*IF g_debug THEN
18349 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18350 'judgement_ind should be in lookup YES/NO. ' ||
18351 'x_return_status = ' || x_return_status, l_debug_prefix);
18352 END IF;
18353 */
18354 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18355 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'judgement_ind should be in lookup YES/NO. ' ||
18356 'x_return_status = ' || x_return_status,
18357 p_msg_level=>fnd_log.level_statement);
18358 END IF;
18359 END IF;
18360
18361 --------------------------------------------
18362 -- validation for no_trade_ind
18363 --------------------------------------------
18364 /****Logical APIs - validation not required****/
18365 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
18366 -- no_trade_ind is lookup code in lookup type YES/NO
18367 validate_lookup (
18368 p_column => 'no_trade_ind',
18369 p_lookup_type => 'YES/NO',
18370 p_column_value => p_credit_rating_rec.no_trade_ind,
18371 x_return_status => x_return_status);
18372
18373 /*IF g_debug THEN
18374 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18375 'no_trade_ind should be in lookup YES/NO. ' ||
18376 'x_return_status = ' || x_return_status, l_debug_prefix);
18377 END IF;
18378 */
18379 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18380 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'no_trade_ind should be in lookup YES/NO. ' ||
18381 'x_return_status = ' || x_return_status,
18382 p_msg_level=>fnd_log.level_statement);
18383 END IF;
18384 END IF;
18385
18386 --------------------------------------------
18387 -- validation for prnt_hq_bkcy_ind
18388 --------------------------------------------
18389 --Bug 2898670: prnt_hq_bkcy_ind lookup code should be in the
18390 --lookup_type PRNT_HQ_IND instead of YES/NO
18391 validate_lookup (
18392 p_column => 'prnt_hq_bkcy_ind',
18393 p_lookup_type => 'PRNT_HQ_IND',
18394 p_column_value => p_credit_rating_rec.prnt_hq_bkcy_ind,
18395 x_return_status => x_return_status);
18396
18397 /*IF g_debug THEN
18398 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18399 'prnt_hq_bkcy_ind should be in lookup PRNT_HQ_IND. ' ||
18400 'x_return_status = ' || x_return_status, l_debug_prefix);
18401 END IF;
18402 */
18403 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18404 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'prnt_hq_bkcy_ind should be in lookup PRNT_HQ_IND. ' ||
18405 'x_return_status = ' || x_return_status,
18406 p_msg_level=>fnd_log.level_statement);
18407 END IF;
18408
18409 ----------------------------------------------
18410 -- validation for maximum_credit_currency_code
18411 ----------------------------------------------
18412
18413 -- maximum_credit_currency_code is foreign key to FND_CURRENCIES.CURRENCY_CODE
18414 IF p_create_update_flag = 'C'
18415 AND
18416 p_credit_rating_rec.maximum_credit_currency_code IS NOT NULL
18417 AND
18418 p_credit_rating_rec.maximum_credit_currency_code <> fnd_api.g_miss_char
18419 THEN
18420 BEGIN
18421 --Bug 2898670: Changed the validation as the foreign key validation
18422 --has to be against active records
18423 --Bug 3877782. Added the condition to consider start_date_active and end_date_active.
18424 SELECT 'Y'
18425 INTO l_dummy
18426 FROM fnd_currencies f
18427 WHERE f.currency_code = p_credit_rating_rec.maximum_credit_currency_code
18428 AND currency_flag = 'Y'
18429 AND enabled_flag = 'Y'
18430 AND trunc(sysdate) between trunc(nvl(start_date_active,sysdate))
18431 and trunc(nvl(end_date_active,sysdate));
18432 EXCEPTION
18433 WHEN NO_DATA_FOUND THEN
18434 fnd_message.set_name('AR', 'HZ_API_INVALID_FK');
18435 fnd_message.set_token('FK', 'currency_code');
18436 fnd_message.set_token('COLUMN', 'maximum_credit_currency_code');
18437 fnd_message.set_token('TABLE', 'fnd_currencies');
18438 fnd_msg_pub.add;
18439 x_return_status := fnd_api.g_ret_sts_error;
18440 END;
18441
18442 /*IF g_debug THEN
18443 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18444 'maximum_credit_currency_code has foreign key fnd_currencies.currency_code. ' ||
18445 'x_return_status = ' || x_return_status, l_debug_prefix);
18446 END IF;
18447 */
18448 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18449 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18450 p_message=>'maximum_credit_currency_code has foreign key fnd_currencies.currency_code. ' ||
18451 'x_return_status = ' || x_return_status,
18452 p_msg_level=>fnd_log.level_statement);
18453 END IF;
18454
18455 END IF;
18456
18457
18458 ------------------------
18459 -- validation for status
18460 ------------------------
18461 /****Logical APIs - validation not required****/
18462 IF(HZ_UTILITY_V2PUB.G_CALLING_API IS NULL) THEN
18463 -- status is lookup code in lookup type REGISTRY_STATUS
18464 IF p_credit_rating_rec.status IS NOT NULL
18465 AND
18466 p_credit_rating_rec.status <> fnd_api.g_miss_char
18467 AND
18468 (p_create_update_flag = 'C'
18469 OR
18470 (p_create_update_flag = 'U'
18471 AND
18472 p_credit_rating_rec.status <> NVL(l_status, fnd_api.g_miss_char)
18473 )
18474 )
18475 THEN
18476 validate_lookup (
18477 p_column => 'status',
18478 p_lookup_type => 'REGISTRY_STATUS',
18479 p_column_value => p_credit_rating_rec.status,
18480 x_return_status => x_return_status);
18481
18482 /*IF g_debug THEN
18483 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18484 'status is lookup code in lookup type REGISTRY_STATUS. ' ||
18485 'x_return_status = ' || x_return_status, l_debug_prefix);
18486 END IF;
18487 */
18488 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18489 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18490 p_message=>'status is lookup code in lookup type REGISTRY_STATUS. ' ||
18491 'x_return_status = ' || x_return_status,
18492 p_msg_level=>fnd_log.level_statement);
18493 END IF;
18494
18495 END IF;
18496 END IF;
18497
18498 -- status cannot be set to null during update
18499 IF p_create_update_flag = 'U' THEN
18500 validate_cannot_update_to_null (
18501 p_column => 'status',
18502 p_column_value => p_credit_rating_rec.status,
18503 x_return_status => x_return_status);
18504 END IF;
18505
18506 --------------------------------------------------------
18507 -- validate credit_score_natl_percentile ( Bug 3181460 )
18508 --------------------------------------------------------
18509 -- This column should have a value within the range 0 - 100.
18510
18511 IF p_credit_rating_rec.credit_score_natl_percentile IS NOT NULL AND
18512 p_credit_rating_rec.credit_score_natl_percentile <> FND_API.G_MISS_NUM AND
18513 (p_create_update_flag = 'C' OR
18514 (
18515 p_create_update_flag = 'U' AND
18516 p_credit_rating_rec.credit_score_natl_percentile <> l_credit_score_natl_percentile
18517 )
18518 )
18519 THEN
18520 IF p_credit_rating_rec.credit_score_natl_percentile < 0 OR
18521 p_credit_rating_rec.credit_score_natl_percentile > 100
18522 THEN
18523 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_PERCENTAGE');
18524 FND_MESSAGE.SET_TOKEN('INVALIDVAL', p_credit_rating_rec.credit_score_natl_percentile);
18525 FND_MESSAGE.SET_TOKEN('ATTRIBUTE', 'credit_score_natl_percentile');
18526 FND_MSG_PUB.ADD;
18527 x_return_status := fnd_api.g_ret_sts_error;
18528 END IF;
18529 END IF;
18530
18531 ----------------------------------------------------------
18532 -- validate failure_score_natnl_percentile ( Bug 3181460 )
18533 ----------------------------------------------------------
18534 -- This column should have a value within the range 0 - 100.
18535
18536 IF p_credit_rating_rec.failure_score_natnl_percentile IS NOT NULL AND
18537 p_credit_rating_rec.failure_score_natnl_percentile <> FND_API.G_MISS_NUM AND
18538 (
18539 p_create_update_flag = 'C' OR
18540 (
18541 p_create_update_flag = 'U' AND
18542 p_credit_rating_rec.failure_score_natnl_percentile <> l_fail_score_natnl_percentile
18543 )
18544 )
18545 THEN
18546 IF p_credit_rating_rec.failure_score_natnl_percentile < 0 OR
18547 p_credit_rating_rec.failure_score_natnl_percentile > 100
18548 THEN
18549 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_PERCENTAGE');
18550 FND_MESSAGE.SET_TOKEN('INVALIDVAL', p_credit_rating_rec.failure_score_natnl_percentile);
18551 FND_MESSAGE.SET_TOKEN('ATTRIBUTE', 'failure_score_natnl_percentile');
18552 FND_MSG_PUB.ADD;
18553 x_return_status := fnd_api.g_ret_sts_error;
18554 END IF;
18555 END IF;
18556
18557
18558 --------------------------------------
18559 -- validate created_by_module
18560 --------------------------------------
18561
18562 validate_created_by_module(
18563 p_create_update_flag => p_create_update_flag,
18564 p_created_by_module => p_credit_rating_rec.created_by_module,
18565 p_old_created_by_module => l_created_by_module,
18566 x_return_status => x_return_status);
18567
18568 --------------------------------------------------------------
18569 -- validate content_source_type and actual_content_source_type
18570 --------------------------------------------------------------
18571 /* SSM SST Integration and Extension
18572 * actual_content_source is now a foreign key to HZ_ORIG_SYSTEMS_B.orig_system with sst_flag = 'Y'.
18573 -- actual_content_source is lookup code in lookup type CONTENT_SOURCE_TYPE
18574 validate_lookup (
18575 p_column => 'actual_content_source',
18576 p_lookup_type => 'CONTENT_SOURCE_TYPE',
18577 p_column_value => p_credit_rating_rec.actual_content_source,
18578 x_return_status => x_return_status);
18579 */
18580 /*IF g_debug THEN
18581 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18582 'actual_content_source should be in lookup CONTENT_SOURCE_TYPE. ' ||
18583 'x_return_status = ' || x_return_status, l_debug_prefix);
18584 END IF;
18585 */
18586 /*
18587 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
18588 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,
18589 p_message=>'actual_content_source should be in lookup CONTENT_SOURCE_TYPE. ' ||
18590 'x_return_status = ' || x_return_status,
18591 p_msg_level=>fnd_log.level_statement);
18592 END IF;
18593 */
18594 HZ_MIXNM_UTILITY.ValidateContentSource (
18595 p_api_version => 'V2',
18596 p_create_update_flag => p_create_update_flag,
18597 p_check_update_privilege => 'Y',
18598 p_content_source_type => 'USER_ENTERED',
18599 p_old_content_source_type => 'USER_ENTERED',
18600 p_actual_content_source => p_credit_rating_rec.actual_content_source,
18601 p_old_actual_content_source => l_actual_content_source,
18602 p_entity_name => 'HZ_CREDIT_RATINGS',
18603 x_return_status => x_return_status );
18604
18605 -- Debug info.
18606 /*IF g_debug THEN
18607 hz_utility_v2pub.debug ('validate_credit_rating (-)');
18608 END IF;
18609 */
18610 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
18611 hz_utility_v2pub.debug(p_prefix=>l_debug_prefix,p_message=>'validate_credit_rating (-)',
18612 p_msg_level=>fnd_log.level_procedure);
18613 END IF;
18614
18615 --disable_debug;
18616
18617 END validate_credit_rating;
18618
18619
18620 /**
18621 * PROCEDURE validate_created_by_module
18622 *
18623 * DESCRIPTION
18624 * validate created by module
18625 * ARGUMENTS
18626 * IN:
18627 * p_create_update_flag create update flag
18628 * p_created_by_module created by module
18629 * p_old_created_by_module old value of created by module
18630 * x_return_status return status
18631 */
18632
18633 PROCEDURE validate_created_by_module (
18634 p_create_update_flag IN VARCHAR2,
18635 p_created_by_module IN VARCHAR2,
18636 p_old_created_by_module IN VARCHAR2,
18637 x_return_status IN OUT NOCOPY VARCHAR2
18638 ) IS
18639
18640 l_column CONSTANT VARCHAR2(30) := 'created_by_module';
18641
18642 BEGIN
18643
18644 -- skip mandatory and non-updateable check from logical API
18645 IF HZ_UTILITY_V2PUB.G_CALLING_API IS NULL THEN
18646 -- created_by_module is mandatory field
18647 -- Since created_by_module is non-updateable, we only need to check mandatory
18648 -- during creation.
18649
18650 IF p_create_update_flag = 'C' THEN
18651 validate_mandatory (
18652 p_create_update_flag => p_create_update_flag,
18653 p_column => l_column,
18654 p_column_value => p_created_by_module,
18655 x_return_status => x_return_status);
18656
18657 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
18658 hz_utility_v2pub.debug(
18659 p_prefix => '',
18660 p_message => l_column || ' is mandatory. ' ||
18661 'x_return_status = ' || x_return_status,
18662 p_msg_level => fnd_log.level_statement);
18663 END IF;
18664 END IF;
18665
18666 -- created_by_module is non-updateable field. But it can be updated from
18667 -- NULL to some value.
18668
18669 IF p_create_update_flag = 'U' AND
18670 p_created_by_module IS NOT NULL
18671 THEN
18672 validate_nonupdateable (
18673 p_column => l_column,
18674 p_column_value => p_created_by_module,
18675 p_old_column_value => p_old_created_by_module,
18676 p_restricted => 'N',
18677 x_return_status => x_return_status);
18678
18679 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
18680 hz_utility_v2pub.debug(
18681 p_prefix => '',
18682 p_message => l_column || ' is non-updateable. It can be updated from NULL to a value. ' ||
18683 'x_return_status = ' || x_return_status,
18684 p_msg_level => fnd_log.level_statement);
18685 END IF;
18686 END IF;
18687 END IF;
18688
18689 -- created_by_module is lookup code in lookup type HZ_CREATED_BY_MODULES
18690 IF p_created_by_module IS NOT NULL AND
18691 p_created_by_module <> fnd_api.g_miss_char AND
18692 (p_create_update_flag = 'C' OR
18693 (p_create_update_flag = 'U' AND
18694 (p_old_created_by_module IS NULL OR
18695 p_created_by_module <> p_old_created_by_module)))
18696 THEN
18697 validate_lookup (
18698 p_column => l_column,
18699 p_lookup_type => 'HZ_CREATED_BY_MODULES',
18700 p_column_value => p_created_by_module,
18701 x_return_status => x_return_status);
18702
18703 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
18704 hz_utility_v2pub.debug(
18705 p_prefix => '',
18706 p_message => l_column || ' is lookup code in lookup type HZ_CREATED_BY_MODULES. ' ||
18707 'x_return_status = ' || x_return_status,
18708 p_msg_level => fnd_log.level_statement);
18709 END IF;
18710 END IF;
18711
18712 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
18713 hz_utility_v2pub.debug(
18714 p_prefix => '',
18715 p_message => 'after validate ' || l_column || ' ... ' ||
18716 'x_return_status = ' || x_return_status,
18717 p_msg_level => fnd_log.level_statement);
18718 END IF;
18719
18720 END validate_created_by_module;
18721
18722
18723 /**
18724 * PROCEDURE validate_application_id
18725 *
18726 * DESCRIPTION
18727 * validate application id
18728 * ARGUMENTS
18729 * IN:
18730 * p_create_update_flag create update flag
18731 * p_application_id application id
18732 * p_old_application_id old value of application id
18733 * x_return_status return status
18734 */
18735
18736 PROCEDURE validate_application_id (
18737 p_create_update_flag IN VARCHAR2,
18738 p_application_id IN NUMBER,
18739 p_old_application_id IN NUMBER,
18740 x_return_status IN OUT NOCOPY VARCHAR2
18741 ) IS
18742
18743 l_column CONSTANT VARCHAR2(30) := 'application_id';
18744
18745 BEGIN
18746
18747 -- skip non-updateable check from logical API
18748 IF HZ_UTILITY_V2PUB.G_CALLING_API IS NULL THEN
18749 -- application_id is non-updateable field. But it can be updated from NULL
18750 -- to some value.
18751
18752 IF p_create_update_flag = 'U' AND
18753 p_application_id IS NOT NULL
18754 THEN
18755 validate_nonupdateable (
18756 p_column => l_column,
18757 p_column_value => p_application_id,
18758 p_old_column_value => p_old_application_id,
18759 p_restricted => 'N',
18760 x_return_status => x_return_status);
18761
18762 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
18763 hz_utility_v2pub.debug(
18764 p_prefix => '',
18765 p_message => l_column || ' is non-updateable. It can be updated from NULL to a value. ' ||
18766 'x_return_status = ' || x_return_status,
18767 p_msg_level => fnd_log.level_statement);
18768 END IF;
18769 END IF;
18770 END IF;
18771
18772 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
18773 hz_utility_v2pub.debug(
18774 p_prefix => '',
18775 p_message => 'after validate ' || l_column || ' ... ' ||
18776 'x_return_status = ' || x_return_status,
18777 p_msg_level => fnd_log.level_statement);
18778 END IF;
18779
18780 END validate_application_id;
18781
18782 END hz_registry_validate_v2pub;