1 PACKAGE BODY HZ_POPULATE_BOT_PKG AS
2 /*$Header: ARHPBOTB.pls 120.19 2006/03/06 19:59:53 acng noship $ */
3
4 PROCEDURE pop_parent_record(
5 p_child_id IN NUMBER, -- child Id
6 p_lud IN DATE, -- last update date
7 p_centity_name IN VARCHAR2, -- child entity name
8 p_cbo_code IN VARCHAR2, -- child business object code
9 p_parent_id IN NUMBER, -- parent Id
10 p_pentity_name IN VARCHAR2, -- parent entity name
11 p_pbo_code IN VARCHAR2 -- parent business object code
12 );
13
14 FUNCTION is_valid_ps(
15 p_party_site_id IN NUMBER
16 ) RETURN BOOLEAN;
17
18 -----------------------------------------------------------------
19 -- Private Procedure name: pop_parent_record()
20 -- Purpose: populates parent record to bot tracking table
21 -- Scope: internal
22 -- Called From: procedure in this package
23 -- Input Parameters:
24 -- p_party_id -- person party_id
25 -- p_lud -- last update date
26 -----------------------------------------------------------------
27 -- operation is always U because parent record must exist before child
28 -- record can be created/updated
29 PROCEDURE pop_parent_record(
30 p_child_id IN NUMBER,
31 p_lud IN DATE,
32 p_centity_name IN VARCHAR2,
33 p_cbo_code IN VARCHAR2,
34 p_parent_id IN NUMBER,
35 p_pentity_name IN VARCHAR2,
36 p_pbo_code IN VARCHAR2) IS
37 -- local variables
38 l_child_rec_exists_no NUMBER;
39 l_debug_prefix VARCHAR2(40) := 'pop_parent_record';
40 BEGIN
41 hz_utility_v2pub.DEBUG(p_message=>'pop_parent_record+',
42 p_prefix=>l_debug_prefix,
43 p_msg_level=>fnd_log.level_procedure);
44
45 BEGIN
46 l_child_rec_exists_no := 0;
47 SELECT child_id INTO l_child_rec_exists_no
48 FROM HZ_BUS_OBJ_TRACKING
49 WHERE event_id IS NULL
50 AND CHILD_ENTITY_NAME = p_centity_name
51 AND CHILD_BO_CODE = p_cbo_code
52 AND CHILD_ID = p_child_id
53 AND nvl(PARENT_ID,-99) = nvl(p_parent_id,-99)
54 AND nvl(PARENT_BO_CODE,'X') = nvl(p_pbo_code,'X')
55 AND rownum = 1;
56
57 IF l_child_rec_exists_no <> 0 THEN
58 -- data already exists, no need to write
59 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
60 p_prefix=>l_debug_prefix,
61 p_msg_level=>fnd_log.level_procedure);
62 END IF;
63 EXCEPTION
64 WHEN NO_DATA_FOUND THEN
65 INSERT INTO HZ_BUS_OBJ_TRACKING
66 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
67 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
68 ) VALUES (
69 'Y', 'U', p_child_id, p_centity_name, p_cbo_code,
70 p_lud, p_lud, p_pentity_name, p_parent_id, p_pbo_code);
71 END;
72
73 hz_utility_v2pub.DEBUG(p_message=>'pop_parent_record-',
74 p_prefix=>l_debug_prefix,
75 p_msg_level=>fnd_log.level_procedure);
76 EXCEPTION
77 WHEN NO_DATA_FOUND THEN
78 NULL;
79 END pop_parent_record;
80
81 -----------------------------------------------------------------
82 -- Procedure name: pop_hz_work_class()
83 -- Purpose: populates BOT for HZ_WORK_CLASS create or update
84 -- Scope: internal
85 -- Called From: V2 API
86 -- Called By: HZ_WORK_CLASS create or update APIs
87 -- Input Parameters:
88 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
89 -- p_work_class_id IN NUMBER
90 --
91 -- Note:
92 -- Following are the allowed PARENT and CHILD BO combinations for HZ_WORK_CLASS
93 -- This procedure must ensure that the combination is valid before populating BOT
94 -- PARENT BO: EMP_HIST :: CHILD BO:
95 -----------------------------------------------------------------
96 PROCEDURE pop_hz_work_class(p_operation IN VARCHAR2, p_work_class_id IN NUMBER) IS
97
98 -- cursor statement to select the info from child table
99 CURSOR c_child IS
100 SELECT wc.LAST_UPDATE_DATE lud, wc.EMPLOYMENT_HISTORY_ID parent_id, eh.party_id party_id,
101 wc.WORK_CLASS_ID child_id
102 FROM HZ_WORK_CLASS wc, HZ_EMPLOYMENT_HISTORY eh, HZ_PARTIES p
103 WHERE wc.WORK_CLASS_ID = P_WORK_CLASS_ID
104 AND wc.employment_history_id = eh.employment_history_id
105 AND eh.party_id = p.party_id
106 AND p.party_type = 'PERSON';
107
108 -- local variables
109 l_debug_prefix VARCHAR2(40) := 'pop_hz_work_class';
110 l_parent_id NUMBER; -- used to store parent entity identifier
111 l_bo_code VARCHAR2(30); -- used to store BO Code
112 l_child_bo_code VARCHAR2(30); -- used to store Child BO Code (if child entity is a root node)
113 l_child_id NUMBER; -- used to store HZ_WORK_CLASS identifier
114 l_lud DATE; -- used to store the child last update date
115 l_child_rec_exists_no NUMBER;
116 l_party_id NUMBER; -- person party_id of employment history record
117 l_cen VARCHAR2(30) := 'HZ_WORK_CLASS';
118 BEGIN
119 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_work_class+',
120 p_prefix=>l_debug_prefix,
121 p_msg_level=>fnd_log.level_procedure);
122
123 -- validate p_operation
124 IF p_operation IN ('I','U') THEN
125 NULL;
126 ELSE
127 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_work_class',
128 p_prefix=>l_debug_prefix,
129 p_msg_level=>fnd_log.level_procedure);
130 RAISE FND_API.G_EXC_ERROR;
131 END IF;
132
133 FOR c_child_rec IN c_child LOOP
134 -- collect the child info into variables
135 l_lud := c_child_rec.lud;
136 l_parent_id := c_child_rec.parent_id;
137 l_child_id := c_child_rec.child_id;
138 l_party_id := c_child_rec.party_id;
139
140 -- if record not existing for work class, insert into hz_bus_obj_tracking
141 BEGIN
142 l_child_rec_exists_no := 0;
143 SELECT child_id INTO l_child_rec_exists_no
144 FROM HZ_BUS_OBJ_TRACKING
145 WHERE event_id IS NULL
146 AND CHILD_ENTITY_NAME = l_cen
147 AND CHILD_ID = l_child_id
148 AND rownum = 1;
149
150 IF l_child_rec_exists_no <> 0 THEN
151 -- data already exists, no need to write
152 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
153 p_prefix=>l_debug_prefix,
154 p_msg_level=>fnd_log.level_procedure);
155 END IF;
156 EXCEPTION
157 WHEN NO_DATA_FOUND THEN
158 INSERT INTO HZ_BUS_OBJ_TRACKING
159 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
160 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
161 ) VALUES (
162 'N', p_operation, l_child_id, 'HZ_WORK_CLASS', NULL,
163 l_lud, l_lud, 'HZ_EMPLOYMENT_HISTORY', l_parent_id, 'EMP_HIST');
164
165 -- if record not existing for employment history, insert into hz_bus_obj_tracking
166 pop_parent_record(p_child_id => l_parent_id,
167 p_lud => l_lud,
168 p_centity_name => 'HZ_EMPLOYMENT_HISTORY',
169 p_cbo_code => 'EMP_HIST',
170 p_parent_id => l_party_id,
171 p_pentity_name => 'HZ_PARTIES',
172 p_pbo_code => 'PERSON');
173
174 -- if record not existing for person of employment history, insert into hz_bus_obj_tracking
175 pop_parent_record(p_child_id => l_party_id,
176 p_lud => l_lud,
177 p_centity_name => 'HZ_PARTIES',
178 p_cbo_code => 'PERSON',
179 p_parent_id => NULL,
180 p_pentity_name => NULL,
181 p_pbo_code => NULL);
182 END; -- anonymous block end
183 END LOOP;
184
185 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_work_class-',
186 p_prefix=>l_debug_prefix,
187 p_msg_level=>fnd_log.level_procedure);
188 EXCEPTION
189 WHEN OTHERS THEN
190 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
191 p_prefix=>l_debug_prefix,
192 p_msg_level=>fnd_log.level_procedure);
193 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
194 END pop_hz_work_class;
195
196 -----------------------------------------------------------------
197 -- Procedure name: pop_hz_role_responsibility()
198 -- Purpose: populates BOT for HZ_ROLE_RESPONSIBILITY create or update
199 -- Scope: internal
200 -- Called From: V2 API
201 -- Called By: HZ_ROLE_RESPONSIBILITY create or update APIs
202 -- Input Parameters:
203 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
204 -- p_responsibility_id IN NUMBER
205 --
206 -- Note:
207 -- Following are the allowed PARENT and CHILD BO combinations for HZ_ROLE_RESPONSIBILITY
208 -- This procedure must ensure that the combination is valid before populating BOT
209 --
210 -- PARENT BO: CUST_ACCT_CONTACT :: CHILD BO:
211 -----------------------------------------------------------------
212 PROCEDURE pop_hz_role_responsibility(p_operation IN VARCHAR2, p_responsibility_id IN NUMBER) IS
213
214 -- cursor statement to select the info from child table
215 CURSOR c_child IS
216 SELECT rr.LAST_UPDATE_DATE lud, rr.CUST_ACCOUNT_ROLE_ID parent_id, rr.RESPONSIBILITY_ID child_id,
217 nvl(car.cust_acct_site_id, car.cust_account_id) car_parent_id,
218 decode(car.cust_acct_site_id, null, 'HZ_CUST_ACCOUNTS', 'HZ_CUST_ACCT_SITES_ALL') car_parent_entity,
219 decode(car.cust_acct_site_id, null, 'CUST_ACCT', 'CUST_ACCT_SITE') car_parent_bo
220 FROM HZ_ROLE_RESPONSIBILITY rr, HZ_CUST_ACCOUNT_ROLES car
221 WHERE rr.RESPONSIBILITY_ID = P_RESPONSIBILITY_ID
222 AND rr.cust_account_role_id = car.cust_account_role_id
223 AND car.cust_account_id > 0;
224
225 -- local variables
226 l_debug_prefix VARCHAR2(40) := 'pop_hz_role_responsibility';
227 l_parent_id NUMBER; -- used to store parent entity identifier
228 l_child_id NUMBER; -- used to store HZ_ROLE_RESPONSIBILITY identifier
229 l_lud DATE; -- used to store the child last update date
230 l_child_rec_exists_no NUMBER;
231 l_car_parent_id NUMBER; -- parent Id of cust account roles
232 l_car_parent_entity VARCHAR2(30); -- entity name of cust account roles parent
233 l_car_parent_bo VARCHAR2(30); -- business object of cust account roles parent
234 l_cen VARCHAR2(30) := 'HZ_ROLE_RESPONSIBILITY';
235 BEGIN
236 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_role_responsibility+',
237 p_prefix=>l_debug_prefix,
238 p_msg_level=>fnd_log.level_procedure);
239
240 -- validate p_operation
241 IF p_operation IN ('I','U') THEN
242 NULL;
243 ELSE
244 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_role_responsibility',
245 p_prefix=>l_debug_prefix,
246 p_msg_level=>fnd_log.level_procedure);
247 RAISE FND_API.G_EXC_ERROR;
248 END IF;
249
250 FOR c_child_rec IN C_child LOOP
251 -- collect the child info into variables
252 l_lud := c_child_rec.lud;
253 l_parent_id := c_child_rec.parent_id;
254 l_child_id := c_child_rec.child_id;
255 l_car_parent_id := c_child_rec.car_parent_id;
256 l_car_parent_entity := c_child_rec.car_parent_entity;
257 l_car_parent_bo := c_child_rec.car_parent_bo;
258
259 -- if record not existing, insert into hz_bus_obj_tracking
260 BEGIN
261 l_child_rec_exists_no := 0;
262 SELECT child_id INTO l_child_rec_exists_no
263 FROM HZ_BUS_OBJ_TRACKING
264 WHERE event_id IS NULL
265 AND CHILD_ENTITY_NAME = l_cen
266 AND CHILD_ID = l_child_id
267 AND rownum = 1;
268
269 IF l_child_rec_exists_no <> 0 THEN
270 -- data already exists, no need to write
271 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
272 p_prefix=>l_debug_prefix,
273 p_msg_level=>fnd_log.level_procedure);
274 END IF;
275 EXCEPTION
276 WHEN NO_DATA_FOUND THEN
277 INSERT INTO HZ_BUS_OBJ_TRACKING
278 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
282 l_lud, l_lud, 'HZ_CUST_ACCOUNT_ROLES', l_parent_id, 'CUST_ACCT_CONTACT');
279 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
280 ) VALUES (
281 'N', p_operation, l_child_id, 'HZ_ROLE_RESPONSIBILITY', NULL,
283
284 -- if record not existing for customer account contact, insert into hz_bus_obj_tracking
285 pop_parent_record(p_child_id => l_parent_id,
286 p_lud => l_lud,
287 p_centity_name => 'HZ_CUST_ACCOUNT_ROLES',
288 p_cbo_code => 'CUST_ACCT_CONTACT',
289 p_parent_id => l_car_parent_id,
290 p_pentity_name => l_car_parent_entity,
291 p_pbo_code => l_car_parent_bo);
292 END ; -- anonymous block end
293 END LOOP;
294
295 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_role_responsibility-',
296 p_prefix=>l_debug_prefix,
297 p_msg_level=>fnd_log.level_procedure);
298 EXCEPTION
299 WHEN OTHERS THEN
300 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
301 p_prefix=>l_debug_prefix,
302 p_msg_level=>fnd_log.level_procedure);
303 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
304 END pop_hz_role_responsibility;
305
306 -----------------------------------------------------------------
307 -- Procedure name: pop_hz_relationships()
308 -- Purpose: populates BOT for HZ_RELATIONSHIPS create or update
309 -- Scope: internal
310 -- Called From: V2 API
311 -- Called By: HZ_RELATIONSHIPS create or update APIs
312 -- Input Parameters:
313 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
314 -- p_RELATIONSHIP_ID IN NUMBER
315 --
316 -- Note:
317 -- Following are the allowed PARENT and CHILD BO combinations for HZ_RELATIONSHIPS
318 -- This procedure must ensure that the combination is valid before populating BOT
319 --
320 -- PARENT BO: ORG :: CHILD BO:
321 -- PARENT BO: PERSON :: CHILD BO:
322 -- PARENT BO: ORG_CONTACT :: CHILD BO:
323 -----------------------------------------------------------------
324 PROCEDURE pop_hz_relationships(p_operation IN VARCHAR2, p_relationship_id IN NUMBER) IS
325
326 CURSOR c_child IS
327 SELECT pp.LAST_UPDATE_DATE lud, pp.subject_id sparent_id, pp.object_id oparent_id,
328 pp.RELATIONSHIP_ID child_id,
329 decode(pp.subject_type, 'ORGANIZATION', 'ORG', 'PERSON', 'PERSON', NULL) sbo_code,
330 decode(pp.object_type, 'ORGANIZATION', 'ORG', 'PERSON', 'PERSON', NULL) obo_code
331 FROM HZ_RELATIONSHIPS pp
332 WHERE pp.RELATIONSHIP_ID = p_RELATIONSHIP_ID
333 AND subject_type in ('ORGANIZATION','PERSON')
334 AND object_type in ('ORGANIZATION','PERSON');
335
336 CURSOR c_get_oc_id IS
337 SELECT org_contact_id
338 FROM HZ_ORG_CONTACTS
339 WHERE party_relationship_id = p_relationship_id;
340
341 -- local variables
342 l_debug_prefix VARCHAR2(40) := 'pop_hz_relationships';
343 l_subj_id NUMBER; -- used to store subject entity identifier
344 l_obj_id NUMBER; -- used to store object entity identifier
345 l_sbo_code VARCHAR2(30); -- used to store subject BO Code
346 l_obo_code VARCHAR2(30); -- used to store object BO Code
347 l_child_id NUMBER; -- used to store HZ_RELATIONSHIPS identifier
348 l_lud DATE; -- used to store the child last update date
349 l_oc_id NUMBER;
350 l_child_rec_exists_no NUMBER;
351 l_cen VARCHAR2(30) := 'HZ_RELATIONSHIPS';
352 BEGIN
353 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_relationships+',
354 p_prefix=>l_debug_prefix,
355 p_msg_level=>fnd_log.level_procedure);
356
357 -- validate p_operation
358 IF p_operation IN ('I','U') THEN
359 NULL;
360 ELSE
361 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_relationships',
362 p_prefix=>l_debug_prefix,
363 p_msg_level=>fnd_log.level_procedure);
364 RAISE FND_API.G_EXC_ERROR;
365 END IF;
366
367 FOR c_child_rec IN c_child LOOP
368 l_lud := c_child_rec.lud;
369 l_subj_id := c_child_rec.sparent_id;
370 l_obj_id := c_child_rec.oparent_id;
371 l_sbo_code := c_child_rec.sbo_code;
372 l_obo_code := c_child_rec.obo_code;
373 l_child_id := c_child_rec.child_id;
374
375 -- if record not existing, insert into hz_bus_obj_tracking
376 BEGIN
377 l_child_rec_exists_no := 0;
378 SELECT child_id INTO l_child_rec_exists_no
379 FROM HZ_BUS_OBJ_TRACKING
380 WHERE event_id IS NULL
381 AND CHILD_ENTITY_NAME = l_cen
382 AND CHILD_ID = l_child_id
383 AND rownum = 1;
384
385 IF l_child_rec_exists_no <> 0 THEN
386 -- data already exists, no need to write
387 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
388 p_prefix=>l_debug_prefix,
389 p_msg_level=>fnd_log.level_procedure);
390 END IF;
391 EXCEPTION
392 WHEN NO_DATA_FOUND THEN
393 -- for subject
394 INSERT INTO HZ_BUS_OBJ_TRACKING
395 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
396 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
397 ) VALUES (
398 'N', p_operation, l_child_id, 'HZ_RELATIONSHIPS', NULL,
399 l_lud, l_lud, 'HZ_PARTIES', l_subj_id, l_sbo_code);
400
404 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
401 -- for object
402 INSERT INTO HZ_BUS_OBJ_TRACKING
403 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
405 ) VALUES (
406 'N', p_operation, l_child_id, 'HZ_RELATIONSHIPS', NULL,
407 l_lud, l_lud, 'HZ_PARTIES', l_obj_id, l_obo_code);
408
409 -- if record not existing for customer account contact, insert into hz_bus_obj_tracking
410 pop_parent_record(p_child_id => l_subj_id,
411 p_lud => l_lud,
412 p_centity_name => 'HZ_PARTIES',
413 p_cbo_code => l_sbo_code,
414 p_parent_id => NULL,
415 p_pentity_name => NULL,
416 p_pbo_code => NULL);
417
418 pop_parent_record(p_child_id => l_obj_id,
419 p_lud => l_lud,
420 p_centity_name => 'HZ_PARTIES',
421 p_cbo_code => l_obo_code,
422 p_parent_id => NULL,
423 p_pentity_name => NULL,
424 p_pbo_code => NULL);
425
426 IF(p_operation = 'U') THEN
427 IF(l_sbo_code = 'PERSON' AND l_obo_code = 'ORGANIZATION') THEN
428 OPEN c_get_oc_id;
429 FETCH c_get_oc_id INTO l_oc_id;
430 CLOSE c_get_oc_id;
431 pop_hz_org_contacts(
432 p_operation => 'U',
433 p_org_contact_id => l_oc_id);
434 END IF;
435 END IF;
436 END ; -- anonymous block end
437 END LOOP;
438
439 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_relationships-',
440 p_prefix=>l_debug_prefix,
441 p_msg_level=>fnd_log.level_procedure);
442 EXCEPTION
443 WHEN OTHERS THEN
444 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
445 p_prefix=>l_debug_prefix,
446 p_msg_level=>fnd_log.level_procedure);
447 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
448 END pop_hz_relationships;
449
450 -----------------------------------------------------------------
451 -- Procedure name: pop_hz_person_profiles()
452 -- Purpose: populates BOT for HZ_PERSON_PROFILES create or update
453 -- Scope: internal
454 -- Called From: V2 API
455 -- Called By: HZ_PERSON_PROFILES create or update APIs
456 -- Input Parameters:
457 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
458 -- p_person_profile_id IN NUMBER
459 --
460 -- Note:
461 -- Following are the allowed PARENT and CHILD BO combinations for HZ_PERSON_PROFILES
462 -- This procedure must ensure that the combination is valid before populating BOT
463 --
464 -- PARENT BO: PERSON :: CHILD BO:
465 -- PARENT BO: PERSON_CONTACT :: CHILD BO:
466 -----------------------------------------------------------------
467 PROCEDURE pop_hz_person_profiles(p_operation IN VARCHAR2, p_person_profile_id IN NUMBER) IS
468
469 -- cursor statement to select the info from child table
470 CURSOR c_child IS
471 SELECT LAST_UPDATE_DATE lud, PARTY_ID parent_id, PERSON_PROFILE_ID child_id
472 FROM HZ_PERSON_PROFILES
473 WHERE PERSON_PROFILE_ID = P_PERSON_PROFILE_ID;
474
475 -- local variables
476 l_debug_prefix VARCHAR2(40) := 'pop_hz_person_profiles';
477 l_parent_id NUMBER; -- used to store parent entity identifier
478 l_child_id NUMBER; -- used to store HZ_PERSON_PROFILES identifier
479 l_lud DATE; -- used to store the child last update date
480 l_child_rec_exists_no NUMBER;
481 l_org_contact_id NUMBER;
482 l_cen VARCHAR2(30) := 'HZ_PERSON_PROFILES';
483 BEGIN
484 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_person_profiles+',
485 p_prefix=>l_debug_prefix,
486 p_msg_level=>fnd_log.level_procedure);
487
488 -- validate p_operation
489 IF p_operation IN ('I','U') THEN
490 NULL;
491 ELSE
492 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_person_profiles',
493 p_prefix=>l_debug_prefix,
494 p_msg_level=>fnd_log.level_procedure);
495 RAISE FND_API.G_EXC_ERROR;
496 END IF;
497
498 FOR c_child_rec IN c_child LOOP
499 -- collect the child info into variables
500 l_lud := c_child_rec.lud;
501 l_child_id := c_child_rec.child_id;
502 l_parent_id := c_child_rec.parent_id;
503
504 -- if record not existing, insert into hz_bus_obj_tracking
505 BEGIN
506 l_child_rec_exists_no := 0;
507 SELECT child_id INTO l_child_rec_exists_no
508 FROM HZ_BUS_OBJ_TRACKING
509 WHERE event_id IS NULL
510 AND CHILD_ENTITY_NAME = l_cen
511 AND CHILD_ID = l_child_id
512 AND rownum = 1;
513
514 IF l_child_rec_exists_no <> 0 THEN
515 -- data already exists, no need to write
516 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
517 p_prefix=>l_debug_prefix,
518 p_msg_level=>fnd_log.level_procedure);
519 END IF;
520 EXCEPTION
521 WHEN NO_DATA_FOUND THEN
522 INSERT INTO HZ_BUS_OBJ_TRACKING
523 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
524 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
525 ) VALUES (
529 -- populate person party record
526 'N', p_operation, l_child_id, 'HZ_PERSON_PROFILES', NULL,
527 l_lud, l_lud, 'HZ_PARTIES', l_parent_id, 'PERSON');
528
530 pop_parent_record(p_child_id => l_parent_id,
531 p_lud => l_lud,
532 p_centity_name => 'HZ_PARTIES',
533 p_cbo_code => 'PERSON',
534 p_parent_id => NULL,
535 p_pentity_name => NULL,
536 p_pbo_code => NULL);
537 END ; -- anonymous block end
538 END LOOP;
539
540 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_person_profiles-',
541 p_prefix=>l_debug_prefix,
542 p_msg_level=>fnd_log.level_procedure);
543 EXCEPTION
544 WHEN OTHERS THEN
545 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
546 p_prefix=>l_debug_prefix,
547 p_msg_level=>fnd_log.level_procedure);
548 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
549 END pop_hz_person_profiles;
550
551 -----------------------------------------------------------------
552 -- Procedure name: pop_hz_person_language()
553 -- Purpose: populates BOT for HZ_PERSON_LANGUAGE create or update
554 -- Scope: internal
555 -- Called From: V2 API
556 -- Called By: HZ_PERSON_LANGUAGE create or update APIs
557 -- Input Parameters:
558 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
559 -- p_LANGUAGE_USE_REFERENCE_ID IN NUMBER
560 --
561 -- Note:
562 -- Following are the allowed PARENT and CHILD BO combinations for HZ_PERSON_LANGUAGE
563 -- This procedure must ensure that the combination is valid before populating BOT
564 --
565 -- PARENT BO: PERSON :: CHILD BO:
566 -----------------------------------------------------------------
567 PROCEDURE pop_hz_person_language(p_operation IN VARCHAR2, p_language_use_reference_id IN NUMBER) IS
568
569 -- cursor statement to select the info from child table
570 CURSOR c_child IS
571 SELECT pl.LAST_UPDATE_DATE lud, pl.PARTY_ID parent_id, pl.LANGUAGE_USE_REFERENCE_ID child_id
572 FROM HZ_PERSON_LANGUAGE pl, HZ_PARTIES p
573 WHERE pl.LANGUAGE_USE_REFERENCE_ID = P_LANGUAGE_USE_REFERENCE_ID
574 AND pl.party_id = p.party_id
575 AND p.party_type = 'PERSON';
576
577 -- local variables
578 l_debug_prefix VARCHAR2(40) := 'pop_hz_person_language';
579 l_parent_id NUMBER; -- used to store parent entity identifier
580 l_child_id NUMBER; -- used to store HZ_PERSON_LANGUAGE identifier
581 l_lud DATE; -- used to store the child last update date
582 l_child_rec_exists_no NUMBER;
583 l_cen VARCHAR2(30) := 'HZ_PERSON_LANGUAGE';
584 BEGIN
585 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_person_language+',
586 p_prefix=>l_debug_prefix,
587 p_msg_level=>fnd_log.level_procedure);
588
589 -- validate p_operation
590 IF p_operation IN ('I','U') THEN
591 NULL;
592 ELSE
593 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_person_language',
594 p_prefix=>l_debug_prefix,
595 p_msg_level=>fnd_log.level_procedure);
596 RAISE FND_API.G_EXC_ERROR;
597 END IF;
598
599 FOR c_child_rec IN c_child LOOP
600 -- collect the child info into variables
601 l_lud := c_child_rec.lud;
602 l_parent_id := c_child_rec.parent_id;
603 l_child_id := c_child_rec.child_id;
604
605 -- if record not existing, insert into hz_bus_obj_tracking
606 BEGIN
607 l_child_rec_exists_no := 0;
608 SELECT child_id INTO l_child_rec_exists_no
609 FROM HZ_BUS_OBJ_TRACKING
610 WHERE event_id IS NULL
611 AND CHILD_ENTITY_NAME = l_cen
612 AND CHILD_ID = l_child_id
613 AND rownum = 1;
614
615 IF l_child_rec_exists_no <> 0 THEN
616 -- data already exists, no need to write
617 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
618 p_prefix=>l_debug_prefix,
619 p_msg_level=>fnd_log.level_procedure);
620 END IF;
621 EXCEPTION
622 WHEN NO_DATA_FOUND THEN
623 INSERT INTO HZ_BUS_OBJ_TRACKING
624 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
625 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
626 ) VALUES (
627 'N', p_operation, l_child_id, 'HZ_PERSON_LANGUAGE', NULL,
628 l_lud, l_lud, 'HZ_PARTIES', l_parent_id, 'PERSON');
629
630 -- populate party record
631 pop_parent_record(p_child_id => l_parent_id,
632 p_lud => l_lud,
633 p_centity_name => 'HZ_PARTIES',
634 p_cbo_code => 'PERSON',
635 p_parent_id => NULL,
636 p_pentity_name => NULL,
637 p_pbo_code => NULL);
638 END ; -- anonymous block end
639 END LOOP;
640
641 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_person_language-',
642 p_prefix=>l_debug_prefix,
643 p_msg_level=>fnd_log.level_procedure);
644 EXCEPTION
645 WHEN OTHERS THEN
646 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
647 p_prefix=>l_debug_prefix,
648 p_msg_level=>fnd_log.level_procedure);
652 -----------------------------------------------------------------
649 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
650 END pop_hz_person_language;
651
653 -- Procedure name: pop_hz_person_interest()
654 -- Purpose: populates BOT for HZ_PERSON_INTEREST create or update
655 -- Scope: internal
656 -- Called From: V2 API
657 -- Called By: HZ_PERSON_INTEREST create or update APIs
658 -- Input Parameters:
659 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
660 -- p_person_interest_id IN NUMBER
661 --
662 -- Note:
663 -- Following are the allowed PARENT and CHILD BO combinations for HZ_PERSON_INTEREST
664 -- This procedure must ensure that the combination is valid before populating BOT
665 --
666 -- PARENT BO: PERSON :: CHILD BO:
667 -----------------------------------------------------------------
668 PROCEDURE pop_hz_person_interest(p_operation IN VARCHAR2, p_person_interest_id IN NUMBER) IS
669
670 -- cursor statement to select the info from child table
671 CURSOR C_child IS
672 SELECT pi.LAST_UPDATE_DATE lud, pi.PARTY_ID parent_id, pi.PERSON_INTEREST_ID child_id
673 FROM HZ_PERSON_INTEREST pi, HZ_PARTIES p
674 WHERE pi.PERSON_INTEREST_ID = P_PERSON_INTEREST_ID
675 AND pi.party_id = p.party_id
676 AND p.party_type = 'PERSON';
677
678 -- local variables
679 l_debug_prefix VARCHAR2(40) := 'pop_hz_person_interest';
680 l_parent_id NUMBER; -- used to store parent entity identifier
681 l_child_id NUMBER; -- used to store HZ_PERSON_INTEREST identifier
682 l_lud DATE; -- used to store the child last update date
683 l_child_rec_exists_no NUMBER;
684 l_cen VARCHAR2(30) := 'HZ_PERSON_INTEREST';
685 BEGIN
686 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_person_interest+',
687 p_prefix=>l_debug_prefix,
688 p_msg_level=>fnd_log.level_procedure);
689
690 -- validate p_operation
691 IF p_operation IN ('I','U') THEN
692 NULL;
693 ELSE
694 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_person_interest',
695 p_prefix=>l_debug_prefix,
696 p_msg_level=>fnd_log.level_procedure);
697 RAISE FND_API.G_EXC_ERROR;
698 END IF;
699
700 FOR c_child_rec IN c_child LOOP
701 -- collect the child info into variables
702 l_lud := c_child_rec.lud;
703 l_parent_id := c_child_rec.parent_id;
704 l_child_id := c_child_rec.child_id;
705
706 -- if record not existing, insert into hz_bus_obj_tracking
707 BEGIN
708 l_child_rec_exists_no := 0;
709 SELECT child_id INTO l_child_rec_exists_no
710 FROM HZ_BUS_OBJ_TRACKING
711 WHERE event_id IS NULL
712 AND CHILD_ENTITY_NAME = l_cen
713 AND CHILD_ID = l_child_id
714 AND rownum = 1;
715
716 IF l_child_rec_exists_no <> 0 THEN
717 -- data already exists, no need to write
718 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
719 p_prefix=>l_debug_prefix,
720 p_msg_level=>fnd_log.level_procedure);
721 END IF;
722 EXCEPTION
723 WHEN NO_DATA_FOUND THEN
724 INSERT INTO HZ_BUS_OBJ_TRACKING
725 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
726 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
727 ) VALUES (
728 'N', p_operation, l_child_id, 'HZ_PERSON_INTEREST', NULL,
729 l_lud, l_lud, 'HZ_PARTIES', l_parent_id, 'PERSON');
730
731 -- populate party record
732 pop_parent_record(p_child_id => l_parent_id,
733 p_lud => l_lud,
734 p_centity_name => 'HZ_PARTIES',
735 p_cbo_code => 'PERSON',
736 p_parent_id => NULL,
737 p_pentity_name => NULL,
738 p_pbo_code => NULL);
739 END ; -- anonymous block end
740 END LOOP;
741
742 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_person_interest-',
743 p_prefix=>l_debug_prefix,
744 p_msg_level=>fnd_log.level_procedure);
745 EXCEPTION
746 WHEN OTHERS THEN
747 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
748 p_prefix=>l_debug_prefix,
749 p_msg_level=>fnd_log.level_procedure);
750 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
751 END pop_hz_person_interest;
752
753 -----------------------------------------------------------------
754 -- Procedure name: pop_hz_party_site_uses()
755 -- Purpose: populates BOT for HZ_PARTY_SITE_USES create or update
756 -- Scope: internal
757 -- Called From: V2 API
758 -- Called By: HZ_PARTY_SITE_USES create or update APIs
759 -- Input Parameters:
760 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
761 -- p_party_site_use_id IN NUMBER
762 --
763 -- Note:
764 -- Following are the allowed PARENT and CHILD BO combinations for HZ_PARTY_SITE_USES
765 -- This procedure must ensure that the combination is valid before populating BOT
766 --
767 -- PARENT BO: PARTY_SITE :: CHILD BO:
768 -----------------------------------------------------------------
769 PROCEDURE pop_hz_party_site_uses(p_operation IN VARCHAR2, p_party_site_use_id IN NUMBER) IS
770
771 -- cursor statement to select the info from child table
772 CURSOR C_child IS
776 WHERE psu.PARTY_SITE_USE_ID = P_PARTY_SITE_USE_ID
773 SELECT psu.LAST_UPDATE_DATE lud, psu.PARTY_SITE_ID parent_id, psu.PARTY_SITE_USE_ID child_id,
774 p.party_type, p.party_id
775 FROM HZ_PARTY_SITE_USES psu, HZ_PARTY_SITES ps, HZ_PARTIES p
777 AND psu.party_site_id = ps.party_site_id
778 AND ps.party_id = p.party_id
779 AND p.party_type in ('ORGANIZATION', 'PERSON', 'PARTY_RELATIONSHIP');
780
781 CURSOR get_org_contact(l_party_id NUMBER) IS
782 SELECT oc.org_contact_id
783 FROM HZ_ORG_CONTACTS oc, HZ_RELATIONSHIPS pr
784 WHERE oc.party_relationship_id = pr.relationship_id
785 AND pr.party_id = l_party_id
786 AND pr.subject_type = 'PERSON'
787 AND pr.object_type = 'ORGANIZATION'
788 AND rownum = 1;
789
790 -- local variables
791 l_debug_prefix VARCHAR2(40) := 'pop_hz_party_site_uses';
792 l_parent_id NUMBER; -- used to store parent entity identifier
793 l_child_id NUMBER; -- used to store HZ_PARTY_SITE_USES identifier
794 l_lud DATE; -- used to store the child last update date
795 l_child_rec_exists_no NUMBER;
796 l_ptype VARCHAR2(30);
797 l_pid NUMBER;
798 l_dummy_id NUMBER;
799 l_cen VARCHAR2(30) := 'HZ_PARTY_SITE_USES';
800 BEGIN
801 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_party_site_uses+',
802 p_prefix=>l_debug_prefix,
803 p_msg_level=>fnd_log.level_procedure);
804
805 -- validate p_operation
806 IF p_operation IN ('I','U') THEN
807 NULL;
808 ELSE
809 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_party_site_uses',
810 p_prefix=>l_debug_prefix,
811 p_msg_level=>fnd_log.level_procedure);
812 RAISE FND_API.G_EXC_ERROR;
813 END IF;
814
815 FOR c_child_rec IN c_child LOOP
816 -- collect the child info into variables
817 l_lud := c_child_rec.lud;
818 l_parent_id := c_child_rec.parent_id;
819 l_child_id := c_child_rec.child_id;
820 l_ptype := c_child_rec.party_type;
821 l_pid := c_child_rec.party_id;
822
823 IF(l_ptype = 'PARTY_RELATIONSHIP') THEN
824 -- get org_contact_id
825 OPEN get_org_contact(l_pid);
826 FETCH get_org_contact INTO l_dummy_id;
827 CLOSE get_org_contact;
828 IF(l_dummy_id IS NULL) THEN
829 RETURN;
830 END IF;
831 END IF;
832
833 -- if record not existing, insert into hz_bus_obj_tracking
834 BEGIN
835 l_child_rec_exists_no := 0;
836 SELECT child_id INTO l_child_rec_exists_no
837 FROM HZ_BUS_OBJ_TRACKING
838 WHERE event_id IS NULL
839 AND CHILD_ENTITY_NAME = l_cen
840 AND CHILD_ID = l_child_id
841 AND rownum = 1;
842
843 IF l_child_rec_exists_no <> 0 THEN
844 -- data already exists, no need to write
845 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
846 p_prefix=>l_debug_prefix,
847 p_msg_level=>fnd_log.level_procedure);
848 END IF;
849 EXCEPTION
850 WHEN NO_DATA_FOUND THEN
851 INSERT INTO HZ_BUS_OBJ_TRACKING
852 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
853 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
854 ) VALUES (
855 'N', p_operation, l_child_id, 'HZ_PARTY_SITE_USES', NULL,
856 l_lud, l_lud, 'HZ_PARTY_SITES', l_parent_id, 'PARTY_SITE');
857 END ; -- anonymous block end
858 END LOOP;
859
860 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_party_site_uses-',
861 p_prefix=>l_debug_prefix,
862 p_msg_level=>fnd_log.level_procedure);
863 EXCEPTION
864 WHEN OTHERS THEN
865 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
866 p_prefix=>l_debug_prefix,
867 p_msg_level=>fnd_log.level_procedure);
868 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
869 END pop_hz_party_site_uses;
870
871 -----------------------------------------------------------------
872 -- Procedure name: pop_hz_party_sites()
873 -- Purpose: populates BOT for HZ_PARTY_SITES create or update
874 -- Scope: internal
875 -- Called From: V2 API
876 -- Called By: HZ_PARTY_SITES create or update APIs
877 -- Input Parameters:
878 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
879 -- p_party_site_id IN NUMBER
880 --
881 -- Note:
882 -- Following are the allowed PARENT and CHILD BO combinations for HZ_PARTY_SITES
883 -- This procedure must ensure that the combination is valid before populating BOT
884 --
885 -- PARENT BO: ORG :: CHILD BO: PARTY_SITE
886 -- PARENT BO: PERSON :: CHILD BO: PARTY_SITE
887 -- PARENT BO: ORG_CONTACT :: CHILD BO: PARTY_SITE
888 -----------------------------------------------------------------
889 PROCEDURE pop_hz_party_sites(p_operation IN VARCHAR2, p_party_site_id IN NUMBER) IS
890
891 -- cursor statement to select the info from child table
892 CURSOR c_child IS
893 SELECT ps.LAST_UPDATE_DATE lud, ps.PARTY_ID parent_id,
894 decode(p.party_type, 'PARTY_RELATIONSHIP', 'HZ_ORG_CONTACTS', 'HZ_PARTIES') parent_tbl_name,
895 ps.PARTY_SITE_ID child_id,
896 decode(p.party_type, 'ORGANIZATION', 'ORG', 'PERSON', 'PERSON', 'PARTY_RELATIONSHIP', 'ORG_CONTACT', null) bo_code,
897 ps.location_id location_id
898 FROM HZ_PARTY_SITES ps, HZ_PARTIES p
902
899 WHERE ps.PARTY_SITE_ID = P_PARTY_SITE_ID
900 AND ps.party_id = p.party_id
901 AND p.party_type in ('ORGANIZATION','PERSON','PARTY_RELATIONSHIP');
903 CURSOR get_org_contact(l_party_id NUMBER) IS
904 SELECT oc.org_contact_id
905 FROM HZ_ORG_CONTACTS oc, HZ_RELATIONSHIPS pr
906 WHERE oc.party_relationship_id = pr.relationship_id
907 AND pr.party_id = l_party_id
908 AND pr.subject_type = 'PERSON'
909 AND pr.object_type = 'ORGANIZATION'
910 AND rownum = 1;
911
912 -- local variables
913 l_debug_prefix VARCHAR2(40) := 'pop_hz_party_sites';
914 l_parent_id NUMBER; -- used to store parent entity identifier
915 l_parent_tbl_name VARCHAR2(30); -- used to store parent entity name
916 l_bo_code VARCHAR2(30); -- used to store BO Code
917 l_child_bo_code VARCHAR2(30); -- used to store Child BO Code (if child entity is a root node)
918 l_child_id NUMBER; -- used to store HZ_PARTY_SITES identifier
919 l_lud DATE; -- used to store the child last update date
920 l_child_rec_exists_no NUMBER;
921 l_location_id NUMBER;
922 l_org_contact_id NUMBER;
923 l_org_id NUMBER; -- party_id of organization for org contact relationship
924 l_cen VARCHAR2(30) := 'HZ_PARTY_SITES';
925 BEGIN
926 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_party_sites+',
927 p_prefix=>l_debug_prefix,
928 p_msg_level=>fnd_log.level_procedure);
929
930 -- validate p_operation
931 IF p_operation IN ('I','U') THEN
932 NULL;
933 ELSE
934 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_party_sites',
935 p_prefix=>l_debug_prefix,
936 p_msg_level=>fnd_log.level_procedure);
937 RAISE FND_API.G_EXC_ERROR;
938 END IF;
939
940 FOR c_child_rec IN c_child LOOP
941 -- collect the child info into variables
942 l_lud := c_child_rec.lud;
943 l_bo_code := c_child_rec.bo_code;
944 l_child_id := c_child_rec.child_id;
945 l_location_id := c_child_rec.location_id;
946 l_parent_id := c_child_rec.parent_id;
947 l_parent_tbl_name := c_child_rec.parent_tbl_name;
948
949 IF(l_bo_code = 'ORG_CONTACT') THEN
950 -- get org_contact_id
951 OPEN get_org_contact(l_parent_id);
952 FETCH get_org_contact INTO l_parent_id;
953 CLOSE get_org_contact;
954 IF(l_parent_id IS NULL) THEN
955 RETURN;
956 END IF;
957 END IF;
958
959 -- if record not existing, insert into hz_bus_obj_tracking
960 BEGIN
961 l_child_rec_exists_no := 0;
962 SELECT child_id INTO l_child_rec_exists_no
963 FROM HZ_BUS_OBJ_TRACKING
964 WHERE event_id IS NULL
965 AND CHILD_ENTITY_NAME = l_cen
966 AND CHILD_ID = l_child_id
967 AND rownum = 1;
968
969 IF l_child_rec_exists_no <> 0 THEN
970 -- data already exists, no need to write
971 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
972 p_prefix=>l_debug_prefix,
973 p_msg_level=>fnd_log.level_procedure);
974 END IF;
975 EXCEPTION
976 WHEN NO_DATA_FOUND THEN
977 -- populate the child bo code also
978 INSERT INTO HZ_BUS_OBJ_TRACKING
979 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
980 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
981 ) VALUES (
982 'N', p_operation, l_child_id, 'HZ_PARTY_SITES', 'PARTY_SITE',
983 l_lud, l_lud, l_parent_tbl_name, l_parent_id, l_bo_code);
984 END ; -- anonymous block end
985 END LOOP;
986
987 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_party_sites-',
988 p_prefix=>l_debug_prefix,
989 p_msg_level=>fnd_log.level_procedure);
990 EXCEPTION
991 WHEN OTHERS THEN
992 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
993 p_prefix=>l_debug_prefix,
994 p_msg_level=>fnd_log.level_procedure);
995 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
996 END pop_hz_party_sites;
997
998 -----------------------------------------------------------------
999 -- Procedure name: pop_hz_party_preferences()
1000 -- Purpose: populates BOT for HZ_PARTY_PREFERENCES create or update
1001 -- Scope: internal
1002 -- Called From: V2 API
1003 -- Called By: HZ_PARTY_PREFERENCES create or update APIs
1004 -- Input Parameters:
1005 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
1006 -- p_party_preference_id IN NUMBER
1007 --
1008 -- Note:
1009 -- Following are the allowed PARENT and CHILD BO combinations for HZ_PARTY_PREFERENCES
1010 -- This procedure must ensure that the combination is valid before populating BOT
1011 --
1012 -- PARENT BO: ORG :: CHILD BO:
1013 -- PARENT BO: PERSON :: CHILD BO:
1014 -----------------------------------------------------------------
1015 PROCEDURE pop_hz_party_preferences(p_operation IN VARCHAR2, p_party_preference_id IN NUMBER) IS
1016
1017 CURSOR C_child IS
1018 SELECT pp.LAST_UPDATE_DATE lud, pp.PARTY_ID parent_id,
1019 'HZ_PARTIES' parent_tbl_name, pp.PARTY_PREFERENCE_ID child_id,
1020 decode(p.party_type, 'ORGANIZATION', 'ORG', 'PERSON', 'PERSON', NULL) bo_code
1021 FROM HZ_PARTY_PREFERENCES pp, HZ_PARTIES p
1022 WHERE pp.PARTY_PREFERENCE_ID = p_party_preference_id
1023 AND pp.party_id = p.party_id
1027 l_debug_prefix VARCHAR2(40) := 'pop_hz_party_preferences';
1024 AND p.party_type in ('ORGANIZATION', 'PERSON');
1025
1026 -- local variables
1028 l_parent_id NUMBER; -- used to store parent entity identifier
1029 l_parent_tbl_name VARCHAR2(30); -- used to store parent entity name
1030 l_bo_code VARCHAR2(30); -- used to store BO Code
1031 l_child_bo_code VARCHAR2(30); -- used to store Child BO Code (if child entity is a root node)
1032 l_child_id NUMBER; -- used to store HZ_PARTY_PREFERENCES identifier
1033 l_lud DATE; -- used to store the child last update date
1034 l_child_rec_exists_no NUMBER;
1035 l_cen VARCHAR2(30) := 'HZ_PARTY_PREFERENCES';
1036 BEGIN
1037 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_party_preferences+',
1038 p_prefix=>l_debug_prefix,
1039 p_msg_level=>fnd_log.level_procedure);
1040
1041 -- validate p_operation
1042 IF p_operation IN ('I','U') THEN
1043 NULL;
1044 ELSE
1045 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_party_preferences',
1046 p_prefix=>l_debug_prefix,
1047 p_msg_level=>fnd_log.level_procedure);
1048 RAISE FND_API.G_EXC_ERROR;
1049 END IF;
1050
1051 FOR c_child_rec IN c_child LOOP
1052 -- collect the child info into variables
1053 l_lud := c_child_rec.lud;
1054 l_parent_id := c_child_rec.parent_id;
1055 l_parent_tbl_name := c_child_rec.parent_tbl_name;
1056 l_bo_code := c_child_rec.bo_code;
1057 l_child_id := c_child_rec.child_id;
1058
1059 -- if record not existing, insert into hz_bus_obj_tracking
1060 BEGIN
1061 l_child_rec_exists_no := 0;
1062 SELECT child_id INTO l_child_rec_exists_no
1063 FROM HZ_BUS_OBJ_TRACKING
1064 WHERE event_id IS NULL
1065 AND CHILD_ENTITY_NAME = l_cen
1066 AND CHILD_ID = l_child_id
1067 AND rownum = 1;
1068
1069 IF l_child_rec_exists_no <> 0 THEN
1070 -- data already exists, no need to write
1071 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
1072 p_prefix=>l_debug_prefix,
1073 p_msg_level=>fnd_log.level_procedure);
1074 END IF;
1075 EXCEPTION
1076 WHEN NO_DATA_FOUND THEN
1077 INSERT INTO HZ_BUS_OBJ_TRACKING
1078 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
1079 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
1080 ) VALUES (
1081 'N', p_operation, l_child_id, 'HZ_PARTY_PREFERENCES', NULL,
1082 l_lud, l_lud, l_parent_tbl_name, l_parent_id, l_bo_code);
1083
1084 -- populate party record
1085 pop_parent_record(p_child_id => l_parent_id,
1086 p_lud => l_lud,
1087 p_centity_name => 'HZ_PARTIES',
1088 p_cbo_code => l_bo_code,
1089 p_parent_id => NULL,
1090 p_pentity_name => NULL,
1091 p_pbo_code => NULL);
1092 END ; -- anonymous block end
1093 END LOOP;
1094
1095 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_party_preferences-',
1096 p_prefix=>l_debug_prefix,
1097 p_msg_level=>fnd_log.level_procedure);
1098 EXCEPTION
1099 WHEN OTHERS THEN
1100 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
1101 p_prefix=>l_debug_prefix,
1102 p_msg_level=>fnd_log.level_procedure);
1103 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1104 END pop_hz_party_preferences;
1105
1106 -----------------------------------------------------------------
1107 -- Procedure name: pop_hz_org_contact_roles()
1108 -- Purpose: populates BOT for HZ_ORG_CONTACT_ROLES create or update
1109 -- Scope: internal
1110 -- Called From: V2 API
1111 -- Called By: HZ_ORG_CONTACT_ROLES create or update APIs
1112 -- Input Parameters:
1113 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
1114 -- p_org_contact_role_id IN NUMBER
1115 --
1116 -- Note:
1117 -- Following are the allowed PARENT and CHILD BO combinations for HZ_ORG_CONTACT_ROLES
1118 -- This procedure must ensure that the combination is valid before populating BOT
1119 --
1120 -- PARENT BO: ORG_CONTACT :: CHILD BO:
1121 -----------------------------------------------------------------
1122 PROCEDURE pop_hz_org_contact_roles(p_operation IN VARCHAR2, p_org_contact_role_id IN NUMBER) IS
1123
1124 -- cursor statement to select the info from child table
1125 CURSOR C_child IS
1126 SELECT ocr.LAST_UPDATE_DATE lud, ocr.ORG_CONTACT_ID parent_id,
1127 ocr.ORG_CONTACT_ROLE_ID child_id, pr.object_id object_id
1128 FROM HZ_ORG_CONTACT_ROLES ocr, HZ_ORG_CONTACTS oc, HZ_RELATIONSHIPS pr
1129 WHERE ORG_CONTACT_ROLE_ID = P_ORG_CONTACT_ROLE_ID
1130 AND ocr.org_contact_id = oc.org_contact_id
1131 AND oc.party_relationship_id = pr.relationship_id
1132 AND pr.object_type = 'ORGANIZATION'
1133 AND pr.subject_type = 'PERSON'
1134 AND rownum = 1;
1135
1136 -- local variables
1137 l_debug_prefix VARCHAR2(40) := 'pop_hz_org_contact_roles';
1138 l_parent_id NUMBER; -- used to store parent entity identifier
1139 l_child_id NUMBER; -- used to store HZ_ORG_CONTACT_ROLES identifier
1140 l_lud DATE; -- used to store the child last update date
1141 l_child_rec_exists_no NUMBER;
1142 l_org_id NUMBER;
1146 p_prefix=>l_debug_prefix,
1143 l_cen VARCHAR2(30) := 'HZ_ORG_CONTACT_ROLES';
1144 BEGIN
1145 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_org_contact_roles+',
1147 p_msg_level=>fnd_log.level_procedure);
1148
1149 -- validate p_operation
1150 IF p_operation IN ('I','U') THEN
1151 NULL;
1152 ELSE
1153 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_org_contact_roles',
1154 p_prefix=>l_debug_prefix,
1155 p_msg_level=>fnd_log.level_procedure);
1156 RAISE FND_API.G_EXC_ERROR;
1157 END IF;
1158
1159 FOR c_child_rec IN c_child LOOP
1160 -- collect the child info into variables
1161 l_lud := c_child_rec.lud;
1162 l_parent_id := c_child_rec.parent_id;
1163 l_child_id := c_child_rec.child_id;
1164 l_org_id := c_child_rec.object_id;
1165
1166 -- if record not existing, insert into hz_bus_obj_tracking
1167 BEGIN
1168 l_child_rec_exists_no := 0;
1169 SELECT child_id INTO l_child_rec_exists_no
1170 FROM HZ_BUS_OBJ_TRACKING
1171 WHERE event_id IS NULL
1172 AND CHILD_ENTITY_NAME = l_cen
1173 AND CHILD_ID = l_child_id
1174 AND rownum = 1;
1175
1176 IF l_child_rec_exists_no <> 0 THEN
1177 -- data already exists, no need to write
1178 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
1179 p_prefix=>l_debug_prefix,
1180 p_msg_level=>fnd_log.level_procedure);
1181 END IF;
1182 EXCEPTION
1183 WHEN NO_DATA_FOUND THEN
1184 INSERT INTO HZ_BUS_OBJ_TRACKING
1185 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
1186 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
1187 ) VALUES (
1188 'N', p_operation, l_child_id, 'HZ_ORG_CONTACT_ROLES', NULL,
1189 l_lud, l_lud, 'HZ_ORG_CONTACTS', l_parent_id, 'ORG_CONTACT');
1190
1191 -- populate org party record
1192 pop_parent_record(p_child_id => l_parent_id,
1193 p_lud => l_lud,
1194 p_centity_name => 'HZ_ORG_CONTACTS',
1195 p_cbo_code => 'ORG_CONTACT',
1196 p_parent_id => l_org_id,
1197 p_pentity_name => 'HZ_PARTIES',
1198 p_pbo_code => 'ORG');
1199 END ; -- anonymous block end
1200 END LOOP;
1201
1202 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_org_contact_roles-',
1203 p_prefix=>l_debug_prefix,
1204 p_msg_level=>fnd_log.level_procedure);
1205 EXCEPTION
1206 WHEN OTHERS THEN
1207 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
1208 p_prefix=>l_debug_prefix,
1209 p_msg_level=>fnd_log.level_procedure);
1210 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1211 END pop_hz_org_contact_roles;
1212
1213 -----------------------------------------------------------------
1214 -- Procedure name: pop_hz_org_contacts()
1215 -- Purpose: populates BOT for HZ_ORG_CONTACTS create or update
1216 -- Scope: internal
1217 -- Called From: V2 API
1218 -- Called By: HZ_ORG_CONTACTS create or update APIs
1219 -- Input Parameters:
1220 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
1221 -- p_org_contact_id IN NUMBER
1222 --
1223 -- Note:
1224 -- Following are the allowed PARENT and CHILD BO combinations for HZ_ORG_CONTACTS
1225 -- This procedure must ensure that the combination is valid before populating BOT
1226 --
1227 -- PARENT BO: ORG :: CHILD BO: ORG_CONTACT
1228 -----------------------------------------------------------------
1229 PROCEDURE pop_hz_org_contacts(p_operation IN VARCHAR2, p_org_contact_id IN NUMBER) IS
1230
1231 -- cursor statement to select the info from child table
1232 CURSOR C_child IS
1233 SELECT oc.LAST_UPDATE_DATE lud, oc.ORG_CONTACT_ID child_id,
1234 pr.object_id parent_id, pr.subject_id person_id, pr.relationship_id rel_id
1235 FROM HZ_ORG_CONTACTS oc, HZ_RELATIONSHIPS pr
1236 WHERE oc.ORG_CONTACT_ID = P_ORG_CONTACT_ID
1237 AND oc.party_relationship_id = pr.relationship_id
1238 AND pr.object_type = 'ORGANIZATION'
1239 AND pr.subject_type = 'PERSON'
1240 AND rownum = 1;
1241
1242 -- local variables
1243 l_debug_prefix VARCHAR2(40) := 'pop_hz_org_contacts';
1244 l_parent_id NUMBER; -- used to store parent entity identifier
1245 l_child_id NUMBER; -- used to store HZ_ORG_CONTACTS identifier
1246 l_lud DATE; -- used to store the child last update date
1247 l_child_rec_exists_no NUMBER;
1248 l_rel_id NUMBER;
1249 l_person_id NUMBER;
1250 l_pop_flag VARCHAR2(1);
1251 l_cen VARCHAR2(30) := 'HZ_ORG_CONTACTS';
1252 BEGIN
1253 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_org_contacts+',
1254 p_prefix=>l_debug_prefix,
1255 p_msg_level=>fnd_log.level_procedure);
1256
1257 -- validate p_operation
1258 IF p_operation IN ('I','U') THEN
1259 NULL;
1260 ELSE
1261 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_org_contacts',
1262 p_prefix=>l_debug_prefix,
1263 p_msg_level=>fnd_log.level_procedure);
1264 RAISE FND_API.G_EXC_ERROR;
1265 END IF;
1266
1267 FOR c_child_rec IN c_child LOOP
1268 -- collect the child info into variables
1272 l_person_id := c_child_rec.person_id;
1269 l_lud := c_child_rec.lud;
1270 l_parent_id := c_child_rec.parent_id;
1271 l_child_id := c_child_rec.child_id;
1273 l_rel_id := c_child_rec.rel_id;
1274
1275 -- if record not existing, insert into hz_bus_obj_tracking
1276 BEGIN
1277 l_child_rec_exists_no := 0;
1278 SELECT child_id, populated_flag INTO l_child_rec_exists_no, l_pop_flag
1279 FROM HZ_BUS_OBJ_TRACKING
1280 WHERE event_id IS NULL
1281 AND CHILD_ENTITY_NAME = l_cen
1282 AND CHILD_ID = l_child_id
1283 AND rownum = 1;
1284
1285 IF l_child_rec_exists_no <> 0 THEN
1286 IF(l_pop_flag = 'Y') THEN
1287 UPDATE HZ_BUS_OBJ_TRACKING
1288 SET populated_flag = 'N'
1289 WHERE event_id IS NULL
1290 AND CHILD_ENTITY_NAME = l_cen
1291 AND CHILD_ID = l_child_id;
1292 END IF;
1293 -- data already exists, no need to write
1294 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
1295 p_prefix=>l_debug_prefix,
1296 p_msg_level=>fnd_log.level_procedure);
1297 END IF;
1298 EXCEPTION
1299 WHEN NO_DATA_FOUND THEN
1300 -- populate the child bo code also
1301 INSERT INTO HZ_BUS_OBJ_TRACKING
1302 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
1303 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
1304 ) VALUES (
1305 'N', p_operation, l_child_id, 'HZ_ORG_CONTACTS', 'ORG_CONTACT',
1306 l_lud, l_lud, 'HZ_PARTIES', l_parent_id, 'ORG');
1307
1308 -- populate subject person as child
1309 pop_parent_record(p_child_id => l_person_id,
1310 p_lud => l_lud,
1311 p_centity_name => 'HZ_PARTIES',
1312 p_cbo_code => 'PERSON_CONTACT',
1313 p_parent_id => l_child_id,
1314 p_pentity_name => 'HZ_ORG_CONTACTS',
1315 p_pbo_code => 'ORG_CONTACT');
1316
1317 -- populate relationship as child
1318 pop_parent_record(p_child_id => l_rel_id,
1319 p_lud => l_lud,
1320 p_centity_name => 'HZ_RELATIONSHIPS',
1321 p_cbo_code => NULL,
1322 p_parent_id => l_child_id,
1323 p_pentity_name => 'HZ_ORG_CONTACTS',
1324 p_pbo_code => 'ORG_CONTACT');
1325 END ; -- anonymous block end
1326 END LOOP;
1327
1328 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_org_contacts-',
1329 p_prefix=>l_debug_prefix,
1330 p_msg_level=>fnd_log.level_procedure);
1331 EXCEPTION
1332 WHEN OTHERS THEN
1333 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
1334 p_prefix=>l_debug_prefix,
1335 p_msg_level=>fnd_log.level_procedure);
1336 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1337 END pop_hz_org_contacts;
1338
1339 -----------------------------------------------------------------
1340 -- Procedure name: pop_hz_organization_profiles()
1341 -- Purpose: populates BOT for HZ_ORGANIZATION_PROFILES create or update
1342 -- Scope: internal
1343 -- Called From: V2 API
1344 -- Called By: HZ_ORGANIZATION_PROFILES create or update APIs
1345 -- Input Parameters:
1346 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
1347 -- p_organization_profile_id IN NUMBER
1348 --
1349 -- Note:
1350 -- Following are the allowed PARENT and CHILD BO combinations for HZ_ORGANIZATION_PROFILES
1351 -- This procedure must ensure that the combination is valid before populating BOT
1352 --
1353 -- PARENT BO: ORG :: CHILD BO:
1354 -----------------------------------------------------------------
1355 PROCEDURE pop_hz_organization_profiles(p_operation IN VARCHAR2, p_organization_profile_id IN NUMBER) IS
1356
1357 -- cursor statement to select the info from child table
1358 CURSOR C_child IS
1359 SELECT LAST_UPDATE_DATE lud, PARTY_ID parent_id, ORGANIZATION_PROFILE_ID child_id
1360 FROM HZ_ORGANIZATION_PROFILES
1361 WHERE ORGANIZATION_PROFILE_ID = P_ORGANIZATION_PROFILE_ID;
1362
1363 -- local variables
1364 l_debug_prefix VARCHAR2(40) := 'pop_hz_organization_profiles';
1365 l_parent_id NUMBER; -- used to store parent entity identifier
1366 l_child_id NUMBER; -- used to store HZ_ORGANIZATION_PROFILES identifier
1367 l_lud DATE; -- used to store the child last update date
1368 l_child_rec_exists_no NUMBER;
1369 l_cen VARCHAR2(30) := 'HZ_ORGANIZATION_PROFILES';
1370 BEGIN
1371 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_organization_profiles+',
1372 p_prefix=>l_debug_prefix,
1373 p_msg_level=>fnd_log.level_procedure);
1374
1375 -- validate p_operation
1376 IF p_operation IN ('I','U') THEN
1377 NULL;
1378 ELSE
1379 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_organization_profiles',
1380 p_prefix=>l_debug_prefix,
1381 p_msg_level=>fnd_log.level_procedure);
1382 RAISE FND_API.G_EXC_ERROR;
1383 END IF;
1384
1385 FOR c_child_rec IN c_child LOOP
1386 -- collect the child info into variables
1387 l_lud := c_child_rec.lud;
1388 l_parent_id := c_child_rec.parent_id;
1389 l_child_id := c_child_rec.child_id;
1390
1391 -- if record not existing, insert into hz_bus_obj_tracking
1395 FROM HZ_BUS_OBJ_TRACKING
1392 BEGIN
1393 l_child_rec_exists_no := 0;
1394 SELECT child_id INTO l_child_rec_exists_no
1396 WHERE event_id IS NULL
1397 AND CHILD_ENTITY_NAME = l_cen
1398 AND CHILD_ID = l_child_id
1399 AND rownum = 1;
1400
1401 IF l_child_rec_exists_no <> 0 THEN
1402 -- data already exists, no need to write
1403 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
1404 p_prefix=>l_debug_prefix,
1405 p_msg_level=>fnd_log.level_procedure);
1406 END IF;
1407 EXCEPTION
1408 WHEN NO_DATA_FOUND THEN
1409 INSERT INTO HZ_BUS_OBJ_TRACKING
1410 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
1411 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
1412 ) VALUES (
1413 'N', p_operation, l_child_id, 'HZ_ORGANIZATION_PROFILES', NULL,
1414 l_lud, l_lud, 'HZ_PARTIES', l_parent_id, 'ORG');
1415
1416 -- populate org party record
1417 pop_parent_record(p_child_id => l_parent_id,
1418 p_lud => l_lud,
1419 p_centity_name => 'HZ_PARTIES',
1420 p_cbo_code => 'ORG',
1421 p_parent_id => NULL,
1422 p_pentity_name => NULL,
1423 p_pbo_code => NULL);
1424 END ; -- anonymous block end
1425 END LOOP;
1426
1427 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_organization_profiles-',
1428 p_prefix=>l_debug_prefix,
1429 p_msg_level=>fnd_log.level_procedure);
1430 EXCEPTION
1431 WHEN OTHERS THEN
1432 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
1433 p_prefix=>l_debug_prefix,
1434 p_msg_level=>fnd_log.level_procedure);
1435 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1436 END pop_hz_organization_profiles;
1437
1438 -----------------------------------------------------------------
1439 -- Procedure name: pop_hz_locations()
1440 -- Purpose: populates BOT for HZ_LOCATIONS create or update
1441 -- Scope: internal
1442 -- Called From: V2 API
1443 -- Called By: HZ_LOCATIONS create or update APIs
1444 -- Input Parameters:
1445 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
1446 -- p_location_id IN NUMBER
1447 --
1448 -- Note:
1449 -- Following are the allowed PARENT and CHILD BO combinations for HZ_LOCATIONS
1450 -- This procedure must ensure that the combination is valid before populating BOT
1451 --
1452 -- PARENT BO: PARTY_SITE :: CHILD BO: LOCATION
1453 -----------------------------------------------------------------
1454 PROCEDURE pop_hz_locations(p_operation IN VARCHAR2, p_location_id IN NUMBER) IS
1455
1456 CURSOR c_child IS -- this is incorrect - please change
1457 SELECT LAST_UPDATE_DATE lud, LOCATION_ID child_id
1458 FROM HZ_LOCATIONS
1459 WHERE location_id = p_location_id;
1460
1461 CURSOR c_ps(l_loc_id NUMBER) IS
1462 SELECT party_site_id
1463 FROM HZ_PARTY_SITES ps, HZ_PARTIES p
1464 WHERE ps.location_id = l_loc_id
1465 AND ps.party_id = p.party_id;
1466
1467 -- local variables
1468 l_debug_prefix VARCHAR2(40) := 'pop_hz_locations';
1469 l_parent_id NUMBER; -- used to store parent entity identifier
1470 l_parent_tbl_name VARCHAR2(30); -- used to store parent entity name
1471 l_bo_code VARCHAR2(30); -- used to store BO Code
1472 l_child_bo_code VARCHAR2(30); -- used to store Child BO Code (if child entity is a root node)
1473 l_child_id NUMBER; -- used to store HZ_LOCATIONS identifier
1474 l_lud DATE; -- used to store the child last update date
1475 l_child_rec_exists_no NUMBER;
1476 l_cen VARCHAR2(30) := 'HZ_LOCATIONS';
1477 BEGIN
1478 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_locations+',
1479 p_prefix=>l_debug_prefix,
1480 p_msg_level=>fnd_log.level_procedure);
1481
1482 -- validate p_operation
1483 IF p_operation IN ('I','U') THEN
1484 NULL;
1485 ELSE
1486 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_locations',
1487 p_prefix=>l_debug_prefix,
1488 p_msg_level=>fnd_log.level_procedure);
1489 RAISE FND_API.G_EXC_ERROR;
1490 END IF;
1491
1492 FOR c_child_rec IN c_child LOOP
1493 l_lud := c_child_rec.lud;
1494 l_child_id := c_child_rec.child_id;
1495
1496 -- if record not existing, insert into hz_bus_obj_tracking
1497 BEGIN
1498 l_child_rec_exists_no := 0;
1499 SELECT child_id INTO l_child_rec_exists_no
1500 FROM HZ_BUS_OBJ_TRACKING
1501 WHERE event_id IS NULL
1502 AND CHILD_ENTITY_NAME = l_cen
1503 AND CHILD_ID = l_child_id
1504 AND rownum = 1;
1505
1506 IF l_child_rec_exists_no <> 0 THEN
1507 -- data already exists, no need to write
1508 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
1509 p_prefix=>l_debug_prefix,
1510 p_msg_level=>fnd_log.level_procedure);
1511 END IF;
1512 EXCEPTION
1513 WHEN NO_DATA_FOUND THEN
1514 OPEN c_ps(l_child_id);
1515 LOOP
1516 FETCH c_ps INTO l_parent_id;
1517 EXIT WHEN c_ps%NOTFOUND;
1518 -- populate the child bo code also
1519 INSERT INTO HZ_BUS_OBJ_TRACKING
1523 'N', p_operation, l_child_id, 'HZ_LOCATIONS', 'LOCATION',
1520 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
1521 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
1522 ) VALUES (
1524 l_lud, l_lud, 'HZ_PARTY_SITES', l_parent_id, 'PARTY_SITE');
1525 END LOOP;
1526 CLOSE c_ps;
1527 END ; -- anonymous block end
1528 END LOOP;
1529
1530 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_locations-',
1531 p_prefix=>l_debug_prefix,
1532 p_msg_level=>fnd_log.level_procedure);
1533 EXCEPTION
1534 WHEN OTHERS THEN
1535 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
1536 p_prefix=>l_debug_prefix,
1537 p_msg_level=>fnd_log.level_procedure);
1538 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1539 END pop_hz_locations;
1540
1541 -----------------------------------------------------------------
1542 -- Procedure name: pop_hz_financial_reports()
1543 -- Purpose: populates BOT for HZ_FINANCIAL_REPORTS create or update
1544 -- Scope: internal
1545 -- Called From: V2 API
1546 -- Called By: HZ_FINANCIAL_REPORTS create or update APIs
1547 -- Input Parameters:
1548 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
1549 -- p_financial_report_id IN NUMBER
1550 --
1551 -- Note:
1552 -- Following are the allowed PARENT and CHILD BO combinations for HZ_FINANCIAL_REPORTS
1553 -- This procedure must ensure that the combination is valid before populating BOT
1554 --
1555 -- PARENT BO: ORG :: CHILD BO: FIN_REPORT
1556 -----------------------------------------------------------------
1557 PROCEDURE pop_hz_financial_reports(p_operation IN VARCHAR2, p_financial_report_id IN NUMBER) IS
1558
1559 -- cursor statement to select the info from child table
1560 CURSOR C_child IS
1561 SELECT fr.LAST_UPDATE_DATE lud, fr.PARTY_ID parent_id, fr.FINANCIAL_REPORT_ID child_id,
1562 decode(p.party_type, 'ORGANIZATION', 'ORG', null) bo_code
1563 FROM HZ_FINANCIAL_REPORTS fr, HZ_PARTIES p
1564 WHERE fr.FINANCIAL_REPORT_ID = P_FINANCIAL_REPORT_ID
1565 AND fr.party_id = p.party_id
1566 AND p.party_type = 'ORGANIZATION';
1567
1568 -- local variables
1569 l_debug_prefix VARCHAR2(40) := 'pop_hz_financial_reports';
1570 l_parent_id NUMBER; -- used to store parent entity identifier
1571 l_bo_code VARCHAR2(30); -- used to store BO Code
1572 l_child_bo_code VARCHAR2(30); -- used to store Child BO Code (if child entity is a root node)
1573 l_child_id NUMBER; -- used to store HZ_FINANCIAL_REPORTS identifier
1574 l_lud DATE; -- used to store the child last update date
1575 l_child_rec_exists_no NUMBER;
1576 l_pop_flag VARCHAR2(1);
1577 l_cen VARCHAR2(30) := 'HZ_FINANCIAL_REPORTS';
1578 BEGIN
1579 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_financial_reports+',
1580 p_prefix=>l_debug_prefix,
1581 p_msg_level=>fnd_log.level_procedure);
1582
1583 -- validate p_operation
1584 IF p_operation IN ('I','U') THEN
1585 NULL;
1586 ELSE
1587 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_financial_reports',
1588 p_prefix=>l_debug_prefix,
1589 p_msg_level=>fnd_log.level_procedure);
1590 RAISE FND_API.G_EXC_ERROR;
1591 END IF;
1592
1593 FOR c_child_rec IN c_child LOOP
1594 -- collect the child info into variables
1595 l_lud := c_child_rec.lud;
1596 l_parent_id := c_child_rec.parent_id;
1597 l_bo_code := c_child_rec.bo_code;
1598 l_child_id := c_child_rec.child_id;
1599
1600 -- if record not existing, insert into hz_bus_obj_tracking
1601 BEGIN
1602 l_child_rec_exists_no := 0;
1603 SELECT child_id, populated_flag INTO l_child_rec_exists_no, l_pop_flag
1604 FROM HZ_BUS_OBJ_TRACKING
1605 WHERE event_id IS NULL
1606 AND CHILD_ENTITY_NAME = l_cen
1607 AND CHILD_ID = l_child_id
1608 AND rownum = 1;
1609
1610 IF l_child_rec_exists_no <> 0 THEN
1611 IF(l_pop_flag = 'Y') THEN
1612 UPDATE HZ_BUS_OBJ_TRACKING
1613 SET populated_flag = 'N'
1614 WHERE event_id IS NULL
1615 AND CHILD_ENTITY_NAME = l_cen
1616 AND CHILD_ID = l_child_id;
1617 END IF;
1618 -- data already exists, no need to write
1619 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
1620 p_prefix=>l_debug_prefix,
1621 p_msg_level=>fnd_log.level_procedure);
1622 END IF;
1623 EXCEPTION
1624 WHEN NO_DATA_FOUND THEN
1625 -- populate the child bo code also
1626 INSERT INTO HZ_BUS_OBJ_TRACKING
1627 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
1628 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
1629 ) VALUES (
1630 'N', p_operation, l_child_id, 'HZ_FINANCIAL_REPORTS', 'FIN_REPORT',
1631 l_lud, l_lud, 'HZ_PARTIES', l_parent_id, l_bo_code);
1632
1633 -- populate org party record
1634 pop_parent_record(p_child_id => l_parent_id,
1635 p_lud => l_lud,
1636 p_centity_name => 'HZ_PARTIES',
1637 p_cbo_code => l_bo_code,
1638 p_parent_id => NULL,
1639 p_pentity_name => NULL,
1640 p_pbo_code => NULL);
1641 END ; -- anonymous block end
1645 p_prefix=>l_debug_prefix,
1642 END LOOP;
1643
1644 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_financial_reports-',
1646 p_msg_level=>fnd_log.level_procedure);
1647 EXCEPTION
1648 WHEN OTHERS THEN
1649 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
1650 p_prefix=>l_debug_prefix,
1651 p_msg_level=>fnd_log.level_procedure);
1652 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1653 END pop_hz_financial_reports;
1654
1655 -----------------------------------------------------------------
1656 -- Procedure name: pop_hz_financial_profile()
1657 -- Purpose: populates BOT for HZ_FINANCIAL_PROFILE create or update
1658 -- Scope: internal
1659 -- Called From: V2 API
1660 -- Called By: HZ_FINANCIAL_PROFILE create or update APIs
1661 -- Input Parameters:
1662 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
1663 -- p_financial_profile_id IN NUMBER
1664 --
1665 -- Note:
1666 -- Following are the allowed PARENT and CHILD BO combinations for HZ_FINANCIAL_PROFILE
1667 -- This procedure must ensure that the combination is valid before populating BOT
1668 --
1669 -- PARENT BO: ORG :: CHILD BO:
1670 -- PARENT BO: PERSON :: CHILD BO:
1671 -----------------------------------------------------------------
1672 PROCEDURE pop_hz_financial_profile(p_operation IN VARCHAR2, p_financial_profile_id IN NUMBER) IS
1673
1674 -- cursor statement to select the info from child table
1675 CURSOR c_child IS
1676 SELECT fp.LAST_UPDATE_DATE lud, fp.PARTY_ID parent_id,
1677 fp.FINANCIAL_PROFILE_ID child_id,
1678 decode(p.party_type, 'ORGANIZATION', 'ORG', 'PERSON', 'PERSON', NULL) bo_code
1679 FROM HZ_FINANCIAL_PROFILE fp, HZ_PARTIES p
1680 WHERE fp.FINANCIAL_PROFILE_ID = P_FINANCIAL_PROFILE_ID
1681 AND fp.party_id = p.party_id
1682 AND p.party_type in ('ORGANIZATION', 'PERSON');
1683
1684 -- local variables
1685 l_debug_prefix VARCHAR2(40) := 'pop_hz_financial_profile';
1686 l_parent_id NUMBER; -- used to store parent entity identifier
1687 l_bo_code VARCHAR2(30); -- used to store BO Code
1688 l_child_id NUMBER; -- used to store HZ_FINANCIAL_PROFILE identifier
1689 l_lud DATE; -- used to store the child last update date
1690 l_child_rec_exists_no NUMBER;
1691 l_cen VARCHAR2(30) := 'HZ_FINANCIAL_PROFILE';
1692 BEGIN
1693 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_financial_profile+',
1694 p_prefix=>l_debug_prefix,
1695 p_msg_level=>fnd_log.level_procedure);
1696
1697 -- validate p_operation
1698 IF p_operation IN ('I','U') THEN
1699 NULL;
1700 ELSE
1701 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_financial_profile',
1702 p_prefix=>l_debug_prefix,
1703 p_msg_level=>fnd_log.level_procedure);
1704 RAISE FND_API.G_EXC_ERROR;
1705 END IF;
1706
1707 FOR c_child_rec IN c_child LOOP
1708 -- collect the child info into variables
1709 l_lud := c_child_rec.lud;
1710 l_parent_id := c_child_rec.parent_id;
1711 l_bo_code := c_child_rec.bo_code;
1712 l_child_id := c_child_rec.child_id;
1713
1714 -- if record not existing, insert into hz_bus_obj_tracking
1715 BEGIN
1716 l_child_rec_exists_no := 0;
1717 SELECT child_id INTO l_child_rec_exists_no
1718 FROM HZ_BUS_OBJ_TRACKING
1719 WHERE event_id IS NULL
1720 AND CHILD_ENTITY_NAME = l_cen
1721 AND CHILD_ID = l_child_id
1722 AND rownum = 1;
1723
1724 IF l_child_rec_exists_no <> 0 THEN
1725 -- data already exists, no need to write
1726 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
1727 p_prefix=>l_debug_prefix,
1728 p_msg_level=>fnd_log.level_procedure);
1729 END IF;
1730 EXCEPTION
1731 WHEN NO_DATA_FOUND THEN
1732 INSERT INTO HZ_BUS_OBJ_TRACKING
1733 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
1734 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
1735 ) VALUES (
1736 'N', p_operation, l_child_id, 'HZ_FINANCIAL_PROFILE', NULL,
1737 l_lud, l_lud, 'HZ_PARTIES', l_parent_id, l_bo_code);
1738
1739 -- populate org party record
1740 pop_parent_record(p_child_id => l_parent_id,
1741 p_lud => l_lud,
1742 p_centity_name => 'HZ_PARTIES',
1743 p_cbo_code => l_bo_code,
1744 p_parent_id => NULL,
1745 p_pentity_name => NULL,
1746 p_pbo_code => NULL);
1747 END ; -- anonymous block end
1748 END LOOP;
1749
1750 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_financial_profile-',
1751 p_prefix=>l_debug_prefix,
1752 p_msg_level=>fnd_log.level_procedure);
1753 EXCEPTION
1754 WHEN OTHERS THEN
1755 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
1756 p_prefix=>l_debug_prefix,
1757 p_msg_level=>fnd_log.level_procedure);
1758 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1759 END pop_hz_financial_profile;
1760
1761 -----------------------------------------------------------------
1762 -- Procedure name: pop_hz_financial_numbers()
1763 -- Purpose: populates BOT for HZ_FINANCIAL_NUMBERS create or update
1764 -- Scope: internal
1765 -- Called From: V2 API
1766 -- Called By: HZ_FINANCIAL_NUMBERS create or update APIs
1770 --
1767 -- Input Parameters:
1768 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
1769 -- p_financial_number_id IN NUMBER
1771 -- Note:
1772 -- Following are the allowed PARENT and CHILD BO combinations for HZ_FINANCIAL_NUMBERS
1773 -- This procedure must ensure that the combination is valid before populating BOT
1774 --
1775 -- PARENT BO: FIN_REPORT :: CHILD BO:
1776 -----------------------------------------------------------------
1777 PROCEDURE pop_hz_financial_numbers(p_operation IN VARCHAR2, p_financial_number_id IN NUMBER) IS
1778
1779 -- cursor statement to select the info from child table
1780 CURSOR C_child IS
1781 SELECT fn.LAST_UPDATE_DATE lud, fn.FINANCIAL_REPORT_ID parent_id,
1782 fn.FINANCIAL_NUMBER_ID child_id, fr.party_id party_id
1783 FROM HZ_FINANCIAL_NUMBERS fn, HZ_FINANCIAL_REPORTS fr, HZ_PARTIES p
1784 WHERE fn.FINANCIAL_NUMBER_ID = P_FINANCIAL_NUMBER_ID
1785 AND fn.financial_report_id = fr.financial_report_id
1786 AND fr.party_id = p.party_id
1787 AND p.party_type = 'ORGANIZATION';
1788
1789 -- local variables
1790 l_debug_prefix VARCHAR2(40) := 'pop_hz_financial_numbers';
1791 l_parent_id NUMBER; -- used to store parent entity identifier
1792 l_child_id NUMBER; -- used to store HZ_FINANCIAL_NUMBERS identifier
1793 l_lud DATE; -- used to store the child last update date
1794 l_child_rec_exists_no NUMBER;
1795 l_party_id NUMBER;
1796 l_cen VARCHAR2(30) := 'HZ_FINANCIAL_NUMBERS';
1797 BEGIN
1798 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_financial_numbers+',
1799 p_prefix=>l_debug_prefix,
1800 p_msg_level=>fnd_log.level_procedure);
1801
1802 -- validate p_operation
1803 IF p_operation IN ('I','U') THEN
1804 NULL;
1805 ELSE
1806 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_financial_numbers',
1807 p_prefix=>l_debug_prefix,
1808 p_msg_level=>fnd_log.level_procedure);
1809 RAISE FND_API.G_EXC_ERROR;
1810 END IF;
1811
1812 FOR c_child_rec IN c_child LOOP
1813 -- collect the child info into variables
1814 l_lud := c_child_rec.lud;
1815 l_child_id := c_child_rec.child_id;
1816 l_parent_id := c_child_rec.parent_id;
1817 l_party_id := c_child_rec.party_id;
1818
1819 -- if record not existing, insert into hz_bus_obj_tracking
1820 BEGIN
1821 l_child_rec_exists_no := 0;
1822 SELECT child_id INTO l_child_rec_exists_no
1823 FROM HZ_BUS_OBJ_TRACKING
1824 WHERE event_id IS NULL
1825 AND CHILD_ENTITY_NAME = l_cen
1826 AND CHILD_ID = l_child_id
1827 AND rownum = 1;
1828
1829 IF l_child_rec_exists_no <> 0 THEN
1830 -- data already exists, no need to write
1831 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
1832 p_prefix=>l_debug_prefix,
1833 p_msg_level=>fnd_log.level_procedure);
1834 END IF;
1835 EXCEPTION
1836 WHEN NO_DATA_FOUND THEN
1837 INSERT INTO HZ_BUS_OBJ_TRACKING
1838 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
1839 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
1840 ) VALUES (
1841 'N', p_operation, l_child_id, 'HZ_FINANCIAL_NUMBERS', NULL,
1842 l_lud, l_lud, 'HZ_FINANCIAL_REPORTS', l_parent_id, 'FIN_REPORT');
1843
1844 -- populate org party record
1845 pop_parent_record(p_child_id => l_parent_id,
1846 p_lud => l_lud,
1847 p_centity_name => 'HZ_FINANCIAL_REPORTS',
1848 p_cbo_code => 'FIN_REPORT',
1849 p_parent_id => l_party_id,
1850 p_pentity_name => 'HZ_PARTIES',
1851 p_pbo_code => 'ORG');
1852
1853 -- populate org party record
1854 pop_parent_record(p_child_id => l_party_id,
1855 p_lud => l_lud,
1856 p_centity_name => 'HZ_PARTIES',
1857 p_cbo_code => 'ORG',
1858 p_parent_id => NULL,
1859 p_pentity_name => NULL,
1860 p_pbo_code => NULL);
1861 END ; -- anonymous block end
1862 END LOOP;
1863
1864 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_financial_numbers-',
1865 p_prefix=>l_debug_prefix,
1866 p_msg_level=>fnd_log.level_procedure);
1867 EXCEPTION
1868 WHEN OTHERS THEN
1869 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
1870 p_prefix=>l_debug_prefix,
1871 p_msg_level=>fnd_log.level_procedure);
1872 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1873 END pop_hz_financial_numbers;
1874
1875 -----------------------------------------------------------------
1876 -- Procedure name: pop_hz_employment_history()
1877 -- Purpose: populates BOT for HZ_EMPLOYMENT_HISTORY create or update
1878 -- Scope: internal
1879 -- Called From: V2 API
1880 -- Called By: HZ_EMPLOYMENT_HISTORY create or update APIs
1881 -- Input Parameters:
1882 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
1883 -- p_employment_history_id IN NUMBER
1884 --
1885 -- Note:
1886 -- Following are the allowed PARENT and CHILD BO combinations for HZ_EMPLOYMENT_HISTORY
1887 -- This procedure must ensure that the combination is valid before populating BOT
1888 --
1892
1889 -- PARENT BO: PERSON :: CHILD BO: EMP_HIST
1890 -----------------------------------------------------------------
1891 PROCEDURE pop_hz_employment_history(p_operation IN VARCHAR2, p_EMPLOYMENT_HISTORY_ID IN NUMBER) IS
1893 -- cursor statement to select the info from child table
1894 CURSOR C_child IS
1895 SELECT eh.LAST_UPDATE_DATE lud, eh.PARTY_ID parent_id,
1896 eh.EMPLOYMENT_HISTORY_ID child_id
1897 FROM HZ_EMPLOYMENT_HISTORY eh, HZ_PARTIES p
1898 WHERE eh.EMPLOYMENT_HISTORY_ID = P_EMPLOYMENT_HISTORY_ID
1899 AND eh.party_id = p.party_id
1900 AND p.party_type = 'PERSON';
1901
1902 -- local variables
1903 l_debug_prefix VARCHAR2(40) := 'pop_hz_employment_history';
1904 l_parent_id NUMBER; -- used to store parent entity identifier
1905 l_child_id NUMBER; -- used to store HZ_EMPLOYMENT_HISTORY identifier
1906 l_lud DATE; -- used to store the child last update date
1907 l_child_rec_exists_no NUMBER;
1908 l_pop_flag VARCHAR2(1);
1909 l_cen VARCHAR2(30) := 'HZ_EMPLOYMENT_HISTORY';
1910 BEGIN
1911 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_employment_history+',
1912 p_prefix=>l_debug_prefix,
1913 p_msg_level=>fnd_log.level_procedure);
1914
1915 -- validate p_operation
1916 IF p_operation IN ('I','U') THEN
1917 NULL;
1918 ELSE
1919 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_employment_history',
1920 p_prefix=>l_debug_prefix,
1921 p_msg_level=>fnd_log.level_procedure);
1922 RAISE FND_API.G_EXC_ERROR;
1923 END IF;
1924
1925 FOR c_child_rec IN c_child LOOP
1926 -- collect the child info into variables
1927 l_lud := c_child_rec.lud;
1928 l_child_id := c_child_rec.child_id;
1929 l_parent_id := c_child_rec.parent_id;
1930
1931 -- if record not existing, insert into hz_bus_obj_tracking
1932 BEGIN
1933 l_child_rec_exists_no := 0;
1934 SELECT child_id, populated_flag INTO l_child_rec_exists_no, l_pop_flag
1935 FROM HZ_BUS_OBJ_TRACKING
1936 WHERE event_id IS NULL
1937 AND CHILD_ENTITY_NAME = 'HZ_EMPLOYMENT_HISTORY'
1938 AND CHILD_ID = l_child_id
1939 AND rownum = 1;
1940
1941 IF l_child_rec_exists_no <> 0 THEN
1942 IF(l_pop_flag = 'Y') THEN
1943 UPDATE HZ_BUS_OBJ_TRACKING
1944 SET populated_flag = 'N'
1945 WHERE event_id IS NULL
1946 AND CHILD_ENTITY_NAME = l_cen
1947 AND CHILD_ID = l_child_id;
1948 END IF;
1949 -- data already exists, no need to write
1950 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
1951 p_prefix=>l_debug_prefix,
1952 p_msg_level=>fnd_log.level_procedure);
1953 END IF;
1954 EXCEPTION
1955 WHEN NO_DATA_FOUND THEN
1956 -- populate the child bo code also
1957 INSERT INTO HZ_BUS_OBJ_TRACKING
1958 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
1959 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
1960 ) VALUES (
1961 'N', p_operation, l_child_id, 'HZ_EMPLOYMENT_HISTORY', 'EMP_HIST',
1962 l_lud, l_lud, 'HZ_PARTIES', l_parent_id, 'PERSON');
1963
1964 -- populate org party record
1965 pop_parent_record(p_child_id => l_parent_id,
1966 p_lud => l_lud,
1967 p_centity_name => 'HZ_PARTIES',
1968 p_cbo_code => 'PERSON',
1969 p_parent_id => NULL,
1970 p_pentity_name => NULL,
1971 p_pbo_code => NULL);
1972 END ; -- anonymous block end
1973 END LOOP;
1974
1975 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_employment_history-',
1976 p_prefix=>l_debug_prefix,
1977 p_msg_level=>fnd_log.level_procedure);
1978 EXCEPTION
1979 WHEN OTHERS THEN
1980 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
1981 p_prefix=>l_debug_prefix,
1982 p_msg_level=>fnd_log.level_procedure);
1983 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1984 END pop_hz_employment_history;
1985
1986 -----------------------------------------------------------------
1987 -- Procedure name: pop_hz_education()
1988 -- Purpose: populates BOT for HZ_EDUCATION create or update
1989 -- Scope: internal
1990 -- Called From: V2 API
1991 -- Called By: HZ_EDUCATION create or update APIs
1992 -- Input Parameters:
1993 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
1994 -- p_education_id IN NUMBER
1995 --
1996 -- Note:
1997 -- Following are the allowed PARENT and CHILD BO combinations for HZ_EDUCATION
1998 -- This procedure must ensure that the combination is valid before populating BOT
1999 --
2000 -- PARENT BO: PERSON :: CHILD BO:
2001 -----------------------------------------------------------------
2002 PROCEDURE pop_hz_education(p_operation IN VARCHAR2, p_EDUCATION_ID IN NUMBER) IS
2003
2004 -- cursor statement to select the info from child table
2005 CURSOR C_child IS
2006 SELECT edu.LAST_UPDATE_DATE lud, edu.PARTY_ID parent_id, edu.EDUCATION_ID child_id
2007 FROM HZ_EDUCATION edu, HZ_PARTIES p
2008 WHERE edu.EDUCATION_ID = P_EDUCATION_ID
2009 AND edu.party_id = p.party_id
2010 AND p.party_type = 'PERSON';
2011
2012 -- local variables
2013 l_debug_prefix VARCHAR2(40) := 'pop_hz_education';
2017 l_child_rec_exists_no NUMBER;
2014 l_parent_id NUMBER; -- used to store parent entity identifier
2015 l_child_id NUMBER; -- used to store HZ_EDUCATION identifier
2016 l_lud DATE; -- used to store the child last update date
2018 l_cen VARCHAR2(30) := 'HZ_EDUCATION';
2019 BEGIN
2020 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_education+',
2021 p_prefix=>l_debug_prefix,
2022 p_msg_level=>fnd_log.level_procedure);
2023
2024 -- validate p_operation
2025 IF p_operation IN ('I','U') THEN
2026 NULL;
2027 ELSE
2028 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_education',
2029 p_prefix=>l_debug_prefix,
2030 p_msg_level=>fnd_log.level_procedure);
2031 RAISE FND_API.G_EXC_ERROR;
2032 END IF;
2033
2034 FOR c_child_rec IN c_child LOOP
2035 -- collect the child info into variables
2036 l_lud := c_child_rec.lud;
2037 l_child_id := c_child_rec.child_id;
2038 l_parent_id := c_child_rec.parent_id;
2039
2040 -- if record not existing, insert into hz_bus_obj_tracking
2041 BEGIN
2042 l_child_rec_exists_no := 0;
2043 SELECT child_id INTO l_child_rec_exists_no
2044 FROM HZ_BUS_OBJ_TRACKING
2045 WHERE event_id IS NULL
2046 AND CHILD_ENTITY_NAME = l_cen
2047 AND CHILD_ID = l_child_id
2048 AND rownum = 1;
2049
2050 IF l_child_rec_exists_no <> 0 THEN
2051 -- data already exists, no need to write
2052 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
2053 p_prefix=>l_debug_prefix,
2054 p_msg_level=>fnd_log.level_procedure);
2055 END IF;
2056 EXCEPTION
2057 WHEN NO_DATA_FOUND THEN
2058 INSERT INTO HZ_BUS_OBJ_TRACKING
2059 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
2060 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
2061 ) VALUES (
2062 'N', p_operation, l_child_id, 'HZ_EDUCATION', NULL,
2063 l_lud, l_lud, 'HZ_PARTIES', l_parent_id, 'PERSON');
2064
2065 -- populate org party record
2066 pop_parent_record(p_child_id => l_parent_id,
2067 p_lud => l_lud,
2068 p_centity_name => 'HZ_PARTIES',
2069 p_cbo_code => 'PERSON',
2070 p_parent_id => NULL,
2071 p_pentity_name => NULL,
2072 p_pbo_code => NULL);
2073 END ; -- anonymous block end
2074 END LOOP;
2075
2076 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_education-',
2077 p_prefix=>l_debug_prefix,
2078 p_msg_level=>fnd_log.level_procedure);
2079 EXCEPTION
2080 WHEN OTHERS THEN
2081 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
2082 p_prefix=>l_debug_prefix,
2083 p_msg_level=>fnd_log.level_procedure);
2084 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2085 END pop_hz_education;
2086
2087 -----------------------------------------------------------------
2088 -- Procedure name: pop_hz_cust_site_uses_all()
2089 -- Purpose: populates BOT for HZ_CUST_SITE_USES_ALL create or update
2090 -- Scope: internal
2091 -- Called From: V2 API
2092 -- Called By: HZ_CUST_SITE_USES_ALL create or update APIs
2093 -- Input Parameters:
2094 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
2095 -- p_site_use_id IN NUMBER
2096 --
2097 -- Note:
2098 -- Following are the allowed PARENT and CHILD BO combinations for HZ_CUST_SITE_USES_ALL
2099 -- This procedure must ensure that the combination is valid before populating BOT
2100 --
2101 -- PARENT BO: CUST_ACCT_SITE :: CHILD BO: CUST_ACCT_SITE_USE
2102 -----------------------------------------------------------------
2103 PROCEDURE pop_hz_cust_site_uses_all(p_operation IN VARCHAR2, p_site_use_id IN NUMBER) IS
2104
2105 -- cursor statement to select the info from child table
2106 CURSOR C_child IS
2107 SELECT casu.LAST_UPDATE_DATE lud, casu.CUST_ACCT_SITE_ID parent_id,
2108 casu.SITE_USE_ID child_id, cas.cust_account_id cust_acct_id
2109 FROM HZ_CUST_SITE_USES_ALL casu, HZ_CUST_ACCT_SITES_ALL cas
2110 WHERE casu.SITE_USE_ID = P_SITE_USE_ID
2111 AND casu.cust_acct_site_id = cas.cust_acct_site_id
2112 AND cas.cust_account_id > 0;
2113
2114 -- local variables
2115 l_debug_prefix VARCHAR2(40) := 'pop_hz_cust_site_uses_all';
2116 l_parent_id NUMBER; -- used to store parent entity identifier
2117 l_child_id NUMBER; -- used to store HZ_CUST_SITE_USES_ALL identifier
2118 l_lud DATE; -- used to store the child last update date
2119 l_child_rec_exists_no NUMBER;
2120 l_acct_id NUMBER;
2121 l_cen VARCHAR2(30) := 'HZ_CUST_SITE_USES_ALL';
2122 BEGIN
2123 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_cust_site_uses_all+',
2124 p_prefix=>l_debug_prefix,
2125 p_msg_level=>fnd_log.level_procedure);
2126
2127 -- validate p_operation
2128 IF p_operation IN ('I','U') THEN
2129 NULL;
2130 ELSE
2131 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_cust_site_uses_all',
2132 p_prefix=>l_debug_prefix,
2133 p_msg_level=>fnd_log.level_procedure);
2134 RAISE FND_API.G_EXC_ERROR;
2135 END IF;
2136
2137 FOR c_child_rec IN c_child LOOP
2138 -- collect the child info into variables
2142 l_acct_id := c_child_rec.cust_acct_id;
2139 l_lud := c_child_rec.lud;
2140 l_child_id := c_child_rec.child_id;
2141 l_parent_id := c_child_rec.parent_id;
2143
2144 -- if record not existing, insert into hz_bus_obj_tracking
2145 BEGIN
2146 l_child_rec_exists_no := 0;
2147 SELECT child_id INTO l_child_rec_exists_no
2148 FROM HZ_BUS_OBJ_TRACKING
2149 WHERE event_id IS NULL
2150 AND CHILD_ENTITY_NAME = l_cen
2151 AND CHILD_ID = l_child_id
2152 AND rownum = 1;
2153
2154 IF l_child_rec_exists_no <> 0 THEN
2155 -- data already exists, no need to write
2156 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
2157 p_prefix=>l_debug_prefix,
2158 p_msg_level=>fnd_log.level_procedure);
2159 END IF;
2160 EXCEPTION
2161 WHEN NO_DATA_FOUND THEN
2162 -- populate the child bo code also
2163 INSERT INTO HZ_BUS_OBJ_TRACKING
2164 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
2165 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
2166 ) VALUES (
2167 'N', p_operation, l_child_id, 'HZ_CUST_SITE_USES_ALL', 'CUST_ACCT_SITE_USE',
2168 l_lud, l_lud, 'HZ_CUST_ACCT_SITES_ALL', l_parent_id, 'CUST_ACCT_SITE');
2169 END ; -- anonymous block end
2170 END LOOP;
2171
2172 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_cust_site_uses_all-',
2173 p_prefix=>l_debug_prefix,
2174 p_msg_level=>fnd_log.level_procedure);
2175 EXCEPTION
2176 WHEN OTHERS THEN
2177 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
2178 p_prefix=>l_debug_prefix,
2179 p_msg_level=>fnd_log.level_procedure);
2180 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2181 END pop_hz_cust_site_uses_all;
2182
2183 -----------------------------------------------------------------
2184 -- Procedure name: pop_hz_cust_profile_amts()
2185 -- Purpose: populates BOT for HZ_CUST_PROFILE_AMTS create or update
2186 -- Scope: internal
2187 -- Called From: V2 API
2188 -- Called By: HZ_CUST_PROFILE_AMTS create or update APIs
2189 -- Input Parameters:
2190 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
2191 -- p_cust_acct_profile_amt_id IN NUMBER
2192 --
2193 -- Note:
2194 -- Following are the allowed PARENT and CHILD BO combinations for HZ_CUST_PROFILE_AMTS
2195 -- This procedure must ensure that the combination is valid before populating BOT
2196 --
2197 -- PARENT BO: CUST_PROFILE :: CHILD BO:
2198 -----------------------------------------------------------------
2199 PROCEDURE pop_hz_cust_profile_amts(p_operation IN VARCHAR2, p_cust_acct_profile_amt_id IN NUMBER) IS
2200
2201 -- cursor statement to select the info from child table
2202 CURSOR C_child IS
2203 SELECT cpa.LAST_UPDATE_DATE lud, cpa.CUST_ACCOUNT_PROFILE_ID parent_id,
2204 cpa.CUST_ACCT_PROFILE_AMT_ID child_id,
2205 nvl(cp.site_use_id, cp.cust_account_id) cp_parent_id,
2206 decode(cp.site_use_id, null, 'HZ_CUST_ACCOUNTS', 'HZ_CUST_SITE_USES_ALL') cp_parent_entity,
2207 decode(cp.site_use_id, null, 'CUST_ACCT', 'CUST_ACCT_SITE_USE') cp_parent_bo
2208 FROM HZ_CUST_PROFILE_AMTS cpa, HZ_CUSTOMER_PROFILES cp
2209 WHERE cpa.CUST_ACCT_PROFILE_AMT_ID = P_CUST_ACCT_PROFILE_AMT_ID
2210 AND cpa.cust_account_profile_id = cp.cust_account_profile_id
2211 AND cp.cust_account_id > 0;
2212
2213 -- local variables
2214 l_debug_prefix VARCHAR2(40) := 'pop_hz_cust_profile_amts';
2215 l_parent_id NUMBER; -- used to store parent entity identifier
2216 l_child_id NUMBER; -- used to store HZ_CUST_PROFILE_AMTS identifier
2217 l_lud DATE; -- used to store the child last update date
2218 l_child_rec_exists_no NUMBER;
2219 l_cp_parent_id NUMBER;
2220 l_cp_parent_entity VARCHAR2(30);
2221 l_cp_parent_bo VARCHAR2(30);
2222 l_cen VARCHAR2(30) := 'HZ_CUST_PROFILE_AMTS';
2223 BEGIN
2224 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_cust_profile_amts+',
2225 p_prefix=>l_debug_prefix,
2226 p_msg_level=>fnd_log.level_procedure);
2227
2228 -- validate p_operation
2229 IF p_operation IN ('I','U') THEN
2230 NULL;
2231 ELSE
2232 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_cust_profile_amts',
2233 p_prefix=>l_debug_prefix,
2234 p_msg_level=>fnd_log.level_procedure);
2235 RAISE FND_API.G_EXC_ERROR;
2236 END IF;
2237
2238 FOR c_child_rec IN c_child LOOP
2239 -- collect the child info into variables
2240 l_lud := c_child_rec.lud;
2241 l_child_id := c_child_rec.child_id;
2242 l_parent_id := c_child_rec.parent_id;
2243 l_cp_parent_id := c_child_rec.cp_parent_id;
2244 l_cp_parent_entity := c_child_rec.cp_parent_entity;
2245 l_cp_parent_bo := c_child_rec.cp_parent_bo;
2246
2247 -- if record not existing, insert into hz_bus_obj_tracking
2248 BEGIN
2249 l_child_rec_exists_no := 0;
2250 SELECT child_id INTO l_child_rec_exists_no
2251 FROM HZ_BUS_OBJ_TRACKING
2252 WHERE event_id IS NULL
2253 AND CHILD_ENTITY_NAME = l_cen
2254 AND CHILD_ID = l_child_id
2255 AND rownum = 1;
2256
2257 IF l_child_rec_exists_no <> 0 THEN
2258 -- data already exists, no need to write
2259 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
2260 p_prefix=>l_debug_prefix,
2264 WHEN NO_DATA_FOUND THEN
2261 p_msg_level=>fnd_log.level_procedure);
2262 END IF;
2263 EXCEPTION
2265 INSERT INTO HZ_BUS_OBJ_TRACKING
2266 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
2267 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
2268 ) VALUES (
2269 'N', p_operation, l_child_id, 'HZ_CUST_PROFILE_AMTS', NULL,
2270 l_lud, l_lud, 'HZ_CUSTOMER_PROFILES', l_parent_id, 'CUST_PROFILE');
2271
2272 -- populate org party record
2273 pop_parent_record(p_child_id => l_parent_id,
2274 p_lud => l_lud,
2275 p_centity_name => 'HZ_CUSTOMER_PROFILES',
2276 p_cbo_code => 'CUST_PROFILE',
2277 p_parent_id => l_cp_parent_id,
2278 p_pentity_name => l_cp_parent_entity,
2279 p_pbo_code => l_cp_parent_bo);
2280 END ; -- anonymous block end
2281 END LOOP;
2282
2283 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_cust_profile_amts-',
2284 p_prefix=>l_debug_prefix,
2285 p_msg_level=>fnd_log.level_procedure);
2286 EXCEPTION
2287 WHEN OTHERS THEN
2288 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
2289 p_prefix=>l_debug_prefix,
2290 p_msg_level=>fnd_log.level_procedure);
2291 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2292 END pop_hz_cust_profile_amts;
2293
2294 -----------------------------------------------------------------
2295 -- Procedure name: pop_hz_cust_acct_sites_all()
2296 -- Purpose: populates BOT for HZ_CUST_ACCT_SITES_ALL create or update
2297 -- Scope: internal
2298 -- Called From: V2 API
2299 -- Called By: HZ_CUST_ACCT_SITES_ALL create or update APIs
2300 -- Input Parameters:
2301 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
2302 -- p_cust_acct_site_id IN NUMBER
2303 --
2304 -- Note:
2305 -- Following are the allowed PARENT and CHILD BO combinations for HZ_CUST_ACCT_SITES_ALL
2306 -- This procedure must ensure that the combination is valid before populating BOT
2307 --
2308 -- PARENT BO: CUST_ACCT :: CHILD BO: CUST_ACCT_SITE
2309 -----------------------------------------------------------------
2310 PROCEDURE pop_hz_cust_acct_sites_all(p_operation IN VARCHAR2, p_cust_acct_site_id IN NUMBER) IS
2311
2312 -- cursor statement to select the info from child table
2313 CURSOR C_child IS
2314 SELECT cas.LAST_UPDATE_DATE lud, cas.CUST_ACCOUNT_ID parent_id, cas.CUST_ACCT_SITE_ID child_id,
2315 ca.party_id ca_parent_id,
2316 decode(p.party_type, 'ORGANIZATION', 'ORG', 'PERSON', 'PERSON', NULL) ca_parent_bo
2317 FROM HZ_CUST_ACCT_SITES_ALL cas, HZ_CUST_ACCOUNTS ca, HZ_PARTIES p
2318 WHERE cas.CUST_ACCT_SITE_ID = P_CUST_ACCT_SITE_ID
2319 AND cas.cust_account_id = ca.cust_account_id
2320 AND ca.party_id = p.party_id
2321 AND p.party_type in ('ORGANIZATION', 'PERSON')
2322 AND cas.cust_account_id > 0;
2323
2324 -- local variables
2325 l_debug_prefix VARCHAR2(40) := 'pop_hz_cust_acct_sites_all';
2326 l_parent_id NUMBER; -- used to store parent entity identifier
2327 l_child_id NUMBER; -- used to store HZ_CUST_ACCT_SITES_ALL identifier
2328 l_lud DATE; -- used to store the child last update date
2329 l_child_rec_exists_no NUMBER;
2330 l_ca_parent_id NUMBER;
2331 l_ca_parent_bo VARCHAR2(30);
2332 l_pop_flag VARCHAR2(1);
2333 l_cen VARCHAR2(30) := 'HZ_CUST_ACCT_SITES_ALL';
2334 BEGIN
2335 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_cust_acct_sites_all+',
2336 p_prefix=>l_debug_prefix,
2337 p_msg_level=>fnd_log.level_procedure);
2338
2339 -- validate p_operation
2340 IF p_operation IN ('I','U') THEN
2341 NULL;
2342 ELSE
2343 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_cust_acct_sites_all',
2344 p_prefix=>l_debug_prefix,
2345 p_msg_level=>fnd_log.level_procedure);
2346 RAISE FND_API.G_EXC_ERROR;
2347 END IF;
2348
2349 FOR c_child_rec IN c_child LOOP
2350 -- collect the child info into variables
2351 l_lud := c_child_rec.lud;
2352 l_child_id := c_child_rec.child_id;
2353 l_parent_id := c_child_rec.parent_id;
2354 l_ca_parent_id := c_child_rec.ca_parent_id;
2355 l_ca_parent_bo := c_child_rec.ca_parent_bo;
2356
2357 -- if record not existing, insert into hz_bus_obj_tracking
2358 BEGIN
2359 l_child_rec_exists_no := 0;
2360 SELECT child_id, populated_flag INTO l_child_rec_exists_no, l_pop_flag
2361 FROM HZ_BUS_OBJ_TRACKING
2362 WHERE event_id IS NULL
2363 AND CHILD_ENTITY_NAME = l_cen
2364 AND CHILD_ID = l_child_id
2365 AND rownum = 1;
2366
2367 IF l_child_rec_exists_no <> 0 THEN
2368 IF(l_pop_flag = 'Y') THEN
2369 UPDATE HZ_BUS_OBJ_TRACKING
2370 SET populated_flag = 'N'
2371 WHERE event_id IS NULL
2372 AND CHILD_ENTITY_NAME = l_cen
2373 AND CHILD_ID = l_child_id;
2374 END IF;
2375 -- data already exists, no need to write
2376 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
2377 p_prefix=>l_debug_prefix,
2378 p_msg_level=>fnd_log.level_procedure);
2379 END IF;
2380 EXCEPTION
2381 WHEN NO_DATA_FOUND THEN
2382 -- populate the child bo code also
2383 INSERT INTO HZ_BUS_OBJ_TRACKING
2387 'N', p_operation, l_child_id, 'HZ_CUST_ACCT_SITES_ALL', 'CUST_ACCT_SITE',
2384 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
2385 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
2386 ) VALUES (
2388 l_lud, l_lud, 'HZ_CUST_ACCOUNTS', l_parent_id, 'CUST_ACCT');
2389 END ; -- anonymous block end
2390 END LOOP;
2391
2392 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_cust_acct_sites_all-',
2393 p_prefix=>l_debug_prefix,
2394 p_msg_level=>fnd_log.level_procedure);
2395 EXCEPTION
2396 WHEN OTHERS THEN
2397 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
2398 p_prefix=>l_debug_prefix,
2399 p_msg_level=>fnd_log.level_procedure);
2400 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2401 END pop_hz_cust_acct_sites_all;
2402
2403 -----------------------------------------------------------------
2404 -- Procedure name: pop_hz_cust_acct_relate_all()
2405 -- Purpose: populates BOT for HZ_CUST_ACCT_RELATE_ALL create or update
2406 -- Scope: internal
2407 -- Called From: V2 API
2408 -- Called By: HZ_CUST_ACCT_RELATE_ALL create or update APIs
2409 -- Input Parameters:
2410 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
2411 -- p_cust_account_id IN NUMBER
2412 -- p_related_cust_account_id IN NUMBER
2413 --
2414 -- Note:
2415 -- Following are the allowed PARENT and CHILD BO combinations for HZ_CUST_ACCT_RELATE_ALL
2416 -- This procedure must ensure that the combination is valid before populating BOT
2417 --
2418 -- PARENT BO: CUST_ACCT :: CHILD BO:
2419 -----------------------------------------------------------------
2420 PROCEDURE pop_hz_cust_acct_relate_all(p_operation IN VARCHAR2,
2421 p_cust_acct_relate_id IN NUMBER) IS
2422
2423 -- cursor statement to select the info from child table
2424 CURSOR C_child IS
2425 SELECT car.LAST_UPDATE_DATE lud,
2426 car.cust_acct_relate_id child_id,
2427 car.cust_account_id cap_id,
2428 car.related_cust_account_id rcap_id,
2429 decode(p.party_type, 'ORGANIZATION', 'ORG_CUST', 'PERSON', 'PERSON_CUST', NULL) pbo,
2430 decode(rel_p.party_type, 'ORGANIZATION', 'ORG_CUST', 'PERSON', 'PERSON_CUST', NULL) rel_pbo,
2431 p.party_id pid, rel_p.party_id rel_pid
2432 FROM HZ_CUST_ACCT_RELATE_ALL car, HZ_CUST_ACCOUNTS ca, HZ_CUST_ACCOUNTS rel_ca,
2433 HZ_PARTIES p, HZ_PARTIES rel_p
2434 WHERE car.cust_acct_relate_id = p_cust_acct_relate_id
2435 AND car.cust_account_id = ca.cust_account_id
2436 AND car.related_cust_account_id = rel_ca.cust_account_id
2437 AND ca.party_id = p.party_id
2438 AND rel_ca.party_id = rel_p.party_id
2439 AND p.party_type in ('ORGANIZATION', 'PERSON')
2440 AND rel_p.party_type in ('ORGANIZATION', 'PERSON');
2441
2442 -- local variables
2443 l_debug_prefix VARCHAR2(40) := 'pop_hz_cust_acct_relate_all';
2444 l_child_id NUMBER; -- used to store HZ_CUST_ACCT_RELATE_ALL identifier
2445 l_lud DATE; -- used to store the child last update date
2446 l_child_rec_exists_no NUMBER;
2447 l_cap_id NUMBER;
2448 l_rcap_id NUMBER;
2449 l_pbo VARCHAR2(30);
2450 l_pid NUMBER;
2451 l_rel_pbo VARCHAR2(30);
2452 l_rel_pid NUMBER;
2453 l_cen VARCHAR2(30) := 'HZ_CUST_ACCT_RELATE_ALL';
2454 BEGIN
2455 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_cust_acct_relate_all+',
2456 p_prefix=>l_debug_prefix,
2457 p_msg_level=>fnd_log.level_procedure);
2458
2459 -- validate p_operation
2460 IF p_operation IN ('I','U') THEN
2461 NULL;
2462 ELSE
2463 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_cust_acct_relate_all',
2464 p_prefix=>l_debug_prefix,
2465 p_msg_level=>fnd_log.level_procedure);
2466 RAISE FND_API.G_EXC_ERROR;
2467 END IF;
2468
2469 FOR c_child_rec IN c_child LOOP
2470 -- collect the child info into variables
2471 l_lud := c_child_rec.lud;
2472 l_pbo := c_child_rec.pbo;
2473 l_rel_pbo := c_child_rec.rel_pbo;
2474 l_pid := c_child_rec.pid;
2475 l_rel_pid := c_child_rec.rel_pid;
2476 l_child_id := c_child_rec.child_id;
2477 l_cap_id := c_child_rec.cap_id;
2478 l_rcap_id := c_child_rec.rcap_id;
2479
2480 -- if record not existing, insert into hz_bus_obj_tracking
2481 BEGIN
2482 l_child_rec_exists_no := 0;
2483 SELECT child_id INTO l_child_rec_exists_no
2484 FROM HZ_BUS_OBJ_TRACKING
2485 WHERE event_id IS NULL
2486 AND CHILD_ENTITY_NAME = l_cen
2487 AND CHILD_ID = l_child_id
2488 AND rownum = 1;
2489
2490 IF l_child_rec_exists_no <> 0 THEN
2491 -- data already exists, no need to write
2492 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
2493 p_prefix=>l_debug_prefix,
2494 p_msg_level=>fnd_log.level_procedure);
2495 END IF;
2496 EXCEPTION
2497 WHEN NO_DATA_FOUND THEN
2498 INSERT INTO HZ_BUS_OBJ_TRACKING
2499 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
2500 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
2501 ) VALUES (
2502 'N', p_operation, l_child_id, 'HZ_CUST_ACCT_RELATE_ALL', NULL,
2503 l_lud, l_lud, 'HZ_CUST_ACCOUNTS', l_cap_id, 'CUST_ACCT');
2504
2508 p_cbo_code => 'CUST_ACCT',
2505 pop_parent_record(p_child_id => l_cap_id,
2506 p_lud => l_lud,
2507 p_centity_name => 'HZ_CUST_ACCOUNTS',
2509 p_parent_id => l_pid,
2510 p_pentity_name => 'HZ_PARTIES',
2511 p_pbo_code => l_pbo);
2512
2513 pop_parent_record(p_child_id => l_pid,
2514 p_lud => l_lud,
2515 p_centity_name => 'HZ_PARTIES',
2516 p_cbo_code => l_pbo,
2517 p_parent_id => NULL,
2518 p_pentity_name => NULL,
2519 p_pbo_code => NULL);
2520
2521 INSERT INTO HZ_BUS_OBJ_TRACKING
2522 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
2523 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
2524 ) VALUES (
2525 'N', p_operation, l_child_id, 'HZ_CUST_ACCT_RELATE_ALL', NULL,
2526 l_lud, l_lud, 'HZ_CUST_ACCOUNTS', l_rcap_id, 'CUST_ACCT');
2527
2528 pop_parent_record(p_child_id => l_rcap_id,
2529 p_lud => l_lud,
2530 p_centity_name => 'HZ_CUST_ACCOUNTS',
2531 p_cbo_code => 'CUST_ACCT',
2532 p_parent_id => l_rel_pid,
2533 p_pentity_name => 'HZ_PARTIES',
2534 p_pbo_code => l_rel_pbo);
2535
2536 pop_parent_record(p_child_id => l_rel_pid,
2537 p_lud => l_lud,
2538 p_centity_name => 'HZ_PARTIES',
2539 p_cbo_code => l_rel_pbo,
2540 p_parent_id => NULL,
2541 p_pentity_name => NULL,
2542 p_pbo_code => NULL);
2543
2544 END ; -- anonymous block end
2545 END LOOP;
2546
2547 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_cust_acct_relate_all-',
2548 p_prefix=>l_debug_prefix,
2549 p_msg_level=>fnd_log.level_procedure);
2550 EXCEPTION
2551 WHEN OTHERS THEN
2552 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
2553 p_prefix=>l_debug_prefix,
2554 p_msg_level=>fnd_log.level_procedure);
2555 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2556 END pop_hz_cust_acct_relate_all;
2557
2558 -----------------------------------------------------------------
2559 -- Procedure name: pop_hz_cust_account_roles()
2560 -- Purpose: populates BOT for HZ_CUST_ACCOUNT_ROLES create or update
2561 -- Scope: internal
2562 -- Called From: V2 API
2563 -- Called By: HZ_CUST_ACCOUNT_ROLES create or update APIs
2564 -- Input Parameters:
2565 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
2566 -- p_cust_account_role_id IN NUMBER
2567 --
2568 -- Note:
2569 -- Following are the allowed PARENT and CHILD BO combinations for HZ_CUST_ACCOUNT_ROLES
2570 -- This procedure must ensure that the combination is valid before populating BOT
2571 --
2572 -- PARENT BO: CUST_ACCT :: CHILD BO: CUST_ACCT_CONTACT
2573 -- PARENT BO: CUST_ACCT_SITE :: CHILD BO: CUST_ACCT_CONTACT
2574 -----------------------------------------------------------------
2575 PROCEDURE pop_hz_cust_account_roles(p_operation IN VARCHAR2, p_cust_account_role_id IN NUMBER) IS
2576
2577 -- cursor statement to select the info from child table
2578 CURSOR C_child IS
2579 SELECT car.LAST_UPDATE_DATE lud, car.CUST_ACCOUNT_ROLE_ID child_id,
2580 nvl(car.cust_acct_site_id, car.cust_account_id) parent_id,
2581 decode(car.cust_acct_site_id, null, 'CUST_ACCT', 'CUST_ACCT_SITE') parent_bo,
2582 decode(car.cust_acct_site_id, null, 'HZ_CUST_ACCOUNTS', 'HZ_CUST_ACCT_SITES_ALL') parent_entity,
2583 ca.cust_account_id ca_id
2584 FROM HZ_CUST_ACCOUNT_ROLES car, HZ_CUST_ACCOUNTS ca, HZ_PARTIES p
2585 WHERE car.CUST_ACCOUNT_ROLE_ID = P_CUST_ACCOUNT_ROLE_ID
2586 AND car.cust_account_id = ca.cust_account_id
2587 AND ca.party_id = p.party_id
2588 AND p.party_type in ('ORGANIZATION', 'PERSON')
2589 AND car.cust_account_id > 0;
2590
2591 -- local variables
2592 l_debug_prefix VARCHAR2(40) := 'pop_hz_cust_account_roles';
2593 l_parent_id NUMBER; -- used to store parent entity identifier
2594 l_parent_bo VARCHAR2(30);
2595 l_parent_entity VARCHAR2(30);
2596 l_child_id NUMBER; -- used to store HZ_CUST_ACCOUNT_ROLES identifier
2597 l_lud DATE; -- used to store the child last update date
2598 l_child_rec_exists_no NUMBER;
2599 l_ca_id NUMBER;
2600 l_pop_flag VARCHAR2(1);
2601 l_cen VARCHAR2(30) := 'HZ_CUST_ACCOUNT_ROLES';
2602 BEGIN
2603 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_cust_account_roles+',
2604 p_prefix=>l_debug_prefix,
2605 p_msg_level=>fnd_log.level_procedure);
2606
2607 -- validate p_operation
2608 IF p_operation IN ('I','U') THEN
2609 NULL;
2610 ELSE
2611 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_cust_account_roles',
2612 p_prefix=>l_debug_prefix,
2613 p_msg_level=>fnd_log.level_procedure);
2614 RAISE FND_API.G_EXC_ERROR;
2615 END IF;
2616
2617 FOR c_child_rec IN c_child LOOP
2618 l_lud := c_child_rec.lud;
2619 l_child_id := c_child_rec.child_id;
2620 l_parent_id := c_child_rec.parent_id;
2621 l_parent_bo := c_child_rec.parent_bo;
2625 BEGIN
2622 l_parent_entity := c_child_rec.parent_entity;
2623
2624 -- if record not existing, insert into hz_bus_obj_tracking
2626 l_child_rec_exists_no := 0;
2627 SELECT child_id, populated_flag INTO l_child_rec_exists_no, l_pop_flag
2628 FROM HZ_BUS_OBJ_TRACKING
2629 WHERE event_id IS NULL
2630 AND CHILD_ENTITY_NAME = l_cen
2631 AND CHILD_ID = l_child_id
2632 AND rownum = 1;
2633
2634 IF l_child_rec_exists_no <> 0 THEN
2635 IF(l_pop_flag = 'Y') THEN
2636 UPDATE HZ_BUS_OBJ_TRACKING
2637 SET populated_flag = 'N'
2638 WHERE event_id IS NULL
2639 AND CHILD_ENTITY_NAME = l_cen
2640 AND CHILD_ID = l_child_id;
2641 END IF;
2642 -- data already exists, no need to write
2643 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
2644 p_prefix=>l_debug_prefix,
2645 p_msg_level=>fnd_log.level_procedure);
2646 END IF;
2647 EXCEPTION
2648 WHEN NO_DATA_FOUND THEN
2649 -- populate the child bo code also
2650 INSERT INTO HZ_BUS_OBJ_TRACKING
2651 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
2652 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
2653 ) VALUES (
2654 'N', p_operation, l_child_id, 'HZ_CUST_ACCOUNT_ROLES', 'CUST_ACCT_CONTACT',
2655 l_lud, l_lud, l_parent_entity, l_parent_id, l_parent_bo);
2656 END ; -- anonymous block end
2657 END LOOP;
2658
2659 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_cust_account_roles-',
2660 p_prefix=>l_debug_prefix,
2661 p_msg_level=>fnd_log.level_procedure);
2662 EXCEPTION
2663 WHEN OTHERS THEN
2664 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
2665 p_prefix=>l_debug_prefix,
2666 p_msg_level=>fnd_log.level_procedure);
2667 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2668 END pop_hz_cust_account_roles;
2669
2670 -----------------------------------------------------------------
2671 -- Procedure name: pop_hz_cust_accounts()
2672 -- Purpose: populates BOT for HZ_CUST_ACCOUNTS create or update
2673 -- Scope: internal
2674 -- Called From: V2 API
2675 -- Called By: HZ_CUST_ACCOUNTS create or update APIs
2676 -- Input Parameters:
2677 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
2678 -- p_cust_account_id IN NUMBER
2679 --
2680 -- Note:
2681 -- Following are the allowed PARENT and CHILD BO combinations for HZ_CUST_ACCOUNTS
2682 -- This procedure must ensure that the combination is valid before populating BOT
2683 --
2684 -- PARENT BO: ORG_CUST :: CHILD BO: CUST_ACCT
2685 -- PARENT BO: PERSON_CUST :: CHILD BO: CUST_ACCT
2686 -----------------------------------------------------------------
2687 PROCEDURE pop_hz_cust_accounts(p_operation IN VARCHAR2, p_cust_account_id IN NUMBER) IS
2688
2689 -- cursor statement to select the info from child table
2690 CURSOR C_child IS
2691 SELECT ca.LAST_UPDATE_DATE lud, ca.PARTY_ID parent_id, ca.CUST_ACCOUNT_ID child_id,
2692 decode(p.party_type, 'ORGANIZATION', 'ORG_CUST', 'PERSON', 'PERSON_CUST', NULL) bo_code
2693 FROM HZ_CUST_ACCOUNTS ca, HZ_PARTIES p
2694 WHERE ca.CUST_ACCOUNT_ID = P_CUST_ACCOUNT_ID
2695 AND ca.party_id = p.party_id
2696 AND p.party_type in ('ORGANIZATION', 'PERSON')
2697 AND ca.cust_account_id > 0;
2698
2699 -- local variables
2700 l_debug_prefix VARCHAR2(40) := 'pop_hz_cust_accounts';
2701 l_parent_id NUMBER; -- used to store parent entity identifier
2702 l_bo_code VARCHAR2(30); -- used to store BO Code
2703 l_child_id NUMBER; -- used to store HZ_CUST_ACCOUNTS identifier
2704 l_lud DATE; -- used to store the child last update date
2705 l_child_rec_exists_no NUMBER;
2706 l_pop_flag VARCHAR2(1);
2707 l_cen VARCHAR2(30) := 'HZ_CUST_ACCOUNTS';
2708 BEGIN
2709 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_cust_accounts+',
2710 p_prefix=>l_debug_prefix,
2711 p_msg_level=>fnd_log.level_procedure);
2712
2713 -- validate p_operation
2714 IF p_operation IN ('I','U') THEN
2715 NULL;
2716 ELSE
2717 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_cust_accounts',
2718 p_prefix=>l_debug_prefix,
2719 p_msg_level=>fnd_log.level_procedure);
2720 RAISE FND_API.G_EXC_ERROR;
2721 END IF;
2722
2723 FOR c_child_rec IN c_child LOOP
2724 -- collect the child info into variables
2725 l_lud := c_child_rec.lud;
2726 l_child_id := c_child_rec.child_id;
2727 l_parent_id := c_child_rec.parent_id;
2728 l_bo_code := c_child_rec.bo_code;
2729
2730 -- if record not existing, insert into hz_bus_obj_tracking
2731 BEGIN
2732 l_child_rec_exists_no := 0;
2733 SELECT child_id, populated_flag INTO l_child_rec_exists_no, l_pop_flag
2734 FROM HZ_BUS_OBJ_TRACKING
2735 WHERE event_id IS NULL
2736 AND CHILD_ENTITY_NAME = l_cen
2737 AND CHILD_ID = l_child_id
2738 AND rownum = 1;
2739
2740 IF l_child_rec_exists_no <> 0 THEN
2741 IF(l_pop_flag = 'Y') THEN
2742 UPDATE HZ_BUS_OBJ_TRACKING
2743 SET populated_flag = 'N'
2744 WHERE event_id IS NULL
2745 AND CHILD_ENTITY_NAME = l_cen
2746 AND CHILD_ID = l_child_id;
2747 END IF;
2748 -- data already exists, no need to write
2752 END IF;
2749 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
2750 p_prefix=>l_debug_prefix,
2751 p_msg_level=>fnd_log.level_procedure);
2753 EXCEPTION
2754 WHEN NO_DATA_FOUND THEN
2755 -- populate the child bo code also
2756 INSERT INTO HZ_BUS_OBJ_TRACKING
2757 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
2758 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
2759 ) VALUES (
2760 'N', p_operation, l_child_id, 'HZ_CUST_ACCOUNTS', 'CUST_ACCT',
2761 l_lud, l_lud, 'HZ_PARTIES', l_parent_id, l_bo_code);
2762 END ; -- anonymous block end
2763 END LOOP;
2764
2765 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_cust_accounts-',
2766 p_prefix=>l_debug_prefix,
2767 p_msg_level=>fnd_log.level_procedure);
2768 EXCEPTION
2769 WHEN OTHERS THEN
2770 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
2771 p_prefix=>l_debug_prefix,
2772 p_msg_level=>fnd_log.level_procedure);
2773 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2774 END pop_hz_cust_accounts;
2775
2776 -----------------------------------------------------------------
2777 -- Procedure name: pop_hz_customer_profiles()
2778 -- Purpose: populates BOT for HZ_CUSTOMER_PROFILES create or update
2779 -- Scope: internal
2780 -- Called From: V2 API
2781 -- Called By: HZ_CUSTOMER_PROFILES create or update APIs
2782 -- Input Parameters:
2783 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
2784 -- p_cust_account_profile_id IN NUMBER
2785 --
2786 -- Note:
2787 -- Following are the allowed PARENT and CHILD BO combinations for HZ_CUSTOMER_PROFILES
2788 -- This procedure must ensure that the combination is valid before populating BOT
2789 --
2790 -- PARENT BO: CUST_ACCT :: CHILD BO: CUST_PROFILE
2791 -- PARENT BO: CUST_ACCT_SITE_USE :: CHILD BO: CUST_PROFILE
2792 -----------------------------------------------------------------
2793 PROCEDURE pop_hz_customer_profiles(p_operation IN VARCHAR2, p_cust_account_profile_id IN NUMBER) IS
2794
2795 -- cursor statement to select the info from child table
2796 CURSOR C_child IS
2797 SELECT cp.LAST_UPDATE_DATE lud,
2798 nvl(cp.site_use_id, cp.cust_account_id) parent_id,
2799 decode(cp.site_use_id, NULL, 'HZ_CUST_ACCOUNTS', 'HZ_CUST_SITE_USES_ALL') parent_entity,
2800 decode(cp.site_use_id, NULL, 'CUST_ACCT', 'CUST_ACCT_SITE_USE') parent_bo,
2801 cp.CUST_ACCOUNT_PROFILE_ID child_id
2802 FROM HZ_CUSTOMER_PROFILES cp
2803 WHERE cp.CUST_ACCOUNT_PROFILE_ID = P_CUST_ACCOUNT_PROFILE_ID
2804 AND cp.cust_account_id > 0;
2805
2806 -- local variables
2807 l_debug_prefix VARCHAR2(40) := 'pop_hz_customer_profiles';
2808 l_parent_id NUMBER; -- used to store parent entity identifier
2809 l_parent_bo VARCHAR2(30);
2810 l_parent_entity VARCHAR2(30);
2811 l_child_id NUMBER; -- used to store HZ_CUSTOMER_PROFILES identifier
2812 l_lud DATE; -- used to store the child last update date
2813 l_child_rec_exists_no NUMBER;
2814 l_pop_flag VARCHAR2(1);
2815 l_cen VARCHAR2(30) := 'HZ_CUSTOMER_PROFILES';
2816 BEGIN
2817 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_customer_profiles+',
2818 p_prefix=>l_debug_prefix,
2819 p_msg_level=>fnd_log.level_procedure);
2820
2821 -- validate p_operation
2822 IF p_operation IN ('I','U') THEN
2823 NULL;
2824 ELSE
2825 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_customer_profiles',
2826 p_prefix=>l_debug_prefix,
2827 p_msg_level=>fnd_log.level_procedure);
2828 RAISE FND_API.G_EXC_ERROR;
2829 END IF;
2830
2831 FOR c_child_rec IN c_child LOOP
2832 -- collect the child info into variables
2833 l_lud := c_child_rec.lud;
2834 l_child_id := c_child_rec.child_id;
2835 l_parent_id := c_child_rec.parent_id;
2836 l_parent_bo := c_child_rec.parent_bo;
2837 l_parent_entity := c_child_rec.parent_entity;
2838
2839 -- credit mgmt team create customer profile with customer account id = -1
2840 -- we will not populate bot table for this record
2841 IF(l_parent_id > 0) THEN
2842 -- if record not existing, insert into hz_bus_obj_tracking
2843 BEGIN
2844 l_child_rec_exists_no := 0;
2845 SELECT child_id, populated_flag INTO l_child_rec_exists_no, l_pop_flag
2846 FROM HZ_BUS_OBJ_TRACKING
2847 WHERE event_id IS NULL
2848 AND CHILD_ENTITY_NAME = l_cen
2849 AND CHILD_ID = l_child_id
2850 AND rownum = 1;
2851
2852 IF l_child_rec_exists_no <> 0 THEN
2853 IF(l_pop_flag = 'Y') THEN
2854 UPDATE HZ_BUS_OBJ_TRACKING
2855 SET populated_flag = 'N'
2856 WHERE event_id IS NULL
2857 AND CHILD_ENTITY_NAME = l_cen
2858 AND CHILD_ID = l_child_id;
2859 END IF;
2860 -- data already exists, no need to write
2861 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
2862 p_prefix=>l_debug_prefix,
2863 p_msg_level=>fnd_log.level_procedure);
2864 END IF;
2865 EXCEPTION
2866 WHEN NO_DATA_FOUND THEN
2867 -- populate the child bo code also
2868 INSERT INTO HZ_BUS_OBJ_TRACKING
2869 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
2873 l_lud, l_lud, l_parent_entity, l_parent_id, l_parent_bo);
2870 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
2871 ) VALUES (
2872 'N', p_operation, l_child_id, 'HZ_CUSTOMER_PROFILES', 'CUST_PROFILE',
2874 END ; -- anonymous block end
2875 END IF; -- l_parent_id > 0
2876 END LOOP;
2877
2878 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_customer_profiles-',
2879 p_prefix=>l_debug_prefix,
2880 p_msg_level=>fnd_log.level_procedure);
2881 EXCEPTION
2882 WHEN OTHERS THEN
2883 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
2884 p_prefix=>l_debug_prefix,
2885 p_msg_level=>fnd_log.level_procedure);
2886 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2887 END pop_hz_customer_profiles;
2888
2889 -----------------------------------------------------------------
2890 -- Procedure name: pop_hz_credit_ratings()
2891 -- Purpose: populates BOT for HZ_CREDIT_RATINGS create or update
2892 -- Scope: internal
2893 -- Called From: V2 API
2894 -- Called By: HZ_CREDIT_RATINGS create or update APIs
2895 -- Input Parameters:
2896 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
2897 -- p_credit_rating_id IN NUMBER
2898 --
2899 -- Note:
2900 -- Following are the allowed PARENT and CHILD BO combinations for HZ_CREDIT_RATINGS
2901 -- This procedure must ensure that the combination is valid before populating BOT
2902 --
2903 -- PARENT BO: ORG :: CHILD BO:
2904 -----------------------------------------------------------------
2905 PROCEDURE pop_hz_credit_ratings(p_operation IN VARCHAR2, p_credit_rating_id IN NUMBER) IS
2906
2907 -- cursor statement to select the info from child table
2908 CURSOR C_child IS
2909 SELECT cr.LAST_UPDATE_DATE lud, cr.PARTY_ID parent_id, cr.CREDIT_RATING_ID child_id
2910 FROM HZ_CREDIT_RATINGS cr, HZ_PARTIES p
2911 WHERE cr.CREDIT_RATING_ID = P_CREDIT_RATING_ID
2912 AND cr.party_id = p.party_id
2913 AND p.party_type = 'ORGANIZATION';
2914
2915 -- local variables
2916 l_debug_prefix VARCHAR2(40) := 'pop_hz_credit_ratings';
2917 l_parent_id NUMBER; -- used to store parent entity identifier
2918 l_child_id NUMBER; -- used to store HZ_CREDIT_RATINGS identifier
2919 l_lud DATE; -- used to store the child last update date
2920 l_child_rec_exists_no NUMBER;
2921 l_cen VARCHAR2(30) := 'HZ_CREDIT_RATINGS';
2922 BEGIN
2923 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_credit_ratings+',
2924 p_prefix=>l_debug_prefix,
2925 p_msg_level=>fnd_log.level_procedure);
2926
2927 -- validate p_operation
2928 IF p_operation IN ('I','U') THEN
2929 NULL;
2930 ELSE
2931 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_credit_ratings',
2932 p_prefix=>l_debug_prefix,
2933 p_msg_level=>fnd_log.level_procedure);
2934 RAISE FND_API.G_EXC_ERROR;
2935 END IF;
2936
2937 FOR c_child_rec IN c_child LOOP
2938 -- collect the child info into variables
2939 l_lud := c_child_rec.lud;
2940 l_child_id := c_child_rec.child_id;
2941 l_parent_id := c_child_rec.parent_id;
2942
2943 -- if record not existing, insert into hz_bus_obj_tracking
2944 BEGIN
2945 l_child_rec_exists_no := 0;
2946 SELECT child_id INTO l_child_rec_exists_no
2947 FROM HZ_BUS_OBJ_TRACKING
2948 WHERE event_id IS NULL
2949 AND CHILD_ENTITY_NAME = l_cen
2950 AND CHILD_ID = l_child_id
2951 AND rownum = 1;
2952
2953 IF l_child_rec_exists_no <> 0 THEN
2954 -- data already exists, no need to write
2955 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
2956 p_prefix=>l_debug_prefix,
2957 p_msg_level=>fnd_log.level_procedure);
2958 END IF;
2959 EXCEPTION
2960 WHEN NO_DATA_FOUND THEN
2961 INSERT INTO HZ_BUS_OBJ_TRACKING
2962 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
2963 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
2964 ) VALUES (
2965 'N', p_operation, l_child_id, 'HZ_CREDIT_RATINGS', NULL,
2966 l_lud, l_lud, 'HZ_PARTIES', l_parent_id, 'ORG');
2967
2968 pop_parent_record(p_child_id => l_parent_id,
2969 p_lud => l_lud,
2970 p_centity_name => 'HZ_PARTIES',
2971 p_cbo_code => 'ORG',
2972 p_parent_id => NULL,
2973 p_pentity_name => NULL,
2974 p_pbo_code => NULL);
2975 END ; -- anonymous block end
2976 END LOOP;
2977
2978 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_credit_ratings-',
2979 p_prefix=>l_debug_prefix,
2980 p_msg_level=>fnd_log.level_procedure);
2981 EXCEPTION
2982 WHEN OTHERS THEN
2983 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
2984 p_prefix=>l_debug_prefix,
2985 p_msg_level=>fnd_log.level_procedure);
2986 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2987 END pop_hz_credit_ratings;
2988
2989 -----------------------------------------------------------------
2990 -- Procedure name: pop_hz_contact_preferences()
2991 -- Purpose: populates BOT for HZ_CONTACT_PREFERENCES create or update
2992 -- Scope: internal
2993 -- Called From: V2 API
2994 -- Called By: HZ_CONTACT_PREFERENCES create or update APIs
2995 -- Input Parameters:
2999 -- Note:
2996 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
2997 -- p_contact_preference_id IN NUMBER
2998 --
3000 -- Following are the allowed PARENT and CHILD BO combinations for HZ_CONTACT_PREFERENCES
3001 -- This procedure must ensure that the combination is valid before populating BOT
3002 --
3003 -- PARENT BO: ORG :: CHILD BO:
3004 -- PARENT BO: PERSON :: CHILD BO:
3005 -- PARENT BO: ORG_CONTACT :: CHILD BO:
3006 -- PARENT BO: PARTY_SITE :: CHILD BO:
3007 -- PARENT BO: PHONE :: CHILD BO:
3008 -- PARENT BO: TLX :: CHILD BO:
3009 -- PARENT BO: EMAIL :: CHILD BO:
3010 -- PARENT BO: WEB :: CHILD BO:
3011 -- PARENT BO: EDI :: CHILD BO:
3012 -- PARENT BO: EFT :: CHILD BO:
3013 -- PARENT BO: SMS :: CHILD BO:
3014 -----------------------------------------------------------------
3015 PROCEDURE pop_hz_contact_preferences(p_operation IN VARCHAR2, p_contact_preference_id IN NUMBER) IS
3016
3017 CURSOR c_child IS
3018 SELECT cpp.LAST_UPDATE_DATE lud, cpp.CONTACT_LEVEL_TABLE_ID parent_id,
3019 cpp.CONTACT_LEVEL_TABLE parent_tbl_name, cpp.CONTACT_PREFERENCE_ID child_id
3020 FROM HZ_CONTACT_PREFERENCES cpp
3021 WHERE cpp.CONTACT_PREFERENCE_ID = P_CONTACT_PREFERENCE_ID;
3022
3023 CURSOR c_cp(p_parent_id NUMBER) IS
3024 SELECT decode(contact_point_type, 'PHONE', 'PHONE', 'EMAIL', 'EMAIL', 'WEB', 'WEB', 'EFT', 'EFT', 'SMS', 'SMS', 'TLX', 'TLX', 'EDI', 'EDI', NULL), owner_table_name, owner_table_id
3025 FROM HZ_CONTACT_POINTS
3026 WHERE contact_point_id = p_parent_id
3027 AND contact_point_type in ('PHONE', 'EMAIL', 'TLX', 'WEB', 'EFT', 'EDI', 'SMS');
3028
3029 CURSOR c_pty(p_parent_id NUMBER) IS
3030 SELECT decode(party_type, 'ORGANIZATION', 'ORG', 'PERSON', 'PERSON', 'PARTY_RELATIONSHIP', 'ORG_CONTACT', NULL),
3031 decode(party_type, 'ORGANIZATION', 'HZ_PARTIES', 'PERSON', 'HZ_PARTIES', 'PARTY_RELATIONSHIP', 'HZ_ORG_CONTACTS', NULL)
3032 FROM HZ_PARTIES
3033 WHERE party_id = p_parent_id
3034 AND party_type in ('ORGANIZATION', 'PERSON', 'PARTY_RELATIONSHIP');
3035
3036 CURSOR c_oc(p_parent_id NUMBER) IS
3037 SELECT oc.org_contact_id
3038 FROM HZ_RELATIONSHIPS r, HZ_ORG_CONTACTS oc
3039 WHERE r.relationship_id = oc.party_relationship_id
3040 AND r.subject_type = 'PERSON'
3041 AND r.object_type = 'ORGANIZATION'
3042 AND r.party_id = p_parent_id
3043 AND rownum = 1;
3044
3045 -- local variables
3046 l_debug_prefix VARCHAR2(40) := 'pop_hz_contact_preferences';
3047 l_parent_id NUMBER; -- used to store parent entity identifier
3048 l_parent_tbl_name VARCHAR2(30); -- used to store parent entity name
3049 l_pty_bo_code VARCHAR2(30);
3050 l_pty_tbl_name VARCHAR2(30);
3051 l_bo_code VARCHAR2(30); -- used to store BO Code
3052 l_child_bo_code VARCHAR2(30); -- used to store Child BO Code (if child entity is a root node)
3053 l_child_id NUMBER; -- used to store HZ_CONTACT_PREFERENCES identifier
3054 l_lud DATE; -- used to store the child last update date
3055 l_child_rec_exists_no NUMBER;
3056 l_cp_owner_table VARCHAR2(30);
3057 l_cp_owner_id NUMBER;
3058 l_oc_id NUMBER;
3059 l_cen VARCHAR2(30) := 'HZ_CONTACT_PREFERENCES';
3060 BEGIN
3061 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_contact_preferences+',
3062 p_prefix=>l_debug_prefix,
3063 p_msg_level=>fnd_log.level_procedure);
3064
3065 -- validate p_operation
3066 IF p_operation IN ('I','U') THEN
3067 NULL;
3068 ELSE
3069 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_contact_preferences',
3070 p_prefix=>l_debug_prefix,
3071 p_msg_level=>fnd_log.level_procedure);
3072 RAISE FND_API.G_EXC_ERROR;
3073 END IF;
3074
3075 FOR c_child_rec IN c_child LOOP
3076 -- collect the child info into variables
3077 l_lud := c_child_rec.lud;
3078 l_child_id := c_child_rec.child_id;
3079 l_parent_id := c_child_rec.parent_id;
3080 l_parent_tbl_name := c_child_rec.parent_tbl_name;
3081
3082 IF(l_parent_tbl_name = 'HZ_PARTY_SITES') THEN
3083 l_bo_code := 'PARTY_SITE';
3084 IF NOT(is_valid_ps(l_parent_id)) THEN
3085 RETURN;
3086 END IF;
3087 ELSIF(l_parent_tbl_name = 'HZ_CONTACT_POINTS') THEN
3088 OPEN c_cp(l_parent_id);
3089 FETCH c_cp INTO l_bo_code, l_cp_owner_table, l_cp_owner_id;
3090 CLOSE c_cp;
3091 IF l_bo_code in ('PHONE', 'SMS', 'EDI') and l_cp_owner_table = 'HZ_PARTIES' THEN
3092 OPEN c_pty(l_cp_owner_id);
3093 FETCH c_pty INTO l_pty_bo_code, l_pty_tbl_name;
3094 CLOSE c_pty;
3095 IF(l_bo_code = 'PHONE' AND l_pty_bo_code IS NULL) THEN
3096 RETURN;
3097 ELSIF(l_bo_code = 'PHONE' AND l_pty_bo_code = 'ORG_CONTACT') THEN
3098 OPEN c_oc(l_cp_owner_id);
3099 FETCH c_oc INTO l_oc_id;
3100 CLOSE c_oc;
3101 IF(l_oc_id IS NULL) THEN
3102 RETURN;
3103 END IF;
3104 ELSIF(l_bo_code = 'SMS' AND l_pty_bo_code = 'ORG') THEN
3105 RETURN;
3106 ELSIF(l_bo_code = 'EDI' AND l_pty_bo_code = 'PERSON') THEN
3107 RETURN;
3108 END IF;
3109 END IF;
3110 ELSIF(l_parent_tbl_name = 'HZ_PARTIES') THEN
3111 OPEN c_pty(l_parent_id);
3112 FETCH c_pty INTO l_bo_code, l_parent_tbl_name;
3113 CLOSE c_pty;
3114 IF(l_bo_code = 'ORG_CONTACT') THEN
3115 OPEN c_oc(l_parent_id);
3116 FETCH c_oc INTO l_oc_id;
3117 CLOSE c_oc;
3118 IF(l_oc_id IS NULL) THEN
3122 END IF;
3119 RETURN;
3120 ELSE
3121 l_parent_id := l_oc_id;
3123 END IF;
3124 END IF;
3125
3126 -- if record not existing, insert into hz_bus_obj_tracking
3127 BEGIN
3128 l_child_rec_exists_no := 0;
3129 SELECT child_id INTO l_child_rec_exists_no
3130 FROM HZ_BUS_OBJ_TRACKING
3131 WHERE event_id IS NULL
3132 AND CHILD_ENTITY_NAME = l_cen
3133 AND CHILD_ID = l_child_id
3134 AND rownum = 1;
3135
3136 IF l_child_rec_exists_no <> 0 THEN
3137 -- data already exists, no need to write
3138 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
3139 p_prefix=>l_debug_prefix,
3140 p_msg_level=>fnd_log.level_procedure);
3141 END IF;
3142 EXCEPTION
3143 WHEN NO_DATA_FOUND THEN
3144 INSERT INTO HZ_BUS_OBJ_TRACKING
3145 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
3146 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
3147 ) VALUES (
3148 'N', p_operation, l_child_id, 'HZ_CONTACT_PREFERENCES', NULL,
3149 l_lud, l_lud, l_parent_tbl_name, l_parent_id, l_bo_code);
3150 END ; -- anonymous block end
3151 END LOOP;
3152
3153 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_contact_preferences-',
3154 p_prefix=>l_debug_prefix,
3155 p_msg_level=>fnd_log.level_procedure);
3156 EXCEPTION
3157 WHEN OTHERS THEN
3158 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
3159 p_prefix=>l_debug_prefix,
3160 p_msg_level=>fnd_log.level_procedure);
3161 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3162 END pop_hz_contact_preferences;
3163
3164 -----------------------------------------------------------------
3165 -- Procedure name: pop_hz_contact_points()
3166 -- Purpose: populates BOT for HZ_CONTACT_POINTS create or update
3167 -- Scope: internal
3168 -- Called From: V2 API
3169 -- Called By: HZ_CONTACT_POINTS create or update APIs
3170 -- Input Parameters:
3171 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
3172 -- p_contact_point_id IN NUMBER
3173 --
3174 -- Note:
3175 -- Following are the allowed PARENT and CHILD BO combinations for HZ_CONTACT_POINTS
3176 -- This procedure must ensure that the combination is valid before populating BOT
3177 --
3178 -- PARENT BO: ORG :: CHILD BO: PHONE
3179 -- PARENT BO: ORG :: CHILD BO: TLX
3180 -- PARENT BO: ORG :: CHILD BO: EMAIL
3181 -- PARENT BO: ORG :: CHILD BO: WEB
3182 -- PARENT BO: ORG :: CHILD BO: EDI
3183 -- PARENT BO: ORG :: CHILD BO: EFT
3184 -- PARENT BO: PERSON :: CHILD BO: PHONE
3185 -- PARENT BO: PERSON :: CHILD BO: EMAIL
3186 -- PARENT BO: PERSON :: CHILD BO: WEB
3187 -- PARENT BO: PERSON :: CHILD BO: SMS
3188 -- PARENT BO: ORG_CONTACT :: CHILD BO: PHONE
3189 -- PARENT BO: ORG_CONTACT :: CHILD BO: TLX
3190 -- PARENT BO: ORG_CONTACT :: CHILD BO: EMAIL
3191 -- PARENT BO: ORG_CONTACT :: CHILD BO: WEB
3192 -- PARENT BO: ORG_CONTACT :: CHILD BO: SMS
3193 -- PARENT BO: PARTY_SITE :: CHILD BO: PHONE
3194 -- PARENT BO: PARTY_SITE :: CHILD BO: TLX
3195 -- PARENT BO: PARTY_SITE :: CHILD BO: EMAIL
3196 -- PARENT BO: PARTY_SITE :: CHILD BO: WEB
3197 -----------------------------------------------------------------
3198 PROCEDURE pop_hz_contact_points(p_operation IN VARCHAR2, p_contact_point_id IN NUMBER) IS
3199
3200 -- cursor statement to select the info from child table
3201 CURSOR c_child IS
3202 SELECT LAST_UPDATE_DATE lud, OWNER_TABLE_ID parent_id, CONTACT_POINT_ID child_id,
3203 OWNER_TABLE_NAME parent_entity, CONTACT_POINT_TYPE child_bo_code
3204 FROM HZ_CONTACT_POINTS
3205 WHERE CONTACT_POINT_ID = P_CONTACT_POINT_ID
3206 AND OWNER_TABLE_NAME in ('HZ_PARTY_SITES', 'HZ_PARTIES');
3207
3208 -- cursor statement to select the info from party parent table
3209 CURSOR c_party_parent(p_parent_id IN NUMBER) IS
3210 SELECT decode(party_type, 'ORGANIZATION', 'ORG', 'PERSON', 'PERSON', 'PARTY_RELATIONSHIP', 'ORG_CONTACT', NULL),
3211 decode(party_type, 'ORGANIZATION', 'HZ_PARTIES', 'PERSON', 'HZ_PARTIES', 'PARTY_RELATIONSHIP', 'HZ_ORG_CONTACTS', NULL)
3212 FROM HZ_PARTIES
3213 WHERE PARTY_ID = p_parent_id
3214 AND party_type in ('ORGANIZATION', 'PERSON', 'PARTY_RELATIONSHIP');
3215
3216 CURSOR c_oc(p_parent_id NUMBER) IS
3217 SELECT oc.org_contact_id
3218 FROM HZ_RELATIONSHIPS r, HZ_ORG_CONTACTS oc
3219 WHERE r.relationship_id = oc.party_relationship_id
3220 AND r.subject_type = 'PERSON'
3221 AND r.object_type = 'ORGANIZATION'
3222 AND r.party_id = p_parent_id
3223 AND rownum = 1;
3224
3225 -- local variables
3226 l_debug_prefix VARCHAR2(40) := 'pop_hz_contact_points';
3227 l_parent_id NUMBER; -- used to store parent entity identifier
3228 l_parent_tbl_name VARCHAR2(30); -- used to store parent entity name
3229 l_bo_code VARCHAR2(30); -- used to store BO Code
3230 l_child_bo_code VARCHAR2(30); -- used to store Child BO Code (if child entity is a root node)
3231 l_child_id NUMBER; -- used to store HZ_CONTACT_POINTS identifier
3232 l_lud DATE; -- used to store the child last update date
3233 l_child_rec_exists_no NUMBER;
3234 l_oc_id NUMBER;
3235 l_cen VARCHAR2(30) := 'HZ_CONTACT_POINTS';
3236 BEGIN
3237 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_contact_points+',
3238 p_prefix=>l_debug_prefix,
3239 p_msg_level=>fnd_log.level_procedure);
3240
3241 -- validate p_operation
3245 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_contact_points',
3242 IF p_operation IN ('I','U') THEN
3243 NULL;
3244 ELSE
3246 p_prefix=>l_debug_prefix,
3247 p_msg_level=>fnd_log.level_procedure);
3248 RAISE FND_API.G_EXC_ERROR;
3249 END IF;
3250
3251 FOR c_child_rec IN c_child LOOP
3252 -- collect the child info into variables
3253 l_lud := c_child_rec.lud;
3254 l_child_id := c_child_rec.child_id;
3255 l_child_bo_code := c_child_rec.child_bo_code;
3256 l_parent_id := c_child_rec.parent_id;
3257 l_parent_tbl_name := c_child_rec.parent_entity;
3258
3259 IF(l_parent_tbl_name = 'HZ_PARTY_SITES') THEN
3260 l_bo_code := 'PARTY_SITE';
3261 ELSIF(l_parent_tbl_name = 'HZ_PARTIES') THEN
3262 OPEN c_party_parent(l_parent_id);
3263 FETCH c_party_parent INTO l_bo_code, l_parent_tbl_name;
3264 CLOSE c_party_parent;
3265 IF(l_bo_code = 'ORG_CONTACT') THEN
3266 OPEN c_oc(l_parent_id);
3267 FETCH c_oc INTO l_oc_id;
3268 CLOSE c_oc;
3269 IF(l_oc_id IS NULL) THEN
3270 RETURN;
3271 ELSE
3272 l_parent_id := l_oc_id;
3273 END IF;
3274 END IF;
3275 END IF;
3276
3277 -- check invalid combination
3278 CASE
3279 WHEN l_child_bo_code = 'PHONE' THEN
3280 NULL;
3281 WHEN l_bo_code = 'PARTY_SITE' AND l_child_bo_code in ('TLX','EMAIL','WEB') THEN
3282 NULL;
3283 WHEN l_bo_code = 'ORG' AND l_child_bo_code in ('TLX','EMAIL','WEB','EDI','EFT') THEN
3284 NULL;
3285 WHEN l_bo_code = 'PERSON' AND l_child_bo_code in ('EMAIL','WEB','SMS') THEN
3286 NULL;
3287 WHEN l_bo_code = 'ORG_CONTACT' AND l_child_bo_code in ('TLX','EMAIL','WEB','SMS') THEN
3288 NULL;
3289 ELSE
3290 RETURN;
3291 END CASE;
3292
3293 CASE
3294 WHEN l_bo_code = 'PARTY_SITE' THEN
3295 IF NOT(is_valid_ps(l_parent_id)) THEN
3296 RETURN;
3297 END IF;
3298 ELSE
3299 NULL;
3300 END CASE;
3301
3302 -- if record not existing, insert into hz_bus_obj_tracking
3303 BEGIN
3304 l_child_rec_exists_no := 0;
3305 SELECT child_id INTO l_child_rec_exists_no
3306 FROM HZ_BUS_OBJ_TRACKING
3307 WHERE event_id IS NULL
3308 AND CHILD_ENTITY_NAME = l_cen
3309 AND CHILD_ID = l_child_id
3310 AND rownum = 1;
3311
3312 IF l_child_rec_exists_no <> 0 THEN
3313 -- data already exists, no need to write
3314 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
3315 p_prefix=>l_debug_prefix,
3316 p_msg_level=>fnd_log.level_procedure);
3317 END IF;
3318 EXCEPTION
3319 WHEN NO_DATA_FOUND THEN
3320 -- populate the child bo code also
3321 INSERT INTO HZ_BUS_OBJ_TRACKING
3322 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
3323 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
3324 ) VALUES (
3325 'N', p_operation, l_child_id, 'HZ_CONTACT_POINTS', l_child_bo_code,
3326 l_lud, l_lud, l_parent_tbl_name, l_parent_id, l_bo_code);
3327 END ; -- anonymous block end
3328 END LOOP;
3329
3330 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_contact_points-',
3331 p_prefix=>l_debug_prefix,
3332 p_msg_level=>fnd_log.level_procedure);
3333 EXCEPTION
3334 WHEN OTHERS THEN
3335 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
3336 p_prefix=>l_debug_prefix,
3337 p_msg_level=>fnd_log.level_procedure);
3338 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3339 END pop_hz_contact_points;
3340
3341 -----------------------------------------------------------------
3342 -- Procedure name: pop_hz_code_assignments()
3343 -- Purpose: populates BOT for HZ_CODE_ASSIGNMENTS create or update
3344 -- Scope: internal
3345 -- Called From: V2 API
3346 -- Called By: HZ_CODE_ASSIGNMENTS create or update APIs
3347 -- p_code_assignment_id IN NUMBER
3348 --
3349 -- Note:
3350 -- Following are the allowed PARENT and CHILD BO combinations for HZ_CODE_ASSIGNMENTS
3351 -- This procedure must ensure that the combination is valid before populating BOT
3352 --
3353 -- PARENT BO: ORG :: CHILD BO:
3354 -- PARENT BO: PERSON :: CHILD BO:
3355 -----------------------------------------------------------------
3356 PROCEDURE pop_hz_code_assignments(p_operation IN VARCHAR2, p_code_assignment_id IN NUMBER) IS
3357
3358 CURSOR C_child IS
3359 SELECT pp.LAST_UPDATE_DATE lud, pp.OWNER_TABLE_ID parent_id, pp.CODE_ASSIGNMENT_ID child_id,
3360 decode(p.party_type, 'ORGANIZATION', 'ORG', 'PERSON', 'PERSON', NULL) bo_code
3361 FROM HZ_CODE_ASSIGNMENTS pp, HZ_PARTIES p
3362 WHERE pp.code_assignment_id = p_code_assignment_id
3363 AND pp.OWNER_TABLE_ID = p.party_id
3364 AND pp.OWNER_TABLE_NAME = 'HZ_PARTIES'
3365 AND p.party_type in ('ORGANIZATION', 'PERSON');
3366
3367 -- local variables
3368 l_debug_prefix VARCHAR2(40) := 'pop_hz_code_assignments';
3369 l_parent_id NUMBER; -- used to store parent entity identifier
3370 l_child_id NUMBER; -- used to store HZ_CODE_ASSIGNMENTS identifier
3371 l_lud DATE; -- used to store the child last update date
3372 l_bo_code VARCHAR2(30);
3373 l_child_rec_exists_no NUMBER;
3374 l_cen VARCHAR2(30) := 'HZ_CODE_ASSIGNMENTS';
3375 BEGIN
3379
3376 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_code_assignments+',
3377 p_prefix=>l_debug_prefix,
3378 p_msg_level=>fnd_log.level_procedure);
3380 -- validate p_operation
3381 IF p_operation IN ('I','U') THEN
3382 NULL;
3383 ELSE
3384 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_code_assignments',
3385 p_prefix=>l_debug_prefix,
3386 p_msg_level=>fnd_log.level_procedure);
3387 RAISE FND_API.G_EXC_ERROR;
3388 END IF;
3389
3390 FOR c_child_rec IN c_child LOOP
3391 -- collect the child info into variables
3392 l_lud := c_child_rec.lud;
3393 l_child_id := c_child_rec.child_id;
3394 l_parent_id := c_child_rec.parent_id;
3395 l_bo_code := c_child_rec.bo_code;
3396
3397 -- if record not existing, insert into hz_bus_obj_tracking
3398 BEGIN
3399 l_child_rec_exists_no := 0;
3400 SELECT child_id INTO l_child_rec_exists_no
3401 FROM HZ_BUS_OBJ_TRACKING
3402 WHERE event_id IS NULL
3403 AND CHILD_ENTITY_NAME = l_cen
3404 AND CHILD_ID = l_child_id
3405 AND rownum = 1;
3406
3407 IF l_child_rec_exists_no <> 0 THEN
3408 -- data already exists, no need to write
3409 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
3410 p_prefix=>l_debug_prefix,
3411 p_msg_level=>fnd_log.level_procedure);
3412 END IF;
3413 EXCEPTION
3414 WHEN NO_DATA_FOUND THEN
3415 INSERT INTO HZ_BUS_OBJ_TRACKING
3416 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
3417 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
3418 ) VALUES (
3419 'N', p_operation, l_child_id, 'HZ_CODE_ASSIGNMENTS', NULL,
3420 l_lud, l_lud, 'HZ_PARTIES', l_parent_id, l_bo_code);
3421
3422 pop_parent_record(p_child_id => l_parent_id,
3423 p_lud => l_lud,
3424 p_centity_name => 'HZ_PARTIES',
3425 p_cbo_code => l_bo_code,
3426 p_parent_id => NULL,
3427 p_pentity_name => NULL,
3428 p_pbo_code => NULL);
3429 END ; -- anonymous block end
3430 END LOOP;
3431
3432 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_code_assignments-',
3433 p_prefix=>l_debug_prefix,
3434 p_msg_level=>fnd_log.level_procedure);
3435 EXCEPTION
3436 WHEN OTHERS THEN
3437 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
3438 p_prefix=>l_debug_prefix,
3439 p_msg_level=>fnd_log.level_procedure);
3440 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3441 END pop_hz_code_assignments;
3442
3443 -----------------------------------------------------------------
3444 -- Procedure name: pop_hz_citizenship()
3445 -- Purpose: populates BOT for HZ_CITIZENSHIP create or update
3446 -- Scope: internal
3447 -- Called From: V2 API
3448 -- Called By: HZ_CITIZENSHIP create or update APIs
3449 -- Input Parameters:
3450 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
3451 -- p_citizenship_id IN NUMBER
3452 --
3453 -- Note:
3454 -- Following are the allowed PARENT and CHILD BO combinations for HZ_CITIZENSHIP
3455 -- This procedure must ensure that the combination is valid before populating BOT
3456 --
3457 -- PARENT BO: PERSON :: CHILD BO:
3458 -----------------------------------------------------------------
3459 PROCEDURE pop_hz_citizenship(p_operation IN VARCHAR2, p_citizenship_id IN NUMBER) IS
3460
3461 -- cursor statement to select the info from child table
3462 CURSOR C_child IS
3463 SELECT c.LAST_UPDATE_DATE lud, c.PARTY_ID parent_id, c.CITIZENSHIP_ID child_id
3464 FROM HZ_CITIZENSHIP c, HZ_PARTIES p
3465 WHERE c.CITIZENSHIP_ID = P_CITIZENSHIP_ID
3466 AND c.party_id = p.party_id
3467 AND p.party_type = 'PERSON';
3468
3469 -- local variables
3470 l_debug_prefix VARCHAR2(40) := 'pop_hz_citizenship';
3471 l_parent_id NUMBER; -- used to store parent entity identifier
3472 l_child_id NUMBER; -- used to store HZ_CITIZENSHIP identifier
3473 l_lud DATE; -- used to store the child last update date
3474 l_child_rec_exists_no NUMBER;
3475 l_cen VARCHAR2(30) := 'HZ_CITIZENSHIP';
3476 BEGIN
3477 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_citizenship+',
3478 p_prefix=>l_debug_prefix,
3479 p_msg_level=>fnd_log.level_procedure);
3480
3481 -- validate p_operation
3482 IF p_operation IN ('I','U') THEN
3483 NULL;
3484 ELSE
3485 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_citizenship',
3486 p_prefix=>l_debug_prefix,
3487 p_msg_level=>fnd_log.level_procedure);
3488 RAISE FND_API.G_EXC_ERROR;
3489 END IF;
3490
3491 FOR c_child_rec IN c_child LOOP
3492 -- collect the child info into variables
3493 l_lud := c_child_rec.lud;
3494 l_child_id := c_child_rec.child_id;
3495 l_parent_id := c_child_rec.parent_id;
3496
3497 -- if record not existing, insert into hz_bus_obj_tracking
3498 BEGIN
3499 l_child_rec_exists_no := 0;
3500 SELECT child_id INTO l_child_rec_exists_no
3501 FROM HZ_BUS_OBJ_TRACKING
3502 WHERE event_id IS NULL
3503 AND CHILD_ENTITY_NAME = l_cen
3504 AND CHILD_ID = l_child_id
3505 AND rownum = 1;
3509 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
3506
3507 IF l_child_rec_exists_no <> 0 THEN
3508 -- data already exists, no need to write
3510 p_prefix=>l_debug_prefix,
3511 p_msg_level=>fnd_log.level_procedure);
3512 END IF;
3513 EXCEPTION
3514 WHEN NO_DATA_FOUND THEN
3515 INSERT INTO HZ_BUS_OBJ_TRACKING
3516 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
3517 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
3518 ) VALUES (
3519 'N', p_operation, l_child_id, 'HZ_CITIZENSHIP', NULL,
3520 l_lud, l_lud, 'HZ_PARTIES', l_parent_id, 'PERSON');
3521
3522 pop_parent_record(p_child_id => l_parent_id,
3523 p_lud => l_lud,
3524 p_centity_name => 'HZ_PARTIES',
3525 p_cbo_code => 'PERSON',
3526 p_parent_id => NULL,
3527 p_pentity_name => NULL,
3528 p_pbo_code => NULL);
3529 END ; -- anonymous block end
3530 END LOOP;
3531
3532 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_citizenship-',
3533 p_prefix=>l_debug_prefix,
3534 p_msg_level=>fnd_log.level_procedure);
3535 EXCEPTION
3536 WHEN OTHERS THEN
3537 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
3538 p_prefix=>l_debug_prefix,
3539 p_msg_level=>fnd_log.level_procedure);
3540 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3541 END pop_hz_citizenship;
3542
3543 -----------------------------------------------------------------
3544 -- Procedure name: pop_hz_certifications()
3545 -- Purpose: populates BOT for HZ_CERTIFICATIONS create or update
3546 -- Scope: internal
3547 -- Called From: V2 API
3548 -- Called By: HZ_CERTIFICATIONS create or update APIs
3549 -- Input Parameters:
3550 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
3551 -- p_certification_id IN NUMBER
3552 --
3553 -- Note:
3554 -- Following are the allowed PARENT and CHILD BO combinations for HZ_CERTIFICATIONS
3555 -- This procedure must ensure that the combination is valid before populating BOT
3556 --
3557 -- PARENT BO: ORG :: CHILD BO:
3558 -- PARENT BO: PERSON :: CHILD BO:
3559 -----------------------------------------------------------------
3560 PROCEDURE pop_hz_certifications(p_operation IN VARCHAR2, p_certification_id IN NUMBER) IS
3561
3562 -- cursor statement to select the info from child table
3563 CURSOR C_child IS
3564 SELECT c.LAST_UPDATE_DATE lud, c.PARTY_ID parent_id, c.CERTIFICATION_ID child_id,
3565 decode(p.party_type, 'ORGANIZATION', 'ORG', 'PERSON', 'PERSON', NULL) bo_code
3566 FROM HZ_CERTIFICATIONS c, HZ_PARTIES p
3567 WHERE c.CERTIFICATION_ID = P_CERTIFICATION_ID
3568 AND c.party_id = p.party_id
3569 AND p.party_type in ('ORGANIZATION', 'PERSON');
3570
3571 -- local variables
3572 l_debug_prefix VARCHAR2(40) := 'pop_hz_certifications';
3573 l_parent_id NUMBER; -- used to store parent entity identifier
3574 l_bo_code VARCHAR2(30); -- used to store BO Code
3575 l_child_id NUMBER; -- used to store HZ_CERTIFICATIONS identifier
3576 l_lud DATE; -- used to store the child last update date
3577 l_child_rec_exists_no NUMBER;
3578 l_cen VARCHAR2(30) := 'HZ_CERTIFICATIONS';
3579 BEGIN
3580 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_certifications+',
3581 p_prefix=>l_debug_prefix,
3582 p_msg_level=>fnd_log.level_procedure);
3583
3584 -- validate p_operation
3585 IF p_operation IN ('I','U') THEN
3586 NULL;
3587 ELSE
3588 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_certifications',
3589 p_prefix=>l_debug_prefix,
3590 p_msg_level=>fnd_log.level_procedure);
3591 RAISE FND_API.G_EXC_ERROR;
3592 END IF;
3593
3594 FOR c_child_rec IN c_child LOOP
3595 l_lud := c_child_rec.lud;
3596 l_child_id := c_child_rec.child_id;
3597 l_parent_id := c_child_rec.parent_id;
3598 l_bo_code := c_child_rec.bo_code;
3599
3600 -- if record not existing, insert into hz_bus_obj_tracking
3601 BEGIN
3602 l_child_rec_exists_no := 0;
3603 SELECT child_id INTO l_child_rec_exists_no
3604 FROM HZ_BUS_OBJ_TRACKING
3605 WHERE event_id IS NULL
3606 AND CHILD_ENTITY_NAME = l_cen
3607 AND CHILD_ID = l_child_id
3608 AND rownum = 1;
3609
3610 IF l_child_rec_exists_no <> 0 THEN
3611 -- data already exists, no need to write
3612 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
3613 p_prefix=>l_debug_prefix,
3614 p_msg_level=>fnd_log.level_procedure);
3615 END IF;
3616 EXCEPTION
3617 WHEN NO_DATA_FOUND THEN
3618 INSERT INTO HZ_BUS_OBJ_TRACKING
3619 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
3620 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
3621 ) VALUES (
3622 'N', p_operation, l_child_id, 'HZ_CERTIFICATIONS', NULL,
3623 l_lud, l_lud, 'HZ_PARTIES', l_parent_id, l_bo_code);
3624
3625 pop_parent_record(p_child_id => l_parent_id,
3626 p_lud => l_lud,
3627 p_centity_name => 'HZ_PARTIES',
3628 p_cbo_code => l_bo_code,
3632 END ; -- anonymous block end
3629 p_parent_id => NULL,
3630 p_pentity_name => NULL,
3631 p_pbo_code => NULL);
3633 END LOOP;
3634
3635 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_certifications-',
3636 p_prefix=>l_debug_prefix,
3637 p_msg_level=>fnd_log.level_procedure);
3638 EXCEPTION
3639 WHEN OTHERS THEN
3640 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
3641 p_prefix=>l_debug_prefix,
3642 p_msg_level=>fnd_log.level_procedure);
3643 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3644 END pop_hz_certifications;
3645 -----------------------------------------------------------------
3646 -- Procedure name: pop_HZ_PARTY_USG_ASSIGNMENTS()
3647 -- Purpose: populates BOT for HZ_PARTY_USG_ASSIGNMENTS create or update
3648 -- Scope: internal
3649 -- Called From: V2 API
3650 -- Called By: HZ_PARTY_USG_ASSIGNMENTS create or update APIs
3651 -- Input Parameters:
3652 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
3653 -- p_PARTY_USG_ASSIGNMENT_id IN NUMBER
3654 --
3655 -- Note:
3656 -- Following are the allowed PARENT and CHILD BO combinations for HZ_CERTIFICATIONS
3657 -- This procedure must ensure that the combination is valid before populating BOT
3658 --
3659 -- PARENT BO: ORG :: CHILD BO:
3660 -- PARENT BO: PERSON :: CHILD BO:
3661 -----------------------------------------------------------------
3662 PROCEDURE pop_HZ_PARTY_USG_ASSIGNMENTS (
3663 p_operation IN VARCHAR2,
3664 p_PARTY_USG_ASSIGNMENT_ID IN NUMBER) IS
3665
3666 -- cursor statement to select the info from child table
3667 CURSOR C_child IS
3668 SELECT c.LAST_UPDATE_DATE lud, c.PARTY_ID parent_id, c.PARTY_USG_ASSIGNMENT_ID child_id,
3669 decode(p.party_type, 'ORGANIZATION', 'ORG', 'PERSON', 'PERSON', NULL) bo_code
3670 FROM HZ_PARTY_USG_ASSIGNMENTS c, HZ_PARTIES p
3671 WHERE c.PARTY_USG_ASSIGNMENT_ID = P_PARTY_USG_ASSIGNMENT_ID
3672 AND c.party_id = p.party_id
3673 AND p.party_type in ('ORGANIZATION', 'PERSON');
3674
3675 -- local variables
3676 l_debug_prefix VARCHAR2(40) := 'pop_HZ_PARTY_USG_ASSIGNMENTS';
3677 l_parent_id NUMBER; -- used to store parent entity identifier
3678 l_bo_code VARCHAR2(30); -- used to store BO Code
3679 l_child_id NUMBER; -- used to store HZ_PARTY_USG_ASSIGNMENTS identifier
3680 l_lud DATE; -- used to store the child last update date
3681 l_child_rec_exists_no NUMBER;
3682 l_cen VARCHAR2(30) := 'HZ_PARTY_USG_ASSIGNMENTS';
3683 BEGIN
3684 hz_utility_v2pub.DEBUG(p_message=>'pop_HZ_PARTY_USG_ASSIGNMENTS+',
3685 p_prefix=>l_debug_prefix,
3686 p_msg_level=>fnd_log.level_procedure);
3687
3688 -- validate p_operation
3689 IF p_operation IN ('I','U') THEN
3690 NULL;
3691 ELSE
3692 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_HZ_PARTY_USG_ASSIGNMENTS',
3693 p_prefix=>l_debug_prefix,
3694 p_msg_level=>fnd_log.level_procedure);
3695 RAISE FND_API.G_EXC_ERROR;
3696 END IF;
3697
3698 FOR c_child_rec IN c_child LOOP
3699 l_lud := c_child_rec.lud;
3700 l_child_id := c_child_rec.child_id;
3701 l_parent_id := c_child_rec.parent_id;
3702 l_bo_code := c_child_rec.bo_code;
3703
3704 -- if record not existing, insert into hz_bus_obj_tracking
3705 BEGIN
3706 l_child_rec_exists_no := 0;
3707 SELECT child_id INTO l_child_rec_exists_no
3708 FROM HZ_BUS_OBJ_TRACKING
3709 WHERE event_id IS NULL
3710 AND CHILD_ENTITY_NAME = l_cen
3711 AND CHILD_ID = l_child_id
3712 AND rownum = 1;
3713
3714 IF l_child_rec_exists_no <> 0 THEN
3715 -- data already exists, no need to write
3716 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
3717 p_prefix=>l_debug_prefix,
3718 p_msg_level=>fnd_log.level_procedure);
3719 END IF;
3720 EXCEPTION
3721 WHEN NO_DATA_FOUND THEN
3722 INSERT INTO HZ_BUS_OBJ_TRACKING
3723 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
3724 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
3725 ) VALUES (
3726 'N', p_operation, l_child_id, 'HZ_PARTY_USG_ASSIGNMENTS', NULL,
3727 l_lud, l_lud, 'HZ_PARTIES', l_parent_id, l_bo_code);
3728
3729 pop_parent_record(p_child_id => l_parent_id,
3730 p_lud => l_lud,
3731 p_centity_name => 'HZ_PARTIES',
3732 p_cbo_code => l_bo_code,
3733 p_parent_id => NULL,
3734 p_pentity_name => NULL,
3735 p_pbo_code => NULL);
3736 END ; -- anonymous block end
3737 END LOOP;
3738
3739 hz_utility_v2pub.DEBUG(p_message=>'pop_HZ_PARTY_USG_ASSIGNMENTS-',
3740 p_prefix=>l_debug_prefix,
3741 p_msg_level=>fnd_log.level_procedure);
3742 EXCEPTION
3743 WHEN OTHERS THEN
3744 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
3745 p_prefix=>l_debug_prefix,
3746 p_msg_level=>fnd_log.level_procedure);
3747 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3748 END pop_HZ_PARTY_USG_ASSIGNMENTS;
3749
3750 -----------------------------------------------------------------
3751 -- Procedure name: pop_hz_extensibility()
3755 -- Called By: HZ_EXTENSIBILITY_PUB create or update APIs
3752 -- Purpose: populates BOT for extensibility create or update
3753 -- Scope: internal
3754 -- Called From: V2 API
3756 -- Input Parameters:
3757 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
3758 -- p_certification_id IN NUMBER
3759 --
3760 -- Note:
3761 -- Following are the allowed PARENT and CHILD BO combinations for extensibility attributes
3762 -- This procedure must ensure that the combination is valid before populating BOT
3763 --
3764 -- PARENT BO: ORG :: CHILD BO:
3765 -- PARENT BO: PERSON :: CHILD BO:
3766 -- PARENT BO: LOCATION :: CHILD BO:
3767 -- PARENT BO: PARTY_SITE :: CHILD BO:
3768 -----------------------------------------------------------------
3769 PROCEDURE pop_hz_extensibility(p_operation IN VARCHAR2, p_object_type IN VARCHAR2, p_extension_id IN NUMBER) IS
3770
3771 -- cursor statement to select the info from child table
3772 CURSOR C_child_org IS
3773 SELECT c.LAST_UPDATE_DATE lud, p.PARTY_ID parent_id, c.extension_id child_id, 'ORG' bo_code, 'HZ_PARTIES' parent_entity
3774 FROM HZ_ORG_PROFILES_EXT_B c, HZ_ORGANIZATION_PROFILES p
3775 WHERE c.EXTENSION_ID = P_EXTENSION_ID
3776 AND c.ORGANIZATION_PROFILE_ID = p.ORGANIZATION_PROFILE_ID
3777 AND rownum = 1;
3778
3779 CURSOR C_child_per IS
3780 SELECT c.LAST_UPDATE_DATE lud, p.PARTY_ID parent_id, c.extension_id child_id, 'PERSON' bo_code, 'HZ_PARTIES' parent_entity
3781 FROM HZ_PER_PROFILES_EXT_B c, HZ_PERSON_PROFILES p
3782 WHERE c.EXTENSION_ID = P_EXTENSION_ID
3783 AND c.PERSON_PROFILE_ID = p.PERSON_PROFILE_ID
3784 AND rownum = 1;
3785
3786 CURSOR C_child_loc IS
3787 SELECT c.LAST_UPDATE_DATE lud, c.LOCATION_ID parent_id, c.extension_id child_id, 'LOCATION' bo_code, 'HZ_LOCATIONS' parent_entity
3788 FROM HZ_LOCATIONS_EXT_B c
3789 WHERE c.EXTENSION_ID = P_EXTENSION_ID
3790 AND rownum = 1;
3791
3792 CURSOR C_child_ps IS
3793 SELECT c.LAST_UPDATE_DATE lud, c.PARTY_SITE_ID parent_id, c.extension_id child_id, 'PARTY_SITE' bo_code, 'HZ_PARTY_SITES' parent_entity
3794 FROM HZ_PARTY_SITES_EXT_B c
3795 WHERE c.EXTENSION_ID = P_EXTENSION_ID
3796 AND rownum = 1;
3797
3798 -- local variables
3799 l_debug_prefix VARCHAR2(40) := 'pop_hz_extensibility';
3800 l_parent_id NUMBER; -- used to store parent entity identifier
3801 l_bo_code VARCHAR2(30); -- used to store BO Code
3802 l_child_entity VARCHAR2(30);
3803 l_parent_entity VARCHAR2(30);
3804 l_child_id NUMBER; -- used to store extensibility attributes identifier
3805 l_lud DATE; -- used to store the child last update date
3806 l_child_rec_exists_no NUMBER;
3807 BEGIN
3808 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_extensibility+',
3809 p_prefix=>l_debug_prefix,
3810 p_msg_level=>fnd_log.level_procedure);
3811
3812 -- validate p_operation
3813 IF p_operation IN ('I','U') THEN
3814 NULL;
3815 ELSE
3816 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_hz_extensibility',
3817 p_prefix=>l_debug_prefix,
3818 p_msg_level=>fnd_log.level_procedure);
3819 RAISE FND_API.G_EXC_ERROR;
3820 END IF;
3821
3822 IF(p_object_type = 'ORG') THEN
3823 OPEN c_child_org;
3824 l_child_entity := 'HZ_ORG_PROFILES_EXT_VL';
3825 ELSIF(p_object_type = 'PERSON') THEN
3826 OPEN c_child_per;
3827 l_child_entity := 'HZ_PER_PROFILES_EXT_VL';
3828 ELSIF(p_object_type = 'LOCATION') THEN
3829 OPEN c_child_loc;
3830 l_child_entity := 'HZ_LOCATIONS_EXT_VL';
3831 ELSIF(p_object_type = 'PARTY_SITE') THEN
3832 OPEN c_child_ps;
3833 l_child_entity := 'HZ_PARTY_SITES_EXT_VL';
3834 END IF;
3835
3836 IF(p_object_type = 'ORG') THEN
3837 FETCH c_child_org INTO l_lud, l_parent_id, l_child_id, l_bo_code, l_parent_entity;
3838 ELSIF(p_object_type = 'PERSON') THEN
3839 FETCH c_child_per INTO l_lud, l_parent_id, l_child_id, l_bo_code, l_parent_entity;
3840 ELSIF(p_object_type = 'LOCATION') THEN
3841 FETCH c_child_loc INTO l_lud, l_parent_id, l_child_id, l_bo_code, l_parent_entity;
3842 ELSIF(p_object_type = 'PARTY_SITE') THEN
3843 FETCH c_child_ps INTO l_lud, l_parent_id, l_child_id, l_bo_code, l_parent_entity;
3844 END IF;
3845
3846 -- if record not existing, insert into hz_bus_obj_tracking
3847 BEGIN
3848 l_child_rec_exists_no := 0;
3849 SELECT child_id INTO l_child_rec_exists_no
3850 FROM HZ_BUS_OBJ_TRACKING
3851 WHERE event_id IS NULL
3852 AND CHILD_ENTITY_NAME = l_child_entity
3853 AND CHILD_ID = l_child_id
3854 AND rownum = 1;
3855
3856 IF l_child_rec_exists_no <> 0 THEN
3857 -- data already exists, no need to write
3858 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
3859 p_prefix=>l_debug_prefix,
3860 p_msg_level=>fnd_log.level_procedure);
3861 END IF;
3862 EXCEPTION
3863 WHEN NO_DATA_FOUND THEN
3864 INSERT INTO HZ_BUS_OBJ_TRACKING
3865 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
3866 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
3867 ) VALUES (
3868 'N', p_operation, l_child_id, l_child_entity, NULL,
3869 l_lud, l_lud, l_parent_entity, l_parent_id, l_bo_code);
3870 END ; -- anonymous block end
3871
3872 IF(p_object_type = 'ORG') THEN
3873 CLOSE c_child_org;
3874 ELSIF(p_object_type = 'PERSON') THEN
3875 CLOSE c_child_per;
3876 ELSIF(p_object_type = 'LOCATION') THEN
3877 CLOSE c_child_loc;
3881
3878 ELSIF(p_object_type = 'PARTY_SITE') THEN
3879 CLOSE c_child_ps;
3880 END IF;
3882 hz_utility_v2pub.DEBUG(p_message=>'pop_hz_extensibility-',
3883 p_prefix=>l_debug_prefix,
3884 p_msg_level=>fnd_log.level_procedure);
3885 EXCEPTION
3886 WHEN OTHERS THEN
3887 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
3888 p_prefix=>l_debug_prefix,
3889 p_msg_level=>fnd_log.level_procedure);
3890 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3891 END pop_hz_extensibility;
3892
3893 -----------------------------------------------------------------
3894 -- Procedure name: pop_ra_cust_receipt_methods()
3895 -- Purpose: populates BOT for RA_CUST_RECEIPT_METHODS create or update
3896 -- Scope: internal
3897 -- Called From: V2 API
3898 -- Called By: HZ_PAYMENT_METHOD_PUB create or update APIs
3899 -- Input Parameters:
3900 -- p_operation -- contains I or U. 'I' if create API is calling this otherwise 'U'.
3901 -- p_cust_receipt_method_id IN NUMBER
3902 --
3903 -- Note:
3904 -- Following are the allowed PARENT and CHILD BO combinations for RA_CUST_RECEIPT_METHODS
3905 -- This procedure must ensure that the combination is valid before populating BOT
3906 --
3907 -- PARENT BO: CUST_ACCT_SITE_USE :: CHILD BO:
3908 -- PARENT BO: CUST_ACCT :: CHILD BO:
3909 -----------------------------------------------------------------
3910 PROCEDURE pop_ra_cust_receipt_methods(p_operation IN VARCHAR2, p_cust_receipt_method_id IN NUMBER) IS
3911
3912 -- cursor statement to select the info from child table
3913 CURSOR C_child IS
3914 SELECT rcrm.last_update_date lud, rcrm.cust_receipt_method_id child_id,
3915 nvl(rcrm.site_use_id, rcrm.customer_id) parent_id,
3916 decode(rcrm.site_use_id, NULL, 'HZ_CUST_ACCOUNTS', 'HZ_CUST_SITE_USES_ALL') parent_tbl_name,
3917 decode(rcrm.site_use_id, NULL, 'CUST_ACCT', 'CUST_ACCT_SITE_USE') parent_bo_code,
3918 decode(rcrm.site_use_id, NULL, p.party_id, rcrm.customer_id) grand_parent_id,
3919 decode(rcrm.site_use_id, NULL, 'HZ_PARTIES', 'HZ_CUST_ACCOUNTS') grand_parent_tbl_name,
3920 decode(rcrm.site_use_id, NULL, decode(p.party_type, 'ORGANIZATION', 'ORG_CUST', 'PERSON', 'PERSON_CUST', NULL), 'CUST_ACCT') grand_parent_bo_code
3921 FROM RA_CUST_RECEIPT_METHODS rcrm, HZ_CUST_ACCOUNTS ca, HZ_PARTIES p
3922 WHERE rcrm.cust_receipt_method_id = p_cust_receipt_method_id
3923 AND rcrm.customer_id = ca.cust_account_id
3924 AND ca.party_id = p.party_id
3925 AND p.party_type in ('ORGANIZATION', 'PERSON')
3926 AND rcrm.customer_id > 0;
3927
3928 -- local variables
3929 l_debug_prefix VARCHAR2(40) := 'pop_ra_cust_receipt_methods';
3930 l_parent_id NUMBER; -- used to store parent entity identifier
3931 l_bo_code VARCHAR2(30); -- used to store BO Code
3932 l_child_id NUMBER; -- used to store HZ_CERTIFICATIONS identifier
3933 l_lud DATE; -- used to store the child last update date
3934 l_child_rec_exists_no NUMBER;
3935 l_parent_bo_code VARCHAR2(30);
3936 l_parent_tbl_name VARCHAR2(30);
3937 l_g_parent_id NUMBER;
3938 l_g_parent_tbl_name VARCHAR2(30);
3939 l_g_parent_bo_code VARCHAR2(30);
3940 l_cen VARCHAR2(30) := 'RA_CUST_RECEIPT_METHODS';
3941 BEGIN
3942 hz_utility_v2pub.DEBUG(p_message=>'pop_ra_cust_receipt_methods+',
3943 p_prefix=>l_debug_prefix,
3944 p_msg_level=>fnd_log.level_procedure);
3945
3946 -- validate p_operation
3947 IF p_operation IN ('I','U') THEN
3948 NULL;
3949 ELSE
3950 hz_utility_v2pub.DEBUG(p_message=> 'incorrect operation flag sent to pop_ra_cust_receipt_methods',
3951 p_prefix=>l_debug_prefix,
3952 p_msg_level=>fnd_log.level_procedure);
3953 RAISE FND_API.G_EXC_ERROR;
3954 END IF;
3955
3956 FOR c_child_rec IN c_child LOOP
3957 l_lud := c_child_rec.lud;
3958 l_child_id := c_child_rec.child_id;
3959 l_parent_id := c_child_rec.parent_id;
3960 l_parent_tbl_name := c_child_rec.parent_tbl_name;
3961 l_parent_bo_code := c_child_rec.parent_bo_code;
3962 l_g_parent_id := c_child_rec.grand_parent_id;
3963 l_g_parent_tbl_name := c_child_rec.grand_parent_tbl_name;
3964 l_g_parent_bo_code := c_child_rec.grand_parent_bo_code;
3965
3966 -- if record not existing, insert into hz_bus_obj_tracking
3967 BEGIN
3968 l_child_rec_exists_no := 0;
3969 SELECT child_id INTO l_child_rec_exists_no
3970 FROM HZ_BUS_OBJ_TRACKING
3971 WHERE event_id IS NULL
3972 AND CHILD_ENTITY_NAME = l_cen
3973 AND CHILD_ID = l_child_id
3974 AND rownum = 1;
3975
3976 IF l_child_rec_exists_no <> 0 THEN
3977 -- data already exists, no need to write
3978 hz_utility_v2pub.DEBUG(p_message=> 'CHILD record already exists in BOT',
3979 p_prefix=>l_debug_prefix,
3980 p_msg_level=>fnd_log.level_procedure);
3981 END IF;
3982 EXCEPTION
3983 WHEN NO_DATA_FOUND THEN
3984 INSERT INTO HZ_BUS_OBJ_TRACKING
3985 ( POPULATED_FLAG, CHILD_OPERATION_FLAG, CHILD_ID, CHILD_ENTITY_NAME, CHILD_BO_CODE,
3986 LAST_UPDATE_DATE, CREATION_DATE, PARENT_ENTITY_NAME, PARENT_ID, PARENT_BO_CODE
3987 ) VALUES (
3988 'N', p_operation, l_child_id, 'RA_CUST_RECEIPT_METHODS', NULL,
3989 l_lud, l_lud, l_parent_tbl_name, l_parent_id, l_parent_bo_code);
3990
3991 pop_parent_record(p_child_id => l_parent_id,
3992 p_lud => l_lud,
3993 p_centity_name => l_parent_tbl_name,
3994 p_cbo_code => l_parent_bo_code,
3995 p_parent_id => l_g_parent_id,
3996 p_pentity_name => l_g_parent_tbl_name,
3997 p_pbo_code => l_g_parent_bo_code);
3998 END ; -- anonymous block end
3999 END LOOP;
4000
4001 hz_utility_v2pub.DEBUG(p_message=>'pop_ra_cust_receipt_methods-',
4002 p_prefix=>l_debug_prefix,
4003 p_msg_level=>fnd_log.level_procedure);
4004 EXCEPTION
4005 WHEN OTHERS THEN
4006 hz_utility_v2pub.DEBUG(p_message=> SQLERRM,
4007 p_prefix=>l_debug_prefix,
4008 p_msg_level=>fnd_log.level_procedure);
4009 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4010 END pop_ra_cust_receipt_methods;
4011
4012 FUNCTION is_valid_ps(
4013 p_party_site_id IN NUMBER
4014 ) RETURN BOOLEAN IS
4015 CURSOR get_ps IS
4016 SELECT p.party_type, p.party_id
4017 FROM HZ_PARTY_SITES ps, HZ_PARTIES p
4018 WHERE ps.party_site_id = p_party_site_id
4019 AND ps.party_id = p.party_id
4020 AND p.party_type in ('ORGANIZATION', 'PERSON', 'PARTY_RELATIONSHIP');
4021
4022 CURSOR get_oc(l_party_id NUMBER) IS
4023 SELECT 1
4024 FROM HZ_PARTIES p, HZ_RELATIONSHIPS r
4025 WHERE p.party_id = l_party_id
4026 AND p.party_id = r.party_id
4027 AND r.subject_type = 'PERSON'
4028 AND r.object_type = 'ORGANIZATION'
4029 AND rownum = 1;
4030
4031 l_party_type VARCHAR2(30);
4032 l_party_id NUMBER;
4033 l_dummy NUMBER;
4034 BEGIN
4035 OPEN get_ps;
4036 FETCH get_ps INTO l_party_type, l_party_id;
4037 CLOSE get_ps;
4038 IF(l_party_type IS NULL) THEN
4039 RETURN FALSE;
4040 ELSIF(l_party_type = 'PARTY_RELATIONSHIP') THEN
4041 OPEN get_oc(l_party_id);
4042 FETCH get_oc INTO l_dummy;
4043 CLOSE get_oc;
4044 IF(l_dummy IS NULL) THEN
4045 RETURN FALSE;
4046 END IF;
4047 END IF;
4048 RETURN TRUE;
4049 END;
4050
4051 END HZ_POPULATE_BOT_PKG;